diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /systems/enctex |
Initial commit
Diffstat (limited to 'systems/enctex')
-rw-r--r-- | systems/enctex/COPYING | 340 | ||||
-rw-r--r-- | systems/enctex/INSTALL | 131 | ||||
-rw-r--r-- | systems/enctex/INSTALL.eng | 121 | ||||
-rw-r--r-- | systems/enctex/README | 101 | ||||
-rw-r--r-- | systems/enctex/changes.txt | 44 | ||||
-rw-r--r-- | systems/enctex/encdoc-e.pdf | bin | 0 -> 111466 bytes | |||
-rw-r--r-- | systems/enctex/encdoc.pdf | bin | 0 -> 134143 bytes | |||
-rw-r--r-- | systems/enctex/eurotex2003-enctex.pdf | bin | 0 -> 62086 bytes | |||
-rw-r--r-- | systems/enctex/eurotex2003-enctex.ps | 1982 | ||||
-rw-r--r-- | systems/enctex/eurotex2003-enctex.tex | 431 |
10 files changed, 3150 insertions, 0 deletions
diff --git a/systems/enctex/COPYING b/systems/enctex/COPYING new file mode 100644 index 0000000000..60549be514 --- /dev/null +++ b/systems/enctex/COPYING @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) 19yy <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19yy name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/systems/enctex/INSTALL b/systems/enctex/INSTALL new file mode 100644 index 0000000000..aa3d949725 --- /dev/null +++ b/systems/enctex/INSTALL @@ -0,0 +1,131 @@ + + EncTeX -- rozšíření TeXu o možnost překódování -- popis instalace + ================================================================= + 1. 9. 1997 Petr Olšák + 3. 1. 2003 + +Nejprve popíšu postup při instalaci encTeXu na web2c verze 7.3, kde již +původně byl originální program TeX kompilován, nebo byl aspoň spuštěn +configure (podle pokynů pro instalaci web2c TeXu) a jsou připraveny +knihovny TeXu (*.tfm, *.tex apod.) v /usr/local/share/texmf. + +V balíku jsou dodáván patch pro verzi web2c 7.3.7 + +1. přejdeme do adresáře, kde je tex.ch a tex.web: + + $ cd source/TeX/texk/web2c + +2. Rozbalíme enctex.tar.gz: + + $ zcat /zdroj/enctex.tar.gz | tar xvf - + +3. Aplikujeme změnu souboru tex.ch: + + $ patch -p0 <./enctex/enctex.patch-to-7.3.7 + + nebo + + $ patch -p0 <./enctex/enctex.patch-to-7.5 + + v závislosti na verzi web2c, kterou máme. + Soubor enctex.patch-to-7.5 je možné použít i na web2c 7.4.5, + což byla aktuální stabilní verze teTeXu. + + Pokud máte verzi web2c 7.5, pak můžete navíc + po aplikaci tohoto patche použít ještě patch + enc-option.patch-to-7.5, který přidává přepínač -enc do + příkazového řádku (bez něho není encTeX inicializován) a + řeší spolupráci s TCX tabulkami. Tato dvojice patchů byla zaslána + Olafu Weberovi k zařazení do standardní distribuce web2c. + + Doporučuji přejít z verze encTeXu Feb. 2003 na verzi Jun. 2004, + která opravuje některé chyby: + + $ patch -p0 <./enctex/enctex.patch-jun2004 + + Pokud tento krok ohlásí chybu pro Hunk #1, je potřeba v souboru + tex.ch nahradit řetězec "Feb. 2003" textem "Jun. 2004" manuálně. + Ostatní části záplaty (hunks) by měly projít bez problémů. + +4. Překompilujeme TeX: + + $ make tex + +Tento povel v sobě zahrnuje jednak +tangle tex.web tex.ch +což vytvoří Pascalský kód TeXu tex.p. Dále se provede +./web2c/convert tex.p +takže vznikají jednotlivé moduly tex?.c v jazyce C. Potom se tyto moduly +kompilují kompilátorem jazyka C a nakonec linkují do spustitelného programu +tex. Výsledkem je tedy nový program tex a dále nový inicializační soubor +tex.pool. + +5. Instalujeme binární program tex a soubor tex.pool do systému +(cesty se ve Vašem systému mohou mírně lišit): + + $ strip tex + $ su + # cp tex /usr/local/bin + # cp tex.pool /usr/local/share/texmf/web2c + +6. Instalujeme vstupní tabulky *.tex z balíku encTeX. Doporučuji je zařadit +do adresáře enctex: + + # mkdir /usr/local/share/texmf/tex/generic/enctex + # cp enctex/*.tex /usr/local/share/texmf/tex/generic/enctex + # texhash + +7. Inicializujeme znovu formáty. Pro verzi encTeXu z oficiální +web2c-7.5.3 je nutné použít při generování formátů (nikoli při použití +formátu) přepínač -enc. Význam tohoto přepínače je vysvětlen +v dokumentaci encdoc.tex|dvi|pdf. +Příklady proto uvádím s tímto přepínačem. + + # cd /usr/local/share/texmf/web2c + # tex -ini -enc plain + *\dump + # tex -ini -enc csplain.ini + # tex -ini -enc -jobname cslatex cslatex.ini + +Pokud chcete hned využít nových vlastností TeXu, zkuste instalovat +některý z formátů plain-x-y, například: + + # tex -ini -enc plain-1250-cs + +Viz soubory enctex/plain-*-*.tex a enctex/kam-latex.tex. + +8. Pozměněný tex.ch čte tangle i při kompilaci programů pdftex a +etex. Tyto programy budou tedy po kompilaci také obsahovat encTeX. +Při požití enctex.patch-to-7.3 se kromě tex.ch pozměnil v drobné +maličkosti i soubor pdftexdir/tex.pch, což je nutné pro zdárnou +kompilaci. Stačí tedy vytvořit pdftex obvyklým způsobem: + + $ make pdftex + $ strip pdftex + $ su + # cp pdftex /usr/local/bin + # cp pdftex.pool /usr/local/share/texmf/web2c + # cd /usr/local/share/texmf/web2c + # pdftex -ini -enc -jobname pdfplain plain + *\dump + # pdftex -ini -enc -jobname pdfcsplain csplain.ini + # pdftex -ini -enc -jobname pdfcslatex cslatex.ini + +9. Program Omega není encTeXem pozměněn, protože při své kompilaci +nenačítá tex.ch. Taky by to nemělo žádnou logiku, protože omega má +svůj vlastní konfigurovatelný input procesor. + +-------------- + +Protože encTeX pozměňuje pouze velmi málo věcí ve změnovém souboru +tex.ch, je možné jej při troše ruční práce instalovat i na jiných +implementacích TeXu, kde jsou k dispozici zdrojové texty TeXu tex.web +a tex.ch. Stačí se podívat do souboru enctex.ch, kde je patrné, jaké +změny se mají provést. Veškerý kód encTeXu se opírá o standardní +části programu tex.web s výjimkou ukládání vektorů xord a xchr do +formátu. Zde jsem s výhodou použil již hotové pomocné funkce +dump_things a undump_things napsané pro web2c přímo v jazyce C. Pokud +by to někdo potřeboval v jiné implementaci, musel by zřejmě použít +analogii k dump_four_ASCII z tex.web. + + diff --git a/systems/enctex/INSTALL.eng b/systems/enctex/INSTALL.eng new file mode 100644 index 0000000000..5bf9db32da --- /dev/null +++ b/systems/enctex/INSTALL.eng @@ -0,0 +1,121 @@ + + EncTeX -- the extension of TeX based on tex.ch --- INSTALLATION + =============================================================== + 1. Sep. 1997 Petr Ol\v s\'ak + 3. Jan. 2003 + +For more information about encTeX -- read the README file. + +You can install the encTeX extension with no problems on web2c +ver 7.3. + +We describe the installation, if the original TeX was complied already or +if (at least) the ./configure script was run on web2c source tree and +the TeX libraries are installed in /usr/local/share/texmf. + +1. Go to a directory with the tex.ch and tex.web files: + + $ cd source/TeX/texk/web2c + +2. Unpack enctex.tar.gz: + + $ zcat /somewhere/enctex.tar.gz | tar xvf - + + The ./enctex directory is created with files of the package. + +3. Apply the patch to tex.ch file: + + $ patch -p0 < ./enctex/enctex.patch-to-7.3.7 + + or + + $ patch -p0 < ./enctex/enctex.patch-to-7.5 + + If you are using the web2c 7.4.5 or web2c 7.5.x then apply the + enctex.patch-to-7.5. If you are using web2c 7.5.x then you + can apply the second patch enc-option.patch-to-7.5. This second patch + implements the -enc commandline option (the encTeX is not + initialized without this option) and solves the cooperation with + TCX tables. The enctex.patch-to-7.5 and enc-option.patch-to-7.5 + patches were sent to Olaf Weber in order to include the encTeX to + the standard web2c TeX distribution. + + The next patch from encTeX Feb. 2003 to Jun. 2004 is recommended: + + $ patch -p0 < ./enctex/enctex.patch-jun2004 + + If an error occurs in Hunk #1 then you have to replace text + "Feb. 2003" to new text "Jun. 2004" in file tex.ch manually. + + +4. Re-compile TeX: + + $ make tex + + The result is the new tex binary and tex.pool file. + +5. Install the tex binary and tex.pool into the system (your paths may +be different from this example): + + $ strip tex + $ su + # cp tex /usr/local/bin + # cp tex.pool /usr/local/share/texmf/web2c + +6. Install the input tables of encTeX + + # mkdir /usr/local/share/texmf/tex/generic/enctex + # cp enctex/*.tex /usr/local/share/texmf/tex/enctex + # texhash + +7. Re-install the formats. The official version web2c-7.5.3 requires +the -enc option when format is generated (not required when format is +used). See the encdoc-e.tex|dvi|pdf for more information about +this option. + + # cd /usr/local/share/texmf/web2c + # tex -ini -enc plain + *\dump + # tex -ini -enc csplain.ini + # mv csplain.ini.fmt csplain.fmt + # tex -ini -enc cslatex.ini + # mv cslatex.ini.fmt cslatex.fmt + +If you want to try the new feature of the encTeX, you can inicialize some of +format plain-*-*.tex (see the enctex directory). For example: + + # tex -i plain-1250-cs + +8. The patched tex.ch is read by compilation process for tex, etex and +pdftex. You can recompile all these programs and the encTeX extension +will infect them succesfully. The enctex.patch-to-7.3 includes a +little patch to pdftexdir/tex.pch file in order to succesfull +compilation of pdftex. So, it is sufficient to do: + + $ make pdftex + $ strip pdftex + $ su + # cp pdftex /usr/local/bin + # cp pdftex.pool /usr/local/share/texmf/web2c + # cd /usr/local/share/texmf/web2c + # pdftex -ini -enc -jobname pdfplain plain + *\dump + # pdftex -ini -enc -jobname pdfcsplain csplain.ini + # pdftex -ini -enc -jobname pdfcslatex cslatex.ini + +9. The omega program is never infected by encTeX because it does not +read the tex.ch file during compilation. Omega has its own input +preprocessor. + +-------------- + +The encTeX is installable on others than web2c implementation of TeX too. +All changes are made in tex.ch file. You can see to enctex.ch file (with +all changes of encTeX sumarized) and do the changes into your tex.ch +manually. There is only one problem here: I used the functions +dump_things/undump_things for dumping/undumping the xord, xchr and xprn +vectors to/from fmt file. These functions are the part of web2c libraries +only. If these functions are not available on your implementation, you must +rewrite the dumping using macros similar to dump_four_ASCII from +tex.web. + diff --git a/systems/enctex/README b/systems/enctex/README new file mode 100644 index 0000000000..1c8fde8b6a --- /dev/null +++ b/systems/enctex/README @@ -0,0 +1,101 @@ + + EncTeX - moznost prekodovani vstupu v TeXu + ============================================================ + Sep. 1997, Dec. 2002 -- Jun. 2004 Petr Olsak + +See end of this file for English version of this text. + +Tento balicek je volne programove vybaveni, viz COPYING a encdoc.tex. +Balicek se sklada z techto souboru: + +README ................ tento soubor +COPYING ............... licence GPL +INSTALL ............... navod na instalaci v ceskem jazyce +INSTALL.eng ........... navod na isntalaci v anglickem jazyce +enctex.patch-to-7.3.7 . zaplata zdojovych kodu pro web2c 7.3.7 (TeXlive7) +enctex.patch-to-7.5 ... zaplata zdojovych kodu pro web2c 7.4.5 a 7.5.x +enc-option.patch-to-7.5 zaplata pridavajici -enc option a resici + spolupraci s TCX tabulkami, jen pro 7.5.x +enctex.patch-jun2004 .. zaplata z encTeXu Feb. 2003 na encTeX Jun. 2004. +enctex.ch ............. navod na provedeni zaplaty manualne +encdoc.tex, .pdf ...... dokumentace v ceskem jazyce +encdoc-e.tex, .pdf .... dokumentace v anglickem jazuce +encmacro.tex .......... pomocne makro pro tabulky *.tex +*-csf.tex, *-t1.tex ... konverzni tabulky z kodovani systemu do + kodovani CSfontu resp. T1 kodovani +plain-*-*.tex ......... inicializacni soubory pro modifikace plainu +vlna.tex .............. ukazka pouziti encTeXu pro vyhledani + neslabickych predlozek +polyset.tex ........... makro umoznujici zadavat slozitejsi + vyhledavaci pravidla pro encTeX +ostatni *.tex ......... dalsi pomocna makra + +Balicek je k dispozici na + + ftp://math.feld.cvut.cz/pub/olsak/enctex/. + +EncTeX byl testovan s velikou peci. Pokud byste presto v nem +nasli nejakou chybu, prosim, poslete o tom zpravu na +olsak@math.feld.cvut.cz. + +Dekuji Davidu Necasovi (Yeti) za doplneni tabulek a dalsi podpory +pro UTF-8 kodovani. Jedna se o soubory: + +plain-utf8-*.tex .............. ini soubory pro generovani formatu +utf8-csf.tex, utf8-t1.tex ..... kodovaci tabulky pro UTF-8 +utf8cseq.tex, utf8math.tex .... soubory jsou potreba v kodovacich tabulkach +utf8raw.tex ................... generovany soubor, potrebny v utf8math.tex +unimap.py, unimap.diff ........ skript a diff pro generovani utf8raw.tex +math-example.tex .............. ukazka matematicke sazby v UTF-8 + +--------------------------------------------------------- + + EncTeX - The Extension of TeX For Input Re-encoding + ============================================================ + Sep. 1997, Dec. 2002 -- Feb. 2003 Petr Olsak + +This package is free software, see COPYING and encdoc-e.tex for more +details. The package includes the following files: + +README ................ this file +COPYING ............... GPL +INSTALL.eng ........... the installation instruction in English language +INSTALL ............... the installation instruction in Czech language +enctex.patch-to-7.3.7 . the patch to source files in web2c 7.3.7 (TeXlive7) +enctex.patch-to-7.5 ... the patch to source files in web2c 7.4.5 and 7.5.x +enc-option.patch-to-7.5 this patch adds -enc option and solves the + cooperation with TCX tables, only for web2c 7.5.x +enctex.patch-jun2004 .. the patch from encTeX Feb. 2003 to encTeX Jun. 2004. +enctex.ch ............. the instruction to do the patch manually +encdoc-e.tex, .pdf .... the English documentation +encdoc.tex, .pdf ...... the Czech documentation +encmacro.tex .......... the auxiliary macro for *.tex tables +*-csf.tex, *-t1.tex ... the conversion tables from * input encoding + to encoding of CSfonts or T1 encoding +vlna.tex .............. the example of another usage of encTeX: there + cannot be line break after non syllabus prepsositions +polyset.tex ........... macro for more powerfull declaration of + encTeX's search rules +plain-*-*.tex ......... the ini files for various plain modifications +others *.tex .......... other macros for encTeX + +The package is available on: + + ftp://math.feld.cvut.cz/pub/olsak/enctex/. + +The encTeX was carefuly tested. If you still find a bug in it, please, +send the bug report to the address olsak@math.feld.cvut.cz. + +Many thanks to David Necas (Yeti) who made the tables and other +support for UTF-8 encoding in the following files: + +plain-utf8-*.tex .............. the ini files for making formats +utf8-csf.tex, utf8-t1.tex ..... the UTF-8 tables +utf8cseq.tex, utf8math.tex .... files included from UTF-8 tables +utf8raw.tex ................... generated file included from utf8math.tex +unimap.py, unimap.diff ........ python program and diff for making utf8raw.tex +math-example.tex .............. the example of math typesetting in UTF-8 + +------------------------------------------------------------- + + diff --git a/systems/enctex/changes.txt b/systems/enctex/changes.txt new file mode 100644 index 0000000000..6e13085e26 --- /dev/null +++ b/systems/enctex/changes.txt @@ -0,0 +1,44 @@ +2003/01/19 Version Jan. 2003 released + +2003/01/22 the enctex.patch-to-7.4 improved to the dirty trick in + pdftex.ch code added in new versions of pdftex. +2003/01/23 the enctex.patch-to-7.4 keeps the pdftex.ch unchanged now +2003/01/24 \ifx\cmd\relax can be used in \write parameters + +2003/02/19 encTeX Feb. 2003 released: + - new primitives \mubytelog, \noconvert + - the <byte_sequences> ABC and ABCDE are not in conflict now + - the utf8unkn.tex file released + - documentation upgraded +2003/02/25 enc-option.patch-to-7.5: corrected the dump_int and unpump_int + of boolean value enc_option +2003/03/03 - little changes in encdoc + encdoc-e. + - The web page http://www.olsak.net/enctex.html introduced + - The version Feb. 2003 is kept. +2003/03/11 enc-option.patch-to-7.5: the link to www.olsak.net/enctex.html + added in --help text and man pages +2003/09/18 polyset.tex added to encTeX distribution +2004/05/06 little doc corrections: -i -> -ini, -fmt -> -jobname etc. + The version is still named Feb. 2003. +2004/06/28 corrections in unimap.diff, utf8raw.tex and unimap.py + The version is still named Feb. 2003. + +2004/06/30 encTeX Jun 2004 released. + Three bugs fixed -- see enctex.patch-jun2004. +2004/07/23 encdoc*.pdf re-generated by newer version of pdfTeX + +2010/01/21 plain-*-dc.tex removed (obsolete) + ecfonts.tex, dcfonts.tex removed (name conflict) + plain-utf8-ec.tex corrected (contents of ecfonts.tex included) + +2012/10/31 utf8unkn.tex modyfied (\errmessage BAD UTF-8 INPUT added). + Files mixcodes.tex, utf8lat1.tex, utf8lata.tex, utf8off.tex added. + +2012/11/25 utf8off.tex: \def\clearmubyte added. + +2014/05/08 utf8unkn.tex: \errorcontextlines=-1 added. + +2014/06/04 utf8lat1.tex: corrected !` and ?` + +2014/07/30 enctex.patch-jul2014 bug corrected (csnames of \xx^^ab type) + diff --git a/systems/enctex/encdoc-e.pdf b/systems/enctex/encdoc-e.pdf Binary files differnew file mode 100644 index 0000000000..e3864418cb --- /dev/null +++ b/systems/enctex/encdoc-e.pdf diff --git a/systems/enctex/encdoc.pdf b/systems/enctex/encdoc.pdf Binary files differnew file mode 100644 index 0000000000..3af49ad615 --- /dev/null +++ b/systems/enctex/encdoc.pdf diff --git a/systems/enctex/eurotex2003-enctex.pdf b/systems/enctex/eurotex2003-enctex.pdf Binary files differnew file mode 100644 index 0000000000..a500c33156 --- /dev/null +++ b/systems/enctex/eurotex2003-enctex.pdf diff --git a/systems/enctex/eurotex2003-enctex.ps b/systems/enctex/eurotex2003-enctex.ps new file mode 100644 index 0000000000..d0bca698f6 --- /dev/null +++ b/systems/enctex/eurotex2003-enctex.ps @@ -0,0 +1,1982 @@ +%!PS-Adobe-2.0 +%%Creator: dvips(k) 5.86e Copyright 2001 Radical Eye Software +%%Title: enctex.dvi +%%Pages: 5 +%%PageOrder: Ascend +%%BoundingBox: 0 0 596 842 +%%DocumentFonts: CharterBT-Bold CharterBT-Roman cstt10 CharterBT-Italic +%%+ Symbol +%%DocumentPaperSizes: a4 +%%EndComments +%DVIPSWebPage: (www.radicaleye.com) +%DVIPSCommandLine: dvips -Ppdf enctex +%DVIPSParameters: dpi=600, compressed +%DVIPSSource: TeX output 2003.09.19:1005 +%%BeginProcSet: tex.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/CharBuilder{save 3 1 roll S A/base get 2 index get S +/BitMaps get S get/Cd X pop/ctr 0 N Cdx 0 Cx Cy Ch sub Cx Cw add Cy +setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx sub Cy .1 sub]{Ci}imagemask +restore}B/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: alt-rule.pro +%! +% Patch by TVZ +% Makes dvips files draw rules with stroke rather than fill. +% Makes narrow rules more predictable at low resolutions +% after distilling to PDF. +% May have unknown consequences for very thick rules. +% Tested only with dvips 5.85(k). +TeXDict begin +/QV { + gsave newpath /ruleY X /ruleX X + Rx Ry gt + { ruleX ruleY Ry 2 div sub moveto Rx 0 rlineto Ry } + { ruleX Rx 2 div add ruleY moveto 0 Ry neg rlineto Rx } + ifelse + setlinewidth 0 setlinecap stroke grestore +} bind def +end + +%%EndProcSet +%%BeginProcSet: texc.pro +%! +/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S +N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72 +mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0 +0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{ +landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize +mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[ +matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round +exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{ +statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0] +N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin +/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array +/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2 +array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N +df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A +definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get +}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub} +B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr +1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3 +1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx +0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx +sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{ +rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp +gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B +/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{ +/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{ +A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy +get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse} +ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp +fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17 +{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add +chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{ +1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop} +forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn +/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put +}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{ +bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A +mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{ +SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{ +userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X +1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4 +index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N +/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{ +/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT) +(LaserWriter 16/600)]{A length product length le{A length product exch 0 +exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse +end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask +grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot} +imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round +exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto +fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p +delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M} +B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{ +p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S +rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end + +%%EndProcSet +%%BeginProcSet: texps.pro +%! +TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2 +index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll +exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]/Metrics +exch def dict begin Encoding{exch dup type/integertype ne{pop pop 1 sub +dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get div def} +ifelse}forall Metrics/Metrics currentdict end def[2 index currentdict +end definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{ +dup sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 +roll mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def +dup[exch{dup CharStrings exch known not{pop/.notdef/Encoding true def} +if}forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def} +def end + +%%EndProcSet +%%BeginFont: CharterBT-Roman +%!PS-AdobeFont-1.0 +%%CreationDate: Fri Nov 2 19:00:13 1990 +% Bitstream Type 1 Font Program +% Copyright 1990 as an unpublished work by Bitstream Inc., Cambridge, MA. +% All rights reserved. +% Confidential and proprietary to Bitstream Inc. +% U.S. GOVERNMENT RESTRICTED RIGHTS +% This software typeface product is provided with RESTRICTED RIGHTS. Use, +% duplication or disclosure by the Government is subject to restrictions +% as set forth in the license agreement and in FAR 52.227-19 (c) (2) (May, 1987), +% when applicable, or the applicable provisions of the DOD FAR supplement +% 252.227-7013 subdivision (a) (15) (April, 1988) or subdivision (a) (17) +% (April, 1988). Contractor/manufacturer is Bitstream Inc., +% 215 First Street, Cambridge, MA 02142. +% Bitstream is a registered trademark of Bitstream Inc. +11 dict begin +/FontInfo 9 dict dup begin + /version (2.0-1.0) readonly def + /Notice (Copyright 1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential.) readonly def + /FullName (Bitstream Charter) readonly def + /FamilyName (Bitstream Charter) readonly def + /Weight (Normal) readonly def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -109 def + /UnderlineThickness 61 def +end readonly def +/FontName /CharterBT-Roman def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox {-161 -236 1193 963} readonly def +/UniqueXX 15530648 def +currentdict end +currentfile eexec +a2951840838a4133839ca9d22e2b99f2b61c767cd675080aacfcb24e19cd1336 +739bb64994c56737090b4cec92c9945ff0745ef7ffc61bb0a9a3b849e7e98740 +e56c0b5af787559cc6956ab31e33cf8553d55c0b0e818ef5ec6bf48162eac42e +7380ca921dae1c82b38fd6bcf2001abb5d001a56157094cfe27d8f4eac9693e8 +8372d20358b47e0c3876558ebf757a1fbc5c1cddf62b3c57bf727ef1c4879422 +c142a084d1c7462ac293e097fabe3a3ecfcd8271f259833bac7912707218ec9a +3063bf7385e02d8c1058ac06df00b33b8c018768b278010eb14c8bfbcb7035c1 +90601a69ddef967a33eaa39ceb69d1a603338be6f9a4889994f4d5581982e559 +4374ebb756052d67ccf46e1aaee4d1a99e5696438fe4c380a04dd1631c89c4db +958a57d71d28fc4e52bea73e758ee3b9442fce8c9f0a79509b7fbca25e024574 +2ae35211424202a692b7bbb868ae741fd9f623f96fde9eebaa232e8141073c3f +9d382ae68c29aff248aa7a77f869b8f75e24723e08f647cc67a215c2be40b89e +042696048776bd7370c5da95cbc513c47e0c8c0f1b0612fda235400100b1e13c +49e6f0d0ff0660c2d3ac07ec9d65e134490d448bba19aa0f01326f3ff66f0c2d +067bbcc60213dbeb072a702793476793eb765c674ea10cb03c2d1d0104e4053e +ee0f592768760c8e407edabf87ae2c35c93ef782393f1e34074b81ebda32ee58 +7b50c013144ac352fafb68edde6e39926ad62751fec4285ffc193cc53980453e +10d79853d67ed9708396da3da28cd16178f83c859d8f1f7697ea35680faa6f42 +c8f590baf33b3dbf4ccdf713bd81b15d0f01ad3a0a7dfd671b8ffdaecfcfe7c0 +7a7054b8eea686ad8b0b0542bfcef463674832c14254cd1a89659446dff41748 +7d4a32fdfb072c60d40f6a3080726163515aba7e602ce2368250fb50821dc3d7 +40e794c5458d1230e86b24d61461e842663bb6bde654fd654d50987a060ca012 +ea150d26bc98637db8b3958906efcebe2131319349fc746910d8f1d2be5da7e4 +696720ba536d986175c03aa7e5e59b5a5292c0bf16e5e09932eeac2d7abb7295 +71303b073ee56611eff11d9e0e9289559be051d3bc061f2340774d1980b50cba +d741fa7fda71d0f06626f574c1045d8a3de0ca845a777861a9989882b0929362 +ef29ecbb057e70f9fad67620ca716651aac71098bece385ce62d620a9cc1b381 +77b5a04fd11c875ffab99043d6ae27a3e88b3dd10f57100d95ad1e06b40c550c +a42f96220fc699588205909ca8bba787d17215bec1d34d90f1238da94509f6eb +9c9dfaa707c1cdd55b686826b5ea7396d02be4d30a3d3556cadb9ea87d03bc7d +060a7dc271b0c694492fe30d295a8ccd220f29d6d4d6299d778836b62a143548 +8738f9862b91c9caeceef1efdfea6e4b064886db37a64b152afe751869c23211 +62682a719ffd7fd457fed5181664277a22118007f41fd419a018e67897ae3bf0 +e7f6cef47949daebcc821786a49fbc2a727452e1c1d2fe7a964f49ce1b6d728e +b3127c6b0d3c587a085b2fdaca4b6fad0bdf572c18a1030d53412531b5baaaa3 +1285554ccb778ad85f3bc7b2d841150059f5d2f2c66b52e78a778bb8a47f1e47 +029c85f68cc234b99c7998ba87e3480feb9b807285008c0442cd17512f3af3b5 +89e87fbbefb5c786e4654406bfcdd7bc6f85c39c08cfd08ef3d4909d9b3b07e2 +59b1b40377b8a9faea409d918bc350b107ccc7c63db94ceaa6787e86f4545ad0 +66cd6cbc1def747172360ea4d73a0616b452adc66dc841cf8b591fe504a2609b +2c010e4c4560d89ec941ea0e3580c024b79321746765e8a87e73f9441270eb5c +f0b160b3323289def0daac4b2aa6991a1e99fbffc6aeedb5fee24ec3bf49ef1f +a2012a792357ba0162ea6d04c7106b6f8f631803e2e2601780736476ebbc344a +80b21c3d66bb5672f4358e2a8f443205382cc26f6bbd4476132e4895110d55d1 +862946bf13161b5fc88cc96dd8c8c491e0eb96e76919781653590a015da9043c +1fde8db62c98be6c50b918d6f37d25e2a9bc7ce9d8c5b512b515a9c57641f0c9 +3115d46cc5407cef228e7789333eb4a54cb9b2d4d4b92e242dde52a09fd5090e +6180f669cf223a31f0d9ff5e9cae3b71e03f5cae997d5cdd22567e279256e801 +3353d96a62b82d3c3fb6f41c52cf9b7ef183a8cf59e78f831b0e2891a387a1c0 +984ca3aa3d3df4a7f4907a5f9d773493eda922d424404d0a7e7d1d9cae292c6b +9e20f3dd58855bc0396cd3c29b909bf3fc2859fab0d34531e8d6d5e8f1d3a433 +e10f2575fe260f36ce3206c01b9c9b19981a47baab106aea2de94f06c3492cb7 +5a212b0c980b3294e8c897ed2c6b2c2914a204bb668ff74d1b656b72ac15bbbf +a846548085feb15c98dd837386f411d691627539fa5a60bc7f37b6af9fc2770a +2a183a747cca23029e67cbc43808e28a24bffaf9b2432fc8030f20006c8f7f69 +823bf5674ebf65a433192566cbcfe921e616492ccb6adced1fab881302e66279 +60217f1b8c48af61a15c78992b24b3bf59294184bff5916372e97d2e0ca29eb7 +3f0068d2f665ee82d1f02bcce657b160ed6951756160504321ed5461e081b140 +9a8364c75313e3801362b064f83784f94ee45fd1ae0c655e2f12e69b3f433353 +e88bab2133f92ee856a8ef806869ce0e872b099c508eba707fd7b100c9cbbce0 +10e5be6de87806323dba1eec1b49e05726e2702765d1984b59731baa28c6262f +87feb6fca2d8b3752bd1c1b53f88974503b72169fa9ca69e48084a5f6cf21b30 +8ab3442888e5f59249cb0706c24516833f878fc6c0d120b28fbc8f0db6e4ad0b +c676890c963d8a22e7e60408105159fcfc0ec894722c8e2b897d89619da281ea +ad6da8ca8151a2f56f600c3ffa0de090d3704df505b141749ba81cb0684fcb2d +92ec4e16ce5035383254ffdb17d84df5cb8b07bc1bc119dfb155e3cfd641407e +0015da64efbd1e7210abca492b04d263256e8ffead35bc7f72e9369a971b3ea9 +e756c89e83be9931da86d63e7bb46864c1615e12192f2b230d05a66d6cdaee1f +9c67869c3d6d37b01a0471f995c5df038bda62c17b59541a5027be0a77241f69 +89228f1bde95246b5c36f3061bef146e7cf142dd380fc6bbfbcd60ab79428a2c +9289b9aff2f3ce46555a7c4405f1a5f8c41d453f662ae8d2e819519ed25ae6cf +3edba686109c35f0d5bf598a134484bbbff6582edcef751b72bed767500896a2 +aa4d0f655d7b4da1cbc63afd931c520f8ac19f393782074c4ce515b10d7d6c25 +23c3aa7472d718f34e43745f5cfad1dc66daa4c878be5d3237443d534343e382 +7ee317ad23209adbc87ba5713c7795403de5802b52c8c8bfba70ebebe188e63b +e432279befaa5c4a4de8f868faf53ef9c52b06785600d9b7d938fd3b5aa185be +f4b32a7aa1e5ecf57277b37f8cc5d083deee86d395bdf09c04819363ff243115 +bb928d3bfd3cb47956c0fa2d399fff571f87311079414f3e3ff37178ab6c60a7 +2386ecc656d53def1dcd2b8e030bc92a33b45fbf6570b5f95a92e3f951174e08 +8ecf3babf65b8b4094efa0bf9359c95ad7e93377114ad0f0be9a41fa2ba1468c +41bb19f8acd4aa7401069477ce7f2cd1910a5e6c8c6a459719990411395ee8e1 +004ccc8904bd6d7d79fd24e77309b1934cb261961377e47ab3a7bafd54f7968c +0d91318d4a189208bf957e797ffe8b4a17ca0f8be63bb3b8fafbebc586e35a6c +eef7f7208d7e2dfb3ac373d987cb2bf54cf0cf49b424f1500f5adba81e088b9e +a7f10102769007012719f55b725e4ad95689ea658fa4389236837aa3733c85ce +ed9189df0060abc2b819383f2df4589908d462f00388f75e6626a6a70b8139d1 +e73532f925cecc110b6397ef9c91bd44a76c3c8df013069edfc442e0631af39f +d99184ad8ae3782a8e50d23333a79330f985c7b3bdddba94f60ed03ccaa73b22 +2309cc53a55c3768c0f2544d7e73f2b4bf91949e07b12a7d68416ff6026d65e6 +00b31e42f10fbad2f389117d9e02e14426542e17a366d9ff8d50074443951308 +81f86f35883bbde15327f1a6d48fda5500fc9795f59f9e02a7244cc7f779b900 +3861525387d6e1a5bed96e0cec2a62fbbf3ce47512f30415604cd46bb1e64eaa +e8bd23950540efa3f0e7bba809e30852b35d3ec2c81c876edb86933c274692bd +a426e944d7fe87a3fbfd2164858af2a6a1017c267717c9ee8ba5d0fe5af23361 +cc952a8050e2551e2c0b1960ff309eac0efa945556cf835ef94e71741ba9b529 +165a7b7ad98300557905705f38761ac00398c246e8728cd238ddac04564715fb +1484ea12a2732b712013e0d3014e8406ab94fb12f04b49f1d876bc0472ab0809 +2472ca46f10ee091b0815f37c0ec605982f0b65646c8dc4af65435c32b6065bc +1d3233b7f0c764368a894213ccaacf69919eaa24b9d251f91409a93b268fa98f +4f5e25aacea91fdee191fb078b072b25a70aa528b388fb2e840b37f259caf06f +932fa4cff69b54dfccb4f988314725f0ec906d0364865ae3017c1f6403dd6ce9 +18ab6da3f5458da0076ec2fcbd09962d327b5eca2a7120ce47b2176491406746 +392d6a8e87e1f747f277928045ada22e2f27c92b2823ee7676d8abc487c49932 +a66d778238d0a1b895306b8649bb25684622b3a220b5b11f661c5550001b4a80 +54296ec17a80ff7c74d3500c5fd43ec928aa18d717ddeb608d9daed8fae4879a +8c993fb67b88d93b1cdc0230068e9af1a6648182d05bfc7369b756a5713e92ed +eb47ef12d3b160b229723df54e71c34d21346180e0d380d6601b69ed48c40bd6 +3f506cf77d97037947a9966e748463771566c35b2a0d021338deb19ce646888a +d128ffde097622b767c0496dccfa7f475cff4cd701b543adc52ded24fbe57aee +b6be5d31909669d54613dfffcc655196798eb832a92336a2081910b382cca9c1 +a10ac5a738b3c3a62245d8e2be741d1ab7cb22501e69299fbb6f269524e14285 +1ab50f927b7bcff832452d87c1b5794586f7c7e3117875e5acf8a5565cb2c200 +5dc9adcd99327492413e66fd4b4d1d8692dcc34cf232e674ce122d319475804f +a535fcd30bf187845ca119c1d1040649e8b1132531052882f86e5e9306805ba4 +c41514f359e5e9f3c66e3fd46d6c80a244c2367f105f375ea4411f2e8e57ebdd +2a9d5713638d05c34b7c2a65f91ae3991a92be377921ece091f375950168e7fe +3631ab809aee24a813f1d9950a192bf811cf866ec13626d8026223f5df83c9e0 +71b92805bd025b7359400530ca6fa29de2fc817e3ddd87cd53d546956b67ef7d +71f34efd5f971e67343d42baa85b2f93bcc584d9a7aff4a2bf9a151af9783c62 +bfa646816db08925eefc02e28daa5d732de5b8fbe3e4dea7b7c3ff615fd45ae9 +bce4f39b03bd21276b7c9be5b4be2a7578e76014dfc1af631e3cbfa4773a7cb2 +651980a21d54bad06a96ccf2e7610d389f63c0bb94d94774da3839a2d0813aae +4ce4e5eed2eb5879c1330aabe38925bf3cf4db1264fe2710fa827e00a190b557 +c29dc30934cef2ce7c08cd21070d93133ddd70e9f06a55e26083976ccc36466a +157a3f2a06ec5b182ebe2d2c6cd0d84750c1c9f66893129b2c4f2458b4af11ec +cb9bef9a9c6b128185f625bd97c67988d65f3db88177c23e22fe1e213f9f08df +c97f79f814ca4063bcbc38e30670b7efc4be5e8275f2513d9ab21b1bd05549db +2ef572f193b1d51b3d1f8081ca1b6dc77c964ecec5c8682cf1389fae6b9bd9e1 +e859782c39fe6e31b983340c0da51c56a3321a003b09bb6c6d780263cae9a7b5 +ed91c019a47e699acb3c85d09856845570bd2a878e7b5c4c4c79ee05fa8f9da0 +9b8f391a1179edb188d2f0054d7067c9d70544a736aaa3e46b0b9dcc3f1c29c8 +dc1af3ad310ff694a489fddf2802e0d4af21434bffedd14038ee4274775256dc +9ce7f4af6b898fef0ed9e7cd35e69fadb0fa0690f5d0e72c1a4af970ab0da3f3 +4f31755baf6a3cefe3febce2eec3b78a40d9ef7f80895c7c3a517207934098bc +d8a195977268ec0b93f77ee0f4ec663b2ba294679c86fa5f1a3b29acf32f3595 +ca282761695527476959938d91d5f43a22480a288ae954c0c6598ed45bcdb8ab +359de608273494a8504168938346292d8c8a42a49560f65260bb14e84b6bc69b +cdea20fb4170ebc5b25a645bd9dd06784b54acb518fab4a066cd0d93d293904b +63ceef2821111fb97f52e81329b4b4568326ace6f0ee5dc052de28234b816a0f +06bb3559bffd63221282a11088b943556f52d1cb2ae52851422f3149d33d9e35 +68f2d01e24efc73aff92a64e225205bf4f03e14a46c79b8f6d062a132689d47a +5d9cfaefdcd315521b705b8b3820af578ba2f6b71ca839711b96cccf04d46dbb +c24a79b51b720088ca2201ce984c1544865b34e96d50437fcb5275db879db4c5 +6c828f8c6591b0ff245516c50bae2f28a692518571091ae772506c3cff88b9a3 +22133950135a0e0007aa2a7b7236ed0ac734005f786d99b8190044b5a3dd509e +4274f06b7ac99669506619aad13490a0814773789e0202764da1dcf116dda6fa +f58b6354fb582e18acc261da2770476d2ec200e913d6d1fb475a7c65cb3bc13f +658eb7eefa0804138d6bee4f650f7252929b8811813d5bf3fd773ba6f3abac4e +aff8222db5080117c0956a3add5087274250c223df459a714cf40a93071fd85b +bc4569e1ac85c88d6fa90a68b8386aa75e1bd8d906f6e5ee49ee008545c8f8a5 +3fb5a45bfbaaa462d72fd66e0fa72ec555f9369a1d922ba8e186143f46037020 +9682fd0887241e9b0d5ce9c2db3f0cb1dbc3e3a79ac5ef04842196d2782218d6 +4334a938e44e84b631b4f73e9a041ed0650375046719d51641589f8b9e182626 +e22b2b781343e659f4542b3394fcdece7bbab362db7cdd5d12aa238e96b075eb +dd5c5831d3cd9165c24134a0613e44098ca8c7777ca1c5c22bc71ea31c31047f +1fd4de2de3de7142ee034677e5433629ae2a39a85f4ff8e14fb71f203e70efb4 +cc393184af64dd3269ee42dee3fd104a4a121a9a59bf58902afdb1d0af8f0292 +8b91b9057a787ca8c6155efd994787a4d4d384c548c4a7095b716cf93caad2b0 +200ac13c0333be69681daad9bdc218cb3b2e1bf0f9d60352a38786a3a460a19e +e1fb9f05d35db08c5fc0b82daf4cc7ecab40b7f91d9d898c28fd4c73d9c172f8 +4dc41b6a08c7f5af7766b1a760eee5082f4271fdf74c8e8fc60c6e4513ae286e +c255135e754f53184bcd68d63bc13020b8869c3c6855d8a54dfedfa12b2cab78 +a06a93adc7b6b9684af30e74b9d0d776cf8711abccfcd92b58eb0a0fce3f5195 +d64851993a73f9cbb6fac589b75547935b5852492b084c042c419ece1120f196 +555f5d25dae724ca6fd2a53efd34af6b67b755094eceee3aab74bc967fd75936 +82417b16e3d7a0806930d7fb60e8a473af61bb48922687ff2aad1c5c2154bfe1 +aed2bc7fa6be41193916b02d94a8465288fd2de256b04b7b713b63da584e14bd +70cc1dcfa60b6c76a24dab64bc08de5651ceb374e23644bfced08b3d1c6593ff +61be21e3e5700bf9bc4424884be0fa94a0b97873335886c54cb0e23663e9728d +2ace3b7bacb054dbc3f2257cfbc38376d0951c771e1684f313a40d13c3b1a6b0 +1ee268b8e8aab03abb6ed010f5831659b52cd9f6b9a2c3e41267569e08b7047d +1343990f5b55f920f2959420b9b54d9f219ba5fdb46842eaa3311216b1f5021e +364cde6993321890b464b925ee7aabb68da838ae61336a2c5781b3710881d661 +bb699cdaef77480b5064dca27439709b4df30640df1b5040ed7026b772af1de9 +55631db4213873e2c8626983284d488a505fffe07fd87e239df43e968c600438 +b3d5fc3437f4d68d0de6787b854769f2adda99226b0c269d27fff3d5878a9bdd +e5dbc7e91f92763d32b7f4fcfe1a1296513a5a5f9a437d96d0f8ccaf5146ca9a +e8a1aa382846e4f240567322c5a68c4fec2d07642be1c94aff3aeda5fe64a89f +d2595272f35848cc1d2b87fcfd8c07c5cab3c5273afc5f1e693fd1c4ab5fa2b8 +f36bbc606ba3a44b699515e397cae25788af6b77d8727887725065324edf9ebd +beef7665e44c1e9c66063a2d1bc62fa491a477c05096285da9126ce1a544270f +780d60636fcb6d42231ff5a5076d26a7c15fa4263acf0e732ef9b28299c69017 +f8cc0911e251634555f2bf701f51b31574b22a33a9613fa3b210ef312d37c011 +a949100be55421bb4efe4590957ea8c8cf49d8d372296e5231abcfc02bead49f +ac3178163f226dedb82aa079a85046c4a42a2dd962c38d73686c37bd40fd55f6 +fe531c4cadf7b5d35320b55bc353770951981dfa2fcf0becb133e37eaa31cfc6 +d3f5e6a510bbffe5fade3eada16d810a713bd31ea4e62cb100467e39d704b664 +02136a685425ae27efe899766cd6f1298b67193a30bb57249f885a5434c949ab +c36b360041cebcce3df997d3b64d168226c13b71033052e1c927ec81ec107f84 +ad3cac1e79a30cf859924c70b1bd575912dbd7383f62591f7d77d22a60b9bc95 +9d9b54e29e43267955f0baaa61ea4dfe4b62d766ee36cd7c3360cb4642cd5c2b +f32f9adbac9861181d5b056185d51ff2b386a7c28d512794974e8ab65e1060cb +901523bd4e0a20414b69ca62f58578dcbb45c9287e2c6d3737985748222d58b5 +7bbdfefd50bb7cb1e6944d7573230c0eb9adf66247de6bab77e047c9f959819d +63046bf68de2b52ac4eb826aad949d18be1f2e15af577b403b77ca601509d092 +90900eeebc7968071ff4b835330d575b7226e925af3421ff2c10aac7e434ccfd +b188dbd748ac8f9a2cbf73b5f657c832949ed005db187941a86bdd5254c29214 +529252b9b82ab9231e7edf4238e3df1a17cc2bd745984ac78d3b10722d1f63b0 +c3c323646a10000b79ccdac77d3a6e27b22bfa22a1d7d500322260cd2e637120 +73db6e8ef93cbfe3e99e856852298458c670337ad93440ce8eeff522242ebc0b +aa169723cbf6f36f2412f911adf26bc92c852348cc30f94002c09bd67cf6bf1e +4d5f77629f881e58e4c2391cf2f3e47a2db2777dc6e62b700c2b0a5ab672a30f +d61eff36d06b890986a62ca9844ffc5a11c4f6516a9a25267235b65968256ffb +4b02859467c4d760a5866bf29a75164af0cd11c50163781207f0606343c3bdbc +ebfc9a30823497bd3de615f461f33b5f29c7583e781c1a9db18ba91795199c88 +edaef227cfea6c4b791b25994eba7b8f63c6f37ef1116664fecd852bc62f9a86 +286a6b60fd97d0c675106f79173ea1b3b00755856074fb8414bfc398f710f951 +3a2e9acaf344c4e96c5905ef655a14f442d90547c554207e5de6d26ce01fc027 +e50407d812035e11a1d6c61239fa8eeec814e65d0585b60d577f008b432c4919 +99490be285cffec01c4e113ac23197cb6a21015ed5fe3d6de9bcc87e370eca28 +a27d72142008ddb3c2eb6b62e1ac5afb2b77fc44c7f98234df6015db4c82407c +15ea0e45015cbd62c0bc001e534f865511eaed8e586fd7d43d9e7b6f9fb25a0c +8860dcd5d8224ce3b4000a2447882a615642b7e0bbbfe1c733f22db3d6892b19 +bc5aee7597b85ac18c601f08dbf63572413982c991396e855b5ad52f3363d28a +22676480fd00b78f555ba10b5cf1d43d6570348599d688bf16758ab954a734ce +6107109b27e8077760d22e7f19e7b894efaae0a88b6a5b64d33dbfa34ac7af0c +d6ad8d291f4429b090c39f5cf478a7b8d45f50e611d42f4a5b0343d42341900d +b25db4111dc8012800ea45a8327b4db5eb8f81d395aabad6ae05f9ee2ccc5b4c +316e27d5fffd483aad5e04bc447e1e0ac2e1dd61d82b455e104b5195a86b5e77 +eccfc2ff19c00ffb00dea2ba058d79526a33f02dcaa0b8e7542c8f180a698ea7 +c297c252b1c0cbe651b1b307abe2396635b5414788597784eae2bb9d0a5c1791 +7f83906a7909eb1f8110928411436c45b7fb242d6a8ec52833e56710df57fef2 +92c22c7382f7981089aa29641b8719f87aba9778490ebb8bbffa4aff2c86db0d +30f5886fd01ec34e03ab746b3e52c906d5a0769248ff456ce53417acd3b3dbc6 +c2f250c109fa46fdba937d1351a58bdd2705c9750d1fdf2c0c51dd12c38434c9 +df79fa39886d593ca27c5bb2056e4fa11113c90365147722c7e5b762a5a73e4f +5cee88edb79e8b7bd987cb2fc8b9364d62066f44588f18eb2327fd0eefff4cdd +a5b215f3eee147f68baa2580074d282b5bdac0588d91974efd9a40e094ac5c73 +df25a83fcc27b04be995920af9ff689982bc08556cf7a4a6ddf8575278882554 +3672b9b48e657bb57cffefcb5a0d8d5158fcab93d728ae582825c690a2932f08 +0302aa42c7152f33b3e7a8448a142b70689a7709a41f6bbab407acf095ca9673 +36b791d7f02c6f4219c3e291f671f33120dc2f505aad531bc3f496f9a359476b +de9091e3562f7943f493ed888fee58b72cdaaf14030236c5b531a266ae0f4981 +82e16b9ac6dfea43d148fb36cdaf93e11a8846b00c70cd7ce0074d7d4ef6a88c +e9c2411a6cd9a1b767f2ece75d180cb5c7d9b58b897a82d524f9178d2f0a123d +11b1368680c41519a24c7d08bcd6c36a4a3c538f61f4ccc4f2e3074f613123ed +e10e7d807a3a1b9bfa1deb40dae50f70a7034f098f77d8f13ec9bcf6094ea770 +c2f7e4e27708aacc6658176684006bf5788d9f9bcfeb4d49c7a5f36a898d6b9e +4cc15aca69717daf5a1cf42ae17b338852051b0eb02de8a3f76f8e0f599565cf +35416b71602ab1fde45adde41c18ccfa66b4d1f3a93056cf87ace221e6f19e90 +3d0b342035a043fdd5740f9f04c8dbce99ab78d756298ea1743997816587e6ac +ed647f35915264ac4b517b1923cde39e708f154a6f1116ffda346afe0b597e11 +938d21603fb3266e9f647028068f8f168ce9681e1e525ff50118be3e9c9a4521 +667299d5d494ced6c50d5074a4eab88064b218caa68e82684f0d9d6f3dfb08ba +58b0751188b81ee909e4db102338fbde6a92e2a19b898d3d6d4f5e255599ef78 +348813bffbf4d01875a7f9a052f18656a63077569cc62a471a2775ed43c617a7 +5a4284d9e7d0aa6911033d01acf753a568f514414806bab23158ed3a32d015f7 +6687bb3b979a2423cd1a142fbea9b99f2c93dc8368b98c40eb4979a84096244e +fc8b3b178ebfe89ede5dab1c9a3aef1095fd72f4f66d257df936611b0ee9f5dc +2643ecc8a0805c87e5f711184074cbb7acf45e89d48cc06ebf116997be41ba3c +8f4056d3cee644a0bedbeb99aaf04e60f70c74e8aef034209cf6febe7e6d9d7b +10ca3e6c2366df1456e3bc4f1aa0bbaf719876fdb344ff3c1fd725aaa0ad317d +f3e38b25ee2123e8730691e24fc8e56ebdadb73d53057545e63963bfc202dbcd +85104ab50d1a01237ecabdc4cd63d44f7d2b275bc4ca8abb988343856b5542c6 +e93075fbc6eb519aff3cb431ea9b11219cbfce60eb5326187b67ab1e100ab117 +737746355046bc7d9e5d5e86285e7835b2bd5a3df88ebb9c432af9986936e1fe +56ba305aec0abdefb4a6237c70e2f5655348b663c145d5d374d73aca63c06759 +7d44263ea667d820a01865d0a8d12bcc1b2d08d83aeeb7e742a6f342fbcc6bc2 +a8492d637311e79a30442b1b16b57cd69929b38703369de89dd207f62e98b94f +180b23b49b53c1ed9609f5a2ceec6baa4f92a23e63f138b4501588f6a44c0d1c +5c0c2df3f555ce48e24c532f46efc64ab0da715a57273be21194f76eb1bba328 +a13dd2b8e1045a0b41afc39b699ccaa1b969bae2c6353983ee76e4eb1cb3c7ee +c1c351ef18aead2fe9202a532ce7b662a37ab66128632b79ec8e8d5c8c3686c4 +5877d673b277e22613a2c33642d912ccb258b0999f2274a2a69924e9410d0e13 +537a1fc119eb9449a8623f6219a553f462195b9557e968498f07ba781e344743 +0b8a18aa038f0e97c577020f1fabbe3b286f578adf552e73627a90dd8945e966 +04757230465586a5167f827c6492304136936c7ba6dd2a6ab7ddabd19422c552 +8373b1a1c1d293f35a4ed958cfa34fb2479b6c0f8ad53fdd86a308ff7702563a +5681462df11a611df787e30d30dbb1f2f79ec3abc12c911f82c7bfcc2ef890f2 +047663622c0696320f39f77fd4dc54192d18a1ca144102f16546f0655636d69d +54a8a31db68f6a9585bf432c6e4c490ffba52195c65f2a55feb7c4e0a3c3719d +6ec9d03880c8e44ed27137707f2cb29a583390413a8684662869dc0ccfd0d1b8 +4b41d40faa87f3ede656fa89748b63d85cbdec26e0b3dcd7251472f67f428493 +ed6d0cd2b7f1f962687bc441e6374fa9bc0ec5ad602e1d60bd2ea26f5e1ab2ec +0c34a8ad7525b7f46a7603a7f333ffca16ec5517b79e8a0149aa64f69e1fe68f +b028941ff67aed28a169f1e0f32ff7945eb92feae2025665f2cfe299ff9fc72e +915ed9579339ca9aa0948542129dad710fc9e805bf9059943ac44240ba333bb1 +06827c2e8085f5732f42017edd37242d8d91852e1651f3a32ad7b5d1d23d4d4d +006d54c90080a70306c22966e389aa073939c373f512ac733b4cc2e4f16ed13a +d3565fa05f05d130e821d59e803f202defe03a44f9c8932dcce9c979dfb62ff4 +d4646313d5981c159f7d621cb2fc0dbcecc8032a8247e91eb1aac2c610ff36ed +502800738f283c52ed248b5e61dc99598eea4c99a504cf5f077ec1139819b084 +3d4419e94b365f62f0f8b18231bf61cd9dc22aec5495849dfc777811f85a23c0 +413125f79743aa0681407a1a24ca873c0f67e8b1f5f9096ce65efc1dd65e1d99 +2aad49f7e35a5eeb5c20e23a140616ca27608e1ae471cb10ab0a43881e00f3b1 +dac36e414dd0c3fedfb2885219fbe09c5b8a3bfae9a194ee18e3afa457c820cb +69ad60215404291249882286dccfa4864a46af1dea3202edd410a2cb2ab465d4 +c30e6fdf3f6a915147c0bb37f5d0c78c733146704515e19c9dc1f4435c964cf3 +f206e7844d4b8eddf9e8b6ad51695bc28961c29ce8e8fa9c9e3b3deda8618766 +542b451a562bcef024f653b18c1aebca5e52fa4f8f5e179d6b272ab59e581287 +a9ea52d31e2aba0f50793d5843a4b90f897fc29aee4911a08729fe7b380e20a6 +7cf8b8d5a0f4cea6f206c9e20fd3c801210ec4eb4ba590a15a483375525cd686 +6916fd99d1f4a8d127db27cdca8dc46af44dea2f1669dd14b9b20cf13e40461d +8917095b7f57f7c664d5985ed1e635965400d51cb0fef2abc232273b7a4893fa +18ba9017c66301b0c39380b221132d3e905b8c51a71e931c247ea308fc31d836 +98bc7bf8af2fa51d9f6a778fc6dd25f0661f58da9ce3e398d697c37168cf51e0 +1377f3b9aad1d86b7721a697ebad7d8fed8b680e8894d89b36afefe086aabf33 +7ddc55d0f04205bcd5b2c258a94c134373ce10bb536583cc054b689e2c069b32 +bddef0d23d3de9e78c20cb7db39f38f13eb4c4a19b22048418e386c18c81cd7b +c73db7e2b81642711383e8f5d161d29350e60adf3d422b4f6815def9ee6a7590 +aa8aca5448ae230352063624ac07287d05fe42fc7bc710c0bb526e7298543a93 +975456efba15b302a367094a8edad5f65ad15bac23dfde0c72f5277cd737fc49 +7d0b815f79eede6dffcc5a399364126b08074c8e6898a4d8bc4764f34b5aa7db +240f2553078ceff7d1e7762f09ed7e4c9e91f73065c98979515cd8f5ee6a90a2 +4ae64a3dec78eb333676a397cd0d8ea803e91814bda9c3f8ee4960f831904003 +b2ea77bc285494a786310f37e94e504c3f21e5bdd170014c31ed16eaad0d7e88 +8c3b19738cc59cdc9409106763bce789da344514f7270513f5d91adeb1175095 +7ca0340a0d594525f0ecf4aa9242674f8102f34eeacaa5d07d531b6013b1a44e +599c8f7aa04ca994833f56d9ab565a0acf12e8e2bef60b791d1eb731d281a704 +7547ed383732b05a8365398d94f83d1c845a6a0d4f25fa9460aab56a0521acef +6710c89a18ecfe893523541ed49ca4912f071c69a8e02deaab02512bf47d9543 +8bee8fb34180fd4caa3a1722d3eb08777ef801542f92e363ec51b62310e87bc3 +44898d7e39f50e1738bae8ce5dac8b45a22ee118f332d129aef84bdc7c94cd87 +6e200e20a078649de82a6bc4f5af6ca58d901bb45dcaf6dcfbac28f104f171cc +9b98b8fcde75f8cce652d66da120b4653d58cd43fc79dbac7ebd98b329c208b2 +5e751fa94b66f1aa570c8f2371ceddbfb922fbdf167a9fed663684aa59f25403 +68799b6b01efef33c5d0e103bb1998a649fb19650ae792f4342c43c91a29e4f0 +74fa71deba53bf988b24f7ff2759edb29e3c887890ac2319a9a7133e8e049b74 +a411ff1c10475a43508c9f3f3c203bd08da5ecf6433a1aaa3044d51a2ac67ccc +8c964bfa1a06a26ddc334d5f334cbbb29d68c6281728aa939175b8a162c6afff +321251e59ac301b7fae6a67b34e7bedff3526d9896eb9dc6d582a550374bdb3b +35a08c0e4c5af40c0d0e03a649081e010f198b841bf3f62f44f56b2e504c410f +23759b92d1ff937bf3cb26b707a71c62a96fe810c93e0c014bc8c6da8c9e3a9e +e2efed91835bf42a124201557e5d23c2c126d933416041ffbaed695e08708f24 +fc05274a49824e35072e238733bf9cf47a3e6866149cd3db5e02053ff1a610f7 +6c3619d468a3a0865baaaf037f55581b4d27e0e02d0d7ac5405c1bde538e5a54 +b6be17c9540b6e7794ea76950e5a234de4fb6e8f769e9fbcd2248952a291298c +5726fa1abefeea3738610cd2d1cced9817433a0c7550b725648277d26dad89cb +f8c116574a6c34f02cd170f12154db49d8614a1e36d069b12e8375c64b780995 +462ef9eb8dd72188cf5e91a279ab7c81c07fddedfc8b3d186f656ecd96f92d77 +2a06c821088b91d3ed6d30595bda73daf0140ec265c02e824d1f9e286801fe64 +8691e0e72ec3e7d225bb802b6feac317c68773ec5cc662fbca2b3f20398e817c +d1e4139205e743a845dce84e27dffbb05d9802d4e665a671f5c773769a50d35d +d335661ca026f87ce255481586e5c5f91cd0c5c1cc3b1405c5ee9af1093ddc18 +6aa2f9f1cc86dc3e6a186e7863c62bef82d95362003d1ca6bce58483fac823b1 +40a92dda44ca35b7e3b7deadf1d68cb11f4f2f1a4174c137926ff81ee93a567b +c7169fe7703c5aec18d6541f7b63ab9948b25a84957b38be2fae817d00106efd +4f276f0a1a053eb9ffcaa429df2fdd79c859452c26d17a7c7bae873cfd70833e +afae91d1df8a7589daf809f500f8bbe76d5a6675763f371e90b30b664c9bd764 +5b5f198407df1ae33376ab5020dc6d146047539687fd09a16a4440137854bf36 +18f6cf14fed94eeaf762ed3844ea04fe1f1f1098f40a83fd3373898743706044 +85238376f21593d4b4f6a20bbe0fc82ec10108838a2f837737c5d81a4ca67c85 +8e1aa38bbbe4eadd3a8d4914c463f315b96f991e2d00842867916c8254a42819 +6fe34e56cb55027249383a6181bc201117e6eb4dcbcd8fe5983f43fedb3ebc3e +9c18cafc85c714d544e472c728a71d0fc9e9da1d8aa0bc82cff722d587256911 +192ef02167ab4fd83e242b1bca3cf1812d0d80a39abc0a609b98a9d6aa218256 +e086acefc96205c250fdb46f90b19096a048cc55738f1939e560d61031efb273 +22502819c2ec405b1d3b16fab9b91decbd2017b208bab9009300c427973e3b9e +545c5ef9fb14ffa71d03fd635a846823c6a9b3ed5d465b7489fbc834bd2cd6f1 +67415aff901f21db6234dcfacf2efae5e9d36e8c942f87c63ec95baed23262a5 +a5d79c6c30cd7c8b70415e2778f367e1043c3ddf47c24a77cfcd0c4da09059ff +f020f2c7e347520eaf371f83f203630fb901c090e50ff85b3db7de9d7f9db96f +4658b07c984e5dee30123f3f50a78a648db346abef0b1bb5c175f663fe04e00d +ce6a217b3755468aef9bfdb59f35b8a8d4fc9110304b71dc076528ae299cf38d +ab98edf5bb592f5b71ab70d00bbf12e8124dc9368e272e6a8bbfe8d4edc5865c +a002e72132bb61114dda4ea672a63e574aaa3bbf24764d96a5e842e6ead230fd +1a4b7c3192da5514afe1cf92c45662cd020051ec1f90491c9bda6f1456ab75e3 +a887e1165beff427d5c955f8c47df3b7924be6bf680fcfdf52da7f9a4eeddb1b +15dc214a98b50baf40e327d4fa087b9b7fda0e56f1d93ed114a6ed55d6e4d485 +f9ec4ada9c6023ebf13e8ad42bd894fb4d94602513f2d404951f85dcc5c6691d +166c84decf01902d68ba6db6c4d3f0067239d251b7f9a1ba6461d0b0cc53c7b9 +2e247ee29f2cc9c800ba8efcf9b8b9df29681a2c79e0e43f672b7f8dc0d10518 +c6247b3f86346b334150253fc097f1fc61ede74da898b127bfab753adf8a2244 +90c6dea0b9c95cab6b1db2e7375605723e1775acbe3407b42e034f21f06b7d02 +e4e19c0e899a200f3407a35ba07e2da18efcf3afe49e188bb6375a115a61ef6e +881c85bcebeb3349e19ced524f74a290f0fd443a5cc8df735f5cb9d8b43400bc +74571f0c8004268c4a27cb1675e60c43aacc22bac7d131f7bd67df7ec9ef25d3 +fa47a58ecfa771e7d90bfdb5be30c102278f03277e9f00d5d110bab53a5d1dfa +184f5e23564becd57ddbf605f2aac342bfeda176e6b7ec449d343027142a931f +25844c4f1ed48feb816f20d44cf3a30c1f1cfc6d68f807243991f57edcb17485 +37d4299294ecbe59a28f9268ecdf80ef7b3d3c23dcafd3fd1d603aa8d2942297 +6caa88ccd43d5857cc5f25e09b8f28b1962bb7db7130f5230ef5b4fc071fd277 +1dc9076de62785e4cb3739d30f84540fa16b94b86912182e67acc8aef04c553f +5c7254990fdb6f99ed212446a23d0cd4fc3021ecc66badc428a658598c78b6a1 +adefa689bc33a6179b3d499f8d1b608a6c848e634e07545cc2d3cba17a561b2c +447334656a756958c6101893daa582cc52180391e68a75d8c31c7c56fbf11dba +5a707da753725bc6a4be6fdc5c7153bde1c6850e73e075a27f50f94641f33e6f +c6d291dd5d05e000f847a41cbcfca95f2e2991ce45b70d3fe6023f147fb9e764 +6770a0f0c4fcf48ad21e0af186e176d3ad800c6281d21924a2aa03d65633796b +571bbadda51b3ac46781004a6cf1c3abe1b8e01153419911f5fa8b34af590fb1 +50c7c77aba272714dd9eea00eb3325b70523fd96d6980bc86dfceb76bb715a62 +cbcfc1e21334012eb978670acd99a38694d89d841b395a10f618b00d018092d3 +72a0bd18f34bbafda413dbc4ed3189a53b26266c407cd03ba025687300bb1f44 +79b7e12d57b52d6a97bd8cce3b520fbbd2581b50f5ae0659bc1a1de9687eddf7 +30f278aab7671337962e44eed06fbe4b204718c8052a05c26993eecdad5f29f9 +a0a5e2c9dd805d9eb3b4d10c9ba40613c8e03ee17a72dec10ce31f6e94e2cd50 +de5a3de4af484627fb8c644e86fe57b98b9b499f651b7d29d778f2bb4c70fc80 +b1a5660475e2e4b8f764ab42dcd92a1410bade40a42f4368c6b3e8b74bad34bb +744b85f8d8ee3b404a0f98cb21cd23206926975323b28045558aaeba800e6bb1 +7ba8a0f6ad5698426073b3eb9a7cded15c466729283cf715ffe90b0249beed4d +54254bf504c434d2f4342ae2f0247a961fb7d169ad195998cdbaaa075d32f83a +e89941c1b9bdeec68e5a91a8645e273a9b52cc91a1ec592a10f7119eb16645d3 +7ea3fc0b1e3f4cb0bdc8d0c1e5cacc6034e9d96c02f82c273ee0cb70421374e5 +0f43c4c792857be06340ed5d74c6adfe30a8a093a2e20a06b7570ed5ea6deb38 +c14fa776e8546cf134efb12f6e04aab3dbcd431eb99800f3ee8a62634d20e3e4 +53c806ab9675a1f1a0cd9e887e93b981206959e9766b99841028c164685ef0eb +c6a892f012f0fd587a249e455684c30cdd23310746b8d40921270b5c56e066d6 +a03e0f6dccab99beaac966799888f3910d82279ae16ad0943f0adb0da762620b +811935346a477cab695c31d363c72557a0cc576f40693c4ea2c5c1842ea222ab +2b69289d1d98b225592a21fb8334965c6efceb411818a080f998e6591d8230d0 +f534827e4e8d5ee027b2ad38f508e31096c3e63f14dfd53ca529f2b75aa27a66 +16bff1dbe8855a584ef4b1c9b3ae42c3241907e0dfe32ff4d1f6dc373ff1c9d7 +b3462f578c882a122cd6515dc8bab2dd04da2948574fbecf373a59a3fb1b7c31 +960ac348df0b0b81cb87d38cb2d5e0fd4a0dbca133a1a868227f0bafda120226 +c7626228592ffcde2f5c1ef2444dbf2ac432052c6ab800663afab4de4b69b327 +1dac7c027cdee656ef61be9bbfde8bfb4733229701386beacc736b3dab936312 +93a5bd992999d99bd30ddeaad6fd96bda1d6f5b3a438104c6b61f440a5e3dd96 +eebc91788ba3d18d5f571f22d7ef602b054574f516786ffdcb0b8ab6d10be473 +f9989f1de356fa09c6f8fbee762952501630695390d14159fcd03d5e795ee760 +8b0976232a630bc1ffba7f649ad9e51106e8a39799b0fbe3313db617ee668624 +77d32a61e69cdd5556b22d531cb4027b75a4957f04d7f0e899853d8cc6152e8c +252ba67cefda23ca9b2a0b0beb73d6ae7c6258d04df0141894976e23d58cd5ff +c87a9a708c778fb41c032211e795eadc1e4e2c9aa43ae4d5e0660d1841c229bf +ee25fd8b14d9a9e4773fefe75b751215971748d3197dff25f083fac52b25fa05 +7cfe82595d9bb93dadd96092a4b716026333087cc14abf76fb87b89d24d75262 +73d404cbcb9efd083a4a6191a83c691407842ad85810de6e5bd4a1836ff68f20 +704159e437d36eeffeae2e19fb693c3904bf5eb62e51f38664d5ac8eee2f65c0 +c0d63db93e5ed2025f7dbcb1c9229eb14d3e29f292e6a408e56b8cebad84befe +1820775fa5b9ba04610a728f1decc5b1932bb73c43b766240f95dcba64b92e4b +1020655655418fea4b68d9e52febd9c4817e9277ee4820db218e789e161fbe5e +caa897796af1e4db7041fa4cab448bd03af5ee50100b52f51afa810f5e7dd7b0 +58d15451a4e1d44c9684063ef6db37591762713383acccfe4454f9f85a1f1aa6 +adf7f8ee682f353e8727d36f1b5e4e5db640ed52ecf3c8f52efd5c21979df3a8 +fb1442c984e2689aee6495e0a62f3e28fc9bf271d824812eb119423421783f51 +1c0b99d859e0c89a0df5af0be501e2317d45aa6440262b1b042f8636b0f99d10 +e1d3822b1cb03208ce5e861a6aac2048fef70d7defaf8eae75dddfbdad16f218 +495577b21aba8047c235594ddf65b902e5cb30f62be5671299d8108ad85150b3 +9617d4608dc21a83e68b7ee3c56d7041c177a46fe89aa4f7bf40c262c470fc43 +2455fa0673ba87566fd78be1d7ec8041b0ff37266b20ac1e388ec8bd2460a470 +72d2697e968c59f57b8316e64fa87accbf9c9caceeaf9e16b37e842d6c60ad09 +1835302ab64c4e7e185e2beaa86ee711ae5a1bc2d27d37a37f20bac3da8313ac +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CharterBT-Italic +%!PS-AdobeFont-1.0 +%%CreationDate: Fri Nov 2 19:03:54 1990 +% Bitstream Type 1 Font Program +% Copyright 1990 as an unpublished work by Bitstream Inc., Cambridge, MA. +% All rights reserved. +% Confidential and proprietary to Bitstream Inc. +% U.S. GOVERNMENT RESTRICTED RIGHTS +% This software typeface product is provided with RESTRICTED RIGHTS. Use, +% duplication or disclosure by the Government is subject to restrictions +% as set forth in the license agreement and in FAR 52.227-19 (c) (2) (May, 1987), +% when applicable, or the applicable provisions of the DOD FAR supplement +% 252.227-7013 subdivision (a) (15) (April, 1988) or subdivision (a) (17) +% (April, 1988). Contractor/manufacturer is Bitstream Inc., +% 215 First Street, Cambridge, MA 02142. +% Bitstream is a registered trademark of Bitstream Inc. +11 dict begin +/FontInfo 9 dict dup begin + /version (2.0-1.0) readonly def + /Notice (Copyright 1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential.) readonly def + /FullName (Bitstream Charter Italic) readonly def + /FamilyName (Bitstream Charter) readonly def + /Weight (Normal) readonly def + /ItalicAngle 11.0000 def + /isFixedPitch false def + /UnderlinePosition -109 def + /UnderlineThickness 61 def +end readonly def +/FontName /CharterBT-Italic def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox {-226 -236 1174 980} readonly def +/UniqueXX 15530649 def +currentdict end +currentfile eexec +a2951840838a4133839ca9d22e2b99f2b61c767cd675080aacfcb24e19cd1336 +739bb64994c56737090b4cec92c9945ff0745ef7ffc61bb0a9a3b849e7e98740 +e56c0b5af787559cc6956ab31e33cf8553d55c0b0e818ef5ec6bf48162eac42e +7380ca921dae1c82b38fd6bcf2001abb5d001a56157094cfe27d8f4eac9693e8 +8372d20358b47e0c3876558ebf757a1fbc5c1cddf62b3c57bf727ef1c4879422 +c142a084d1c7462ac293e097fabe3a3ecfcd8271f259833bac7912707218ec9a +3063bf7385e02d8c1058ac06df00b33b8c018768b278010eb14c8a2d9de5f534 +6241e154574f05c5d4debf6ab8b91b9d97be3b1024ae26ff49afe265c222a2f3 +8435e892b6f620e6acd1626ce4b000a4910d27bdb3d3218b1a29c84674d2cdd4 +73333687d44eb341e1dd74386f2c9d101bef2b4ad84c9ce13dcd5ea93271b948 +9e7fadc176fe719d8f540ff10a3f88b43b12639b977f9f785903b960456c2fc7 +65636f01c810bcf232f4a0e7b467e0e6a205c364b9a3636ee364fb5da2c7c9d2 +99998de85150ff202bf996bcbb1a8348c01b994de5e2a045e8852f5d8c7b5958 +32db35f8117d5f2c3c6172b9db298f805376b0c16b08f899036a97f46c682ad4 +8523cd6f891c4246a7b72456fecef8c3bac6546d9736b0c95300d8e0a167e716 +07004880915b36ed46753537c104967d55de6d93d4b6f5964107a2a7bb070c94 +178f42508a2499e68c43b6e999618399aa4b3a0d7a0ec2ba5e44e59adaaeeeae +22b4b53d9ff6bd5a3a6982ec1918f0ddbceedf4c2df589f76b7af1576e320205 +e83db7b1467757bf9a7939188cb8ab8047dca6d8aed96eef3ed23253532868ac +73bbb7a043724a109287b1b530089e2750aa637a8214986518d8eebe6c8e471b +b753b104daeedbc7321870f1d8d0b0b3bab73a780858250e53b9c02c67ab9e45 +89c5b9218b0ef3e71a579a9557692eb739cc2adc551ff5feef1ba46fc74600fa +9a6526b6344b9a796b7325fcefb4b0f3718f4db9cb8baf11caa8297936728ac4 +07cf32d42f21bd374a406e9b361a7bfb6b076f27b478ac4131ed51f982c369ae +fa4b731bf39eda40c3ee53380f218256700c8954216f024856c98b45c60d6bd0 +3103216c87596e679607376444d0a98c0e6f65d316571885d3edb6af173a6cd4 +f5bd7bbb31ab5eb2c4b949635f6cb54b753fa93ee75d5dd263d3ec03f0f431f6 +3e82ee830c395e11e9807f8b2451529dcdeda2f350bb28ed8b9a26198d08ae81 +41b78e3e5a4be3187059332b349cd7e697b91c7355aae820b1601ae9afd931b3 +d6625582f53a7557a45e6033fd7f112c38ac5788f1d28861ca94cd5bf7f5fbb5 +69c368fabda8a858241129b39626ee1741fcfc9134a8f119a3471f17bd4de302 +1d1a17d0823e0def021fa2308be0e1f753f34d5e2688a4af8366579680010d3b +574f160a34e7dc303018447a70fd10e401284fe22ae0c5084b1c3e3fb27adcd8 +522b71ed2740edb1e314659fc1f1658e25d8551fe40bc8a92037e08dd6aac616 +787b28d57c6117d187f31f5831e22ab3b3f45c625db84b987e761fce4d00facd +e591f83e47ede46c56a2cb14cf73af3b40df07291a124c621f7752b0fe697b87 +f111339052f3e8be67aad303fa5913dd08ef485539c1ce5b1ca0a9318c09fcd5 +d569f83386ab0f4348781a662d46f99c7b085e1f9856f372133016cd777c55a1 +38f2a3cc79e025c3de4aeb5def87fa676f4ea907d3b6827defcc666abedca940 +6363cab5a31fb018412d7bc13bb0d3f91fc86c1744a29e73e52781a82033b421 +38e8db7694d78303f9f6fb59172927a94ff22aa95b2e0c6c54a5238eadd9cd3a +80c0ab961597746205f30bcfe0a642d8b2ab71769cfc9192a0df91bdac956c4a +27d4581c7a725f5fc76fcba301bb2ab56aa01197dc28d200aa0e60427151184d +37502f91e0bac37c76a5d76f943fde648921d77cf61538eb19481311d24ff78e +0da534dddb4a64f68627f9b2e5b3febb9341d9f2f48d11070be9a0fc0888af20 +2b7775dca83e3d2fc50eeb80a568c70b1f96a76025ccdd780d5bb12aecfac4fd +738b10d148647d8f995cd73ea8997fd4e4d98faf7fc82c5add2fa0f4273c49dc +025b272c533be33b596c6107436f65a12dc02bbaed1e224c2168d8c0bea461cd +30f8337fb71e50fb445b08af117fbf875d7087c88aaad2798052abee7821343c +cbb8144b311e786ca5e0c5c6b13c5b40bea160846a6667fafa4081a52e5a530c +0bc1c2b4aea2f382aca7a82d49b1e6697285a9c0ced2d93a08183f2e404b83b9 +b5645a1b0a17ba09b00b2f63d1c704581bdc49ab8e6b6f8a32142a98e71cf7fe +94688a7bc72ae1d9cd1a4721a233301e6a2b3eb7622ab403cb8a5f3e7901d1cd +fb37f775069a26613141a9fda356886aed6c743127e79029e44d99f16f9a2cec +caa9a2e52a10d31a539aec1d5eedfb92c55c0aadb1251fad91ae1f6e5fca7dcc +591b67cdac2f5db5076a284729b4d91c2c37adaf550761994a6a85c7de979e1b +c844ceb236036c74e82f0aaa1035466c7dff3b3c1d7c188fb0a04fde5f4da0f7 +3984f9bedfa4b1661e795881626faafb3134d2e97ab80a67e8f7b1e6f556acaf +082ca02cae79c53afb123a9ec85eb47c90180e3cdd94b0e885255d3a0538a9f5 +c4329dee17560596a0fc43b261e1ba37ffef73984176067e5051c7dbe821d9de +f359591cc4fd763bdffdf8804c46f0a169c575bc52e88482adb3a32f0d218b85 +58223a150946a0dd86dd4f33592b9872fd65261795e55f8c96684f072cac3031 +dac3af8f0417bd93018663f97e53fa5ab4988bc3246506021d64d507d8d4f956 +1aeafdcc881795498a4e0300ea0095a99ac1c42f403be8a7f89a10fce5d4a896 +16320456d3edc12ea07c250b4953ba4d3515005cdd0317f09508df9610932e42 +6416be6f8d2c8e9ee791e012f39eb5e9a86e62ecc0167b23ae2b8d067d69497d +cf06f38813fbe917c074ee0220f5dc269d399e44b81a2d47af16388b04f56451 +f720c6f390967944ac37f9ab2205eb22b09bd79b9b3eacb474b7522f180b3692 +26d8155614888de65df4c5f4b8ba0698623cd8ee03095851e745bdacae93b61e +c7abe5bf2e1ca823a7c92e73a5881cdd3ea41c81a25006a2b6089a3e1418f845 +f24dd290182f88ab8dea04ff9e588765194a853938d6528bcc0c93479060d7c4 +174aa25ba770fe75759f5176b3966ee5ee1ebc90be89619daac001f265abde1b +744a77c17f27e4dc6ef11f8cefc30762b1df45f3b0171e89fc946888522a2fd7 +fe99080a4657590765bea88611d6168185783c6e1193c6f6fef0b51f57e2b918 +279e914b399d349bc7d340ad29162f348bd0fd9abc05fbbdeea438aa1d4fe833 +faaee9985210516c3815c5f389197422e53643b6ee611efeb7ddc0809d90d8dc +60ebcf5e59151fbdfab5673ace9b25cd6c532d6a85cb8b71f3e7d0efdc6dd638 +d7b184cad31d894b3c6904d1f8bef59f1651aff763b7bb7ef92bd937941089a7 +1363df588ff3baa6336cd32fce37446d963789b6992f1aacb6cc6c6dac47fd84 +9eb66b085a2d85f3d43598d1e6f17dc645b5626821f73c9bcb70d5300cbbcad4 +e69bde0e139df7768aafd1bcf7bfe10c7370c3f66f42b56f6eca859e0105246c +673fb74cca5eb7ccb0bd122513e7955ca0cad2a48d4d5b0fa78532e9ea259b4e +9d3b5dfbddf215fd422c156a82f41cee7a5fcf841c5a28acf2e09f8d20a3f85b +dc66b96e4d5f71367895c7f520359137cad68d34b1ec1772e0951533dbf713c9 +cd4bb649519ab25aca75a3c38cecdf29be2aceaf80b8586428e368f6076ea448 +6023c5138e218fab70309eab295f27897e7f6457f6d894538739480b40da87f1 +bad935ff9a731cb956470666c96a5368769a5f62da5382fbe6231eb6106ec7b9 +06993ca42555866f94b2b9542b1ac67c25d815498849ec664521403e632b3344 +b5a5f38b4f39511b18ba564bf11e029e6443a6e77bfac2452951f214c0ffa2b9 +5df3e7208d444252fbfe051c3b86ce17c1b75ce2bf470e574ab3915408f75606 +dd766babb7919f4fe53446987adc1492de2d0a523b065b2df44ff88a9857f9b1 +4e97530c71b24c6d5c2fcae7ca35d25c7a52480d3d39990d33027759ad680de1 +946d871828002103d9ff15132dcd5085fe1fa0a1e64e933e7f2b22a19c19b260 +9f8da389c9564e68dc5036f499ff5867a9e35c4669611a725092fb992f358814 +10831dc915fcbcdf53a29579dadee4339637efa14964dccf2764410500044bc2 +91a0bdc49471e003aa38338999d730a17496b2dbd1f8614304102b58c6f14987 +f8d3c9cac17ce1c79935174a62c4511915d9aa3c9ef72ca6de78b11be2af1581 +c0252387830b0ff332ee4afff2e237b00086a2b87e9df2033731fd99523e39d0 +d60ce7911dd70cb6f4f26ef4379a9c55ddd5fe215fdae414a3c369b561f6b437 +4dc7c4108c63d1c7b18476244fa6437aa6a81d301512a8dd7ebcfa132bbcb96d +08d11250fa3461ce6c97108c4f765a2dc5da7163b0966ec518c044cefd935acf +4f9336048a4117e4b21f17838d674565108878a22b70685a9cafca1ac853e07e +fb1ab984a4157e782c8de8a853c4a5c8fa87e680913f1cbd6d0d9cdea2f31465 +301b18dfaaaa7f06ab3e920a7f0d0fe32cf7d724455d9aa4fd77fc2b9bc06776 +dcc9a1c3066d63c7418b73e366dd57729031b4b9f0153de94d817d098e0c2367 +4a28f92420e632926c8f200a9fe2c3ca7fab8b7cbcab653543945b336b22891b +f32a8d52e1857589257d0c734a99f42620daf4a42289859745b90fa56151f3f7 +7c2e2b9ba4b3d462505f4bb5fdc5a38e06154759696a513d316bb53e38afdd77 +3cac55f4ac834f18be1a2fbb5c12bc8907ce798d38ea3a0b791c8856222be825 +9c4c06adeb8cd437eb2add7352d174b566a2dd8e915b0ee7152d7b08b757eadb +315739e4ce1c8676ee8f6a66eef00c40335e2dfa73de87ec7aef4bfe5a5a1a48 +709a677033d0e492394db8cd9e811b90ece4af7f789349ad3ffa1e7075457e17 +092b0bffb126c688e1d99cf812d82b89f20d4050056d3d10eeefaf878b3ba1f7 +513cc33786d03dcb689540b672c15a5cc6988c276e0408a809695629421ffa77 +6d2cda1ee40457c46cfdc19b160f3556c3ecafd490f70607102341dc40b48f25 +f2fab15209b150b8b82cb7e2b0ebc4fc6498530a5821d1b70017e7939a673ce2 +a79463e86b2a212d1dd39a31350a204e6063b4c6484f2dda808d5f466f1360f9 +1edb717f124a1ac4845e1424dce530678fab6a3075dd2b2a3a2e666c9e49e998 +3bd65b42f1ad7886ed0362b9cfb087eb222f0191ff0ce6d11c8609af06baaf34 +0af3b908e01fa9740e646376971d5474f21d0a332cf78ea3267ff313c679accc +06879098e0192b377a097bac98e52299b6d32ceaa24384ef84b709409ddd4517 +19b13a85ada29bdccc2425c46ef4d10f04ebcd7759421b7efcff9bf7df38fee3 +66ea44b678dd9c5d055e166f6722b054f3cbd268082af0806549fd3a919bee73 +b632676b646752edf3ae68472e7d4c7a87d3eadfa074d5022da3138972ffd753 +d78f2d893fa44b8951a97241e313e31531b11265eeb52fb28a3ede30e05300ea +c22086ad788ebd03b2fdd0110e21be847011e923c9c37f9450ed9d404ac610fb +84f3d6cebc8729520efbcbf1949945dfaae10084e0c6db3bf0361a2b9ddd0324 +d6b79165beeed233cb4776c79bc7aa9cd917e5f6aa1754454307c5ea584284f0 +13ac412e7ef4195a62f151343ad880746a13d6ba1e57deb5de07773398cfaeb8 +934cf81a57dfa9776128a809171b2040fb1f426899504c9b53afad83c6c2193f +63065e4877e9d3a2288ea7707ef72aaaf74558a55fbab084f88940f2450462fe +4ee12c4198c5bed3805189bab8f54ebe47b12740744cf6a1bd6aa78f754f49ce +1c5654950546fe9f074bd6f569a932a57eef268ab939b4390558ef73f52b281c +f8d18f53ad39308eb63ca0733608f305a885df744b1759524d8f254e06c92114 +e630acb801ddcad6688ae79a89e071058767c8a6cfcd97caca4cba84948218d6 +6fa9bea2ed5565c457eff828ea7dbc5e06189e739be994d73d0e37c71d1db3a3 +3ce88948aa2f93c8f1b6d8690d772a7b56896c23d32ca93644313ab8ff2c38af +0b642b8a3590b309d47c8c235be125d4e2abd0d1fe14d5f6b78ec919b5bbc038 +ec4de828590acd1594189b78d888a3633d61292602b2444cfb44a55ee473c42c +69f584bdc89b6d9403157b41581710309cf709d4e42331d4459fe265da32dfb1 +e67563e50db6ea586b724269746e38fc9d9ff6a734d3bf5d79a03d5bfc2a94c5 +05f5b1925bd0f06d279c99bd7ed7670123feed2465140bb84735422317b4d5c0 +53bee297fe4e57a74881ee07df30f4da109dd81ac589ac0d1492a3c09b49e197 +c7df70b8451ec4731365da8829f98df987b5f1e12d85ca0a00f202bff3c88057 +754c0e5b147e3456ea6dd4b2dfa4c790e72d6e89b997e7388514806626d25668 +4820e2c7a09682734480ce102786aa027c246a8104044c1a8664670f3ce8e62a +948f50d64f818240b5e12ef15e273bf8b0c2785e7050512cf47e35bc09a39837 +8ba0ce8721f1b6f53d743e85c1963c6c1a245ca4ff5495b344413b9ab40e69c6 +bcd935dbd0709000dfde5b7dccbd2f5daa8084cf4b21790734ccf0b3adb3388f +f30f3d598c61c6986bb65f5f08a75485a3d828f6f28afbcb9506660e3fefb6c3 +5c6c098d016ece80035c78941cb0c80eea928e8d8c54513dc0fc105ac192dd88 +b070899468cda46d432c3398c10d201da2b3ce8f44d331272bd4d2a326bb2f10 +4c24972bf3a0fc57529074eadeb79b5a737f53b0cf1ca58a0d10f5b70085d9eb +ebb7162b567aef990ec64b2a3f6eba57c6c83f1dd30f515e176836de4ab03d2c +3a83c08c8b81ccf84ad877f1d7f6cf7272f0cbcee2d70a5293855a20ac2fa8da +064681418e00bc1d83755657f2ebc370c194b3ca801871b49e110cc737f7efce +8cd43526a288db08db08d3cc +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: CharterBT-Bold +%!PS-AdobeFont-1.0 +%%CreationDate: Sat Nov 3 22:32:22 1990 +% Bitstream Type 1 Font Program +% Copyright 1990 as an unpublished work by Bitstream Inc., Cambridge, MA. +% All rights reserved. +% Confidential and proprietary to Bitstream Inc. +% U.S. GOVERNMENT RESTRICTED RIGHTS +% This software typeface product is provided with RESTRICTED RIGHTS. Use, +% duplication or disclosure by the Government is subject to restrictions +% as set forth in the license agreement and in FAR 52.227-19 (c) (2) (May, 1987), +% when applicable, or the applicable provisions of the DOD FAR supplement +% 252.227-7013 subdivision (a) (15) (April, 1988) or subdivision (a) (17) +% (April, 1988). Contractor/manufacturer is Bitstream Inc., +% 215 First Street, Cambridge, MA 02142. +% Bitstream is a registered trademark of Bitstream Inc. +11 dict begin +/FontInfo 9 dict dup begin + /version (2.0-1.0) readonly def + /Notice (Copyright 1990 as an unpublished work by Bitstream Inc. All rights reserved. Confidential.) readonly def + /FullName (Bitstream Charter Bold) readonly def + /FamilyName (Bitstream Charter) readonly def + /Weight (Bold) readonly def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -109 def + /UnderlineThickness 90 def +end readonly def +/FontName /CharterBT-Bold def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/Encoding StandardEncoding def +/FontBBox {-166 -236 1262 963} readonly def +/UniqueXX 15530632 def +currentdict end +currentfile eexec +a2951840838a4133839ca9d22e2b99f2b61c767cd675080aacfcb24e19cd1336 +739bb64994c56737090b4cec92c9945ff0745ef7ffc61bb0a9a3b849e7e98740 +e56c0b5af787559cc6956ab31e33cf8553d55c0b0e818ef5ec6bf48162eac42e +7380ca921dae1c82b38fd6bcf2001abb5d001a56157094cfe27d8f4eac9693e8 +8372d20358b47e0c3876558ebf757a1fbc5c1cddf62b3c57bf727ef1c4879422 +c142a084d1c7462ac293e097fabe3a3ecfcd8271f259833bac7912707218ec9a +3063bf7385e02d8c1058ac06df00b33b8c018768b278010eb14bd7a94f4c669c +a6b8f320084a6ff0cea7a82c6bc01e119e48e92744fc22eabe58bac145836db5 +00aad7101cf0e487e411f7212893fc9b6890e27c09f84f19524d06b24fb1088f +eb308123ebed40120f13b3fa6221b5443228e86a6fb883f598affe30ab3f2846 +d442bf0862e66fd54a9e87b830e6b2e89ee1c1ce38ae2266805cf04172ba69d5 +e70f1025d7dd65765b82269430e41a666d5d391118e1c7b2aecf222b7affe12b +a06a2591bbaf24df55cc1821a2b52f1250478cc8be959f6882a68074991f67d8 +d6f14bfdecab86780290182e55d4a6528ad82bf146fdc3b8933251669a947ed7 +94aa1570c0ea25f8f646c1dead418d920615e13689823d37b046fd51617cf3e2 +c3c778ae5e22002338f96bee030c98c73bfe0afbe748fe176c034eb22da3730f +923cb685a5d8d17f206f48fe1e6b098e5b3f6ac2bf7be6539f6150673b6cc8da +c472b4c0483f2fd2f565e58e5a7d44e4c8ccfdd48e0f47edbf95ed3bb6fdeadc +20c6a91b9bbccf55c6f3664d71e5cff37b7709a4fdcd7d47aef1f12426683007 +f64f67065fefdac4e9e24268fab04b44f9c50e315130a5b4a4f3821207c2e87d +fca7a22fff18d82921a8d26d0cdb97f1644d00ba874ce43bae47ca07085ef9fb +cc2a8e49087203cf18f349bd19900dde778429534b1b4068278354d812f72e89 +fc055d483872f00a0eae6a3294f8a1829cadbd6c7c0e861195ee54335bef8bb9 +0ede0212bd9e536d86ba1503479452987a5f59754eb9e25c7cfa389aee5186a7 +ab03e447f76c5c1d43e42275d2e81841e04790275e03d3c95ca8cb1701756b0f +88f5d96b264c865343901cc15b31732094535fc393e0c81544d8ba3cf6c7453c +3451efcae6d6a30148fb75cd06fe8169395e886e071c3aeabec200fe0ca9148c +1165d0437b84a77c26ff7aedeb09f26db6a7e4b817f12294073458df365b2fc2 +6fa5929774e3d67fdfa014c6cbca33bf9a19688fc416baaa6e3fe5cb20c58dc7 +292a588810860142d62f4436ec6993aea4b11789deb00b64f239d2c6e8b10dfb +e21006dbe9f6ccc7155010307a56a01e4bcfe452735803bfdd61e288e9c0d536 +db47e850da1d82c35c8bab33f6d42ad34ca19f9e94c853948d906ac59c996d23 +9f6e1640f4bf13e2b8059f060087e0062a6e166924c7b210c96914a3653d7e52 +74691a7907f60703cedfccb0b95cf72dd007228d7ab167ecd4c6ac341b720f60 +f296902b98ef4fd2b1e176d9cb23a7855193b78473215a41796daba9931aaed3 +cbf6c5f8296d44685eb7eb4d8801956bd6003b8048f112cf71d9908fb712a35e +54fc66366cc93cd089c9dc6678342b675f9c5bff533cd74fde5ca637c501971c +1a5015920921ba7511ee41824ee5a326853837d82207f18b099931b6391facd2 +c83a8b7d675354ccf9fed41b25a943c70f916dc68ed8fc882e834b5424351aad +c23466adb467f0498f3ab0d27866e2f77a8ca7c0d6e3d55f6cf2dd714f6d503e +ffde34a42a83938c3415aa1a664f887c214125e3fa8b1b9edbf53d1bb372d669 +e9dd9eab1ff9456f2a7ef5dc93e07ac629e95017f1f52bff87c831ec09898c42 +b2a5f17a920b26577b7d1e4701d0d9d2056222ec4048da84250f20c05b5775b2 +e88d745ad1e17325f4071b183447e5082ff2ec70cb86162612baa047f8b94695 +d43a966177990e55cc8806ed9ab77d81d05fecaa1c3eb3667c1b0288a3ff40d9 +6c9845a841eb3b939562702c48f1f3bb2e751bafc2f72052553ef2364e18a9e2 +fb163d42537c3261fe25f2eb74362165403dd10e8cec77a56fdaf352887f8db9 +f0597fc2daf664ea6466c689586bbd0e632f5bbbb393bcbaebb992023ea12853 +c8baa2e7550435404ef388b09500bfeea87ab0c87356d1c5b824d5206cc15fc6 +b518be7f1dfe5ac3b02368ff6cc124da42ed1ddadb90f3ab2cedfa52127d1e70 +d04605b4c0380372f2b30884dfd23b18e79958e19ce8c394fabdbb2e767b96c1 +f448f238829d40a55791c7d4e005738da4c793bb5b8b43af181c93490675849c +54215f00f4d8489f3b0dbfb41ae5a2c5231cfb3cc4e3a040672a042a6c6a0258 +8d4bf12d29ec21d7312151cce5e4db945e4816e17b5187dec121a31e2f847f4d +28ea91d8d33a0ada22d4fe570c2aa4760bf9c567900ba197d667b43b50c2496b +7f4d811b62f346221311d991327261396a8c02eb0989692db1e8bf8e84998545 +df53f20a30322c316e0e642aefafad6753ed096d1e22c29c87ce7fc92f3c9a32 +a0b533560c6bf099076cb5ecd6086066c40fcffb78115773cc9b8540266e69fc +8e6dfca2ca33c23142f64a016f7df6ed638e291c45c6c940133f935478556e86 +1b2dabd386b83ad6c9efc43763599a83cf0af1eecade23b2d55543a40f56ad2a +6345b12f46bf37619bf86390d4f9b94ff4fdc79a7b4152d534d92a2942e1f4ee +d960fae3301ca9a014e54c9717fecc688ecc9b11e44eeeed4a33b5c0471ed87c +b8e9fdaa337f060ffe3da01403cc571c797aa6a43130c76063fd5b4c582289b6 +0da4e3d5ccc62963849d4015fd44105bf970811a718e9c788e3f4a263f7e4ae4 +c0266c23180985f7ace1ea609f7daffe75c9071994ef4fa429b1165a371e1b4f +8868fe15eab1778b257fabc2d9bd837ad4b5ee1373831599f038f30b135b5d6e +181ab15c1cd1c7a6b776ed4ba0b140c7c3d1908e08becb3e0b6e96e588abee17 +19de87599f93e97ad8ec012f1ad089e08b9cb3adcb1825b074f4239d0c1eb4c3 +d2a8b9805797e3e0486c5cba9487a432cc8c0e81b1f685886ca8a81818e9c68e +ecd58b18ad5dc311314bb9e466b5436d54bf28c444f3582f813d3ab9aed071a4 +4111854147fc8c7b44b5ded9c6e48c039869af8fd15df8bf1a87ed86f2692bae +2d2b6763eb61364625915499060501628c39fa1a3fb067d5a0bea923b332c272 +fc6c52d138787b21ce3b2dd02c87db9b912fea6350ebf3c1fd5174fafacad648 +bc48af1eec73debe486f960a240fbf10e44c677c01920dbd3ca3f0a8f1767915 +d35cef015811f5db640cef44720d8adb55733d866200c7a4b7621f670dc4a4b9 +8cf90a792ce94ff98e0016a00b2a97ed6b09df04fbb8aa771aad84b9c601d1f6 +2a53d5bc9d33175ddea40722fa605a61de4f3e289cc9216e5afe1307a61ec039 +af492a67abdc7409315c6fe728c955b5967f4c2740331e367be156d925b5b250 +7664487505faf746faf64ba95b42a77e8ea12b5f496e684bce8377c8ae93638f +bcad8abf2b8c76dab98ae209da7bf5dd88cd253fb104f7a8f401034aa3c49471 +f8b66e93483b7af189043f48690f119b488809bfaa67d31335321fbdbc2e7bb9 +f16b48531976089a9380d4751bf0437abace507613333988d12d12d6a27cbbb5 +abedf0171be0cd3fe0dd3723a0dd87ef45553bc16b928d964fd3236951f09d26 +25a6c1f2259f1666f5c962fb245e06c9ea545c5db0498bea4ccd2acf2e696d90 +8263bb69746c674dc4a4e0c28303d9735a888ab9f4c8aef5f322830ce9989dba +41ae4846b5fb2f959c5abc5a899de2f217192cc54fe7930123b900bb8e9d3b15 +fb82da3a7a0a204d2b0815e322f6eb53636c01b058d7fc4939dd57c6d9d45211 +2b9de60c2304ef9359b73ac6db8c8f1ba15d056fc14be23840dd832f5c75fd3f +af117dd4dadd1b866af7bb3732e514ab1d27023ba454ab5d53e86e8809f5a08e +36b94670457249f2d286bd67629551de1152946fc7ce1df9055434b55107751a +940073e3f45bd57dc56aea60b3b57a03d848f1457874885b4b30a1cbe6e91bcf +80b6653c906b32be8e4314b9ef98ee9a67f7b6a63b0039a9efd923a83ebbdd82 +41a901339db0b30e36a0ac65866a4851fc4df463ec3088071378ca2ec375ef11 +e395b5cee4fe8b2a0690adaf9a708cc0d4ab7d15a5fc32eb74c1525c789141c5 +f6c083f3b65ae84db5182f978ae21694223dffd73d79233e215e10ff8ad24f29 +5b414c469615edb8eec7a50f4a2c4be45c1809e8eca3cba1a63f7af293c244d0 +2a5c7f266d95c4d5ef86b131b6db34a4a098780336ec2e49c8df81079c06fadd +b63870d65fab990cd9b4aebc0c086bffdb878bfcb938308f0b6feec86748c140 +92f89a4433eb4966002592dc50fd222083eac81f20e6a16a2008adadeec5019e +490f17482b5712cd4c9c6191d8a7e7db59d3e898c18ac105300b493a71fd37c5 +757262b4580ab2b7f25bd659aa670f2c66f0cfeb4a2663a4aba3f340d60ddf87 +a807656e7f050c709a5ed08b482f669df427e4a7d433b10ae1f646c84d4ab170 +6e6ae529a4f5f31272d4264fa9dbf1d5b63e0981a5fb8655bc9cd60c8eb6f359 +f905196802c2b44bb09eb514e082f21fac746c3e4833fbdaa12d3027d878c0c0 +01eb292c01ef9bfa29da0f0996156a7cefbf66ea0f5192a78a933b051c3e90b4 +07d98794e7f7e8afe04630d1636bb9fd29f0420687928b4c605451bb374a72fb +1b38c93ac1bc643bcb97c259b05714ccdf8201cf19731a210169ea2c7a9f12b8 +b193300cac5e1450ae1850d85810603fc5d70b9e5295dd2719620a53f83a3fc1 +a596a726619e1ed484a194210f87733d456ec653377c4d11f81cc873b92c5966 +ba46b9204d238b4005bf34a548c5fcbf6b4ceb7c368827c79e665b7b1b478082 +7678efffb167c71695ebee611cf4715ecec48d16e27215894f53ad10200f4315 +81c225262ffefc429ca585b45e44af35bba48f652ec4cb2bdadb299b44a4dc24 +d5b7ff46d49ad452075391bed2b33986a9a15cf9e7e1b0b12eb5a6effd04ccdf +7c9846e221772d5179146b14f1558b07e657de48d9c04a31c252e836026c91d0 +72948945f6dd59732446d3d0f972dbcd024786924c1510293c560a3b026d9586 +68e97eb99c918ebd3598c9b8649991d7105be39101547704f049ed246378d442 +c0772082cec793bed9acdf21da00394a5d980fbf7f789b1b60ec7877d308c79a +386ecc5db97ecdd9f6a7360a27313fa9061ded6869b6f9c1abb226013cf7d864 +169f098e7fb6c35bf7898935644f46eb3aaea27e07c9ecc45b5b9efdb3e96b77 +8c1c9d551e563d09a7514f1277f56cf8929344855a204c3a4ff51272133f8897 +cbac327807e71bd6d621c1eda8e2c2994fc0f8153365dd36f99345d4a3fd28af +91f946a7e78e5d7d4ff72267d917ede98fb980f2b36cebb5099d60cf608571ac +ee46d14ff742d25905f0f77bc597ae358613addeb05422221de1de2cadded325 +ec5a19f1f1e6602d92906e39b32be930ab078810a618d78038456fd4e26d4794 +b32173a923c14affe3bdec3e5f0e9ce0e271a83dca29fd5433eaf4698aea2f43 +5ff75afc94e01d36a4656a980a347352d1d668f4508c888a4a1d9c9a16ff9fa6 +b874aa497befe3cab4b5bc033fb83ae97ead9104bdbb966cdbd5c687768d32bd +46406d52fec0dfbb295e708fc7257b0eda1cb167edf1ef9230da6cc71ee2bea7 +d417ae84a7c734916477eb9015ddf45fac010624c5eb717001fffc6a65f2125e +bf247c8209336efdb9acbec6a5301d1bd5a3a93a0e4303fcf861e0d9512857be +2d9b9bb1a57a0424fd3b12eefdfb911b57da4fd1b40e93c0b359f476ef454f53 +e9fb4f0be3107a73d341962f71d47eb16724bcfc22688b16acf957b27b2f4078 +d1a9739b3ffc5b436c94ef36bc741390eb753f654a34db7e31dafd3719cbea81 +3be67feca97068d83b667e47b144999791cd532bba996d0607ba603116429594 +ca3df056897b169b29dd0daa2167bcf9f0bd719cdb6de0883214b8eabfee3124 +3c7ae3cdf3b51ffcd2703b9fe1277b4759153f2bc4fc3ec8c7575b62c91a95fd +268f253ed88a650433f0595f835c46a3e1ad77ba4cb034485480905e98cbcfe3 +f31b4618c08f20385f555b64733962e388983f72b51a9ff9e402b54642156de5 +ab5a20c8be56350bd91822e24327e301c639c3f1d8ecf4ec69563c6b7ef84435 +3d30b84f04137cb940332dc13205a35bb60d9dc2fd3947239d86e90037323788 +ca4a53881df6572881b3d2ed86fb2f12d53466ddce8fe28afcccbb82e11380c8 +2720cabcc5ea167057986fdc92d9c2d19720f273201168954e01e98e4b3d1c07 +f61a543e9f5f9e4b8dcb6f5c68bbc71433a03ec114a008e788323cb3d103f73f +d8d183152d66c4b94dfb245d2de317ad6777733708b9c4f21652b43199f16ca7 +8c8919274cac6ebe674c2a9944d0214b6c4d0bfd2ed53f95365386a4a23c615f +53204c215a6917b522808ff7296805dfdc3400119d1a6707a701226d00deed93 +7dc7c27be4f1c2d8762257ef835aadfb36169439587ff36ea4112ee4e1ee5281 +d6d377c9938d12492fb01ac8cc2a32da079696950da544055fe3caccaedb99ff +73c2470c0072e8d8fb4cdaa30b5edac07fc77eeff1ca6fc99f7c98b8531b9b89 +1a92bc4d5e60bdf2876cb2a38a39ed61fbd85c477dfd2630c8eea78cbfeffa30 +f7cd12a1e7c2519f40998f088aa95976dcf2d24d63f7fff567311b2d72ec5000 +b21547ef1410db043fa5046082dda5d8503dd3ac23042607eec018508e956c8c +1d539621705ebd749c4c8f73768a635af8a12970151e9d20cc063e2cf36504d5 +6a9947d4d2777ae3966634e4d794639cc04591502aff6171be06f9f6b6beae2e +f27cb5fb30c80fc31372e03472a515a4307804398619265ffe69b9f6af61669d +44c5ce796d73beecf2abaf4656c67f69c0ca1e955a1150c4739cfc223477ecd8 +31e278ce9733490f6e72bb969636e693d2dc28e5f6f6db068396e57b04119798 +4ff5bece83cc076ff11b7f0521cb12be4dc41700d2927bedce51d4205d4251e3 +e5189c2b491c440067a9f2cf4bfb4737139682251d331e3f134dff5e9819fb1b +163df195714a89dd883c27e415c4a28471e938ba49a8d0dcf36827e0f0d92a82 +a95fde124270a7d583e5f020d4f01f85eea60dfb15adade47281ca2c3df2c0b4 +0b5c1aced49754eb8caa34f9e5f72e4130e94cb4325972136741623116e72a75 +2009bd2b69351c719c9199c155da84c2b2fc68271321d6d2ef0fbe7e20acfb36 +26ee3130852bbf597a12ad03d62447c16a879ad5f87bce6e784c413e0037173c +346ffcace5e72a10ae03d507ba5eeea3891ac2a75ee3bc12c1fa2c834c9d624c +af0d61273287d65c54c880dbd8e70cbd38ee005cdefd2420568d8bc9f904493f +2db7b3a7db69ce060309fc190932ec71ba052b471bfc356333f80f354616168e +59d736e3a7d72778eb1d61f057b0f78899897262959bb21ca174750f3184d018 +414d03ec11dd072ad7537d6c86c83e3fd4f0626c3dab1b58cf201402db828b72 +a376486ce70dba2eb501ec596d53c401cf5f207e8682345170e288c91666a68a +6e388308d2ed0412553560a138e89b348c163e579fe7e7b4eeecc2be7d92e8e8 +74eb99709b6f0ad2ea3f397307a8cda054e78b6963649927c8a452e7c0cb4a03 +7f0158b630ada65720e32a269b9c9fd4fe06daad84e21a1da3bf5c0e121441e8 +f74e1453267b30d80e563c714fea5b434a620d39a1eec98bc2834bc0a09916d3 +dcaac0f3f15a84196e22d469b27d3336bf8c3dc4948f189cdac87797f916277a +f26f91af39951522a2016fdae625f984debf15666bd7d455ab586881a29cddc4 +3121e2ad7186c9260387a459274f930ff73ef6705bb615cd2e5cb36230100d3c +daea25fe9bb5ba1e3c12b58731cf84efafcf0da3f90fb5214e8d946d0ead7641 +371b712238ad592b1870e9e7022a2254922b7565948155c7aceb4ff33b599f53 +1d4e2585d79e08972f0bbd833459c78b8591513983c2c37ad69528fdf7bbe489 +45a2e91bf069e961c83d9b3388acbef56e8436a96be38d801f2ed3d79564589e +aceaf00fa6f9f0678c0783e7065fb564d728b2b6ad333a7069ec57d2c592853f +a9f9661363a84fb4ec13b1f4a6c0ce46f140193f1009a310fdf28673dc97f635 +3c19d8e9840a928574e1fef8a28a605dd6ccb1e27dc97ded4d71ff8aa2e3299d +b7b9b52adc245a2d250455a29ce514c0e877fd6c31fae645569097692a2a425f +08ae35cbc5a3d6d6337c1b678a0073272437feba0be8202bdd8c6994717a0be6 +89799bb2c929797afa5573ef8f1201fd3bbeee9e412a86cdc0b328d008b9837e +7571ccbca61997b6b5976e5e01beb5be7a2398632e302527394e5a85ba4c44f5 +cb0ed163bc5d454f2f9527fd19e8b006a5e5113791cd03e753f02fed07d7393e +3850da26916162b588fefcca59a83a4fddc3ae117baa2ad9083c088177fa6e0e +b2283423860026195c09f554e9bc49e2668d87fbd70ef80a4758c4cb095471b4 +d333f0b987325ff5a49b3eecaf21efb7fc0383aafd550d15f61311467b231a27 +742a16c9faaacf028449afda2259eb2a731af240ed5a792e0a568a6bae59316d +3dc68beea86b422de03a91a3bdd4e5cc8aba994f14736584c297b8430b3b090e +f46173c38dd2504927e9606fa07c415c038ff5e236512fba735afd3ce4eca6b8 +0fd9a00b212fa3a05472920ede60457a737343d1f336e2e6fb79c74f05f855f3 +60cf73fe5761f1229e1360178f2680798f18ae45b9dec40c645417969ecd6b37 +768d237f4102f7eca7b2f7cee6f04f844a4f954df8c9f74c6255a78b2117efb7 +5ec349b9c22ccea877aec9ee4f2617b7fd93611f0071f6d550506a4625ce1d02 +6c5f63c1609bdade741110a8997bba81b30aa55382b46f3f33e73e11460bbee4 +ddd27832b779b0a8060f010fa505226d8cd07e16188c16fc843b870dc838d456 +01312dae5624107f781af70707a6f97fb64a3192fb42caec622c31f9372bff1b +1ef69c423701224c31365d0f33fbe6bf25309c1e0d00b7777096f114f1cb8dfa +6def9bfc45216320296977478f52388f3a76312350578ef9260311610728a722 +704c35bb645592416228d7bf65af15924bd6cd205ce83cc4775fd17b055baf45 +a5cc0d41737c06557d85a3f90e1aa6882f5cc0ad071c96481629ee350284bc76 +c4caeda97474b0f4c61c16292c48e68301281ba262b02921a701b258fbb23317 +95e700fc56f23fbca934adaf1879af41bb4647aaa2edd46318f6c45c0f05e4da +56a80e7c1ee8a391174e062d2d6b794ee0bed57b12724f571bc466387960f569 +05fef80fbad8a44ad35631f007f731c7b3ee6ee4de9cd07af1cf0471cb7881de +4c9532bce922d5d2685714456154e97760572439e2ab8ff8c48957b19a22a4c5 +b7ae631c0a4ae9de24e29f695fde77a7e879493f8831071af3e42aebec977548 +ee5543ba95f2e0ba99d3473305ed7e2a40a9f22d89b583bb77392abd651ddc2b +64344d6f687b413099745a41392648f0bb2b46283d1001a05d0dd0333a4e0a49 +347e18302781b656efcbb14270f1578703ba6b0f8a6841ed9dad5de1bc1b9b65 +2075dfe57cff303bda94b7270b379e08f31e43d1a3cc084bcdf14878d4353aa6 +ce650941bdfe6dacee0c732a67ff5e90e53c59a3cf5bc08eaba535c667a71e7b +edb86ecacd056ab1fc5a7625677a4d60a48f24f1ef88058f4c55aad5665be0f2 +aa077a8fa35a2f925cef44c4b0f62fb785fd3bcf95411e8d1e60337b7d118566 +ff5dcf0b75c0377dc18b3685528af6ec1f8efc37c3caaab1f2d3c3619699bfac +6de822c7258a2cba98dde2600a7a3afbb7bd62ec9941ccb99e7d0a4ac81e95bd +5041b7722e2997c20624d2c559bef729f65a5ea50d7baadbe0c915f35ebccad7 +000806682c5c097ef5edc94b4d2f363991eb61e46cba3351f98b8ca6e59f755c +5ca2e39d2578eaa973b449b7aae8cd7ca325776a7a4244e0264dd461b9fca6e0 +9b46bd9dba6d745fd66f449bdd66300e6c5bb234c5afd7903ea81a90b61bdc41 +d5f8d87c517d313438f3ef0f046ceb8664c492be8bf8e115e0ae9e6dbc0c0aba +78a78de4558c238a8e60a30e5cc3cd3c0fb4a240b13d3613b2a7169f5bb5b1db +bfee3e08cd258f8a8f1ec2d3d28d115b95e4cf3404482902af08b9d00193da34 +80240c8dda3615615f2ebf1e997a1292d49953ddf7538eaca8e317161267e362 +a40e388889c6187cdf7d7450543004fb58d9c55e6168bef67925035f8d140ba2 +7d1bee3f5b48dcf9e617debda73d6fca22779026644d4f7abc05d6aeb7ab3719 +b369339140b696b84bf543c2cfc7ec0a6e2298bf9c03e42b7bcd321625600221 +5f3c59e89962eadd9c930601f195330bc4d1f5e87542da6be4047418223f367c +1e5e7db9fac3857ab5a2f8e34f035f351ae0f4221cc7ed3e5fc728d14bb6db06 +a963bcbc5fbdbaf7122ed1054d78e6fd0d3cc2bc844b42051fba7fd8ecc7a7d8 +ae76437f7f4b586e5505bb9b0d94c23c6b1a85ede5a3b373bcd4929a8eb623b3 +db6e4d5d6c18f485fdc7dbea3916d6be69e751a24aeffb640b6e0812c91ac518 +50209709e81b58841d7fd253732306fadd662c2a9f94b41a53b8530e9745853a +8cc53e602aeb9ddce162918c8e9ca9ed3baac6fd6fbc0758dbd94d86a2e595ba +3617ad77c8b9ea334b0403a8d7ce4f239a301ba5f1ac8c0453788c775a619c1d +c067c453844d3172d6d761e8987030acb6387094ccff80c708f766d3bc2195f0 +cd2e608c0e069fcc03cba9f7288a75e5f36ed2f1ad69166e60ffbd8815bd7085 +9e787d883b5b3e953ea54e1f2d22e8072e8e6a9760e5db755d193713a2a3f1b1 +4f60330413e2b2f1014449f16a2d570a65a2ea6d784d55addbecc62c16a7998b +c6db972848027ae668f690076e7957c2e4932f69fc8f0a71b15d86dd85a76c7d +75308c399d76327613e389837257f454080ee66fd08573f39286b6257974598c +8742d16a9bc32ecc362bd0162ca5664f2001667258e2fda98cdffc3d85953eb5 +3090c0bf751761f0d8fd74528ecff3c1b1a262ff2379bcb35a90a3a50dde1902 +6d200b7c5dcb2296a023b69728e6f145c46fe34a0186aca13a6a371d7bbf1aeb +ad4f2156338851021cbe5f063182bab79f1f44ecb94da5bf5e76b66e9538d35a +1d6d3f764c9f091e2316cab99c95c4e09e5cba646f62415f23457dea07975228 +43 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +%%BeginFont: cstt10 +%!FontType1-1.0: cstt10 1.1/12-Nov-94 +% CSfonts -- pfb ver.Apr.1998, generated from BaKoMa fonts. NO WARRANTY. +% Accents are added using t1accent program, (c) Petr Olsak, 1998 +%%VMusage: 26147 26416 +% T1FMT-V2.0, Copyright (c) 1993,1994, Basil K. Malyshev. All rights reserved. +12 dict begin +/FontInfo 13 dict dup begin + /version (1.1/12-Nov-94) readonly def + /Notice (Copyright \(C\) 1994, Basil K. Malyshev. All Rights Reserved.\012BaKoMa Fonts Collection, Level-B.) readonly def + /FullName (cstt10) readonly def + /FamilyName (cstt10) readonly def + /Weight (Regular) readonly def + /ItalicAngle 0 def + /isFixedPitch false def + /UnderlinePosition -133 def + /UnderlineThickness 20 def + /XHeight 431 def + /Ascender 611 def + /Descender -222 def + /CapHeight 611 def +end readonly def +/FontName /cstt10 def +/Encoding 256 array +0 1 255 {1 index exch /.notdef put} for +dup 19 /acute put +dup 35 /numbersign put +dup 36 /dollar put +dup 37 /percent put +dup 40 /parenleft put +dup 41 /parenright put +dup 45 /hyphen put +dup 46 /period put +dup 47 /slash put +dup 48 /zero put +dup 49 /one put +dup 50 /two put +dup 51 /three put +dup 52 /four put +dup 54 /six put +dup 56 /eight put +dup 57 /nine put +dup 58 /colon put +dup 61 /equal put +dup 64 /at put +dup 65 /A put +dup 66 /B put +dup 67 /C put +dup 68 /D put +dup 73 /I put +dup 76 /L put +dup 78 /N put +dup 80 /P put +dup 84 /T put +dup 85 /U put +dup 88 /X put +dup 92 /backslash put +dup 94 /asciicircum put +dup 96 /quoteleft put +dup 97 /a put +dup 98 /b put +dup 99 /c put +dup 100 /d put +dup 101 /e put +dup 102 /f put +dup 103 /g put +dup 104 /h put +dup 105 /i put +dup 107 /k put +dup 108 /l put +dup 109 /m put +dup 110 /n put +dup 111 /o put +dup 112 /p put +dup 113 /q put +dup 114 /r put +dup 115 /s put +dup 116 /t put +dup 117 /u put +dup 118 /v put +dup 119 /w put +dup 120 /x put +dup 121 /y put +dup 122 /z put +dup 123 /braceleft put +dup 125 /braceright put +readonly def +/PaintType 0 def +/FontType 1 def +/FontMatrix [0.001 0 0 0.001 0 0] readonly def +/FontBBox [-6 -233 539 749] readonly def +/UniqueXX 4701546 def +/StrokeWidth 0 def +currentdict end +currentfile eexec +d9d66f633b846a989b9974b0179fc6cc445bc2c03103c68570a7b354a4a280ae +6fbf7f98f75adf5180cdd505cdc93f13ee312cb03ac7b00c9c4622c80d74023c +c1962bd0caf57f3c335ded6a6c36110e591128c8861ca07dca77cf521beab94f +bb761a39789af6c405eb8b495e41c5915360664d422344de89da844efdd13c45 +cb82b522b9e7256916fd366b61290914fc63045ea3c05bbd24545cc5f4451e74 +edddbe488adb69505c96937b35e2d8e7dd2a21a2e729c1f3c654ae5c10a2f637 +7885def6a2275dc695462949a67e0d187d38d4a662cf4fa12d30cca27ce7a810 +692937f6c2bc165ce2b8622bd15d5e5e6cf11188ed2932ddc14a54ec300fce1a +2c0327de4d1ce9ea805cef466ddb70a9920dddc1f8e2f221d9d2090bfce081c4 +57317529b50a73e06582c1e70a99f8b58bdbb6f8de289a738354b3bd05c6067a +26bf5afd9e8d5b25757d0f93f3c5381b94aa2ab0ed2874aa80ebb1cf379d4324 +d67cd4d37a8c124dce654d7da1e308e9f587c869b9165bf7ba778250031034c9 +9ad4034c797f53664ac1366cac4819c97988cd72b2a5ead504884e03df385254 +06ca07833e6cb53671cff6c5d2a16902fb914d92d2e1490a80ddec06d0db4338 +e69201f48df30ff6098844db96adf4231d25d1e1a9d73eee072f6a951d4f7def +a36b5b4dcfec5e9e20d0ba2d24107926be3e8a9932c456e0f879a689fa387208 +9c2ff1a0e4daca3ed065a33914fd61eb9ba9804efb5314f215fedfac4d10f767 +ab7c0c95de3a0d087c1e16ba3d172c106bb0f323173e2c6a9bcf41fed75bd1d7 +2df2786723ca827fa4af03ed625b74fbe7fb64d0976a8b7d7134d82154819fc3 +0c3abd3ee3a5048004c4494c4df1d3489d16eb3fc4c455a25c1cceb171f54390 +183a535e6f912de9680764d343394dbce7051bdbcc200f8a3fdbf8f1bea88f78 +2113b35550684ea6fb66bb732787b2efe966c6cde4253396f0e34a73bfa4a952 +e0210ef15aea7af5b2d6bae732bad5821f1dfc8f81aaba6ff77b537265962586 +c5b4b19fbc6833ecdc9821012cbac6d6aa170363bd8fa398748183eb2c6d0814 +f24f098e87f800968ff9b81581cd77675f8d5a4b86ff826c9467fb400a15fb57 +9fff9bba1148274d9d60fd8bd629ca954bf583762972aebe427a82342c9fa3a3 +8dc89c25191ff4251b321f435f820ea8f7e4ce695823b766f0226eeba1cba4f4 +dce848f1ed68c455260c6edfbece64a554fb2848da92aa08a39a8c0695dd231d +ee038a6c14eb933a960d088482cb9d16c0e049001972a2a314a881f11469b09a +aea6e1d4b920492ffd5f032ed0b0b51cfe29aa3d23d3077aa73a08ca19506e1e +6c1383c1e1158bedc186359299d32dc13ef74d7b48da5dcbbd5003196385d375 +cf69ce64349a321d18595caa6c23d8c2bdb08413aa9a3f3b4b472af45e3940b9 +6c9dc960854de53eb85bcac984cae0c7ee3f7dcf57a3b69f5227c7dcdb12892a +4a2119c4ddafb83d60d9afcf5ba6f0cd1060ee1031df57b9308062168bcf10f4 +8be903a168953619e584b6c7a856cc1d7b2022fb6df052b96ec2e8b244a06c94 +4d465913452155d95558ddb85990d3698b3ec7a9226662a54709159408158058 +cd1d2f7c2f47910df3e73dcf39c650eba657336ae78518b2a64b9a9541b075f0 +3c2175e803be8f42e6ff276a068f97a8f4e7c55863e2eb96d86fff9e3c773f87 +12335c4d124803048b6974a7bdac3370c1fb88e275f8d1087e0899839d1e5167 +dad5c0fb7c0699c78710c4b7fd507c35ce8fe011b1c9f1b2628bb308bfb91818 +ad070420897b160c32613dd03afd0d3a12dbef13b48f3f435985642dfad8b99b +cdcbf0c9626b48b4e52608dcb039d00b61d684c3ba92a279651a24ea440613c5 +199fbc6de77c6f55ee4575d08edf5d1931f4ca99bc0cfc95caf8f1c1a5a6320c +0bace80b8e03224951a7668f7e24a02e0e31a324ef12d3fc5ca58d13f8ef6fff +9a05dac7e1f568da65240153bdf54f4c1e9b69c7d7c15972036dfb9b049e8050 +c11fdb62285aa6218e3903f20bdeff4752a375cd32da45e8bb1075f2840af2b3 +437848a81b37942be05d0957d9ff0f72a5b1c298f467db1dc6fdb191eb96bde0 +61291a063a9615c744065b3f4746af374788b013dfc5c52a4ff71a6d3fa86a5b +d2526b320a03a60d41410dcb89d9422b5e5cc66434a2daf003e6b35454608993 +6c2cd2152aeb4ee0e44ff862c883a89d970c10c40aff61b15dbf0413913f31a9 +e9583774c69e9dc7090cf6b1b1e5e725b7b7cf53c432a2061286efac1ef5d6d9 +ee247f3256a5ccae0e9e53dfe1d8551f53d9d62204f3d963240fbbf06e2d5eec +1af714d8e6f2fa68cc54e5d501065a5a406e477c2be9835bb98a7822056ee9d2 +22323f30560d6fa2927d4c47d97db3a0b3ee2b73c9c89b91d1cd1a3f672890ad +32e30dddef8abaeaf1da50a8d8aa83f7f59152466b5b95516a2aed5af24bd352 +54def516f9d1c58104c37c85766c33eaeac0e063231f6714720029ab50d686ab +0bdfc21059f0d5cb709c9660c6b27b53662cf996066def35d40bb1ae514adff2 +d36ad989c69cde66dda14d6e8ee5189b41c301e0060004608b1912023cd58484 +f6953983494f55175c9b10c4ff46fcaa71f544d8b0db8e2697218e92a262341b +0b3f3ba1bbc2b92989732d067cefb93e1da30012f20335d060fcdf834c6d4202 +7a03f6d6b4dd09d6bb7d67b18aa3bc64c22f222b4bab084683028dd2d267ee84 +ff77977e5cd8bc1628338c3c692fe81c64c2878ccdabc8be33c00a8282008b0c +6677dcb82677d91c5ca4e9fd16f42a988d72586bec40740e7debe104cbc701bf +942d8e3be8c5fc8719968c54a9b8d8b3170c16900f273536af9056ac105d068d +cc9cbaca68be30a6bb46e8a7bccf00a752513d51000e21337b306229dd536f87 +161a8a2fce54f144eed95fde1901b83b18430fa103874f4f38bd43abad47fada +34a6222bbf063273824249bb5aa83596c7c24bed87fb30534cd0fec756423f1e +6ef0771c6ab825e08784c89bbdb9ece517df861a1fbde5bcab01c3124d625fe0 +048f1c92192d0985d57386bd986408ccb7c375321c87620803bc986e003fca28 +c955fa32f570733f9aa54c2f046cbde7fd0e428aefed811655b7554fd554d817 +f43c7a30bdccbe7e762fcaff0acf64fcf349402a8e53927ccb590a694c11de3c +30d0220707ba9106694cedda2685e498abb83886abdcc1d13db4fc3355a421eb +f08e210fc5fdd4d641dada04af0ae836a5676e9412fe1154a9e65f2b399d60c9 +05987b1d47035ff0c46d204202c5055ced6109183aca96c1f78f4e5649a415a9 +9f5a64ce5ecd6796b5db7152dfcd3d84ebe7ee66bc9ea733cdef5b4803361919 +807365b38b72f9fba3a8547f312ca813ffdf5170ae256ad7adf783824c1eee3e +4ea5ebc7f049665ed757075448660311db47e6dfa9de4cc95ae85f056b14af55 +4b9d34c29d5f4d709969c3968c86946e267f3ae9bcb5b4c3a4da8d0c8579df3f +d17dfad19637f5bd8d02ef10d5096467bd674aaa5554b73b3086c5f262000d9b +0712cd3f0aad5fc5edad76a4b15247e9351c4dee65aba1feed5f4c111b683700 +a42bad5a1f33c88213ad81abb0b914d3332c2b07213cd8c1c6acdc597c0859ee +118c09368abba325e18de1f5f9bdf8e8927b073361386c8cf38e783c37426de4 +06b57dd9b30d3ba6932d7da802e9456b5a8de7af1d31bc0e23d661eaa70ef75f +85a93a820743c1933120d5cd83333623cac29d3d35ea2225c9d5b5e777aed9f4 +f6afe3de8605fa748a99ef02e66bdcdb4cccc5152feb504cb332eb40803dd529 +814dfb565d3c258368795a158d9a7a569c4623c9b1f7b0020b11d176cddca2ed +e40d853b9e5248cca2e2ca0ca4eab9c30cbfc91dbb70ec23ef8c33074c761488 +03e96d77b525b1753b33b510d74f6fe750ecfe4d6c84745cacf2c7ca60e1f8c4 +995b32aa46b550c85916acc71b661696d465056ace14f476b3bd53bee4b312ad +0e6f2717b259d6f75d0d7c2ae8bb48db34b3532c7ade2cd3a08a58a4faa81632 +81a360161fca181a75d437cf9985bb4d3acd8696623ab6ac4975958c544a14ed +3c6454dfd0c35af05cc44e8ca440f591705e287cd98a2cb70f272e148cba58d0 +fa62c4ddc60c65a5dc009874710c30cbd75046c18ad4f4543da7aa52502f8738 +dfd3d89b36be81635aa3c21da39ef2e3bf4cbcdf9b90f6ea4573d63be56f04f9 +b318cf1905cab0e9670a650788023fb985919c56d1b58e5de556dac6fe5a1b27 +db9223fa2cc048c8c626354fbb9cf1f882b7a4a776ea93ea074b65ad41a0b6f8 +2c939cade51f78800d5882dfac9c8ef8f699243130fbfaad65bd1674af10631c +938e7ef8fba481a0570195c60a8f785e003565e9cad609c6e107f02ae44c3a37 +6c93d565ca59eca6d3597b581fabf0cc1e0dea4c2eed392fd6e2ac0005319fd0 +f3421afbff71f105f94047bc77f2fa5bc11b905b00211f4afb50564620a305a2 +27aac015c7dc0e5547dadf73261c464273d3000f9cbf76038246f003c8a28a02 +f52a8e0d80c00e94fda09b0651f6f30e373792f36f8d40401d1490c08626a3b7 +1f1f0e162acef4c2847540e00563f6f8b14cb8c5dd0d6b20401f0e1aaae67e66 +1fa0993ed92dac235fb5e9ecd18351837021287b03cc5109a1f1cefc21299a60 +9b20bba0e7d41a0af4b4b5b748291f7b02bd97f75317a0b73d17999726ea17e7 +9ba85a6e03b53f776512229ef851c82939c1e9cff3422c752636ed09aaf9501f +00743347f2bbe47ed88331e96a5514ab049043b0ee7c9b133ca8f410ca215a29 +8b3b0948c44b1d5609f13e61d29673e034520e0221c5a04d0e060148bf2c5bbc +24eca553d1369ae91b2809dc858f4545db350302e2e362436b828ccc60cccdfd +2ac995d3b2076da5f8e312fd2e7d61cb6a1da17587b9c4f6ecbd432b426dcb85 +6ff411c7a9f99146d905537b7c5654ba73d1b681a9d8c6114298f058183ce3fc +840604b7f59dacde5d1d59861566e0037d27b5b4f3d03befe70068575c4bae00 +7d07addc2665106041e18adc6e679f57a12a414ce7089eb20316af06f44939ab +59acdd21cb2049dfb0472c664b0355f6f9e604e1fb907fbaa2e312798d458096 +dc1eec10816f76453db6d694afadc536d8292a8b8b17b4dfce602e8bced53eb8 +c17002e084d2cb5dddd6c73b6ba00270c85ca62c2b95c5959b98d68966b906e6 +8c2b0fd984587023bc29c22cc156ddae1c3be54e49057295a731db98be0f75af +b87b460fd082ecfacfa45e682c55fea6d8f4643140f60f2bdcf0936bca6c226d +4ad28013ab9e401a7194579fe56c45502e394acab1a8885a0313bec72bd59349 +27c18a4fd8ace4d32564c930f5fc5834a477492bec0aaff3f9765ad16f807c0c +e3f4281a71a0d444124b91848178fcf2cfc37c9788b24c7567e257ce7c7cc8a9 +b606a65bba752e768caa2dc282ade9c8a62007e67c6747911df57e46a127263d +4ca2db139ab6e3ff10d44720bbc11e201afb1654e2d66e8c7d2bd2c788457217 +905847c1e10ec62ab720ba1cf7d143787509d16bb35d2d824530802da1208991 +f053bcd26b3d18988db61eedc7d99a62212fc935229fad52750fd461a920c226 +97160b441c4133bdc5b95753697d62394a14f9009945714348e46ecabeb2712f +4249a8191296f182304353015378b21c26ef3777247264b6ccc8c43d1a62e368 +f60f159bcae542b8e6b75fd3296270ba4e76bb03aae8755faafd63b53d94b429 +6810a44fba4733a33a120bb9c4c3530cc7a47e11640ae5e4d33bd39bf2182a4d +e40397652f2bda8ffc3e8e1eb146daac0e8d13545ff4b9932eba5ceb75dd144d +d590c029e9ab287da0f2f0eadf1024a53fe9f9eeb77e07052e9f11ec73def1bd +bfaee5679db2c15a184ac86978794685df56cff94170dcdc551b14ed25a34742 +fba6fc3fe1ec514e457978dc9d7013f04f6ae852b762ff4ffa8279814d31cd48 +99f4ef6105d607f9c06647f67b3c91c7286063e2aae5120e15c32857adad7f62 +404e16734bccda9777e17482c960cfa6b851d98a23215e0c2070e1ce3b059de9 +2db3aa120e23328d349312a970b068be508914c0ac25009bb39d87f8c113150d +be7854a950c358d64e5f91dd202244b03b4ac7952a666dc94506af596a52eccd +2e77a98ab057b0f94d2973d1bc7468090b170c20cd61ecb6ccdb5ae52f78b6be +44d42999c09d4cddd82fd36469f401d9c158c2b2cc7292cd1d097f8cb5e4b652 +5b691be17e762b2aed9ba46933990727f002ba747c43b494785a263fd3bf365d +d8afe83ad4e3d9406f23f2588bc349985945d32fe3347e3feddddfa9b0e584ad +ca777b49ae504c3cf35e1e295e66149fc77debd496d533d3c8e02a03359d81d1 +2d77b3c471a2c17b6e66d0a2cbd50146a8602cebd36b84f7ba4c5d0a09833050 +640a9902f40aebdc9a1d4e28f8e64f1600e348f488ddc0c0b1d2a06fac4e56da +e80a48db107d7f143d07a7bfbe1d9eab4db66cab3ec2c98ddd231f2017d5c3b2 +dc413cee3515edba18f038bcc2f59c10cb9d98002f8b65ca379521c3f127bec6 +5c3f5077d052f58a8526430662d22353aaa0dcaf36fffc7bda328513bcbb3673 +95fd4aa6e2b6d2da4b2ba6ffaa148d04fb03bb985fef19d9014e9f54a4067784 +b62c00333b5eb2489096d43ade06aa446ce5e803c18de6c5000d69aad5d87abc +9daea2dde286251020b1313fb9470884ac43a3941e744f0c858acdd5374cbf0a +fdba5d1a83e2b7e1e04aa81f76234017bdeaf990cfa6c30ff4b0234af9be5b65 +8d6867597df405b84108009e22cab2c3e12249b9f28e07f8f8008a2d5f61832c +29528220a08e8891f414894b5567903852221d9c84039b9721f85caf02423017 +d17ef7eec459679764f09fb2cfaeb31ef8ad7176592b7c645ba84778db98a45d +dd1299f965b1244adc9d7585bb11bdfd10fd7c58e31baec46bee12bde14e678f +5c5984ba756021f068b756a0a0ba530939ed6f836f14eb64fc19ad3ae62cf881 +87f060318f8bf2cd3cd4e838f9636cc65e6ad451052e8969c1183af6a21efea4 +b6dbfdab81fa2905f42dbfec3cefb8c752d073587fceff026cda4a818e1dce32 +074916ce965191296385726e902d7ec50b5ed3587188c3c765d3884e055cddeb +bf401839c041bbdd0b84247813da2f1ec618b3f3d47220d0b7aef15a83427bfd +c380df20f960902dcdc2b9940ac38bacaa72347dfec18692beebd2eb953cff99 +1d4142e97a8aaba1e7c48ce3b440143de3e99ffafe3ff88109400232987c79b0 +921b5f67146f1d215dc0763c39e581e52bd4e63856a84e7759ac97907b4ae47c +2639341f3b10a4bdb287a5a0d71dbd12ac127bbe9f8903a11057ce49a356a08f +74cfbde3da2f4497a43d9a454cab33bcd6fa70e9d953d74e057640edb0dd7b98 +03d1f30b068f22d1f25bc64d6d72e53e5fdd89b8b48837109079eaa76528432d +a3c4e88a3d042a0161564d3be47a28f0d54ce07089a3ef5a175a4a50dd1cfb62 +d90d4b780c586338883e5703aec24b4e1cbe47463dae7a1c9e4da376812f58b9 +c54558fe82f98f3a52c568266508dc6de6634d2b0861538ee3f4a59aae64c864 +ae8833d4b6cf5a35cd26b2cf1928bddb1f0e0e2491ab1c81589490ee954f292d +61bed9bbd7becce2eaab03662aecfa60cedc32def8d6787d767c96f175ae979f +7017d63a280eeed5dc51f1e363784d31e1273b60f249beb8e0a353a46172e02f +f642cc32fe1f7c830293f941aa408c662f8c6182c8a130367054702569022273 +2a3f2620452c70afad048a7e4e42fface6fedcfbe230add906bf6c7730de34cb +7668fc04111547e3805d3d04ae95c33d1d482d384743c7750c47f0e2c376e85b +cc291895535425b774c65248b55db7ee14921be852c92b080b224da7cd64d187 +8bf6afc7ef4e4dba31bccce36862cedefba84a54687d78d3a909db8c361d0adf +174945b1ad65e3cbdf17152fc89050d6497a21d258a28f6a53e73df766e2ae9d +1b19baa26bec64fa4457b9a069774c54663a3eda75b9b65c220eb7121e2e7b57 +4b8df247fc9b4cb3044d2ed7ed5e24c5b881690628b4ea871125d9b7354e57b2 +28f1b95140e8253775e7c0deea46e263a49ccae838ba0af7630c50759e5a28ab +2267fa0800f9b6a389db5ea9e2d96adbb564acf9c48c31a51566432568b305e3 +07de8d399d4c1a00b2c37325c0d6af5c9b1352c3c8d94e513ade2f5a3c29f652 +4d8191a86458847f36b85f4e517ef96e92fac2d064388676217a17438b166602 +ab004c5db7c81fc91f2f589f2715785441f8f75a25205cd052710340454cff1b +2bdfdfc413a74b20b3d73f3ad80e59d6d807ba0812cc343debab18a0066753b5 +f60039891a728ef3c8861a05c7c64bf29e741a102ce7cdbec1dc6683fbe925d5 +6d7c462dd236b9d73e9beb360409fa01db04b10f30a2b930f2f39047d7e8b638 +eb80d5650149beb162b229a40114666efc3fb9c4ac1480980498342dfaab5671 +b4cda01dfcf174ebde9b6f1f62cdc06feee0ae4b344a39e703ac5e178b738838 +743771935bcca613ecb9466a406dd2eaae35eebf1fe2a0186e604f54f5fbff89 +08c966a1b7ca2472fff57e33e8c2f83c8b7863c81ea1ea2b0a564098ed6934f9 +c75ac40fd28a1657fa282d8b9ef411b48ce31c594259f57b9d5ec77f8a3f2934 +0bf380c08215a6e807a8f78331fc5b965a9167fc365ac5a562c74ad54380c6da +4aa078ee3b834f1a6eafc1a2dc1e4f86f464da75a2016d7159d1cb04dc2a87ef +16036ea19f3de0a15040a91ad07a48ee0610b5735b5eeb41cc879fc33aaca759 +a0f43a792ee7038bff2dca3332deca0c66e2e6181ea8576ec94aece4a6e7ca99 +50057373df4bcdf823e0253ac797ba195f1c0305e00f8acda5e0895ad6a21afc +17a51e0d88df59476c97b7a0c2eb69738bb6becf3922bf37dae8777f9a4cc59c +27c7a7a672e7aebd2283c8ba8a2af80652983928924c24187dbb777cc91626be +51c5a7acd28b6a312f15e65f59b82b4e44cf8de5d221ab1b928352614be7dccd +a9f38b5e0ba2bf271d383da97a674819c9994e67aa8bffd88230331e62711909 +e2b3cebc3f29ccb34676b6d65fb8b25b58349e8ff07c8d24cb98ad3cd499b6f0 +d9fcf4d40bc2d721f01cde23eeff4f10a6cda0be3b376ce83831fab8a7addd25 +640cf21179847dd6f4d5e27bc78f964ecd5a4d35912f08b5b2b0492991e436ac +a8fe1392eba6200737f64b36a7611b3152170184663d14943d2eab0a5ede5213 +46c72a7dc8f81337f05ac810afe2e11b09820e3adb0d74efdac5ec410f11d01d +870cf7c5d56411d976532599d55f59da974bee60c0fee7be3ad095f652f845bf +e38bd516b5983db43a67e68a0062c20015027b9f8304a06265543c33ce063cca +b0574b71e730153a2b8693dd07d85d17f6a9af8caa5fa8c93137c6fb7a0cb9cb +e8e42357f704cb9e738dc8d8f86d318e6e44e2f9fd14045a0704e53111651a2c +6cf4da52db12a503088badeb3fef9b6b7a0d91954ed499c29606b14bf934d5b4 +2eff22dbc633edcc1666be14f732f619c01553901cede27ff6db9b6c03871dee +dae8537cd9d072aba42617fe6e471432fb7fb06ac7ce3ee333fff101ea51cf17 +cc1b4e2e1bf50b1c946f67268034ca387691ad2b0e41878db4fb67abf4779c04 +f227d1b90cdb8f6cd0d2128965880d0dc39358d91d5f911664cf546aed76fbcf +f6bedf832c2cdee85dec4900edb977f081c6a8b69d321ba73312dda0a4caa687 +3f90e9a736b6bbe653b299df589f23fb9bc5398d3894ded16c8ce7b1644cf9ac +1d0e39ba21367f0dcc1183bbb421f48b9e97de9b3ad291a0380f71ee5de5b88b +2179d65e237c37829b084a15b5fdd6c4982becfe0b8a745ca88022518338a49c +61ccbb6f8d4b5987156fd4a27920a1a8b3778b31b4c807472410cdbbb0347585 +fa8c0f761377cf78e08106ba8ee44146ddfd82c5f8fe7c82d8ca0387a9bf3879 +93a16ab3b91f3029e2c3550f9532869f80d735f8198785330d5e1e2dad884bd8 +feae30709fa62cc111a0ca6492125bf6990d734129bc1dbef3ee44d98bbd4f69 +bbefa5e15b3255fb3cccd90089073ef76d5f1a6fa8b465633e635eced945798b +382138a89f6fab51c06bfa343f3ca2ca9d9cab422a0f83a33c03dd339f7b8d75 +8b0bd83dde1d8d34b8a6879c9c09b6816c7325b0e8b1a792934c2accbd815a60 +62430b154f11a9015e7f3b31b0931f04a3a858f98ed8f77980261b95eff2e92a +84016795b68eb62e09c545e05e9fba96fdad0fc848867d8306a1a402039cc9e6 +6f458b7c1b935223b0813fcf4a2e4bd265c5fefdc6534d7285047b87f7d154f3 +af5a72981042d7dde898ccfe0c69bd4ee03e155379991f1409f277bbbe3a1968 +f91d9e7ca8ebfd7a34fb1ed36ecfb71110541724d71849f07cff5cb4f1206f30 +753db9622e881cb596b3a9e5936521072da9664e27413aa8f5e96025788357ad +5cfeae576ffc5f33b2bb40d5b1dd199ca222882225f69760f36107b7bb894e02 +3f13cf576e3446079f7f7c7206e81b19929be449e7939bffea7aab8177df3158 +6e9fe322ab28be71075176bb913df6f5eddde09fe0199c3b737489dac416078a +a1bb62d4ac53733f6e8f509e031d60288e8a446bea3061e19063b69c527ea32d +ce32cb0f518802c0f7d9c62142e221aa8920d6589afe0d0dec632c89e048e84f +676bb77256ec600cd73467e53f7d87ef94e81ede6f4d742936ce96ef6d71e255 +4c90a7205a3a0e1fda3f337d07f971c06abb1d6facf1fcc93fe47d4e9a846f8f +550dd77b540ae49d4a4e84db2e323c35a7b3098d85c87c828189384516f50b0f +81d35b2fec6086fcf9eb27a61282b4710e2f6538790b2e31ea03c30b5bcca6b3 +534cfe442c28f8b50a24cf6653914ec8e5c9dd3ef528678cdc26192e09848e4b +0cc2626e2fc79834399b0e6f766536582b90a41d2d233534f4bb7334e404a946 +992fc39439c847313ad59e797f3f87e5623fce72d540539bf62b6feaeead4506 +d13e8dd8ac4930474d389003e34acb5e3bee97acc8ae190ceb61259f3632c359 +f91c8a5bde300a1d54cdcc973bfa41290f78e0355dd1a59001475417cd2e25cf +64317e3144bdd3517742846483850196037be17a2ef3942e3ee0f8cd11aff9a5 +76843e5d12bf79d303dc0cd9c2f52a9a49df24908ba2f0292254880a5467e73c +ff22a6b879a55f7ce3f5ebf24d0c4ea063edbd7fe7731913b2d53c690a3432a4 +8c6b4fcb668c1b444ac9cf48cec0f645630f9233e8ccb0a700b971223e22d91b +7b187a7b540d901ae96e60bf4dd4b58cbcd43fc11da0940ba57637fc823d4a1f +e9dae53ba6ea7410ab897b6eea8e3e11cc987c43737d43929c03f8c3bf3c653a +42b0c0da6d641c1e3dd0ede478523e5ceedc4101198e5695232d4a522e53a35e +32a1d043b16077b1388dc5a9ae8b06849501f6f7fc9833c17861512b08fbf6e8 +4a329cab8c746ffb2f535b4a72e2d0f6551e7617c4df519f73489ccf3b64c47d +1b082c30a6b01b7431c1e8e05d0a45322a3b2b24d63083652d7202d38026502b +58c37eaffaf987796654a90d8d9ca13a4a3b07faeedf14599d0ae2f67fa045fc +0505aef44e651a7dad8b16027d9bfbf0bac236de06898f2442af2b30403d96aa +74af7416dfa470488e6bacfcd07d6ade06df6e3b6c17ef445aae7e1c24651f0e +11454dfc09fb75b5b45413fdaac3af5bc4799fe3b5a331d58dcf81a11273287e +3ae248e7c14d4303848358623681036568b02d77653620241c61c2cfb739a6d8 +473519594049b23ed81ae06196c0c17f1ae7d9a4c2f0b2911eee831d453db084 +9e9783c5423dbbda01a5c457ae31bd7c9a8edff81e4a3cd10b200804ae9412be +b40603af32d6f9a1296e43ba7ef16d14333853a8e76a8bd18806c158b65f811d +368030dfd86518df7f270c7ccf6f648b85015c609ca49268709a294db535f6f6 +93169893e803c13187ecfde39de0ba3f232ddc586733c4c0577b7ef36132b694 +ace4b21b39df453009d8283eac34832fdf4b98a23e7ff5517a563c1ebbf2d36d +ad1c8fd3158c34c5f4c7bfc2d6c90a044f5684a421ed3869dff7d37999f69a3d +a4e3c2c7a196df4382ff490defcce866fcdf9d5e17c60ba960fd71ec0b4498ef +7d0b695bb2ff9e7ce44d9e1809ddf1745295ef9f899799ad224465f2f0701757 +c870983b607fe99912f2c8945246a328b166f72c4ec5a9bf0800c0fcc35996a8 +af47926ecb6ae2e24b44bced5b764fb75494f67f337752e8bed502a4f8080eaa +a735d5abcb51287fb8643b8db5f845b1735c0f620e9d2ad37a43fe3a223d7772 +8c19be927d3cc4efed0604c631867b4a44eb09ff4e9d15170d6abac3d139e96a +aac918073df424a2a6fcd656e6abf1802ba38b94b30c449f00cbf0e581e1a3b5 +9c970841857a599550b37aacae1d37bc23cf4429b7d2b220507eb29673bb6f2f +4b690bca7ab6548ba731f24960d3ec5248099b726a0571cfabec48098c2b02c2 +b446b62e44608e34f05a90e6c13d4cc869510fdbf8923069cc31754c0be03fff +a8cd54ea04d5b3f392186aa1ce34bd46921ac490b375f4aa5dc9cb60a49f81d2 +38b2be0f8840b6beff486c58885c532461d1d5d0dbb88ba9ebac42409ad63803 +2949eaaf45c83793af84ccb555435c5968a06ff82e7f7db18c0f892ae796bf09 +d42e952ce639f7a5dcd8a0086d6b4ce0ee918bf4ceef3440f894074fa703fb72 +fc8af149fde3925591d7556607e0db33b358b494e6da82ef0b11256b6d16c554 +973d19ad3e8f8239566afe5bd0e9f9fbddcb6f137b8e0c3e84d3de786b348a8d +71453aaeec60f8f8a908ab1ca842d935b075e08743ea8e08ce2e87bd54753bde +561a14482eadb28fba2d08d76a4e1c293e7dc940ec393de378ce5a1e73873a8f +432ff5804fd0742396f9b431f8efb252749434f5204c7d20749fe51c52e00aac +44e4f6e1b0e5fe63082a477854d4f7cdf73d61400aeb441a99a8c259e1ba6187 +bfed54c81abedd008a1efc2756d6136e8c6d22d56e1cc105bc4f055aed1e232b +668345f6bb3fb51b39f4000406bc895359cc540f9e6d22c583d9a816f9b4520b +f9a227cd4f834be08606b23b11b701b53dd5e0cbdb09f09213ca95b0005e28f3 +d6c4fe6dc36551f42f90b46eecac4c5799aa789e3b06ce13259ddf0decc7ea10 +ec486ef39b57795982b27da2ac36c6877a382d6a846af49f8b47ecf21b9143b5 +bac3e2a069e2b7ed754b00857aea4ea6baee6515adce92137f399db1b886e49c +57ee71b8e8af0335dedb9cd23297d72132b5e7fd5815f1c5ba53e82921f95144 +961609f5c1b4f27bda017d353fdd2257bf5e83ed05a5c2156b7787eb10c76e72 +057873d110b673aeb67eab444d0465f2bac0be644cb4ac8c8cf65b11bce86e2f +d31a3a3b672d00f2187aa7c09c196e0e51446e1e354ed4e63c8ba8b2727b20b8 +1dcbb8d58ed7ba65d9ab3b4e8ee4763af68f13e21fbda3b7d1175a66d4b139b8 +eec5c9f9abe5e8ee480da41a9d86922e65058f58665a2e4a474b0dea30421afa +7d2a718f67f356b7bcf62f7ca96244f0f171bff3c59cbe3a3c0fbbeb0246d3dd +2e455dda44900d0d19ce5e38c3832095571eac7b927837f9b147802e47c2bd62 +6f7371876a58a6869d78fb014b4f4d49c9c899a6153e7485f109ec97df944dc5 +0360078ae715da961a740ea64f58c9227ffdc814f478360b00eb0b664da224d6 +40758cf0b54344469a64aec31422748e51b8453be0617ac9f5b90e97071d1c9f +41b28d23316da7a0efc16a7c2493067dd6703180c6012c8b6369888e16bf09ff +feb96982acc724b1e756fc54b005c35fdf1cc0d38ad4af3b55c74fe860295d77 +18a7999b70195849a696c130ed84d484043cadba0c219182bd715c537bd3ed77 +f016d05e971ab8fa3ddabbec5b58ff7fa9dbb432a3bed937fbdfd6541985869d +a3865e0d28cde09dffe6a536cfc62ab66ff04a8ddae60b6e8ffc78af1c64efd5 +02162ff71dddbaaa50ebba29afc0b4b75e094dffb54617acdcede7bcc36db66b +27512d518c5ea5f6a82373ad465a550d07c6b569b799b5d97d24e63041d686f9 +31b2d2f67cee72babc0ffa2786c486ad82d1bef297a8266c8dffd85399437fad +f5f3e154254b0c96e7641a7d9716768123ebc9dca0e3cd50b46265e22356072f +6609c9e2689a87719ad3f67e82e5d3ae8cfaa10484740be55b899732e2fd903e +347682e8642ce305aa7fc24297d756d8c61d321eba903291712c1d5a263b6422 +6846b4a13e3975602433d0d382bd1a77a218418400664f546a255feebbcba0f1 +091f8d42e79020107099142ec122a363afc8eeba07b96892e3f7ee1e76ca60e3 +3242d8c964bc6cb1c6d7da25ed77a2191a9b243b8d88c01b5fe7fbb7b48f05bd +8dc0046711596dea59a6fa0a9c6a2ae858d181138d39b43a1f3f1e032601b176 +d69c1407c68577a8b77b4ed8cc6dfed7d64ef5ad220be87aa2db2bfd5edd2a1d +ec8ae75fb5404cff01f368ae218259f2641041726a8d69eea408deac2a8a959a +708fcc444d2eafb5f69a2c7d6197b87a493e0b331cd9c5945e1c856e25e16e57 +0e26bef38767ff209f3204eed64487602a50e05551a14b9a901909c787772b59 +8363d700b7825865f2e7618dd410ea358034cb9f3fbb11a44f187b02077e60cc +e9f2348d01670af466cae36199edd21e19853cdc3c063946abe66700f5fec38f +31315fe8ce24257e7e4752ed794b362cbf4146e05d9a957cfc3b17114ec5ba23 +7fed31beeb367d1e01551ca1ef6efe27f37368ca199be77cd3a78ab392d7b27f +36a1c6be4224d2f67617d85f17a490a91caafca73cb256dd414cbb +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000000000000000000 +cleartomark +%%EndFont +TeXDict begin 39158280 55380996 1000 600 600 (enctex.dvi) +@start /Fa 14[27 15[27 41[38 3[46 179[{}4 83.022 /Symbol +rf /Fb 48[37 12[37 75[37 43 25 30 29 1[41 40 42 1[21 +39 1[21 2[24 37 42 33 1[38 8[45 2[52 45 42 2[42 55 8[40 +43 10[24 1[42 2[42 42 42 42 4[24 45[{}33 74.7198 /CharterBT-Roman +rf /Fc 138[33 2[22 2[31 22[35 3[35 14[33 17[32 32 1[32 +48[{}9 58.1154 /CharterBT-Roman rf /Fd 47[83 87[40 3[28 +31 33 1[43 42 46 1[23 43 1[24 46 1[24 35 43 33 42 44 +8[47 3[47 14[45 3[50 65[{}22 83.022 /CharterBT-Italic +rf /Fe 134[51 53 1[51 60 36 45 42 1[59 57 60 89 30 2[30 +59 55 34 52 59 47 57 54 8[63 94 2[60 1[67 4[88 7[59 5[49 +9[58 58 58 58 58 3[32 45[{}34 99.6264 /CharterBT-Bold +rf /Ff 139[30 37 35 14[40 48 45 31[54 6[28 58[{}8 83.022 +/CharterBT-Bold rf /Fg 130[48 1[48 48 48 48 48 48 48 +48 48 48 48 48 48 48 48 48 48 1[48 48 48 48 48 48 48 +48 48 48 1[48 1[48 3[48 2[48 48 3[48 1[48 1[48 2[48 4[48 +48 48 48 48 2[48 2[48 48 48 1[48 1[48 48 48 48 48 48 +48 48 3[48 48 2[48 48 48 15[48 19[{}61 91.3242 /cstt10 +rf /Fh 47[83 42 12[42 7[33 8[42 1[48 48 3[33 47[39 41 +42 64 41 47 28 33 32 44 46 45 47 70 23 43 22 23 47 43 +27 41 47 37 45 42 3[35 1[35 1[49 50 77 1[58 50 46 54 +1[46 61 59 72 43 51 37 27 61 58 45 48 58 52 1[53 1[40 +4[26 46 46 46 46 46 46 46 46 46 46 40 23 26 23 2[35 35 +17 39[{}77 83.022 /CharterBT-Roman rf /Fi 137[61 72 43 +53 50 1[71 69 72 4[36 2[41 63 71 57 10[76 2[84 72 68 +12[66 71 10[41 1[69 10[39 45[{}22 119.552 /CharterBT-Bold +rf end +%%EndProlog +%%BeginSetup +%%Feature: *Resolution 600dpi +TeXDict begin +%%BeginPaperSize: a4 +a4 +%%EndPaperSize + +%%EndSetup +%%Page: 1 1 +1 0 bop 828 447 a Fi(Second)35 b(version)h(of)f(encT)2102 +466 y(E)2163 447 y(X:)f(UTF)-9 b(-)q(8)35 b(support)1780 +712 y Fh(P)-5 b(etr)23 b(Ol)2025 713 y(\317)2029 712 +y(s)2062 713 y(\302)2062 712 y(ak)1296 895 y(Czech)g(T)-8 +b(echnical)23 b(University)g(in)g(Prague)1496 995 y(Email:)33 +b Fg(petr@olsak.net)772 1260 y Ff(Abstract:)41 b Fh(The)29 +b(UTF)-8 b(-)o(8)30 b(encoding)g(keeps)f(the)f(standard)i(ASCII)g +(charac-)772 1360 y(ters)24 b(unchanged)i(and)f(encodes)f(the)g +(accented)g(letters)h(of)f(our)g(alphabets)772 1460 y(in)17 +b(two)g(bytes.)29 b(The)16 b(standard)h(8bit)g(T)1944 +1473 y(E)1984 1460 y(X)f(is)i(not)e(ready)g(for)g(the)g(UTF)-8 +b(-8)17 b(input)772 1559 y(because)28 b(it)g(have)g(to)g(manage)g(the)g +(single)h(character)e(as)i(two)e(tokens.)47 b(It)772 +1659 y(means)18 b(you)f(cannot)g(set)g(the)f Fg(\\catcode)p +Fh(,)i Fg(\\uccode)p Fh(,)h(etc.)29 b(to)17 b(these)g(single)772 +1759 y(characters)27 b(and)g(you)h(cannot)f(do)g Fg(\\futurelet)g +Fh(of)f(the)h(next)g(character)772 1858 y(in)32 b(normal)g(sense.)57 +b(The)31 b(second)g(version)h(of)f(my)g(encT)2597 1871 +y(E)2637 1858 y(X)h(solves)g(these)772 1958 y(problems.)888 +2057 y(The)17 b(encT)1211 2070 y(E)1251 2057 y(X)h(is)g(full)h +(backward)e(compatible)g(with)h(the)f(original)h(T)2970 +2070 y(E)3011 2057 y(X.)f(It)772 2157 y(adds)e(ten)g(new)f(primitives)h +(by)g(which)g(you)g(can)g(set)f(or)h(read)f(the)g(conversion)772 +2257 y(tables)22 b(used)h(by)f(input)g(processor)f(of)h(T)2020 +2270 y(E)2060 2257 y(X)g(or)g(used)g(during)h(output)f(to)g(the)772 +2356 y(terminal,)h(log)h(and)f Fg(\\write)g Fh(\256les.)888 +2456 y(The)30 b(second)g(version)g(gives)h(possibility)g(to)f(convert)g +(the)f(multi-byte)772 2556 y(sequences)24 b(to)g(one)g(byte)f(or)h(to)g +(control)f(sequence.)36 b(Y)-8 b(ou)24 b(can)g(implement)772 +2655 y(up)e(to)g(256)h(UTF)-8 b(-)o(8)23 b(codes)f(as)g(one)g(byte)g +(and)h(unlimited)f(number)g(of)g(other)772 2755 y(UTF)-8 +b(-8)30 b(codes)h(as)f(a)h(control)f(sequence.)55 b(All)31 +b(internals)g(in)g(8bit)g(T)2921 2768 y(E)2961 2755 y(X)f(are)772 +2854 y(working)20 b(in)g(the)f(same)h(way)g(as)g(if)f(\252normal)i(one) +e(byte)g(encoding\272)i(of)e(input)772 2954 y(\256les)k(is)h(used.)888 +3054 y(I)f(think)g(that)f(the)g(UTF)-8 b(-8)23 b(encoding)g(will)h(be)e +(used)h(more)f(common.)32 b(In)772 3153 y(such)d(situation,)i(there)d +(is)i(no)e(another)g(way)i(than)e(to)h(modify)f(the)h(input)772 +3253 y(processor)22 b(of)h(T)1276 3266 y(E)1316 3253 +y(X)g(otherwise)f(the)g(8bit)h(T)2111 3266 y(E)2151 3253 +y(X)g(will)h(dead)f(in)h(short)e(time.)523 3494 y Fe(1)100 +b(What)29 b(is)g(encT)1268 3510 y(E)1319 3494 y(X?)523 +3685 y Fh(EncT)698 3698 y(E)738 3685 y(X)i(is)g(a)g(T)1022 +3698 y(E)1062 3685 y(X)g(extension)f(which)h(allows)h(re-encoding)f(of) +f(input)h(stream)f(on)h(input)523 3784 y(processor)39 +b(of)g(T)1060 3797 y(E)1100 3784 y(X)g(\(before)f(tokenization\))h(and) +g(backward)g(re-encoding)h(of)f(output)523 3884 y(stream)22 +b(during)i Fg(\\write)e Fh(and)h(output)f(to)g(the)g(terminal)h(and)g +(log.)33 b(It)22 b(is)h(implemented)g(as)523 3984 y(the)15 +b(patch)g(to)g(the)f(change)i(\256le)f Fg(tex.ch)p Fh(.)30 +b(The)14 b(patches)h(are)g(ready)g(for)g(web2c)g(distribution)523 +4083 y(on)i([1])g(and)h(\(may)f(be\))f(encT)1429 4096 +y(E)1469 4083 y(X)h(becomes)g(as)g(a)g(standard)g(web2c)g(extension)g +(like)h(mikT)3292 4096 y(E)3332 4083 y(X.)523 4183 y(T)-6 +b(ry)21 b(to)g(use)h(the)e Fg(-enc)i Fh(option)f(on)g(command)h(line)g +(to)f(test)g(if)g(your)g(T)2697 4196 y(E)2738 4183 y(X)g(is)h(equipped) +f(with)523 4282 y(this)c(extension.)30 b(If)17 b(not,)h(you)f(can)g +(get)h(and)f(apply)g(the)f(patches)h(and)g(rebuild)g(T)2988 +4295 y(E)3029 4282 y(X)g(binaries.)523 4382 y(The)j(patches)g(affect)f +(T)1239 4395 y(E)1280 4382 y(X,)h(eT)1457 4395 y(E)1497 +4382 y(X,)h(pdfT)1754 4395 y(E)1793 4382 y(X)g(and)g(pdfeT)2225 +4395 y(E)2264 4382 y(X)g(programs.)31 b(All)21 b(these)f(programs)523 +4482 y(will)k(dispose)f(of)g(this)g(extension.)639 4581 +y(First)31 b(version)g(of)f(encT)1394 4594 y(E)1434 4581 +y(X)h(was)g(released)g(in)g(1997.)57 b(This)31 b(version)g(was)g(able)g +(to)f(do)523 4681 y(only)19 b(byte)g(to)f(byte)h(conversion)f(by)h +(affecting)g(the)f(T)2162 4694 y(E)2203 4681 y(X's)g(internal)i +Fd(xord)e Fh(and)h Fd(xchr)g Fh(vectors.)523 4781 y(EncT)698 +4794 y(E)738 4781 y(X)34 b(introduced)f(three)f(primitives)h(in)h(its)g +(\256rst)f(version:)54 b Fg(\\xordcode)33 b Fh(\(reads)f(or)523 +4880 y(sets)25 b(the)f(values)h(of)g Fd(xord)f Fh(vector)g(for)g(input) +h(re-encoding\),)g Fg(\\xchrcode)g Fh(\(reads)f(or)g(sets)523 +5041 y Fc(EuroT)672 5050 y(E)701 5041 y(X)16 b(2003)p +eop +%%Page: 2 2 +2 1 bop 523 220 a Fb(2)186 b(P)l(etr)20 b(Ol)972 221 +y(\317)976 220 y(s)1006 221 y(\302)1006 220 y(ak)523 +440 y Fh(the)i(values)i(of)f Fd(xchr)f Fh(vector)g(for)g(output)h +(re-encoding\))g(and)g Fg(\\xprncode)g Fh(\(reads)f(or)h(sets)523 +540 y(the)i(values)i(of)e(newly)h(introduced)f Fd(xprn)h +Fh(vector)f(which)g(controls)h(the)f(\252print-ability\272)j(of)523 +639 y(characters\320it)d(controls)g(the)g(possibility)i(of)e(the)g +(character)g(conversion)g(to)g Fg(^^ab)h Fh(form)523 +739 y(on)d(output)g(side\).)32 b(See)22 b(my)i(article)f([2])g(for)f +(more)g(details.)639 839 y(The)j(\256rst)f(version)h(of)f(encT)1518 +852 y(E)1559 839 y(X)g(was)i(not)f(widely)g(used)g(because)g(the)g(TCX) +g(tables)g(was)523 938 y(renovated)15 b(in)i(web2c)f(distribution)g +(immediately)g(after)f(encT)2493 951 y(E)2533 938 y(X)h(was)h +(released.)30 b(R)m(oughly)523 1038 y(speaking,)22 b(the)f(TCX)f +(tables)h(do)g(the)g(same)g(work)f(as)i(\256rst)e(version)h(of)f(my)h +(encT)3022 1051 y(E)3063 1038 y(X)g(but)f(less)523 1137 +y(\257exible.)32 b(There)22 b(was)h(no)g(reason)g(to)g(combine)f(the)h +(TCX)g(tables)g(with)g(encT)2942 1150 y(E)2982 1137 y(X.)639 +1237 y(The)j(second)h(version)g(of)g(encT)1636 1250 y(E)1676 +1237 y(X)g(was)g(designed)h(and)f(prepared)e(by)i(me)g(in)g(Decem-)523 +1337 y(ber)32 b(2002)i(and)f(released)g(in)h(January)f(2003.)63 +b(This)33 b(version)g(introduces)g(seven)g(more)523 1436 +y(primitives)25 b(in)h(order)e(to)h(user)g(can)h(control)f(the)f +(multi-byte)i(input)g(re-encoding)f(and)h(re-)523 1536 +y(verse)32 b(output)g(re-encoding.)60 b(Groups)32 b(of)g(bytes)g(on)g +(input)h(stream)f(can)g(be)g(converted)523 1636 y(to)25 +b(one)g(byte)g(or)g(to)g(control)g(sequence.)39 b(The)25 +b(conversion)g(is)h(done)f(before)f(tokenization)523 +1735 y(but)g(the)f(control)h(sequence)g(generated)f(by)h(this)g +(conversion)g(is)g(not)g(re-tokenized)f(again)523 1835 +y(and)33 b(token)e(processor)h(does)g(not)g(go)g(to)g(\252ignoring)i +(spaces\272)f(state)f(after)g(such)g(control)523 1934 +y(sequence.)43 b(The)26 b(backward)g(conversion)g(during)h +Fg(\\write)f Fh(allows)i(you)f(to)f(convert)f(one)523 +2034 y(byte)d(or)h(control)g(sequence)g(to)f(the)h(original)h(group)f +(of)f(bytes.)639 2134 y(The)27 b(second)h(version)g(of)f(encT)1639 +2147 y(E)1679 2134 y(X)h(is)g(backward)f(compatible)h(with)f(the)h +(\256rst)f(one,)i(of)523 2233 y(course.)i(The)20 b(detail)g +(documentation)g(is)g(available)i(on)e([1].)31 b(The)20 +b(very)f(nice)i(on-line)g(html)523 2333 y(documentation)i(written)f(by) +h(David)g(Ne)1819 2334 y(\317)1821 2333 y(cas)g(\(Y)-9 +b(eti\))22 b(is)i(available)g(on)f([5])523 2574 y Fe(2)100 +b(Motivation)523 2765 y Fh(I)21 b(am)h(maintainer)f(of)g(a)h +Fg(csplain)f Fh(format\320the)e(basic)j(part)f(of)f(the)h(C)r(ST)2840 +2778 y(E)2881 2765 y(X)g(package)g(\(for)523 2864 y(Czech)e(and)f +(Slovak)h(users\).)31 b(The)18 b Fg(csplain)g Fh(is)h(similar)h(as)f +(very)f(known)h(plainT)3053 2877 y(E)3094 2864 y(X)f(format)523 +2964 y(\(by)f(Don)g(Knuth,)i([4]\).)30 b(Moreover)-9 +b(,)17 b Fg(csplain)h Fh(solves)g(the)f(processing)h(of)f(all)i +(letters)e(from)523 3064 y(Czech)f(and)f(Slovak)h(alphabets.)30 +b(It)15 b(means)h(that)f(the)g(C)r(S-fonts)h(\(encoded)e(by)i(ISO)s +(-8859-2)q(\))523 3163 y(is)22 b(used)f(by)g(default)g(instead)g(of)g +(Computer)f(Modern)h(fonts,)g(the)f(hyphenation)h(tables)g(for)523 +3263 y(Czech)30 b(and)h(Slovak)f(languages)i(are)e(inputted)g(in)g(the) +g(same)g(encoding)h(and)f(all)h(Czech)523 3362 y(and)f(Slovak)g +(letters)f(have)h(to)f(be)g(treated)f(as)j(single)g(non-composite)e +(symbols.)53 b(These)523 3462 y(symbols)36 b(have)g Fg(\\catcode)f +Fh(set)g(to)h(11)g(\(letter\),)h(thus)f(they)f(can)h(be)f(used)h(in)g +(control)523 3562 y(sequences)23 b(too.)639 3661 y(Czech)f(and)g +(Slovak)g(alphabets)f(are)h(encoded)f(by)g(many)h(mutual)h +(incompatible)e(stan-)523 3761 y(dards)32 b(and)g(pseudo-standards)g +(in)g(various)h(operating)e(systems)i(and)f(operating)f(envi-)523 +3861 y(ronments.)47 b(All)30 b(these)d(encodings)i(have)f(to)g(be)f +(converted)g(to)h(internal)h(ISO)s(-8859-2)h(in)523 3960 +y Fg(csplain)j Fh(at)h(input)g(processor)f(level)h(and)g(they)f(have)h +(to)f(be)g(converted)g(back)g(to)h(the)523 4060 y(input)29 +b(encoding)h(during)g Fg(\\write)o Fh(,)h(terminal)e(and)g(log)h +(output.)50 b(Only)29 b(this)g(rule)h(keeps)523 4159 +y(the)22 b(independence)h(of)f(the)h(T)1465 4172 y(E)1505 +4159 y(X)g(processing)g(on)g(the)g(operating)f(system.)639 +4259 y(Note:)61 b(if)37 b(the)g(source)g(text)f(of)h(the)g(Czech)g(or)g +(Slovak)h(document)f(is)g(transported)523 4359 y(from)24 +b(one)g(environment)g(to)h(another)-9 b(,)24 b(the)g(re-encoding)h(to)f +(the)g(standard)g(of)g(the)g(target)523 4458 y(environment)k(is)h(done) +f(automatically)i(or)e(by)g(user)h(manually)-11 b(.)50 +b(The)28 b(main)h(principle)f(is)523 4558 y(that)17 b(the)g(Czech)h +(and)f(Slovak)h(characters)f(in)h(source)g(text)e(have)h(to)h(be)f +(displayed)h(correctly)523 4658 y(by)23 b(used)g(operating)g +(environment)f(before)g(it)h(is)g(processed)g(by)g Fg(csplain)o +Fh(.)639 4757 y(I)k(have)f(created)f(the)h Fg(cstrip)g +Fh(test)f(in)i(1998)g([3].)42 b(Y)-8 b(ou)26 b(can)h(verify)f(if)g(you) +h(are)e(really)523 4857 y(using)g(the)e Fg(csplain)g +Fh(format)g(by)g(this)h(test.)33 b(This)23 b(test)g(veri\256es)g(if)h +(T)2684 4870 y(E)2724 4857 y(X's)f(input)h(processor)p +eop +%%Page: 3 3 +3 2 bop 1837 220 a Fb(Second)21 b(version)f(of)h(encT)2586 +232 y(E)2623 220 y(X:)f(UTF)-7 b(-8)20 b(support)186 +b(3)523 440 y Fh(is)23 b(set)f(correctly)f(depending)h(on)g(your)g +(operating)g(environment:)32 b(all)23 b(Czech)f(and)h(Slovak)523 +540 y(characters)e(have)g(to)g(be)f(mapped)h(into)g(ISO)s(-8859-2)i +(and)f(they)f(have)g(to)g(be)f(written)h(back)523 639 +y(to)k(the)g(input)g(encoding)h(on)f(terminal,)h(log)g(and)g +Fg(\\write)f Fh(\256les.)39 b(The)25 b Fg(^^ab)g Fh(form)f(is)i(not)523 +739 y(permitted)c(for)g(Czech)h(and)g(Slovak)h(letters.)639 +839 y(W)-7 b(e)34 b(were)f(able)h(to)g(set)f(the)g(input)h(processor)f +(properly)g(for)g Fg(csplain)h Fh(in)g(old)g(T)3315 852 +y(E)3355 839 y(X)523 938 y(distributions.)62 b(F)-5 b(or)32 +b(example)g(emT)1702 951 y(E)1742 938 y(X)h(have)g(used)g(TCP)g +(tables.)62 b(On)33 b(the)f(other)g(hand)523 1038 y(the)24 +b(web2c)h(distribution)f(have)h(had)f(disabled)h(its)g(TCX)g(tables)f +(in)i(1997)f(thus)g(users)g(was)523 1137 y(not)e(able)g(to)f(implement) +h(the)f Fg(csplain)g Fh(format)g(correctly)g(in)i(operating)e +(environments)523 1237 y(where)c(different)f(encoding)j(of)e(our)h +(alphabets)f(from)g(ISO)s(-8859-2)j(were)d(used.)31 b(This)19 +b(was)523 1337 y(the)j(main)i(motivation)f(of)f(encT)1544 +1350 y(E)1584 1337 y(X)h(extension)g(of)f(T)2164 1350 +y(E)2205 1337 y(X.)639 1436 y(Now)-10 b(,)27 b(the)f(new)g(encoding)h +(standard)f(derived)f(from)g(UNICODE)h(and)g(named)g(UTF)-8 +b(-8)523 1536 y(is)25 b(used)h(very)e(often.)37 b(The)24 +b(non-ASCII)i(characters)e(are)h(encoded)f(in)h(two)g(or)f(more)g +(bytes)523 1636 y(here.)50 b(If)29 b(this)g(encoding)g(standard)g(is)h +(used)f(in)h(our)f(operating)g(environment)f(then)h(we)523 +1735 y(need)c(to)h(be)f(able)h(to)f(set)h(multi-byte)g(conversion)g(in) +g(input)g(processor)f(of)g(T)2974 1748 y(E)3014 1735 +y(X.)h(There)e(is)523 1835 y(no)j(other)g(way)h(to)f(carry)g(out)g(the) +g Fg(cstrip)g Fh(test.)45 b(This)28 b(was)f(my)h(motivation)f(of)g +(second)523 1934 y(version)c(of)f(the)h(encT)1209 1947 +y(E)1249 1934 y(X.)523 2175 y Fe(3)100 b(Multi-byte)30 +b(re-encoding)523 2366 y Fh(The)i(detail)i(documentation)e(is)i +(included)g(in)f(encT)2217 2379 y(E)2258 2366 y(X)g(package.)62 +b(Thus,)36 b(only)d(a)h(short)523 2466 y(overview)22 +b(of)h(the)f(principles)i(is)f(presented)f(here.)639 +2565 y(Second)h(version)g(of)f(encT)1472 2578 y(E)1512 +2565 y(X)h(introduces)g(seven)g(new)f(T)2431 2578 y(E)2472 +2565 y(X)g(primitives)h(to)g(de\256ne)f(and)523 2665 +y(control)d(re-encoding)h(between)e(multi-byte)i(input/output)f(and)g +(T)2654 2678 y(E)2695 2665 y(X)g(internal)h(represen-)523 +2765 y(tation.)32 b(These)22 b(are:)578 2914 y Fa(\267)h +Fg(\\mubyte)g Fh(and)g Fg(\\endmubyte)g Fh(de\256ning)g(the)g +(conversions,)578 3014 y Fa(\267)g Fg(\\mubytein)p Fh(,)g(an)g(integer) +g(register)g(controlling)h(input)f(conversion,)578 3113 +y Fa(\267)g Fg(\\mubyteout)p Fh(,)g(an)g(integer)g(register)g +(controlling)h(output)e(conversion,)578 3213 y Fa(\267)h +Fg(\\mubytelog)p Fh(,)31 b(an)f(integer)g(register)f(controlling)i +(output)e(to)g(terminal)h(and)g(log)639 3313 y(\256le,)578 +3412 y Fa(\267)23 b Fg(\\specialout)p Fh(,)f(an)h(integer)g(register)f +(controlling)h Fg(\\special)f Fh(argument)h(treat-)639 +3512 y(ment,)g(and)578 3611 y Fa(\267)g Fg(\\noconvert)p +Fh(,)g(a)g(primitive)g(suppressing)h(output)e(conversion.)639 +3761 y(The)36 b(default)h(values)g(of)g(all)g(the)g(new)f(registers)h +(are)f(such)h(that)g(encT)2989 3774 y(E)3029 3761 y(X)g(behaves)523 +3861 y(compatibly)23 b(with)g(unmodi\256ed)g(T)1612 3874 +y(E)1652 3861 y(X)g(\(incidentally)-11 b(,)24 b(it)f(means)g(zeroes\).) +639 3960 y(Y)-8 b(ou)28 b(can)g(set)f(the)g(conversion)h(table)g(by)f +(the)g(couple)h Fg(\\mubyte)f Fh(and)h Fg(\\endmubyte)p +Fh(.)523 4060 y(Examples:)639 4209 y Fg(\\mubyte)48 b(^^c1)143 +b(^^c3^^81\\endmubyte)47 b(\045)h(Aacute)639 4309 y(\\mubyte)g(^^c4)143 +b(^^c3^^84\\endmubyte)47 b(\045)h(Adieresis)639 4408 +y(...)639 4558 y Fh(It)18 b(means)h(that)f(for)g(example)g(the)g(group) +g(of)g(two)g(bytes)g Fg(^^c3^^81)g Fh(will)i(be)e(converted)523 +4658 y(to)26 b(one)g(byte)g Fg(^^c1)g Fh(\(if)g Fg(\\mubytein)f +Fh(is)i(positive\))f(and)g(this)h(byte)e(is)i(converted)e(back)h(to)523 +4757 y(byte)20 b(sequence)h Fg(^^c3^^81)g Fh(during)h +Fg(\\write)e Fh(\(if)h Fg(\\mubyteout)f Fh(is)h(positive\))g(and)g(to)f +(log)523 4857 y(and)j(terminal)g(\(if)g Fg(\\mubytelog)g +Fh(is)g(positive\).)p eop +%%Page: 4 4 +4 3 bop 523 220 a Fb(4)186 b(P)l(etr)20 b(Ol)972 221 +y(\317)976 220 y(s)1006 221 y(\302)1006 220 y(ak)639 +440 y Fh(If)43 b(your)h(operating)f(environment)g(uses)h(UTF)-8 +b(-8)43 b(encoding)h(then)f(the)g(two)g(bytes)523 540 +y Fg(^^c3^^81)18 b Fh(are)f(displayed)h(as)1517 523 y(\302)1512 +540 y(A.)30 b(Y)-8 b(ou)18 b(can)g(do)g(the)f(\252normal)h(things\272)h +(with)f(this)g(character)523 639 y(in)24 b(your)e(text)g(editor:)639 +788 y Fg(\\catcode)48 b(`)1119 771 y(\023)1119 788 y(A=11)95 +b(\\def\\my)1742 771 y(\023)1742 788 y(Asequence{...})639 +887 y(...)639 987 y(\\def\\run{\\futurelet)47 b(\\next)h(\\dotest})639 +1086 y(\\def\\dotest{\\ifx)f(\\next)1742 1070 y(\023)1742 +1086 y(A...})639 1186 y(\\run)879 1170 y(\023)879 1186 +y(Aha)639 1286 y(...)639 1385 y(\\uccode`)1023 1369 y(\023)1023 +1385 y(A=`)1167 1369 y(\023)1167 1385 y(A)h(\\lccode`)1647 +1369 y(\023)1647 1385 y(A=`\023)-48 b(a)47 b(\\sfcode`)2270 +1369 y(\023)2270 1385 y(A=999)639 1485 y(...)639 1633 +y Fh(This)19 b(behavior)g(is)h(very)e(desirable)h(for)g +Fg(csplain)g Fh(format)f(and)h Fg(cstrip)g Fh(test.)31 +b(Y)-8 b(ou)19 b(can)523 1733 y(convert)26 b(your)g(old)h +Fg(csplain)f Fh(documents)g(to)g(the)g(new)h(UTF)-8 b(-)o(8)27 +b(encoding)g(and)g(you)g(can)523 1832 y(process)i(them)g(by)g(the)g +Fg(csplain)g Fh(in)h(operating)f(environment)g(with)h(UTF)-8 +b(-)o(8)30 b(standard.)523 1932 y(Y)-8 b(ou)16 b(get)g(the)f +(absolutely)i(the)e(same)h(result)g(as)g(in)h(old)f(days.)30 +b(This)16 b(backward)g(compatibility)523 2032 y(is)24 +b(most)e(important)h(for)f(me.)639 2131 y(Next)h(example:)639 +2280 y Fg(\\mubyte)48 b(\\Alpha)239 b(^^ce^^91\\endmubyte)639 +2379 y(\\mubyte)48 b(\\Beta)287 b(^^ce^^92\\endmubyte)639 +2479 y(...)639 2578 y(\\mubyte)48 b(\\leftarrow)f +(^^e2^^86^^90\\endmubyte)639 2678 y(\\mubyte)h(\\uparrow)143 +b(^^e2^^86^^91\\endmubyte)639 2778 y(...)639 2926 y Fh(F)-5 +b(or)29 b(instance,)k(the)d(group)g(of)g(three)f(bytes)h +Fg(^^e2^^86^^90)f Fh(is)i(now)f(converted)f(to)523 3026 +y Fg(\\leftarrow)h Fh(control)g(sequence)h(and)g(this)g(control)f +(sequence)g(is)i(converted)d(back)h(to)523 3125 y Fg(^^e2^^86^^90)j +Fh(during)i Fg(\\write)f Fh(if)g Fg(\\mubyteout)j Fa(\263)h +Fh(3.)65 b(The)33 b(UTF)-8 b(-8)34 b(encoding)h(of)523 +3225 y(math)25 b(characters)f(are)g(implemented)h(by)g(this)g(way)-11 +b(,)25 b(see)g Fg(utf8raw.tex)g Fh(\256le)f(in)i(encT)3315 +3238 y(E)3355 3225 y(X)523 3324 y(distribution)d(and)g +Fg(math-example.tex)f Fh(for)h(more)f(complex)g(example.)639 +3424 y(The)h(UTF)-8 b(-8)23 b(encoding)h(tables)g(for)f(encT)1925 +3437 y(E)1965 3424 y(X)g(was)h(prepared)e(by)i(David)f(Ne)2992 +3425 y(\317)2994 3424 y(cas)h([6].)34 b(He)523 3524 y(has)28 +b(made)g(his)h(own)f(Python)g(script)g(which)g(converts)g(the)f +Fg(NamesList.txt)h Fh([7])g(with)523 3623 y(UNICODE)15 +b(declarations)i(of)e(characters)h(to)f(the)h Fg(\\mubyte)p +Fh(.)c(.)g(.)g Fg(\\endmubyte)i Fh(tables.)30 b(This)523 +3723 y(script)23 b(is)g(included)h(in)g(encT)1422 3736 +y(E)1462 3723 y(X)f(distribution.)639 3823 y(There)f(is)i(another)e +(way)h(of)f(declaration)h(of)g(math)g(symbols:)639 3971 +y Fg(\\mubyte)48 b(\\utfAlpha)143 b(^^ce^^91\\endmubyte)639 +4070 y(\\mubyte)48 b(\\utfBeta)191 b(^^ce^^92\\endmubyte)639 +4170 y(...)639 4270 y(\\def\\uftAlpha{\\ensuremathmode)47 +b(\\Alpha})639 4369 y(\\def\\uftBeta{\\ensuremathmode)g(\\Beta})639 +4469 y(...)639 4569 y(\\def\\ensuremathmode)g(#1{\\ifmmode)h(#1\\else)f +($#1$\\fi})639 4717 y Fh(This)29 b(second)h(solution)f(is)h(more)f +(robust)f(because)h(you)h(can)f(write)g(math)g(symbol)h(in)523 +4816 y(UTF)-8 b(-8)34 b(encoding)g(without)g(a)g(need)g(to)f(start)h +(the)f(math)h(mode)f(explicitly)-11 b(.)66 b(Note)34 +b(that)523 4916 y(these)27 b(symbols)i(are)f(displayed)g(as)g(natural)h +(math)f(symbols)g(in)h(your)f(text)f(editor)-9 b(.)46 +b(I)28 b(did)p eop +%%Page: 5 5 +5 4 bop 1837 220 a Fb(Second)21 b(version)f(of)h(encT)2586 +232 y(E)2623 220 y(X:)f(UTF)-7 b(-8)20 b(support)186 +b(5)523 440 y Fh(not)22 b(use)h(this)f(solution)h(in)g(my)f(macros)h +(distributed)e(with)i(encT)-8 b(eX)21 b(because)h(this)h(concept)523 +540 y(is)k(not)g(compatible)f(with)h(common)f(T)1751 +553 y(E)1791 540 y(X)h(documents)g(where)f(all)h(math)g(mode)f +(switches)523 639 y(are)d(explicitly)g(written.)523 880 +y Fe(4)100 b(More)29 b(funny)h(examples)523 1071 y Fh(Y)-8 +b(ou)18 b(can)h(use)g(encT)1127 1084 y(E)1167 1071 y(X)f(capability)h +(for)f(another)f(purposes)h(than)h(only)f(for)g(encoding.)31 +b(Look)523 1171 y(to)23 b(the)f(next)g(simple)i(example:)639 +1320 y Fg(\\mubyte)48 b(\\TeX)383 b(TeX\\endmubyte)639 +1420 y(\\mubyte)48 b(\\copyright)95 b(\(C\)\\endmubyte)639 +1519 y(\\mubyte)48 b(\\dots)335 b(...\\endmubyte)639 +1669 y Fh(If)26 b(you)h(write)f(\252)p Fg(TeX)48 b(and)g(friends)p +Fh(\272)27 b(\(without)f(backslash\))g(then)g(input)h(processor)523 +1768 y(of)22 b(encT)785 1781 y(E)825 1768 y(X)g(converts)f(this)i +(stream)e(to)h Fg(\\TeX)p Fh(,)g Fa(\341)p Fd(space)p +Fa(\361)p Fh(,)h Fg(a)o Fh(,)g Fg(n)p Fh(,)f Fg(d)p Fh(,)h +Fa(\341)p Fd(space)p Fa(\361)p Fh(,)f Fg(f)p Fh(,)g Fg(r)p +Fh(,)h(etc.)31 b(This)22 b(is)523 1868 y(desired)f(behavior)-9 +b(.)31 b(Moreover)-9 b(,)20 b(if)h Fg(\\mubyteout)i Fa(\263)f +Fh(3)g(then)f(the)g Fg(\\TeX)g Fh(control)g(sequence)523 +1968 y(is)c(not)e(expanded)g(during)i Fg(\\write)f Fh(and)g(it)g(is)h +(converted)e(back)h(to)f(its)h(input)h(byte)e(sequence)523 +2067 y(\252)p Fg(TeX)p Fh(\272.)44 b(On)26 b(the)g(other)f(hand,)j(if)e +(you)h(write)f Fg(\\LaTeX)p Fh(,)h(then)f(the)g(input)h(is)g(converted) +e(to)523 2167 y(two)19 b(control)g(sequences)h Fg(\\La\\TeX)f +Fh(and)h(it)f(is)h(not)f(desired.)31 b(Y)-8 b(ou)19 b(can)h(solve)f +(this)h(problem)523 2267 y(by)j(de\256ning)g(the)g(\252)p +Fg(\\La)p Fh(\272)h(macro)e(or)h(you)g(can)g(declare:)639 +2416 y Fg(\\mubyte)48 b(\\LaTeX)287 b(LaTeX\\endmubyte)639 +2516 y(\\mubyte)48 b(\\LaTeXe)239 b(LaTeX2e\\endmubyte)639 +2665 y Fh(Note)16 b(that)f(both)g(byte)g(sequences)h(in)g(this)g +(example)f(begin)i(by)e(the)g(same)h(text)f(\252)p Fg(LaTeX)p +Fh(\272.)523 2765 y(If)25 b(the)h(two)f(characters)g(\252)p +Fg(2e)p Fh(\272)i(follow)e(immediatelly)i(then)e Fg(\\LaTeXe)h +Fh(control)f(sequence)523 2864 y(is)k(generated)g(\(by)f(second)h(line) +h(of)e(this)h(example\))f(else)h Fg(\\LaTeX)g Fh(control)f(sequence)h +(is)523 2964 y(generated.)j(The)22 b(order)g(of)g(the)h(lines)h(in)f +(this)g(example)g(is)g(unimportant.)639 3064 y(What)39 +b(happens,)k(if)d(this)f(setting)h(is)f(active)h(and)f(you)h(write)e +Fg(\\LaTeX)h Fh(\(including)523 3163 y(backslash\)?)32 +b(Nothing)22 b(bad.)32 b(The)21 b(empty)g(control)g(sequence)g(before)f +(generated)h(control)523 3263 y(sequence)28 b Fg(\\LaTeX)g +Fh(is)h(suppressed)f(by)g(encT)1992 3276 y(E)2033 3263 +y(X,)g(it)g(means)h(that)f(only)g Fg(\\LaTeX)g Fh(control)523 +3362 y(sequence)23 b(is)h(the)e(result)h(of)g(the)f(conversion.)639 +3462 y(I)16 b(implemented)e(program)h Fg(vlna)g Fh(adding)i(tildes)e +(after)g(Czech)g(one-letter)g(prepositions)523 3562 y(\(v)-10 +b(,)32 b(k,)h(s,)g(u,)g(o,)g(z\))d(entirely)h(in)g(encT)1716 +3575 y(E)1756 3562 y(X)g(using)h Fg(\\mubyte)o Fh(.)56 +b(It)30 b(correctly)g(handles)h(math)523 3661 y(mode)23 +b(\(no)g(tildes)h(are)f(added)h(there\).)32 b(It's)23 +b(available)i(in)f(the)f(encT)2659 3674 y(E)2699 3661 +y(X)g(distribution)h(as)g(an)523 3761 y(example)f(of)f(crazy)h +(application)g(of)g(encT)1847 3774 y(E)1887 3761 y(X)g(in)g(the)g +(\256le)g Fg(vlna.tex)o Fh(.)523 4002 y Fe(5)100 b(R)l(eferences)529 +4193 y Fh(1.)41 b Fg(http://www.olsak.net/enctex.html)p +Fh(,)21 b(the)h(main)i(page)e(of)g(encT)3019 4206 y(E)3060 +4193 y(X)g(project.)529 4292 y(2.)41 b(P)-5 b(etr)23 +b(Ol)884 4293 y(\317)888 4292 y(s)921 4293 y(\302)921 +4292 y(ak:)33 b Fd(EncT)1229 4305 y(E)1268 4292 y(X)n(\320A)24 +b(little)e(extension)g(of)h(T)2131 4305 y(E)2169 4292 +y(X)p Fh(,)h(in:)33 b(TUGboat,)639 4392 y(vol.)24 b(19/4,)f(pp.)g +(336\261371.)529 4491 y(3.)41 b Fg +(ftp://ftp.math.feld.cvut.cz/pub/cstex/base/cstrip.tar.gz)p +Fh(.)529 4591 y(4.)g(Donald)23 b(Knuth:)33 b Fd(The)23 +b(T)1394 4604 y(E)1432 4591 y(Xbook)p Fh(.)529 4691 y(5.)41 +b Fg(http://www/trific.ath.cx/tex-mf/enctex/)529 4790 +y Fh(6.)g Fg(http://www/trific.ath.cx/)p Fh(,)22 b(David)h(Ne)2216 +4791 y(\317)2218 4790 y(cas)g(\261)g(home)f(page.)529 +4890 y(7.)41 b Fg(http://www.unicode.org/Public/UNIDATA/NamesList.txt)p +eop +%%Trailer +end +userdict /end-hook known{end-hook}if +%%EOF diff --git a/systems/enctex/eurotex2003-enctex.tex b/systems/enctex/eurotex2003-enctex.tex new file mode 100644 index 0000000000..e23edf3b93 --- /dev/null +++ b/systems/enctex/eurotex2003-enctex.tex @@ -0,0 +1,431 @@ +{\nopagenumbers} % use plain format, no LaTeX! cmd line: tex enctex + +%% My abbrevations: + +\def\UTF-{\hbox{UTF-}} +\def\spacebk{$\langle${\it space\/}$\rangle$} + +\input ofs [ffonts] % Charter je ve skupině free fonts + +\setfonts [Charter/10pt] % výchozí rodina +\setmath[//] % inicializace matematiky +\fontdef\tt [CMTypewriter/mag1.1] % strojopis, korekce střední výšky +\fontdef\verbtt [CMTypewriter-rm/8] % strojopis pro display ukázky +\fontdef\small [!/9] % zmenšení pro abstrakt a záhlaví +\addcmd \small {\baselineskip11pt \rm \def\mathversion{normal}\setmath[//]} +\fontdef\fontsekce [!/12] % pro nadpisy sekcí +\addcmd \fontsekce {\bf \let\it=\bi \def\mathversion{bold}\setmath[//]} +\fontdef\fonttitul [!-bf/14.4] % titul + +\def\starthead{\global\headline= + {\small \ifodd\pageno \hfil \thetitul \headspace \the\pageno + \else \the\pageno \headspace \theauthor \hfil \fi}} +\headline={\hfil\starthead} +\def\headspace{\hskip2.5em\relax} +\def\makeheadline{\vbox to0pt{\vskip-25pt + \line{\vbox to8.5pt{}\the\headline}\vss}\nointerlineskip} +\footline={\setfonts[/7]\setmath[//]\baselineskip=9pt + \vbox{\hbox{\copytext}\hbox{\copykonvoj}}\hfil + \global\footline={}} +\def\lastpage{\advance\firstpage by\numpages \advance\firstpage by-1 + \the\firstpage} + +\def\copytext{Euro\TeX{} 2003} +\def\copykonvoj{} + + +%% PlainTeX macros. You can change it or omit it + +\hsize=12,2cm +\vsize=19,3cm +\hoffset=63pt +\voffset=43pt +\parindent=14pt + +\lineskiplimit=-10pt + +\exhyphenpenalty=10000 +\widowpenalty=10000 +\clubpenalty=10000 +\raggedbottom + +\newcount\subnum + +\def\subtit #1\par{\advance\subnum by1 + \removelastskip %\goodbreak + \vskip17pt plus2pt minus1pt\noindent{\fontsekce + \the\subnum\enspace\enspace #1}% + \par\nobreak\vskip11pt plus2pt minus1pt + \everypar{\setbox0=\lastbox \everypar={}}} +\def\reference {\subnum=-1 \kap Reference\par \small} +\def\bib #1 {\par\advance\subnum by1 \leftskip=\parindent + \noindent\llap{\expandafter \ifx \csname cit:#1\endcsname\relax + ??\else\csname cit:#1\endcsname\fi.\enspace}\ignorespaces} + +\def\titul #1 \par{\def\thetitul{#1} + \centerline{\fonttitul #1}\vskip20pt\relax} +\def\author #1 \par{\def\theauthor{#1} + \centerline{#1}\vskip10pt\relax} +\def\institut #1 \par{\centerline{#1}} +\def\email #1 \par{\centerline{Email: \tt #1}\vskip20pt\relax} +\def\abstract{\bgroup + \leftskip=3em \rightskip=3em + \noindent{\bf Abstract:}\enspace \ignorespaces} +\def\endabstract{\par \egroup\bigskip} +\def\url#1{{\tt#1}} + +%\font\fonttitul=cmb10 scaled\magstep3 +%\font\fontsekce=cmb10 scaled\magstep2 +%\font\verbtt=cmtt8 + +%% verbatim environment %% +\catcode`\"=13 +\def"{\hbox\bgroup\let"=\egroup\setverb\tt} +\def\setverb{\def\do##1{\catcode`##1=12}\dospecials\obeyspaces} +\def\begtt{\medskip\bgroup + \nobreak\setverb \parskip=0pt %\parindent=0pt + \catcode`\"=12\catcode`\~=13 \obeylines + \startverb} +{\catcode`\|=0 \catcode`\\=12 + |gdef|startverb#1\endtt{% + |tt#1|nobreak|egroup|penalty0|medskip|scannexttoken}} +{\obeyspaces\gdef {\ }} +\long\def\scannexttoken#1{\ifx#1\par\else\noindent#1\fi} + +%% lists %% +\def\begitems{\medskip\bgroup\catcode`\*=13 \narrower} +\def\enditems{\par\egroup\medskip} +{\catcode`\*=13 \gdef*{\par\noindent\llap{$\bullet$\ }\ignorespaces} +\gdef\numerate{% \numerate napsat těsně za \begitems + \def*{\par\advance\itemnum by1\noindent + \llap{\bf\the\itemnum. }\ignorespaces}}} + +%% bib and cite + +\def\citeref #1 #2 {\expandafter\def\csname cit:#1\endcsname{#2}} +\citeref enctex-url 1 +\citeref enctex1 2 +\citeref cstrip 3 +\citeref texbook 4 +\citeref yeti-enctex 5 +\citeref yeti-home 6 +\citeref nameslist 7 + +\def\cite#1{\expandafter\ifx \csname cit:#1\endcsname\relax + \message{Warning: cite{#1} is not defined}[??]% + \else [\csname cit:#1\endcsname]\fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\titul Second version of enc\TeX: \UTF-8 support + +\author Petr Ol\v s\'ak + +\institut Czech Technical University in Prague + +\email petr@olsak.net + +\abstract +The \UTF-8 encoding keeps the standard ASCII characters unchanged and +encodes the accented letters of our alphabets in two bytes. The +standard 8bit \TeX{} is not ready for the \UTF-8 input because it have to +manage the single character as two tokens. It means you cannot set the +"\catcode", "\uccode", etc. to these single characters and you cannot +do "\futurelet" of the next character in normal sense. The second +version of my enc\TeX{} solves these problems. + +The enc\TeX{} is full backward compatible with the original \TeX. It adds +ten new primitives by which you can set or read the conversion +tables used by input processor of \TeX{} or used during output to the +terminal, log and "\write" files. + +The second version gives possibility to convert the multi-byte +sequences to one byte or to control sequence. You can implement up to +256 \UTF-8 codes as one byte and unlimited number of other \UTF-8 codes as +a control sequence. All internals in 8bit \TeX{} are working in the same +way as if ``normal one byte encoding'' of input files is used. + +I think that the \UTF-8 encoding will be used more common. In such +situation, there is no another way than to modify the input processor +of \TeX{} otherwise the 8bit \TeX{} will dead in short time. +\endabstract + + +\subtit What is enc\TeX? + +Enc\TeX{} is a \TeX{} extension which allows re-encoding of input stream on +input processor of \TeX{} (before tokenization) and backward re-encoding of output stream during +"\write" and output to the terminal and log. It is implemented as the +patch to the change file "tex.ch". The patches are ready for web2c +distribution on~\cite{enctex-url} and (may be) enc\TeX{} +becomes as a standard web2c extension like mik\TeX{}. Try to use the +"-enc" option on command line to test if your \TeX{} is equipped with this +extension. If not, you can get and apply the patches and rebuild +\TeX{} binaries. The patches affect \TeX{}, e\TeX{}, pdf\TeX{} and pdfe\TeX{} +programs. All these programs will dispose of this extension. + +First version of enc\TeX{} was released in 1997. This version was able to +do only byte to byte conversion by affecting the \TeX{}'s internal {\it xord\/} +and {\it xchr\/} vectors. Enc\TeX{} introduced three primitives in its +first version: +"\xordcode" (reads or sets the values of {\it xord\/} vector for input +re-encoding), "\xchrcode" (reads or sets the values of {\it xchr\/} +vector for output re-encoding) and "\xprncode" (reads or sets the +values of newly introduced {\it xprn\/} vector which controls the +``print-ability'' of characters---it controls the possibility of the +character conversion to "^^ab" form on output side). See my article +\cite{enctex1} for more details. + +The first version of enc\TeX{} was not widely used because the TCX +tables was renovated in web2c distribution immediately after +enc\TeX{} was released. Roughly speaking, the TCX tables do the same +work as first version of my enc\TeX{} but less flexible. There was no +reason to combine the TCX tables with enc\TeX{}. + +The second version of enc\TeX{} was designed and prepared by me in +December 2002 and released in January 2003. This version introduces +seven more primitives in order to user can control the multi-byte input +re-encoding and reverse output re-encoding. Groups of bytes on input stream +can be converted to one byte or to control sequence. The conversion is +done before tokenization but the control sequence generated by this +conversion is not re-tokenized again and token processor does not go +to ``ignoring spaces'' state after such control sequence. The backward +conversion during "\write" allows you to convert one byte or control +sequence to the original group of bytes. + +The second version of enc\TeX{} is backward compatible +with the first one, of course. +The detail documentation is available on \cite{enctex-url}. +The very nice on-line html documentation written by David Ne\v cas +(Yeti) is available on~\cite{yeti-enctex} + + +\subtit Motivation + +I am maintainer of a "csplain" format---the basic part of the +CS\TeX{} package (for Czech and Slovak users). The "csplain" is +similar as very known plain\TeX{} format (by Don Knuth, +\cite{texbook}). Moreover, "csplain" solves the processing of all letters +from Czech and Slovak alphabets. It means that the \hbox{CS-font}s +(encoded by \hbox{ISO-8859-2}) is used by default instead of Computer +Modern fonts, the hyphenation tables for Czech and Slovak languages +are inputted in the same encoding and all Czech and Slovak letters +have to be treated as single non-composite symbols. These symbols have +"\catcode" set to 11 (letter), thus they can be used in control +sequences too. + +Czech and Slovak alphabets are encoded by many mutual incompatible +standards and pseudo-standards in various operating systems and +operating environments. All these encodings +have to be converted to internal \hbox{ISO-8859-2} in "csplain" at input +processor level and they have to be converted back to the input +encoding during "\write", terminal and log output. Only this +rule keeps the independence of the \TeX{} processing on the +operating system. + +Note: if the source text of the Czech or Slovak document is +transported from one environment to another, the re-encoding to the +standard of the target environment is done automatically or by user +manually. The main principle is that the Czech and Slovak +characters in source text have to be displayed correctly +by used operating environment before it is processed by "csplain". + +I have created the "cstrip" test in 1998 \cite{cstrip}. You can verify +if you are really using the "csplain" format by this test. +This test verifies if \TeX{}'s input processor is set correctly +depending on your operating environment: all Czech and +Slovak characters have to be mapped into \hbox{ISO-8859-2} and they have to be +written back to the input encoding on terminal, log and "\write" files. +The "^^ab" form is not permitted for Czech and Slovak letters. + +We were able to set the input processor properly for "csplain" in old +\TeX{} distributions. For example em\TeX{} have used TCP tables. On the +other hand the web2c distribution have had disabled its TCX tables in +1997 thus users was not able to implement the "csplain" format +correctly in operating environments where different encoding of our +alphabets from \hbox{ISO-8859-2} were used. This was the main motivation of +enc\TeX{} extension of \TeX{}. + +Now, the new encoding standard derived from UNICODE and named \UTF-8 is +used very often. The non-ASCII characters are encoded in two or more +bytes here. If this encoding standard is used in our operating +environment then we need to be able to set multi-byte conversion in +input processor of \TeX{}. There is no other way to carry out the +"cstrip" test. This was my motivation of second version of the enc\TeX{}. + + +\subtit Multi-byte re-encoding + +The detail documentation is included in enc\TeX{} package. Thus, +only a short overview of the principles is presented here. + +Second version of enc\TeX{} introduces seven new \TeX{} primitives to +define and control re-encoding between multi-byte input/output and +\TeX{} internal representation. These are: + +\begitems +* "\mubyte" and "\endmubyte" defining the conversions, +* "\mubytein", an integer register controlling input conversion, +* "\mubyteout", an integer register controlling output conversion, +* "\mubytelog", an integer register controlling output to terminal + and log file, +* "\specialout", an integer register controlling + "\special" argument treatment, and +* "\noconvert", a primitive suppressing output conversion. +\enditems + +The default values of all the new registers are such that enc\TeX{} +behaves compatibly with unmodified \TeX{} (incidentally, it means +zeroes). + +You can set the conversion table by the couple +"\mubyte" and "\endmubyte". Examples: + +\begtt +\mubyte ^^c1 ^^c3^^81\endmubyte % Aacute +\mubyte ^^c4 ^^c3^^84\endmubyte % Adieresis +... +\endtt + +It means that for example the group of two bytes "^^c3^^81" will be +converted to one byte "^^c1" (if "\mubytein" is positive) and this +byte is converted back to byte sequence "^^c3^^81" during "\write" (if +"\mubyteout" is positive) and to log and terminal (if "\mubytelog" is +positive). + +If your operating environment uses \UTF-8 encoding then the two bytes +"^^c3^^81" are displayed as \'A. You can do the ``normal things'' +with this character in your text editor: + +{\catcode`X=13 \def X{\'A} \catcode`Y=13 \def Y{\'a} +\begtt +\catcode `X=11 \def\myXsequence{...} +... +\def\run{\futurelet \next \dotest} +\def\dotest{\ifx \next X...} +\run Xha +... +\uccode`X=`X \lccode`X=`Y \sfcode`X=999 +... +\endtt +\par} + +This behavior is very desirable for "csplain" format and "cstrip" +test. You can convert your old "csplain" documents to the new \UTF-8 +encoding and you can process them by the "csplain" in operating +environment with \UTF-8 standard. You get the absolutely the same +result as in old days. This backward compatibility is most +important for me. + +Next example: + +\begtt +\mubyte \Alpha ^^ce^^91\endmubyte +\mubyte \Beta ^^ce^^92\endmubyte +... +\mubyte \leftarrow ^^e2^^86^^90\endmubyte +\mubyte \uparrow ^^e2^^86^^91\endmubyte +... +\endtt + +For instance, the group of three bytes "^^e2^^86^^90" is now +converted to "\leftarrow" control sequence and this control sequence +is converted back to "^^e2^^86^^90" during "\write" if +"\mubyteout"${}\geq 3$. The \UTF-8 encoding of math characters are +implemented by this way, see "utf8raw.tex" file in enc\TeX{} distribution +and "math-example.tex" for more complex example. + +The \UTF-8 encoding tables for enc\TeX{} was prepared by +David Ne\v cas~\cite{yeti-home}. +He has made his own Python script which converts the +"NamesList.txt" \cite{nameslist} with UNICODE declarations of +characters to the "\mubyte"\dots"\endmubyte" tables. +This script is included in enc\TeX{} distribution. + +There is another way of declaration of math symbols: + +\begtt +\mubyte \utfAlpha ^^ce^^91\endmubyte +\mubyte \utfBeta ^^ce^^92\endmubyte +... +\def\uftAlpha{\ensuremathmode \Alpha} +\def\uftBeta{\ensuremathmode \Beta} +... +\def\ensuremathmode #1{\ifmmode #1\else $#1$\fi} +\endtt + +This second solution is more robust because you can write math symbol +in \UTF-8 encoding without a need to start the math mode +explicitly. Note that these symbols are displayed as natural math symbols +in your text editor. I did not use this solution in my macros +distributed with encTeX{} because this concept is not compatible +with common \TeX{} documents where all math mode switches are +explicitly written. + + +\subtit More funny examples + +You can use enc\TeX{} capability for another purposes than only for +encoding. Look to the next simple example: + +\begtt +\mubyte \TeX TeX\endmubyte +\mubyte \copyright (C)\endmubyte +\mubyte \dots ...\endmubyte +\endtt + +If you write ``"TeX and friends"'' (without backslash) then input +processor of enc\TeX{} converts this stream to "\TeX", \spacebk, "a", +"n", "d", \spacebk, "f", "r", etc. This is desired behavior. Moreover, if +"\mubyteout"${}\geq 3$ then the "\TeX" control sequence is not +expanded during "\write" and it is converted back to its input byte +sequence ``"TeX"''. On the other hand, if you write "\LaTeX", then the +input is converted to two control sequences "\La\TeX" and it is not +desired. You can solve this problem by defining the ``"\La"'' macro or +you can declare: + +\begtt +\mubyte \LaTeX LaTeX\endmubyte +\mubyte \LaTeXe LaTeX2e\endmubyte +\endtt + +Note that both byte sequences in this example begin by the same text +``"LaTeX"''. If the two characters ``"2e"'' follow immediatelly then +"\LaTeXe" control sequence is generated (by second line of this +example) else "\LaTeX" control sequence is generated. +The order of the lines in this example is unimportant. + +What happens, if this setting is active and you write "\LaTeX" +(including backslash)? Nothing bad. The empty control sequence before +generated control sequence "\LaTeX" is suppressed by enc\TeX{}, it means +that only "\LaTeX" control sequence is the result of the conversion. + +I implemented program "vlna" adding tildes after +Czech one-letter prepositions (v, k, s, u, o, z) entirely +in enc\TeX{} using "\mubyte". It correctly handles math mode +(no tildes are added there). It's available in the enc\TeX{} +distribution as an example of crazy application of enc\TeX{} +in the file "vlna.tex". + + +\subtit References + +\bib enctex-url \url{http://www.olsak.net/enctex.html}, + the main page of enc\TeX{} project. +\bib enctex1 Petr Ol\v s\'ak: {\it Enc\TeX---A little extension of \TeX}, + in: TUGboat, \hfil\break vol.~19/4, pp.~336--371. +\bib cstrip \url{ftp://ftp.math.feld.cvut.cz/pub/cstex/base/cstrip.tar.gz}. +\bib texbook Donald Knuth: {\it The \TeX{}book}. +\bib yeti-enctex \url{http://www/trific.ath.cx/tex-mf/enctex/} +\bib yeti-home \url{http://www/trific.ath.cx/}, + David Ne\v cas -- home page. +\bib nameslist \url{http://www.unicode.org/Public/UNIDATA/NamesList.txt} + +\end + + + + + + + |