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 /language/french |
Initial commit
Diffstat (limited to 'language/french')
102 files changed, 48541 insertions, 0 deletions
diff --git a/language/french/e-french/README b/language/french/e-french/README new file mode 100644 index 0000000000..0ea8988c3e --- /dev/null +++ b/language/french/e-french/README @@ -0,0 +1,108 @@ + eFrench - French typography for LaTeX + + Version 6.101 2019-05-30 + +e-French, FRENCHLE and FRENCH. + ------------------- + The package e-french installed gives access to both + frenchle.sty and french.sty. + --------------------------- + +Therefore the package with frenchle disapeard to be placed +under THE obsolete packages. + + +HISTORY from FrenchPro to e-French + +The eFrench projet is born in order to keep up to date French for (La)Tex and +maintain it available for future users. FrenchPro for (La)Tex, is the result +of a fifteen years work of its creator, Bernard Gaulle + +Beginning 1999, the FrenchPro package was marketted as shareware, and Bernard +Gaulle alone owner of all rights. He died Aug. 2nd 2007. His wife Catherine +Gaulle, the heiress, gave authorization in that matter to the eFrench group in +order to maintain the whole work in the future. + +The project is maintained by a small group started by Laurent Bloch and hosted +by Tux Family: https://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/, +email: efrench@lists.tuxfamily.org. + + + The credit for this piece of work remains with + the first and main author, Bernard Gaulle. + +LICENCE + +Copyright 2010 eFrench Group +This work may be distributed and/or modified under the conditions of the +LaTeX Project Public License, either version 1.3 of this license or +(at your option) any later version. The latest version of this license +is in http://www.latex-project.org/lppl.txt and version 1.3 or later +is part of all distributions of LaTeX version 2005/12/01 or later. + +This work has the LPPL maintenance status «maintained». +The Current Maintainer of this work is Raymond Juillerat +(raymond -at- juil-dot-ch). + +DISTRIBUTION + +The distribution includes an unique package for both Unix (Linux, OSx) +or Windows operating systems. Compatibility have been tested +under MikTeX (2.8 and 2.9) and TeXLive (Ubuntu). +The user's manual is named efrench.pdf, documentation of french.sty +(source) is named french_doc.pdf. A FAQ explains the context in which +these packages are to be used. + +** The install directory + Short documentations for beginners are written in +- in english: MiniDoc_Unx.txt for Unix, + MiniDoc_Win.txt for Windows + FilesInTDS.txt as further explanation +- in french : MiniDocEf_Unx.pdf for Unix, + MiniDocEf_Win.pdf for Windows + Because pdf better for languages using + non 7-bits accented characters like french. + +** The french directory +The french directory with its content is to be placed in a correct +place in the Tex Directory Structure, normally under .../tex/plain +resulting in the branch .../tex/plain/french, +- see also FilesInTDS.txt in the install directory + +** The doc directory +The documentation is provided with the sources as required under +LPPL agreement +- User's manuals are under "/manuels". +- Short documentation + - histoire.html is the history of french.sty written in french + an abstract is given in changements.html + - lisez-moi.html explains why this name "efrench" + - licence.html explains the licence-history (french and english) + In order to render non-ascii accented characters in french, + html instead text for these short documentations + + +MIGRATING FROM FRENCHPRO + + No problem for the user. French.sty is the FrenchPro's version +with shareware test removed and updated to a new version. + +MIGRATING FROM FRENCHLE + It is not neccessary to migrate, in e-french frenchle.sty is as +easy accessible as french.sty + But for a use with XeLaTeX please migrate to french.sty + If you migrate there are only these things to do: +- replace "frenchle" with "french" in the \usepackage calling it. +- if in use please rename frenchle.cfg to french.cfg and adapt it. + - Within it, please desactivate the things with french + guillemets (chevrons), if they were active. + +DEVELOPMENTS FOR A BETTER COMPATIBILITY WITH XELATEX / BIBLATEX + +The version 6.1 takes in account the the interchartoks used by +BibLaTeX with XeLaTeX. See the manual efrench.pdf under the +corresponding indexes. + +Enjoy. Raymond Juillerat for the e-french group + raymond(at)juil(dot)ch + diff --git a/language/french/e-french/README-TDS b/language/french/e-french/README-TDS new file mode 100644 index 0000000000..251f1ca156 --- /dev/null +++ b/language/french/e-french/README-TDS @@ -0,0 +1,22 @@ + eFrench distribution Files in TDS +_______________________ _____________________________ + +/texmf/doc/*.* -> doc/generic/e-french/*.* +/texmf/makeindex/*.ist -> makeindex/e-french/*.ist +/texmf/tex/*.* -> tex/generic/e-french/*.* + + = = = Could be also placed in a local directory = = = +- - - - Linux - Unix TeXLive +/bin/unix/makefrindex -> .../bin/i386-linux/* + +- - - - Windows MiKTeX +/bin/windows/makefrindex.cmd -> ...\MiKTeX*.*\miktek\bin\*.* + + = = = are not meant for TDS = = = +README-TDS (this file) +/install +README +- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +for torture-tests to be transfered by the user if wished +doc/generic/e-french/test/ -> a local workplace + diff --git a/language/french/e-french/bin/linux/makefrindex b/language/french/e-french/bin/linux/makefrindex new file mode 100755 index 0000000000..9f71df317f --- /dev/null +++ b/language/french/e-french/bin/linux/makefrindex @@ -0,0 +1,2 @@ +#!/bin/bash +makeindex -s fridx1.ist $1.idx diff --git a/language/french/e-french/bin/windows/makefrindex.cmd b/language/french/e-french/bin/windows/makefrindex.cmd new file mode 100755 index 0000000000..194f5871f1 --- /dev/null +++ b/language/french/e-french/bin/windows/makefrindex.cmd @@ -0,0 +1 @@ +makeindex -s fridx1.ist %1 diff --git a/language/french/e-french/install/MiniDocEf_Lnx.pdf b/language/french/e-french/install/MiniDocEf_Lnx.pdf Binary files differnew file mode 100644 index 0000000000..3f6fb4264b --- /dev/null +++ b/language/french/e-french/install/MiniDocEf_Lnx.pdf diff --git a/language/french/e-french/install/MiniDocEf_Win.pdf b/language/french/e-french/install/MiniDocEf_Win.pdf Binary files differnew file mode 100644 index 0000000000..6849355a84 --- /dev/null +++ b/language/french/e-french/install/MiniDocEf_Win.pdf diff --git a/language/french/e-french/install/MiniDocMkfr.pdf b/language/french/e-french/install/MiniDocMkfr.pdf Binary files differnew file mode 100644 index 0000000000..b43da4dc57 --- /dev/null +++ b/language/french/e-french/install/MiniDocMkfr.pdf diff --git a/language/french/e-french/install/MiniDoc_Unx.txt b/language/french/e-french/install/MiniDoc_Unx.txt new file mode 100644 index 0000000000..5e46b52171 --- /dev/null +++ b/language/french/e-french/install/MiniDoc_Unx.txt @@ -0,0 +1,48 @@ +How to install eFrench under Linux +june 6th 2012, for eFrench, RayJ +---------------------------------- + + This eFrench installation has been tested with TeXLive +but should be valid for all Linux systems. +This distribution abides by the LPPL copyright. + +Installation instructions +========================= + +Put the french directory (and if necessary also the +msg directory) in place beeing accessible by +the \input command. Under TeXLive, for example +here (~ is the user's directory) + ~/texmf/tex +or here + ~/texmf/tex/plain +(or in the system TDS under tex/plain) +This way to do has been sucessfully tested under Ubuntu (9 to 11) + +Notice +------ +If for any reason french.sty after installation announces +that msg.sty or msg-msg.tex is missing, then read the directives +from Probl_Msg.txt, here in the install directory. + +PS : +1. Messages are ANSI coded (latin9) +2. The language.dat file must define french as a + language, it's generally the case +3. For frenchle users a conflict can arise with the default frenchle + (installed for example under /usr/share/texmf-texlive/tex/latex/frenchle) + A solution is to suppress that directory with its whole content. + (followed by $sudo texhash) + Another (easier) is to use french.sty instead of frenchle.sty + +Documentation +============= + The user's manuals efrench.pdf and frenchle.pdf are in french. + Frenchle.pdf is included because it is also valid for efrench + as a good introduction to it's possibilities. And frenchle + is now a part of e-french. + + -- rayj for the eFrench group, all questions to be sent to +Laurent Bloch <http://www.laurentbloch.org/MySpip3/spip.php?article166> + +(/usr/share/texmf-texlive/tex/latex/frenchle/frenchle.cfg) diff --git a/language/french/e-french/install/MiniDoc_Win.txt b/language/french/e-french/install/MiniDoc_Win.txt new file mode 100644 index 0000000000..15eef29850 --- /dev/null +++ b/language/french/e-french/install/MiniDoc_Win.txt @@ -0,0 +1,45 @@ +How to install eFrench under Windows +june 6th 2012, for eFrench, RayJ +---------------------------------- + + This eFrench installation has been tested with MiKTeX +but should be valid for all TeX motors. +This distribution abides by the LPPL copyright. + +Installation instructions +========================= + +Put the french directory (and if necessary also the msg directory) +in a place beeing accessible by the \input command. +Under MikTeX 2.8, for example here + c:\LocalTexMf\tex\ +or here + c:\LocalTexMf\tex\plain\ +(or in the system TDS under tex\plain\) + + and announce it to MikTeX +(Maintenance - Setting - Roots - Add ...) + + +This way to do has also been tested under MikTeX 2.9 + +Notice +------ +If for any reason french.sty after installation announces +that msg.sty or msg-msg.tex is missing, then read the directives +from Probl_Msg.txt, here in the install directory. + +PS : +1. Messages are ANSI coded (latin9) +2. The language.dat file must define french as a + language, it's generally the case + +Documentation +============= + The user's manuals efrench.pdf and frenchle.pdf are in french. + Frenchle.pdf is included because it is also valid for efrench + as a good introduction to it's possibilities. And frenchle + is now a part of e-french. + + -- rayj for the eFrench group, all questions to be sent to +Laurent Bloch <http://www.laurentbloch.org/MySpip3/spip.php?article166> diff --git a/language/french/e-french/install/Probl_Msg.pdf b/language/french/e-french/install/Probl_Msg.pdf Binary files differnew file mode 100644 index 0000000000..2441b7c648 --- /dev/null +++ b/language/french/e-french/install/Probl_Msg.pdf diff --git a/language/french/e-french/install/Probl_Msg.txt b/language/french/e-french/install/Probl_Msg.txt new file mode 100644 index 0000000000..380541af01 --- /dev/null +++ b/language/french/e-french/install/Probl_Msg.txt @@ -0,0 +1,27 @@ +Problems in french.sty with msg.sty and msg-msg.tex +=================================================== + +Maybe, after having installed the e-french package that french +announces that msg.sty is missing or that msg-msg.tex is missing. +With the new versions of TeXLive, no such problem, +by MikTeX v2.9, only msg-msg.tex is missing. +With a recent update or the newer versions it's OK. + +If msg.sty is missing, msg-msg.tex is generally also missing. +This would be the cas by older or other environnements. +In any case, these files can be found on the internet. +One possibility is CTAN, for exemple to get from +<http://mirror.ctan.org/macros/latex/contrib/msg/> +or from +<http://mirror.ctan.org/macros/latex/contrib/msg.zip> +at least the files msg.ins, msg.dtx and msgfiles.dtx. +and to download them in a work directory + Then with the command + latex msg.ins +you have the missing files msg.sty and msg-msg.tex, +in order to put them in your french directory. +A second possibility is to download them from +<http://www.efrench.org/distributions/e-fr_msg/> + + + diff --git a/language/french/e-french/texmf/doc/Probl_Msg.pdf b/language/french/e-french/texmf/doc/Probl_Msg.pdf Binary files differnew file mode 100644 index 0000000000..c34461c0c7 --- /dev/null +++ b/language/french/e-french/texmf/doc/Probl_Msg.pdf diff --git a/language/french/e-french/texmf/doc/Probl_Msg.txt b/language/french/e-french/texmf/doc/Probl_Msg.txt new file mode 100644 index 0000000000..353787d89f --- /dev/null +++ b/language/french/e-french/texmf/doc/Probl_Msg.txt @@ -0,0 +1,25 @@ +Problems in french.sty with msg.sty and msg-msg.tex +=================================================== + +Maybe, after having installed the e-french package that french +announces that msg.sty is missing or that msg-msg.tex is missing. +With the new versions of TeXLive, no such problem, +by MikTeX v2.9, only msg-msg.tex is missing. +With a recent update or the newer versions it's OK. + +If msg.sty is missing, msg-msg.tex is generally also missing. +This would be the cas by older or other environnements. +In any case, these files can be found on the internet. +One possibility is CTAN, for exemple to get from +<http://mirror.ctan.org/macros/latex/contrib/msg/> +at least the files msg.ins, msg.dtx and msgfiles.dtx. +and to download them in a work directory + Then with the command + latex msg.ins +you have the missing files msg.sty and msg-msg.tex, +in order to put them in your french directory. +A second possibility is to download them from +<http://www.efrench.org/distributions/e-fr_msg/> + + + diff --git a/language/french/e-french/texmf/doc/changements.html b/language/french/e-french/texmf/doc/changements.html new file mode 100644 index 0000000000..a7bb3c9842 --- /dev/null +++ b/language/french/e-french/texmf/doc/changements.html @@ -0,0 +1,113 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> +<head><title>changements e-French</title> +<meta name="author" content="Raymond Juillerat"> +<meta name="copyright" content="LPPL - e-French"> +<meta name="keywords" content="FrenchPro eFrench LaTeX TeX LPPL"> +<meta name="changements" content="The package e-French is under LPPL copyright"> +<meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> +<meta http-equiv="content-type" content="text/html"> +<meta http-equiv="content-type" content="text/html; charset=UTF-8" /> +</head> +<body> +<h2>Historique très résumé</h2> +L'historique svn complet du projet est disponible à l'adresse : +<a href="http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/" title="dépôt"> +http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/</a> <BR /> + +Ce fichier en est un résumé lisible pour les utilisateurs, présenté par ordre +chronologique inverse.<BR /> +<table border=0 summary=""> + <tr> + <td> </td> + </tr> + <tr> + <td colspan="3">2015-10-30</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">Mise à jour complète pour aboutir à une version 6,0 :</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2"> - frenchle.sty, french.sty, frenchle.pdf, french.pdf </td> + </tr> + <tr> + <td> </td> + </tr> + <tr> + <td colspan="3">2015-08-15</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">E-french fait partie des extension de TeXLive et de MiKTeX.</td> + </tr> + <tr> + <td> </td> + </tr> + <tr> + <td colspan="3">2012-05-28</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">Le manuel frenchle.pdf pour frenchle dont Bernard Gaulle s'est occupé jusqu'à + fin mai 2007 a été repris et mise à jour.</td> + </tr> + <tr> + <td> </td> + </tr> + <tr> + <td colspan="3">2012-03-07</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">la foire aux questions (FAQ) dont Bernard Gaulle s'est occupé jusqu'à + fin mai 2007 a été reprise et mise à jour.</td> + </tr> + <tr> + <td> </td> + </tr> + <tr> + <td colspan="3">2011-09-26</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">révision à cause du conflit dû à \arabic aussi utilisé pour la langue + arabe. Il faut utiliser \arabicLang à la place.<br /> + \<langue>Lang corrigerait + tout autre conflit de ce genre, s'il y en a</td> + </tr> + <tr> + <td> </td> + </tr> + <tr> + <td colspan="3">2010-08-07</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">première version sur le CTAN</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">révision de l'installateur</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">suppression du contrôle de licence</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">révision de l'installateur</td> + </tr> + <tr> + <td> </td> + </tr> + <tr> + <td colspan="3">2009-11-11</td> + </tr> + <tr> + <td valign="top"> -</td> + <td colspan="2">naissance officielle du projet. </td> + </tr> +</table> +</body></html> + diff --git a/language/french/e-french/texmf/doc/histoire.html b/language/french/e-french/texmf/doc/histoire.html new file mode 100644 index 0000000000..dd436804c4 --- /dev/null +++ b/language/french/e-french/texmf/doc/histoire.html @@ -0,0 +1,84 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html> +<head><title>historique e-French</title> +<meta name="author" content="Raymond Juillerat"> +<meta name="copyright" content="e-French"> +<meta name="keywords" content="FrenchPro eFrench LaTeX TeX LPPL"> +<meta name="description" content="The package e-French is under LPPL copyright"> +<meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> +<meta http-equiv="content-type" content="text/html"> +<meta http-equiv="content-type" content="application/xhtml+xml"> +<meta http-equiv="content-style-type" content="text/css"> +<meta http-equiv="expires" content="0"> +</head> +<body> +<h1>e-French succède à FrenchPro</h1> +<ol> + <li><a href="#french" title="">Explications en français</a></li> + <li><a href="#engl" title="">Copyright and short history</a></li> + <li>Les distributions + pour <a href="http://www.efrench.org/distributions/eFre4Lnx.tar.gz">unix-linux</a> + et <a href="http://www.efrench.org/distributions/eFre4Win.zip">Windows</a> </li> + <li><a href="http://www.efrench.org/Wiki"> Le Wiki </a></li> +</ol> <a name="french"></a> +<h2>Quelques explications</h2> +FrenchPro, le grand'œuvre de Bernard Gaulle ne doit pas tomber dans l'oubli +après la mortde son auteur, survenue le 2 août 2007. +C'est pour maintenir cet outil précieux de la typographie française +que s'est constituéun groupe d'utilisateurs enthousiastes. +Le projet reprenant les travaux laissés brutalement en plan s'appelle eFrench. +Son but est de continuer de mettre à disposition des utilisateurs de LaTeX +ce chef-d'œuvrede la typographie française. +<p>L'héritière de Bernard, son épouse Catherine Gaulle est aussi +l'héritière des droits d'auteur.Elle autorise cette manière +de maintenir le projet à disposition du public.</p> +Le projet e-French est maintenu par Laurent Bloch + et une petite équipe enthousiaste. + Le tout étant publié sous licence publique des projets LaTeX, + LPPL,version 1,3 ou ultérieure.La dernière version de LPPL se + trouve sous<a href="http://www.latex-project.org/lppl.txt">http://www.latex-project.org/lppl.txt</a> + <div style="text-align: center"> <br> <font size="+2" color="#050000"> + N'oublions pas que<br> nous devons ce grand'œuvre essentiellement à <br> + son premier et principal auteur, Bernard Gaulle </font> <br> + <br></div> +<hr color="00ffff"> + +<a name="engl"> +<h2>About the e-French Package, here «This work»</h2></a> +<p>Copyright 2010 eFrench Group</p> +This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in <a href="http://www.latex-project.org/lppl.txt"> +<nobr>http://www.latex-project.org/lppl.txt</nobr></a> +and version 1.3 or later is part of all distributions of LaTeX<br/> +version 2005/12/01 or later.<br/> +<p>This work has the LPPL maintenance status «maintained».</p> +The Current Maintainer of this work is Laurent Bloch. +<p>This work consists of all files of the SVN repository +efrench/efrenchsource, under http://svn.tuxfamily.org/ or +<a href="http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources"> here </a> +and a copy <a href="http://www.efrench.org/bases/">is maintained here.</a></p> +The authors are the committers allowed by the maintainer. +<hr size="3" color="0000ff"> +<h2>History</h2> +<h3>Birth of eFrench</h3> +eFrench is born in order to keep up to date French for (La)Tex + +and maintain it available for future users. +<p>French for (La)Tex, is the result of a fifteen years work of its creator, +<i><font size="1" color="#050000"></font>Bernard Gaulle</i> +<p>Copyrighted by Gaulle-GUTenberg 1992-1998, B. Gaulle 1999-2007.</p> +Beginning 1999, the FrenchPro package was marketted as shareware, +and Bernard Gaulle alone owner of all rights. He died Aug. 2nd 2007. +His wife Catherine Gaulle, the heiress, gave authorization in that matter +to the e-French group in order to maintain the whole work in the future. +Now the package is delivered under Latex Project Public Licence.</p> +Since Nov. 11., 2009 maintained as eFrench by Laurent Bloch +(lb -at- laurentbloch.org) +<div style="text-align: center"> + <br> + <font size="+2" color="#050000">The credit for this piece of work remains with <br> + the first and main author, Bernard Gaulle </font> <br> + <br></div> + </body> + </html> diff --git a/language/french/e-french/texmf/doc/licence.html b/language/french/e-french/texmf/doc/licence.html new file mode 100644 index 0000000000..28251eb3c1 --- /dev/null +++ b/language/french/e-french/texmf/doc/licence.html @@ -0,0 +1,86 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> +<title>Licence e-French</title> +<meta name="author" content="Raymond Juillerat"> +<meta name="copyright" content="e-French"> +<meta name="keywords" content="FrenchPro eFrench LaTeX TeX LPPL"> +<meta name="description" content="The package e-French is under LPPL copyright"> +<meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> +<meta http-equiv="content-type" content="text/html"> +<meta http-equiv="content-type" content="application/xhtml+xml"> +<meta http-equiv="content-style-type" content="text/css"> +<meta http-equiv="expires" content="0"> +</head> +<body> +(French version below.) +<h1>Licence statement for the eFrench bundle</h1> +<table border="0" > + <tr> + <td>Copyright 1992-1998</td> + <td>association GUTenberg & Bernard Gaulle (LPPL)</td> + </tr> + <tr> + <td>Copyright 1999-2007</td> + <td>Bernard Gaulle <i>(shareware)</i></td> + </tr> + <tr> + <td>Copyright 2010-2015</td> + <td>contributors to the eFrench project (LPPL)</td> + </tr> + <tr> + <td></td> + <td>(Laurent Bloch, Raymond Juillerat, + Manuel Pégourié-Gonnard)</td> + </tr> +</table> +<p align="left">NOTE: After the death of Bernard Gaulle in 2007, his widow and heiress to his +copyrights, Catherine Gaulle, kindly agreed to have the French Pro bundle +released as eFrench under a free licence, namely the LPPL.</p> +<p align="left">This work may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either version 1.3 +of this license or (at your option) any later version. +The latest version of this license is in + <a href="http://www.latex-project.org/lppl.txt" title="lppl">http://www.latex-project.org/lppl.txt</a> +and version 1.3 or later and is part of all distributions of LaTeX +version 2005/12/01 or later.</p> +<p>This work has the LPPL maintenance status `maintained'.</p> +<p>The Current Maintainers of this work are the eFrench project contributors.</p> +<p>This work consists of the files found at +<a href="http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/" title="efrench"> +http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/</a> +and derived files.</p> +<h2>Notice de licence pour le project eFrench</h2> +<table border="0"> + <tr> + <td>Copyright 1992-1998</td> + <td>association GUTenberg & Bernard Gaulle (LPPL)</td> + </tr> + <tr> + <td>Copyright 1999-2007</td> + <td>Bernard Gaulle <i>(shareware)</i></td> + </tr> + <tr> + <td>Copyright 2010-2015</td> + <td>contributeurs du projet eFrench (LPPL)</td> + </tr> + <tr> + <td></td> + <td>(Laurent Bloch, Raymond Juillerat, + Manuel Pégourié-Gonnard)</td> + </tr> +</table> +<p>NOTE : Après la mort de Bernard Gaulle en 2007, sa veuve et héritière des +droits d'auteur, Catherine Gaulle, a aimablement permis que la distribution +French Pro devienne le projet eFrench et soit distribué sous une licence +libre, la LPPL <a href="http://www.latex-project.org/lppl.txt" title="lppl"> +http://www.latex-project.org/lppl.txt</a>. +</p> +<p>Ce projet est constitué des fichiers disponibles en +<a href="http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/" title="efrench"> +http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/</a> +et des fichiers dérivés. +</p> +</body> +</html> + diff --git a/language/french/e-french/texmf/doc/lisez-moi.html b/language/french/e-french/texmf/doc/lisez-moi.html new file mode 100644 index 0000000000..2b84e54bfe --- /dev/null +++ b/language/french/e-french/texmf/doc/lisez-moi.html @@ -0,0 +1,39 @@ +<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> +<html> +<head> +<title>lisez-moi e-French</title> +<meta name="author" content="rai" > +<meta name="copyright" content="e-French"> +<meta name="keywords" content="FrenchPro eFrench LaTeX TeX LPPL"> +<meta name="description" content="The package e-French is under LPPL copyright"> +<meta name="ROBOTS" content="NOINDEX, NOFOLLOW"> +<meta http-equiv="content-type" content="text/html"> +<meta http-equiv="content-type" content="application/xhtml+xml"> +<meta http-equiv="content-style-type" content="text/css"> +<meta http-equiv="expires" content="0"> +</head> +<body> +<h1>eFrench - typographie française pour LaTeX</h1> +<p>FrenchPro, le grand'œuvre de Bernard Gaulle ne doit pas tomber dans l'oubli +après la mort de son auteur, survenue le 2 août 2007. C'est pour maintenir cet +outil précieux de la typographie française que s'est constitué un groupe +d'utilisateurs enthousiastes. Le projet reprenant les travaux laissés +brutalement en plan s'appelle eFrench. Son but est de continuer de mettre à +disposition des utilisateurs de LaTeX ce chef-d'œuvre de la typographie +française.</p> +<p>L'héritière de Bernard, son épouse Catherine Gaulle est aussi l'héritière des +droits d'auteur. Elle autorise cette manière de maintenir le projet à +disposition du public (voir licence.html).</p> +<p>Le projet eFrench est maintenu par une petite équipe formée autour de Laurent +Bloch, et hébergé par Tux Family : +<a href="http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/"> +http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/</a> +</a> +</p> +<p align="center"><font size="+1">N'oublions pas que nous devons ce grand'œuvre <br /> + essentiellement à son premier et principal auteur,<br /> + Bernard Gaulle. +</font></p> +</body> +</html> + diff --git a/language/french/e-french/texmf/doc/manuels/FrenchLe.html b/language/french/e-french/texmf/doc/manuels/FrenchLe.html new file mode 100644 index 0000000000..a47160da53 --- /dev/null +++ b/language/french/e-french/texmf/doc/manuels/FrenchLe.html @@ -0,0 +1,39 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> + <title>Passer de FrenchLe à eFrench</title> + </head> + <body bgcolor="#FFD0CC"> + <p style="height: 82px;"><br /> + </p> + <h1 style= "text-align: center;">Comment passer de + FrenchLe à eFrench<br /> + </h1> +<h2>C'est assez simple</h2> + <p><br /> + </p> + <p><br /> + </p> +<h3>L'extension frenchle.sty est un extrait de french.sty selon eFrench </h3> + <p>Après l'installation de e-french, selon les directives d'installation et ayant veillé à ce que + la nouvelle installation soit bien lue, quelques petites manupulations.<br /> +<table border=0 summary=""> + <tr> + <td>- </td> + <td colspan="2">remplacer "frenchle" par "french" dans l'instruction \usepackage qui l'appelle.</td> + </tr> + <tr> + <td>- </td> + <td colspan="2">s'il est utilisé renommer le fichier frenchle.cfg en french.cfg et l'adapter. </td> + </tr> + <tr> + <td></td><td>- </td> + <td> dans ce fichier, désactiver ce qui concerne '«' ET '»', si cette partie était active </td> + </tr> +</table> + </p> +<h3>Bien du plaisir à eFrench</h3> + </body> +</html> + diff --git a/language/french/e-french/texmf/doc/manuels/FrenchPro.html b/language/french/e-french/texmf/doc/manuels/FrenchPro.html new file mode 100644 index 0000000000..7d7f73c7a4 --- /dev/null +++ b/language/french/e-french/texmf/doc/manuels/FrenchPro.html @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="content-type" content="text/html; charset=UTF-8" /> + <title>Passer de FrenchPro à eFrench</title> + </head> + <body bgcolor="#FFD0CC"> + <p style="height: 82px;"><br /> + </p> + <h1 style= "text-align: center;">Comment passer de + FrenchPro à eFrench<br /> + </h1> +<h2>Rien de plus simple</h2> + <p><br /> + </p> + <p><br /> + </p> +<h3>Les modules french.sty sont compatibles </h3> + <p>Donc il suffit de suivre les directives d'installation, de veiller que + c'est bien la nouvelle installation qui est lue par défaut et le tout est + joué.<br /> + <h3>Le test de licence Partagiciel a été supprimé</h3> +C'est la grande différence. Cette version tourne sous LPPL. + </p> + <p><br /> +<h3>Le système a été allégé </h3> +<table border=0 summary=""> + <tr> + <td>- </td> + <td>Le fichier language.dat est totalement géré par TeXLive ou MikTeX. + Il suffit de charger la langue française.</td> + </tr> + <tr> + <td>- </td> + <td>Bien d'autres éléments dépassés et devenus inutiles ont été supprimés de la distribution.</td> + </tr> +</table> + </p> +<h3>Bien du plaisir à eFrench</h3> +</body> +</html> diff --git a/language/french/e-french/texmf/doc/manuels/efrench.pdf b/language/french/e-french/texmf/doc/manuels/efrench.pdf Binary files differnew file mode 100644 index 0000000000..8dd38bb4b3 --- /dev/null +++ b/language/french/e-french/texmf/doc/manuels/efrench.pdf diff --git a/language/french/e-french/texmf/doc/manuels/faq.pdf b/language/french/e-french/texmf/doc/manuels/faq.pdf Binary files differnew file mode 100644 index 0000000000..80027e681e --- /dev/null +++ b/language/french/e-french/texmf/doc/manuels/faq.pdf diff --git a/language/french/e-french/texmf/doc/manuels/french_doc.pdf b/language/french/e-french/texmf/doc/manuels/french_doc.pdf Binary files differnew file mode 100644 index 0000000000..65eb635481 --- /dev/null +++ b/language/french/e-french/texmf/doc/manuels/french_doc.pdf diff --git a/language/french/e-french/texmf/doc/manuels/frenchle.pdf b/language/french/e-french/texmf/doc/manuels/frenchle.pdf Binary files differnew file mode 100644 index 0000000000..73db4b54e4 --- /dev/null +++ b/language/french/e-french/texmf/doc/manuels/frenchle.pdf diff --git a/language/french/e-french/texmf/doc/src/MiniDocEf_Lnx.tex b/language/french/e-french/texmf/doc/src/MiniDocEf_Lnx.tex new file mode 100644 index 0000000000..9de6e515bc --- /dev/null +++ b/language/french/e-french/texmf/doc/src/MiniDocEf_Lnx.tex @@ -0,0 +1,65 @@ +% !TeX encoding = utf-8 +\documentclass[11pt,a4paper]{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{times} +\usepackage{hyperref} +\usepackage{french} +\author{Raymond Juillerat} +\begin{document} +\section*{eFrench Linux : mini-doc d'installation } +revue pour eFrench sous LPPL les 6 juin 2012 et 10 août 2015 par RayJ\\[3ex] + + Cette distribution de eFrench a été testée avec \TeX{}live mais elle doit +fonctionner avec tous les autres moteurs \TeX. Cette distribution +est LPPL. + + +\subsection*{Consignes d'installation} + + Placer le répertoire /french (et si nécessaire aussi /msg, voir plus bas) à un endroit où + tous les fichiers seront accessibles par{ \backslash}input. +\subsection*{Pour \TeX{}live, par exemple sous } + $\sim$/texmf/tex\hspace{1cm} +($\sim$ est le répertoire personnel)\\ +ou + + $\sim$/texmf/tex/plain + + et annoncez à TeXLive (\$ texhash $\sim$/texmf) + ce répertoire en tant que répertoire supplémentaire de sources . +Cette configuration a été testée avec succès sous Ubuntu (9 à 11). + +Les fichiers de /makeindex vont dans le répertoire de même nom de \TeX{}live +ou dans le répertoire de travail selon besoins. + +En tant que superviseur on peut suivre les indications de \emph{FilesInTDS.txt} . + +\paragraph*{Remarque} +Si pour une raison ou une autre (ancien \TeX{}live ou autre système), french.sty annonce que msg.sty ou msg-msg.tex manque, +des solutions sont indiquées dans Probl\_Msg.pdf du dossier install. +\subsection*{PS} +\begin{enumerate} +\item Les messages sont codés en ANSI (latin9) +\item Le fichier language.dat doit définir french en tant + que langue, ce qui est le cas généralement +\end{enumerate} + +\subsection*{Documentation } + +Les manuels sont fournis sous forme de fichier en format pdf : +efrench.pdf et frenchle.pdf, ce dernier étant aussi valable +pour efrench, les explications y sont plus détaillées +mais concernent moins de possibilités. Et frenchle +fait partie maintenant d'e-french. + + +\centering{Bonne utilisation de eFrench !} + + -- \href{mailto:raymond@juil.ch}{rayj } +pour l'équipe d'eFrench, pour toute question passer par son initiateur, +{Laurent Bloch} +\href{https://www.laurentbloch.net/MySpip3/e-french-desormais-dans-les-depots?lang=fr}{e-french désormais dans les dépôts TeXLive et MiKTeX} . + +\end{document} diff --git a/language/french/e-french/texmf/doc/src/MiniDocEf_Win.tex b/language/french/e-french/texmf/doc/src/MiniDocEf_Win.tex new file mode 100644 index 0000000000..4f66939bc2 --- /dev/null +++ b/language/french/e-french/texmf/doc/src/MiniDocEf_Win.tex @@ -0,0 +1,61 @@ +% !TeX encoding = utf-8 +\documentclass[11pt, a4paper]{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{times} +\usepackage{hyperref} +\usepackage{french} +\author{Raymond Juillerat} +\begin{document} +\section*{eFrench Windows : mini-doc d'installation } +revue pour eFrench sous LPPL le 13 août 2015, par RayJ\\[3ex] + + Cette distribution de eFrench a été testée avec Mik\TeX{} mais elle doit +fonctionner avec tous les autres moteurs \TeX. Cette distribution +est LPPL. + +\subsection*{Consignes d'installation} + +Placer le répertoire \backslash french (et si nécessaire aussi \backslash msg, voir plus bas) à un endroit où + tous les fichiers seront accessibles par \backslash input. +\subsection*{Pour Mik\TeX 2.8, par exemple sous} + c:\backslash LocalTexMf\backslash tex\\ +ou + + c:\backslash LocalTexMf\backslash tex\backslash plain\\ + et annoncez à Mik\TeX \textit{(Maintenance - Setting - Roots - Add ... )} + ce répertoire c:\backslash LocalTexMf en tant que répertoire supplémentaire de sources +Cette configuration a aussi été testée avec succès sous Mik\TeX 2.9. + +Les fichiers de \backslash makeindex vont dans le répertoire de même nom de Mik\TeX {} +ou dans le répertoire de travail selon besoins. +Voir aussi les indications de \emph{FilesInTDS.txt} utilisables en tant qu'administrateur. + +\paragraph*{Remarque} +Si pour une raison ou une autre (Mik\TeX version 2.9 ou plus ancien, autre système), french.sty annonce que msg.sty ou msg-msg.tex manque, +des solutions sont indiquées dans Probl\_Msg.pdf du dossier install. +\subsection*{PS} +\begin{enumerate} +\item Les messages sont codés en ANSI (latin9) +\item Le fichier language.dat doit définir french en tant + que langue, ce qui est le cas généralement +\end{enumerate} + +\subsection*{Documentation } + +Les manuels sont fournis sous forme de fichier en format pdf : +efrench.pdf et frenchle.pdf, ce dernier étant aussi valable +pour efrench, les explications y sont plus détaillées +mais concernent moins de possibilités. Et frenchle +fait partie maintenant d'e-french. + +\centering{Bonne utilisation de eFrench !} + + -- \href{mailto:raymond@juil.ch}{rayj } + pour l'équipe d'eFrench, pour toute question passer par son initiateur, +{Laurent Bloch} +\href{https://www.laurentbloch.net/MySpip3/e-french-desormais-dans-les-depots?lang=fr}{e-french désormais dans les dépôts TeXLive et MiKTeX} . + + +\end{document} diff --git a/language/french/e-french/texmf/doc/src/Probl_Msg.tex b/language/french/e-french/texmf/doc/src/Probl_Msg.tex new file mode 100644 index 0000000000..69e00b4601 --- /dev/null +++ b/language/french/e-french/texmf/doc/src/Probl_Msg.tex @@ -0,0 +1,52 @@ +% !TeX encoding = utf-8 +\documentclass[11pt, a4paper]{article} + +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{times} +\usepackage{hyperref} +\usepackage{french} +\author{Raymond Juillerat} +\begin{document} +\section*{Si french annonce que msg.sty ou msg-msg.tex est absent } + +Après l’installation, +vous voulez compiler en utilisant french.sty et ce dernier s'achope à +l'absence de l'un des deux fichiers msg.sty ou msg-msg.tex. + +Avec les nouvelles version de TeXLive, il n'y a pas de problème de ce genre. +Avec MikTeX, version 2.9, seul msg-msg.tex manque. + +Si msg.sty manque, alors généralement msg-msg.tex manque aussi. +C'est le cas avec d'autres environnements ou d'anciennes versions. + +Une possibilité, c'est de les chercher sur CTAN. + +Pour ce faire vous téléchargez de + +\href{http://mirror.ctan.org/macros/latex/contrib/msg} +{http://mirror.ctan.org/macros/latex/contrib/msg/}\\ +ou de \href{http://mirror.ctan.org/macros/latex/contrib/msg.zip} +{http://mirror.ctan.org/macros/latex/contrib/msg.zip}\\ +au minimum les fichiers msg.ins, msg.dtx et msgfiles.dtx pour les +déposer dans un dossier de travail. Avec la commande +\textit{latex msg.ins}, vous aurez les fichiers cherchés + msg.sty et msg-msg.tex qui manquent pour les mettre +dans votre dossier french. + +Une autre possibilité, c'est de les télécharger de\\ +%La solution, c'est de les télécharger de\\ +\href{http://svn.tuxfamily.org/viewvc.cgi/efrench\_efrenchsources/trunk/inputs/msg/} +{http://svn.tuxfamily.org/viewvc.cgi/efrench\_efrenchsources/trunk/inputs/msg/}\\ + + +\begin{center}{Bonne utilisation de eFrench !} +\end{center} + + -- \href{mailto:raymond@juil.ch}{rayj } +pour l'équipe d'eFrench, pour toute question passer par son initiateur, +{Laurent Bloch} +\href{https://www.laurentbloch.net/MySpip3/e-french-desormais-dans-les-depots?lang=fr}{<https://www.laurentbloch.net/MySpip3/e-french-desormais-dans-les-depots?lang=fr>} + +\end{document} + diff --git a/language/french/e-french/texmf/doc/src/efrench.tex b/language/french/e-french/texmf/doc/src/efrench.tex new file mode 100644 index 0000000000..5155e7878c --- /dev/null +++ b/language/french/e-french/texmf/doc/src/efrench.tex @@ -0,0 +1,4380 @@ +% !TeX encoding = utf8 +% File efrench.tex +% This is the user's guide for the package `` french '' +% LPPL Copyright as in Copyright.htm +% +% (a composer en 3 passages, +% avec makeindex -s fridx1.ist apres le deuxieme passage) +% +\documentclass[a4paper,11pt,openright]{report} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{lmodern} +\usepackage{url} + +\makeatletter\def\tempa{\let\if@screen\iffalse}\makeatother% +\tempa% +\def\href#1#2{#2} +\let\titcolor\relax +\usepackage[print]{pdfscreen} + +\usepackage{french, mymaj, fancybox} + +\usersfrenchoptions{% + \disallowuchyph + \nooverfullhboxmark +} + + \definecolor{section0}{rgb}{.722,.525,.431} + \definecolor{section1}{rgb}{.937,.561,.123} + \definecolor{section2}{rgb}{.855,.647,.123} + \definecolor{section3}{rgb}{.804,.361,.361} + \definecolor{section4}{rgb}{.545,.271,.750} + \definecolor{section5}{rgb}{.627,.322,.176} + \definecolor{titcolor}{rgb}{.922,.725,.831} + \definecolor{bleu}{rgb}{.0,.0,.850} +\def\titcolor{\color{section0}} + +\hypersetup{ + pdfwindowui=true, pdfnewwindow=true, + colorlinks=true, pdfmenubar=true, pdffitwindow=true, + anchorcolor=bleu, urlcolor=bleu, +} + +\makeatletter +\newcommand{\linkandfootnote}[3]{% + \href{#3}{#2}\bgroup% + \expandafter\ifx\csname r@tlf.#1\endcsname\relax% + \expandafter\global% + \expandafter\let\csname r@tlf.#1\endcsname\empty% + \footnote{\texttt{<}\url{#3}\texttt{>}.\label{lf.#1}}% + \else\refmark{lf.#1}% + \fi\egroup% + }% +\makeatother + +\newif\ifnoDOCinstall +\newif\ifnoFINALS + +\textwidth=16.8cm +\textheight=24.0cm +\voffset -1in +\hoffset -1in +\oddsidemargin=2.2cm +\evensidemargin=2.2cm +\topmargin=1.0cm +\footskip=2.3cm + +\makeindex +\begin{document} +% \labelsinmargin +\def\raccouXe{X +\raisebox{1.2ex}{\hspace{-1ex}\rotatebox{180}{E}}\hspace{-0.3ex}}% + +\title{\fboxsep=2ex% + \shadowbox{\Huge Guide de l'utilisateur \textsl{eFrench}}\\% +{ -- \textsl{eFrench}, son style \textsl{french}, ses extensions --}% +\\ {\huge dans un environnement \LaTeX},\\ +Pdf\LaTeX{} et \raccouXe\LaTeX\\%T +[2\baselineskip]} +\author{\textsl{eFrench} est dérivé de \textsl{French Pro} développé par {\LARGE B. \fsc{Gaulle}} \\[4\baselineskip]} +\date{\LARGE\frenchstyleid} + +\maketitle\thispagestyle{empty} + +\begin{resume} Cette notice décrit comment installer et utiliser avec \LaTeX{} + l'extension \textsl{eFrench}, son style \texttt{french} +et ses diverses propres extensions. Le paquetage +\textsl{eFrench} a été créé pour imprimer des documents typographiquement + plus conformes à l'usage français que ce que produit \LaTeX{} par défaut. + Un grand nombre de commandes peuvent être utilisées mais + l'emploi courant de cette extension ne nécessite + {\em a priori\/} aucune connaissance particulière + ni une utilisation forcenée de commandes spécifiques. Toutefois cet + emploi n'est pas toujours {\em transparent}. + Une version allégée est fournie (style \texttt{frenchle}). +Une version appauvrie (\texttt{pmfrench}) + est aussi utilisable sur tous les sites et dans toutes les + configurations. D'autres extensions accompagnent le style \texttt{french} +et le modulent. +\end{resume} + +\sommaire[3] + +%% \NNL sert a éliminer les saut de page dans la toc ou le sommaire +%% mais cela génère de messages « Token not allowed » avec hyperref. +\newcommand{\NNL}{\protect\let\\\relax} +\makeatletter\def\HyPsd@CatcodeWarning#1{}\makeatother% +%% +\let\Subsubsection\subsection +\def\subsubsection#1{\Subsubsection[\NNL#1]{\protect\titcolor#1}} +\let\Subsection\section +\def\subsection#1{\Subsection[\NNL#1]{\protect\titcolor#1}} +\let\Section\chapter +\def\section#1{\Section[\NNL#1]{\protect\titcolor#1}} + +\hbox{}\vfill + +\Section*{\titcolor Introduction} + +\let\XXboi\backslash% abreviation +\let\exclam\pointexclamation +\def\oMlTeX{\texttt{\mbox{--mltex}}} +%\def\biburl#1{\hbox{}\hfill\texttt{<}\url{#1}\texttt{>}}% +\tthyphenation +\abbreviations + +% +%\CheckSevenBits/À/% check it, will stop here if 7-bits. + % {\STOP un retour charriot permet de continuer...} +% + +\begin{drapeaufd} +{\small +{\sf Les limites de mon langage\\ +signifient les limites\\ +de mon propre monde.}\par + +\smallskip +Ludwig \fsc{Wittgenstein}\\ +({in \em Tractatus logico-philosophicus}) +} +\end{drapeaufd} + +\bigskip + +\def\FrenchPro{\textsl{FrenchPro}} +\def\eFrench{\textsl{eFrench}} + +\ifx\ToDo\undefined +\font\lettrinefont=cmr17 scaled\magstep3\label{lettrinefont} +\else +\font\lettrinefont=cmr17 at 50pt\label{lettrinefont} +\fi +\lettrine{L'extension} {\eFrench} +a été conçue pour pouvoir imprimer des documents +respectant {\em automatiquement} un maximum de règles typographiques +françaises de l'imprimerie nationale +telles qu'elles sont présentées dans \cite{lexique}. +D'autres aspects comme, par exemple, + la francisation des classes de documents, des styles \LaTeX{} +ou la réalisation de documents +multilingues sont aussi abordés. + +%Nous parlerons indifféremment d'\textit{option de style}, d'\textit{extension} +%ou simplement d'\textit{option} en ce qui concerne la francisation +%de \LaTeX\ proposée ici. + +Tous les dispositifs introduits fonctionnent avec l'ensemble +des moteurs \TeX\ mais nous recommandons plutôt l'utilisation +d'un moteur avec option \oMlTeX +\footnote{Les moteurs \TeX{} basés sur \texttt{web2c} disposent + de cette option \oMlTeX\ à la création du format.}. + +Cette notice +qui fait suite à la +\makeatletter +\if@screen% +\linkandfootnote{FAQ}{FAQ (foire aux questions)}% +{http://efrench.org/bases/screen.pdf/FAQscreen.pdf} +\else% +\linkandfootnote{FAQ}{FAQ (foire aux questions)}% +{http://www.efrench.org/doc/faq.pdf} +\fi% +\makeatother + à propos de \LaTeX\ en français, +explique comment utiliser l'extension {\eFrench} +mais ne démontre pas largement ses effets ; vous pouvez +vous reporter d'une part à la notice d'utilisation de la version allégée +\makeatletter\if@screen% +\linkandfootnote{docfrenchle}{\texttt{frenchle}}% +{http://www.efrench.org/doc/frenchle.pdf} +\else% +\linkandfootnote{docfrenchle}{\texttt{frenchle}}% +{http://efrench.org/doc/frenchle.pdf} +\fi% +\makeatother% +et d'autre part au document +\linkandfootnote{torture}{<< test de torture >>}% +{http://www.efrench.org/distributions/frenchlb-torture-test.pdf}. +\index{extension!allége@allégée \emph{frenchle}}% +\index{version!allégée}% +\index{frenchle@\emph{frenchle}}% + +Deux types d'utilisation sont possibles, l'un {\em normal\/} et +l'autre {\em étendu\/} plutôt réservé aux utilisateurs +expérimentés. Nous allons détailler ces deux types d'utilisation +(nous verrons par la suite qu'il existe aussi une utilisation +appauvrie pour ceux qui ne peuvent pas ou ne désirent pas faire +appel à tous les dispositifs). + +\section{Utilisation normale}\label{normal} +\index{utilisation!normale}% +Pour utiliser l'extension {\eFrench} il suffit de la {\em charger +en mémoire} pour \LaTeX{} +\hbox{c.-à -d.} comme toute extension, par +l'ordre \verb|\usepackage|. +En fait, on l'appelera sous le nom \texttt{french} +(de préférence à \texttt{efrench}) pour bénéficier d'un maximum +de dispositifs : +\index{usepackage@\texttt{\backslash usepackage}}% +\begin{verbatim} + \documentclass[a4paper,11pt]{book} + \usepackage{french} +\end{verbatim} + +\noindent +mais vous pouvez aussi charger l'extension {\eFrench} en faisant +appel à l'extension multilingue \emph{mlp} : % +\index{extension!eFrench@\emph{efrench}} +\begin{verbatim} + \documentclass[a4paper,11pt]{book} + \usepackage[french]{mlp} +\end{verbatim} +\index{extension!mlp@\emph{mlp}}% +\index{mlp@\emph{mlp}}% +le résultat est identique dans les deux cas, mais si vous souhaitez utiliser +plusieurs langues dans le document il est alors plus normal de le faire +avec l'extension \emph{mlp} en précisant les langues en option (de +\vers|\usepackage| ou de \vers|\document|\-\vers|class|). + + L'utilisation de \emph{mlp} limite en fait le multilinguisme aux modules de langues +qui peuvent être lancés sans \emph{babel}, ce qui restreint son usage à l'anglais (\texttt{english}) et à l'allemand +\texttt{german} ou \texttt{ngerman}. + +Vous ne pouvez plus utiliser {\eFrench} en option de l'extension +\index{babel@\emph{babel}!en opt@{\eFrench} en option de}% +multilingue \emph{babel}. +Une commande de ce genre : +\begin{verbatim} + \documentclass[a4paper,11pt]{book} + \usepackage[french]{babel} +\end{verbatim} +fera appel à la version \emph{babel} de typographie française, c'est à dire à \emph{frenchb} de \textsc{D.~Flipo}. + + +\noindent +Mettre de préférence \texttt{french} en dernier dans la liste des +extensions que vous précisez +\footnote{L'extension {\eFrench} peut +aussi être chargée de façon anarchique par \texttt{\backslash +input french.sty} avant le \texttt{\backslash begin}\{\texttt{document}\} +mais cela est déconseillé.} +de façon à ce que {\eFrench} puisse s'adapter aux extensions déjà +chargées en mémoire. +\index{documentclass@\texttt{\backslash documentclass}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +\index{activation de {\eFrench}}% +\index{babel@\emph{babel}!activ@activation de {\eFrench}}% +Cela dit, vous noterez toutefois que +l'extension \texttt{french} ne devient vraiment active qu'après +le \texttt{\backslash begin}\{\texttt{document}\} +\index{extension!babel@\emph{babel}}% +\index{extension!french@{\eFrench}}% +\index{babel@\emph{babel}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +\par + +L'extension {\eFrench} est conçue pour être utilisée +avec les classes de document standard \LaTeX{} c.-à -d. + \verb|book|, \verb|report|, \verb|article| et +\index{classe!letter@\texttt{letter}}% +\index{classe!book@\texttt{book}}% +\index{classe!article@\texttt{article}}% +\index{classe!minimal@\texttt{minimal}}% +\index{book@\texttt{book}}% +\index{report@\texttt{report}}% +\index{article@\texttt{article}}% +\index{letter@\texttt{letter}}% +\index{minimal@\texttt{minimal}}% +\verb|letter|% +\footnote{L'extension {\eFrench} n'est pas utilisable, +par exemple, avec la classe \texttt{minimal}.}% +. + +\medskip +\noindent +\textbf{[}Pour ceux que la lecture des codes source ravit, il est précisé que, +depuis la version 3,30 du style french, +les commentaires ne figurent plus dans +le fichier \verb|french.sty| mais dans %] +\linkandfootnote{codefrench}{\texttt{french\_{}doc.pdf}}% +{http://efrench.org/doc/french_doc.pdf}% + (dont la mise à jour accuse un certain retard.\textbf{]} +\index{fichier!french_doc.pdf@\texttt{french\string_doc.pdf}}% + +\subsection{Pour commencer}\label{Pour commencer}\index{pour commencer}% +\subsubsection{Saisie}\label{saisie}\index{saisie}% +Rappelons ici quelques règles de saisie usuelles +pratiquées en dactylographie française et qui sont à appliquer +lorsque l'on saisit du \LaTeX{} destiné à être utilisé avec +l'extension {\eFrench} : +\begin{itemize} +\item vous devez saisir un espace (barre d'espacement du clavier) : +\begin{itemize} +\item avant la double ponctuation% +\footnote{Elle est aussi appelée {\em ponctuation haute}.} +(\verb|! ? : ;|) ; +\index{double ponctuation}\index{\texttt{\exclam}}\index{\texttt{?}}% +\item avant le \% (\verb|\%|) et en général les {\em unités} + monétaires, kilométriques, \etc.% +\index{unites@unités!de mesure}% +\index{\texttt{\%}}% +\item avant les guillemets fermants (\verb|>|\verb|>|) et le tiret +\index{tiret}\index{guillemets}% +\index{>a@\texttt{\superieura\relax\superieura}}% +\index{>b@\rightguillemets}% + lorsqu'il est utilisé en milieu de phrase% +\footnote{\label{tripleT}Les habitudes typographiques ne sont pas +toujours identiques selon les imprimeurs. Il semble, en effet, que dans +de nombreux cas le triple tiret soit utilisé. Le double tiret +me semble mieux adapté en milieu de phrase.} + (\verb|--|) + ; +\item après \verb|<|\verb|<| (et bien sûr après \verb|>|\verb|> , ; : . ! ?|% +\footnote{Il s'agit là du cas général ; +vous trouverez aisément de +nombreux exemples où il ne faudra pas saisir +d'espace après ces caractères +de ponctuation.}% +) et tiret ; +\index{\texttt{.}}\index{\texttt{;}}\index{\texttt{:}}% +\index{<a@\texttt{\inferieura\relax\inferieura}}% +\index{<b@\leftguillemets}% +\end{itemize} +\end{itemize} +\noindent Par ailleurs : +\begin{itemize} +\item les guillemets (<< et >>) se saisissent directement si votre clavier +a été bien défini pour \LaTeX{} ou sinon : \verb|<<| et \verb|>>| ; toute +autre sorte de guillemets est à prohiber en français +(\verb|` " '| \`{ } \'{ } `` ,, '') ; +\item {\em french.sty} a été étendu pour accepter aussi les guillemets \MAJ +{\em utf8} sous \raccouXe\LaTeX ceci pour autant que {\em efrenchu.tex} +soit accessible ;\endMAJ +\item on marque les intervalles avec un simple tiret +(\verb|-|) comme dans << la guerre de 1939-45 >> ou << voir explication +p. 169-173 >> ; +\index{\texttt{`}}\index{\texttt{\dittomark}}\index{\texttt{'}}% +\index{{\`\space}}\index{{\'\space}}\index{{``}}\index{{,,}}\index{{''}}% +\item les tirets se saisissent \verb|--| lorsqu'ils sont employés dans le +\index{-2@\texttt{--}}\index{-3@\texttt{---}}% + texte\refmark{tripleT} + ou en début d'énumération (mais on saisit \verb|---| pour +commencer le discours d'un personnage de roman) + ; +\item les points de suspension sont saisis par 3 points normaux (\verb|...|) ; +\index{\texttt{...}}% +\item les nombres \label{nombres}% +\index{nombres}% +\index{nombre}% +\index{nombre@\texttt{\backslash nombre}}% +\index{,@\texttt{\backslash ,}}% +ne s'écrivent pas en anglais comme en français : il faut +mettre une virgule pour séparer les unités de la partie +décimale, exemple : +1,5~km et mettre un blanc insécable% +\footnote{Le blanc insécable peut être remplacé, valablement ici, +par une {\em espace fine} (\texttt{\backslash,}) ; +c'est ce qui est appliqué avec la commande \texttt{\backslash nombre}. +On notera alors le moyen +mnémotechnique suivant pour transformer un nombre, de l'anglais au +français : \primo remplacer les virgules par \texttt{\backslash,} et +\secundo le point par une virgule.}% + (\texttt{\tilde}) pour séparer les tranches des milliers +ou des millièmes comme +dans \verb|12~345,678~91| mais pour avoir une composition aisée +on préfèrera la commande \verb|\nombre{12 345,678 91}|. +\end{itemize} +Ce qui suit est plus particulièrement lié à la +composition du document +mais doit être pris en compte dès la saisie : +\begin{itemize} +\item les locutions latines sont mises en italique dans le texte en +\index{locutions latines}\index{italique}\index{romain}% +romain (sauf pour cf., \etc. et toutes les locutions francisées comme +critérium) ; +\item voici aussi quelques abréviations usuelles (à retenir si +vous n'utilisez pas le dispositif d'abréviation proposé par l'extension + {\eFrench}, voir page \pageref{frenchmacros}) qui +\index{abreviations@abréviations!usuelles}% +se saisissent de la manière suivante : +\begin{verbatim} +\hbox{c.-à -d.} /\emph{i.e.} / p.ex. / \etc. / cf. / id. + p.i. / p.o. / doc. / chap. / part. / vol. + paragr. / R.S.V.P. / T.S.V.P. /... +\end{verbatim} +\item les noms propres se composent en petites capitales (mais le prénom + reste en romain classique) soit par exemple : Donald \fsc{knuth} +\index{romain}% + (voir plus loin l'ordre \verb|\fsc| au §~\ref{fsc} +page \pageref{fsc}) ; +\item ne pas mettre de point entre les lettres des sigles + ({\sc ratp, sncf}...)% +\footnote{Voir aussi l'ordre \texttt{\backslash lsc} au §~\ref{lsc} +page \pageref{lsc}.} +sauf lorsque ce sigle est peu connu et s'énonce lettre par lettre + ; \index{sigles}% +\item le caractère insécable ({\large\verb|~|}) +\index{caractère insécable (\texttt{\tilde})}% +\index{~@\texttt{\tilde}}%{{$\widetilde{\space\space}$}}% + ne s'utilise que pour corriger une +coupure malheureuse ; son utilisation systématique ne facilite pas la +relecture et est bien souvent sans raison d'être dans les textes +courants (et certainement pas pour la ponctuation +qui est entièrement gérée par le stype \texttt{french} de l'extension {\eFrench}) ; +toutefois on pourra l'utiliser entre {\em prénom} et {\em nom} lorsque +le prénom est abrégé comme dans \verb|D.~KNUTH|% +\footnote{Autre exemple, entre {\em chiffres\/} et {\em unités\/} comme +dans : 130~km/h (\texttt{130\tilde{}km/h}).}. +Rappelons par ailleurs que l'on indique les points possibles de division +(\verb|-|) des +mots grâce à l'ordre \TeX{} \vers|\hyphen|\-\vers|ation|. Inversement, + on empêche la coupure d'un mot tout le long +d'un document en ne lui donnant aucun point de division possible +"cad" en le précisant ainsi : \vers|\hyphenation{|% +{\em mot}\/\verb|}| % +(il est aussi possible de fournir une liste +d'exceptions à la création du {\em format}\/ "cad" au moment de +\index{fichier!d'exceptions}% +l'installation ou ultérieurement, voir le §~\ref{cesure} page +\pageref{cesure} sur la césure) ; +\item les majuscules doivent toujours être accentuées ; +\item dans les titres, ne mettre de majuscule qu'à +la première lettre du +premier mot (consultez les bons ouvrages +\cite{lexique,codetypo,cahiers}, pour +connaître précisément quels \index{majuscules}% +sont les noms devant commencer par une majuscule) ; +ne pas terminer un titre par un caractère de ponctuation (à l'exception +des points d'exclamation et d'interrogation) ; +\item dans une énumération simple comme celle-ci +(c.-à -d. ne comportant pas plus d'une phrase par élément), +vous devez commencer chaque élément ({\em item}) par +une minuscule (en règle générale le double tiret << -- >> +\index{tiret}\index{enumeration@énumération simple}% +n'est jamais suivi d'une +majuscule) et le terminer par un point virgule (sauf le dernier) ; +\item dans les tableaux, les titres ("cad" l'ordre \verb|\caption| +\label{tableaux}% +\index{figures et tableaux}% +\index{tableaux!titres}% + de \LaTeX{}) doivent être positionnés autrement + que dans les figures ; ils doivent être impérativement + mis devant + les tableaux alors qu'ils se placent après dans le cas + des figures. +\end{itemize} + +Pour de plus amples renseignements on pourra consulter le manuel +de l'imprimerie nationale \cite{lexique} mais aussi +le petit document d'E. \fsc{Saudrais} \cite{saudrais} que l'on +trouvera sur Internet. + +\subsubsection{Les noms de fichiers} + +Une bonne habitude est de découper son document en autant de fichiers que +de chapitres ou sections (voire sous-sections, selon la complexité +du document). Une deuxième bonne habitude est aussi de ne jamais +mettre de caractères accentués dans les noms de fichiers car, non seulement +les systèmes d'exploitation n'aiment pas trop ça mais en plus +le document n'est plus portable sur un autre type de système. + +Pour préciser un fichier Windows il faut d'abord indiquer sur +\index{fichier!d'exceptions}% + quelle unité il réside (comme par exemple \verb|C:/fichier|% +\footnote{L'anti-slash est normalement reconnu par le moteur \TeX}% +) ; on indique ainsi un chemin absolu. Ce n'est pas toujours la bonne +méthode car d'une part le nom des unités peut varier et encore une fois +ce nom complet n'est plus portable sur un autre système. L'autre +méthode consiste, lorsque tous les fichiers sont sur la même unité, +d'indiquer le chemin relatif par rapport au dossier dans lequel +vous travaillez (par exemple \verb|./fichier| ou \verb|../figures/fichier|). +Si toutefois vous ne pouvez pas ou ne souhaitez pas appliquer cette +méthode il faudra donc coder en absolu mais avec quelques précautions +dues au caractère << \verb|:| >> qui est un caractère actif avec {\eFrench}. +Vous devrez définir vos unités Windows % +\index{unites@unités!Windows}%} + utilisées dans le document : +\begin{verbatim} + \WindowsUnits{disque=C,cd=D,autre=E} +\end{verbatim} +\index{windowsunits@\texttt{\backslash WindowsUnits}}% +\index{unites@unités!windowsunits@\texttt{\backslash WindowsUnits}}% + en choississant les noms que vous voulez (cela va définir des commandes +du même nom). Ensuite, lorsque vous aurez +besoin de faire appel à un fichier sur \texttt{C} (dans la +partie en français de votre document) il suffira de coder : +\begin{verbatim} + \disque:/fichier +\end{verbatim} +mais attention à ne pas oublier le << \verb|:| >> sinon +vous obtiendrez un message +<< \texttt{Use of ... doesn't match its definition} >>. +Ainsi vous pourrez coder : +\begin{verbatim} + \input{\disque:/bouqin/chapitreIV/sectionIII/texte.tex} + \graphicpath{\cd:/images} + \includegraphics{\autre:/bouqin/graphiques/image} +\end{verbatim} + +\subsubsection{Contenant et contenu} +Ne vous occupez surtout pas du contenant de votre document lorsque +vous le saisissez et concentrez vous uniquement sur le contenu (une bonne +occasion de se relire...). Lorsque vous saisissez des listes, des +énumérations, \etc. veillez à ce que celles-ci restent brèves (de l'ordre +d'une phrase ou deux) sinon réfléchissez à la possibilité de +rajouter une section de niveau inférieur. + +Il faut éviter à tout prix le souligné, c'est un dispositif de +secours qui ne donne jamais un bon effet typographique. + +De la même manière l'encadré ne doit pas être utilisé trop souvent +sauf s'il fait partie de la maquette. + +Une tendance qui nous vient d'outre-atlantique et qui n'est pas +du plus bel effet est l'usage immodéré de la numérotation en 5 ou +6 niveaux (par exemple : paragraphe 3.27.6.2.1). À partir du troisième +niveau demandez-vous s'il est vraiment indispensable de numéroter. + +En tout, l'exagération est un vilain défaut... tout au moins en typographie +(en excluant la publicité, bien entendu) ; c'est le cas de la numérotation +mais aussi de l'usage abusif de la couleur ou de fontes différentes. +Le sujet est vaste et je ne saurai trop vous recommander de bons ouvrages +comme \cite{ManPerrou,CompoPerrou}. + +\subsubsection{Programmation de votre éditeur de textes} +\index{editeur@éditeur de textes}% +Il est souhaitable de ne pas entraver l'action de l'extension {\eFrench} +par des {\em automatismes} mis en Å“uvre au niveau de l'éditeur de +textes. Puisque la ponctuation est gérée +typographiquement par l'extension {\eFrench}, +il serait nocif de systématiser, par exemple, + l'insertion d'espace devant la +\index{ponctuation}% +double ponctuation ou la génération des points de +suspension à la \TeX{} +lorsqu'on saisit 3 points consécutifs. Votre éditeur de textes +\index{points!3 points}% +ne doit donc pas intervenir sur la ponctuation +que vous aurez saisie {\em à la française\/} (voir §~\ref{saisie}). + +Par contre votre éditeur de textes pourra vous rendre beaucoup de services +pour gérer les +\index{begin@\texttt{\backslash begin}}\index{end@\texttt{\backslash end}}% +\index{mode mathématique}% +\verb|\begin| et \verb|\end| de \LaTeX{}, +vous proposer des prototypes de documents ou d'environnements, +vous aider en mode mathématique, \etc. + +\subsubsection{Configuration avant utilisation}\label{conf} + +\index{configuration}\index{premiere@première utilisation}% +Par rapport à ce qui était nécessaire du temps de Bernard Gaulle, +la configuration avant première utilisation est nettement plus simple +avec les moteurs actuels que ce soit \TeX{}live ou Mik\TeX{}. +Les dernières versions de \TeX{}live mettent d'emblée la +paquet \textit{e-french} à disposition, pour Mik\TeX{}, il suffit de le charger à partir +des paquets disponibles. + +Ainsi, normalement, l'extension {\eFrench} doit -- en tout état de cause -- +trouver et donner la possibilité de choisir +au moins deux langues : +\begin{center} +\verb|\french | et \verb| \english| +\end{center} +\index{langues!\texttt{\backslash french}}\index{langues!\texttt{\backslash english}}% +\index{french@\texttt{\backslash french}}\index{english@\texttt{\backslash english}}% +\verb|\english| permettant de revenir au standard \LaTeX{} et \verb|\french| +de réactiver l'extension {\eFrench} lorsque nécessaire. + +\subsection{Commandes principales}\label{Commandes principales}\index{commandes principales}% + +\subsubsection{Quelques commandes du mode texte}\label{commandes} + +On l'aura compris, les noms des langues précisés dans le fichier +de description \verb|language.dat| servent à définir des +commandes du même nom qui permettent de passer +dynamiquement d'une langue à une autre ; +ainsi dès lors que l'on a choisi d'utiliser +l'extension {\eFrench} on peut écrire : +\begin{verbatim} + Texte en français + \english + Text in English + \french + Suite du texte en français... +\end{verbatim} +%\ifnoDOCinstall\else\newpage\fi% +Mais il est aussi possible d'écrire d'une autre manière : +\begin{verbatim} + Texte en français + \begin{english} + Text in English + \end{english} + Suite du texte en français... +\end{verbatim} +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{english}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{english}\}}% +\index{endenglish@\texttt{\backslash endenglish}}% + +On peut ainsi mélanger des parties en français et d'autres en anglais, +voire avec \emph{mlp} \index{extension!eFrench@\emph{efrench}} +en allemand( \textit{german} et \textit{ngerman}) . +Il n'y a pas possibilité de passer à d'autres langues, les autres étant +uniquement prévues pour \emph{babel}. +Chaque page ou partie de page du document +est composée selon la typographie associée à la langue active. +Si l'on souhaite une présentation homogène du début à la fin du +document on codera \verb|\ConstantLayout| juste après le +\index{ConstantLayout@\texttt{\backslash ConstantLayout}}% +\verb|\begin{document}|% +\footnote{Il est aussi possible de fournir cet ordre via +\texttt{\backslash usersfrenchoptions} dont on parle page \pageref{usersf}.}% +\index{usersfrenchoptions@\texttt{\backslash usersfrenchoptions}}% +. + +\medskip + +Quelques commandes ont été ajoutées au jeu standard \LaTeX{}, +il s'agit de : + +\begin{itemize} +\item \verb|\begin{resume} texte du résumé \end{resume}| +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{resume}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{resume}\}}% + + pour imprimer un {\em Résumé\/} lorsqu'on a déjà utilisé +\verb|\begin{abstract}| +\verb|...| \verb|\end{abstract}| en \verb|\english| ; +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{abstract}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{abstract}\}}% + +\item \verb|\begin{motsclef} liste des mots clef \end{motsclef}| +\index{environnement!motsclef@\texttt{motsclef}}% +\index{motsclef|see{environnement}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{motsclef}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{motsclef}\}}% + + pour imprimer la liste des mots clef d'un document ; + +on peut aussi utiliser +\verb|\begin{keywords}| +\verb|...| \verb|\end{keywords}| lorsque l'on est en \verb|\english| ; +\index{environnement!keywords@\texttt{keywords}}% +\index{keyword|see{environnement}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{keywords}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{keywords}\}}% + +\item \verb|\sommaire[n]| imprime le sommaire du document ; le paramètre +\index{sommaire1@\texttt{\backslash sommaire}}% +\index{sommaire2@\texttt{\backslash sommaire[n]}}% +optionnel \verb|[n]| peut prendre une valeur de 1 à 4 et permet +de choisir le +niveau de {\em profondeur} du sommaire% +\footnote{La profondeur dont on parle ici est (malheureusement, pour +des raisons techniques) inverse de celle de \LaTeX{} +(\texttt{\backslash tocdepth}).} +; avec le niveau 1 les titres de +\index{tocdepth@\texttt{\backslash tocdepth}}% +paragraphe et de sous-paragraphes ne seront pas imprimés, +tandis qu'au niveau +4 ce seront les titres de sections et tous les titres +de niveau inférieur% +\footnote{À condition que le compteur \LaTeX{} +\texttt{\backslash tocdepth} n'ait pas +été positionné à une valeur contradictoire.} + ; par +défaut \verb|n| prend la valeur 3 (retrait des titres de +sous-sections et des +éléments inférieurs) ; la commande +\verb|\tableofcontents| reste utilisable ; +\index{tableofcontents@\texttt{\backslash tableofcontents}}% +deux passages dans \LaTeX{} sont nécessaires pour produire un sommaire +correct ; + +\item pour réaliser une bibliographie +\index{bibliographie}% + (en faisant appel à un style ad hoc) on choisira de préférence l'utilitaire +\texttt{bibtex8} qui est capable de traiter les caractères accentués +des entrées bibliographiques à indexer et à préparer pour \LaTeX. +\index{bibtex8@\texttt{bibtex8}}% + Vous trouverez quelques styles BiB\TeX\ francisés sur \lsc{CTAN} et dans le +dossier \texttt{contrib} de la distribution. +\eFrench\ traduit les diverses commandes et mot-clés mise en Å“uvre dans +ces styles et/ou quelques extensions \LaTeX\ de bibliographie +(voir aussi page \pageref{bibliographie}). + +\item \verb|\annexe| ou \verb|\annexes| permettent de commencer des annexes ; +ils doivent précéder immédiatement un ordre \verb|\chapter| ; +\index{annexe1@\texttt{\backslash annexe}}% +\index{annexe2@\texttt{\backslash annexes}}% +chaque titre d'annexe sera donné par \verb|\chapter{Nom_de_l'annexe}| ; la +table des matières et le sommaire sont modifiés (automatiquement) +en conséquence ; les annexes +sont numérotées alphabétiquement à partir de A ; +ceci ne peut pas être utilisé avec la +\index{article@\texttt{article}}% +classe \verb|article| (\LaTeX{} ne l'a pas prévu) ; +%un article en général n'a pas d'annexe ! + +\index{glossaire1@\texttt{\backslash glossaire}}% +\index{glossaire2@\texttt{\backslash glossaires}}% +\item pour réaliser un glossaire on peut : + \begin{order} + \item coder \verb|\glossary{[|{\em nom}\verb| :]| + {\em explication% +\footnote{L'ordre \texttt{\backslash glossary} ne doit + pas dépasser une ligne ni contenir de commentaires.}% +.} \verb|}| pour chaque entrée désirée ; + \item commencer le ou les glossaires par : + \verb|\glossaire| ou \verb|\glossaires| ; +chaque titre de glossaire est à donner par : \\ +\verb|\section{Nom_du_glossaire}| ; la table des matières et le sommaire +sont modifiés automatiquement en conséquence ; + \item mettre \verb|\printglossary| à l'endroit voulu dans + le document ; + si le nom du fichier glossaire n'a pas l'extension \verb|.gls| ou + porte un autre nom, on pourra coder : + +\verb| \printglossary[nom_de_fichier]| + +\index{printglossary@\texttt{\backslash printglossary}}% +\index{makeindex@\texttt{\backslash makeindex}}% +\index{fichier!glo@\texttt{.glo}}% +\index{fichier!gls@\texttt{.gls}}% +\index{fichier!gglo.ist@\texttt{gglo.ist}}% + Il faut rappeler que le fichier glossaire produit par \LaTeX{} a + l'extension \verb|.glo| et qu'il est d'usage que ce glossaire, une + fois trié par le programme \lsc{MAKEINDEX}% +\footnote{Le programme \lsc{MAKEINDEX} ne trie pas selon l'alphabet +français (lettres accentuées). On peut toujours ruser avec le caractère +\texttt{\at} ou utiliser un programme de tri 8-bits tel que \emph{Xindy}.% +\label{xindy}} +\index{makeindex@{\sc makeindex} (programme)}% + (commande \verb|makeindex| + \verb|-s| \verb|gglo.ist|), porte l'extension \verb|.gls|. + À défaut + d'utilitaire \lsc{MAKEINDEX} on pourra remplacer \verb|\printglossary| + par une commande \verb|\input| du fichier \verb|.glo|. Tout ce qui + précède n'est valable que si aucune option de style + n'est utilisée + pour mettre en page le glossaire et n'introduit l'environnement + \verb|theglossary|. + \end{order} +\item pour réaliser un index on utilisera +le programme \lsc{MAKEINDEX}\refmark{xindy} +(par ex\-em\-ple avec la commande : +\texttt{makeindex -s fridx1.ist} {\em fichier}). +\index{makeindex@{\sc makeindex} (programme)}% +\index{fichier!fridx1.ist@\texttt{fridx1.ist}}% +Il ne faut pas +\index{index!trie de l'}% +\index{index!makeindex@\texttt{makeindex}}% +\index{makeidx@\texttt{makeidx} (extension)}% +préciser à \LaTeX{} l'extension \texttt{make}\-\texttt{idx} car elle +est incluse et francisée dans l'extension {\eFrench} ; on consultera +toutefois la documentation de \verb|makeindex| +\cite{makeindex} ; la table des +matières et le sommaire sont modifiés ; +l'extension {\eFrench} apporte la commande \verb|\seealso| mais +contrairement à la commande \verb|\see| qui s'utilise uniquement +à l'intérieur d'\verb|\index|% +\footnote{Comme ceci : \texttt{\backslash index}\{\texttt{ +...|see}\{{\em qqc}\}\}.}% +, celle-ci s'utilise en dehors et produit la commande +\verb|\index| nécessaire ; il suffit de coder +\verb|\seealso{|{\em entrée}\verb|}{|{\em renvoi\/}\verb|}| ; +\index{index!see1@\texttt{see}}% +\index{see1@\texttt{\backslash see}}% +\index{see2@\texttt{\backslash seealso}}% +\index{index!see2@\texttt{\backslash seealso}}% +rappelons que la commande \vers|\print|\-\vers|index| permet +\index{printindex@\texttt{\backslash printindex}}% +l'impression de l'index ; + +Rappelons aussi +que la commande \verb|\index| ne doit pas dépasser une ligne +et qu'il est fort souhaitable de la placer dans le texte en dehors +de tout argument de commande. + +\item dans le texte courant (c.-à -d. le texte en +\verb|\normalsize|% +\index{texte courant}\index{normalsize@\texttt{\backslash normalsize}}% +\footnote{Si vous disposez d'une bonne extension qui permet +de changer de taille de police relativement comme \texttt{smaller} +ou \texttt{relsize}, le +texte mis en petite taille (\texttt{\backslash small}) sera imprimé +dans la taille inférieure appropriée en fonction +de la police utilisée à cet instant.\label{small} +Vous trouverez ma version personnelle (\texttt{mysmaller.sty} +dans le sous-répertoire \texttt{tst} de la distribution).}% +\index{taille de police}% +\index{extension!relsize@\emph{relsize}}% +) on pourra +utiliser les commandes suivantes pour faciliter la composition avec \LaTeX{} : +\begin{itemize} +\item \verb|\ier| ou \verb|\iers| pour imprimer 1\ier{} ou 1\iers{}; + il suffira de saisir \verb|1\ier{}| ou \verb|\iers{}|, +\index{ier@\texttt{\backslash ier}}\index{iers@\texttt{\backslash iers}}% +\item \verb|\iere| (et \verb|\ieres|) +pour imprimer 1\iere{}\!, (ou 1\ieres{}\!) par exemple, on saisira +\verb|1\iere{}| ou \verb|1\ieres{}|, +\index{iere@\texttt{\backslash iere}}\index{ieres@\texttt{\backslash ieres}}% +\item \verb|\ieme| (ou \verb|\iemes|) pour imprimer 2\ieme{} (\verb|2\ieme{}|), +\index{ieme@\texttt{\backslash ieme}}\index{iemes@\texttt{\backslash iemes}}% +\item \verb|\ordinal{|\emph{compteur}\verb|}| pour imprimer la valeur ordinale +d'un compteur (\emph{premier, deuxième, ...} jusqu'à \emph{vingtième}), +\verb|\Ordinal| pour commencer par une majuscule, +\verb|\Ordinale| ou \verb|\ordi|\-\verb|nale| +pour imprimer la même chose au +féminin (\emph{Première}), +\index{ordinal@\texttt{\backslash ordinal}}% +\index{ordinale@\texttt{\backslash ordinale}}% +\index{Ordinal@\texttt{\backslash Ordinal}}% +\index{Ordinale@\texttt{\backslash Ordinale}}% +\item \verb|\degres| pour imprimer 14\degres{}C (\verb|14\degres{}C|), +\index{degres@\texttt{\backslash degres}}% +\item \verb|\primo \secundo \tertio \quarto| donneront \primo\ \secundo\ +\tertio\ \quarto\ mais vous pouvez% +\index{primo@\texttt{\backslash primo}}\index{secundo@\texttt{\backslash secundo}}% +\index{tertio@\texttt{\backslash tertio}}\index{quarto@\texttt{\backslash quarto}}% +\footnote{Bien que cela ne soit pas l'usage typographique, on pourra aussi +utiliser : \texttt{\backslash primo) \backslash secundo) +\backslash tertio) \backslash quarto)} + qui donneront \primo)\ \secundo)\ \tertio)\ et \quarto)% +.} + continuer avec \verb|\quando={11}| qui donnera alors \quando={11}\!, +\index{quando@\texttt{\backslash quando}}% +\item \verb|\numero| ou \verb|\Numero| pour imprimer \numero 12 ou \Numero 13 +\index{numero@\texttt{\backslash numero}}\index{numeros@\texttt{\backslash numeros}}% +\index{Numero@\texttt{\backslash Numero}}\index{Numeros@\texttt{\backslash Numeros}}% +(\verb|\Numero 13|) mais il existe aussi \verb|\numeros| et \verb|\Numeros| +pour imprimer << \numeros >> et << \Numeros >>,\label{numero} +\item l'ordre \verb|\fup{texte}| permettra de surélever le texte et de le +mettre dans une police de petite taille (\verb|\small|\refmark{small}% +\index{fup@\texttt{\backslash fup}}% Du fait du \kern on ne pouvait +) comme pour imprimer {XVI\fup{e}} % pas couper ici. +(\verb|XVI\fup{e}|) ; +\end{itemize} +L'espacement engendré par ces commandes peut ne pas +convenir dans certains +\index{\texttt{\backslash\exclam}}% +\index{espace!fine@fine négative (\texttt{\backslash\exclam})}% +\index{espacement!correction d' (\texttt{\backslash\exclam})}% +cas, on le supprimera alors en saisissant \verb|\!| ; ainsi pour +imprimer (\numero\!) il faut saisir \verb|(\numero\!)|. +\item voici aussi quelques ordres pour pouvoir imprimer : +\begin{itemize} +\item le << a enroulé >> (\at{} : arobase) avec \verb|\at|, +\index{at@\texttt{\backslash at}}% +\item le circonflexe ou chapeau ({\Large\chap}) avec \verb|\chap|, +\index{chap@\texttt{\backslash chap}}% +\item la barre verticale (\texttt{\vert}) avec \verb|\texttt{\vert}| +\footnote{\label{ttOT1}% + Ces caractères existent dans d'autres polices +que la police télétype à condition de ne plus utiliser le +{\em fontencoding\/} \texttt{OT1} +(ni le codage de fonte \texttt{LO1} défini par l'extension \emph{mltex}) +mais \texttt{T1}.}, +\index{extension!mltex@\emph{mltex}}% +\index{codage!\texttt{LO1}}% +\index{LO1@\texttt{LO1} (codage)}% +\index{fontencoding@{\em fontencoding}!\texttt{LO1}}% +\index{fontencoding@{\em fontencoding}}% +\index{fontencoding@{\em fontencoding}!\texttt{OT1}}% +\index{fontencoding@{\em fontencoding}!\texttt{T1}}% +\index{encodage!voir codage}% +\index{codage!\texttt{OT1}}% +\index{codage!de fonte}% +\index{codage!\texttt{T1}}% +\index{OT1@\texttt{OT1} (codage)}% +\index{T1@\texttt{T1} (codage)}% +\index{vert@\texttt{\backslash vert}}% +\item la barre oblique inversée (\texttt{\backslash}) +avec \verb|\texttt{\backslash}|% +\footnote{Avec le codage de fontes \texttt{OT1} la commande +\texttt{\backslash backslash} est aussi utilisable + en romain droit mais attention car la version anglaise +ne donne pas le même glyphe.}\refmark{ttOT1}%, +\index{backslash@\texttt{\backslash backslash}}% +\item le tilde ({\Large\tilde}) avec \verb|\tilde| (en +fait ici \verb|{\Large\tilde}|) ; +\index{tilde@\texttt{\backslash tilde}}% +\end{itemize} + +\item l'ordre \verb|\fsc| permet de composer un nom propre en petites +capitales sans avoir à se préoccuper de savoir quelle partie doit +être ou non en majuscules ; ainsi \verb|\fsc{KNUTH}| autant que +\verb|\fsc{knuth}| imprimera \fsc{kNuTh} et ce nom ne sera jamais +coupé en bout de ligne +(sauf exception signalée au §~\ref{cesure}) ;\label{fsc} +la forme étoilée, \verb|\fsc*|, permet de forcer l'utilisation +le \verb|\rmfamily| et de \verb|\mdseries| lorsqu'il n'existe +pas de police en petites capitales, avec la même graisse, + dans la fonte en service. +\index{fsc*@\texttt{\backslash fsc*}}% +\index{rmfamily@\texttt{\backslash rmfamily}}% +\index{mdseries@\texttt{\backslash mdseries}}% + +\item \verb|\lsc| est destiné aux noms de firmes ou de marques quand on +veut les mettre en minuscules {\em small caps}. Par exemple, +\verb|\lsc{RaTp}| et \verb|\lsc{Unix}| s'imprimeront : \label{lsc} +\index{lsc@\texttt{\backslash lsc}}% +\lsc{RaTp} et \lsc{Unix} ; ces noms ne seront, non plus, jamais coupés en +fin de ligne +(sauf exception signalée au §~\ref{cesure}). +La forme étoilée, \verb|\lsc*|, permet de forcer l'utilisation +de \verb|\rmfamily| et de \verb|\mdseries| lorsqu'il n'existe +pas de police en petites capitales, avec la même graisse, + dans la fonte en service. +\index{lsc*@\texttt{\backslash lsc*}}% +\index{rmfamily@\texttt{\backslash rmfamily}}% +\index{mdseries@\texttt{\backslash mdseries}}% +\index{lsc@\texttt{\backslash lsc}}% +\end{itemize} + +Nous verrons plus loin les guillemets français (\S~\ref{guillemets} page +\pageref{guillemets}), les lettrines +\S~\ref{lettrines} page \pageref{lettrines}) et les commandes +pour la classe \texttt{letter} +\index{classe!letter@\texttt{letter}}% +(\S~\ref{letter} page \pageref{letter}). + +\subsubsection{Les commandes du mode mathématique}\label{maths} + +\index{mode mathématique}% + +Aucune commande spécifique n'est ajoutée, pour l'instant +\footnote{Les mathématiciens et typographes français doivent +d'abord se mettre d'accord +pour définir précisément ce qu'est la typographie mathématique +française et en quoi \AllTeX{} n'est pas entièrement satisfaisant.}% +, par l'extension {\eFrench} au mode mathématique. Cela est +dû en partie au fait que la composition mathématique n'est pas +encore bien standardisée en France. D'ici quelques temps peut-être... +Signalons cependant l'existence de l'extension \emph{fourier} +\index{fourier@\emph{fourier}}% +et de la fonte du même nom (en fait, \emph{fourier-GUT}, basée sur +la fonte \texttt{utopia} d'Adobe) qui apporte de nouvelles commandes +et facilités pour le mode mathématique (en codage \texttt{T1}). + +Une modification due à \eFrench\ est toutefois à signaler : il s'agit de la +suppression de l'espacement derrière la virgule car la virgule est +utilisée usuellement en français dans un nombre décimal, voir +\verb|\nombre| en % +\ref{nombres} page~\pageref{nombres} +(et \ref{frenchtypography} page~\pageref{frenchtypography}). +\index{nombre}% +\index{nombre@\texttt{\backslash nombre}}% +\index{nombres}% + +%D'autre part, des fontes mathématiques spécifiques et modernes +%sont encore à l'étude. +%En attendant, le mode mathématique est toujours composé avec +%les fontes \emph{cm} (c'est-à -dire en codage OT1). + +%Les utilisateurs de l'option \oMlTeX\ ayant introduit la partie francisation de +%clavier dans le format (avec \texttt{kbconfig}% +%%%%%%%%%%%%%%%%%%%%% +%\ifnoDOCinstall\else% +%%%%%%%%%%%%%%%%%%%%% +%, cf. §~\ref{kbconfig} page \pageref{kbconfig},% +%\index{kbconfig@\texttt{kbconfig}}% +%\fi) apprécieront de pouvoir imprimer des caractères accentués +%\index{lettres accentuées!en mode mathématique}% +%\index{caractères accentués!en mode mathématique}% +%en mode mathématique +%\footnote{Sauf l'accentuation \texttt{\backslash H} du mode texte +%qui n'a pas d'équivalent en mode mathématique.}% +%. + +\subsubsection{Les guillemets français}\label{guillemets} + +Les ordres \verb|<<| et \verb|>>|% +\footnote{En fait \texttt{\inferieura} et \texttt{\superieura} sont +des ordres (macros-instructions) réalisant +des fonctions spécifiques et ce spécialement +lorsque le caractère qui suit est +\texttt{\inferieura} et respectivement~\texttt{\superieura}.} +ou leurs équivalents 8-bits (<< et >>, si vous +en disposez à votre clavier) +\index{fichier!.kbc@\texttt{.kbc}}% + permettent de saisir facilement +\index{<a@\texttt{\inferieura\relax\inferieura}}% +\index{<b@\leftguillemets}% +\index{>a@\texttt{\superieura\relax\superieura}}% +\index{>b@\rightguillemets}% +\index{guillemets!<<a@\texttt{\inferieura\relax\inferieura}}% +\index{guillemets!<<b@\leftguillemets}% +\index{guillemets!>>a@\texttt{\superieura\relax\superieura}}% +\index{guillemets!>>b@\rightguillemets}% +les guillemets français (et bien sûr de les imprimer : << >>) ; notez +qu'il est impératif de mettre des guillemets fermants à la fin d'une +citation (ou autre information) commencée par des guillemets ouvrants ; +cela est très important car ils forment un {\em bloc} (\verb|{}|) + au sens \LaTeX{} (mais aussi un \index{environnement!guillemets@\texttt{guillemets}} +environnement) ; il est ainsi possible de changer de police + de caractères pour tout le texte entre guillemets sans avoir à +l'encadrer entre accolades ; par contre si on code quelque chose +comme \verb|\footnote{...<<| \verb|...}...\section{...}| alors la +\index{footnote@\texttt{\backslash footnote}}% +note de bas de page ne sera jamais fermée et tout le texte qui se +trouve après y sera inclus ; +par défaut l'extension {\eFrench} propage les guillemets à chaque +début de paragraphe, comme c'est l'usage, jusqu'aux guillemets fermants +(sauf à l'intérieur d'une lettrine.) +\index{lettrine!avec guillemets}% + +Rappelons qu'un espace est nécessaire après les guillemets ouvrants +et avant les guillemets fermants pour assurer une composition correcte. +Au cas où vous désireriez utiliser les guillemets à un autre usage +\footnote{Les guillemets français sont automatiquement désactivés +en mode mathématique avec les extensions AmS\LaTeX.} +\index{guillemets!avec AmS\LaTeX{}}% +\index{AmSLaTeX@AmS\LaTeX{}}% + que celui prévu dans l'extension {\eFrench}, choisissez alors l'option +\vers|\nofrenchguil|\-\vers|lemets| décrite +page~\pageref{nofrenchguillemets}. + +\verb|\begin{guillemets}| et bien sûr \verb|\end{guillemets}| +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{guillemets}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{guillemets}\}}% +peuvent être utilisés en \LaTeX{} à la place de +\verb|<<| et \verb|>>| ; +\index{guillemets@\texttt{\backslash guillemets}}% +\index{guillemets!guillemets@\texttt{\backslash guillemets}}% +\index{guillemets!endguillemets@\texttt{\backslash endguillemets}}% +\index{endguillemets@\texttt{\backslash endguillemets}}% + accessoirement on pourra aussi utiliser : + +\noindent +\verb| \guillemets{} | et \verb| \endguillemets{}| ; + +\noindent mais, encore une fois, toute citation commencée par des guillemets +doit se terminer par des guillemets ; +\index{citation}\index{citation!dans une citation}% +on devra absolument utiliser \verb|\endguillemets{}| +lorsque deux citations se terminent au +même endroit comme ici : + +\begin{verbatim} + << Première citation << suivie d'une + deuxième citation se terminant au + même endroit que la première par \endguillemets{} ; +\end{verbatim} +là où nous aurions normalement dû saisir \texttt{>{}>{}>{}>{}} +pour terminer les deux citations, nous avons mis \verb|\endguillemets{}| ; +on se servira aussi de la commande \verb|\endguil|\-\verb|lemets| +pour apparier \label{apparier} des guillemets +ouvrants qui auraient été fermés préalablement dans un bloc ou +environnement plus intérieur. + +\verb|\leftguillemets{}| ou \verb|\rightguillemets{}| peuvent aussi bien +\index{leftguillemets@\texttt{\backslash leftguillemets}}% +\index{rightguillemets@\texttt{\backslash rightguillemets}}% +\index{guillemets!leftguillemets@\texttt{\backslash leftguillemets}}% +\index{guillemets!rightguillemets@\texttt{\backslash rightguillemets}}% +être utilisés {\em ponctuellement\/} lorsqu'il est nécessaire de +ne pas apparier guillemets ouvrants et fermants ; il n'y a pas dans +ce cas de notion de {\em bloc} \LaTeX{}. + +\subsubsection{Les lettrines}\label{lettrines} + +\verb|\lettrine{L'extension}| a permis d'imprimer la lettrine de +l'introduction. + +Une lettrine doit être placée au début d'un paragraphe% +\footnote{La lettrine peut débuter tout environnement de type paragraphe +comme par exemple \texttt{\backslash parbox} (qui lui-même peut être dans un +environnement \texttt{tabular}, etc.).} + qui est supposé être composé, au minimum, \emph{au fer à gauche} +s'il n'est pas aligné aussi à droite. +\index{mise en page!au fer à gauche} +Le {\em texte} doit être une partie significative de la phrase, +ayant un sens +en soi. Le paragraphe doit se terminer implicitement (ligne blanche) ou +\index{par@\texttt{\backslash par}}% +explicitement (\verb|\par|) par une fin de paragraphe +lorsque cela est nécessaire (tout spécialement avant les +ordres de sectionnement). + +Le texte qui suit l'ordre \verb|\lettrine| doit obligatoirement commencer +par une lettre mais il ne devrait jamais être réduit +à une seule lettre (l'extension {\eFrench} émet dans ce cas un +message d'avertissement). +Si cette lettre doit être accentuée à la mode \TeX{} +ancienne alors le couple $accent + lettre$ sera mis entre accolades. + +Il nous faut distinguer maintenant deux options bien différentes +dans la construction des lettrines : + +\begin{enumerate} + +\item Vous souhaitez ajuster vous-même la taille de la police +utilisée pour la lettrine, c'est l'option par défaut +\index{noautomaticlettrine@\texttt{\backslash noautomaticlettrine}}% +\verb|\noautomaticlettrine|. + +Le nombre exact de lignes (usuellement 2 ou 3) +qui seront en retrait est calculé automatiquement mais vous pouvez +l'imposer\footnote{Mais attention, +l'effet rendu peut être assez laid +lorsque le caractère imprimé descend notablement en dessous +de la ligne de base.} + par la commande : +\begin{verbatim} + \def\lettrinehang{n} +\end{verbatim} +\index{lettrine!lignes en retrait \\ (\texttt{\backslash lettrinehang})}% +\index{lettrinehang@\texttt{\backslash lettrinehang}}% +(il n'y a pas de valeur par défaut). + +Notez bien que la lettrine doit dépasser légèrement du haut +de la première ligne ; elle ne doit pas être {\em posée} sur +le paragraphe mais y être incluse. + Si ce n'est pas le cas, alors cela veut dire que +votre taille de lettrine n'est pas adaptée et il vous faut donc la changer. +Le choix de la taille de police +peut être commandé lorsque la +valeur par défaut (\verb|\Huge|) ne convient pas, comme par exemple : +\index{lettrine@\texttt{\backslash lettrine}}% +\index{flettrine@\texttt{\backslash flettrine}}% +\index{lettrinefont@\texttt{\backslash lettrinefont}}% +\index{lettrine!taille de la}% +\index{lettrine!police utilisée \\(\texttt{\backslash lettrinefont})}% +\index{lettrine!encadrée (\texttt{\backslash flettrine})}% +\index{guillemets!dans une lettrine}% +\index{\texttt{\backslash\exclam}!après une lettrine}% +\begin{itemize} +\item \vers|\let\lettrinefont=\Large| (ou tout autre taille) ; +\item ou \vers|\font\lettrinefont=cmr17 scaled\magstep3| (ce qui +a été utilisé dans l'exemple page \pageref{lettrinefont}). +\end{itemize} + +\item Vous laissez l'extension {\eFrench} choisir la taille appropriée +\index{automaticlettrine@\texttt{\backslash automaticlettrine}}% +de la fonte, c'est l'option \vers|\automa|\-\vers|tic|\-% +\vers|let|\-\vers|trine|. + +Cette option est activée soit en codant \verb|\automaticlettrine| soit +en précisant un nom de police comme dans l'exemple ci-dessous :\\ +\verb| \def\lettrinefontname{cmr17}|\\ +\index{lettrine!nom de police utilisé\\(\texttt{\backslash lettrinefontname})}% +Notez bien qu'il s'agit ici simplement d'un nom de police et que rien +n'indique sa taille comme dans \verb|\lettrinefont|. + +Cette option calcule pour vous la taille de la police à utiliser en +fonction de son nom générique (par défaut la police courante) et du +nombre de lignes en retrait (par défaut 2). Ce calcul nécessitera +probablement, à l'impression ou à la visualisation, +la génération +d'une nouvelle (taille de) police par \lsc{Metafont}, si vous n'utilisez +\index{polices!PostScript}% +\index{polices!TrueType}% +pas de polices de type vectorielles PostScript ou TrueType. +\seealso{polices}{fontes}% +\end{enumerate} + +Toute ponctuation autour de la lettrine doit être précisée dans +le texte entre accolades. +Lorsque la lettrine doit être précédée ou suivie de guillemets, + il faudra +alors utiliser la forme exprimée ci-dessous :\\ +\verb| |\verb*|\lettrine[<< {|{\em La citation}\verb*|} >>]|\\ +(les blancs figurés dans l'exemple sont absolument nécessaires mais +les guillemets fermants peuvent être plus loin dans le paragraphe). +Notez que le mécanisme \verb|\every|\-\verb|parguillemets| +(voir §~\ref{everyparguills} +page \pageref{everyparguills}) n'est jamais en service dans une lettrine. +Cela signifie que si l'effet des guillemets doit être prolongé +au(x) paragraphe(s) suivant(s) il est impératif d'ouvrir à nouveau +les guillemets au début du premier paragraphe suivant. + +Le texte peut -- si nécessaire -- être légèrement +rapproché de la lettrine +par l'ordre \verb|\!|. Ce sera le cas, par exemple avec un << A >> dont la +partie haute est en général très fine. + +\verb|\flettrine{|{\em texte}\verb|}| est à utiliser lorsque +l'on désire produire une lettrine encadrée. + +\subsubsection{La classe \emph{letter} est francisée} \label{letter} + +Voici quelques ordres pour la classe \verb|letter| à placer +\index{classe!letter@\texttt{letter}}% +après la commande + \verb|\begin{|\-\verb|document}| pour être pris en compte par +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +l'extension {\eFrench} : +\begin{itemize} +\item \verb|\wideletter| est une option permettant une présentation +différente des lettres, plus classique, avec des lignes plus longues ; +\index{wideletter@\texttt{\backslash wideletter}}% +\item l'ordre \verb|\location| permet d'imprimer la +date d'une lettre comme il est d'usage ainsi en saisissant +\verb|\location{Paris, le}| +on obtient une composition de la date comme suit : + +\hbox to \textwidth{\hfill Paris, le \today} +\index{lettre}\index{courrier}\index{letter@\texttt{letter}}% +\index{location@\texttt{\backslash location}}% +\item \verb|\yourref{...}| permet de préciser la +référence à un courrier reçu + (par exemple \verb|\yourref|\-\verb|{BG-ML,|\-\verb|92-237}|) ; +\index{yourref@\texttt{\backslash yourref}}% +\item \verb|\ourref{...}| pour imprimer la référence +du courrier à envoyer ; +\index{ourref@\texttt{\backslash ourref}}% +\item \verb|\object{...}| pour indiquer l'objet du courrier ; +\index{object@\texttt{\backslash object}}% +\item \verb|\PS{...}| pour mettre un {\em postscriptum} ; +\index{PS@\texttt{\backslash PS}}\index{postscriptum@{\em postscriptum}}% +\item \verb|\email{...}| pour imprimer l'adresse réseau juste en + dessous de la signature ; +\index{email@\texttt{\backslash email}}% +\item \verb|\fclosing[n]| est une alternative à \verb|\closing|, il +permet de choisir la distance entre la formule de politesse et la +signature ; par défaut \texttt{n} vaut 9, soit 9 fois \verb|\medskipamount| ; +\index{fclosing@\texttt{\backslash fclosing}}% +\item +il est possible de personnaliser le haut de la première page (dans un style +personnel ou maison, ou avant le \verb|\begin{let|\-\verb|ter}|) +en définissant un \verb|\formhead| par + la séquence : \verb|\def\formhead|\-\verb|{...}| à la \TeX{} ou +par la commande \verb|\renewcom|\-\verb|mand{\formhead}{...}| de \LaTeX{} ; +\index{formhead@\texttt{\backslash formhead}}% +\item et par \verb|\def\formfoot{...}| (ou son équivalent \LaTeX{}) il est +possible de personnaliser le bas de cette même + première page ; +\index{formfoot@\texttt{\backslash formfoot}}% +\index{bas de page!d'une lettre}\index{haut de page!d'une lettre}% +ces deux dernières commandes ne sont pas opérationelles en cas +d'utilisation de +%\verb|\nopagenumbers| + styles de pages spécifiques (comme +\verb|\|[\texttt{this}]\verb|pagestyle{empty}|) qui ne permettent pas +l'impression de haut ou de bas de page. +\index{pagestyle@\texttt{\backslash pagestyle}}% +\index{thispagestyle@\texttt{\backslash thispagestyle}}% +\end{itemize} +%=============== +Il faut noter que la classe \verb|letter| actuelle de \LaTeX{} est +\index{classe!letter@\texttt{letter}}% +assez imparfaite ; on est ainsi souvent amené à coder un \verb|\vfill| +avant le \verb|\end{letter}| lorsque la lettre fait moins d'une page, +sinon l'adresse du destinataire n'apparaît pas correctement +placée dans +la fenêtre de l'enveloppe + +%=============== +%\input{frenchlet} % activer dès l'instant où lettre.cls, version 3 est sur CTAN + +\subsection{La classe \emph{lettre} } \label{lettre} +La classe \texttt{lettre} + de l'Observatoire de Genève peut aussi être utilisée +par {\eFrench}. +%https://gna.org/projects/lettre_observatoire +S'il est vrai que la classe \texttt{lettre} a été conçue et développée d'abord pour être utilisée avec \textsl{babel}, +sa version 3.000 devrait être compatible avec \textsl{e-french}. +Les versions précédentes sortaient dans certaines configurations (sous Windows avec Mik\TeX) une page blanche avant chaque lettre. +\subsubsection{Exemples complets d'utilisation} +On ne peut pas appliquer tels quels les exemples donnés dans la documentation +de la classe \texttt{lettre} sous \textsl{babel}. C'est pourquoi il existe une documentation spéciale et + des exemples d'utilisation avec {\eFrench} sous +\url{http://efrench.org/doc/eflettre.zip} + +\subsection{Environnements}\label{Environnements}\index{environnements}% +\subsubsection{Les messages à la console}\label{messages} + +\index{messages!à la console} + + \MAJ Les messages émis par l'extension {\eFrench} sont désormais +en 7-bits ce qui est la seule solution pour éviter les mélanges +entre 8-bits et unicode. Autre possibilité pour l'utilisateur : +supprimer {\em french\_french-msg.tex} afin d'avoir les messages en anglais. +\endMAJ + +\subsubsection{À propos de césure\label{cesure}} + +On est souvent désemparé devant les messages \texttt{Overfull hbox}. +\index{cesure@césure}\index{Overfull@\texttt{Overfull hbox}}% +Rappelons que cela vient {\em en général\/} de mots qui ne peuvent +être coupés par \TeX{}. Les règles appliquées sont +celles fournies +dans le fichier des motifs de césure ({\em patterns}) française. +\index{motifs de césure}\index{patterns@{\em patterns}}% +Ce fichier est standard et ne doit en aucun cas être modifié. +Par contre il est toujours possible à l'auteur d'introduire des +coupures possibles à l'aide de la séquence \texttt{\backslash-} introduite +\index{\texttt{\backslash-}}% +à l'endroit voulu dans le mot. Cela doit rester exceptionnel. + +Plutôt que de forcer des coupures qui risqueraient d'être mauvaises +il faudra souvent préférer agir sur l'espacement entre les mots. +Pour cela quelques ordres sont fournis par l'extension {\eFrench}, on +les trouvera au §~\ref{frenchmacros} page~\pageref{frenchmacros}. +Rappelons simplement ici +l'existence de la séquence \texttt{\backslash,} pour rajouter ponctuellement +\index{\texttt{\backslash,}}% +une espace fine. Ce genre d'intervention manuelle qui relève +du travail de professionnel doit être fait avec une grande prudence... + +Rappelons aussi que dans les cas où la division des mots faite par \TeX{} +n'est pas parfaite il est aussi possible de la changer par l'ordre +\vers|\hyphenation|, + dans ce cas on indique les points de coupure avec des tirets (la +séquence \verb|\-| est ici, avec {\eFrench}, équivalente +à un espace) ; pour plus de détails se reporter à +\verb|\frenchhyphenation| page \pageref{frenchhyphenation} et +\verb|\moretolerance| page \pageref{moretolerance} ; \maj +%Par défaut, le fichier \vers|frhyphex.tex| contenant +%quelques exceptions françaises est introduit dans \TeX{} à +%la création du {\em format}% +%\footnote{Ceci n'est pas possible avec l'extension +% \label{frhyphbab}\emph{babel}.} % +%\index{fichier!d'exceptions}% +%\index{format}% +mais vous pouvez avoir votre propre fichier d'exceptions en ayant dans votre +répertoire personnel un fichier de configuration \vers|language.dat| % +\index{fichier!language.dat@\texttt{language.dat}}% +\index{language.dat@\texttt{language.dat}}% +précisant le nom de ce fichier. Le chargement de ces exceptions peut alors +être fait, en précisant avant le \vers|\begin{document}| + l'ordre \vers|\frhyphex|%\refmark{frhyphbab}% +.% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +\label{frhyphex}% +\index{frhyphex@\texttt{\backslash frhyphex}!avec babel}% +\index{babel@\emph{babel}!frhyph@\texttt{\backslash frhyphex}} +\index{babel@\emph{babel}!pas@pas d'exception de césure} +\index{frhyphex@\texttt{\backslash frhyphex}}% + +\LaTeX{} ne permet pas en standard de couper les textes écrits en +\verb|verbatim|. L'extension {\eFrench} suppose que cela n'a pas +été changé par quelque option de style et propose +\index{tthyphenation@\texttt{\backslash tthyphenation}}% +\index{cesure@césure!tthyphenation@\texttt{\backslash tthyphenation}}% +\index{notthyphenation@\texttt{\backslash notthyphenation}}% +\index{cesure@césure!notthyphenation@\texttt{\backslash notthyphenation}}% +l'ordre \vers|\tthyphenation| pour résoudre le problème. +Cet ordre s'applique uniquement à la police utilisable en mode +télétype (fonte \verb|tt|), dans la taille de police +en cours (\texttt{\backslash small} +ou \texttt{\backslash normalsize} ou...) et au minimum sur le paragraphe +commencé. Bien +entendu l'ordre inverse \vers|\notthyphenation| est fourni pour +revenir au standard% +\footnote{On comprendra aisément que la séquence : \\ +\{\texttt{\backslash small\backslash tthyphenation blabla}\}\{% +\texttt{\backslash normalsize +\backslash nott\-hyphenation} \\ +ne produise pas l'effet désiré à cause +des différences de taille des polices utilisées.} +(voir aussi l'ordre \vers|\vers| au §~\ref{outils}). +Cela, toutefois, ne résout pas tous les problèmes et c'est +pourquoi l'extension {\eFrench} propose, comme on le +verra au §~\ref{versatim} page \pageref{versatim}, +l'environnement \vers|versatim|. + +Par défaut l'extension {\eFrench} autorise la coupure des mots +commençant par une majuscule (\texttt{\backslash allow\-uc\-hyph}) +\index{allowuchyph@\texttt{\backslash allowuchyph}}% +\index{cesure@césure!allowuchyph@\texttt{\backslash allowuchyph}}% +\index{disallowuchyph@\texttt{\backslash disallowuchyph}}% +\index{cesure@césure!disallowuchyph@\texttt{\backslash disallowuchyph}}% +suivant en cela la recommandation de la %première +réunion du {\em comité de francisation GUT\-enberg} +du 15 avil 1992 à l'ENS% +\footnote{C'était il y a longtemps ... et il n'y a jamais eu +d'autre réunion, à mon grand regret.}% +\index{GUTenberg}% +. Il me semble toutefois plus {\em productif} +de choisir l'option inverse (\texttt{\backslash dis\-allow\-uc\-hyph}) +car vous ne +risquerez jamais par exemple de couper malencontreusement les noms +propres (que l'on oublie souvent de protéger contre ce risque). +Mais bien sûr vous obtiendrez quelques \vers|Overfull hbox| +supplémentaires pour lesquels il vous faudra vous-même +préciser la césure. +L'option \verb|\allowuchyph| n'affecte pas les ordres tels que +\verb|\fsc| ou \verb|\lsc| (voir page \pageref{fsc}) +pour lesquels les noms sont, par +défaut, mis dans une boîte \TeX{}. +Si vous désirez qu'il en soit +autrement vous pourrez alors utiliser l'ordre +\verb|\allowfulluc|\-\verb|hyph|. +\index{allowfulluchyph@\texttt{\backslash allowfulluchyph}}% +\index{cesure@césure!allowfulluchyph@\texttt{\backslash allowfulluchyph}}% +Ces options de césure restent +inchangées lorsque +l'extension est réinitialisé par l'ordre \verb|\french| ou +alors par \verb|\begin{french}|. + +Il est aussi possible d'éviter la coupure d'un mot, localement, en le +plaçant dans un \verb|\hbox| ou bien, plus généralement, en plaçant le +texte à l'intérieur d'un environnement \texttt{nohyphenation} (plus +précisément voir p. \pageref{nohyphenation}). +\index{mbox@\texttt{\backslash mbox}}% +\index{nohyphenation@\texttt{\backslash nohyphenation}}% +\index{environnement!nohyphenation@\texttt{nohyphenation}}% +\index{cesure@césure!stoppée}% +\index{coupure!de mots}% +\index{coupure!de mots évitée} + +Les problèmes de césures surviennent essentiellement du fait du choix, +par défaut, de \LaTeX{} d'une mise en page entièrement justifiée. +\index{mise en page!justifiée}% +\index{composition|see{mise en page}}% +\index{composition!en drapeau}% +\seealso{drapeau}{compo. en drapeau}% +Rappelons que les environnements \texttt{flushleft} et \texttt{flushright} +permettent une composition \textit{en drapeau}. +\index{environnement!flushleft@\texttt{flushleft}}% +\index{environnement!flushright@\texttt{flushright}}% +L'extension {\eFrench} apporte sur ce points les nouveaux environnements +ci-après. + +\subsubsection{Environnements pour la composition \emph{en drapeau}} +\label{endrapeau} +\index{mise en page!au fer} +\index{mise en page!en drapeau} + +L'environnement \texttt{drapeaufg} permet une composition \emph{en drapeau, +au fer à gauche}, avec coupure de mots : + +\medskip +\noindent +\index{environnement!drapeaufg@\texttt{drapeaufg}}% +\begin{minipage}{0.5\textwidth} +\begin{verbatim} +\begin{drapeaufg} +Ceci est un exemple +très simple d'une +composition en drapeau, +au fer à gauche. +\end{drapeaufg} +\end{verbatim} +\end{minipage} +% } +\hfill +\fbox{% +\begin{minipage}{0.33\textwidth} +\begin{drapeaufg} +Ceci est un exemple +très simple d'une +composition en drapeau, +au fer à gauche. +\end{drapeaufg} +\end{minipage} + } +\index{mise en page!au fer à gauche} + +\medskip +L'environnement \texttt{drapeaufgIN} permet une composition +\emph{en drapeau, au fer à gauche} mais sans coupure de mot, selon +les recommandations de l'imprimerie nationale \cite{lexique}. +L'inconvénient de cette méthode est le risque de débordement dans la +marge à droite. Dans ce cas il faudra intervenir, au coup par coup, en +\index{saut de ligne (\texttt{\backslash\backslash})}% + insérant un \emph{saut de ligne} (\verb|\\|). + +\medskip +\noindent +\index{environnement!drapeaufg@\texttt{drapeaufg}}% +\begin{minipage}{0.5\textwidth} +\begin{verbatim} +\begin{drapeaufgIN} +Ceci est un exemple +très simple d'une +composition en drapeau, +au fer à gauche et +sans coupure de mot. +\end{drapeaufgIN} +\end{verbatim} +\end{minipage} +% } +\hfill +\fbox{% +\begin{minipage}{0.33\textwidth} +\begin{drapeaufgIN} +Ceci est un exemple +très simple d'une +composition en drapeau, +au fer à gauche et +sans coupure de mot. +\end{drapeaufgIN} +\end{minipage} + } +\index{environnement!drapeaufgIN@\texttt{drapeaufgIN}} + +\smallskip + +Des environnements équivalents existent pour la composition +\emph{en drapeau, au fer à droite} qui sont d'utilisation +un peu moins courante. Ainsi vous disposez de l'environnement +\texttt{drapeaufd} : + +\medskip +\index{environnement!drapeaufd@\texttt{drapeaufd}}% + +\noindent +\index{environnement!drapeaufg@\texttt{drapeaufg}}% +\begin{minipage}{0.5\textwidth} +\begin{verbatim} +\begin{drapeaufd} +Ceci est un exemple +très simple d'une +composition en drapeau, +au fer à droite. +\end{drapeaufd} +\end{verbatim} +\end{minipage} +% } +\hfill +\fbox{% +\begin{minipage}{0.33\textwidth} +\begin{drapeaufd} +Ceci est un exemple +très simple d'une +composition en drapeau, +au fer à droite. +\end{drapeaufd} +\end{minipage} + } + +\medskip +et enfin l'environnement \texttt{drapeaufdIN} +qui ne donnera pas de coupure de mot (mais \texttt{drapeaufd} +a déjà fort peu de chances de générer une coupure de mot). +\index{mise en page!au fer à droite} +\index{environnement!drapeaufdIN@\texttt{drapeaufdIN}}% + +\subsubsection{Environnements de liste\label{envir}} + +Les environnements de liste en \LaTeX{} sont de plusieurs types +({\em itemize, enumerate, description,} \etc.) mais aucun d'eux ne +correspond typographiquement aux exigences françaises (marqueurs, +espacements horizontaux et verticaux, retrait, \etc.). +Tout cela a donc été modifié. + +Parmi ces modifications il faut noter l'espacement vertical dans +différentes listes qui a été considérablement réduit par rapport +aux valeurs standard dans \LaTeX. + +L'extension {\eFrench} apporte aussi un nouvel environnement de liste : +l'environnement \verb|order| +(\verb|\be|\-\verb|gin|\-\verb|{order}|, \verb|\end{order}|) +\index{order@\texttt{order}}\index{environnement!order@\texttt{order}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{order}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{order}\}}% +\index{endorder@\texttt{\backslash endorder}}% +a été conçu pour des listes ordonnées (\primo... \secundo...). +\index{liste ordonnée}% +Il s'agit en fait d'un environnement \verb|enume|\-\verb|rate| avec +numérotation latine. + +\subsubsection{Placement des figures} +Placer les figures et les tableaux à l'endroit désiré +relève parfois de +l'exploit en \LaTeX{}. Il est possible de demander le placement en +\index{figures et tableaux}% +\index{tableaux}% +\index{haut de page!(figures en...)}% +\index{bas de page!(figures en...)}% +haut de page (\verb|[t]|{\em op}), en bas de page (\verb|[b]|{\em ottom}), +sur une page séparée (\verb|[p]|{\em page of float}) ou à l'endroit +même (\verb|[h]|{\em ere}) mais cette dernière option fonctionne assez +rarement dans la pratique +\footnote{On peut toujours utiliser l'option \texttt{H} de l'extension +\emph{float}.}% +\index{extension!float@\emph{float}}% +. Il est donc très difficile de placer +une figure à l'endroit exact où elle arrive dans le texte. +C'est pour cette +raison que l'environnement \verb|figurette| a été créé ; +il s'utilise +exactement comme l'environnement \verb|figure| +(dans les classes de documents où il est défini) +mais ne comporte +aucun paramètre optionnel. + +\begin{verbatim} + \begin{figurette} + [\center] texte de la figure... + [\caption{titre de la figure}] + \end{figurette} +\end{verbatim} + +\label{figurette}% +\index{figurette}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{figurette}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{figurette}\}}% +\index{environnement!figurette@\texttt{figurette}}% +Cet environnement ne permet pas de faire des petits tableaux. Rappelons +que la +mise en page des tableaux est différente de celle des figures (voir +§~\ref{tableaux} page \pageref{tableaux}). +Comme son nom le laisse entendre, cet environnement est particulièrement +destiné aux petites figures ; celles-ci peuvent trouver plus facilement + leur place dans une page. Il ne faudra pas s'étonner toutefois, à +l'occasion de mises à jour ultérieures du texte, +de trouver d'éventuels +bas de page incomplets +lorsque les {\em figurettes} seront reportées à la page suivante. +Si vous utilisez {\bf aussi} l'environnement \verb|figure|, +il faudra surveiller que \LaTeX{} place bien les figures +en séquence (il peut +arriver effectivement que \LaTeX{} ne les place pas dans l'ordre de leur +numérotation). + +\subsection{Extension utiles}\label{Extension utiles}\index{extension utiles}% + +\subsubsection{Petits outils supplémentaires}\label{outils} +Il ne s'agit pas ici d'outils typiquement français mais +leur intérêt +m'a semblé suffisamment général pour être inclus +dans l'extension +(en attendant de les trouver par défaut dans \LaTeX{}) : + +\begin{itemize} +\item il est parfois bien utile de faire appel à une note de bas +\index{bas de page!note de...}% +de page\footnote{Voici la note.\label{note}} depuis plusieurs endroits +comme ici\refmark{note}, pour cela nous avons codé : +\index{refmark@\texttt{\backslash refmark}}% +\begin{verbatim} +... de page\footnote{Voici la note\label{note}} +depuis plusieurs endroits comme ici\refmark{note}, ... +\end{verbatim} +\item comme l'environnement \verb|verbatim| de \LaTeX{} est très rigide +une alternative est proposée avec l'environnement \vers|versatim| +\label{versatim} +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{versatim}\}}% +\index{versatim@\texttt{\backslash versatim}}% +\index{endversatim@\texttt{\backslash endversatim}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{versatim}\}}% +(\vers|\begin{versatim}| ... \vers|\end{versatim}|) qui sait couper +les phrases en fin de ligne et compose les lignes suite dans le style +de l'environnement \vers|verse|% +\footnote{L'environnement \texttt{versatim} et l'ordre \texttt{\backslash vers} +n'ont pas de version \texttt{*} comme \texttt{verbatim*} et +\texttt{\backslash verb*}, respectivement.\label{etoile} +Ils savent par contre obéir aux ordres \texttt{\backslash noenglishquote} et +\texttt{\backslash noenglishdoublequotes} que +l'on trouvera au §~\ref{noenglishquote} +page~\pageref{noenglishquote}.}% + ; +\item l'ordre \vers1\vers|...|1 fonctionne comme +\index{vers@\texttt{\backslash vers}}% +\verb|\verb|\refmark{etoile} ; il +autorise en plus la césure automatique ; cette césure par défaut +est réalisée entre les mots mais peut aussi se faire à +l'intérieur +des mots si l'option \texttt{\backslash tthyphenation} a +été précisée (voir § +\ref{cesure}) ; lorsqu'une séquence +\vers1\vers|blabla1\-\vers1tech1\-\verb1ni1\-\verb1que|1 +ne peut être coupée automatiquement par \TeX{} on pourra lui proposer des +coupures de la manière suivante : \vers1\vers|blabla|\-\vers|technique|1 ; +\item pour la mise au point \LaTeX{} il existe l'option \verb|draft| qui +permet de visualiser les débordements de ligne ; +l'extension {\eFrench} offre de même les commandes : \\ +\index{overfullhboxmark@\texttt{\backslash overfullhboxmark}}% +\verb| \overfullhboxmark | (et \verb|\nooverfullhboxmark|)\\ +qui peuvent, par contre, être activées à tout moment ; +cette option et son contraire ne doivent pas se retrouver sur la +même page, faute de quoi elles ne produiraient aucun effet ; +\item il est aussi très utile de retrouver où ont +été mis des \verb|\label|s +et quels noms ont été donnés, c'est pour cela +que l'extension {\eFrench} offre +la commande : \\ +\index{labelsinmargin@\texttt{\backslash labelsinmargin}}% +\verb| \labelsinmargin | (et \verb|\nolabelsinmargin|)\\ +qui imprimera dans la marge le texte des \verb|\label|s mais +attention n'y mettez pas de texte mathématique. Notez aussi que les +labels à l'intérieur des \verb|\footnote| ne sont jamais +imprimés dans +la marge. +\end{itemize} + +Tout ce qui est fait dans l'extension {\eFrench} devrait fonctionner +théoriquement avec \LaTeX{} sur tous les moteurs \TeX{}. +Pour exprimer cette idée en +\index{AllTeX@\texttt{\backslash AllTeX}}% +raccourci on écrit souvent : (La)\TeX{}. Cette présentation +n'étant pas très jolie, j'ai souhaité ici lui donner une forme +plus sympathique et plus définitive. L'extension {\eFrench} +propose donc la séquence \verb|\AllTeX| qui imprime \AllTeX. + +\subsubsection{Compatibilité interchartoks} + +La compatibilité avec tous les moteurs \LaTeX{} a été étendue à +\raccouXe\LaTeX{} pour une typographie correcte dans le cas où +certains modules utilisent interchartoks\index{interchartoks}. +Cette extension permet entre autres une utilisation correcte de BibLaTeX +\index{BibLaTeX@\texttt{Bib\LaTeX}}. + +\subsubsection{Personnalisation} +Nous avons parlé jusqu'ici d'une utilisation normale, standard, +de l'extension {\eFrench}. Mais il est toujours possible de +la paramétrer pour une utilisation différente. Tout cela est décrit +dans les pages à venir mais pour les lecteurs pressés voici un résumé +des possibilités. + +Si l'on désire imposer des options par défaut différentes, pour +tout le document, on se reportera au paragraphe \ref{usersf} page +\pageref{usersf}. + +On peut simplifier les noms de commandes à rallonge de {\eFrench} +(voir §~\ref{simplification} page \pageref{simplification}). + +%On peut changer de clavier de saisie (c'est-à -dire en général de système +%d'exploitation), en cours de document, pour cela on se reportera +%au descriptif de l'extension \emph{keyboard} (§~\ref{keyboard} +%page \pageref{keyboard}). +\rule{0pt}{1ex}\maj +%Il est possible de transmettre un document source francisé à +%l'étranger sans que cela impose une modification de format, voir +%pour cela le paragraphe suivant et le +%<< style {\eFrench} du pauvre >> §~\ref{reduit} +%page \pageref{reduit}. + +L'essentiel des autres commandes de personnalisation est décrit au +chapitre \ref{etendue} à partir de la page~\pageref{etendue}. + +\subsubsection{Transmettre un document à l'étranger} +Si vous devez envoyer votre document \LaTeX{} +à un destinataire éloigné qui +n'a pas effectué + l'installation complète de l'extension {\eFrench} +il vaudra mieux l'engager à installer +entièrement les fichiers de l'extension {\eFrench} pour +qu'il bénéficie de tous ses avantages. +Ceci d'autant plus que généralement il n'y a rien à faire, +l'extension complète est déjà là , voir le chapitre +\ref{chapinstall}, page \pageref{chapinstall}. + +\subsubsection{Simplification des noms de commande}\label{simplification} +\index{commandes!noms simplifiés}% + +Les noms de commande définis par l'extension {\eFrench} sont volontairement +longs pour ne pas risquer de conflit avec d'autres codes \TeX{}. +Grâce à la commande \verb|\frenchalias| l'utilisateur +peut les simplifier à volonté en définissant +des équivalences. Voici un +exemple avec \verb|\overfullhboxmark| : +\begin{verbatim} + \documentclass[a4paper]{book} + \usepackage{french} + \frenchalias\BB\overfullhboxmark + \begin{document} + ... + \BB +\end{verbatim} +\index{frenchalias@\texttt{\backslash frenchalias}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +\index{usepackage@\texttt{\backslash usepackage}}% + +\subsubsection{Suppression de l'extension \emph{keyboard}} + +\label{keyboard} + +On notera que la spécification du codage du texte d'entrée (paquetage \verb|inputenc|) +doit intervenir, de préférence, +avant le chargement de l'extension {\eFrench}. + +Différents codages d'entrée sont disponibles, parmi ceux-ci +on trouvera : +\begin{description} +\item [ansinew] pour \lsc{Windows} ; +\index{windows@\lsc{windows}}% +\index{système!windows@\lsc{windows}}% +\item [latin1] pour Unix ou Linux par exemple mais ce n'est pas le +\index{unix@\lsc{unix}}% +\index{système!unix@\lsc{unix}}% +\index{linux@\lsc{linux}}% +\index{codage!d'entrée}% +\index{codage!ansiwnew@\texttt{ansinew}}% +\index{codage!latin1@\texttt{latin1}}% +\index{codage!latin9@\texttt{latin9}}% +\index{codage!decmulti@\texttt{decmulti}}% +\index{codage!utf8@\texttt{utf8}}% +\index{codage!next@\texttt{next}}% +\index{codage!applemac@\texttt{applemac}}% +\index{codage!cp850@\texttt{cp850}}% +\index{système!linux@\lsc{linux}}% + codage le meilleur ; +\item [latin9] c'est le codage \texttt{latin1} enrichi + avec le caractère euro et les + caractères français \oe, \OE\ et Ÿ ; +\item [decmulti] pour Digital Unix, VMS, \etc. (option + avantageuse pour les systèmes \lsc{Unix} ne disposant + pas de \texttt{latin9}) ; + +\item [utf8] qui est un sous-ensemble du codage \lsc{UNICODE} + utilisable avec \lsc{LINUX} depuis la RedHat 9 et tend à se + généraliser dans les systèmes d'exploitation comme par exemple + avec MacOs X ; + la version du format \LaTeX\ doit dater au moins de 2003 +(\texttt{2003/12/01}) pour bénéficier du codage \texttt{utf8}. +C'est le codage par défaut de \raccouXe\LaTeX{}.\maj +%(avec +%l'extension \emph{inputenc} à laquelle fait appel \eFrench\ pour +%gérer ce cas spécifique) ; +\item [next] pour les systèmes du même nom ; + +\item [cp850] pour DOS avec code-page 850 ; +\index{dos@\lsc{dos}}% +\index{système!dos@\lsc{dos}}% + +\item [applemac] pour {MacOS} ; +\index{MacOs@MacOS}% +\index{système!MacOs}% + +\item [ascii] si l'on ne veut pas grand chose... +\end{description} +Il n'est plus nécessaire aujourd'hui de définir son propre codage. + +Voici un exemple qui montre comment changer de codage +dans un même document sans utiliser l'extension \emph{keyboard} +que proposait la version \FrenchPro{}, +mais en jouant avec l'ordre \verb|\inputencoding| +et en mettant les parties codées différemment du contexte général +dans des fichiers externes. +\begin{versatim} +\usepackage[latin1,utf8]{inputenc} % les codages mis à disposition +On commence ici en UTF8 (le dernier de [liste]inputenc) ... +... avant de passer à latin 9 : +\inputencoding{latin9} % pour changer le codage d'entrée +\input{flatin9.txt} % flatin9.txt : fichier écrit en latin9 +\inputencoding{utf8} % Retour à UTF8 +texte codé en utf8 ... +\end{versatim} +Les traitements de texte pour créer les sources pourront ainsi +être utilisés pour la saisie de chaque partie sous un codage local fixe. +\subsubsection{Autres extensions} +\index{extension!autres extensions}% + +L'extension {\eFrench} n'est pas, a priori, incompatible avec +toutes les autres +<< bonnes\footnote{Je veux dire les autres extensions bien écrites.} >> +extensions existantes. +Certaines extensions ou certaines classes ne peuvent toutefois tirer +parti entièrement de la francisation ; c'est le cas de la classe +\texttt{ltxdoc} +\index{classe!ltxdoc@\texttt{ltxdoc}}% +pour ce qui est du texte introduit par \verb|\DocInput|. +\index{DocInput@\texttt{\backslash DocInput}}% +Parfois, seuls quelques dispositifs sont désactivés, +comme par exemple l'usage des guillemets en mode mathématique +avec AmS\LaTeX. +\index{guillemets!avec AmS\LaTeX{}}% +\index{AmSLaTeX@AmS\LaTeX{}}% + +Certaines extensions (comme l'ancien \verb|psfig|) peuvent être chargées +hors du préambule. +Il faut absolument déconseiller cette pratique qui +ne peut que créer des problèmes. + +Par ailleurs, il faut noter l'existence de quelques extensions plus +particulièrement intéressantes pour la communauté francophone. +En voici une +liste succincte : +\begin{description} +\item[decalign] permet, dans des tableaux, l'alignement des nombres sur la +virgule décimale. +\index{extension!decalign@\emph{decalign}}% + +\item[endfloat] pour reporter figures et tableaux en fin de document. +\index{extension!endfloat@\emph{endfloat}}% + +\item[endnotes] permet de reporter des notes (ou toutes les notes de +bas de page) en fin de document. +\index{extension!endnotes@\emph{endnotes}}% + +\item[footnpag] permet de renuméroter les notes de bas de page + à chaque page. +\index{extension!footnpag@\emph{footnpag}}% + +\item[graphicx] pour imprimer des graphiques et notamment + inclure des images Post\-Script {\em encapsulées} + (ou \lsc{PDF}) + si l'on utilise un pilote d'impression comprenant + le PostScript (ou un moteur tel que \texttt{pdflatex}). +\index{moteur!pdflatex@\texttt{pdflatex}}% +\index{extension!graphicx@\emph{graphicx}}% + +\item[icomma] permet de conserver ou non (grâce à une bonne + coopération avec {\eFrench}), en mode mathématique, + l'espace après la virgule. +\index{extension!icomma@\emph{icomma}}% +\index{virgule}% + +\item[relsize] permet de changer de taille de police, relativement. +\index{taille de police}% +\index{extension!relsize@\emph{relsize}}% + +\item[wrapfig] pour mettre une figure sur le côté et placer le texte +autour. +\end{description} +Cette courte liste ne reflète absolument pas la quantité +d'extensions + disponibles dans le domaine public, on consultera à cet effet le +<< \em \LaTeX\ companion >> \cite{companion} ou le +\linkandfootnote{catalog}{catalogue \LaTeX}% +{http://mirror.ctan.org/} +accessible par le navigateur \lsc{CTAN} +si vous disposez d'un accès à l'internet\footnote{Qui n'a pas l'accès à l'internet aujourd'hui ?}. +Vous pouvez bien entendu obtenir les dernières versions +sur l'un de ces serveurs +d'archives \lsc{CTAN} sinon auprès +des associations d'utilisateurs de \TeX{}. + +\subsubsection{Fragilité des commandes} +\index{commandes!fragilité}% + +On sait qu'en \LaTeX{} les commandes doivent être {\em protégées\/} +lorsqu'on veut les coder dans certaines commandes comme \verb|\section|. +Il faut alors faire précéder ces commandes par l'ordre +\verb|\protect|. +\index{protect@\texttt{\backslash protect}}% +\index{fragilité des commandes}% +Il peut éventuellement en être de même pour quelques commandes +introduites par l'extension {\eFrench}. + +\begin{center} +\fbox{\fbox{\parbox{10cm}{Ce qui suit va progressivement se compliquer ; +certains passages sont plus particulièrement destinés aux +utilisateurs expérimentés en \LaTeX{}.}}} +\end{center} +\bigskip +\subsubsection{Compatibilité}\label{compatibilite} +\index{compatibilité}% + +L'extension {\eFrench} rend {\em actifs\/}% +\footnote{Ou plutôt {\em peut rendre actifs} +car ils ne sont pas forcément tous actifs en même temps.} + les caractères suivants : + +\medskip +\verb| < ` " ' >| \ \ \ \ \ et \ \ \verb| : ; ! ?| +\index{caractères actifs}% +\index{\texttt{<{}}}\index{\texttt{`}}\index{\texttt{\dittomark}}% +\index{\texttt{'}}\index{\texttt{>{}}}% + +\medskip +Cela veut dire que ces caractères sont désormais des + macro-instructions +et ne peuvent plus jouer +leurs rôles originels tels qu'ils sont +définis en \LaTeX{}. Si la nécessité +impose de les utiliser, on codera : +\begin{verbatim} +\inferieura à la place de < \superieura à la place de > +\lq " ` \rq " ' +\lqq " `` \rqq " '' +\deuxpoints " : \pointvirgule " ; +\pointexclamation ! \pointinterrogation ? +\dittomark " " +\end{verbatim} +\index{\texttt{`}}\index{\texttt{\dittomark}}\index{\texttt{'}}% +\index{{\`\space}}\index{{\'\space}}\index{{``}}\index{{,,}}\index{{''}}% +\index{dittomark@\texttt{\backslash dittomark}}% +\index{inferieura@\texttt{\backslash inferieura}}% +\index{deuxpoints@\texttt{\backslash deuxpoints}}% +\index{points!pointvirgule@\texttt{\backslash pointvirgule}}% +\index{pointvirgule@\texttt{\backslash pointvirgule}}% +\index{points!pointinterrogation@\texttt{\backslash pointinterrogation}}% +\index{pointinterrogation@\texttt{\backslash pointinterrogation}}% +\index{points!pointexclamation@\texttt{\backslash pointexclamation}}% +\index{pointexclamation@\texttt{\backslash pointexclamation}}% +\index{superieura@\texttt{\backslash superieura}}% +\index{lq@\texttt{\backslash lq}}\index{lqq@\texttt{\backslash lqq}}% +\index{rq@\texttt{\backslash rq}}\index{rqq@\texttt{\backslash rqq}}%% + +Dans certains cas comme, par exemple, dans l'environnement \verb|array| +on pourra préférer faire précéder ces +caractères de l'ordre +\verb|\protect| plutôt que de les remplacer par les commandes +de substitution. + +Rappelons aussi que \verb|\inferieura| et \verb|\superieura|, +s'ils sont utilisés en codage de fonte \texttt{OT1}% +\footnote{C'est aussi le cas avec +le codage de fonte \texttt{LO1} défini par l'extension \emph{mltex}.}% +, ne seront +imprimés correctement qu'à condition d'utiliser une police \texttt{tt}. +\index{polices!tt@\texttt{tt}}% +\index{extension!mltex@\emph{mltex}}% +\index{codage!\texttt{LO1}}% +\index{LO1@\texttt{LO1} (codage)}% +\index{fontencoding@{\em fontencoding}!\texttt{LO1}}% + +Certaines extensions font, elles aussi, une utilisation intensive des +mêmes caractères. Cela peut s'avérer très gênant. Pour sa part, +l'extension {\eFrench} teste, au chargement, si l'un des caractères +de double ponctuation (\verb|! : ; ?|) est déjà défini et dans ce cas +rend inopérante toute la gestion de la typographie fine au niveau de +ces caractères (un message est émis). + +S'il s'agit d'un code que l'on ne peut modifier +et pour lequel l'extension {\eFrench} est superflue, +alors il est possible de l'encadrer par les commandes +suivantes pour l'exécuter% +\footnote{Les définitions de commandes à l'intérieur +de l'environnement +\texttt{nonfrench} sont par défaut locales à cet environnement. Il faudra +éviter cette méthode pour {\em charger} des codes en mémoire.} +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{nonfrench}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{nonfrench}\}}% +\index{nonfrench@\texttt{\backslash nonfrench}}% +\index{endnonfrench@\texttt{\backslash endnonfrench}}% +correctement : \\ +\verb| \begin{nonfrench} | et \verb| \end{nonfrench}| + +\noindent ou par : \\ +\verb| \nonfrench | et \verb| \endnonfrench| + +Si ce code réside dans un fichier particulier +que l'on ne souhaite pas modifier, alors on utilisera la commande +suivante pour le charger en mémoire : + +\index{originalinput@\texttt{\backslash originalinput}}% +\verb| \originalinput{nom_de_fichier}| + +\noindent Cette commande n'a aucun intérêt avant +\index{babel@\emph{babel}!origin@\texttt{\backslash originalinput}}% +le \verb|\begin{document}| car l'extension {\eFrench} +n'est pas encore active. +\index{babel@\emph{babel}!activ@activation de {\eFrench}}% +\index{activation de {\eFrench}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +Il faut noter que les valeurs par défaut de l'extension {\eFrench} sont +réactivées après \verb|\originalinput|. +Si l'on souhaite qu'il en soit +autrement il faut imposer les options de son choix pour tout le +document dans \verb|\usersfrenchoptions| (voir §~\ref{usersf} page +\pageref{usersf}). + +Il reste bien entendu toujours possible d'annuler +l'option {\eFrench} en revenant au language \verb|\|\texttt{en\-glish} +(s'il a été défini via le fichier de +\index{english@\texttt{\backslash english}}% +\index{fichier!language.dat@\texttt{language.dat}}% +\index{language.dat@\texttt{language.dat}}% +configuration \verb|language.dat|). + +Pour écrire du texte dans un fichier, sans avoir l'expansion des +caractères actifs de {\eFrench}, il suffit de coder :\\ +\index{originaloutput@\texttt{\backslash originaloutput}}% +\verb| \originaloutput[numéro_de_fichier]{texte}|\\ +où \verb|numéro_de_fichier| est le numéro d'un flux de sortie +défini par \verb|\newwrite|. + + Voici un extrait de code à titre de démonstration : +\begin{versatim} +Du texte normal, puis envoi vers list.tex, +\newwrite\tempfile% définit un numéro pour \tempfile +\immediate\openout\tempfile=list% \immediate indispensable +\originaloutput[\tempfile]{bonjour ! Ceci est un essai : +qu'en pensez-vous, M\fup{me} ?} +la suite du texte normal ... +\originaloutput[\tempfile]{Au revoir M\fup{me} ! +et encore du texte ... +\end{versatim} +Chaque appel à \verb|\originaloutput| génère une nouvelle ligne dans le fichier de sortie. +Et le résultat dans la sortie {\em pdf}, donne : \\ +\textsl{Du texte normal, puis envoi vers list.tex, la suite du texte normal ...et encore du texte ... }\\ +Pour savoir ce qu'il en est dans ce cas du contenu de \textsl{list.tex}, je vous conseille un petit essai. + +On peut utiliser \backslash\textsl{originaloutput} de cette manière, si l'on sait que \verb|\tempfile| vaut 3 :\\ +\verb|\originaloutput[3]{ bonjour ...}|\\ +\\[2ex] +% === +%"file" is a stream +% number related to open file defined by \newwrite. +% === + +Vous trouverez au début du fichier \verb|french.doc| +\index{fichier!french.doc@\texttt{french.doc}}% +\index{occupation mémoire}% +l'occupation supplémentaire en mémoire interne de \TeX{} qui +est imputable à l'extension. +\section{Pour dépanner...} +\index{dépannage} +Il est parfois utile de savoir si un document risque de poser des +problèmes une fois que l'on utilisera l'extension {\eFrench} ; c'est +pour aider à répondre à cette question que vous pouvez inclure dans +votre document (toujours avant le \verb|\begin{document}|) +l'ordre \verb|\input french.chk|. Bien entendu il ne faut pas faire +\index{fichier!french.chk@\texttt{french.chk}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +\index{input2 french.chk@\texttt{\backslash input french.chk}}% +appel à l'extension {\eFrench} d'une manière ou d'une autre. Ainsi, +s'il existe dans votre document une instruction qui risque d'être +en conflit avec l'extension {\eFrench} vous obtiendrez à chaque fois +un message d'erreur et la compilation de votre document s'arrêtera. +Il devrait ensuite vous suffire d'appliquer les conseils indiqués +au paragraphe \ref{compatibilite}. + +Une autre manière de dépanner peut aussi consister à +rendre tous les +ordres de l'extension {\eFrench} inopérants. Pour cela il faut tout +d'abord retirer l'appel de l'extension {\eFrench} et ensuite rajouter +l'ordre \verb|\input french.dmy| +\index{fichier!french.dmy@\texttt{french.dmy}}% +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +\index{input2 french.dmy@\texttt{\backslash input french.dmy}}% +(comme toujours en \LaTeX{} : avant le \verb|\begin{document}|). +Cette technique vous permettra d'éliminer les effets de l'extension +{\eFrench} sans avoir à retirer de votre document tous les +ordres relatifs à l'extension elle-même% +\footnote{Cette technique ne doit pas être employée pour imprimer +des documents français dans un environnement \LaTeX{} non francisé +car le document ne peut être composé correctement +de cette manière.}% +. +%On notera qu'il est fortement conseillé de traduire le texte en +%7-bits avant l'utilisation de ce subterfuge. + +La version {\em du pauvre} dont vous trouverez l'explication page +\pageref{reduit} (<< Poor Man French Style >>) +peut aussi vous aider dans certains +cas. + +\section{Utilisation étendue}\label{etendue} +\index{utilisation!étendue}% +Nous allons aborder ici une utilisation plus délicate de l'extension +{\eFrench} car elle fait appel à des connaissances \TeX{} +plus pointues. + +\subsection{Les grandes parties de l'extension {\eFrench}} + +L'extension {\eFrench} est composée de plusieurs parties essentielles : +césure, typographie (dans la ligne), mise en page, +traduction en français, macro-instruc\-tions et messages. +Chacune de ces parties est {\em embrayable} ou {\em +débrayable} à volonté. +Pour ce faire les ordres suivants ont été définis : +\begin{verbatim} + \frenchhyphenation ... \nofrenchhyphenation + \frenchtypography ... \nofrenchtypography + \frenchlayout ... \nofrenchlayout + \frenchtranslation ... \nofrenchtranslation + \frenchmacros ... \nofrenchmacros + \frenchwarnings ... \nofrenchwarnings +\end{verbatim} +%%% \frenchbibliography ... \nofrenchbibliography + +Lorsque l'extension {\eFrench} est appelée elle active toutes ces parties. +Il en va de même à chaque fois que l'extension est réactivée +par l'ordre \verb|\french| (sous réserve de choix +différents faits dans une classe, un +style personnel ou << maison >>, voir §~\ref{usersf}). + +Certaines de ces parties disposent de sous-options +ou de commandes spécifiques que nous allons détailler ci-après. + +Nous ne parlerons presque pas de la bibliographie car +\index{bibliographie}% +elle est essentiellement traitée, pour l'instant, +par \verb|\frenchtranslation| ; voir toutefois \ref{bibliographie} +page \pageref{bibliographie}. + +Une autre partie, implicite mais non négligeable, concerne la +commutation de langues ; elle est décrite en \ref{multilingue} +page \pageref{multilingue}. + +\subsubsection{\texttt{\backslash frenchhyphenation}} +\label{frenchhyphenation} +\index{frenchhyphenation@\texttt{\backslash frenchhyphenation}}% +Cette partie de l'extension {\eFrench} active la césure française +\footnote{Les valeurs des variables \texttt{\backslash lefthyphenmin}, +\texttt{\backslash righthyphenmin} et \texttt{\backslash uchyph} +y sont précisées +(respectivement 2, 3 et 1).}% +, autorise la division des mots commençant par une majuscule et permet le +chargement d'un fichier d'exceptions personnel comme il +en a été discuté +au paragraphe \ref{cesure} page \pageref{cesure}. +\index{fichier!d'exceptions}% +\index{coupure!de mots}% +\index{division!des mots}% + +Les ordres \verb|\hyphenation| et \verb|\showhyphens| ont été +modifiés pour accepter des macro-instructions d'accentuation +en paramètre. +\index{hyphenation@\texttt{\backslash hyphenation}}% +\index{showhypens@\texttt{\backslash showhyphens}}% + +Un ordre \verb|\allowhyphens| +\index{allowhyphens@\texttt{\backslash allowhyphens}}% +\index{cesure@césure!allowhyphens@\texttt{\backslash allowhyphens}}% +est utilisable dans le texte pour forcer \TeX\ +à utiliser tous les points de coupure possibles d'un mot composé +plutôt que le seul trait d'union entre les deux mots. +Exemple : \\ +\verb|socio-\allowhyphens culturel|\\ +ou : \verb|définissez\allowhyphens-le|\\ +On notera que l'on précise \verb|\allowhyphens| \textbf{\emph{avant}} +ou \textbf{\emph{après}} le trait d'union selon que l'on souhaite +couper le mot composé avant ou après. Cette commande n'est pas +utilisable en argument de l'ordre \verb|\hyphenation|. +\index{hyphenation@\texttt{\backslash hyphenation}}% + +L'ordre \vers|\frenchhyphenation| n'est pas pris en compte immédiatement ; +il ne prend effet qu'à partir du moment où +il est demandé une réactivation de l'extension {\eFrench} +par l'ordre \verb|\french| ou \verb|\begin|\-\verb|{french}|. + +\noindent +\texttt{\backslash nofrenchhyphenation} +\index{nofrenchhyphenation@\texttt{\backslash nofrenchhyphenation}}% + retire le mécanisme de césure française. Cela ne signifie +pas qu'il n'y a +plus de coupure de mot mais que la langue utilisée pour le faire n'est plus +le français mais celle qui était active auparavant. + +L'installation du fichier \texttt{language.dat} par les moteurs +\index{fichier!language.dat@\texttt{language.dat}}% +MiK\TeX{} et \TeX{}Live + permet l'accès à une commande \verb|\nohyphenation| +\label{nohyphenation}% +\index{nohyphenation@\texttt{\backslash nohyphenation}}% +\index{cesure@césure!stoppée}% +qui stoppe immédiatement la césure et +qui n'est rien d'autre qu'un langage spécifique sans motif de césure. La +portée de cette commande doit donc être limitée à un bloc (\verb|{}|) +bien précis. + +L'ordre \vers|\nofrenchhyphenation| n'est pas pris +en compte immédiatement ; +il ne prend effet qu'à partir du moment où +il est demandé une réinitialisation de l'extension {\eFrench} +par l'ordre \verb|\french| ou \verb|\begin{french}|. + + +\subsubsection{\texttt{\backslash frenchtypography}} +\label{frenchtypography} +\index{frenchtypography@\texttt{\backslash frenchtypography}}% +Cette partie de l'extension {\eFrench} applique + la typographie française à la ponctuation et aux guille\-mets +\footnote{La typographie française n'est appliquée, + bien sûr, que si vous saisissez les espaces appropriés à ces +ponctuations (cf. §~\ref{saisie}). À défaut, la ponctuation sera +accolée aux mots, comme c'est l'usage classique en anglais.}% +\index{ponctuation}\index{cesure@césure}% +\index{lefthyphenmin@\texttt{\backslash lefthyphenmin}}% +\index{righthyphenmin@\texttt{\backslash righthyphenmin}}% +\index{uchyph@\texttt{\backslash uchyph}}% +\index{guillemets}\index{points!deux-points (:)}% +\index{deux-points (:)}% +, propose l'accentuation dans l'environnement \vers|tabbing| +(voir \ref{tabbingaccents} page \pageref{tabbingaccents}) + et empêche (autant que possible) la coupure de ligne +ou de page avant la ponctuation, avant les guillemets fermants, après les +deux-points et les guillemets ouvrants. +D'autres aspects typographiques +liés au français sont aussi mis en Å“uvre comme : +\begin{itemize} +\item en mode mathématique l'espace après la virgule est supprimé (c'est + l'option par défaut de {\eFrench} + \verb|\frenchmathcomma| mais qui peut être annulée par la + commande \verb|\regularmath|\-\verb|comma|) ; on notera que +{\eFrench} adopte le comportement de l'extension +\texttt{icomma} lorsque cette dernière est chargée avant {\eFrench}. +Le mode actif avant l'appel de {\eFrench} peut être restauré par la +commande \verb|\originalmathcomma|. +\index{extension!icomma@\emph{icomma}}% +\index{frenchmathcomma@\texttt{\backslash frenchmathcomma}}% +\index{regularmathcomma@\texttt{\backslash regularmathcomma}}% +\index{originalmathcomma@\texttt{\backslash originalmathcomma}}% +\index{virgule}\index{espacement!après la virgule}% +\item \verb*|\nombre{1 234,56}| applique l'espacement correct. Le nombre + est toujours composé en mode mathématique. L'option \verb|\nofiles| + ne doit pas être indiquée en début de document. +\index{nombre@\texttt{\backslash nombre}}% +\index{nombre@\texttt{\backslash nombre}!nofiles@avec \texttt{\backslash nofiles}}% +\index{nombre@\texttt{\backslash nombre}!en mode mathématique}% +\index{nofiles@\texttt{\backslash nofiles}}% +\index{nofiles@\texttt{\backslash nofiles}!et nombre@et \texttt{\backslash nombre}}% +\item l'espacement des appels de notes (et des \verb|\thanks|) +de bas de page et de \verb|minipage|. +\item la composition des numéros de notes dans la police de la note de bas + de page ; +notez que l'ordre \verb|\footnote| ou \verb|\thanks| peut +désormais être séparé, dans le texte, +du mot qui le précède, l'extension {\eFrench} n'imprimant pas cet espace.% +\index{thanks@\texttt{\backslash thanks}}% +\index{footnote@\texttt{\backslash footnote}}% +\index{note!footnote@avec \texttt{\backslash footnote}}% +\index{note!thanks@avec \texttt{\backslash thanks}}% +\item la mise en italique du titre des figures et tableaux + (option par défaut, car l'utilisateur peut choisir de + préciser \verb|\captionfont|). +\index{captionfont@\texttt{\backslash captionfont}}% +\item la modification du séparateur +des titres de figures et tableaux << \texttt{:} >> par +\verb|\caption|\-\verb|separator| qui est initialisé par défaut +dans {\eFrench} à << \verb|~--| >>. +\index{captionseparator@\texttt{\backslash captionseparator}} + + Rappelons que + c'est l'ordre \verb|\caption| de \LaTeX{} qui permet de donner + un titre à une figure ou un tableau. Mais ce titre n'est pas +\index{figures et tableaux}% +\index{tableaux!notes}% +\index{tableaux!titres}% +\index{note}% + placé dans les deux cas au même endroit. + Dans le cas d'une figure il est placé {\em après} ; dans celui + d'un tableau il est placé {\em avant\/}. +\end{itemize} + +Les sous-options proposées sont les suivantes : +\begin{itemize} +\item \verb|\unnumberedcaptions{figure/table}| permet d'annuler +définitivement la numérotation des figures ou des tableaux et +les commandes correspondantes \verb|\listoffigures| +ou \verb|\listof|\-\verb|tables|. +Cette option ne peut être utilisée qu'une seule fois, pour chaque +type, au début du document ; elle est +irréversible, du moins à l'intérieur du texte français ; +\index{unnumberedcaptions@\texttt{\backslash unnumberedcaptions}}% +\index{listoffigures@\texttt{\backslash listoffigures}}% +\index{listoftables@\texttt{\backslash listoftables}}% + +\item \verb|\noTeXdots| modifie \verb|\dots| et \verb|\ldots| pour produire +trois points normaux, mais c'est l'option +\index{noTeXdots@\texttt{\backslash noTeXdots}}% +\index{points!\texttt{\backslash noTeXdots}}% +\index{dots@\texttt{\backslash dots}}\index{points!\texttt{\backslash dots}}% +\index{ldots@\texttt{\backslash ldots}}\index{points!\texttt{\backslash ldots}}% +inverse \verb|\TeXdots| qui en est la +valeur par défaut (car il suffit de ne pas utiliser \verb|\dots| ou +\verb|\ldots|) ; + +\label{nofrenchguillemets} +\item \verb|\nofrenchguillemets| permet de désactiver les guillemets 7-bits% +\footnote{On entend par guillemets 7-bits les caractères +\texttt{\inferieura\relax\inferieura} et \texttt{\superieura\relax\superieura}. +En fait il s'agit de désactiver les caractères +\texttt{\inferieura} et \texttt{\superieura} pour +qu'ils n'exécutent plus les macro-instructions de l'extension {\eFrench}.} +français pour un autre usage ; +l'option par défaut de l'extension {\eFrench} +est \verb|\french|\-\texttt{guil}\-\texttt{lemets} ; +\index{frenchguillemets@\texttt{\backslash frenchguillemets}}% +\index{nofrenchguillemets@\texttt{\backslash nofrenchguillemets}}% + +\item \verb|\ancientguillemets| permet d'obtenir des guillemets {\em à +l'ancienne} c.-à -d. où chaque paragraphe + d'une citation de deuxième rang +\index{ancientguillemets@\texttt{\backslash ancientguillemets}}% +\index{todayguillemets@\texttt{\backslash todayguillemets}}% +commence non pas par des guillemets ouvrants mais par des fermants ; la valeur +par défaut de l'extension {\eFrench} est \verb|\todayguillemets| ; + +\item \verb|\guillemetsinarrays|, qui est la valeur par défaut +de {\eFrench} permet d'obtenir des guillemets +\index{guillemetsinarrays@\texttt{\backslash guillemetsinarrays}}% +\index{noguillemetsinarrays@\texttt{\backslash noguillemetsinarrays}}% +en mode texte dans les environnements standard \texttt{array} ; +l'inconvénient de cette possibilité +est qu'il est nécessaire de protéger les macros-commandes +\verb|<| et \verb|>| lorsqu'ils terminent une case d'un +tableau de ce genre (via \verb|\protect| ou en écrivant +\index{protect@\texttt{\backslash protect}}% +\verb|<{}| ou même \verb|<\relax|) ; +\item \verb|\noguillemetsinarrays|, par contre, n'a pas +cet inconvénient mais ne permet plus d'imprimer des guillemets +\index{array}\index{eqnarray}% +\index{environnement!array@\texttt{array}}% +\index{environnement!eqnarray@\texttt{eqnarray}}% +\index{environnement!eqnarray*@\texttt{eqnarray*}}% +français dans ces environnements \texttt{array} et \texttt{eqnarray} ; + +\item \verb|\guillemetsinallfonts| permet d'obtenir des guillemets +\index{guillemetsinallfonts@\texttt{\backslash guillemetsinallfonts}}% +\index{guillemetsinroman@\texttt{\backslash guillemetsinroman}}% +quelle que soit la police de caractères utilisée (en supposant que ces +guillemets existent ; une correction d'italique est ajoutée +si nécessaire, avant les guillemets fermants) ; +mais par défaut les guillemets seront imprimés +\index{romain droit}\index{romain}% +en romain droit : \texttt{\backslash guil\-le\-mets\-in\-roman} + est la valeur par défaut ; +dans ce dernier cas + ; + +\item \verb|\guillemetsfont| permet, par contre, de choisir la fonte + pour la composition des guillemets tout au long du document, + à condition que l'extension \eFrench\ travaille dans le + codage de fonte \texttt{T1} ; + vous pouvez, par exemple, coder ceci : +\begin{verbatim} +\def\guillemetsfont{% + \fontencoding{OT2}\fontfamily{wncyr}% + \selectfont}% +\end{verbatim} +ceci est à placer à l'endroit de votre choix, même avant le +chargement de \eFrench\ ; +\index{guillemetsfont@\texttt{\backslash guillemetsfont}}% +\index{fontes!choix pour les guillemets} +\index{fontencoding@{\em fontencoding}!\texttt{T1}}% +\index{codage!\texttt{T1}}% +\index{T1@\texttt{T1} (codage)}% + +\item \verb|\noenglishquote| permet de remplacer temporairement les +\label{noenglishquote}% +\index{noenglishquote@\texttt{\backslash noenglishquote}}% +\index{englishquote@\texttt{\backslash englishquote}}% +\index{catcode@\texttt{\backslash catcode}}% +\index{tabbing@\texttt{tabbing} (environnement)}% +\index{lccode@\texttt{\backslash lccode}}% +\index{char@\texttt{\backslash char}}% +\index{accents!remplaçant ` et '}% +{\em quotes} anglaises par des accents% +\footnote{Mais attention, les ordres \TeX{} tels que +\texttt{\backslash catcode}, \texttt{\backslash lccode}, +\texttt{\backslash char}... deviennent +\label{catcodes} +inutilisables pendant toute la durée d'activité de cette option.} + ; cette option reste active à l'intérieur de l'environnement +\vers|versatim|% +\footnote{Cette option est inopérante dans l'environnement +\texttt{tabbing}.\label{tabbing}} + (ou avec \vers|\vers|, voir §~\ref{outils} page~\pageref{outils}) ; +\verb|\english|\-\verb|quote| est +l'option par défaut de l'extension {\eFrench} ; + +\item \verb|\noenglishdoublequotes| remplace tous les doubles guillemets +\refmark{catcodes} +\index{noenglishdoublequotes@\texttt{\backslash noenglishdoublequotes}}% +\index{englishdoublequotes@\texttt{\backslash englishdoublequotes}}% + à la \TeX{} `` et '' par << et >> ; +cette option reste active à l'intérieur de l'environnement +\vers|versatim|\refmark{tabbing} +(ou avec \vers|\vers|, voir §~\ref{outils}) et elle + s'annule tout +simplement par la commande inverse \verb|\englishdoublequotes| ; + +\item \verb|\untypedspaces| rajoute un espace là où l'utilisateur doit +\index{espaces!untypedspaces@\texttt{\backslash untypedspaces}}% +\index{untypedspaces@\texttt{\backslash untypedspaces}}% +\index{espaces!typedspaces@\texttt{\backslash typedspaces}}% +\index{typedspaces@\texttt{\backslash typedspaces}}% +normalement en mettre un (et uniquement s'il l'a oublié) + c.-à -d. devant la double ponctuation +\index{ponctuation}\index{guillemets}% +(\verb|! ? ; :|) et +les guillemets (après \verb|<<| et avant \verb|>>|)% +\footnote{\texttt{\backslash untypedspaces} n'a aucun effet sur +la typographie des nombres et donc avec la commande +\texttt{\backslash nombre}.} + ; mais +attention, il peut y avoir des cas où cette action systématique est + mauvaise, c'est pourquoi \verb|\typedspaces| est l'option par défaut de +l'extension {\eFrench} ; + +\item \verb|\idotless| permet (pour ceux qui ne saisissent pas en 8 bits +et/ou n'ont pas de bon éditeur de texte% +\index{idotless@\texttt{\backslash idotless}}% +\index{iwithdot@\texttt{\backslash iwithdot}}% +\index{points!\texttt{\backslash idotless}}\index{points!\texttt{\backslash iwithdot}}% +\footnote{Donc dans tous les cas où vous devez saisir les +lettres accentuées sous leur forme \TeX{} c'est-à -dire par la séquence : +\index{lettres accentuées}\index{caractères accentués}% +\index{antislash-accent-lettre}% +antislash-accent-lettre.}% +) d'accentuer les i sans avoir à +penser qu'il est absolument indispensable d'utiliser un \i{} sans point +(\verb|\i{}|) ; \verb|\iwithdot| +en est l'option inverse et la valeur par +défaut ; + +\item \verb|\tabbingaccents|\label{tabbingaccents} + permet d'utiliser l'accentuation +normale \mbox{7-bits} (\verb|\`| et \verb|\'|) dans un environnement +\vers|tabbing| de \LaTeX{} ; les mêmes ordres influants sur +la tabulation restent utilisables s'ils sont suivis d'un espace +\index{accents!tabbingaccents@\texttt{\backslash tabbingaccents}}% +\index{tabbingaccents@\texttt{\backslash tabbingaccents}}% +\index{notabbingaccents@\texttt{\backslash notabbingaccents}}% +\index{environnement!\texttt{tabbing}}% +\index{accents!dans \texttt{tabbing}}% +\index{accents!notabbingaccents@\texttt{\backslash notabbingaccents}}% +(\verb*|\` | et \verb*|\' |) ; comme il s'agit d'une option qui +n'aura plus d'intérêt à l'avenir, \vers|\notabbingaccents| est +la valeur par défaut ; + +\item \verb|\EBCDICbrackets| remplace en mode texte +\index{EBCDICbrackets@\texttt{\backslash EBCDICbrackets}}% +\index{normalbrackets@\texttt{\backslash normalbrackets}}% +\index{\texttt{[}}\index{\texttt{]}}\index{crochets}% +(c.-à -d. non mathématique) les caractères \verb|<| et \verb|>| par +des crochets [ et ] ; cette option est +particulièrement {\em dédiée} aux +systèmes IBM disposant de claviers sans crochets ; +mais attention le doublement de ces caractères (\verb|<<| et +\verb|>>|) donnera toujours << et >> +(sauf en mode \verb|verbatim|) ; +cette option nécessite l'utilisation de \verb|\nonfrench| pour +l'introduction et l'exécution de certains jeux de macros-instructions +(voir §~\ref{compatibilite} page \pageref{compatibilite}) ; +\verb|\normalbrackets| en est la valeur +par défaut ; + +\item \verb|\letpunctuationactivefor| est un ordre très curieux ! Son nom +\index{letpunctuationactive@\texttt{\backslash letpunctuationactive}}% +signale déjà qu'il ne doit pas être +employé seul ; il ne doit aussi +être employé que dans des cas très +spécifiques et ce, en connaissance de +cause ; en effet, cet ordre engendre irrémédiablement +une {\em anomalie} +(l'exception qui confirme la règle...) : +les caractères {\em actifs} +(\verb|! ; : ?|) resteront actifs même lorsque l'extension {\eFrench} +se sera effacée au profit d'une autre ; cela est donc dangereux ! mais +peut aussi être utile, comme nous allons le voir ci-après avec +\verb|\wrongtypedspaces|. +\end{itemize} + +Tous les dispositifs précités deviennent +inopérants dès que l'on code +\index{nofrenchtypography@\texttt{\backslash nofrenchtypography}}% +\texttt{\backslash no\-french\-typo\-gra\-phy}. + +\noindent +\texttt{\backslash nofrenchtypography} : +{\em a priori} rien d'intéressant ici... sauf lorsque vous n'imprimez plus +à la française et dans ce cas vous disposez des ordres : +\begin{itemize} +\item \verb|\wrongtypedspaces| pour supprimer les espaces superflus saisis +\index{wrongtypedspaces@\texttt{\backslash wrongtypedspaces}}% +\index{espaces!wrongtypedspaces@\texttt{\backslash wrongtypedspaces}}% +(devant la double ponctuation c.-à -d. \verb|! ; : ?|) +\index{double ponctuation}% +par une dactylographe française trop zélée +qui vient de taper une grande +quantité de texte non-français dans un document +français ; s'il s'agit +d'anglais ou d'une autre langue dont l'espace n'est pas souhaitable, +l'extension + {\eFrench} fera aussi le travail pour annuler les habitudes +françaises ; mais attention ! avant d'abandonner le \verb|\french| pour, +par exemple, l'\verb|\english| il aura fallu taper :\\ +\verb| \letpunctuationactivefor\wrongtypedspaces|\\ +pour maintenir {\em active\/} la double ponctuation +(éviter alors d'employer cette dernière dans des macros, \LaTeX{} + ou non, qui n'auraient pas été conçues pour ce cas +ou qui n'auraient pas +été adaptées par le style linguistique +correspondant --~à manipuler +donc avec prudence) +; + +\item \verb|\nowrongtypedspaces| permet d'annuler temporairement +\index{nowrongtypedspaces@\texttt{\backslash nowrongtypedspaces}}% +\index{espaces!nowrongtypedspaces@\texttt{\backslash nowrongtypedspaces}}% +l'effet précité. +\end{itemize} + +\subsubsection{\texttt{\backslash frenchlayout}} +\index{frenchlayout@\texttt{\backslash frenchlayout}}% +La partie mise en page de l'extension {\eFrench} +réalise un grand nombre d'opérations : +\begin{itemize} +\item elle réintroduit +le retrait des premiers paragraphes qui est supprimé en \LaTeX{} +standard mais l'utilisateur conserve la possibilité de préciser son choix +par les commandes +\index{retrait}\index{indentation}% +\begin{itemize} +\item \verb|\indentfirst| qui est le choix par défaut, +\item \verb|\nonindentfirst| qui n'applique pas de retrait en début des + premiers paragraphes. +\end{itemize} +Dans le cas où l'extension \emph{titlesec} est chargée, ce sont les options +de cette extension qui sont utilisées et les commandes pécédentes n'ont +plus d'effet. +\index{extension!titlesec@\emph{titlesec}}% +\index{titlesec@\emph{titlesec}}% + +\item elle définit les marqueurs utilisés dans les énumérations + (\texttt{itemize}). Vous pouvez choisir d'autres marqueurs + en fournissant d'autres caractères à la place des étoiles + ci-dessous : +\begin{verbatim} +\frlabelitems{% + \renewcommand{labelitemi}{*}% + \renewcommand{labelitemii}{**}% + \renewcommand{labelitemi}{***}% + }% +\end{verbatim} +\index{frlabelitems@\texttt{\backslash frlabelitems}}% +\index{labelitemi@\texttt{\backslash labelitemi}}% +\index{labelitemii@\texttt{\backslash labelitemii}}% +\index{labelitemiii@\texttt{\backslash labelitemiii}}% +\index{marqueurs de liste!modification}% +À noter que le traitement des guillemets à chaque début +d'éléments de liste (\verb|\item|) est alors supprimé (sauf à +réintroduire la séquence +\verb|\check|\-\verb|item|\-\verb|guille|\-\verb|mets| devant +le marqueur). +\index{checkitemguillemets@\texttt{\backslash checkitemguillemets}}% +\index{guillemets!dans itemize@dans \texttt{itemize}}% +\index{guillemets!et marqueurs de liste}% +\index{marqueurs de liste!et guillemets}% + +\item elle propose les lettrines dont je vous ai déjà parlé au + \S~\ref{lettrines} page~\pageref{lettrines}. +\index{lettrines} + +\item elle introduit les environnements dont je vous ai aussi +déjà parlé : +\begin{itemize} +\item \verb|order| pour composer des listes ordonnées +(voir §~\ref{envir} page~\pageref{envir}), +\index{environnement!order@\texttt{order}}% + +\item \verb|figurette| pour placer exactement où l'on veut une petite +figure (voir §~\ref{figurette} page~\pageref{figurette}), +\index{environnement!figurette@\texttt{figurette}}% + +\item \texttt{drapeaufg}, + \texttt{drapeau}\-\texttt{fg}\-\texttt{IN}, + \texttt{drapeau}\-\texttt{fd}, + \texttt{drapeau}\-\texttt{fd}\-\texttt{IN} +pour la compostion \emph{au fer} à droite ou à gauche +(voir §~\ref{endrapeau} page~\pageref{endrapeau}), +\index{environnement!drapeaufg@\texttt{drapeaufg}}% +\index{environnement!drapeaufgIN@\texttt{drapeaufgIN}}% +\index{environnement!drapeaufd@\texttt{drapeaufd}}% +\index{environnement!drapeaufdIN@\texttt{drapeaufdIN}}% + +\item \vers|versatim| en remplacement de \texttt{verbatim} + pour réaliser automatiquement la coupure de ligne + lorsque cela est nécessaire +(voir \S~\ref{outils} page~\pageref{outils}). +\index{environnement!versatim@\texttt{versatim}}% +\end{itemize} + +\item elle remet à +zéro le compteur de chapitre (section et autres sous-sections) +à chaque nouvelle partie (\verb|\part|) du document% +\footnote{La commande \texttt{\backslash noresetatpart} +fournie via \texttt{\backslash usersfrenchoptions} ou +en début de document +(après le \texttt{\backslash begin}\{\texttt{docu}\-\texttt{ment}\}) permet +d'annuler cet effet.}% +, positionne les notes de tableau dans le tableau lui-même, +\index{part@\texttt{\backslash part}}% +\index{noresetatpart@\texttt{\backslash noresetatpart}}% +gère les appels de note consécutifs en les séparant d'une virgule +\footnote{Une note peut toujours être suivie...}% +\footnote{... d'une autre note, à condition qu'elles ne soient séparées +par aucun autre élément, pas même un espace.}. + +\item + lors d'un début de partie, de chapitre, d'annexe + ou d'index, elle corrige d'une part +la position de la numérotation de page par défaut de \LaTeX{}, +d'autre part évite d'imprimer le titre courant +\footnote{\LaTeX{} utilise anormalement le << \em pagestyle\/ >> +\texttt{plain} avec la classe << \tt book >>.} sur cette page. +\index{classe!book@\texttt{book}}% +Elle modifie les environnements \texttt{theindex} et \texttt{thebibliography} +de façon à faire automatiquement référence à l'index et à la +bibliographie dans la table des matières comme dans les \emph{bookmarks} +des hypertextes. +\index{theindex@\texttt{theindex}}% +\index{environnement!theindex@\texttt{theindex}}% +\index{bibliographie}% +\index{index!composition de l'}% +\index{thebibliography@\texttt{thebibliography}}% +\index{environnement!thebibliography@\texttt{thebibliography}}% +\end{itemize} + +Cette partie traite aussi les sous-options suivantes : +\begin{itemize} + +\item \verb|\noresetatpart| permet d'annuler la remise à + zéro du compteur de chapitre (section et autres sous-sections) + à chaque nouvelle partie (\verb|\part|) du document ; +\index{part@\texttt{\backslash part}}% +\index{noresetatpart@\texttt{\backslash noresetatpart}}% +\index{numerotation@numérotation!des chapitres ou sections}% + +\item \verb|\noresetatchapter| permet de ne pas remettre à zéro le compteur + de notes de bas de page à chaque nouveau chapitre (\verb|\chapter|) ; +\index{chapter@\texttt{\backslash chapter}}% +\index{noresetatchapter@\texttt{\backslash noresetatchapter}}% +\index{numerotation@numérotation!des notes de bas de page} + +\item \verb|\frenchtrivsep| réduit notablement l'espace vertical dans toutes +\label{frenchtrivsep} + les listes \LaTeX; c'est la valeur par défaut de l'extension + {\eFrench} ; des messages d'attention (\texttt{-58-} voir p. + \pageref{-58-}) peuvent être émis si vous utilisez de nouveaux + environnements faisant appel aux environnements standard \LaTeX{} ; +les valeurs d'espacement vertical +(\texttt{\backslash parsep}, \texttt{\backslash itemsep}, +\texttt{\backslash topsep} et \texttt{\backslash partopsep}) +\index{espacement!vertical}% +\index{espacement!parsep@\texttt{\backslash parsep}}% +\index{espacement!itemsep@\texttt{\backslash itemsep}}% +\index{espacement!topsep@\texttt{\backslash topsep}}% +\index{espacement!partopsep@\texttt{\backslash partopsep}}% +\index{parsep@\texttt{\backslash parsep}}% +\index{itemsep@\texttt{\backslash itemsep}}% +\index{topsep@\texttt{\backslash topsep}}% +\index{partopsep@\texttt{\backslash partopsep}}% +\index{espace!compteurs}% +peuvent être modifiées en utilisant la commande : +\begin{verbatim} +\frtrivseplengths{% + \setlength{\partopsep}{0.2 ex ...}% + ... } +\end{verbatim} +et dans ce cas les messages d'avertissement précités ne sont plus +émis (sauf si vous codez à nouveau +\verb|\frenchtrivsepwarnings| +dans cette commande + (voir \verb|\nofrenchtrivsepwarnings| page \pageref{ftsw}) ; +\index{frenchtrivsep@\texttt{\backslash frenchtrivsep}}% + +\item \verb|\nofrenchtrivsep| rétablit l'espacement vertical standard de la + classe de document utilisée ; +\index{nofrenchtrivsep@\texttt{\backslash nofrenchtrivsep}}% +\label{everyparguills} +\item \verb|\everyparguillemets| permet, lorsqu'une citation se prolonge sur +\index{everyparguillemets@\texttt{\backslash everyparguillemets}}% +\index{guillemets!everyparguillemets@\texttt{\backslash everyparguillemets}}% +d'au\-tres paragraphes, de commencer chaque paragraphe +par des guillemets, comme +c'est l'usage ; lorsque la citation continue par une énumération +\verb|order| ou \verb|itemize|, chaque alinea débute alors avec des +guillemets ; l'option +\vers|\everyparguillemets| est la valeur par défaut dans +{\eFrench} ; + +\item \verb|\everyparguillemetsremoved| permet d'annuler cet effet +(c'est-à -dire de commencer tous les paragraphes d'une citation +par des guillemets ouvrants) +\index{everyparguillemetsremoved@\texttt{\backslash everyparguillemetsremo\-ved}}% +\index{guillemets!everyparguillemetsremoved@\texttt{\backslash everyparguillemets-\\ removed}}% + +\item \verb|\noeveryparguillemets| \, ne permet pas +d'avoir plusieurs paragraphes +dans une citation (tout ordre \verb|\par| est ignoré ; +la citation doit obligatoirement commencer par des guillemets ouvrants% +\footnote{Au cas où la citation ne commencerait pas en début de ligne, +un saut de ligne sera imposé aux premiers guillemets ouvrants.}) ; +\index{noeveryparguillemets@\texttt{\backslash noeveryparguillemets}}% +\index{guillemets!noeveryparguillemets@\texttt{\backslash noeveryparguillemets}}% +cette option qui gère correctement pour vous les citations de deuxième +niveau en commençant chaque ligne par des guillemets +est {\em fragile} et peut poser quelques +problèmes de mise en Å“uvre voire même très mal fonctionner% +\footnote{Cette option n'est pas adaptée, notamment, aux environnements +dont la longueur de ligne est réduite.} + ; +l'utilisation de l'environnement \texttt{guillemets} (ou \verb|\guillemets|) +est totalement interdit dans ce cas ; +il est impératif de rétablir +\verb|\everypar|\-\verb|guil|\-\verb|le|\-\verb|mets| juste après +le paragraphe concerné ; + +\item \verb|\overfullhboxmark| et \verb|\nooverfullhboxmark| +\index{nooverfullhboxmark@\texttt{\backslash nooverfullhboxmark}}% +\index{overfullhboxmark@\texttt{\backslash overfullhboxmark}}% +(voir §~\ref{outils} page \pageref{outils}) ; + +\item \verb|\labelsinmargin| et \verb|\nolabelsinmargin| +\index{labelsinmargin@\texttt{\backslash labelsinmargin}}% +\index{nolabelsinmargin@\texttt{\backslash nolabelsinmargin}}% +(voir §~\ref{outils} page \pageref{outils}). + +%\item \verb|\PasDeNumeroDePage| ou \verb|\nopagenumbers| supprime la +%\index{PasDeNumerDePage@\texttt{\backslash PasDeNumeroDePage}}% +%numérotation des pages (mais aussi les hauts de page). Cela est très +%lié aux styles employés (ne convient donc pas dans +%toutes les situations). +\end{itemize} + +Cette partie gère aussi la mise en page du courrier fait avec la classe +\verb|letter| ainsi les adresses, la date, l'\verb|\opening| +(ainsi que le \verb|\closing|) \etc. sont disposées +{\em à la française} ; l'adresse du correspondant +apparaît au travers +de la fenêtre des enveloppes format 11~x~22 cm ; +\index{closing@\texttt{\backslash closing}}% +il est possible de préciser les commandes +\verb|\yourref|, \verb|\ourref|, \verb|\object|, \verb|\PS| + déjà vues (§~\ref{letter} page \pageref{letter}) +et de fournir les définitions +des hauts et bas de page du courrier par les commandes +\verb|\formhead| et \verb|\formfoot|. +\index{lettre}\index{courrier}\index{letter@\texttt{letter}}% +\index{classe!letter@\texttt{letter}}% +\index{formhead@\texttt{\backslash formhead}}% +\index{formfoot@\texttt{\backslash formfoot}}% +\index{ourref@\texttt{\backslash ourref}}% +\index{yourref@\texttt{\backslash yourref}}% +\index{object@\texttt{\backslash object}}% +\index{PS@\texttt{\backslash PS}}\index{postscriptum@{\em postscriptum}}% + +La commande \verb|\constantLayout| qui ne fait pas partie de cette +section car elle porte sur tous les langages ; son rôle est +est de garantir une présentation homogène du document tout au +long de ce dernier, même en cas de changement de langue. Elle +ne peut être utilisée qu'une seule fois au début du document ; +ce n'est pas l'option par défaut avec {\eFrench}. +\index{ConstantLayout@\texttt{\backslash ConstantLayout}}% + +\subsubsection{La bibliographie}\label{bibliographie} +\index{bibliographie}% +La bibliographie d'un document est réalisée en deux étapes : +tout d'abord la sélection et le tri des entrées bibliographiques (en général +reprises d'une base bibliographique BiB\TeX{} ou BiB\LaTeX) avec le programme +\index{bibtex8@\texttt{bibtex8}}% +\index{BibLaTeX@\texttt{Bib\LaTeX}}% +\texttt{bibtex} +\footnote{Utiliser de préférence \texttt{bibtex8} pour le traitement +correct des caractères accentués. Mais avec XeLaTex, c'est une + combinaison Bib\LaTeX{} +avec \texttt{biber} qui convient le mieux} et deuxièmement sa composition +par \LaTeX. Dans la première étape le choix du style est important. +Suivant le cas il est fait appel à certaines commandes \LaTeX\ +introduisant des libellés spécifiques (comme \verb|\editorname| +pour << éditeur >>). +Des extensions \LaTeX\ traitant de la bibliographie peuvent être +utilisées dans la deuxième partie. \eFrench\ essaye de s'adapter +à ces extensions% +\footnote{\eFrench\ est spécialement adapté pour travailler +avec \emph{jurabib} et \emph{fracm}. Dès la version 6,1 +\emph{biblatex} est aussi fonctionnel}% +\index{extension!jurabib@\emph{jurabib}}% +\index{extension!fracm@\emph{fracm}}% +\index{BibLaTeX@\texttt{Bib\LaTeX}}% +. Par défaut, il traduit les libellés utilisés +le plus fréquemment, comme nous allons le voir dans ce qui suit. + +\subsubsection{\texttt{\backslash frenchtranslation}} +\index{frenchtranslation@\texttt{\backslash frenchtranslation}}% +Cette partie de l'extension {\eFrench} traduit en français tous les titres +ou libellés utilisés en \LaTeX\ et dans la bibliographie, imprime les +\index{bibliography}% + dates à la française, numérote correctement +les différentes parties (\verb|\part|) d'un +\index{resume@\texttt{\backslash resume}}% +\index{endresume@\texttt{\backslash endresume}}% +\index{glossaire1@\texttt{\backslash glossaire}}% +\index{glossaire2@\texttt{\backslash glossaires}}% +\index{annexe1@\texttt{\backslash annexe}}\index{annexe2@\texttt{\backslash annexes}}% +\index{see1@\texttt{\backslash see}}\index{see2@\texttt{\backslash seealso}}% +\index{sommaire2@\texttt{\backslash sommaire[n]}}% +\index{printindex@\texttt{\backslash printindex}}% +\index{textcurrency@\texttt{\backslash textcurrency}}% +\index{texteuro@\texttt{\backslash texteuro}}% +volume, +modifie la commande \verb|\textcurrency| pour être équivallente +à \verb|\texteuro| lorsque cette dernière est définie + et introduit les commandes (voir §~\ref{commandes} +page \pageref{commandes}) : +\begin{verbatim} +\annexe \annexes \resume \endresume +\glossaire \glossaires \see \seealso +\sommaire[n] \printindex +\motsclef \endmotsclef \keywords \endkeywords +\end{verbatim} +\index{motsclef@\texttt{\backslash motsclef}}% +\index{endmotsclef@\texttt{\backslash endmotsclef}}% +\index{keywords@\texttt{\backslash keywords}}% +\index{endkeywords@\texttt{\backslash endkeywords}}% +Pour modifier les libellés reportez-vous au paragraphe~\ref{styleperso} +et tout spécialement page~\pageref{modiflibelle}. + +\subsubsection{\texttt{\backslash frenchmacros}}\label{frenchmacros} +\index{frenchmacros@\texttt{\backslash frenchmacros}}% +\index{ier@\texttt{\backslash ier}}% +\index{ieme@\texttt{\backslash ieme}}% +\index{at@\texttt{\backslash at}}% +Cette partie est consacrée aux ordres tels que \verb|\ier|, +\verb|\ieme|, \verb|\at|, \etc. décrits au paragraphe \ref{commandes}. +\index{abbreviations@\texttt{\backslash abbreviations}}% +\index{abreviations@abréviations!\texttt{\dittomark}...\texttt{\dittomark}}% +On y trouve aussi une sous-option très spéciale : \\ +\verb|\abbreviations| qui permet de consulter le fichier des +\index{fichier!des abréviations}% +\index{fichier!frabbrev@\texttt{frabbrev.tex}}% +abréviations fourni (\vers|frab|\-\vers|brev.tex| par défaut) + à {\em chaque} demande explicite +d'abréviation de mot, de la forme : \verb|"Mot_à _abréger"| ; + s'il figure dans le fichier il est alors abrégé +correctement sinon, un message est émis et le mot est composé +comme il a été saisi (avec les guillemets) ; ainsi, +\verb|"premier"| imprime "premier" et \verb|"Numéro"12| donne% +\index{Numero@\texttt{\backslash Numero}}% +\index{Numero@\texttt{\dittomark Numero\dittomark}}% +\index{premier@\texttt{\dittomark premier\dittomark}}% +\footnote{Pour imprimer \Numero{} il semble plus approprié d'utiliser +directement +la commande \texttt{\backslash Numero} (voir §~\ref{numero}).} +"Numéro"12 mais \verb|"GUTenberg"| s'imprimera "GUTenberg" (car +\index{abreviations@abréviations!GUTenberg}% +\index{GUTenberg!abréviation de}% +nous n'acceptons pas d'abréviation de GUTenberg). + +On notera que les majucules et minuscules sont importantes +dans le \vers|Mot_|\-\vers|à _|\-\vers|abréger| +car la comparaison se fait à l'identique +dans le fichier des abréviations. Il faudra donc éviter d'utiliser +des abréviations dans un argument de commande +qui peut faire des transformations sur les +lettres. + +Cette mécanique d'abréviations étant assez primitive au niveau informatique +(relecture du fichier à chaque demande d'abréviation), le fichier des +abréviations doit rester de petite taille. +C'est la raison pour laquelle nous +n'y avons mis qu'un jeu assez restreint d'abréviations. +Ce fichier n'est pas +modifiable mais par contre vous pouvez préciser votre propre fichier +\gdef\iX{\texttt{\backslash abbreviations[fichier]}}% +\index{abreviations@abréviations!abreviations2@\iX}% +\index{abreviations@abréviations!\texttt{\backslash abbreviations}}% +\index{noabreviations@\texttt{\backslash noabbreviations}}% +d'abréviations par la commande : \verb|\abbreviations[fichier]|. +\paragraph*{Abbréviations pour sources en UTF8} Le fichier d'abbréviations \MAJ +ouvert par défaut (\vers|frab|\-\vers|brev.tex|) est codé en latin9. +\index{codage!utf8@\texttt{utf8}} +Maintenant existe aussi le même en utf8 nommé \vers|frab|\-\vers|brev-u8.tex|. +Libre à chacun de changer les noms des fichiers d’abréviation ou d'appeler +par la commande\\ \verb|\abbreviations[fichier]| +celui qui convient au code source, par exemple\\ + \verb|\abbreviations[frabbrev-u8.tex]|. +\endMAJ + +Rappelons qu'en \TeX{} le caractère \verb|"| est +normalement le début d'une valeur +hexadécimale. L'option \verb|\abbreviations| interdit donc temporairement +cette forme de codage (voir §~\ref{compatibilite}).\\ +\verb|\noabbreviations| est l'option par défaut. + +\medskip +\noindent +Il existe aussi : +\begin{itemize}\label{moretolerance} +\item \verb|\moretolerance| qui peut être utilisé, en dernier recours, +\index{moretolerance@\texttt{\backslash moretolerance}}% +lorsque les césures ne peuvent se faire correctement malgré tous +les artifices déjà employés (rajouter ou retirer +des mots, +forcer des coupures avec \verb|\allow|\-\verb|hyphens|, +\index{allowhyphens@\texttt{\backslash allowhyphens}}% +imposer des coupures avec +\verb|\-|, \etc.). À chaque fois que l'ordre +\index{\texttt{\backslash-}}% +\verb|\moretolerance| est fourni la {\em tolerance} de \TeX{} est +doublée. La portée de cet ordre doit donc être limitée par des +accolades \{\ \} ou tout autre moyen sûr. L'aspect négatif de cet +ordre concerne l'extension de l'espace inter-mots qui ne manquera +pas de se produire car \TeX\ aura alors tendance à rajouter de la +\emph{glue} plutôt que de produire des coupures de mots en bout +de ligne, les deux étant toutefois possibles : +\begin{figurette} +\Large +\center +\fbox{% +\parbox{0.5\linewidth}{% +\moretolerance\moretolerance\moretolerance +Ici j'ai fourni trois fois cette commande et vous devriez +vous rendre compte de l'effet de relâchement produit +(inégalité, d'une ligne à l'autre, des espaces entre les mots). + }}% +\end{figurette} + +\item \texttt{\backslash}\verb|!| est un ordre \TeX{} qui +a été adapté pour +\index{\texttt{\backslash\exclam}}% +\index{espace!fine@fine négative (\texttt{\backslash\exclam})}% +pouvoir être aussi utilisé dans le texte courant. Il permet de retirer +une espace fine entre deux mots et peut ainsi faciliter la mise en page +lorsque les coupures s'avèrent délicates. Rappelons que l'ordre +\texttt{\backslash,} permet à l'inverse de rajouter une espace fine. +\index{\texttt{\backslash,}}% +\index{espace!fine@ fine (\texttt{\backslash,})}% +\end{itemize} + +\subsubsection{\texttt{\backslash frenchwarnings}} +Cette dernière partie est consacrée aux messages d'avertissement que peut +émettre l'extension {\eFrench}. On y trouve les sous-options suivantes : + +\begin{itemize} +\item \verb|\frenchtrivsepwarnings| indique qu'il faut émettre les messages + d'attention relatifs aux espacements verticaux non respectés. En effet, + l'extension {\eFrench} impose son propre espacement vertical +\index{espace!vertical}% +\index{frenchtrivsepwarnings@\texttt{\backslash frenchtrivsepwarnings}}% + (voir \verb|\french|\-\verb|trivsep| page~\pageref{frenchtrivsep}) dans + les principaux environnements \LaTeX{}, ce qui empêche + --~en théorie~-- l'utilisateur + de les modifier ; ce dernier est donc averti à chaque fois + qu'il tente d'utiliser un tel environnement modifié ; + cela est l'option par défaut. + Vous pouvez toujours choisir vos propres espacements verticaux + mais vous devez le faire avec l'ordre \verb|\frtrivseplengths| +\index{frtrivseplengths@\texttt{\backslash frtrivseplengths}}% + décrit page~\pageref{frenchtrivsep}. Vous pouvez aussi revenir à + l'espacement standard en codant \verb|\nofrench|\-\verb|trivsep|. + Si vous souhaitez plutôt ne plus avoir de messages de ce genre + il vous suffit de coder l'option inverse ci-après. + +\item \verb|\nofrenchtrivsepwarnings| dispense, en effet, + {\eFrench} +\label{ftsw}% +\index{nofrenchtrivsepwarnings@\texttt{\backslash nofrenchtrivsepwarnings}}% + d'émettre des messages lorsque l'utilisateur + (ou une extension ou une classe) tente de modifier + les valeurs d'espacement vertical choisies par \eFrench. + +\item \verb|\nofrenchwarnings| supprime tous les messages émis par +\index{nofrenchwarnings@\texttt{\backslash nofrenchwarnings}}% + {\eFrench}. Cela ne peut prendre effet qu'après le + chargement complet de l'extension {\eFrench}. Cette option + est très déconseillée. +\end{itemize} + +\subsection{Utilisation multilingue}\label{multilingue} +\index{utilisation!multilingue}\index{langues}\index{langages}% +\seealso{langages}{langues} +Avant cette version \nombre{6,0} chaque {\em langue} ou {\em langage} + indiqué dans le fichier +\verb|language.dat| l'extension {\eFrench} définissait une commande du +même nom. +Maintenant, seuls l'anglais (\emph{english})et le français (\emph{french}) +peuvent être choisis et avec l'extension \emph{mlp} +\index{extension!mlp@\emph{mlp}}% +\index{mlp@\emph{mlp}}% +de {\eFrench} aussi l'allemand ((\emph{german} et \emph{ngerman}). +Cette limitation est due au fait que seules ces trois extensions existent aussi en version +non basée sur \emph{babel}. +L'option \emph{english} consiste à désactiver les autres extensions de langage. +Elle est donc toujours présente. + +Voici un exemple pour montrer comment combiner français et allemand (nouvelle mouture) en utilisant \emph{mlp} : +\begin{verbatim} + \documentclass[ngerman,french,a4paper,11pt]{book} + \usepackage[utf8]{inputenc} + \usepackage[T1]{fontenc} + ... + \usepackage{mlp} +\end{verbatim} +Dans cet exemple, pour changer de langue il +suffit de demander \verb|\|{\em ngerman} pour passer à l'allemand, \verb|\|{\em english} à l'anglais +ou \verb|\|{\em french} au français. + +Il y a aussi cette possibilité, équivalente à la précédente : +\begin{verbatim} + \documentclass[a4paper,11pt]{book} + ... + \usepackage[ngerman,french,]{mlp} +\end{verbatim} + + + Une commande \verb|\beginlanguage| est utilisable lorsqu'il est +\index{beginlanguage@\texttt{\backslash beginlanguage}}% +nécessaire de reprendre la composition avec la langue +qui a été utilisé au début du document +("cad" juste après le +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +\verb|\begin{docu|\-\verb|ment}|) donc normalement la dernière option +de langue fournie dans la commande \verb|\usepackage|. +\index{usepackage@\texttt{\backslash usepackage}}% + +La commande \verb|\languagename| doit toujours contenir le nom du langage +actif. +\index{languagename@\texttt{\backslash languagename}}% + +Parfois un document doit pouvoir << réagir >> dynamiquement à la langue +utilisée pour le composer. Une structure de programmation pour tester +l'activation de l'extension {\eFrench} est disponible :\\ +\verb| \ifFrench ... \else ... \fi| +\bigskip +\subsection{Création de style personnel ou maison} +\label{styleperso} +\index{style!personnel ou maison}% +\seealso{style}{extensions} +Un créateur de style \LaTeX{} (normalement un maquettiste) est souvent une +personne qui modifie un style existant (une extension ou une classe +en général) et l'appelle autrement ; cela +n'est possible qu'avec les styles ayant une licence de type logiciel libre. +C'est le cas de l'extension {\eFrench} cf. {\em Copyright} +(fichier +\linkandfootnote{copyright}{\texttt{Copyright.pdf}} +{http://efrench.org/\#french}) ; +\index{copyright}\index{\protect\copyright}% +\index{fichier!Copyright.pdf@\texttt{Copyright.pdf}}% +\index{fichier!copyrigh.tex@\texttt{copyrigh.tex}}% + il est de plus est entièrement paramétrable et toutes +les commandes citées dans cette notice sont utilisables +dans d'autres styles ou extensions +pourvu que l'extension {\eFrench} ait été +préalablement chargée en extension \LaTeX{} ou +\index{input1@\texttt{\backslash input}}% +par la commande \verb|\input|. + +Quel que soit le moyen utilisé pour charger l'extension {\eFrench}, +les options ou commandes sont à préciser à l'aide de l'ordre +\label{usersf}% +\vers|\usersfrenchoptions| +qui sera défini avant +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +le \vers|\begin|\-\vers|{docu|\-\vers|ment}|. Voici un exemple --~utilisé pour +composer ce document~-- dans lequel j'ai +%\index{babel@\emph{babel}!users@\texttt{\backslash usersfrenchoptions}}% +%\index{usersfrenchoptions@\texttt{\backslash usersfrenchoptions}!{avec \texttt{babel}}}% +\index{usersfrenchoptions@\texttt{\backslash usersfrenchoptions}}% +choisi d'appliquer \vers|\overfull|\-\vers|hbox|\-\verb|mark| +et \vers|\disallowuchyph| à tout mon document : + +\medskip +\begin{versatim} +\usersfrenchoptions{% Voici les options que j'ai choisies. + \disallowuchyph % pas de coupure cap. + \overfullhboxmark % pas de carré noir. + }% +\end{versatim} +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% + +\medskip +\noindent +Peu importent alors les changements de langues réalisés tout au long +du document ; ces options personnelles seront imposées à chaque fois +qu'il sera fait appel à \vers|\french|. +Cette commande peut être appelée plusieurs fois, les paramètres +sont alors ajoutés aux précédents. + +Les libellés des titres usuels sont redéfinis +\index{libellés}\index{titres usuels}% +dans l'extension {\eFrench} +et il faut les utiliser dans les styles ou extensions que vous créez ; +voici leur définition à la \TeX{} : +{\smaller +\begin{verbatim} + \def\pagename{page} + \def\refname{Références} + \def\abstractname{Résumé} + \def\bibname{Bibliographie} + \def\contentsname{Table des matières} + \def\listfigurename{Table des figures} + \def\listtablename{Liste des tableaux} + \def\indexname{Index} + \def\seename{\emph{voir}} + \def\seealsoname{{\em voir aussi}} + \def\figurename{\textsc{Fig.}} + \def\tablename{\textsc{Tab.}} + \def\sommairename{Sommaire} + \def\partname{\ignorespaces\Ordinale{part}\ partie [...]} + \def\glossaryname{Glossaire} + \def\kwname{\textbf{Mots-clé}} + \def\draftname{- \noexpand\311preuve -}% imprimer épreuve (PS) + \def\prefacename{Préface}% + \def\headtoname{}% {à \space} est inusité. + \def\proofname{Démonstration}% + \def\ccname{c.c. } + \def\enclname{P.j. } + \def\PSname{P.-S. :} + \def\Objectname{Objet :} + \def\YourRefname{v/réf. :} + \def\OurRefname{n/réf. :} + \def\emailname{m.él. :} + \def\chaptername{Chapitre} + \def\appendixname{Annexe} + \def\slidename{Transparent} + \def\listslidename{Liste des transparents} + \def\ALG@name{algorithme}% + \def\listalgorithmname{Liste des \ALG@name s}% +\end{verbatim} +} + +D'autres libellés peuvent être traduits lorsque {\eFrench} détecte +la présence de certaines extensions (signaler à l'auteur de l'extension +et à moi-même les extensions qui ne sont pas traduites). +Vous pouvez, bien sûr, modifier ces libellés mais +il faut cependant ne pas +oublier de respecter la typographie française usuelle ; toute modification +doit être faite avec prudence. Si vous souhaitez, par exemple, +modifier le libellé << \textsc{Fig.} >> en << figurine >> il suffit +de coder : +\label{modiflibelle} +\begin{verbatim} +\fraddto\captionsfrench{\def\figurename{figurine}} +\end{verbatim} +\index{fraddto@\texttt{\backslash fraddto}}% +\index{captionsfrench@\texttt{\backslash captionsfrench}} + +D'autres commandes sont définies dans le cadre de la bibliographie, il +\index{bibliographie}% +s'agit de : +\begin{verbatim} + \def\andname{et} + \def\editorname{éditeur} + \def\editornames{éditeurs} + \def\volumename{volume} + \def\Volumename{Volume} + \def\ofname{de} + \def\numbername{numéro} + \def\Numbername{Numéro} + \def\inname{dans} + \def\Inname{Dans} + \def\editionname{édition} + \def\pagesname{pages} + \def\technicalreportname{Rapport Technique} + \def\revisionname{Révision} + \def\masterthesisname{DEA} + \def\phdthesisname{Thèse de doctorat} + \def\janname{janvier} + \def\febname{février} + \def\marname{mars} + \def\aprname{avril} + \def\mayname{mai} + \def\junname{juin} + \def\julname{juillet} + \def\augname{août} + \def\sepname{septembre} + \def\octname{octobre} + \def\novname{novembre} + \def\decname{décembre} +\end{verbatim} + +Si vous souhaitez les modifier ou en rajouter, vous pouvez +procéder de la même manière : +\begin{verbatim} +\fraddto\bibsfrench{\def\phdthesisname{Thèse PHD}} +\end{verbatim} +\index{fraddto@\texttt{\backslash fraddto}}% +\index{bibsfrench@\texttt{\backslash bibsfrench}} + + +Pour toute autre +personnalisation de l'extension {\eFrench} on se reportera +à l'article \cite{et98} publié dans les Cahiers GUTenberg et dont +on trouvera une version composée (% +\linkandfootnote{artET98}{\texttt{artET98.pdf}}% +{http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/doc/artET98.pdf?revision=1&view=co}% +) dans la distribution. Ce document est d'époque ; mais bien des éléments sont encore valables. + +\subsection{Création d'une nouvelle classe \LaTeX} + + Pour les gourous (... uniquement !) la création d'une classe \LaTeX{} +est chose aisée. Si vous souhaitez utiliser {\eFrench} n'oubliez pas +que certaines commandes (macro-instructions) + peuvent être redéfinies par l'extension +{\eFrench} et que la plupart de ces redéfinitions sont effectuées au +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{document}\}}% +\verb|\begin{document}|. + + +Vous pouvez utiliser intentionnellement toutes les commandes de {\eFrench} +qui sont décrites dans ce document. Toutes les autres macro-instructions +comportant un << \texttt{@} >> sont susceptibles d'être +modifiées ultérieurement, à l'exception de : + +\verb|\f@lastpage| vous permet de définir une macro de ce nom pour +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{document}\}}% +réaliser une fonction spécifique en fin de dernière page du document +et avant que {\eFrench} termine pour sa part le document. +\index{falastpage@\texttt{\backslash f\at lastpage}}% + +Si vous souhaitez que {\eFrench} n'intervienne pas en fin de document, +il suffit de coder :\\\vers|\let\f@last|\-\vers|page\nofrenchlayout| + +\section{Utilisation réduite \\<< Poor Man French Style >>} +\label{reduit}\index{utilisation!réduite}% +\index{utilisation!appauvrie}% +Une version {\em du pauvre}\/ (<< Poor Man French Style >>) +est disponible à travers l'extension +\emph{pmfrench}. Elle peut-être chargée en mémoire +de façon usuelle, +par exemple : +\index{usepackage@\texttt{\backslash usepackage}}% +\begin{verbatim} + \documentclass[a4paper,11pt]{book} + \usepackage{pmfrench} +\end{verbatim} +\index{pmfrench@\emph{pmfrench}}% +\index{extension!pmfrench@\emph{pmfrench}}% + + +En faisant appel au << Poor Man French Style >> +on peut utiliser un {\em moteur} +\index{moteur!tex@\TeX}% +\TeX{} non francisé "cad" ne contenant pas les motifs +de césure français ni +la liste des exceptions, \etc. Le fichier \vers|language.dat| n'est alors + \index{fichier!d'exceptions}% +d'aucune utilité. La mémoire nécessaire à l'exécution +est plus réduite. +Plusieurs autres dispositifs sont inopérants, en voici +un résumé : +\begin{itemize} +\item les lettrines (\verb|\lettrine| et \verb|\flettrine|) ; +\index{lettrine@\texttt{\backslash lettrine}}% +\index{flettrine@\texttt{\backslash flettrine}}% +\item le mécanisme d'abréviation (\verb|"..."| et +\verb|\abbreviations|) ; +\index{abreviations@abréviations}% +\index{abbreviations@\texttt{\backslash abbreviations}}% +\item les guillemets de deuxième niveau avec +\verb|\noeveryeparguillemets| ; +\item le chargement du fichier des exceptions françaises dont + le nom a été précisé dans le fichier \vers|language.dat|. +\index{fichier!language.dat@\texttt{language.dat}}% +\end{itemize} +Si vous êtes curieux, vous vous apercevrez que +\vers|pmfrench.sty| est en fait +l'équivalent de \vers|french.sty| plus l'ordre \vers|\pmfrench|. +Lorsque cet ordre est placé dans le {\em préambule} "cad" avant le +\vers|\begin{|\-\vers|document}|, alors l'extension {\eFrench} s'exécutera +en mode réduit. Cela peut être utile, comme nous l'avons vu, sur +des sites n'ayant pas encore réalisé une installation complète +des fichiers de l'extension {\eFrench}. + +\section{Messages} + +Certains des messages suivants sont en anglais car ce sont en général +des erreurs qui peuvent survenir avant que la francisation soit +suffisamment mise en place. + +\begin{itemize} +\let\labelitemi\relax + +\item \texttt{-1- la macro xxx existe déjà .} \\ +Signifie que vous vouliez, à l'aide de \verb|\frenchalias|, + utiliser une commande sous un nouveau nom. Or ce nom est déjà +utilisé. La composition du document ne peut aller plus loin +en besogne. +\index{frenchalias@\texttt{\backslash frenchalias}}% + +\item \texttt{-2- file ... not found.} \\ +Le fichier dont le nom est indiqué est indispensable à la bonne +marche de {\eFrench}. Vérifiez si les chemins d'accès à ce +fichier sont en service. + +\item \texttt{\phantom{-2-} fichier ... non trouvé.} \\ +Dans sa version française, ce message ne témoigne + pas forcément d'une erreur ; +à vous de voir si le fichier en question est vital, ou non, +pour la composition du document. + +\item \texttt{-3- l'option (pm)french n'est pas active ici !} \\ +Vous avez fait appel à un ordre spécifique de l'extension +{\eFrench} mais vous n'êtes pas dans +un environnement où la langue \texttt{\backslash french} est active. +\index{langues!\texttt{\backslash french}}% +\index{french@\texttt{\backslash french}}% + +Peut-être, êtes-vous +en anglais ou en \texttt{nonfrench} ? +\index{begin@\texttt{\backslash begin}!\texttt{\backslash begin}\{\texttt{nonfrench}\}}% +\index{end@\texttt{\backslash end}!\texttt{\backslash end}\{\texttt{nonfrench}\}}% +\index{nonfrench@\texttt{\backslash nonfrench}}% +\index{endnonfrench@\texttt{\backslash endnonfrench}}% + +\item \texttt{-4- entering now `\relax`Poor-Man-French-Style'\relax' way.} \\ +C'est l'extension \emph{pmfrench} +\index{pmfrench@\emph{pmfrench}}% +(le {\eFrench} du pauvre) qui est activée, soit automatiquement par suite +d'anomalies soit à votre demande. + +\item \texttt{-5- définition de lettrine incorrecte.} \\ +Vous avez probablement +dû employer des apostrophes ou des guillemets dans le texte de la lettrine. +Ceux-ci doivent être indiqués différemment, voir la syntaxe des ordres +de lettrines. + +\item \texttt{-6- lettrine à revoir.} \\ +Les choix que vous avez imposés pour la +mise en page de cette lettrine conduisent à un mauvais résultat comme, par +exemple, une lettrine ne portant que sur une seule ligne. Il est +souhaitable de revoir le paramétrage. + +\item\texttt{-7- lettrine réduite à 1 seule lettre.} \\ + Une lettrine se +compose au minimum d'une lettre mise en valeur et d'un texte mis +en petites capitales. Vous avez dû omettre ce dernier texte. + +\item\texttt{-8a- \backslash footnotetext}\{{\tt...}\}{\tt{} perdu.}\\ + \texttt{-8b- Coder event. }\verb|\protect\footnote.|\\ +Signifie en général que vous avez utilisé une \verb|\footnote| dans un +\verb|\caption| de tableau ou dans un \verb|\mbox|. +L'extension {\eFrench} ne pouvant +mettre correctement le texte de la note en bas de page (défaut actuel +de \LaTeX{}), vous devez, vous-même, insérer la commande +\verb|\footnotetext{...}| après le tableau ou le \verb|\mbox|. +Cette erreur peut être fatale dans les titres de section +si vous n'avez pas codé \verb|\protect| devant \verb|\footnote|. +\index{protect@\texttt{\backslash protect}}% +\index{mbox@\texttt{\backslash mbox}}% +\index{caption@\texttt{\backslash caption}}% +\index{footnote@\texttt{\backslash footnote}}% +\index{footnotetext@\texttt{\backslash footnotetext}}% + +\item\texttt{-9- Corrupted/absent language.dat file.}\\ +L'extension {\eFrench} vérifie à chaque exécution que le fichier +de configuration +\texttt{language.dat} qui lui est accessible est bien compatible +avec celui utilisé à la création du format. Ce fichier doit donc être +présent et accessible. L'ordre des langues ne peut être changé mais +d'autres langues peuvent être rajoutées pour des tests. Les motifs de +césure ne sont pris en compte qu'à la création du format. + +\item\texttt{-10- french package not loaded.}\\ +Témoigne d'une utilisation du fichier \verb|frpatch.sty| +en dehors de l'extension {\eFrench}. +\index{fichier!frpatch.sty@\texttt{frpatch.sty}}% + +\item\texttt{-11- application du \string<\relax\string< % + frpatch \string>\relax\string> yy/mm/dd.} \\ +Signifie que le patch en question est appliqué à l'extension +{\eFrench}. + +\item\texttt{-12- frpatch.sty est périmé, fichier à détruire.} \\ +Signifie que les corrections ont maintenant été apportées à +la version de l'extension {\eFrench} que vous utilisez, aussi +il faut effacer définitivement ce fichier de patch de votre système. + +\item\texttt{-13- le caractère `\relax`...'\relax' est déjà actif,}\\ + \texttt{\phantom{-13-} la double ponctuation est alors désactivée.} \\ +Vous utilisez +très probablement +un style ou une extension qui fait déjà usage de ce ou ces +caractères. Pour éviter toute anomalie de fonctionnement, l'extension +{\eFrench} désactive alors l'effet de la double ponctuation +(\verb|! : ; ?|) pour tout votre document. Si ce n'est pas ce que vous +voulez, essayez de charger l'extension en question, soit après le +chargement de l'extension {\eFrench} soit dans un environnement +\texttt{nonfrench}. + +\item \texttt{-14- fermeture de guillemets non ouverts.} \\ +Vous êtes à la fin +d'une citation mais vous souhaitez fermer +les guillemets alors qu'aucun guillemet ouvrant n'a été employé +à ce niveau. Vérifiez l'imbrication de vos environnements. +Avec une lettrine, l'environnement guillemets se termine +obligatoirement à la fin du paragraphe (même sans guillemets fermants). +Donc, si la citation doit se poursuivre au paragraphe suivant il est +nécessaire d'ouvrir à nouveau les guillemets. + +\item \texttt{-15- le langage \frenchname\space porte le % + numéro ...} \\ +L'extension {\eFrench} vous indique le +numéro interne employé pour le langage \texttt{french}. Ceci est +exceptionnel car cela veut dire qu'aucun langage \texttt{french} +n'avait été défini au niveau de votre {\em format\/} +mais qu'un numéro +a pu être attribué grâce au fichier \texttt{language.dat}. +\index{fichier!language.dat@\texttt{language.dat}}% +\index{language.dat@\texttt{language.dat}}% + +\item \texttt{-16- the English language\space is numbered ...} \\ +Même explication +que pour le message précédent mais portant ici sur l'anglais. + +\item \texttt{-17- \backslash wrongtypedspaces est % + inopérant dans ce contexte.}\\ +Cet ordre ne peut être utilisé seul à ce niveau. +Il doit être précédé ici +de l'ordre \vers|\letpunctua|\-\vers|tion|\-\vers|activefor| +juste avant de quitter +le français pour une autre langue. +\index{wrongtypedspaces@\texttt{\backslash wrongtypedspaces}}% +\index{letpunctuationactive@\texttt{\backslash letpunctuationactive}}% + +\item \texttt{-18- (pm)french.sty force l'option \backslash nofrenchguillemets \\ +en mode maths avec AmSLaTeX.}\\ +En effet, les chevrons ou guillemets sont employés à un autre usage +en mode mathématique avec AmS\LaTeX{}. +\index{nofrenchguillemets@\texttt{\backslash nofrenchguillemets}}% +\index{guillemets!avec AmS\LaTeX{}}% +\index{AmSLaTeX@AmS\LaTeX{}}% + +\item \texttt{-19- utilisation du langage interne numéro...} \\ +Votre +document va être composé avec l'extension \emph{pmfrench} +(le {\eFrench} du pauvre). Aucun +langage \texttt{french} n'a été trouvé dans le format, aucun fichier +de configuration +\texttt{language.dat} n'a été trouvé, dans ces conditions l'extension +{\eFrench} vous indique le numéro de langue interne qu'il va +utiliser. À vous de voir si ce numéro est acceptable pour la mise +en page de votre texte français. + +\item \texttt{-20- WARNING: the french language is undefined in your \\ +\phantom{-20-} format.} \\ +\texttt{\phantom{-20-} the french language is undefined (ERROR!)} \\ +Vous ne pouvez utiliser l'extension {\eFrench} sans que votre moteur \TeX{} +\index{moteur!tex@\TeX}% +soit un minimum francisé, c.-à -d. dispose par exemple de +motifs de césure adaptés. Sinon, vous pouvez toujours faire le choix +de l'extension \emph{pmfrench} (le {\eFrench} du pauvre). +Le premier message n'est qu'un avertissement +si le fichier \texttt{language.dat} définit le français ; si ce n'est +pas le cas le deuxième message est émis. + +\item \texttt{-21-\backslash}{\em xxx}\texttt{TeXmods n'est pas défini.} \\ +Vous avez demandé à +travailler avec la langue {\em xxx} mais celle-ci est inconnue +ou, tout au moins, la commande +\texttt{\backslash}{\em xxx}\texttt{TeXmods} n'est pas définie. + +\item \texttt{-22- abréviation de `\relax`...'\relax' non trouvée.} \\ +Le fichier d'abréviation ne contient pas l'abréviation citée. +Vérifiez qu'il +ne s'agit pas d'une incompatibilité de codage (7-bits {\em vs} 8-bits) +entre le nom donné et le fichier des abréviations. + +\item \texttt{-23- Extension : style (pm)french V...-- date -- (B.Gaulle).}\\ +Ceci est la bannière de l'extension {\eFrench}. + Pensez à vous mettre à jour régulièrement. + +\item \texttt{-24- (pm)french.sty utilise dans ce document le codage}\\ + \texttt{\phantom{-24-} de fonte (O)T1.}\\ +Ceci est un message d'information permettant de voir quel codage de fonte +a été détecté par {\eFrench} et sera utilisé pour tout le document. +Vous avez toujours le loisir de changer de codage {\em avant} +le chargement initial de {\eFrench} de façon qu'il détecte celui qui +convient à l'ensemble des parties françaises du document. +\index{codage!utilisé}% +\index{codage!changement de}% +\index{OT1@\texttt{OT1} (codage)}% +\index{T1@\texttt{T1} (codage)}% + +\item \texttt{-25- (pm)french.sty affiche ici ses messages en 7-bits}\\ + \texttt{\phantom{-25-} }\verb|(\`|\texttt{a la TeX).}\\ + Le format \LaTeX{} qui a été créé ne supporte pas le 8-bits en + sortie. Cela peut effectivement venir du moteur \TeX\ car tous +\index{moteur!tex@\TeX}% + ne disposent pas de cette facilité. Si ce n'est pas le cas, + probablement que le format a été créé sans utiliser + le configurateur de clavier \texttt{kbconfig} +%%%%%%%%%%%%%%%%%%%%% +\ifnoDOCinstall\else% +%%%%%%%%%%%%%%%%%%%%% +(cf. \ref{kbconfig} page \pageref{kbconfig}) +\fi% +.\\ + Dans d'autres cas, les messages ne peuvent même pas être + émis << à la \TeX\ >> ; les ordres d'accentuation + sont alors totalement éliminés.\\ + Si vous souhaitez + toutefois afficher les messages en 8-bits, forcez l'option + \verb|\usualmessages|. +\index{usualmessages@\texttt{\backslash usualmessages}}% + +\texttt{-25- (pm)french.sty affiche ici ses messages en 8-bits.}\\ + Ceci est l'option normale si le moteur \TeX{} est capable de produire +\index{moteur!tex@\TeX}% + du 8-bits en sortie, à la place des caractères héxadécimaux sous + la forme \verb|^^xx|. Cette option peut avoir été forcée par la + commande \verb|\usualmessages|. + +\item\texttt{-26a- Erreur détectée dans (pm)french.sty.}\\ + \texttt{-26b- (voir p.ex. le fichier language.dat)}\\ +Ceci ... ne devrait jamais arriver. Dans ce cas, après les vérifications +d'usage concernant votre document et ses macros, il faut essayer +de reproduire le problème sur un exemple plus réduit et me l'envoyer. + +\item\texttt{-27- (pm)french.sty language x (y) was initially}\\ + \texttt{\phantom{-27-} (at initex) numbered z (ERROR!)}\\ +Signifie que l'ordre des langues a été probablement modifié +dans le fichier \verb|language.dat| ou qu'il ne s'agit pas +du bon fichier. +\index{fichier!language.dat@\texttt{language.dat}}% + +\item \texttt{-28- ATTENTION : TeX Version 2 ne permet pas d'utiliser des \\ + \phantom{-28-} caractères accentués 8-bits.} \\ +Il est grandement +temps de passer a \TeX{} V3 ! (ce message est émis par \texttt{kbconfig}). + +\item \texttt{-29a- ***Warning***: TeX engine in use along with CM fonts}\\ + \texttt{-29b- (as in current TeX format) isn't sufficient}\\ + \texttt{\phantom{-29b-} to hyphenate}\\ + \texttt{-29c- words containing diacritics (like in French).}\\ +Ce que l'on appelle communément la {\em césure} des mots ne pourra +jamais être effective, dans ces conditions (fontes \emph{cm}), +sur des mots comportant des lettres accentuées. +\index{fontes!cm@\emph{cm}}% +Il s'agit là du plus grave défaut de francisation +que vous obtiendrez mais il y en a d'autres... Il serait peut-être +bon de considérer l'installation d'un moteur \TeX\ avec option +\index{moteur!tex@\TeX}% + \oMlTeX{} ou la mise en place, +par défaut dans le {\em format\/}, de polices de caractères 8-bits +(ce message est émis par \texttt{kbconfig} ou par {\eFrench}). + +\ifnoDOCinstall\else +\item \texttt{-30- ERROR!} \\ +\texttt{Something wrong! your TeX engine can't hyphenate correctly}\\ +\texttt{french words with diacritics *in that current font* or}\\ +\texttt{encoding.}\\ +Vous essayez de charger des motifs de césure français 7-bits alors que +\index{moteur!tex@\TeX}% +votre moteur \TeX{} ne supporte pas la division des mots avec des +caractères accentués composés de la lettre et de l'accent. Si vous +n'avez pas de moteur avec option \oMlTeX{} +vous pouvez certainement utiliser des +fontes 8-bits, comme les fontes \emph{ec}, par exemple. Modifiez alors +le fichier de configuration avant de relancer \lsc{initex}. +\index{fontes!ec@\emph{ec}}% +\index{polices!ec@\emph{ec}}% +\fi + +\item \texttt{-31- Wrong French Hyphenation\string!} \\ +\texttt{\phantom{-31-} Are you sure to run with a format in which the french}\\ + \texttt{\phantom{-31-} patterns were installed at initex time\string?} \\ +Le dispositif de césure de \TeX{} n'a pas +donné le résultat escompté sur +quelques mots français. Avez-vous bien installé +les motifs de césure +français ? (message émis pas le << \em torture test >>). +Le message suivant peut alors apparaître : + +\item \texttt{-32- if yes try to switch to T1 font encoding}\\ + \texttt{\phantom{-32-} (\backslash usepackage[T1]{fontenc}).} \\ +En passant au codage de fontes \texttt{T1} vous utiliserez automatiquement +des fontes 8-bits (\emph{ec} par défaut) +et cela solutionnera peut-être votre problème. +\index{fontencoding@{\em fontencoding}!\texttt{T1}}% +\index{codage!\texttt{T1}}% +\index{T1@\texttt{T1} (codage)}% + +\ifnoDOCinstall\else +\item \texttt{-33- CHECK the list for hexadecimal TeX codes you can't} \\ +\texttt{\phantom{-33-} display}\\ +\texttt{-33- and decide if they must be eliminated from xxx.kbc}\\ +\texttt{-33- assuming your} \verb|``locale''| + \texttt{settings are okay on your}\\ +\texttt{\phantom{-33-} system.}\\ +Vous utilisez le générateur \texttt{kb2lex} +qui produit des fichiers \texttt{.lex} +à partir des tables de codage \verb|<|\emph{langage}\verb|.>|xxx\texttt{.kbc}. +\index{fichier!.kbc@\texttt{.kbc}}% +\index{fichier!.kbc@\texttt{<}\emph{langage}\texttt{.}xxx\texttt{.kbc}}% +\index{langage.xxx.kbc@\texttt{<}\emph{langage}\texttt{.}xxx\texttt{.kbc}}% +Ces fichiers, une fois compilés par \texttt{lex} +puis en C, vous donnerons des convertisseurs 7-bits et 8-bits. Les +caractères pris en compte par ces convertisseurs +sont listés à l'écran. +Si certains d'entre-eux apparaissent en héxadécimal cela signifie qu'il +y a une incompatibilité entre le fichier +\verb|<|\emph{langage}\verb|.>|xxx\texttt{.kbc} et l'affichage +de ces caractères par \TeX{} +sur votre écran. Il faut alors vérifier l'un et l'autre. + +De nombreux systèmes d'exploitation (spécialement \lsc{unix}) +\index{unix@\lsc{unix}}% +\index{système!unix@\lsc{unix}}% +permettent maintenant de traduire automatiquement le code produit +en sortie par une application ; il s'agit du mécanisme de \texttt{locale}. +\index{locale@\texttt{locale}}% +\fi + +\item {\tt +-34- this file and other auxiliary files require to \\ +\phantom{-34-} use the following LaTeX packages: french ...!\\ +\phantom{-34-} check \backslash usepackage or remove these files.\\ +\phantom{-34- }Typesetting is aborted!}\\ +Vous avez dans un passage \LaTeX{} précédent utilisé une (ou plusieurs) +extension +qui n'est plus demandée actuellement. Peut-être est-ce volontaire ? +Dans ce cas il est préférable d'effacer les fichiers auxiliaires pouvant +contenir des informations relatives à cette extension. Sinon, il suffit +de demander le chargement de l'extension ad hoc. + +\item \texttt{-35- kbconfig: Redefining }\verb|^^Y uccode|\\ + \texttt{\phantom{-35-} kbconfig: Redefining }\verb|^^Z uccode.|\\ + Ce message qui n'apparaît que dans le fichier log + témoigne d'un choix de \texttt{kbconfig}. + +\item \texttt{-36- ANOMALIE : nom de format LaTeX (...) invalide.} \\ + \texttt{\phantom{-36-} ANOMALIE : format LaTeX (...) non standard.} \\ +Le document << \em torture test >> a détecté une anomalie dans le +nom du format. La variable \verb|\fmtname| ne contient pas une valeur +standard. Il faut refaire un {\em format\/} avec un nom standard. +Dans le doute prenez une version plus à jour sur les serveurs. + +\item \texttt{-37- ANOMALIE : extension french active ici.} \\ +\texttt{\phantom{-37-} ANOMALIE : extension french inactive ici.} \\ +La commutation de langue semble ne pas fonctionner de façon +satisfaisante avec le document de test \texttt{frenchlb} ({\em torture test}). +Voir du côté du fichier \texttt{language.dat} et de la création du +{\em format}.% +\index{fichier!language.dat@\texttt{language.dat}}% +\index{language.dat@\texttt{language.dat}}% + +\ifnoDOCinstall\else +%\item\texttt{-38- the language x is used as language number n.}\\ +%Ce message fournit le numéro interne \TeX{} pour la langue considérée +%(émis par \texttt{hyconfig}). +% +%\item\texttt{-39- Error: file language.dat not found, trying}\\ +% \texttt{\phantom{-39-} to load US-english hyphenation file.}\\ +%Signifie que \texttt{hyconfig} n'a pas trouvé de fichier +%\texttt{language.dat} et ne peut donc pas charger de motifs de +%césure. Par défaut les motifs utilisés par \TeX{} de façon +%standard vont être chargés, s'ils sont accessibles. +%\index{fichier!language.dat@\texttt{language.dat}}% +% +%\item\texttt{-40- Writing kb8to7.lex et kb7to8.lex.}\\ +%Ce message avertit l'utilisateur de la création des 2 fichiers +%\texttt{lex} par le programme \texttt{kb2lex.tex}. Ces fichiers serviront +%à générer ensuite des programmes C permettant la conversion +%automatique de fichiers de 7-bits vers 8-bits et réciproquement. + +\item\texttt{-41- Format is out of date, please run initex again.}\\ +L'extension {\eFrench} s'est aperçue d'une incohérence +au niveau des commandes de césure. Ces dernières correspondent +à une installation antérieure de {\eFrench} qui les plaçait +dans le format. Ce n'est plus le cas actuellement (depuis la +version 4.00), aussi il est impératif de refaire le format avec +les nouveaux fichiers d'installation. +\fi%\ifnoDOCinstall\else + +\item\texttt{-42- The French patch file (frpatch.sty) is not suitable for}\\ + \texttt{\phantom{-42-} this version of the \string"french\string"} + \texttt{package dated YY/MM/DD.}\\ +Signifie qu'un fichier de \textit{patch} a été trouvé dans le +système mais qu'il ne convient pas à la version de l'extension +{\eFrench} que vous utilisez. Il est nécessaire d'accorder +l'un avec l'autre. Dans le doute vous pouvez toujours renommer +le fichier de \textit{patch} pour qu'il ne soit pas trouvé. +\index{fichier!frpatch.sty@\texttt{frpatch.sty}}% + +\item\texttt{-43- french.all is LOADED.}\\ +Ceci est un message d'information signifiant l'exécution du programme de +débogage \texttt{french.all} +\index{fichier!french.all@\texttt{french.all}} +destiné à vérifier l'existence des commandes de l'extension {\eFrench} +et leur exécutabilité. + +\item\texttt{-44- ERROR Command ... is undefined.}\\ +Cette commande supposée être dans l'extension {\eFrench} n'existe pas. +Il se peut que cette commande soit effectivement une commande périmée. +Message émis par \texttt{french.all}. + +\item\texttt{-45- executing ...}\\ +Le jeu de test \texttt{french.all} exécute la commande indiquée. Il +s'ensuit éventuellement d'autres messages si cette commande n'est +pas exécutée dans le bon environnement. + +\item\texttt{-46- Cette commande est déjà définie dans le style french.}\\ + \texttt{\phantom{-46-} Problème éventuel avec le style french (macro ...).}\\ +Ces messages d'erreur sont produits par le programme \texttt{french.chk} +\index{fichier!french.chk@\texttt{french.chk}}% +qui permet de déboguer un document et de vérifier s'il utilise +déjà des commandes spécifiques à l'extension {\eFrench}. + +\ifnoDOCinstall\else +\item \texttt{-47- i must stop because your TeX engine is unable\\ + \phantom{-47- }\tt to generate 8bit output codes, sorry!}\\ +Ce message émis par \texttt{kb2lex} +\index{fichier!kb2lex@\texttt{kb2lex}}% +vous signale que votre moteur \TeX{} ne dispose pas de l'extension +\index{moteur!tex@\TeX}% +(\emph{change file}) de sortie en 8-bits sur les fichiers +externes et à l'écran. Vous pouvez alors +envisager d'utiliser (et adapter +si nécessaire) les fichiers \texttt{kb8to7.c} et \texttt{kb7to8.c} +\index{fichier!kb7to8.c@\texttt{kb7to8.c}}% +\index{fichier!kb8to7.c@\texttt{kb8to7.c}}% +qui correspondent à une utilisation du +codage d'entrée supposé pour votre système d'exploitation. +\index{fichier!decmulti.kbc@\texttt{decmulti.kbc}}% +Une compilation C de ces fichiers génèrera les programmes exécutables des +traducteurs 7-bits \texttt{<}--\texttt{>} 8-bits. +\fi + +\item\texttt{-48- Lecture du fichier de configuration de (pm)french.}\\ +Un fichier de configuration \texttt{(pm)french.cfg} +\index{fichier!(pm)french.cfg@\texttt{(pm)french.cfg}}% +a été détecté sur l'installation. Il est lu et les ordres +exécutables sont appliqués. Au cas où les options choisies par +l'installateur ne vous conviennent pas, vous pouvez toujours +les changer avec l'ordre \verb|\usersfrenchoptions| +(voir §~\ref{usersf} page \pageref{usersf}). +\index{usersfrenchoptions@\texttt{\backslash usersfrenchoptions}}% + +\item\texttt{-49- fermeture prématurée de guillemets.}\\ +Les guillemets sont fermés dans un autre environnement. Cela n'est pas +forcément une erreur mais dans ce cas l'environnement \emph{guillemets} +ne peut être fermé correctement et le bloc associé reste ouvert. Il faut +alors faire attention, par exemple, aux changements de police de caractères +dont l'effet risque de se prolonger plus qu'il ne faut. +On fermera correctement l'environnement \emph{guillemets} +\index{environnement!guillemets@\texttt{guillemets}}% +par une commande \verb|\endguillemets| placée au bon endroit +pour apparier les guillemets ouvrants. + +\ifnoDOCinstall\else +\item\texttt{-50- Error: the french language is undefined in language.dat \\ +\phantom{-50-} file.}\\ +Le fichier \texttt{language.dat} ne contient pas de ligne contenant la +définition de la langue française (\texttt{french}), ce qui est une +anomalie sérieuse pour créer un format français. +\fi + +\item\texttt{-51- ERREUR : ce document n'a pas été converti en 8-bits.}\\ +Certains documents de la distribution {\eFrench} doivent être convertis +en 8-bits avant utilisation. Selon le type de document, la composition est +arrêtée temporairement ou définitivement. + +\item\texttt{-52- Error: the (pm)french package doesn't run in such\\ + \phantom{-52-} minimal document class, sorry!}\\ +L'extension {\eFrench} ne peut fonctionner avec une classe de document +réduite, et en particulier avec la classe \texttt{minimal}. +\index{classe!minimal@\texttt{minimal}}% +\index{minimal@\texttt{minimal}}% + +\item\texttt{-53- environnement guillemets inutilisable avec l'option\\ + \phantom{-53-} \backslash noeveryparguillemets.}\\ +Vous devez alors saisir directement les guillemets en 7-bits ou en 8-bits +mais pas avec le nom d'environnement \texttt{guillemets} de \eFrench. +La commande \verb|\endguillemets| +reste disponible pour clore une double citation. +\index{noeveryparguillemets@\texttt{\backslash noeveryparguillemets}}% +\index{guillemets!noeveryparguillemets@\texttt{\backslash noeveryparguillemets}}% + +%\item\texttt{-54- ERROR: \backslash unusedslot (...) is invalid}\\ +% \texttt{\phantom{-54-} (active char. generating ...)}\\ +%La case choisie dans le codage de fonte est déjà utilisée. Un +%autre code hexadécimal doit être fourni dans le fichier +%\texttt{keyboard.dat}. Ce code sert uniquement à la génération de la version +%majuscule du caractère estzet. +% +%\item\texttt{-55- ERROR \backslash unusedslot (...) is not activated.}\\ +%Le code hexadécimal a bien été fourni dans le fichier +%\texttt{keyboard.dat} mais le caractère n'a pas été activé, d'où +%l'erreur fatale. +% +%\ifnoDOCinstall\else +%\item\texttt{-56- Pocessed 8bits characters are: ...}\\ +%Ce message de \texttt{kbconfig.tex} est fourni l'ors de l'utilisation +%du module \texttt{kb2lex.tex} pour vérifier si tous les caractères sont bien +%affichés à l'écran (et non sous forme hexadécimale à la \TeX). +%\fi +% +%\item\texttt{-57- keyboard.sty loaded; target font encoding is ...}\\ +%Ce message avertit l'utilisateur que le codage d'entrée génèrera des codes +%relatifs aux positions des caractères dans les fontes de type \texttt{OT1} +%ou \texttt{T1} ou autre. +%Si l'objectif de ce codage n'est pas le bon, alors il est indispensable de +%faire appel à l'extension \emph{fontenc}, avec comme argument le codage +%\index{extension!fontenc@\emph{fontenc}}% +%\index{extension!keyboard@\emph{keyboard}}% +%de fonte souhaité et ce avant l'appel à l'extension \emph{keyboard}. +% +\item\texttt{-58- Valeur de ... ignorée.}\\ +\label{-58-} +Un environnement de liste a été utilisé avec modification d'espacement +vertical (\verb|\topsep|, \verb|\partopsep|, \verb|\itemsep| ou +\verb|\parsep|) alors qu'ils sont imposés par {\eFrench}. +\index{topsep@\texttt{\backslash topsep}}% +\index{partopsep@\texttt{\backslash partopsep}}% +\index{itemsep@\texttt{\backslash itemsep}}% +\index{parsep@\texttt{\backslash parsep}}% +\index{espace!vertical}% +Vous avez plusieurs solutions : soit vous abandonnez l'idée de les modifier +(si cela vient de vous) soit vous pouvez revenir aux espacements standard +de \LaTeX{} avec \verb|\nofrenchtrivsep| +\index{nofrenchtrivsep@\texttt{\backslash nofrenchtrivsep}}% +\index{nofrenchtrivsepwarnings@\texttt{\backslash nofrenchtrivsepwarnings}}% +soit enfin vous pouvez supprimer ce message avec l'ordre +\vers|\nofrenchtrivsep|\-\vers|warnings|. + +\item\texttt{-59- FATAL ERROR: unusual strange text generated.}\\ +La définition du codage d'entrée via \texttt{kbconfig} vient de +générer du texte à mettre en page ; c'est une anomalie complète +puisque vous êtes en train de vouloir produire un format. Cela +vient certainement de la définition des caractères dans le +fichier \texttt{.kbc} utilisé ; sinon envoyez-moi un rapport +de bogue. + +\item\texttt{-60- point manquant après \backslash etc (à la ligne ...).}\\ + La commande \verb|\etc| doit toujours être suivie d'un point. La + correction est à faire dans votre fichier source. + +\ifnoDOCinstall\else +\item\texttt{-61- hypht1.tex file not found.}\\ + Avertissement de l'inexistence du fichier de motifs de césure + complémentaire pour l'encodage de fontes T1. Message issu par + \texttt{hymltex.tex} ou \texttt{hyconfig.tex}. +\index{fichier!hypht1.tex@\texttt{hypht1.tex}}% + +\item\texttt{-62- additional hyphenation file loading for T1 fonts.}\\ + Avertissement du chargement complémentaire de motifs de césure + pour l'encodage de fontes T1 (\texttt{hypht1.tex}). Ces motifs sont + appliqués à toutes les langues ayant une liste non vide de motifs. + Ce message est issu par \texttt{hymltex.tex} ou \texttt{hyconfig.tex}. +\fi + +\item\texttt{-63- french/frenchle/frenchpro style files not found.}\\ + \texttt{\phantom{-63-} Check if files exist somewhere in your site.}\\ + Vous avez demandé une option \texttt{french} de \emph{babel} mais le + fichier \texttt{.sty} associé n'a pas été trouvé (soit + \texttt{frenchpro.sty} ou \texttt{french.sty} [pour la version pro] + soit \texttt{frenchle.sty} [pour la version allégée]). +\index{babel@\emph{babel}!options}% + Ce message est émis par \texttt{french.ldf}, \texttt{frenchle.ldf} ou + \texttt{frenchpro.ldf}. + Avant d'aller + chercher ces fichiers ailleurs, vérifiez qu'ils n'existent pas déjà dans + votre système et qu'ils ne sont pas inaccessibles pour quelque + raison technique. + +\ifnoDOCinstall\else +\item\texttt{-64- }\\ + \emph{réservé pour un usage futur.} +\fi + +\item\texttt{-65- [pm]french.sty charge les traductions pour la }\\ + \texttt{\phantom{-65-} bibliographie : ...}\\ + Les fichiers indiqués à la fin du message ont été pris en compte + par l'extension {\eFrench} pour décrire les libellés utilisés + dans la bibliographie. Ces noms de fichiers dépendent des extensions + de bibliographie chargées avant {\eFrench} (comme \emph{jurabib} +\index{extension!jurabib@\emph{jurabib}}% +\index{extension!fracm@\emph{fracm}}% + ou \emph{fracm}). Par défaut, \texttt{frbib.tex} et \texttt{enbib.tex} + sont chargés. On peut éviter ce chargement en saisissant : + \verb|\let\iffrench|\-\verb|biblio|\-\verb|graphy|\-\verb|\iffalse| + avant de charger {\eFrench}. +\index{fichier!frbib.tex@\texttt{frbib.tex}}% +\index{fichier!enbib.tex@\texttt{enbib.tex}}% +\index{iffrenchbibilography@\texttt{\backslash iffrenchbibliography}}% + +\ifnoDOCinstall\else +\item\texttt{-66- ERROR! This file can't be typeset without any input}\\ + \texttt{\phantom{-66-} encoding declaration}\\ + \texttt{\phantom{-66-} (look at keyboard or inputenc packages.)}\\ +Vous essayez de composer le test de torture sans avoir préparé de format +francisé \emph{ad hoc} ; c'est un cas d'erreur fatale. Pour pouvoir reprendre +il vous faut modifier le document pour charger quelques extensions +indispensables : la première est sans contest celle qui vous permettra +de fournir à \AllTeX\ des caractères accentués (8 bits) qu'il saura +interpréter. Pour cela la distribution {\eFrench} vous apporte +l'extension \emph{keyboard}. +\fi + +\item\texttt{-67- WARNING it seeems your are using inputenc and}\\ + \texttt{\phantom{-67-} keyboard, please chose!}\\ +Vous avez chargé deux extensions pour le même objectif : le codage +d'entrée de votre document ; une seule suffit. Bien entendu je +vous conseille \emph{keyboard} mais c'est vous qui choisissez selon +votre utilisation. + +\item\texttt{-68- ERROR: french is no more running}\\ + \texttt{\phantom{-68-} with 2.09 emulation, sorry!}\\ +Vous utilisez probablement un très vieux document qui n'a pas été +entièrement reconverti pour \LaTeXe\ ; cette version de {\eFrench} +ne peut être utilisée dans ce cas ; voir éventuellement dans la +distribution {\eFrench} le fichier de style +\texttt{frltx209.sty} du répertoire \texttt{obsolate} qui pourrait +vous dépanner temporairement. +\index{fichier!frltx209.sty@\texttt{frltx209.sty}}% . +\index{frltx209.sty@\texttt{frltx209.sty}}% +\index{dossier \texttt{obsolate}} +\index{répertoire \texttt{obsolate}} +\index{latex209@\LaTeX2.09} + +\ifnoDOCinstall\else% +\item\texttt{-69- kbconfig: Intercepting the dump control sequence }\\ + \texttt{\phantom{-69-} for eliminating few invalid chars.}\\% +Ce message émis à l'occasion d'une fabrication de format indique +que la commande \verb|\dump| a été interceptée pour pouvoir modifier +des définitions de caractères qui sont jugés comme des caractères +invalides en \LaTeX\ standard (cf message -35-). + +\item\texttt{-70- kbconfig: modifying % + \string\@tabacckludge for math.}\\% +La commande \LaTeX\ \verb|\@tabacckludge| a été redéfinie dans le format +pour éviter une boucle sans fin en cas d'utilisation en mode mathématique +avec l'extension \texttt{inputenc}. +\fi + +\item\texttt{-71- ATTENTION : si babel est utilisé, }\\% + \texttt{\phantom{-71-} mettre french en option}\\% +Vous avez probablement fait appel à \emph{babel} par une commande +du genre \verb!\usepackage![...]\verb!{babel}! puis vous avez demandé à charger +une extension french (\eFrench\ ou \texttt{frenchle}), +ce qui est incompatible. Soit vous utilisez \emph{babel} avec +l'option \texttt{frenchpro} ou \texttt{frenchle} soit vous utilisez +une extension french toute seule. Il est probable que la composition du +document n'ira pas bien loin... +\index{babel@\emph{babel}!en opt@{\frenchname} en option de}% + +\item\texttt{-72- kbconfig: utf8 encoding can't be completed with Plain!}\\ +\phantom{-72- } +\texttt{continuing with no Unicode characters.}\\% +Le codage \texttt{utf8} fait appel à du code spécifique à \LaTeX\ ; il +n'est donc pas utilisable avec Plain \TeX. +Par contre les fichiers +\texttt{*.lex} peuvent être générés correctement pour produire les +\index{convertisseurs!\texttt{kb8to7}}% +\index{fichier!*.lex@\texttt{*.lex}}% +convertisseurs \texttt{kb8to7} et \texttt{kb7to8}. + +\item\texttt{-73- ERREUR avec AmSTeX : frenchle/french/frenchpro.sty}\\ +\phantom{-73- }\texttt{a été chargé trop tot.}\\% +Il est indispensable de charger l'extension de francisation après +AmSTeX de façon à ce qu'elle s'adapte au contexte. + +\item\texttt{-74- ERROR, keyboard loaded after french...sty!}\\ +Il est indispensable de charger l'extension de francisation après +l'extension \texttt{keyboard} de façon à ce qu'elle s'adapte au contexte. + +\item\texttt{-75- kbconfig: utf8 encoding not found via inputenc package!}\\ +\phantom{-75- } +\texttt{continuing with no Unicode characters.}\\% +Le codage \texttt{utf8} fait appel à du code spécifique à \LaTeX\ introduit +en janvier 2004 ; il s'agit notamment du fichier \texttt{utf8.def} qui +\index{fichier!utf8.def@\texttt{utf8.def}}% +n'a pas été trouvé ; vous ne pourrez donc pas bénéficier de ce codage +tant que \LaTeX\ n'aura pas été mis à jour. +Par contre les fichiers +\texttt{*.lex} peuvent être générés correctement pour produire les +\index{convertisseurs!\texttt{kb8to7}}% +\index{fichier!*.lex@\texttt{*.lex}}% +convertisseurs \texttt{kb8to7} et \texttt{kb7to8}. + +\item\texttt{-75- kbconfig: no language dependencies available}\\ +\texttt{\phantom{-75- } within Plain TeX!}\\ +Le dispositif permettant de disposer de fichiers \texttt{*.kbc} en +\index{fichier!*.kbc@\texttt{*.kbc} avec Plain \TeX}% +fonction du langage utilisé n'est pas disponible avec Plain TeX. + +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%% +\ifnoDOCinstall\else% +%%%%%%%%%%%%%%%%%%%%% + +\section{Installation et tests}\label{chapinstall} +\index{installation}\index{tests}% + +\subsection{Rappels} + +Tout est devenu beaucoup plus simple ces dernières années. +Les moteurs \TeX{}live et Mik\TeX{} par exemple connaissent le paquetage +\eFrench. Concernant les dernières versions, \TeX{}live +le met directement à disposition, Mik\TeX{} le propose dans +sa bibliothèque de paquets, il suffit de le charger. + +Sinon, on peut s'inspirer des procédures proposées sous +\linkandfootnote{ctanlanguage}{\lsc{CTAN}}% +{http://mirror.ctan.org/language/french/e-french/install/} . + +\subsubsection{Procédures d'installation pour Linux (ou Unix)} +Avec \TeX{}live, il suffit de passer à la dernière version. +Sinon, manuellement, ce n'est pas un grand problème. +Le fichier \texttt{MiniDocEf\_Lnx.pdf} de +\linkandfootnote{ctanlinux}{\lsc{CTAN}}% +{http://mirror.ctan.org/language//french/e-french/install/MiniDocEf\_Lnx.pdf} +indique ce qu'il faut faire + + +\subsubsection{Procédure d'installation pour Windows} +Sous Windows, deux possibilités de moteur \TeX au départ, à savoir +\TeX{}live et Mik\TeX{} . +Avec \TeX{}live, il suffit de passer à la dernière version. + Mik\TeX{} le propose dans +sa bibliothèque de paquets, il suffit de le charger. +Sinon, manuellement, ce n'est pas un grand problème. +Le fichier \texttt{MiniDocEf\_Lnx.pdf} de +\linkandfootnote{ctanmswin}{\lsc{CTAN}}% +{http://mirror.ctan.org/language//french/e-french/install/MiniDocEf\_Win.pdf} +indique ce qu'il faut faire + +\subsubsection{Procédure d'installation pour %\protect\lsc + {MacOs}} + +Les utilisateurs sous OS X + doivent choisir la procédure d'installation +\lsc{unix} - \lsc{linux} . + +La reprise eFrench de \FrenchPro{} ne soutient plus les anciens MacOs. + +\subsubsection{Suivi par le groupe \eFrench} +\begin{order} +\item Après quelques mois d'utilisation de \eFrench{} ou de +l'extension +allégée +\makeatletter\if@screen% +\linkandfootnote{docfrenchle}{\texttt{frenchle}}% +{http://efrench.org/bases/doc/frenchle.pdf}% +\else% +\linkandfootnote{docfrenchle}{\texttt{frenchle}}% +{http://efrench.org/bases/doc/frenchle.pdf}% +\fi% + ; +\makeatother% +vous aurez peut-être des modifications ou +suggestions à nous proposer n'hésitez pas à le faire +en envoyant un message à +\href{mailto:lb@laurentbloch.org}{\texttt{<Laurent Bloch>}} +à \href{mailto:raymond@juil.ch}{\texttt{ <Raymond Juillerat>}} +ou au groupe de \href{mailto:efrench@lists.tuxfamily.org}{\texttt{maintenance \eFrench}}.% + +\item Installez les mises à jour majeures qui seront +déposées sur les serveurs. +\index{mises à jour}\index{serveurs}\index{serveur de référence}% +Le serveur Web de référence est +\linkandfootnote{ctanefrench}{\lsc{CTAN}}% +{http://mirror.ctan.org/language/french/e-french/} + et les fichiers sources sont à \\ +<{\url{http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/}>}. +\end{order} + +%=== +\bigskip +\fi +\ifnoFINALS\else +\section{Points finals} % + +\subsection{De Bernard Gaulle} +Quelques remarques en guise de conclusion : +\begin{itemize} +\item vous avez trouvé des défauts à l'extension \FrenchPro{} ? %{\eFrench} ? +proposez-nous alors les corrections/amélio\-rations ou tout au moins +signalez-les-nous (cf. paragraphes précédents). + +\item comme pour l'extension \FrenchPro{}, ce document contient des erreurs ; +elles sont involontaires ; merci de me les signaler ; +je ferai mon possible pour les corriger. + +\item ce travail avait auparavant + le soutien de l'association GUTenberg ; ce n'est plus le cas depuis +l'an 2000. +Il continue d'évoluer en fonction de vos demandes et de votre soutien. +Il est maintenant largement diffusé, +notamment sur \lsc{CTAN}. +\end{itemize} + +\bigskip +Nous espérons que vous apprécierez ce travail. +% et que vous l'encouragerez en +%\linkandfootnote{register}{% +%règlant rapidement votre licence d'utilisation}% +%{http://efrench.org/bases/REGISTER.pdf}. +\bigskip +\bigskip + +\noindent +\begin{minipage}{0.90\linewidth} +Je tiens à remercier tous ceux qui ont participé activement +et contribuent encore régulièrement ou ponctuellement +à l'amélioration de l'extension \FrenchPro. +\medskip + +\begin{flushright} +{\em En espérant avoir été utile à tous,} + +\bigskip\bigskip +Bernard {\sc Gaulle} + +\bigskip\bigskip +{\sc Bergerac}\ le \ 1/11/91 \\ +(dernière mise-à -jour de \FrenchPro{} par B. G. le 28 juin 2007)\\ +\end{flushright} +\vfil + +\begin{flushleft} +\footnotesize{\sf +À ma femme, \\% qui a fait preuve d'une très grande patience +à l'association GUTenberg, \\%qui en fera bon usage +\index{GUTenberg}% +à tous mes collègues francophones et\\ +à l'université }{\sc Laval} au {\sc Québec}. +\end{flushleft} +\end{minipage} +\fi + + +\subsection{Du groupe \eFrench}\MAJ +Le statut actuel de +\eFrench{} est le résultat des travaux de Laurent Bloch, Manuel Pégourié-Gonnard +et Raymond Juillerat. Nous remercions le groupe \lsc{CTAN} de ses nombreuses suggestions +et quelques utilisateurs des remarques qui nous ont aidés et permis de peaufiner +le paquet.\\ +\begin{flushright} +(dernière mise-à -jour de ce manuel pour \eFrench{} par RayJ le \today) +\end{flushright}\endMAJ + +\def\AvertO{\ \vfill% +%%% Ceci était un extrait de la documentation de l'extension +%%% \eFrench. + + \begin{center}*---*\end{center} + \def\AvertO{}} + +\ifnoDOCinstall\par\medskip\AvertO\fi% +\ifnoFINALS\par\medskip\AvertO\fi% + +\vfill +\newpage + +\bibliographystyle{plain} +\ifx\Section\undefined\else\let\section\Section\fi% Restore \section. +\def\refname{Références bibliographiques} +\begin{drapeaufg} +\begin{thebibliography}{99} + +\bibitem{cahiers} J. {\sc André} \& J. {\sc Grimault}, +\linkandfootnote{cahiers}{\em Emploi des capitales (première partie)}% +{http://www.gutenberg.eu.org/pub/GUTenberg/publicationsPDF/6-andregrim.pdf}% +, {\em in} Les Cahiers GUTenberg \Numero 6, 1990.\\ + +\bibitem{codetypo} {\em Code typographique}, +%Syndicat national des cadres et maîtrise du livre, de la presse +% et des industries graphiques +Fédération de la communication +, 17\ieme édition, 1995. + +\bibitem{TSI} J. {\sc Désarménien}, {\em La division par ordinateur des + mots français : application à \TeX{}}, + {\em in} TSI vol. 5 \Numero 4, 1986.% AFCET-Gauthier-Villars +\index{division!des mots}% + +%\bibitem{flipo4}D. {\sc Flipo}, B. {\sc Gaulle} et K. {\sc Vancauwenberghe}, +%\linkandfootnote{flipo4}{\em Motifs de césure français}% +%{http://www.gutenberg.eu.org/pub/GUTenberg/publicationsPDF/18-motifs.pdf}% +%, +% {\em in} Les Cahiers GUTenberg \Numero 18, 1994. +\makeatletter\if@screen% +\linkandfootnote{18-motifs}% + {\em Motifs de césure français}% +{%http://www.gutenberg.eu.org/pub/GUTenberg/publicationsPDF/18-motifs.pdf +http://frenchpro6.com/screen.pdf/artcesuresscreen.pdf}, +\else +\linkandfootnote{18-motifs}% + {\em Motifs de césure français}% +{http://www.gutenberg.eu.org/pub/GUTenberg/publicationsPDF/18-motifs.pdf +%http://efrench.org/bases/doc/artcesures.pdf +}, +\fi +\makeatother +{\em in} Les Cahiers GUTenberg \Numero 18, 1994. + +\bibitem{cork} M.-J. {\sc Ferguson}, +\linkandfootnote{cork}{\em Fontes latines européennes et \TeX{} 3.0}% +{http://www.gutenberg.eu.org/pub/GUTenberg/publicationsPDF/7-ferguson.pdf}% +, {\em in} Les Cahiers \hbox{GUTenberg} \Numero 7, 1990. + +\bibitem{frenchle}B. {\sc Gaulle}, +\makeatletter\if@screen% +\linkandfootnote{frenchle}% +{\em L'extension \emph{frenchle} pour \LaTeX, notice d'utilisation}% +{http://efrench.org/bases/doc/frenchle.pdf}% +\else% +\linkandfootnote{frenchle}% +{\em L'extension \emph{frenchle} pour \LaTeX, notice d'utilisation}% +{http://www.efrench.org/doc/frenchle.pdf}% +\fi% +\makeatother +, \number\year + +\bibitem{torture}B. {\sc Gaulle}, +\linkandfootnote{torture}{\em French style torture test}% +{http://efrench.org/bases/tst/frenchrf.dvi}% +, document de travail (distribution logicielle de l'extension + {\eFrench}) applicable à \LaTeX{}, \number\year\\ + +\bibitem{et98}B. {\sc Gaulle}, +%\linkandfootnote{et98}% +%{\emph{Comment peut-on personnaliser l'extension \texttt{french} de \linebreak[4] \LaTeX\ ?}}% +%{http://efrench.org/bases/doc/artET98.pdf}% +\makeatletter\if@screen% +\linkandfootnote{artET98.pdf}{\emph{Comment peut-on personnaliser + l'extension \emph{french} de \LaTeX\ ?}} +{%http://efrench.org/bases/doc/artET98.pdf +http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/doc/artET98.pdf?revision=1&view=co},% +\else +\linkandfootnote{artET98.pdf}{\emph{Comment peut-on personnaliser + l'extension \emph{french} de \LaTeX\ ?}} +{%http://efrench.org/bases/doc/artET98.pdf +http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/doc/artET98.pdf?revision=1&view=co},% +\fi +\makeatother + document {\em in} Les Cahiers GUTenberg \Numero 28-29, 1998\\ + +\bibitem{faq}B. {\sc Gaulle}, +\makeatletter\if@screen% +\linkandfootnote{faq}% +{\emph{FAQ {\eFrench}}, foire aux questions à propos de \LaTeX\ en français} +{http://www.efrench.org/doc/faq.pdf}% +\else% +\linkandfootnote{faq}% +{\emph{FAQ {\eFrench}}, foire aux questions à propos de \LaTeX\ en français} +{http://www.efrench.org/doc/faq.pdf}% +\fi% +\makeatother% +, \number\year\\ + +\bibitem{companion}M. \fsc{Goossens}, F. \fsc{Mittelbach} et A. \fsc{Samarin}, + {\em The \LaTeX{} companion}, Addison-Wesley, + second edition, 2004. + +\bibitem{romand} {\em Guide du typographe romand}, Association suisse + des compositeurs à la machine, 6\ieme édition, 2000. + +\bibitem{latexbook}L. {\sc Lamport}, {\em \LaTeX, A + document preparation system}, Addison-Wesley, 1994. + +\bibitem{makeindex}L. {\sc Lamport}, {\em An Index Processor For \LaTeX}, 1987. + + +\bibitem{lexique}{\em Lexique des règles + typographiques en usage à l'Imprimerie nationale}, \linebreak[4] + 4\ieme édition, 1991, + \texttt{ISBN 2-11-081075-0}. + + +\bibitem{ManPerrou}Y. \textsc{Perrousseaux}, + \emph{Manuel de typographie française + élémentaire}, \linebreak[4] + Atelier \textsc{Perrousseaux}, 4\ieme édition, 1995, + \texttt{ISBN 2-911220-00-5}. + +\bibitem{CompoPerrou}Y. \textsc{Perrousseaux}, + \emph{Mise en page et impression}, + Atelier \linebreak[4]\textsc{Perrousseaux}, 1996, + \texttt{ISBN 2-911220-01-3}. + +\bibitem{saudrais}E. {\sc Saudrais}, +\linkandfootnote{saudrais}% +{\emph{Le petit typographe rationel}}% +{http://perso.wanadoo.fr/eddie.saudrais/prepa/typo.pdf}% +, document électronique, \number\year + +\bibitem{TDS} \TeX\ Users Group, +\linkandfootnote{TDS}{\emph{A directory Structure for TeX Files}}% +{http://www.tug.org/tds/}% +, document électronique disponible sur \lsc{CTAN}, + \number\year. +\end{thebibliography} +\end{drapeaufg} +\vfill +\newpage +\nooverfullhboxmark% Pourquoi faut-il le repréciser pour la versions screen? +\printindex + +\def\footnote#1{}% nullify any footnote here. +\tableofcontents + +\end{document} diff --git a/language/french/e-french/texmf/doc/src/faq.tex b/language/french/e-french/texmf/doc/src/faq.tex new file mode 100644 index 0000000000..35583ab92b --- /dev/null +++ b/language/french/e-french/texmf/doc/src/faq.tex @@ -0,0 +1,1469 @@ +% !TeX encoding = utf8 +%This is FaQ.tex : the LaTeX F A Q of the french style +% LPPL Copyright by eFrench +% +% +\documentclass[a4paper,12pt,openright]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{times} +\usepackage{url} + +\makeatletter\def\tempa{\let\if@screen\iffalse}\makeatother% +\tempa% +\def\href#1#2{#2} +\let\titcolor\relax +\usepackage[print]{pdfscreen} + +\usepackage{french, mymaj, fancybox} + +\usersfrenchoptions{% + \disallowuchyph + \overfullhboxmark +} + + \definecolor{section0}{rgb}{.722,.525,.431} + \definecolor{section1}{rgb}{.650,.350, 0 }%{.937,.561,.123} + \definecolor{section2}{rgb}{.750,.250, 0}%{.855,.647,.123} + \definecolor{section3}{rgb}{.950,.050,.0} + \definecolor{section4}{rgb}{.545,.271,.750} + \definecolor{section5}{rgb}{.627,.322,.176} + \definecolor{titcolor}{rgb}{.922,.725,.831} + \definecolor{bleu}{rgb}{.0,.0,.650} +%\def\titcolor{\color{section0}} + +\hypersetup{ + pdfwindowui=true, pdfnewwindow=true, + colorlinks=true, pdfmenubar=true, pdffitwindow=true, + anchorcolor=bleu, urlcolor=bleu, +} + +\makeatletter +\newcommand{\linkandfootnote}[3]{% + \href{#3}{#2}\bgroup% + \expandafter\ifx\csname r@tlf.#1\endcsname\relax% + \expandafter\global% + \expandafter\let\csname r@tlf.#1\endcsname\empty% + \footnote{\texttt{<}\url{#3}\texttt{>}.\label{lf.#1}}% + \else\refmark{lf.#1}% + \fi\egroup% + }% +\makeatother + +\newif\ifnoDOCinstall +\newif\ifnoFINALS + +\textwidth=152mm +\textheight=240mm +\voffset -1in +%\hoffset 0in%-1in +\oddsidemargin=11mm +\evensidemargin=11mm +\topmargin=1.0cm +\footskip=1.3cm +\renewcommand{\ttdefault}{cmtt} +%\hypersetup{ +%pdfinfo={ +%Title={Foire aux questions }, +%Author={Bernard Gaulle, Raymond Juillerat}, +%Creator={Bernard Gaulle}, +%Subject={TeX, LaTeX et la langue française}, +%Keywords={TeX, LaTeX, pdfLaTeX, efrench, frenchle.sty, french.sty}, +% } +%} +\hypersetup{ +pdftitle={Foire aux questions }, +pdfauthor={Bernard Gaulle, Raymond Juillerat}, +pdfcreator={Bernard Gaulle}, +pdfsubject={TeX, LaTeX et la langue française}, +pdfkeywords={TeX, LaTeX, pdfLaTeX, efrench, frenchle.sty, french.sty}, +} +%\makeindex +\begin{document} +\newlength{\oriparindent} +\setlength{\oriparindent}{\parindent} +\newcommand{\indneg}{\setlength{\parindent}{-2mm}} +\newcommand{\indpos}{\setlength{\parindent}{\oriparindent}} +\newcommand{\pgLapdTeX} +{(L\hspace{-.8ex}\raisebox{.4ex}{\scriptsize A}\hspace{-.3ex})\TeX} +%\disallowuchyph% C'est ma devise... (inclus dans myfroptn) + +% Page de titre : +\makeatletter +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or \star \or \diamond + \or \heartsuit \else\@ctrerr\fi}} +\makeatother +\title{\hbox{}\vspace*{-3cm} + \huge\bf + FAQ \textit{eFrench}\\ + Foire aux questions\\ à propos de \LaTeX{ }%\textsl{eFrench} +%\footnote{Les marques de mise à jour dans la marge sont en rapport +% avec la version V5,00 du 22 décembre 2000.} +% \\ pour \LaTeX + en français} +\author{Bernard \fsc{Gaulle}, repris par Raymond \fsc{Juillerat}\\ +et le groupe \textit{eFrench} \href{mailto:efrench(at)lists.tuxfamily.org}{\texttt{<efrench.org>}}% +\thanks{Attention, l'adresse m.él. fournie via les butineurs est +piégée ; il faut la corriger à la main.}\\% +LPPL © {\sc eFrench} (voir le fichier +\linkandfootnote{copyright}{\texttt{Copyright.pdf}} +{http://efrench.org/}% +% ou \texttt{copyrigh.tex} +).\\ +} +\date{version pro \frenchstyleid}\label{prempage} +\maketitle\thispagestyle{empty} + +%\begin{resume} Cette notice décrit comment installer et utiliser avec \LaTeX{} +% l'extension \textsl{} (appelée autrefois style \texttt{french} puis \texttt{ French Pro}). +% Cette extension a été créée pour imprimer des documents typographiquement +% plus conformes à l'usage français que ce que produit \LaTeX{} par défaut. +% Un grand nombre de commandes peuvent être utilisées mais +% l'emploi courant de cette extension ne nécessite +% {\em a priori\/} aucune connaissance particulière +% ni une utilisation forcenée de commandes spécifiques. Toutefois cet +% emploi n'est pas toujours {\em transparent}. +%\maj +% Une version allégée est fournie (\texttt{frenchle}). +%Une version appauvrie (\texttt{pmfrench}) +% est aussi utilisable sur tous les sites et dans toutes les +% configurations. L'installation de \textsl{eFrench} s'accompagne d'une +% création de {\em format} pour l'introduction, notamment, des +% fichiers de motifs de césure français. D'autres extensions l'accompagnent. +%\end{resume} +\vfill\vfill +\section*{Préface} +Cette publication est une version modifiée sur la base d'un document \textit{faq.pdf} +créé par Bernard \textsc{Gaulle} et mis à jour par lui une dernière fois le 28 juin 2007. +Cette FAQ était à l'origine un des nombreux documents qui accompagnaient +cette création complète de typographie française appelée \textit{FrenchPro}. + +Son auteur, Bernard \textsc{Gaulle}, est décédé en août 2007. En novembre 2007, pour +ne pas laisser tomber dans l'oubli ce grand-Å“uvre et +laisser à disposition des auteurs francophones ces outils incomparables, Laurent \textsc{Bloch} + a lancé le projet nommé \textit{eFrench}\cite{lblochefr}. + +Parallèlement, les environnements \TeX{} et \LaTeX{} ont évolué jusqu'à aujourd'hui vers une simplification pour +l'utilisateur \textit{lambda}, +avec le résultat que certaines explications ne sont plus du tout d'actualité, +les manipulations évoquées ayant été automatisées depuis, +en particulier en ce qui concerne les moteurs +les plus courants (voir § \ref{Qpdftex} et \ref{motfrahup}). + +C'est surtout pour la mettre à jour que cette FAQ a été revue et corrigée. Les modifications sont marquées par une barre dans la marge gauche. +\vfill +\newpage +\sommaire[3] +\noindent + +{\sc eFrench} © LPPL (voir le fichier +\linkandfootnote{copyright}{\texttt{Copyright.pdf}} +{http://efrench.org/}% +% ou \texttt{copyrigh.tex} +).\\ +%% \NNL sert a éliminer les saut de page dans la toc ou le sommaire +%% mais cela génère de messages « Token not allowed » avec hyperref. +\newcommand{\NNL}{\protect\let\\\relax} +\makeatletter\def\HyPsd@CatcodeWarning#1{}\makeatother% +%% +\let\Subsubsection\subsubsection +\def\subsubsection#1{\Subsubsection[\NNL#1]{\protect\color{section3}#1}} +\let\Subsection\subsection +\def\subsection#1{\Subsection[\NNL#1]{\protect\color{section2}#1}} +\let\Section\section +\def\section#1{\Section[\NNL#1]{\protect\color{section1}#1}} + +\section{Quelques notions de base} + +Pour mieux répondre à vos interrogations les réponses sont éclatées en +deux parties : d'une part, l'explication textuelle voulue la plus brève +possible et d'autre part, l'application \TeX{}nique qui illustre le propos ou le +complète. +%? Copyright 1996-2007 +\subsection {Qu'est-ce que {\TeX} ?} +\indneg + +{\sl \small En bref :} Si vous ne connaissez pas +\linkandfootnote{TeX}{\TeX} +{http://www.tug.org/whatis.html} + (prononcez « \textit{tek} ») sachez que c'est +un programme génial dont l'auteur est +\linkandfootnote{DKnuth}{Donald \sc Knuth} +{http://www-cs-faculty.stanford.edu/~knuth} +%Donald Knuth2 +et qui permet de +composer, mettre en page des documents à imprimer ou à visualiser. Le +document source est fourni sous forme de texte balisé. Celui que vous lisez +contient, par exemple, la balise \texttt{$\backslash$title\{FAQ} ...\texttt{\}}. Ces balises ont un rôle +important au moment de la composition par \TeX{} car, suivant la classe de +document employée, la typographie appliquée sera différente.\indpos + +On emploie souvent, par erreur, le mot \TeX{} à la place de celui de \LaTeX{} +(voir ci-après) ou \textit{vice versa}. + +\indneg{\TeX\sl nique :} \indpos {\TeX} produit en sortie un fichier « \texttt{dvi} » indépendant de l'unité de +restitution. + +\begin{MAJ}Mais aujourd'hui, le format « \texttt{dvi} » fait de plus en plus place au +format « \texttt{pdf} » et c'est plutôt {pdf\TeX} que {\TeX} ou mieux encore +plutôt {pdf\LaTeX} que {\LaTeX} qui sont utilisés. +\end{MAJ} + +\subsection {Qu'est-ce que \LaTeX{} ?} +\indneg{\sl \small En bref :} +\linkandfootnote{LaTeX}{\LaTeX} +{http://www.latex-project.org/} +%LATEX3 + (prononcez « \textit{la tek} ») est un langage de balisage qui étend +les possibilités de \TeX; il propose des balises extrêmement puissantes. C'est +\LaTeX{} qui est le plus utilisé dans le monde ; il s'agit d'un standard de fait, +\maj aujourd'hui supplanté par sa version nettement plus étendue {pdf\LaTeX}. + +\indneg{\TeX\sl nique :} \indpos La classe de document employée pour ce document a été la classe +\texttt{article} ; elle a été précisée au moyen de la balise +\begin{center} +\fbox{\makebox[0.7\textwidth][l]{$\backslash$\texttt{documentclass} \it\{classe\_de\_documents\} }}%\usebox{\mybox}}} +\end{center}\indpos +dans ce document-ci donc \{classe\_de\_documents\} = \texttt{article}. + +Une balise \LaTeX{} est en fait une macro-instruction faisant appel à des commandes +\TeX.\indpos + +La plupart des compilateurs {\TeX} sont désormais basés sur la distribution +générique (sous forme source) +\linkandfootnote{ web2c}{web2c} +{http://www.tug.org/web2c} +% web2c4 +\maj et la base multilingue \textit{babel}. +On emploie souvent, par erreur, le mot \LaTeX{} à la place de celui de \TeX{} +ou \textit{vice versa}. +\subsection {Qu'est-ce qu'un format {\TeX} ?}\label{quoiFormat} +\indneg{\sl \small En bref :} Le programme \TeX, lorsqu'il démarre, a besoin d'un ensemble de +données qui ont été préparées à l'installation du produit ; c'est ce que l'on +appelle le « \textit{format} ». Il contient notamment la définition de toutes les balises +mises à disposition de l'utilisateur. Le format par défaut de {\TeX} s'appelle +\texttt{plain} mais il est souvent appelé sous le nom plus normal de \texttt{tex} ; celui de +\LaTeX{} s'appelle \texttt{latex}. \begin{MAJ} +Par contre les formats francisés étaient généralement +appelés, respectivement, \texttt{frtex} et \texttt{frlatex}, mais ils ne sont plus +aujourd'hui nécessaires, ce qui simplifie l'installation.%lasse_de_documents +\end{MAJ} + +\indneg{\TeX\sl nique :} Pour créer un format on exécute un « initex » : +%\usepackage{mltex} +\begin{center} +\fbox{\makebox[0.7\textwidth][l]{\texttt{tex -ini} \it nom\_du\_format . . .}} +\end{center} +\setlength{\parindent}{\oriparindent} + +%\TeX -ini nom\_du\_format . . . +\subsection{ Qu'est-ce que {pdf\TeX} ; pdf\LaTeX ?}\label{Qpdftex} +\setlength{\parindent}{-2mm}{\sl \small En bref :} Le moteur +\linkandfootnote{pdfTeX}{pdf\TeX} +{http://www.tug.org/applications/pdftex/} +%pdfTEX5 + est un moteur {\TeX} standard produisant, par +défaut, un fichier de type Adobe PDF. Il peut aussi fonctionner à l'identique +de \TeX. Son nom de format commence en général par \texttt{pdf}. \\ +\begin{MAJ} +%Pour les formats +%francisés on utilisait en général les noms \texttt{frpdftex} et \texttt{frpdflatex},\begin{MAJ} +%mais ce formatage n'est plus nécessaire aujourd'hui, +%n'apportant aucun avantage. + +La différence entre pdf\TeX{} et pdf\LaTeX{} est la même qu'entre +\TeX{} et \LaTeX{} au niveau de la saisie. +Les moteurs pdf\TeX et pdf\LaTeX{} peuvent produire en sortie un fichier de type « \texttt{pdf} » ou « \texttt{dvi} ». +\end{MAJ} + +\subsection{ Qu'est-ce que Ml\TeX{} ?}\label{qmltex} +\indneg{\sl \small En bref :} +\linkandfootnote{MlTeX}{Ml\TeX} +{http://mirror.ctan.org/systems/generic/mltex} +%Ml\TeX6 +ou MultiLingual {\TeX} est une option (\texttt{-mltex}), utilisable +avec tous les moteurs {\TeX} basés sur +\linkandfootnote{ web2c}{web2c}% +{http://www.tug.org/web2c}% +%web2c4 +, qui avait été réalisée à l'origine +par \textsc{Michael Ferguson} pour résoudre divers problèmes linguistiques dont +celui de la césure de mots accentués. +\linkandfootnote{DKnuth}{Donald \sc KNUTH}% +{http://www-cs-faculty.stanford.edu/~knuth} +% Donald Knuth2 +a repris un certain +nombre d'idées dans la version 3 de \TeX{} mais pas toutes. Le suivi et la +mise à jour de {Ml\TeX} était assurée par +%\linkandfootnote{BReichle}{\sc Bernd Raichle} +%{http://www.informatik.uni-stuttgart.de/ifi/is/Personen/raichle.html} +Bernd {\sc Raichle}. +Pour +des raisons de Copyright, les moteurs {\TeX} modifiés pour offrir cette option +ne peuvent être appelés \TeX. On trouvera ainsi, pour \textsc{Unix} : +\linkandfootnote{ teTEX}{te\TeX} +{http://www.tug.org/tetex/}% +%teTEX8 +, pour MacOs : +\linkandfootnote{ CMacTEX}{CMac\TeX} +{http://www.kiffe.com/cmactex.html}% +%CMacTEX9 +, pour Windows (win32) : +\linkandfootnote{ fpTEX}{fp\TeX} +{http://www.fptex.org/}%\bf +%fpTEX10 ??? +, etc. +Cette option est choisie à l'installation et plus précisément à la création du +format ; elle permet donc ensuite la césure automatique des mots accentués +en environnement standard. + +\indneg\TeX{\sl nique} : {Ml\TeX} étant devenu une option standard d'exécution des compilateurs +\TeX{} basés sur +\linkandfootnote{ web2c}{web2c}{http://www.tug.org/web2c}% +%web2c4 +, il suffit de coder cette option à la création du +format : +\begin{center} +\fbox{\makebox[0.6\textwidth][l]{\texttt{tex -ini -mltex} \it nom\_du\_format . . .}} +\end{center}\indpos +Il existe aussi une extension de \LaTeX, +\linkandfootnote{MlTeX}{\tt mltex}{http://mirror.ctan.org/systems/generic/mltex} +%mltex6 , +, que l'on peut charger lorsque +le format (fabriqué avec l'option « \texttt{-mltex} ») ne contient pas de descriptif +des caractères accentués contrairement à ce qui était conseillé par \textit{FrenchPro}. +\begin{center} +\fbox{\makebox[0.4\textwidth][l]{$\backslash$\texttt{usepackage\{mltex\}}}} +\end{center} + +\begin{MAJ} +Somme toute, {Ml\TeX} était une façon de parer aux défauts des fontes de type \texttt{OT1}. +Avec \textit {eFrench}\cite{frenchpro} on conseille plutôt de passer aux fontes de type \texttt{T1} sans Ml\TeX{}. +\end{MAJ} +%%\usepackage{mltex} +%5. <>. +%6. <>. +%7. <>. +%8. <>. +%9. <>. +%10. <>. +%3 +\subsection{ Qu'est-ce que TeX--XeT ? }\label{qtexxet} +\indneg{\sl \small En bref :} TeX--XeT ou « {\TeX} de droite-à -gauche » est une option utilisable avec +quelques moteurs \TeX{} qui a été réalisée par Peter {\sc Bretenlohner} pour résoudre +le problème de la mise en page dans les langues écrites de droite à +gauche. Donald \textsc{Knuth} avait étudié la question avec Pierre \textsc{Mackay} mais +était arrivé à une version incompatible avec \TeX. La version proposée par +\textsc{Bretenlohner} n'a pas d'impact sur le compilateur \TeX{} et est donc optionnelle. +Pour des raisons de Copyright, les moteurs \TeX{} modifiés pour offrir +cette option ne peuvent être appelé \TeX. On trouvera ainsi pour Windows : l'ancien G{\TeX} qui était proposé par l'association +\linkandfootnote{GUTenberg}{GUTenberg}{http://www.gutenberg.eu.org} +%GUTenberg 12 +avec la distribution WinGUT, etc.\indpos + +\begin{MAJ} +Aujourd'hui, TeX-XeT est intégré à pdf\LaTeX{}. +Pour avoir l'option « \TeX{} de droite-à -gauche », il faut l'activer en définissant +\texttt{$\backslash$TeXXeTstate=1}. +L'effet est de rendre ainsi actives les balises +\texttt{$\backslash$beginL} \textit{pour le texte de gauche à droite} \texttt{$\backslash$endL}, ainsi que +\texttt{$\backslash$beginR} \textit{pour le texte de droite à gauche} \texttt{$\backslash$endR}. +Ces quatre balises sont celles qui ont été définies dans TeX-XeT. +\end{MAJ} +\subsection{ Fontes et codages}\label{fontcoda} +\indneg{\sl \small En bref :} D'une fonte à l'autre, d'un producteur à l'autre, +les caractères ne sont +que rarement à la même place ; ce que l'on exprime en disant : les codages de +fontes sont différents. C'est d'ailleurs le cas pour les fontes par défaut dans +\TeX, les {\it cm}, avec lesquelles on obtient des images de caractères ({\it glyphes}) +différentes en commutant, par exemple, au style \texttt{tt}. Le codage très particulier +des {\it cm} est appelé \texttt{OT1} dans \LaTeX. Par défaut \LaTeX{} fonctionne avec ce +codage ; il n'est donc pas nécessaire de lui préciser quoi que ce soit si on +l'utilise ainsi. +Depuis la création de la norme dite de Cork, de nouvelles fontes ont été +créées, telles les \textit{ec} dont le codage est appelé \texttt{T1} dans \LaTeX. Dans ce codage +figurent les glyphes de tous les caractères composés français. Quelques polices + de caractères (de plus en plus) \maj sont codées selon cette norme. + +\indneg{\TeX\sl nique :} +Si on fait appel à des fontes codées \texttt{T1} il faut le préciser à \LaTeX{} : +\begin{center} +\fbox{\makebox[0.5\textwidth][l] {\texttt{$\backslash$usepackage[T1]\{fontenc\}}}} +\end{center}%%\usepackage[T1]{fontenc} +Dans ce cas \LaTeX{} fera appel, par défaut, aux fontes \textit{ec} pour le mode texte +et aux fontes \textit{cm} pour le mode mathématique. +Les fontes PostScript peuvent être recodées en \texttt{T1} (voir notamment les +logiciels +\linkandfootnote{fontinst}{fontinst}{http://www.tug.org/applications/fontinst/}% +%fontinst13 1.3 +ou +\linkandfootnote{dvi2ps}{dvi2ps}{http://www.tug.org/dvipsk/}% +%dvi2ps14 1.3 +ou +\linkandfootnote{afm2tfm}{afm2tfm}{http://www.tug.org/texinfohtml/dvips.html\#Makink-a-font-available}% +%afm2tfm15 +) +grâce au système de fontes virtuelles. +\subsubsection{Fontes virtuelles} +\indneg{\sl \small En bref :} Certaines fontes sont, en effet, virtuelles parce qu'elles n'existent pas. +Dans la pratique cela veut dire que l'on fait appel, sous ce nom et à la place +%11. <>. +%12. <>. +%13. <>. +%14. <>. +%15. <>. +%4 +d'une fonte virtuelle, à d'autres fontes, bien réelles celles-ci. Pendant toute +une période où les fontes \emph{ec} n'existaient pas, les français ont utilisé des fontes +virtuelles (\textit{dm}) qui permettaient d'accéder à des caractères accentués et ainsi +de disposer d'une césure française correcte. Malheureusement ces fontes \textit{dm} +ne répondent à aucun standard et sont bien incomplètes, il n'est donc plus +très conseillé de les utiliser. Il existe aussi les fontes virtuelles \textit{ae} qui respectent +le standard mais n'offrent pas la panoplie complète des glyphes.\indpos + +La fonte virtuelle +\linkandfootnote{fourier-GUT}{fourier-GUT}%{http://mirror.ctan.org/pkg/fourier} +{http://mirror.ctan.org/fonts/fourier-GUT} +%fourier-GUT16 + fournit un ensemble complet pour le +français : +\begin{center} +\fbox{\makebox[0.5\textwidth][l]{\texttt{$\backslash$usepackage\{fourier\}}}} +\end{center}\indpos +%%\usepackage{fourier} + +La société +\linkandfootnote{YandY}{Y\&Y}{http://tug.org/yandy/} +%Y\&Y17 +a développé des fontes {\it em} qui adoptent encore un autre codage : LY1.\indpos + +L'extension +\linkandfootnote{MlTeX}{\tt mltex}{http://mirror.ctan.org/systems/generic/mltex} +%mltex6 +pour \LaTeX{} utilise, de façon interne, un autre codage : LO1. +\subsection{ Qu'est-ce que TDS ?} +\indneg{\sl \small En bref :} +\linkandfootnote{TDS}{TDS}{http://www.tug.org/tds} +%TDS18 +est une norme pour l'arborescence des fichiers utilisés dans +une installation \TeX. La structure proposée est commune à toutes les plate-formes +matérielles. On peut ainsi partager une même hiérarchie de fichiers de +données (styles, fontes, etc.) ou plusieurs entre différents systèmes d'exploitation, +tels \textsc{Unix}, Windows ou MacOS. Les formats (voir paragr. \ref{quoiFormat}) générés +à partir de compilateurs {\TeX} basés sur +\linkandfootnote{ web2c}{web2c}{http://www.tug.org/web2c} +%web2c4 +sont même utilisables, en +principe, depuis n'importe lequel des systèmes d'exploitations ; ils sont donc +indépendants de toute plate-forme logicielle. + +\indneg{\TeX\sl nique :} la hiérarchie de fichiers est appelée « \texttt{texmf} ». Il en existe au moins +une que l'on ne modifie jamais \texttt{(TEXMFMAIN=texmf)} car elle correspond à la +distribution officielle et une autre, locale \texttt{(TEXMFLOCAL=texmf-local)} que +l'on peut modifier à volonté. En cas de difficulté de gestion de ces hiérarchies +{\TeX} vous pouvez consulter avec intérêt le manuel d'% +\linkandfootnote{administration}{administration} +{http://daniel.flipo.free.fr/doc/tex-admin/TeX-admin.pdf}{ } +%administration19 +de Daniel Flipo. +\section{(La)\TeX{} et le français} +\indneg{\sl \small En bref :} qu'appelle-t-on {(La)\TeX} ou \pgLapdTeX{} ? +Ce logo à mi-chemin entre +\linkandfootnote{TeX}{\TeX} +{http://www.tug.org/whatis.html}{ } +et \linkandfootnote{LaTeX}{\LaTeX} +{http://www.latex-project.org/} +précise que l'on parle de \TeX{} comme de \LaTeX{} ou de tout +\linkandfootnote{autres}{autre} +{http://mirror.ctan.org/systems/}{ } +%autre 20 +ensemble de macro-instructions faisant appel à un moteur \TeX. +%16. </>. +%17. <>. +%18. <>. +%19. <>. +%20. <>. +%5 +\subsection{Est-ce que ça fonctionne bien en français?} +\indneg{\sl \small En bref :} Quel que soit le logiciel de traitement de texte, divers dispositifs sont +nécessaires et doivent correspondre à l'usage français : la césure des mots, les +caractères composés, la typographie, les usages des éditeurs, etc. Ces dispositifs +existent potentiellement dans \hbox{\pgLapdTeX} mais d'autres, tels que la correction +orthographique, ne peuvent pas en faire partie car \TeX{} est juste un compilateur +(de programme informatique) ; il n'agit pas au moment de la saisie. +Les fonctions de ce genre font partie des éditeurs (de fichiers ou de textes) +ou des traitements de textes usuels. Bien que {\pgLapdTeX} intègre l'essentiel des +dispositifs, certaines précautions d'usage ou certains préalables d'installation +(décrits dans ce document) sont nécessaires. Moyennant quoi {\pgLapdTeX} fonctionne +admirablement bien en français. +\subsection{ Césure et caractères composés} +\indneg{\sl \small En bref :} {\TeX} a été conçu avec une petite faiblesse : son incapacité à couper +(en bout de ligne) les mots contenant la primitive +\verb!\accent! +qui est utilisée +à chaque fois que l'on désire imprimer une lettre accentuée. Heureusement +divers contournements existent ; les deux principaux sont les suivants : + +\begin{itemize} +\item l'utilisation de {Ml\TeX} (voir paragr. \ref{qmltex}) ; +\item l'utilisation de polices de caractères contenant tous les caractères composés +nécessaires au français : les fontes \textit{ec} ou les fontes \textit{lmodern}, au +codage \texttt{T1}, répondent à ce critère (mais il en existe bien d'autres). +\end{itemize}\indpos + +À condition d'avoir choisi l'une de ces deux possibilités, \LaTeX{} offre alors, +à ce niveau, tous les dispositifs nécessaires au français ; il faut éventuellement +lui préciser aussi le codage du texte d'entrée (voir paragr. \ref{inenco}) et celui des +fontes (voir paragr. \ref{soncodent}). + +\indneg{\TeX\sl nique :} rappelons que ces codages sont précisés comme suit : +\begin{center} +\fbox{\parbox{0.6\textwidth} +{\texttt{$\backslash$usepackage[}\textit{codage\_d'entrée}\texttt{]\{inputenc\}}\\[.5ex] +\texttt{$\backslash$usepackage[}\textit{codage\_des\_fontes}\texttt{]\{fontenc\}}}} +\end{center} + +\subsection{ Caractères français} +\indneg{\sl \small En bref :} Celui qui publie en français utilise un jeu de caractères adapté à la langue. Chaque +caractère a une position alphabétique. Lorsque l'on réalise des index et des +bibliographies, il est d'usage de respecter l'ordre alphabétique français. +On pourra consulter le + \linkandfootnote{docja}{document de Jacques André} +{http://jacques-andre.fr/faqtypo/unicode/alpha-fr.pdf} sur le sujet. +%21. <>. +%6 + +\indneg{\TeX\sl nique :} Voici donc le jeu de caractères exact dans l'ordre alphabétique :\\ +\rule{0pt}{1ex}\\ +\fbox{\begin{tabular}{*{21}{c@{\hspace{1.4ex}}}} +a&A&à &À&â&Â&æ&Æ&b&B&c&C&ç&Ç&d&D&e&E&é&É&è\\ +È&ê&Ê&ë&Ë&f&F&g&G&h&H&i&I&î&ÃŽ&ï&Ã&j&J&k&K\\ +l&L&m&M&n&N&o&O&ö&Ö&Å“&Å’&p&P&q&Q&r&R&s&S&t\\ +T&u&U&ù&Ù&û&Û&ü&Ãœ&v&V&w&W&x&X&y&Y&ÿ&Ÿ&z&Z\\ +\end{tabular}} +\subsection{Motifs français de césure}\label{motfrahup} +\indneg{\sl \small En bref :} {\TeX} peut couper les mots français selon l'usage si son format (voir +paragr. \ref{quoiFormat}) qui a été créé avec \texttt{initex} +ou \texttt{virtex} contient une table des +motifs français de césure. L'association GUTenberg est le garant de la validité +de cette table.\indpos + +Le fichier correspondant + \linkandfootnote{frhyphCtan}{\tt frhyph.tex} +{http://mirror.ctan.org/language/hyphenation/} +%{http://ctan.tug.org/language/hyphenation/}% +%(frhyph.tex) 22 +est utilisé dans toutes les distributions +francisées ; il est aussi accessible sur les serveurs +\linkandfootnote{frhyphCtan}{\tt ctan} +{http://mirror.ctan.org/language/hyphenation/frhyph.tex} +% ctan23 + Mais dans la distribution {\it eFrench} est aussi incluse +une extension en $\beta$test de \texttt{frhyph.tex}, +nommée \linkandfootnote{frhyph1}{\texttt{frhyph1.tex}} +{http://www.efrench.org/hyphen/frhyph1.tex} + et proposée par Bernard Gaulle. + +Ces motifs français de césure ont été mis au point tout au long des années ; +ils sont actuellement le meilleur compromis pour appliquer une coupure correcte +de mots dans un document français. Il est donc fortement conseillé de +faire confiance à ces motifs de césure et de n'appliquer qu’exceptionnellement +des modifications de césure ponctuelles dans le document lui-même ou dans +un fichier séparé, mais jamais dans les fichiers officiels précités. + +Pour mieux connaître et comprendre ces motifs de césure on consultera +l'article \cite{cesures} publié dans les Cahiers GUTenberg. + + +\indneg{\TeX\sl nique :} Le fichier des motifs français de césure est chargé automatiquement,\begin{MAJ} +à l'installation de la langue \texttt{french} dans le moteur (Mik\TeX{} ou \TeX Live, par exemple). +Ceci se fait en deux phases : +\begin{enumerate} +\item le chargement dans le système (Mik\TeX{} , \TeX Live, ...) d'une langue, que ce soit +\texttt{french} ou une autre, adapte le fichier \texttt{language.dat} en y incorporant +les dénominations les fichiers de césure correspondants. +\item la partie de \textit{ babel} (voir paragr. \ref{forbabel}) qui est est incorporée +au moteur {\LaTeX} charge les fichier de césure selon le contenu de \texttt{language.dat}, +sans que \textit{ babel} soit invoqué explicitement. +\end{enumerate} +Remarquons que c'est aussi à cause de ce mécanisme qu'il n'est plus +nécessaire de créer les formats \texttt{fr}...\texttt{tex} . +\end{MAJ} +%la création du format (voir paragr. 1.3) soit par hyconfig.tex25 de la +%distribution FrenchPro 24 ou +%e fichier de configuration language.dat26 : +%22. <>. +%23. <>. +%24. <http://frenchpro6.com/frenchpro/french/initex/>. +%25. <http://frenchpro6.com/frenchpro/french/initex/>. +%7 +%le fichier de configuration language.dat26 : +Voici à titre documentaire la partie de \texttt{language.dat} définissant les césures de la langue française :\\[0.5ex] +\begin{minipage}{12cm} +ici précédée par l'anglais \\[0.5ex] +\fbox{ +\begin{minipage}{11cm} +\tt +\%==============================================/ \\ +\% Name~~~| patterns ~| exceptions | ~ encoding / \\ +\%==============================================/ \\ +usenglish ushyph.tex \% this is the original ~ ~/ \\ +\rule{0pt}{1pt} ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ \% Don. Knuth's hyphenation/ \\ +=english ~enhyph.tex ~enhyphex.tex \% ~ ~ ~ ~ ~ / \\ +french ~~ frhyph.tex ~frhyphex.tex \% ~ ~ ~ ~ ~ / \\ +=patois ~ \% ~ ~ ~ ~ ~\% ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / \\ +=acadien ~\% ~ ~ ~ ~ ~\% ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ / \\ + german ~ ~dehypht.tex\% traditional german ~ ~ ~/\\ +\vdots +\end{minipage}\\[1ex] +}\\[1ex] +et suivie de l'allemand traditionnel et d'autres langues ... +\end{minipage} +\indpos +%...celui de + +Il est à noter que la césure d'un mot est fortement liée à la fonte utilisée +et aussi au codage (voir paragr. \ref{fontcoda}) de cette fonte. Heureusement le fichier +des motifs français est indépendant des codages de fontes usuels, tels que \texttt{T1} + (préférable) et \texttt{OT1}. +\subsection{ Faut-il saisir avec un clavier français ?} +\indneg{\sl \small En bref :} Le clavier doit, avant tout, vous être familier. +Que la disposition des touches soit française +(\texttt{AZERTY}) ou autre (en général \texttt{QWERTY}, en Suisse \texttt{QWERTZ}) +n'est pas vraiment un problème pour +\pgLapdTeX. Il est souhaitable que l'éditeur de document utilisé facilite la saisie +des éléments français répétitifs dans vos textes. C'est le cas des caractères +composés. Si vous ne disposez pas de tous les caractères composés au clavier, +il faut alors que l'éditeur accepte des combinaisons de touches permettant de +les afficher à l'écran sous leur forme normale. +%Si ce n'est pas le cas vous pouvez +%configurer cela vous même, facilement, grâce à l'extension keyboard (voir +%paragr. 2.7) de FrenchPro. + +\indpos Avec \LaTeX, par défaut, vous êtes supposé saisir de l'{\sc ascii} (7-bits), ce qui +correspond aux possibilités du clavier \texttt{QWERTY} des anglo-saxons. Comme il y a +de fortes chances pour que ce ne soit pas votre cas ou du moins que vous ne +le souhaitiez pas, vous devrez le préciser en nommant votre codage d'entrée +(voir ci-après). +\subsection{Quel codage d'entrée faut-il préciser à \LaTeX?} +\label{inenco} +\indneg{\sl \small En bref :} Le codage d'entrée de votre texte saisi ({\it input encoding} en anglais) +peut être spécifié au moyen de l'extension \textit{inputenc} +(standard \LaTeX). +% ou keyboard (voir paragr. 2.7) de FrenchPro. L'intérêt de +%l'un ou de l'autre est différent (voir paragraphe suivant). +%26. <http://frenchpro6.com/frenchpro/french/inputs/french/>. +%8 + +\indneg{\TeX\sl nique :} Par défaut, \LaTeX{} est chargé avec le codage d'entrée {\sc ascii} de la façon +suivante :\indpos +\begin{center} +\fbox{\parbox{0.5\textwidth} +{\texttt{$\backslash$usepackage[ascii]\{inputenc\}}}} +\end{center} +%\usepackage{inputenc} +\begin{MAJ} + +Le codage \textsc{utf-8} est aujourd'hui présent pratiquement sur tous les systèmes. +Afin de rendre vos fichiers compatibles sur plusieurs machines, +c'est la meilleure solution. +Vous choisissez alors pour vos sources \pgLapdTeX ce code : +\begin{center} +\fbox{\parbox{0.5\textwidth} +{\texttt{$\backslash$usepackage[utf8]\{inputenc\}}}} +\end{center} +\end{MAJ} + +Si vous êtes sous Windows le codage par défaut est \texttt{ansinew} ; il vous +faudra alors coder : +\begin{center} +\fbox{\parbox{0.5\textwidth} +{\texttt{$\backslash$usepackage[ansinew]\{inputenc\}}}} +\end{center} +%\usepackage[ansinew]{inputenc} +%%ou %\usepackage[ansinew]{keyboard} +\begin{MAJ} +Il faut aussi savoir que quelques caractères bien utiles au français +ont été omis dans le codage \textsc{iso-latin-1}, comme le e dans l'o (Å“, Å’), +ce qui a été corrigé dans \textsc{iso-latin-9}. +Malgré tout \textsc{utf-8} est préférable, maintenant que Windows +le supporte aussi (de mieux en mieux). L'éditeur gratuit \textit{Notepad++} +permet sous Windows de faire passer un texte d'un codage à l'autre très facilement. +\end{MAJ} + +Si vous êtes sur un Macintosh, le codage Apple est acceptable en français ; +codez alors : +\begin{center} +\fbox{\parbox{0.5\textwidth} +{\texttt{$\backslash$usepackage[applemac]\{inputenc\}}}} +\end{center} +%\usepackage[applemac]{inputenc} +%%ou %\usepackage[applemac]{keyboard} +\begin{MAJ} +Si enfin vous êtes sous \textsc{Unix} (ou \textsc{Linux}), le codage le plus adéquat est \textsc{utf-8} +qui est le codage par défaut de ces plateformes. +\end{MAJ} + +%celui qui répond +%au nom de iso-latin-9 ; si vous ne l'avez pas avec \LaTeX{} vous pouvez utiliser +%le codage decmulti qui est très proche ou sinon l'iso-latin1. Vous pouvez +%alors coder comme suit : +%soit %\usepackage[latin9]{inputenc} +%soit %\usepackage[decmulti]{inputenc} +%soit %\usepackage[latin1]{inputenc} +%soit enfin %\usepackage[latin9]{keyboard} +%Le codage +%iso-latin-9 est proposé en standard avec l'extension keyboard (voir +%paragr. 2.7) de FrenchPro.r +%Un autre codage se généralise actuellement ; il devient progressivement le +%codage par défaut dans les systèmes d'exploitation, il s'agit du codage utf8 +%issu d'unicode. Vous pouvez le coder comme suit : +%soit %\usepackage[utf8]{inputenc} +%soit enfin %\usepackage[utf8]{keyboard} +%D'autres codages existent, reportez-vous à la documentation \LaTeX{} ou à +%celle de FrenchPro (voir paragr. 2.11). +%2.7 Faut-il utiliser l'extension keyboard à la place de +%inputenc ? +%\indneg{\sl \small En bref :} Il y a de nombreux avantages (et certainement des inconvénients) à +%utiliser l'extension keyboard 27, cela est expliqué dans la documentation de +%l'extension FrenchPro (voir paragr. 2.11). Vous pouvez sans crainte particuli` +%ere remplacer inputenc par keyboard. Dans un environnement mltex6 elle +%remplace à la fois inputenc et mltex. Cela étant dit, si votre format (voir +%27. <http://frenchpro6.com/frenchpro/french/inputs/>. +%9 +%paragr. 1.3) est entièrement francisé avec FrenchPro vous n'avez, a priori, +%pas besoin de faire appel à cette extension tant que vous ne changez pasr de +%codage d'entrée dans vos documents car FrenchPro fait déjà appel à l'extension +%keyboard ou plutôt au configurateur kbconfig.tex28 à la création du +%format (voir paragr. 1.3). +\subsection{Peut-on avoir son propre codage d'entrée ?} +\label{soncodent} +\indneg{\sl \small En bref :} oui, mais cela est fortement déconseillé si vous devez transmettre votre +document source à des tiers inconnus. + +\indneg{\TeX\sl nique :} Avec l'extension \textit{inputenc} (voir paragr. 2.6) il vous faudra définir +un fichier personnel contenant la description des 256 caractères possibles de +votre codage perso ; c'est un peu fastidieux si vous voulez changer beaucoup +de caractères. +\textit{FrenchPro} proposait l'extension \textit{keyboard}. + +\begin{MAJ} +L'option \textit{keyboard} n'a pas été reprise par \textit{eFrench}, + la prolifération des codages d'entrée pour le français s'étant +drastiquement tassée et \textsc{utf-8} offrant une palette de caractères dépassant largement +la limite de 256 imposée par un codage en 8 bits. +\end{MAJ} +%Grâce à l'extension keyboard (voir paragr. 2.7) de la distribution French-r +%Pro (voir paragr. 2.11) vous pouvez déclarer votre propre codage d'entrée ; il +%suffit d'éditer un fichier de configuration et d'entrer les caractères souhaités, +%par exemple : +%%------ Tableau des caracteres accentues de mo/ +%% \______________________________________/ +%% |___1__|___2__|___3__|___4__|___5__|___/ +%\ac[ \‘ | \' | \" | \^ | {\c} | ] / +%\noms| gr | ac | um | hat | c | / +%%---------------------------------------------/ +%[a | à | . | ¨a | â | . | ] / +%\hex| ^^e0 | . | ^^e4 | ^^e2 | . | / +%[A | à | . | ¨A | â | . | ] / +%\hex| ^^c0 | . | ^^c4 | ^^c2 | . | / +%%---------------------------------------------/ +%Cette extension keyboard est utilisable soit au chargement d'un document +%soit au moment de la création du format (voir paragr. 1.3) ce qui revient à +%appliquer, par défaut, un même codage à tous les documents. Il est, cependant, +%toujours possible de changer de codage « à la volée » à l'intérieur d'unr +%document : +%%\usepackage{inputenc}1.3 +%ou %\usepackage{keyboard} +%... +%\inputencoding{nouveau_codage } +%ou \kbencoding{nouveau_codage } +%28. <http://frenchpro6.com/frenchpro/french/inputs/keyboard/>. +%10 +\subsection{Quel codage de police employer avec \LaTeX{} ?} +\indneg{\sl \small En bref :} Pour simplifier, il y a essentiellement deux codages de police utilisables +en français avec \LaTeX: \texttt{T1} ou \texttt{OT1} (voir paragr. \ref{fontcoda}).\indpos + +Le codage \texttt{OT1} étant la valeur par défaut en \LaTeX, rien n'est à préciser +dans le document. Mais il faut savoir que ce codage doit être employé +conjointement avec un format Ml\TeX (voir paragr. \ref{qmltex}) pour bénéficier de la +césure des mots accentués. +{\em Mais cette méthode est aujourd'hui dépassée.} + +Lorsqu'on dispose de fontes codées \texttt{T1}, comme les \textit{ec} ou les \textit{lmodern}, il +faut alors le préciser à \LaTeX, cf ci-dessous. + +\indneg{\TeX\sl nique :} Pour choisir un codage de fontes \texttt{T1} et utiliser les fontes associées par +défaut on codera : + +\begin{center} +\fbox{\parbox{0.5\textwidth} +{\texttt{$\backslash$usepackage[T1]\{fontenc\}}}} +\end{center}\indpos +%%\usepackage[T1]{fontenc} + +On notera que toutes les polices PostScript Adobe de base sont utilisables +en codage \texttt{T1} bien que des glyphes manquent pour certaines langues. Pour +utiliser une fonte PostScript de base de chez Adobe (\textit{Times} par exemple) +on fait appel, en général, à l'extension correspondante : + +\begin{center} +\fbox{\parbox{0.4\textwidth} +{\texttt{$\backslash$usepackage\{times\}}}} +\end{center}\indpos + +selon Bernard \textsc{Gaulle} toutefois, il est préférable de coder : +\begin{center} +\fbox{\parbox{0.4\textwidth} +{\texttt{$\backslash$usepackage\{pslatex\}}}} . +\end{center}\indpos +%%\usepackage{pslatex} + +Certaines extensions forcent un codage de fontes ; c'est, par exemple, le cas +de l'extension +\linkandfootnote{fourier-GUT}{fourier}{http://mirror.ctan.org/fonts/fourier-GUT} +%fourier 16 +qui utilise les fontes fourier-GUT et exige le codage +\texttt{T1}. + +\maj +%LO1 est le codage employé, en interne, lorsque l'on fait appel à l'extension +%MlTEX (voir paragr. 1.5) : +%%\usepackage{mltex} +%Si l'on dispose des fontes em (codées LY1) on fera appel à l'extension em : +%%\usepackage{em} + +\subsection{{\TeX} parle anglais... irrémédiablement !} +\indneg{\sl \small En bref :} L'essentiel des messages émis par \TeX{} réside dans un fichier spécifique +et rien n'empêche l'installateur de traduire ces messages en français, +même s'il est ensuite difficile de s'y retrouver dans la documentation de référence +qui est en anglais. Par ailleurs, il restera toujours quelques messages +en anglais qui font partie du programme \TeX{} lui-même. Ce qu'il faut aussi +savoir, à ce niveau, c'est que \TeX{} n'est qu'un moteur fait pour véhiculer des +programmes, des styles typographiques et des extensions ; toutes sortes de +choses qui existent en grand nombre et sont toutes (ou presque) développées +avec des messages en anglais. Par ailleurs, tous les messages de \LaTeX{} sont +aussi en anglais. Dans ces conditions, une francisation du dialogue \TeX{} et de +ses extensions semble donc totalement illusoire... +%11 + +\indneg{\TeX\sl nique :}\indpos Toutefois, Bernard Gaulle a créé une extension \LaTeX{} qui permet de fournir des messages +dans la langue de son choix ; il s'agit de l'extension \emph{msg} (% +\linkandfootnote{doctecmsg}{ documentation technique} +{http://svn.tuxfamily.org/viewvc.cgi/efrench\_efrenchsources/trunk/doc/msg.pdf}% +). +%29. <http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/doc/msg.pdf>29 +Ainsi, tout \LaTeX{} pourrait, en théorie, parler autre chose que +l'anglais. La première application de ce système de localisation s'est faite, +bien entendu, dans \textit{FrenchPro} qui ainsi « parle » plusieurs langues. +Cette extension a été reprise dans \textit{eFrench}. + +\subsection{Qu'est-ce que \textit{FrenchPro (eFrench)} ?}\label{qeFrenchPro} + +\indneg{\sl \small En bref :} Au fur et à mesure du temps (depuis 1989) et aidés par les utilisateurs +français de \TeX{} nous (Bernard Gaulle et al.) avons mis en Å“uvre divers ajustements des paramètres +de \TeX{} de façon à obtenir un aspect typographique plus conforme à l'usage, +en France et dans le monde francophone. Ces modifications, éparses et parfois +divergentes, ont été collectées et normalisées par votre serviteur +(Bernard Gaulle, voir page \pageref{prempage}) +pour en faire un style unique, robuste et de qualité, appelé à l'origine le +{\it style french}\footnote{ Le \textit{style french} qui fonctionnait aussi très bien avec plainTEX et \LaTeX{} 2.09 ne fonctionne +plus qu'avec \LaTeX{} 2$\epsilon$ depuis la version 4 de \textit{french}} +% ; voir toutefois les explications au paragr. 5.5.} +Il se décline maintenant en deux extensions : +\begin{MAJ} + \textit{eFrench} (successeur de \textit{FrenchPro}) et +\texttt{frenchle}\cite{frenchle} ; \textit{FrenchPro} était distribuée en \textit{shareware}, \textit{eFrench} +et \texttt{frenchle} sont des logiciels libres (LPPL).\\[2ex] +\end{MAJ} + +\noindent +%\subsubsection*{frenchle} +{\Large \it frenchle}\\[2ex] +\indneg{\sl \small En bref :} cette extension a pour objectif de réaliser un maximum de francisation +avec un minimum logiciel et sans connaissance particulière de la part de +l'utilisateur (% +\linkandfootnote{docfrenchle}{voir la documentation provisoire} +{http://mirror.ctan.org/language/french/e-french/doc/manuels/frenchle.pdf}% +%language/french/doc/frenchle.pdf}% +). +%voir la documentation 31 +\maj Cette extension supporte le français et l'anglais ; +elle est utilisable seule ou en option de \textit{babel}. Une petite extension \textit{babelfr} +est fournie avec \textit{frenchle} pour faciliter la francisation des autres extensions +utilisées dans le document.\\[1ex] + +\indneg{\TeX\sl nique :} Pour charger l'extension \textit{frenchle} il faut procéder comme suit : +\begin{center} +\fbox{\parbox{0.9\textwidth}{ +\texttt{$\backslash$usepackage\{frenchle\}} +\begin{flushright} +ou ~ \texttt{$\backslash$usepackage[frenchle]\{babel\}}\\ +ou plutôt ~ \texttt{$\backslash$usepackage[frenchle]\{babelfr\}} +\end{flushright} +}}\\[0.5ex] +\end{center}\indpos + +ou mieux lorsqu'on utilise \textit{babel} (voir paragr. \ref{forbabel}) : +\begin{center} +\fbox{\parbox{0.9\textwidth}{ +\texttt{$\backslash$documentclass[french]}\{\textit {classe\_de\_document} \}\\ +\rule{0.4\textwidth}{0pt} \vdots + \begin{flushright} +\texttt{$\backslash$usepackage\{babelfr\}} +\end{flushright} +}}\\[4ex] +\end{center} +%\documentclass[french]{classe_de_document } +%... +%%\usepackage{babelfr} +\noindent +{\Large \it FrenchPro} ou plutôt son successeur {\Large \it eFrench}\\%[1ex] + +%30. +%31. <http://mirror.ctan.org/language/french/frenchle/frenchle.pdf>. +%32. <http://frenchle.free.fr/>. +%33. <http://mirror.ctan.tug.org/language/french/>. +%12 +\indneg{\sl \small En bref :} cette extension permet un francisation professionnelle de \LaTeX. Une +distribution logicielle spécifique est associée à chaque système d'exploitation +sur le serveur +\linkandfootnote{distribefr}{efrench} +{http://www.efrench.org/distributions/} +%{http://mirror.ctan.org/language/french/frenchle/frenchle.pdf}% + ; elle réside aussi sur +\linkandfootnote{ctanefr}{\tt ctan} +{http://mirror.ctan.org/language/french/e-french/}.\indpos + +Le fichier \linkandfootnote{ctanmanuefr}{\tt efrench.pdf} +{http://mirror.ctan.org/language/french/e-french/doc/manuels/efrench.pdf} + est à la fois un mode d'emploi et un manuel de référence. +Vous y trouverez de nombreuses commandes (plus de 170) permettant +une personnalisation maximum\cite{personnalis} de vos documents (voir à ce sujet un descriptif +des fonctions de personnalisation dans le document +\linkandfootnote{artET98pdf}{\tt\hbox{artET98.pdf}} +{http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/doc/artET98.pdf?view=co} +). + +\textit{FrenchPro} comme désormais \textit{eFrench} jouent essentiellement 7 rôles : +\begin{enumerate} +\item coupure correcte des mots français ; +\item traduction en français des différents libellés imprimés par \LaTeX; +\item possibilité d'utiliser plusieurs langues dans un même document ; +\item mise en page adaptée à l'usage français ; +\item micro-typographie (essentiellement la ponctuation) adaptée au français ; +\item apport d'un ensemble supplémentaire de macro-instructions généralement +nécessaires dans un document français (dont une liste d'abréviations +usuelles, des lettrines, etc.) ; +\item affichage personnalisé des messages à l'écran. +\end{enumerate} +Ces rôles de l'extension \textit{eFrench} %FrenchPro + sont mis en oeuvre essentiellement par deux fichiers +(\texttt{french.sty} et \texttt{fenglish.sty}) mais la distribution comprend de nombreux +autres fichiers. Parmi ceux-ci il faut citer le fichier de césure français \texttt{frhyph.tex} + (voir paragr. \ref{motfrahup}). D'autres encore facilitent l'installation, la mise en place +du mécanisme de césure, la définition du codage à la saisie, etc. Divers tests permettent +de s'assurer du bon fonctionnement de l'ensemble. + +L'extension \textit{eFrench}\cite{frenchpro} est utilisable avec l'ensemble des compilateurs courants +\TeX{} ou les +\linkandfootnote{autres}{platesformes} +{http://mirror.ctan.org/systems/}{ } +%platesformes 20 +d'exploitation mais aussi avec les options +Ml\TeX (voir paragr. \ref{qmltex}) et \texttt{TeX--XeT} (voir paragr. \ref{qtexxet}). + +\indneg{\TeX\sl nique :} \indpos Une fois installée dans le système, l'extension \textit{eFrench} peut être +appelée de telle façon, suivant qu'elle est utilisée avec l'extension multilingue +\textit{mlp} (voir paragr. \ref{latexmullin}) ou avec \textit{babel} : +\begin{center} +\fbox{\parbox{0.9\textwidth}{ +\texttt{$\backslash$usepackage[french]\{mlp\}} +\begin{flushright} +ou ~ \texttt{$\backslash$usepackage[french]\{babel\}} +\end{flushright} +}}\\[0.5ex] +\end{center} + +Si l'on souhaite qu'un maximum d'extensions bénéficient de la francisation +il est préférable de coder plutôt : +\begin{center} +\fbox{\parbox{0.9\textwidth}{ +\texttt{$\backslash$documentclass[french]}\{\textit {classe\_de\_document} \}\\ +\rule{0.4\textwidth}{0pt} \vdots \\ + \texttt{$\backslash$usepackage\{mlp\}} \hfill +ou ~ \texttt{$\backslash$usepackage\{babel\}} +}}\\[4ex] +\end{center} +En conjugaison avec \textit{babel}, seuls quelques dispositifs +sont actuellement inopérants (comme par exemple l'ordre +\texttt{$\backslash$frhyphex}) mais +dans ce cas \textit{eFrench} n'est plus une extension autonome mais seulement +une option de l'extension \textit{babel}, ce qui témoigne de la différence de fonctionnement. +Si on désire utiliser \textit{eFrench} entièrement de façon native, dans +un environnement multilingue on fera plutôt appel à l'extension \textit{mlp} +(voir paragr.\ref{latexmullin}). + +%\documentclass[french]{classe\_de\_document } +%... +%%\usepackage{mlp} ou %\usepackage{babel} +%34. <http://frenchpro6.com/french.html>.efrench.org +%35. <http://mirror.ctan.tug.org/language/french/frenchpro/>. +%36. <http://frenchpro6.com/frenchpro/french/ALIRE.pdf>. +%37. <http://frenchpro6.com/frenchpro/french/doc/artET98.pdf>. +%13 +\subsection{ Y a-t-il d'autres extensions pour le français ?} +L'extension \textit{babel}, qui permet d'utiliser une grande variété de langues +dans un même document, propose une option de francisation « +\linkandfootnote{frenchb}{\textit{french\textbf{b}}} +{http://daniel.flipo.free.fr/frenchb/frenchb-doc.pdf} ». +Cette option, développée par Daniel \textsc{Flipo}, apporte des facilités de microtypographie +ainsi que, bien entendu, de traduction en français. Elle est en +tout point, très comparable, à l'extension \texttt{frenchle} dont elle s'inspire\footnote{% +« I have borrowed many ideas from Bernard's file. » (frenchb v1.1 revised +1996/05/31)}. +Il faut savoir que \hbox{\textit{french\textbf{b}}} n'est pas, pour des raisons historiques et de +cohérence, l'option prédominante avec \textit{babel} dans \textit{eFrench} (ou avec \textit{babelfr} +de \textit{frenchle}) quand on précise l'option \textit{french} au lieu de \textit{frenchb}. Par ordre +de préférence, c'est \textit{eFrench} (\texttt{french.sty}) qui est chargé, à défaut ce sera \texttt{frenchle}, +%\texttt{frenchb} si aucune des précédentes n'est présente. +ou \texttt{frenchb} sinon. + +\indneg{\TeX\sl nique :} Pour bien choisir l'extension de francisation que l'on désire employer +avec \textit{babel}\/ il suffit que vous précisiez la bonne option : +\begin{center} +\fbox{\parbox{0.9\textwidth}{ +\begin{flushright} +soit ~ \texttt{$\backslash$usepackage[frenchle]\{babel\}}\\ +mais plutôt ~ \texttt{$\backslash$usepackage[frenchle]\{babelfr\}} +\end{flushright} +soit ~ \texttt{$\backslash$usepackage[frenchb]\{babel\}} +\begin{flushright} +soit enfin ~ \texttt{$\backslash$usepackage[efrench]\{babel\}} +\end{flushright} +}}\\[4ex] +\end{center} +%FL soit %\usepackage[frenchle]{babel} +%FL mais plutôt %\usepackage[frenchle]{babelfr} +%soit %\usepackage[frenchb]{babel} +%FL soit enfin %\usepackage[frenchpro]{babel} +\section{ Autres outils français} +\Subsubsection*{Guillemets aeguill} +\indneg{\sl \small En bref :} Cette extension +\linkandfootnote{aeguill}{\it aeguill} +{http://mirror.ctan.org/macros/latex/contrib/aeguill} +dûe à Denis {\sc Roegel} apporte un choix de +fontes supplémentaire pour l'impression des guillemets français (fait appel à +l'extension \texttt{ae}) +\Subsubsection*{Dictionnaire} +\indneg{\sl \small En bref :} Réalisé par Christophe \textsc{Pythoud}, et nommé +\linkandfootnote{dictfran}{francais-GUTenberg} +{http://cahiers.gutenberg.eu.org/cg-bin/article/CG_1998___28-29_252_0.pdf} %41 + ce dictionnaire élaboré, fonctionne avec le vérificateur d'orthographe {\sc ispell} (et donc +ne peut être utilisé que sur les systèmes pour lesquels {\sc ispell} est disponible). +\Subsubsection*{Classe lettre} +\indneg{\sl \small En bref :} La classe +\linkandfootnote{lettreobsgen}{\it lettre} +%{http://www.pirbot.com/mirrors/ctan/macros/latex/contrib/lettre/lettre.pdf}%42 +{http://mirror.ctan.org/macros/latex/contrib/lettre/} +, de Denis \textsc{Mégevand}, est une adaptation du style +lettre développé à l'origine à l'Observatoire de Genève. Elle permet de composer +avec \LaTeX{} des lettres ou des téléfax dont l'allure correspond mieux +aux usages francophones. + +\begin{MAJ} +Elle fonctionne parfaitement avec \textit{frenchb} (et \textit{babel}). +Elle est désormais compatible avec le style \emph{french} de {\sc eFrench}. +%Un défi supplémentaire pour notre équipe ! + +\end{MAJ} +\Subsubsection*{Bibliographie et index} +%38. <>. +%39. +%40. <>. +%41. <>. +%42. <>. +%14 +Il existe dans \textit{eFrench} un système de traduction des libellés utilisés pour +une bibliographie. D'autres contributions à la typographie française existent\cite{lepetity} sur +\linkandfootnote{bibctan}{\tt ctan} +{http://mirror.ctan.org/biblio/bibtex/}. + +\indneg{\TeX\sl nique :} pour trier correctement les entrées bibliographiques on utilisera de +préférence la version 8-bits de BiB\TeX{} : \textit{bibtex8}, et \textit{x\r{\i}ndy} pour l'index. +\section{ \LaTeX{} multilingue}\label{latexmullin} +\indneg{\sl \small En bref :} L'extension +\linkandfootnote{babel}{\it babel} +{http://mirror.ctan.org/macros/latex/required/babel/} + de \LaTeX{} permet de composer des documents faisant +appel à de nombreuses langues de la planète, écrites ou imprimées. +Il existe d'autres extensions multilingues, dont les extensions fournies avec \textit{eFrench} +et \texttt{frenchle} qui sont conçues pour fonctionner dans un environnement multilingue +(avec par défaut le français et l'anglais) mais aussi l'extension \textit{mlp}.\\ + +{\Large\textit{L'extension mlp}}\\ + +\indneg{\sl \small En bref :} Il s'agit d'une extension multilingue qui permet une cohabitation +harmonieuse d’extensions linguistiques autonomes ; elle +fait partie intégrante du paquet +% est distribuée avec +\hbox{\textit{eFrench}}. + +\indneg{\TeX\sl nique :} On peut faire appel à +\linkandfootnote{mlp}{\it mlp} +{http://svn.tuxfamily.org/viewvc.cgi/efrench\_efrenchsources/trunk/inputs/mlp/} +de la façon suivante : +\begin{center} +\fbox{\parbox{0.75\textwidth} +{\tt $\backslash$usepackage[english,german,french]\{mlp\}}}\\[2ex] +\end{center} +%%\usepackage[english,german,french]{mlp} +ou alors ainsi : +\begin{center} +\fbox{\parbox{0.75\textwidth} +{\tt $\backslash$usepackage[anglais,allemand,francais]\{mlp\}}} +\end{center} +%%\usepackage[anglais,allemand,francais]{mlp}\LaTeX +et dans les deux cas les parties en anglais, en allemand ou en français seront +composées selon ces styles. Pour passer d'une langue à une autre on code +\texttt{$\backslash$french} ou \texttt{$\backslash$english} ou \texttt{$\backslash$german} selon le cas.\indpos + +\begin{MAJ} +Remarquons toutefois que \textit{mlp} est nettement plus restreint que \textit{babel} dans +la variété des langues disponibles, à moins de mettre la main à la pâte et de +compléter la collection des fichier d'extension \texttt{.mlp} et des fichiers \texttt{mlp-*.sty}. +En contrepartie, cet environnement laisse à \textit{eFrench} toutes ses possibilités. +(voir vers la fin du paragr. \ref{qeFrenchPro}) +\end{MAJ} +\section{Questions relatives à \textit{eFrench}} +\subsection{Est-ce que \textit{eFrench} s'installe automatiquement ?} +\begin{MAJ} +\indneg{\sl \small En bref :} Si \textit{FrenchPro} oui, s'installait automatiquement, mais de manière différente +suivant les systèmes d'exploitation, concernant \textit{eFrench} l'installation a été +grandement simplifiée et il suffit de placer la structure du paquet au bon endroit +dans la structure \textit{TDS} +et de lancer un \texttt{texhash} (ou son équivalent dans Mik\TeX{}, +voir plus bas, fin du paragr. \ref{mikroot}) +concernant cet endroit et le but est atteint. +%est +%Avant toute chose, veuillez consulter +%les informations concernant le moteur TEX47 que vous utilisez, pour +%connaître les détails éventuels liés à votre compilateur. +%43. <>. +%45. <>. +%46. <>. +%47. <http://frenchpro6.com/frenchpro/french/engines/>. +%15 +%\indneg{\TeX\\\sl nique :} +%Avec Windows vous disposez de deux installateurs : +%– l'un pour le moteur fpTEX48 qui est en fait un moteur teTEX49\LaTeX +%adapté à win32.\texttt{frenchb} +%Pour lancer l'installation placez-vous dans le répertoire french et +%tapez :\LaTeX +%install +%Choisissez ensuite de préférence l'installation « à la unix » qui +%est un peu plus longue mais beaucoup plus efficace (et surtout\indneg{\TeX\\\sl nique :} +%complète). +%– pour le moteur MikTEX50 vous pouvez procéder de la même mani` +%ere ou sinon placez-vous dans le répertoire french et tapez : +%mikinstall +%Vous disposez, bien entendu, des procédures « uninstall » correspondantes. +%Avec un unix le moteur de prédilection est celui de teTEX49. Pour installer +%FrenchPro dans un environnement gnu il suffit de se placer dans le +%répertoire french et de taper : +%gmake -f GNUmakefile +%Voir le fichier GNUmakefile51 pour une éventuelle personnalisation. +%Dans un environnement non-gnu vous disposez d'un makefile.gen52 +%qu'il suffit d'adapter à votre configuration et de sauvegarder sous le +%nom de makefile. Ensuite vous demandez simplement son exécution : +%make\textsc{Unix} +%Avec MacOS si vous utilisez une version de type unix (c'est-à -dire 10)\LaTeX +%il suffit de vous reporter à la description précédente, sinon veuillez lire +%la petite notice d'installation fournie qui vous expliquera ce qu'il reste +%à faire 53. +%5.2 Qu'est-ce qu'un format francisé pour FrenchPro ? +%\indneg{\sl \small En bref :} Pour FrenchPro un format est entièrement francisé lorsque les motifs +%de césure (voir paragr. 2.4) du français ont été installés et que le codage +%\indneg{\TeX\\\sl nique :} +%d'entrée (voir paragr. 2.5) du texte y a été défini. +%48. <http://frenchpro6.com/frenchpro/french/engines/fptex.pdf>.1.3 +%49. <http://frenchpro6.com/frenchpro/french/engines/tetex.pdf>. +%50. <http://frenchpro6.com/frenchpro/french/engines/miktex.pdf>. +%51. <http://frenchpro6.com/frenchpro/french/GNUmakefile>. +%52. <http://frenchpro6.com/frenchpro/french/makefile.gen>. +%53. La distribution de FrenchPro pour MacOs 9 ou inférieur est définitivement gelée. +%16 +%5.3 Peut-on mettre toute la francisation dans\textsc{Unix} le format? +%\indneg{\sl \small En bref :} Qu'il s'agisse de FrenchPro ou de frenchle on utilise un format francis +%é et on aurait envie de ne plus avoir à coder le %\usepackage{french...} ; +%malheureusement cela n'est pas possible dans la version actuelle. +%5.4 Pourquoi des distributions de FrenchPro pour Unix, +%Mac et Windows? +%\indneg{\sl \small En bref :} Il existe effectivement des distributions différentes, adaptées aux platesformes +%d'exploitation, tout simplement parce que d'une part les codages d'entr1.3 +%ée (utilisés dans divers documents source) sont différents mais aussi parce +%que les procédures d'installation et les configurations sont différentes. +%5.5 FrenchPro fonctionne-t-il avec plainTEX +%ou \LaTeX{} 2.09? +%\indneg{\sl \small En bref :} +%Non : +%FrenchPro, depuis la version 4, n'est plus conçu pour fonctionner +%avec plainTEX ni \LaTeX{} 2.09. +%Oui : +%il existe dans la distribution de FrenchPro (dossier obsolate) un +%fichier frplain.sty gelé à la version V3,51 qui fonctionne avec\{mltex\} +%plainTEX. Par ailleurs, à l'installation de FrenchPro le format +%plain francisé est créé automatiquement. +%Oui +%Il y a aussi dans la distribution de FrenchPro (dossier obsolate) +%un fichier frltx209.sty gelé à la version V3,51 qui fonctionne +%encore avec le très, très, très ancien \LaTeX{} 2.09. +%Ces deux derniers fichiers sont définitivement figés et ne seront plus mis +%à jour. Ils sont destinés à aider les personnes qui ont encore des fichiers nonforbabel +%convertis à \LaTeX. La distribution actuelle des fichiers de francisation permet +%donc d'utiliser à la fois plainTEX, \LaTeX{} 2.09 et \LaTeX{} mais seules les extensions +%pour \LaTeX, FrenchPro et frenchle, sont maintenues régulièrement à +%jour. +\subsection{Où installer \textit{eFrench} dans la hiérarchie \textit{TDS} ?} +\indneg{\TeX\sl nique :} Les fichiers de la distribution \textit{eFrench} sont à déposer de +préférence dans :\\ + .../texmf-local/french, où \\ + ... sera dépendant du système d'exploitation, +sous \textsc{Unix} par exemple ce pourra être {\bf$\tilde{ }$} (dossier personnel), +sous Windows on pourra simplement choisir C:$\backslash$. +La structure finale sera : \\[1ex] +\textit{user-space}/\texttt{texmf-local}/tex/french/...\\ +\textit{user-space}/\texttt{texmf-local}/tex/french/french.sty\\ +\textit{user-space}/\texttt{texmf-local}/tex/french/...\\ +\textit{user-space}/\texttt{texmf-local}/tex/french/french.msg\\ +\textit{user-space}/\texttt{texmf-local}/tex/french/...\\ +\textit{user-space}/\texttt{texmf-local}/tex/french/frenchle.sty\\ +%\textit{user-space}/\texttt{texmf-local}/tex/latex/...\\ +où \textit{user-space}/\texttt{texmf-local} est ~{\bf $\tilde{ }$}~/\texttt{texmf-local} sous \textsc{Unix} ; \texttt{C:$\backslash$texmf-local} +ou un choix personnel sous Windows, du genre +\texttt{C:$\backslash$Users$\backslash$}\textit{identificateur}\texttt{$\backslash$texmf-local}. +En plus, sous Windows, les dossiers sont introduits par $\backslash$ et non par / . +Sous Linux et \TeX Live, ne pas oublier l'annonce : +\begin{center} +\fbox{\parbox{0.4\textwidth} +{\tt \$texhash texmf-local}}\\[1ex] +\end{center} +alors que sous Windows et Mik\TeX, il faut déclarer le dossier défini (\texttt{C:$\backslash$texmf-local} par exemple) +sous {\sc Roots}\label{mikroot} et lancer {\sc Refresh FNDB}, qui sont des options d'administration de Mik\TeX. +\end{MAJ} +%L'installation proprement +%dite de ces fichiers est automatique (avec le script adapté à votre système +%17 +%d'exploitation) ; elle intervient à divers endroits de la hiérarchie tds (voir +%paragr. 1.8) : +%/texmf-local/doc/french/base/ +%/texmf-local/generic/hyphen/\{mltex\} +%/texmf-local/[ml]\TeX/french/base/ +%/texmf-local/mkindex/french/ +%/texmf-local/bibtex/french/ +%/texmf-local/[ml]\TeX/french/config/ +%/texmf-local/\TeX/\LaTeX/frenchle/ + +\indpos Pour \textit{eFrench}, vous effectuerez donc l'installation « à la main », + en suivant scrupuleusement les emplacements que nous avons indiqués. +%dans le fichier TDSfr.pdf 54 de la distribution. +\subsection{Peut-on mettre des commandes \textit{eFrench} avant\\ +le $\backslash${\tt begin\{document\}} ?} +\indneg{\sl \small En bref :} La documentation d'\textit{eFrench} précise +que « le style \textit{eFrench} ne +devient vraiment actif qu'après le $\backslash${\tt begin\{document\}} » ; on ne peut donc pas, +en principe, exécuter de commande \textit{eFrench} avant le $\backslash${\tt begin\{document\}} ; +sauf celles, en nombre très réduit qui peuvent agir sur tout le document. + +\indneg{\TeX\sl nique :} L'extension \textit{eFrench} déporte la définition même d'un grand nom\-bre +de commandes au moment du $\backslash${\tt begin\{document\}}. Les commandes ainsi définies +ne sont pas utilisables avant.\indpos + +Dans le cas d'\textit{eFrench}, quelques commandes très spécifiques peuvent +être utilisées avant, car elles modifient son comportement au +$\backslash${\tt begin\{document\}}. + Il en est ainsi de $\backslash${\tt frhyphex} pour charger un fichier de césures +exceptionnelles ou $\backslash${\tt usersfrenchoptions} qui permet de changer les options +par défaut de \textit{eFrench} comme dans cet exemple : +\begin{center} +\fbox{\parbox{0.9\textwidth} +{\tt $\backslash$usersfrenchoptions\{$\backslash$guillemetsinallfonts\}}}\\[1ex] +\end{center} +%\usersfrenchoptions\{$\backslash$ guillemetsinallfonts\} +où on a choisi une option différente pour les guillemets à la française. Grâce +à ce mécanisme \texttt{$\backslash$usersfrenchoptions} l'activation d'options personnelles +peut se faire à chaque changement de langue et donc initialement après le +\texttt{$\backslash$begin{document}}. Toute règle ayant une exception, ceci fonctionne de façon +différente avec \textit{babel} (voir paragr. \ref{forbabel}) ; consulter à ce sujet la +\linkandfootnote{ctanmanuefr}{documentation d'eFrench} +{http://mirror.ctan.org/language/french/e-french/doc/manuels/efrench.pdf}. %eFrench%\textit{eFrench} + +%54. <http://frenchpro6.com/frenchpro/french/TDSfr.pdf>.1.3 +%18 +\subsection{ Faut-il faire un format \textit{eFrench} ou un format \textit{babel} ?} +\label{forbabel} +\indneg{\sl \small En bref :} Que ce soit \textit{babel} +ou \textit{eFrench} (\textit{FrenchPro}), ni l'un ni l'autre n'exige de format +particulier mais chacun d'eux conseille de créer un format avec du matériel +spécifique, d'où le dilemme tant de fois discuté sur les news, par exemple + (\texttt{fr.comp.text.tex}) + ou sur la liste de discussion +\linkandfootnote{GUTenberg}{GUTenberg}{http://www.gutenberg.eu.org} + (\texttt{gut@ens.fr}). +%GUTenberg 12. +Rappelons +pour simplifier que les deux fonctionnent bien avec le matériel de l'autre, +c.-à -d. un format construit avec les fichiers d'\textit{eFrench} n'empêchera pas +d'utiliser \textit{babel} et réciproquement. +\begin{MAJ} +Il faut dire ici que l'insistance de Bernard \textsc{Gaulle}, +créateur de \textit{FrenchPro}, concernant les formats +n'est plus de mise. +Les installations récentes telles Mik\TeX{} ou \TeX Live offrent +les formats de base et les moyens de créer les autres. +\pgLapdTeX{} évolue dans le sens d'une simplification pour l'utilisateur et c'est tant mieux ! +\end{MAJ} +%La question à se poser lorsque l'on crée son +%format est donc : s'agit-il d'utiliser essentiellement babel ou FrenchPro ? et selon +%le cas on crée le format le plus adapté mais rien n'empêche d'avoir aussi +%plusieurs formats. Pour être complet, rappellons qu'il existe deux autres options +%de francisation, l'une frenchle31 et l'autre frenchb (voir paragr. 2.12) +%livrée en standard avec babel (et utilisable uniquement avec babel ). +%Cela répond à la question : FrenchPro ou babel ? maintenant il faut répondre +%à la question : FrenchPro et babel ? +%\indneg{\TeX\\\sl nique :} On peut utiliser FrenchPro avec babel de la façon suivante : +%%\usepackage[frenchpro]{babel} +%ou mieux : +%\documentclass[french]{classe_de_document }1.3 +%... +%%\usepackage{babel} +%sans perdre un poumon (comme disait quelqu'un), seuls quelques dispositifs +%sont actuellement inopérants (comme par exemple l'ordre \frhyphex) mais +%dans ce cas FrenchPro n'est plus une extension autonome mais seulement +%une option de l'extension babel, ce qui témoigne de la différence de fonctionnement. +%Si on désire utiliser FrenchPro entièrement de façon native dans\{mltex\} +%un environnement multilingue on fera plutôt appel à l'extension mlp (voir +%paragr. 4) : +%\documentclass[french]{classe_de_document } +%... +%%\usepackage{mlp}% 40 +\subsection{Polices de caractères et guillemets français} +\indneg{\sl \small En bref :} les guillemets saisis sous forme ascii (<\/<\/ ... >\/>) ou selon le code approprié + à votre clavier (« et »), sont utilisables avec l'extension \textit{eFrench} +qui sait les gérer dans de nombreuses circonstances typographiques (premier +et deuxième niveau, listes, lettrines, etc.). Concernant le choix de la police, +\textit{eFrench} regarde quelle est la police par défaut ({\it cm}, {\it ec}, ...) pour déterminer +%19 +quels codes de guillemets il faut imprimer. On obtiendra ainsi toujours de +beaux guillemets français imprimés. + +\indneg{\TeX\sl nique :} Voici un descriptif rapide des méthodes employées : +\begin{itemize}\item par défaut (c.-à -d. fontes {\it cm}), ces guillemets sont simulés à partir de +glyphes venant de la police {\it lasy} (ce qui explique leur aspect légèrement +arrondi) et, toujours par défaut, ce sont les seuls guillemets disponibles. +Rappelons que l'utilisation de +\texttt{$\backslash$usepackage[OT1]\{fontenc\}} + %\usepackage[OT1]{fontenc} +force l'utilisation des fontes {\it cm}. +\item avec le choix des fontes {\it ec} ou {\it lmodern} (c.-à -d. en demandant leur codage en utilisant +\texttt{$\backslash$usepackage[T1]\{fontenc\}}) +%\usepackage[T1]{fontenc}) +les guillemets sont imprimés dans la police \texttt{$\backslash$rmdefault} et, toujours +par défaut, ce sont les seuls glyphes de guillemets disponibles. + +L'ordre \texttt{$\backslash$guillemetsinallfonts } + permet d'utiliser les guillemets de la police +en cours d'utilisation, quelque soit cette police ; cela permet donc de +jouer avec les graisses, les styles et les familles de polices, (ce qui, +selon le goût de Bernard Gaulle, +n'est pas toujours optimum). +\item lorsque les guillemets sont saisis en ascii (<\/< ... >\/>) les glyphes imprimés +sont toujours des ligatures mais la manière diffère selon qu'il +s'agit d'une police {\it lasy} ou d'une police {\it ec}. Dans le premier cas c'est +une ligature fabriquée par l'extension {\it eFrench}, dans l'autre cas c'est +une ligature « fondue » dans la police. En aucun cas {\pgLapdTeX} ne peut +couper en deux un guillemet en bout de ligne. +\item il est possible d'imprimer les guillemets avec d'autres polices ; on peut +par exemple utiliser l'extension +\linkandfootnote{aeguill}{\it aeguill} +{http://mirror.ctan.org/macros/latex/contrib/aeguill}. +%aeguill 40.% 40 +\end{itemize} +\subsection{Comment personnaliser l'extension \textit{eFrench} ?} + +\indneg{\sl \small En bref :}\indpos L'extension \textit{eFrench} est entièrement configurable ; vous pouvez donc personnaliser vos documents à l'envi. + +\indneg{\TeX\sl nique :} Un article a été dédié à ce sujet, vous y trouverez plein de renseignements très utiles : +\linkandfootnote{artET98pdf}{\hbox{artET98.pdf}} +{http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/doc/artET98.pdf?view=co} +%artET98.pdf55 +en complément de la documentation d' +\linkandfootnote{ctanmanuefr}{eFrench.} +{http://mirror.ctan.org/language/french/e-french/doc/manuels/efrench.pdf}%eFrench. +%Pro 36 . +\vfill + +\indpos\textbf{Si vous souhaitez améliorer ce document} ce sera avec un grand +plaisir que nous recevrions vos messages à : \indneg + + +\href{mailto:efrench(at)lists.tuxfamily.org}{\texttt{efrench@lists.tuxfamily.org}}\hfill +ou \hfill \href{mailto:raymond(at)juil.ch}{\texttt{raymond@juil.ch}}\hfill\rule{0pt}{1ex} +ou encore \href{mailto:lb(at)laurentbloch.org}{\texttt{lb@laurentbloch.org}} +\footnote{Attention, l'adresse m.él. fournie via les butineurs est +piégée ; il faut la corriger à la main.}.\indpos +%?—? +%55. <http://frenchpro6.com/frenchpro/french/doc/artET98.pdf>. +%20 +%\pagebreak +\vfill +\appendix + + + +\def\AvertO{\ \vfill% +%%% Ceci était un extrait de la documentation de l'extension +%%% \eFrench. + + \begin{center}*---*\end{center} + \def\AvertO{}} + +\ifnoDOCinstall\par\medskip\AvertO\fi% +\ifnoFINALS\par\medskip\AvertO\fi% + +\vfill +%\newpage + +\bibliographystyle{plain} +\ifx\Section\undefined\else\let\section\Section\fi% Restore \section. +\def\refname{Références bibliographiques} +\begin{drapeaufg} +\begin{thebibliography}{9} +\bibitem{lblochefr}{L. Bloch} + \textit{\linkandfootnote{rlblochefr}{Lancement du projet \textit{eFrench}}% +{http://www.laurentbloch.org/MySpip3/spip.php?article166}}%http://www.laurentbloch.org/BlogLB/ +\bibitem{cesures} D. Flipo, B. Gaulle et K. Vancauwenberghe,\textit{ +\linkandfootnote{ rcesures}{Motifs de césure français}{http://cahiers.gutenberg.eu.org/cg-bin/article/CG_1994___18_35_0.pdf}}, +{\it in} Les Cahiers GUTenberg No 18, 1994. +\bibitem{frenchle} B. Gaulle, R. Juillerat +\textit{\linkandfootnote{reffrenchle}{% +L'extension frenchle pour \LaTeX, notice d'utilisation 31}% +{http://mirror.ctan.org/language/french/e-french/doc/manuels/frenchle.pdf}}, 2015 +\bibitem{frenchpro} B. Gaulle, R. Juillerat +\textit{\linkandfootnote{ rfrenchpro}{Guide d'utilisation de l'extension \textit{eFrench}}% +{http://mirror.ctan.org/language/french/e-french/doc/manuels/efrench.pdf}}, 2011 +\bibitem{personnalis} B. Gaulle, \textit{\linkandfootnote{commperso}{Comment peut-on personnaliser l'extension french de \LaTeX{} ?}{http://cahiers.gutenberg.eu.org/cg-bin/article/CG_1998___28-29_143_0.pdf}} + document {\it in} Les Cahiers GUTenberg No 28-29, 1998 +\bibitem{lepetity} E. Saudrais, + \textit{\linkandfootnote{rlepetity}{Le petit typographe rationel}{http://tex.loria.fr/typographie/saudrais-typo.pdf}} +\end{thebibliography} + +\end{drapeaufg} +\vfill +\newpage +\nooverfullhboxmark% Pourquoi faut-il le repréciser pour la versions screen? + +\def\footnote#1{}% nullify any footnote here. +\tableofcontents + +\end{document} diff --git a/language/french/e-french/texmf/doc/src/frabbrevlat9.tex b/language/french/e-french/texmf/doc/src/frabbrevlat9.tex new file mode 100644 index 0000000000..ba7e433f1e --- /dev/null +++ b/language/french/e-french/texmf/doc/src/frabbrevlat9.tex @@ -0,0 +1,297 @@ +% !TeX encoding = latin9 +% frabbrev.tex file (French typographic abbreviations) +% should always be used in 8bit format (generated from +% fxabbrev.tex which is full ASCII 7bit) +% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% Don't change this to a 7bits coding except if you are using 7bits input +% +% History of mods: +% =============== +% - Change \^i into î_ --bg 01/16/92 +% - Added shorten "cad" (remark coming from Jacques Andre) --bg 02/07/92 +% - paragraph sign (\S) followed by a tilde --bg 05/15/92 +% - recoded to 8bits --bg 08/24/92 +% - add second, seconds, premiers, premières, troisièmes... +% numéros, Numéros and pages. +% --bg 01/12/93 +% - strings containing a space must be within a group. --bg 98/05/15 +% - THE FIRST LETTER IS NO MORE TESTED except if the string is +% within braces. Thus, any string beginning whith an uppercase +% letter should be enclosed within braces. --bg 1999/11/08 +% - f8abbrev.tex and frabbrev.850 definitely removed. +% f7abbrev.tex rename fxabbrev.tex --bg 2000/06/14 +% - few adds coming from Yves Perrousseaux' book on typo. --bg 2001/08/03 +% - corrections for second(s) and seconde(s). --bg 2001/09/20 +% - * facility added for plurals ==> 6 changes. +% - legal units added and few other names. +% HAPPY 10 YEARS ANNIVERSARY! --bg 2001/01/21 +% - abbrev. from Louis Guéry from CFPJ. --bg 2002/02/21 +% +% New order : all expressions not UTF8 compatible at end -- rj 2017-04-20 + +% Checked name Replacement +% ============ =========== +% +% Notice that when the checked name is inside braces all that name +% should be equal to "name" otherwise the first letter is not checked. +% If checked name begins with "*" then "_name_" and "_name_s" will +% be checked, the replacement name is the same in the two cases. +% +% NB: All macros have to be not expanded. + +premier 1\noexpand\ier% +premiers 1\noexpand\iers% +première 1\noexpand\iere% +premières 1\noexpand\ieres% +deuxième 2\noexpand\ieme% +deuxièmes 2\noexpand\iemes% +second 2\noexpand\fup{d}% +seconds 2\noexpand\fup{ds}% +seconde 2\noexpand\fup{de}% +secondes 2\noexpand\fup{des}% +troisième 3\noexpand\ieme% +troisièmes 3\noexpand\iemes% +quatrième 4\noexpand\ieme% +quatrièmes 4\noexpand\iemes% + +primo \noexpand\quando{1}% +secundo \noexpand\quando{2}% +tertio \noexpand\quando{3}% +quarto \noexpand\quando{4}% +quinto \noexpand\quando{5}% +sexto \noexpand\quando{6}% +septuno \noexpand\quando{7}% +octavo \noexpand\quando{8}% +nono \noexpand\quando{9}% +decimo \noexpand\quando{10}% + +{Numéro} \noexpand\Numero% +{Numéros} \noexpand\Numeros% +numéro \noexpand\numero% +numéros \noexpand\numeros% + +monsieur M.% +messieurs MM.% +mademoiselle M\noexpand\fup{lle}% +mesdemoiselles M\noexpand\fup{lles}% +madame M\noexpand\fup{me}% +mesdames M\noexpand\fup{mes}% +maître M\noexpand\fup{e}% +maîtres M\noexpand\fup{es}% + +{Compagnie} c\noexpand\fup{ie}% +canton C\noexpand\fup{on}% +docteur D\noexpand\fup{r}% +folio f\noexpand\fup{o}% +folios f\noexpand\fup{os}% +monseigneur M\noexpand\fup{gr}% +paragraphe \noexpand\S~% doit être suivi d'un numéro. +recto r\noexpand\fup{o}% +verso v\noexpand\fup{o}% + +{Académie} Acad.% +adjectif adj.% +{Administration} Admin.% +ancien anc.% +annexe ann.% from LG 2002/02/21 +{Antiquité} Antiq.% +appendice append.% +après apr.% +archives arch.% +archéologie archéol.% +arithmétique arithm.% +arrondissement arr.% +article art.% +astronomie astron.% +avant av.% +avenue av.% from LG 2002/02/21 +bibliographie bibliogr.% +bibliothèque bibl.% from LG 2002/02/21 +biologie biol.% +botanique bot.% +boulevard bd% +bulletin bull.% +cad \noexpand\hbox{c.-à-d.}% +chapitre chap.% +chef-lieu ch.-l.% +chronologie chronol.% +circulaire circ.% +circonscription circonscr.% +{Code civil} C.civ.% +{Code pénal} C.pén.% +*collaborateur coll.% +collection coll.% +colonne col.% from LG 2002/02/21 +commandeur C.% from LG 2002/02/21 +département dép.% +dictionnaire dict.% +document doc.% +{Est} E% +*éditeur éd.% * from LG 2002/02/21 +*édition éd.% * from LG 2002/02/21 +environ env.% +épitre ép.% +épilogue épil.% +établissements Éts% +étymologie étym.% +exemple ex.% +expéditeur exp.% from LG 2002/02/21 +fascicule fasc.% +faubourg fg% +féminin fém.% +feuillet f.% +figure fig.% +Frère F.% from LG 2002/02/21 +géographie géogr.% +géologie géol.% +géométrie géom.% +graphique graph.% +gravure grav.% +habitants hab.% +hauteur haut.% +iconographie iconogr.% +*illustrations illustr.% 21/01/2002 +inférieur inf.% +introduction introd.% +invariable invar.% +italique ital.% +juridique jur.% +jurisprudence jur.% +*ligne l.% 21/01/2002 +largeur larg.% +latitude lat.% +librairie libr.% +livre liv.% +locution loc.% +longitude long.% +longueur long.% +manuscrit ms.% +manuscrits mss.% +masculin masc.% +mathématiques math.% +maximum max.% from LG 2002/02/21 +mécanique mécan.% +mémoire mém.% +musique mus.% +mythologie myth.% +{Nord} N% +nouveau nouv.% +nouvelle nouv.% +numismatique numism.% +officier O.% from LG 2002/02/21 +{Ouest} O% from LG 2002/02/21 +ouvrage ouvr.% +*page p.% 21/01/2002 +partie part.% +Père P.% from LG 2002/02/21 +photographie phot.% +physique phys.% +*planche pl.% 21/01/2002 +relié rel.% from LG 2002/02/21 +reliure rel.% +rédaction réd. +route rte% from LG 2002/02/21 +{Sud} S.% +science sc.% +scène sc.% +section sect.% +{Saint} St% +{Saints} Sts% +{Sainte} Ste% +{Saintes} Stes% +section sect.% from LG 2002/02/21 +siècle s.% from LG 2002/02/21 +{société} sté% 21/01/2002 +{Société} Sté% Yves Perrousseaux 2001/08/03 +substantif subst.% +*suivant suiv.% 21/01/2002 +*suivante suiv.% 21/01/2002 +supèrieur sup.% from LG 2002/02/21 +supplément suppl.% +téléphone tél.% Yves Perrousseaux 2001/08/03 +tome t.% from LG 2002/02/21 +traducteur trad.% +traduction trad.% +variante var% from LG 2002/02/21 +vers v.% from LG 2002/02/21 +voir V% from LG 2002/02/21 +volume vol.% + +% Unités légales : + +*ampère A% +*are a% +*bel B% from LG 2002/02/21 +*candela cd% from LG 2002/02/21 +centi c% from LG 2002/02/21 +*centiare ca% +*centigramme cg% +*centilitre cl% +*centimètre cm% +déca da% from LG 2002/02/21 +*décalitre dal% +dècamètre dam% +déci d% from LG 2002/02/21 +décibel dB% +décigramme dg% from LG 2002/02/21 +décilitre dl% from LG 2002/02/21 +*franc F% +giga G% from LG 2002/02/21 +*grade gr% +*gramme g% +*hectare ha% +hect h% from LG 2002/02/21 +*hectogramme hg% +*hectolitre hl% +*hectomètre hm% +*hertz Hz% from LG 2002/02/21 +*heure h% +*jour j% +*kelvin K% from LG 2002/02/21 +kilo k% from LG 2002/02/21 +*kilogramme kg% +*kilohertz kHz% from LG 2002/02/21 +*kilomètre km% +*kilovoltampère kVA% from LG 2002/02/21 +*kilowatt kW% +kilowatt-heure kWh% +kilowatts-heure kWh% +*litre l% +lux lx% from LG 2002/02/21 +méga M% from LG 2002/02/21 +*mégahertz MHz% from LG 2002/02/21 +*mètre m% +% micro est a introduire qd on aura \mu en romain droit. +milli m% from LG 2002/02/21 +*millibar mbar% +*milligramme mg% from LG 2002/02/21 +*millilitre ml% +*millimètre mm% +*milliseconde ms% from LG 2002/02/21 +*minute min% +*mole mol% from LG 2002/02/21 +nano n% from LG 2002/02/21 +*nanoseconde nc% from LG 2002/02/21 +*newton N% from LG 2002/02/21 +*pascal Pa% from LG 2002/02/21 +pico p% from LG 2002/02/21 +*picoseconde ps% from LG 2002/02/21 +quintal q% from LG 2002/02/21 +quintaux q% from LG 2002/02/21 +*radian rad% from LG 2002/02/21 +*seconde s% +*stère st% +téra T% from LG 2002/02/21 +*thermie th% from LG 2002/02/21 +*tonne t% +*volt V% +*watt W% +*wattheure Wh% from LG 2002/02/21 + +% Excerpt from ``Lexique des règles typographiques en usage a l'Imprimerie +% nationale'', Abréviations, p7-11 and few additions. +% plus other usual (referenced) names. diff --git a/language/french/e-french/texmf/doc/src/frabbrevutf8.tex b/language/french/e-french/texmf/doc/src/frabbrevutf8.tex new file mode 100644 index 0000000000..6e1655268e --- /dev/null +++ b/language/french/e-french/texmf/doc/src/frabbrevutf8.tex @@ -0,0 +1,297 @@ +% frabbrev.tex file (French typographic abbreviations) +% should always be used in 8bit format (generated from +% fxabbrev.tex which is full ASCII 7bit) +% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% Don't change this to a 7bits coding except if you are using 7bits input +% +% History of mods: +% =============== +% - Change \^i into î_ --bg 01/16/92 +% - Added shorten "cad" (remark coming from Jacques Andre) --bg 02/07/92 +% - paragraph sign (\S) followed by a tilde --bg 05/15/92 +% - recoded to 8bits --bg 08/24/92 +% - add second, seconds, premiers, premières, troisièmes... +% numéros, Numéros and pages. +% --bg 01/12/93 +% - strings containing a space must be within a group. --bg 98/05/15 +% - THE FIRST LETTER IS NO MORE TESTED except if the string is +% within braces. Thus, any string beginning whith an uppercase +% letter should be enclosed within braces. --bg 1999/11/08 +% - f8abbrev.tex and frabbrev.850 definitely removed. +% f7abbrev.tex rename fxabbrev.tex --bg 2000/06/14 +% - few adds coming from Yves Perrousseaux' book on typo. --bg 2001/08/03 +% - corrections for second(s) and seconde(s). --bg 2001/09/20 +% - * facility added for plurals ==> 6 changes. +% - legal units added and few other names. +% HAPPY 10 YEARS ANNIVERSARY! --bg 2001/01/21 +% - abbrev. from Louis Guéry from CFPJ. --bg 2002/02/21 +%% +%% checksum = "20285 297 1013 10463" +%% + +% Checked name Replacement +% ============ =========== +% +% Notice that when the checked name is inside braces all that name +% should be equal to "name" otherwise the first letter is not checked. +% If checked name begins with "*" then "_name_" and "_name_s" will +% be checked, the replacement name is the same in the two cases. +% +% NB: All macros have to be not expanded. + +premier 1\noexpand\ier% +premiers 1\noexpand\iers% +première 1\noexpand\iere% +premières 1\noexpand\ieres% +deuxième 2\noexpand\ieme% +deuxièmes 2\noexpand\iemes% +second 2\noexpand\fup{d}% +seconds 2\noexpand\fup{ds}% +seconde 2\noexpand\fup{de}% +secondes 2\noexpand\fup{des}% +troisième 3\noexpand\ieme% +troisièmes 3\noexpand\iemes% +quatrième 4\noexpand\ieme% +quatrièmes 4\noexpand\iemes% + +primo \noexpand\quando{1}% +secundo \noexpand\quando{2}% +tertio \noexpand\quando{3}% +quarto \noexpand\quando{4}% +quinto \noexpand\quando{5}% +sexto \noexpand\quando{6}% +septuno \noexpand\quando{7}% +octavo \noexpand\quando{8}% +nono \noexpand\quando{9}% +decimo \noexpand\quando{10}% + +{Numéro} \noexpand\Numero% +{Numéros} \noexpand\Numeros% +numéro \noexpand\numero% +numéros \noexpand\numeros% + +monsieur M.% +messieurs MM.% +mademoiselle M\noexpand\fup{lle}% +mesdemoiselles M\noexpand\fup{lles}% +madame M\noexpand\fup{me}% +mesdames M\noexpand\fup{mes}% +maître M\noexpand\fup{e}% +maîtres M\noexpand\fup{es}% + +{Compagnie} c\noexpand\fup{ie}% +canton C\noexpand\fup{on}% +docteur D\noexpand\fup{r}% +folio f\noexpand\fup{o}% +folios f\noexpand\fup{os}% +monseigneur M\noexpand\fup{gr}% +paragraphe \noexpand\S~% doit être suivi d'un numéro. +recto r\noexpand\fup{o}% +verso v\noexpand\fup{o}% + +{Académie} Acad.% +adjectif adj.% +{Administration} Admin.% +ancien anc.% +annexe ann.% from LG 2002/02/21 +{Antiquité} Antiq.% +appendice append.% +après apr.% +archives arch.% +archéologie archéol.% +arithmétique arithm.% +arrondissement arr.% +article art.% +astronomie astron.% +avant av.% +avenue av.% from LG 2002/02/21 +bibliographie bibliogr.% +bibliothèque bibl.% from LG 2002/02/21 +biologie biol.% +botanique bot.% +boulevard bd% +bulletin bull.% +cad \noexpand\hbox{c.-à -d.}% +chapitre chap.% +chef-lieu ch.-l.% +chronologie chronol.% +circulaire circ.% +circonscription circonscr.% +{Code civil} C.civ.% +{Code pénal} C.pén.% +*collaborateur coll.% +collection coll.% +colonne col.% from LG 2002/02/21 +commandeur C.% from LG 2002/02/21 +département dép.% +dictionnaire dict.% +document doc.% +{Est} E% +*éditeur éd.% * from LG 2002/02/21 +*édition éd.% * from LG 2002/02/21 +environ env.% +épitre ép.% +épilogue épil.% +établissements Éts% +étymologie étym.% +exemple ex.% +expéditeur exp.% from LG 2002/02/21 +fascicule fasc.% +faubourg fg% +féminin fém.% +feuillet f.% +figure fig.% +Frère F.% from LG 2002/02/21 +géographie géogr.% +géologie géol.% +géométrie géom.% +graphique graph.% +gravure grav.% +habitants hab.% +hauteur haut.% +iconographie iconogr.% +*illustrations illustr.% 21/01/2002 +inférieur inf.% +introduction introd.% +invariable invar.% +italique ital.% +juridique jur.% +jurisprudence jur.% +*ligne l.% 21/01/2002 +largeur larg.% +latitude lat.% +librairie libr.% +livre liv.% +locution loc.% +longitude long.% +longueur long.% +manuscrit ms.% +manuscrits mss.% +masculin masc.% +mathématiques math.% +maximum max.% from LG 2002/02/21 +mécanique mécan.% +mémoire mém.% +musique mus.% +mythologie myth.% +{Nord} N% +nouveau nouv.% +nouvelle nouv.% +numismatique numism.% +officier O.% from LG 2002/02/21 +{Ouest} O% from LG 2002/02/21 +ouvrage ouvr.% +*page p.% 21/01/2002 +partie part.% +Père P.% from LG 2002/02/21 +photographie phot.% +physique phys.% +*planche pl.% 21/01/2002 +relié rel.% from LG 2002/02/21 +reliure rel.% +rédaction réd. +route rte% from LG 2002/02/21 +{Sud} S.% +science sc.% +scène sc.% +section sect.% +{Saint} St% +{Saints} Sts% +{Sainte} Ste% +{Saintes} Stes% +section sect.% from LG 2002/02/21 +siècle s.% from LG 2002/02/21 +{société} sté% 21/01/2002 +{Société} Sté% Yves Perrousseaux 2001/08/03 +substantif subst.% +*suivant suiv.% 21/01/2002 +*suivante suiv.% 21/01/2002 +supèrieur sup.% from LG 2002/02/21 +supplément suppl.% +téléphone tél.% Yves Perrousseaux 2001/08/03 +tome t.% from LG 2002/02/21 +traducteur trad.% +traduction trad.% +variante var% from LG 2002/02/21 +vers v.% from LG 2002/02/21 +voir V% from LG 2002/02/21 +volume vol.% + +% Unités légales : + +*ampère A% +*are a% +*bel B% from LG 2002/02/21 +*candela cd% from LG 2002/02/21 +centi c% from LG 2002/02/21 +*centiare ca% +*centigramme cg% +*centilitre cl% +*centimètre cm% +déca da% from LG 2002/02/21 +*décalitre dal% +dècamètre dam% +déci d% from LG 2002/02/21 +décibel dB% +décigramme dg% from LG 2002/02/21 +décilitre dl% from LG 2002/02/21 +*franc F% +giga G% from LG 2002/02/21 +*grade gr% +*gramme g% +*hectare ha% +hect h% from LG 2002/02/21 +*hectogramme hg% +*hectolitre hl% +*hectomètre hm% +*hertz Hz% from LG 2002/02/21 +*heure h% +*jour j% +*kelvin K% from LG 2002/02/21 +kilo k% from LG 2002/02/21 +*kilogramme kg% +*kilohertz kHz% from LG 2002/02/21 +*kilomètre km% +*kilovoltampère kVA% from LG 2002/02/21 +*kilowatt kW% +kilowatt-heure kWh% +kilowatts-heure kWh% +*litre l% +lux lx% from LG 2002/02/21 +méga M% from LG 2002/02/21 +*mégahertz MHz% from LG 2002/02/21 +*mètre m% +% micro est a introduire qd on aura \mu en romain droit. +milli m% from LG 2002/02/21 +*millibar mbar% +*milligramme mg% from LG 2002/02/21 +*millilitre ml% +*millimètre mm% +*milliseconde ms% from LG 2002/02/21 +*minute min% +*mole mol% from LG 2002/02/21 +nano n% from LG 2002/02/21 +*nanoseconde nc% from LG 2002/02/21 +*newton N% from LG 2002/02/21 +*pascal Pa% from LG 2002/02/21 +pico p% from LG 2002/02/21 +*picoseconde ps% from LG 2002/02/21 +quintal q% from LG 2002/02/21 +quintaux q% from LG 2002/02/21 +*radian rad% from LG 2002/02/21 +*seconde s% +*stère st% +téra T% from LG 2002/02/21 +*thermie th% from LG 2002/02/21 +*tonne t% +*volt V% +*watt W% +*wattheure Wh% from LG 2002/02/21 + +% Excerpt from ``Lexique des règles typographiques en usage a l'Imprimerie +% nationale'', Abréviations, p7-11 and few additions. +% plus other usual (referenced) names. diff --git a/language/french/e-french/texmf/doc/src/french_doc.tex b/language/french/e-french/texmf/doc/src/french_doc.tex new file mode 100644 index 0000000000..7767c3860a --- /dev/null +++ b/language/french/e-french/texmf/doc/src/french_doc.tex @@ -0,0 +1,17 @@ +\documentclass{article} +\setlength{\topmargin}{-35mm} +\setlength{\textheight}{25.5cm} +\setlength{\oddsidemargin}{-5mm} +\addtolength{\textwidth}{40mm} +\begin{document} +%de verbatimfiles par Chris Rowley +% ou de french.sty par Bernard Gaulle +% ici par Raymond Juillerat + \makeatletter % + \def\verbatimfile#1{\begingroup + \@verbatim \frenchspacing \@vobeyspaces + \input#1 \endgroup + } +\makeatother % +\verbatimfile{french_doc.txt} +\end{document}
\ No newline at end of file diff --git a/language/french/e-french/texmf/doc/src/french_doc.txt b/language/french/e-french/texmf/doc/src/french_doc.txt new file mode 100644 index 0000000000..b0472c388a --- /dev/null +++ b/language/french/e-french/texmf/doc/src/french_doc.txt @@ -0,0 +1,4334 @@ +% This is french_doc.pdf (informations en francais dans +% efrench.pdf et faq.pdf) +% +% As e-French since 2010 under LPPL Copyright. +%.................................................................... +% Copyright GUTenberg-Gaulle 1992-1998, Bernard Gaulle 1999-2007: +% ============================================================== +% +% En tant qu'e-French sous Copypright LPPL depuis 2010. +%.................................................................... +% Copyright Gaulle-GUTenberg 1992-1998, B. Gaulle 1999-2007. +% ========================================================= +%.........................................................................V2.5 +%.................................................................... +% NOTICE that this work was done without any formal support. +% Friendly helps, supports as well as sponsors are welcome! +%.................................................................... +%\def\ds@le{\input frenchle.sty}% +% +% french.sty was developped by Bernard GAULLE for French-Speaking Users +% This file is now a part of the e-French package. +% For more details please read efrench.pdf +%\expandafter\ifx\csname frenchTeXmods\endcsname\relax% +%\else \endinput \fi% +\def\frenchname{french}% +\def\frenchpack{e-french}% eFrench +\def\ds@french{}% +\def\ds@pmfrench{\pmfrench}% +{\catcode`\@=11{% + \ifx\@unexpandable@protect\undefined\let\protect\empty% + \else\let\protect\@unexpandable@protect% + \fi% + \xdef\FSfd{31 mai 2019}% eFrench + \xdef\FSfv{V6,101}% + \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}% +}}% + \edef\FSfd{2019/05/31}% +% +% History as given by Bernard Gaulle: +% I started this job years ago (in 1989) firstly +% using ideas by Jacques DESARMENIEN, the French pioneer and also by +% Eric PICHERAL (CICB, Rennes), Nicolas BROUARD (INED, Paris), +% Marc SHAPIRO (INRIA, Rocquencourt), Raymond SEROUL (Lab Typo. Strasbourg), +% Philippe LOUARN (IRISA, Rennes), Olivier NICOLE (INRA, Jouy), +% Rainer SCH\"OPF (Uni. Mainz), Johannes BRAAMS (PTT, NL) and others. +% I stopped to collect the names of the good guys in 1991 when i decided +% to make a seriously enhanced & rewritten distribution i released as V3.0. +% +%% Free gift to GUTenberg (Frenchspeaking TeX Users Group) +%% during 12 years. (Groupe francophone des Utilisateurs de TeX). +%% Shareware since january 2001 (Version 5,00). +% +% Send suggestions/bug reports/corrections to the maintainer of e-French: +% Laurent Bloch, lb@laurentbloch.org +% (http://www.laurent-bloch.org/spip.php?article166) +% +% Canonical Archives server is: www.gutenberg.eu.org +% (in /pub/GUTenberg/french) +% where these files are archived. +% +% Running only with LaTeX2e, oldest format required: +\NeedsTeXFormat{LaTeX2e}[1996/12/01]% -the latest one acceptable +% > utf8 specialities +% These specifications are here to facilitate the use of +% french guillemets with a XeLaTex motor under utf8 +\newif\ifeF@NoEnc %No encoding (XeTex, LuaLaTex) +\expandafter\expandafter +\expandafter\ifx\csname XeTeXrevision\endcsname\relax +\else + \eF@NoEnctrue +\fi +% +\newif\ifeF@LuaTeX +\expandafter\ifx\csname lualatexversion\endcsname\relax +\else + \eF@LuaTeXtrue \eF@NoEnctrue +\fi +% this is in order having some accomodations with \XeTeXinterchartokenstate +\newif\ifeFr@Typo\eFr@Typotrue +% In order having no encoding by messages declare this : + \let\kbencoding\@gobble +% < utf8 specialities +\let\auxWARNINGi=\@gobble% -accept aux files produced by french +% This style is using, at most: +%%< +%%> 577 strings out of 11731 (4.9%); +%%> 4675 string characters out of 85497 (5.4%); +%%> 11217 words of memory out of 262141 (4.2%); +%%> 567 multiletter control sequences out of 9500 (5.9%). +% +% (I used usual teTeX with option mltex). +% +% Lastest updates (previous updates infos in history file) +% =============== +% V5,995 +% Released --bg 2005/04/18 +% \XeTeXinputencoding is no more running: supporting +% XeTeX is now differed. Jonathan Kew informed. --bg 2005/12/25 +% V5,996 patch to allow \label to run in math mode. --bg 2005/09/09 +% Reported by Simon Pierre Desrosiers. +% +% \captionseparator is off with memoir.cls, --bg 2005/10/08 +% use \captiondelim. +% Reported by Frederic Connes. +% +% Patch for relsize [2003/07/04 ver 3.1] to avoid messages when +% the smallest size is less than de default of 6pt. --bg 2005/12/22 +% Reported by Frederic Connes. +% +% Patch for nomencl.sty which force \kbtypeout to be +% called from \item in an unexpandable environment and +% then producing an undefined \f@tempa break. So i add +% \nofrenchwarnings in \printnomenclature. The problem +% was reported by J.B. Moreau. --bg 2006/01/19 +% +% Released 2006/03/25 +% V5,997 Emergency message added when frlicense.dat is empty. +% Change in tabbing environnement: \tabbingaccents is +% now the default in French since 8bits chars in T1 +% are always converted to 7bits chars "a la TeX". +% \notabbingaccents added in \nofrenchtypography. +% The pb was reported by Frederic Petit. 2006/04/25 +% V5,998 Released - new production scheme. 2006/07/04 +% V5,999 Patch for frenchle: ## illegal parameter in \@tempa (\') ? +% issuing message with superfluous double \string (\@w@s). 2006/08/15 +% Natbib correction: bibitem macro was one oboslate of +% jurabib. Jurabib bibitem macro obsolate and misplaced. +% Full code revisited. 2006/08/18 +% Released 2006/08/25 +% V5,9991 When FrenchPro is called from babel(fr) all given options +% should not be processed by the msg package, so we call msg +% saying it's an \intern@lc@llfrom{FrenchPro} and it has to +% use the French language. +% But don't force French when calling from kernel. 2006/10/03 +% V5,9992 German localisation completed, thanks To Werner Struchmann. +% 2006/10/13 +% V5,9993 Empty \caption was not processed correctly and thus the +% the caption separator was erroneously printed. 2007/02/09 +% \texttt is now robust, avoiding wrong expansion in title +% heads especially. +% \MakeRobustCommand now creating \cmd_fp in place of +% \cmd_. (a LaTeX robust command can be made robust for +% FrenchPro too). 2007/02/11 +% +% V5,9994 Correction for empty caption didn't run with hyperref. In +% a first step i remove the modification and will try to +% find the good mod to avoid the \captionseparator be +% printed. 2007/06/28 +% +% and also check if there is any frpatch.sty file available. +% %%%%%%%%%%%%%%%%%%%%%%% +% Distributed as eFrench under LPPL is same as version 5,9994 +% but without the test for a shareware licence +% Changes made by Raymond Juillerat 2010/05/04 +% +% V5,9995 Some changes because a problem arose with the language arabic +% in that case, the language switch \arabic was in conflict with the +% arabic format for numbers, also \arabic. +% Therefore in this version, the switch is to be made with \arabicLang, but +% the configuration file for the language arabic is as usual \arabicTeXmods. +% These changes affect all languages <language> were \<language> already +% exists and would enter in conflict with. Language switch is made with +% \<language>Lang and the context is defined with \<language>TeXmods. +% Same changes were made in frenchle +% Changes made by Raymond Juillerat 2011/09/26 +% +% V6,0 The reading of *languages.dat* has been reduced to french and +% english suppressing the problem with \arabic. This reduction is +% possible because eFrench is not compatible with babel but needs the +% hyphenations rules for french and english. For german or ngerman, +% the mlp module is responsible for finding the hyphenation. +% This is possible because german or ngerman and french are the only +% language style running without babel. +% For babel there are other versions of these language packages. +% Changes made by Raymond Juillerat 2015/10/30 +% V6,01 +% Correction of \originaloutput +% Changes made by Raymond Juillerat 2017/02/24 +% \newcount, \newdimen, \newbox only not redefind if from eTeX +% Changes made by Raymond Juillerat 2017/08/10 +% V6,02 +% some preparations for XeLaTeX and LuaLaTeX +% New file efrenchu.tex in order having utf8 french guillemets +% active. +% This file corrects also the hyphenation problem with apostroph +% Problems with LuaLaTex remain but by using msg.sty! +% Changes made by Raymond Juillerat 2019/01/07 +% V6,1 +% Changes made necessary because of BibLaTeX and Interchartoks +% Changes made by Raymond Juillerat 2019/03/08 +% V6,101 +% Two minor corrections by interchartoks +% Changes made by Raymond Juillerat 2019/05/30 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Object: DOCUMENT CLASS OPTION for printing French texts with TeX or LaTeX +% as well as english. (or multilingual texts in which French is the +% main language). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% It can be called: +% via \usepackage{french} % french is alone +% or \usepackage[french]{mlp} % using The Multi-Lingual Package +% or as an option of \documentclass, when using mlp. +% +% Commands to be used by the end users: +% ==================================== +% \frenchtest between \document.... and \end{document} will run +% the LaTeX "Torture Test" (see french*.tex files). +% \frenchdoc between \document..... and \end{document} will compose +% the LaTeX documentation (see frenchlu.tex file). +% \french Apply French conventions including hyphenation, +% typography, page layout, titles inside documents and +% few other things helping when typing a document. +% This is the default language. +% \begin{french}...\end{french} to bind the French text with LaTeX. +% \french ... \endfrench with TeX. +% \pmfrench (preambule command) ... the poor man way +% (or \usepackage{pmfrench} vi pmfrench.sty) +% to let the French style run even the TeX motor +% (ie format) was not installed or configured in a way to +% use the French language (hyphenation, language.dat,...) +% Be aware that a lot of things might not provide their +% usual featuring. Notice also that then the following +% commands do nothing: +% - \noeveryparguillemets +% - \lettrine and \flettrine +% - \abbreviations and "..." +% - \frhyphex +% \usersfrenchoptions{.. French options ..} to allow the user to change the +% default options. All options given inside braces remain +% active all along the document inside language French. +% This command can be reused, provided arguments are +% then cumulated. +% \english for going back to "normal" English conventions +% And if you have a language.dat config file defining +% german languages, as it is normally the case. +% \beginFWdirection switch to the first direction of writing when TeX--XeT. +%-------------------- +% Commands for compatibility: +% +% \inferieura is the original less than sign (<) +% \superieura is the original greater than sign (>) +% \pointvirgule is the original ";" +% \deuxpoints is the original ":" +% \pointexclamation is the original "!" +% \pointinterrogation is the original "?" +% \lq and \rq stands for ` and ' +% ^\prime stands for ' in maths +% \lqq and \rqq stands for `` and '' +% \dittomark stands for " +% +% \originalinput{file_of_code} is supplied to input any code that might be +% incompatible with the French style. +% You can also disable the French style using: +% \begin{nonfrench}...\end{nonfrench} with LaTeX +% \nonfrench..........\endnonfrench with plain TeX +% \originaloutput[file]{text} is supplied to output any text that would +% otherwise generate expanded macros for activated chars +% instead of original characters. "file" is a stream +% number related to open file defined by \newwrite. +% \def\encodingdefault{...} can be set to "T1" or "OT1" to change the default +% font encoding that is normally set in the format +% (with initex material and specially kbconfig.tex) +%-------------------- +% \frhyphex Reload once French hyphenation exceptions file from +% language.dat (give this order in the preambule) +% Not usable with plain (or low level languages). +% \frenchhyphenation Apply French rules on hyphenation: +% - as stated in the patterns file +% - with exceptions as established by \hyphenation +% - of words starting with one upper case letter +% and also allows accent macros in \hyphenation +% or \showhyphens. +% \nofrenchhyphenation Nullify former actions +% +% Other commands for hyphenation that remains unchanged over \french reinit. +% +% \allowhyphens allow the following word to be hyphenated (useful +% sepcially in the second part of a compund word. +% \allowuchyph allow hyphenation of words starting with a capital +% letter (this is the default as in plain & lplain) +% \allowfulluchyph allow it even if a \hbox would normally forbid it in +% the present code. +% \disallowuchyph forbid it (this is my own recommandation) +% \tthyphenation allow hyphenation of words in the present \tt font +% \notthyphenation disallow hyphenation of words in the present \tt font +% (never saved; last value in a \par is that which works; +% default value is that given by the main doc-style; +% presumely the default -if not: tell me \tthyphenation; +% this is the default in lplain.tex) +%-------------------- +% \frenchtypography Apply French typography (spacing) on : +% - double punctuation ! ? ; : +% - guillemets (<< >>).Use \endguillemets instead of >> +% for ending 2 levels of guill. at the same time or +% when the ("everypar") open guillemets were ended in +% a previous inner environnement. +% Italic correction automatically added if necessary. +% - footnote marks in the text and minipages. +% - footnote references (\refmark). +% - thanks in titles. +% Print footnote number in the same font as the footnote +% text followed by a dot and appropriate spacing. When +% used in table environment footnote marks are typeset +% as in a minipage. +% Italicize the caption text (using \captionfont defaultly +% set to \emph). +% Change caption separator (":" replaced by value of +% \captionseparator which default is "~--") +% Suboption: \frenchmathcomma +% Remove space after coma in math mode (default) +% \regularmathcomma +% to set space, as usual after comma in math mode. +% (chosen option is used to print numbers with \nombre). +% \originalmathcomma +% to reset coma mathcode as before FrenchPro wass called. +% Suboption: \unnumberedcaptions{figure/table} to remove headings in +% caption tiltles. This is a global suboption. +% It nullify the according \listof...(figures/tables). +% It can be used only once. Can't be turned back later +% in French. +% Hyphenate correctly. (The lowest level of application +% is the paragraph.) +% Discourage page breaking after ``:'' +% Forbid line breaking before double punctuation and >> +% and after <<. +% Suboption: \noTeXdots will change them to 3 closed dots +% \TeXdots leave \dots, \ldots as well known TeX dots (default) +% Suboption: \nofrenchguillemets stops producing French guillemets. +% \frenchguillemets starts producing French guillemets (default) +% Suboption: \ancientguillemets start every paragraph of second level +% guillemets with closing >> instead of <<. +% \todayguillemets normal way at the present time (default) +% Suboption: \noguillemetsinarrays will print << or >> in standard arrays +% textual modes (depending of the font used). +% \guillemetsinarrays is the usual default value. +% Suboption: \guillemetsinallfonts allows to print them in any font but +% \guillemetsinroman remains the usual default value. +% Suboption: \guillemetsfont allows, when in a T1 font encoding running +% scheme to choose the font for guillemets, just define or +% redefine \guillemetsfont. +% Command: \endguillemets ends levels 2 & 1 at the same time (i.e. >>>>) +% Suboption: \noenglishquote replace TeX ` ' quotes AND apostrophes +% by accents ` ' (to use only temporary). +% Do nothing inside a tabbing environement. +% \...code and \char become unusable asis. +% \englishquote is the default +% Suboption: \noenglishdoublequotes for replacing `` with << and '' with >> +% Do nothing inside a tabbing environement. +% \...code and \char become unusable asis. +% \englishdoublequotes normal quoting ``...'' is the default +% Suboption: \untypedspaces force a space where normally French people +% type one (before ; : ? ! >> and after <<) +% \typedspaces is the default value +% Suboption: \tabbingaccents allow to put \` and \' diactrics on letters +% when used in tabbing environment. \' and \` remain their +% original tabbing usage if followed by a blank space. +% Also usefull for 8bits chars ; this is the default. +% \notabbingaccents is the usual LaTeX usage. +% Suboption: \idotless suppress point on i when accented with ^ and " +% \iwithdot is the default +% Suboption: \EBCDICbrackets replace non-math mode < ... > by [ ... ] +% (..IBM has no brackets so < and > are often used as brackets) +% \normalbrackets is the default +% Suboption: \letpunctutionactivefor to use allways with something else +% (like \wrongtypedspaces), let punctuation (! : ; ?) active +% after French style. Caution: it's extremly dangerous! +% (specify the suboptions after \frenchtypography) +% (sub-options are not saved/restored over a language switch) +% \nofrenchtypography Nullify former actions +% Suboption: \wrongtypedspaces suppress spaces before double punctuation +% (! : ; ?) which was erroneously typed \`a la fran\c caise. +% \text{...} Allows to typeset text in math mode (AmS like command). +%-------------------- +% \ConstantLayout is a one time macro that disallow to change page layout +% and any other typographic feature when switching to another +% language. Once used in any language it is applied for the +% whole document. +% \frenchlayout Apply: +% - indentation of all (first LaTeX) paragraphs: +% Suboption: \indentfirst is the default or +% \nonindentfirst which forces no indentation at all. +% - set item markers as --. User can choose others +% markers via the command +% \frlabelitems{\renewcommand{\labelitemi}...}. +% Look at documentation for more details and specially +% for the use of \checkitemguillemets. +% - reset section counter when starting a part. +% Suboption: \noresetatpart nullify the former action. +% Suboption: \noresetatchapter will not reset footnote counter at chapter +% change. +% Suboption: \frenchtrivsep sets (reduced) vertical spacing in lists, this +% is the default. As this spacing is forced warning +% message is issued when other spacing is user +% expected. Look at \frenchwarnings part. +% You can choose your own values by setting the lengths +% with the command \frtrivseplengths{\setlength...}. +% In that case no warning message is issued. +% \nofrenchtrivsep resets the standard spacing in lists. +% - special spacing with the experimental "order" list. +% - print table footnotes as in minipages. +% - print a coma between consecutive footnotes. +% Suboption: \frenchpagestyle apply a French pagestyle when starting a +% Part or a Chapter or an Index (provides \printindex) +% \nofrenchpagestyle will not. +% Suboption: \beginingfolio print the folio on theses pages (default) +% \nobeginingfolio will not. +% - modify thebibliography environnement to be referred +% in toc and have a valid anchor in hyperref docs. +% - with letter.sty: address placement, typeset \closing +% as a paragraph and with \fclosing in place of +% closing you can chose spacing between closing and +% signature by saying \fclosing[n]{...} with n being +% the number of \medskipamount (default is 9). +% to typeset the date with \location{Paris, le ...} +% \yourref{...} to refer to a received letter +% \ourref{...} for your own reference +% \object{...} to precise the object +% \PS{...} for a post-scriptum +% \email{...} for the email address +% \def\formhead{...} for the odd page headings +% (not operational with \nopagenumbers) +% \def\formfoot{...} for the odd page footings +% (not operational with \nopagenumbers) +% \wideletter to enlarge the default linewidth. +% - offer macros for starting paragraphs with a dropped +% initial capital letter: +% with \lettrine the first letter of the first +% token will be dropped. (warning: in 7-bit +% write {\c C} for example). Remaining part +% of the token in printed in small caps. +% with \flettrine a box will be printed around. +% Generic syntax: +% \lettrine{Begining of the paragraph} +% \flettrine{Begining of the paragraph} +% or \lettrine[<< {Begining} >>] (let spacing!) +% \flettrine[<< {Begining} >>] (ending >> might +% be given later in the text) +% \lettrine or \flettrine START a paragraph! And +% to avoid any problem the paragrpah must end with an +% explicit \par. This is a fragile macro! +% Suboption: \noautomaticlettrine (default) processing; +% the lettrine uses a standard LaTeX font size. +% You can use \lettrinefont to define the font you +% want at the size you want. As default \lettrinefont +% is set to \Huge. +% Use \def\lettrinehang{n} to force hanging of n +% lines (there is no default value). +% \automaticlettrine processing: the lettrine uses a computed +% font size. +% You can use \lettrinefontname to set the font +% (default is current font) and it will start the +% \automaticlettrine feature that means a new value +% of \lettrinefont is established (font-size). +% \lettrinehang is defaultly set to 2 lines and +% can be changed. +% The \automaticlettrine feature can be stoped by +% calling \noautomaticlettrine. +% Suboption: \everyparguillemets open guillemets on every paragraph +% until closing and do nothing at level 2. +% This is the default. +% \everyparguillemetsremoved switch off the previous feature. +% \noeveryparguillemets don't start each par with guillemets +% but start each level 2 line with them. +% \guillemets is forbidden, use 7/8bit +% guillemets chars. +% (see documentation for further explanations) +% Suboption: \overfullhboxmark print the TeX black box exactly where there +% is an overfull hbox (as draft option do) +% \nooverfullhboxmark is the default in LaTeX +% Suboption: \labelsinmargin put labels in margin for debugging purposes +% This option can be used anywhere (outside +% \frenchlayout as well as \french environment) +% \nolabelsinmargin is the default +% +% Propose the following environments: +% +% Environment \begin{drapeaufg}...\end{drapeaufg} to typeset raggedright +% with hyphenation. +% Environment \begin{drapeaufgIN}...\end{drapeaufgIN} to typeset raggedright +% without hyphenation (rules of Imprimerie Nationale) +% As text is never split and overfull can occur +% you may have to split lines by hand. +% Environment \begin{drapeaufd}...\end{drapeaufd} to typeset raggedleft +% with hyphenation. +% Environment \begin{drapeaufdIN}...\end{drapeaufdIN} to typeset raggedleft +% without hyphenation (rules of Imprimerie Nationale) +% Text printed past the line limit may occur. +% Environment \begin{order}...\end{order} to enumerate items with +% via \primo \secundo etc. and with sepcial spacing +% Environment \begin{figurette}...\end{figurette} to place a (little) +% figure EXACTLY here. +% Environment \begin{versatim}...\end{versatim} to print verbatim +% but with hyphenation typeset as in \verse and with +% \noenglishquote and \noenglishdoublequotes available +% Commands: \vers|...| the inline (or intext) vserion of "versatim" +% \verbatimfile{filename} the filename is inputed in verbatim +% BUGED!! (\nopagenumbers reintroduced if undefined) +% \nofrenchlayout Nullify former actions +%-------------------- +% \frenchtranslation . Translate all English titles used in LaTeX, to french +% and generate French dates. This is the default. +% All things should normally run with std LaTeX or Babel. +% You can also create your own styles using these captions +% A lot of captions are newly defined for letters. +% You can also change the titles with your own definitions +% by using \fraddto\captionsfrench{\..name}{title}. +% Environment \begin{resume}...\end{resume} to print an abstract +% . \resume has been defined for French abstracts (we often +% need French and English abstracts together). You must +% be in \french before using it. (like you are in \english +% when you use \begin{abstract}...\end{abstract}). +% Environment \begin{motsclef}...\end{motsclef} to print a keywords list. +% . \motsclef has been defined for French keywords. +% (Environment \begin{keywords}...\end{keywords} to print a keywords list) +% (by the way i have defined \keywords \endkeywords) +% . \sommaire is defined as a toc in front of a document. +% \sommaire[1] don't print paragraphs entries and below. +% \sommaire[2] don't print subsubsection entries and below +% \sommaire[3] don't print subsection entries and below, +% this is the default for \sommaire. +% \sommaire[4] don't print section entries and below, +% . \annexe and \annexes have been defined. +% . \glossaire and \glossaires have been defined. If the +% "theglossary" is undefined, allow: +% \printglossary[filename] (default is jobname.gls +% produced by pgm "makeindex -s gglo.ist") +% NB: code preferably \glossary{[name :] explanation} +% and: without makeindex allow to code jobname.glo +% (instead of .gls) & print something acceptable. +% . makeidx.sty is included and translated. +% . \seealso is defined for indexes. +% \nofrenchtranslation Nullify former actions. +%-------------------- +% \frenchmacros Add a lot of macros to help in typographic process. +% \ier for printing 1\ier (premier) (examples) +% \iere for printing 1\iere (premiere) +% \ieme for printing 2\ieme (deuxieme) +% and their plurials \iers, \ieres and \iemes. +% \FileName{file_name} for 8bit file names, then +% use it by calling \theFileName (e.g with \input). +% \WindowsUnits{name1=A,...,namen=N} to define macros +% names to assign to Windows units which will be called +% in any input file process (\name1: ... \nameN:) +% protecting from the activated colon character. +% \at for printing @ (at) +% \vert for printing | (vertical bar) +% \chap for printing ^ (hat or circonflexe) +% \backslash for \ (backslash) +% \tilde for printing ~ (tilde) +% \nombre for printing large numbers and have the correct +% spacing (p.ex. \nombre{123 456,789 012}) +% \numero for printing (no) +% \Numero for printing (No) +% as well as \numeros and \Numeros +% \degres for printing (degrees) +% \leftguillemets for << (unbalanced left guillemets) +% \rightguillemets for >> (unbal. right guillemets) +% \fup{X} to put X in a smaller size supscript +% \primo \secundo \tertio \quarto \quando={n} +% [or:\primo) \secundo) \tertio) \quarto) not recommanded] +% \fsc{name} or \fsc{NAME} will print as \textsc{Name} +% \fsc*{name} or \fsc*{NAME} forces use of \rmfamily +% \lsc{name} or \lsc{NAME} will print as \textsc{name} +% \lsc*{name} or \lsc*{NAME} forces use of \rmfamily +% \refmark{X} stands for \footnotemark[\ref{X}] +% \moretolerance will double each TeX tolerance within +% any chosen grouping (useful in narrow situations). +% \Sauter#Lignes will skip # lines (for specific usage) +% \! (negative thin space) run in non math mode +% \frenchalias\your_short_name\the_long_french_macro_name +% to give a short name to a very long macro name. +% Suboption: \abbreviations allowing to ask for: "name_to_be_abbreviated" +% will print abbreviation if found otherwise will give a +% warning and print the name asis. The first char. of +% "name" is not compared, except if the abbreviation file +% contains {Name}. Customisation is allowed like this: +% \abbreviations[my_abbrev_file] +% \noabbreviations is the default option +% \nofrenchmacros Nullify former actions +% +% Some complemetary macros used in other parts: +% \ordinal{counter} gives "premier", "deuxieme", ... "vingtieme" +% \Ordinal{counter} gives "Premier", "deuxieme" ... +% \ordinale{counter} gives "premi\`ere", ... +% \Ordinale{counter} gives "Premi\`ere", ... +% +% Macros to output messages: +% \kbtypeout{msg} issue msg on console, translating or not +% the accent macros and not expanding the activated chars. +% Under control of \@kbspecials for 8-bit output +% translation possibility. Such package like +% kbconfig/keyboard can translate to the +% appropriate keyboard encoding. In fact \kbtypeout is +% equivallent to \kbIO[\typeout]. +% \kbIO[output_macro]{msg_text} allows to output the message +% either on log file (\wlog), or on console (\tyepout) +% or even on any file (\immediate\write...) +% +%-------------------- +% \frenchwarnings let french issue its warnings, this is the default. This +% part has the followings sub-options: +% Suboption: \frenchtrivsepwarnings let french inform the user when +% vertical spacing is not respected as requested in +% a non-standard environment. This is the default +% Suboption: \nofrenchtrivsepwarnings ask french not to issue any warning +% regarding the vertical spacing requested by the +% user and not applied. This is the default when user +% choose his own values for spacing via \frtrivseplengths. +% \nofrenchwarnings instruct french to stop to issue messages. +% This syntax is probably not the final one. +%-------------------- +% +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% =============================== +% | About typing | +% =============================== +%% No code here, just an advice. +%% +%% Inputing French punctuation you must type a space: +%% - before a double punctuation (! ? ; :) +%% - before >> +%% - after << ; : +%% Double " or single quoting ` ' as well as single guillemets < > must not +%% be used in french. +%% Type ... normally (instead of \dots or \ldots). +%% Respect French abbreviations like: +%% \hbox{c.-\`a-d.} / \emph{i.e.} / p.ex. / \etc. / cf. / id. / +%% p.i. / p.o. / doc. / chap. / part. / vol. / paragr. / R.S.V.P. / ... +%% +%% Please apply these allmost elementary (and historical) rules. +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +\def\@txt@msg#1{#1}% -Just get arg and remove {}. +\def\@gobbleopt[#1]{}% +\def\f@issue#1#2{#1{#2}\@ifnextchar[{\@gobbleopt}{}% -] + }% +%#< +% Firstly we add the material to use the "msg" package for localization. +\def\@tempc{% +\def\f@issue##1##2{\f@issue@[##1]##2\void}% -The local \issuemsg macro. + % -which will call the real one; + % -#1 is the macro message required. + % -#2 is the message header + msg number + % -such as "^^J -234-", just message + % -number (234) is kept. +\def\f@issue@[##1]##2-##3-##4\void{\issuemsg[##1]##3(french)}% +\PassOptionsToPackage{french}{msg}% +\ifx\LdfInit\@undefined% + \RequirePackage{msg}% -Usually, load the msg package. +\else% -But with Babel, dont use \usepackage or such, + \let\@GOfrench\@currname% -Save current package name. + \xdef\@currname{msg}% -Set package req. + \def\intern@lc@llfrom{\frenchpack}% -Say him it's an internal/kernel call. + \let\fp@languagename\languagename% -Save current language name. +% -now we force French for the msg package. + \ifx\documentclass\@twoclasseserror% -When not a kernel case + \def\languagename{french}% - force French for the msg package. + \fi + \@@input msg.sty% -and input it now + \let\languagename\fp@languagename% -Reset current language name. + \let\fp@languagename\undefined% + \let\intern@lc@llfrom\undefined% + \let\@currname\@GOfrench% -Reset original package name. +\fi% + }% -\@tempc +\def\@tempd{\def\f@issue##1##2{\@ifnextchar[{\@gobbleopt}{}% -] + }% + }% -\@tempd +% Prepare to compare \jobname and license file name. +\edef\@tempa{\expandafter\noexpand\csname str-\jobname\endcsname}% +\edef\@tempb{\expandafter\noexpand\csname str-frlicense\endcsname}% +% FrenchPro requires msg.sty and *-msg.tex files +\ifx\@tempa\@tempb% -but only for typesetting a document. +\IfFileExists{msg.sty}{\@tempc}{\@tempd}\else% +\IfFileExists{msg.sty}{\@tempc}{% -Avoid loading it if msg.sty doesn't exist. + \typeout{^^J -81- WARNING: "msg" package not found;% +^^J\space\space\space\space\space\space continuing without message texts.}% + }% +\fi% +%#> +\newif\ifECM% +% Here come \if-switches codes in case of french.sty badly initiated +\def\ErrFrench{\f@issue\@fW{-26- % +%\@txt@msg{Erreur d\'etect\'ee dans \frenchname.sty !}% +%\@txt@msg{(voir p.ex. le fichier language.dat)}% + }}% +\def\ifFTY{\ErrFrench}\def\ifFTR{\ErrFrench}\def\ifFG{\ErrFrench}% +\def\ifFLA{\ErrFrench}\def\ifFMA{\ErrFrench}\def\ifFH{\ErrFrench}% +\def\ifArG{\ErrFrench}\def\ifFTSW{\ErrFrench}\def\ifFW{\ErrFrench}% +% +\edef\GOfrench{`\string @}% -temp def further correctly defined +\ifnum\catcode\GOfrench=11% -mods of code proposed by DT that + \let\resetat\relax% -accepts also that @ were active + \else\edef\resetat{\noexpand\catcode\GOfrench=\the\catcode\GOfrench}% + \makeatletter\fi% +% +\let\@currnameORI\@currname% -save current package name +\xdef\@currname{\frenchname}% -set pasckage req. +{\def\'{\string\'}% -to avoid \accent@spacefactor=\undefined (in pr\'e-) + \ProvidesPackage{\frenchname}% + [\FSfd\space The \frenchpack\space package /\FSfv/]% +}% +\def\GOfrench{babel}\ifx\@currnameORI\GOfrench% -allow Babel to load me + \ifx\undefined\babel@core@loaded\input babel.def\relax\fi% + \ifx\undefined\babel@core@loaded% -still undefined (>3.5)? + \let\babel@core@loaded\main@language\fi% + \fi% +%#< +%\let\FSfd=\undefined% let it defined for possible patch test. +\def\@tempa#1V#2,#3\@nil{\def\@FSfv{#2}}\expandafter\@tempa\FSfv\@nil% +%#> +\let\FSfv=\undefined% -return to the pool +\IfFileExists{frpatch.sty}{\def\FSfd@patch{unknown}}{\let\FSfd@patch\FSfd}% +% +\if@compatibility% -provide error msg with 2.09 emulation + \f@issue\typeout{^^J -68- + %\@txt@msg{ERROR: \frenchpack\space is no more running }% + %\@txt@msg{with 2.09 emulation, sorry!}% + }\expandafter\stop% +\fi% +% +\ifeF@LuaTeX\relax\else +\ifx\l@french\undefined\f@issue\typeout{^^J -20- + %\@txt@msg{WARNING:}% + %\@txt@msg{the French language is undefined in your format.}% + }% +\fi% +% +\fi% +\fontencoding{\encodingdefault}\selectfont% + \def\@temp@{OT1}\ifx\@temp@\f@encoding% + \def\@temp@{\global\ECMfalse}% + \else\def\@temp@{LO1}\ifx\@temp@\f@encoding% + \def\@temp@{\global\ECMfalse}% + \else% -could be LY1 + \def\@temp@{\global\ECMtrue}% + \fi% + \fi% +\@temp@% +\def\@tempa{\let\ifEightBitOutput\iffalse}% +\ifx\EightBitOutputfalse\undefined\expandafter\@tempa\fi% +\ifECM\else\ifx\charsubdef\undefined% + \def\@tempa{\noexpand\dGs}% + \ifx\@tempa\dGs\else% + \ifx\@kb@msgXXIX\relax\else% -Don't issue if already done. + \f@issue\typeout{^^J -29- % +%\@txt@msg{***Warning***\string: TeX engine in use along with CM fonts }% +%\@txt@msg{(as in current TeX format) isn't sufficient to hyphenate }% +%\@txt@msg{words containing diacritics (like in French).}% + }% + \let\@kb@msgXXIX\relax% + \fi% + \fi% +\fi\fi% +\ifx\undefined\@dblarg% -....................................... \@dblarg +\long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}}% +\long\def\@xdblarg#1#2{#1[{#2}]{#2}}% +\fi% +\newdimen\@FrDimen% -general def for the style +\def\usualmessages{\let\ifEightBitOutput\iftrue}% + \ifnum\inputlineno=-1\def\@o@l{.}% -may be negative + \else\def\@o@l{ (\`a la ligne \the\inputlineno).}\fi% + \expandafter\let\expandafter\@aiguORI\expandafter=% + \csname OT\string1\string\'\endcsname% + \expandafter\let\expandafter\@gravORI\expandafter=% + \csname OT\string1\string\`\endcsname% + \expandafter\let\expandafter\@acchORI\expandafter=% + \csname OT\string1\string\^\endcsname% + \expandafter\let\expandafter\@tremORI\expandafter=% + \csname OT\string1\string\"\endcsname% + \expandafter\let\expandafter\@cediORI\expandafter=% + \csname OT\string1\string\c\endcsname% +%#< This is a little code to avoid braces to be striped when the token +% is provided via a macro parameter. +\def\@PreserveBraces[#1#2]% -................................... \@PreserveBraces + {\ifcat\noexpand#1$ #1#2\def\@temp@{}% + \else\def\@temp@{#2}% + \ifx\@temp@\empty\def\@temp@{#1}% + \else\def\@temp@{{#1#2}}\fi% + \fi\expandafter\@temp@}% +% +\def\@temp@{lplain-bilingual}% -E.P. wrong old def checking +\ifx\fmtname\@temp@\f@issue\typeout{-64- % + \@txt@msg{ERROR: invalid \string\fmtname\space in lplain.tex}% + }\stop\fi% +%% code to test the shareware licence suppressed eFrench +\let\@tempc\relax% -AmS bug: \@tempc=\if. +% +\ifx\today\undefined\let\today\cejour\fi% -for lettre.cls +\ifx\today\undefined\f@issue\typeout{^^J -52- % +%\@txt@msg{Error: the \frenchpack\space package doesn't run in }% +%\@txt@msg{such minimal document class, sorry!}% + }\expandafter\stop% +\fi% +{\def\GOfrench{\global\let\ifEightBitOutput\iffalse}% -force seven bits + \let\add@accent\@gobble\edef\@tempa{\`{}}% + \def\@tempb{{\setbox \@tempboxa \hbox {}\accent 18 }}% + \ifx\@tempa\@tempb% -hum, OT1 is just loaded, so no expand. + \expandafter% + \GOfrench% -and force seven bits for all \@fw messages. + \fi% +}% +% Macro to send a message without header: +\def\@fW#1{{\let\@nobraces\@firstofone% + \ifEightBitOutput% + \setbox\@tempboxa\hbox{\`\space}% -For \add@accent expansion. + \ifx\charsubdef\undefined\else% -case MlTeX only + \let\add@accent\@gobble% -Avoid redef. by fontenc loading. + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \def\^##1{\expandafter\@nobraces\@acchORI##1}% + \fi% + \else% + \let\protect\string\let\add@accent\@gobble% + \fi% + \edef\@tempa{#1}\typeout{\@tempa}}}% +{\def\ier{er}% -this is the French typographic abbreviation of "st" +\f@issue% +\@fW{^^J -23- %\@txt@msg{Extension \string : \frenchpack\space}% +%\@txt@msg{\frenchstyleid\space(B.Gaulle)}% + }% +}% +% +\let\ifFW\iftrue% -Start with (warning) messages +\def\@fw#1{{\let\@NoFr\relax% -Avoid any loop inside \kbtypeout. + \ifFW\kbtypeout% -..................................... French warning + {^^J \frenchname.sty \string : #1\@o@l}% + \fi% + }}% -Notice: after \begin{document} there is no more need to +% protect active characters against expansion. +\ifx\kbtypeout\undefined% +% Notice that \kbtypeout can be set to \relax\egroup by keyboard.sty. +\def\@kbtypeout[#1]#2{\ifEightBitOutput\let\@typeset@protect\protect\fi% + \let\@inpenc@undefined@\@gobble% -To avoid loop. + \edef\f@tempa{#2\empty}% -Expand it now and type out. + #1{\f@tempa}\egroup}% +\def\kbtypeout{\kbIO[\typeout]}% -.................................. \kbtypeout +\def\kbIO{\bgroup% -................................................ \kbIO + \ifECM\fontencoding{OT1}\selectfont\fi% -Basic fontencoding needed. + %\nofrenchtypography% To apply only after \begin{document}. + \let\@nobraces\@firstofone% -could be provided separately, + \let\protect\string% + \ifEightBitOutput% -eg by kbconfig. + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \def\^##1{\expandafter\@nobraces\@acchORI##1}% + \def\"##1{\expandafter\@nobraces\@tremORI##1}% + \def\c##1{\expandafter\@nobraces\@cediORI##1}% + \csname @kbspecials\endcsname% -Translation settings. + \else% -7-bit output wanted. + \let\add@accent\@gobble% + \def\set@display@protect{\let\protect\noexpand}% -Have spaces! + \fi% + \@kbtypeout}% +\fi% +\ifx\@kbtypeout\undefined% -A default \@kbtypeout macro. + \def\@kbtypeout[#1]#2{#1{#2}\egroup}% +\fi% +\def\@tempb{\let\ifEightBitOutput\iffalse}% +\ifx\kbtypeout\typeout% -If no kb output encoding then set a correct \@fw cs. + \long\def\@tempa{\add@accent{19}}% -Case standard OT1 (re)loaded + \ifx\@tempa\@aiguORI\expandafter\@tempb\fi% -then force 7-bit. +\def\@fw#1{\ifFW\bgroup\let\@nobraces\@firstofone% + \ifEightBitOutput% + \ifx\charsubdef\undefined\else% + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \fi% + \else% + \let\protect\string\let\add@accent\@gobble% + \fi% + \@kbtypeout[\typeout]{^^J \frenchname.sty \string : #1\@o@l}% + \fi% + }% -Notice: after \begin{document} there is no more need to +\fi +% +\def\@Ffnt#1{\f@issue\@fw{-2- %\@txt@msg{fichier #1 non trouv\'e}% + }[#1]}% +\def\@finput#1{\InputIfFileExists{#1}{}{\@Ffnt{#1}}}% +\def\@NoFr{\f@issue\@fw{-3- % + %\@txt@msg{\frenchpack\space n'est pas actif ici !}% + }}% +\let\ifFrench\iffalse% +% +\ifx\addto\undefined% -............................................. \addto + \def\addto#1#2{\ifx#1\@undefined\def#1{#2}% + \else\ifx#1\relax\def #1{#2}% + \else{\toks@\expandafter{#1#2}% + \xdef#1{\the\toks@}}% + \fi% + \fi% + }% +\fi% +\def\fraddto#1#2{\addto{#1}{#2}% -.................................... \fraddto + \ifFrench\french\else\english\fi}% +% The following macro designed to protect against expansion. +\ifx\MakeRobustCommand\undefined% -.......................... \MakeRobustCommand +\def\MakeRobustCommand#1{\expandafter\expandafter\expandafter% + \let\expandafter\expandafter\csname #1 fp\endcsname% + \csname #1\endcsname% + \expandafter% + \edef\csname #1\endcsname{\expandafter\protect% + \expandafter\noexpand\csname #1 fp\endcsname} + }% +\fi% +% +\ifx\DocInput\undefined\else% -...................................... \DocInput + \let\fr@di\DocInput\def\DocInput#1{% -for ltxdoc.cls + \ifFrench\english\fr@di{#1}\french% + \else\fr@di{#1}% + \fi\relax}% +\fi% +\ifx\url\undefined\else% -................................................ \url + \let\fr@ul\url\def\url#1{% -for hyperref package + \ifFrench\english\fr@ul{#1}\french% + \else\fr@ul{#1}% + \fi\relax}% +\fi% +\ifx\xy\undefined\else% -.................................................. \xy + \let\fr@xy\xy\def\xy{% -for XY-pic and diagxy packages + \ifFrench\nofrenchguillemets\DFPdp\fi\fr@xy}% +\fi% +\ifx\hyper@n@rmalise\undefined\else% -.............................. \href + \let\fr@hne\hyper@n@rmalise\def\fr@hnr#1#2{\fr@hne{#1}{#2}}% -. \hyperref + \def\hyper@n@rmalise{\ifFrench\english\expandafter\fr@hnr% -.. \hyperimage + \else\expandafter\fr@hne\fi}% +\fi% +\ifx\PDFSCR@Info\undefined\else% -Remove last dot in sect. numbers of pdfscreen. + \def\@seccntformat#1{\protect\textcolor{section\thesection@level}% + {\expandafter\upshape\csname the#1\endcsname}\quad}% +\fi% +% The following should be obsolated: +\ifx\listing\undefined\else% -........................................ \listing + \let\fr@li\listing% -Save current definition of \listing. +%\newcommand\listing[2][1]{...} definition inside moreverb package, i.e.: +\edef\listing{\noexpand\@protected@testopt\noexpand\listing% + \expandafter\noexpand\csname\string\listing\endcsname {1}}% +%% Old moreverb def: \def\listing{\@ifnextchar[{\@listing}{\@listing[1]}}% + \ifx\fr@li\listing% + \def\listing{% -for moreverb package + \ifFrench\expandafter\english\expandafter\fr@li% + \else\expandafter\fr@li% + \fi}% + \else% + \long\def\listing{% -for listing package + \ifFrench\expandafter\english\expandafter\fr@li% + \else\expandafter\fr@li% + \fi\relax}% + \fi% +\fi% +\ifx\inputlisting\undefined\else% -.............................. \inputlisting + \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{% + \ifFrench\english\fr@PL[#1]\french% + \else\fr@PL[#1]% + \fi\relax}% +\fi% +% For listings package > (or equal to) V0.2000 +\ifx\lstlisting\undefined\else% -.................................. \lstlisting + \let\fr@lsi\lstlisting\long\def\lstlisting{% -for listings package + \ifFrench\expandafter\english\expandafter\fr@lsi% + \else\expandafter\fr@lsi% + \fi}% +\fi% +\ifx\lstinputlisting\undefined\else% -........................ \lstinputlisting + \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{% + \ifFrench\english\fr@PL[#1]\french% + \else\fr@PL[#1]% + \fi}% +\fi% +%#< +\def\ifFrench#1\fi{\@NoFr}% -a temporary definition for error messages + %(\endnonfrench remains \undefined) +\def\originalinput#1{\ifFrench\english\@finput{#1}\french% -..... \originalinput + \else\@finput{#1}\fi\relax}% +\def\originaloutput[#1]{% -..................................... \originaloutput + \ifFrench\english\fi% + \def\@riginalout##1##2{\immediate\write##1{##2}}% + \@riginalout{#1}}% +\let\ifFLA\iffalse% -We need \ifFLA now +\@ifundefined{printindex}{% -makeidx.sty is included (as of 20-jan-87) + \def\see#1#2{\seename% -i assume this macro is defined in non-english sty. + \/ {#1}}% -.........................................\see + \def\printindex{\clearpage% -................................ \printindex + \ifx\hyper@refstepcounter\undefined\else% + \stepcounter{subparagraph}% + \hyper@refstepcounter{subparagraph}% + \fi% + \addcontentsline{toc}{chapter}% + {\protect\indexname}% + {\let\@ti\theindex% -........................ \theindex + \def\theindex{\@ti\ifFLA\thispagestyle{french}\fi}% + \@finput{\jobname.ind}}}}{}% +\ifx\printnomenclature\undefined\else% -................... \printnomenclature +\let\@pne\printnomenclature% -No French warnings with the nomenclature +\def\printnomenclature{\nofrenchwarnings\@pne}% -package. +\fi% +\ifx\thebibliography\undefined\else% +\let\@tbs\thebibliography% +\let\fr@savebib\thebibliography% +\long\def\thebibliography#1{% -..............USUAL........... \thebibliography + \ifFLA% + \ifx\hyper@refstepcounter\undefined\else% + \stepcounter{subparagraph}% + \hyper@refstepcounter{subparagraph}% + \fi% +\ifx\bibname\undefined% + \addcontentsline{toc}{chapter}{\refname}% +\else% + \addcontentsline{toc}{chapter}{\bibname}% +\fi% + \fi% + \@tbs{#1}% + }% +\ifx\bt@stepcnt\undefined% +\else% -bibtopic mods adapted for jurabib too. +% A specific recoding is made for ........BIBTOPIC......... \thebibliography +% to allow bibtopic to extract de first three tokens which +% begin \thebibliography (e.g. \section*{\refname}). +\let\thebibliography\@tbs% +\let\bt@saveitem\bibitem% +\AtBeginDocument{\let\bt@savebib\fr@savebib}% -Give back thebibliography. +\def\@tempd#1#2#3#4\void{\def\@tempa{\noexpand#1}\def\@tempb{\noexpand#2}% + \def\@tempc{\noexpand#3}\def\@@tbs##1{#4}}% +\expandafter\@tempd\thebibliography{\string#1}\void% +\edef\thebibliography#1{\@tempa\@tempb\@tempc% + \noexpand\@@tbs{#1}\noexpand\@tbs}% +\def\@tbs{\ifFLA% + \ifx\hyper@refstepcounter\undefined\else% + \stepcounter{subparagraph}% + \hyper@refstepcounter{subparagraph}% + \fi% + \ifx\bibname\undefined% + \addcontentsline{toc}{chapter}{\refname}% + \else% + \addcontentsline{toc}{chapter}{\bibname}% + \fi% + \fi% + }% +\fi% -bibtopic test. +\fi% -\thebibliography defined? +% +\def\ifFLA{\ErrFrench}% -reset it to normal value here +\@ifundefined{disableindex}{}% -Ok index.sty is not loaded; + {% -Otherwise we must redefine its \see + \def\see#1#2{\seename\/ {#1}}% -which contains \emph{\seename}. + }% +\@ifundefined{seealso}{% -cf TUGboat V12#2 p290 and V13#1 p 95 .. \seealso + \def\subsee#1#2{\seealsoname% -i assume this macro is defined in non-engl. + \/ {#1}}% -the #2 consumes a comma or \dotfill + \let\nosee\@gobble% -consumes the page number + \def\seealso{\bgroup\edef\@temp@{}\@ifNextNB[{\see@@so}% -] case index.sty + {\see@lso}}% + \def\see@lso#1#2{\expandafter% + \index\@temp@{#1!zzzzz@\protect\subsee{#2}|nosee}\egroup}% + \def\see@@so[#1]{\edef\@temp@{[#1]}\see@lso}}{}% +%#> +% \if switches mechanism for french typography +% + \def\@ifFTYfalse{\let\ifFTY\iffalse}% + \def\@ifFTYback{\let\ifFTY\if@Back}% + \let\if@PMF\iffalse% -PMF siwtch off for french light. +%#< +% Poor man defs +% +\newif\if@PMF\@PMFfalse% +\def\pmfrench{\@PMFtrue\f@issue\@fw{-4- % +%\@txt@msg{entering now "Poor-Man-French-Style" way}% + }% + \def\frenchname{pmfrench}}% +%#> +% Font processing +% +% look at \GOfrench for \footnotesize, \Huge, \sm@ller, \l@rger and co. +% +% information messages: +\f@issue% +\@fW{ -24- % +%\@txt@msg{\frenchname.sty utilise dans ce document le codage de fonte }% +%\@txt@msg{\f@encoding.^^J}% + }% + % +\f@issue% +\@fW{ -25- %\@txt@msg{\frenchname.sty affiche ici ses messages en }% +%\@txt@msg{\ifEightBitOutput8-bits.\else7-bits << \string\`a la TeX >>.\fi}% +%\@txt@msg{^^J^^J}% + }% +% +%For testing purposes ........................................ \CheckSevenBits +\def\CheckSevenBits/#1{\def\@tempa##1##2/##3{\ifx##2\empty\else% + \f@issue% + \@fw{-51- % +%\@txt@msg{ERREUR : ce document n'a pas \'et\'e converti en 8-bits...}% + }% + \expandafter ##3\fi}\expandafter\@tempa\noexpand#1}% +% +\@ifundefined{tt}{\def\tt{\fontfamily{\ttdefault}\selectfont}}{}% -........ \tt +%#< +% What font use for guillemets? +% if \guillemetsinallfonts: the current font +% if \guillemetsinroman: 1- try EC 2- or lasy 3- otherwise math simulation +\let\ifGIAF\iftrue% -by now assume guillemets in all fonts +\@ifundefined{ly}% -try to define \ly with NFSS ........................... \ly + {% -Allways load latexsym in case of any OT1 usage. + \ifx\symlasy\undefined% -if nfltxsym option not used + \ifx\undefined\babel@core@loaded% + \RequirePackage{latexsym}% -load LaTeX symbols defs + \else% -special case Babel (dont use \usepackage) + \xdef\@currname{latexsym}% -set package req. + \@@input latexsym.sty\@@input ulasy.fd% + \fi% + \fi% + \def\@ly{\fontencoding{U}\fontfamily{lasy}% -set encoding & family + \ifGIAF\else\fontseries{m}\fontshape{n}\fi\selectfont}% + \def\ly{\ifFG\ifECM\rm\else\@ly\fi\fi}% -default is rm otherwise lasy. + }{}% +% +\ifx\guillemetsfont\undefined% +\def\guillemetsfont{\fontfamily{\rmdefault}% -................... \guillemetsfont + \fontseries{m}\fontshape{n}\selectfont}% +\fi% +\def\@gfnt{\guillemetsfont}% -Default guillemets' font is \rm. +%#> +% \string definitions and saved chars +% +\edef\lq{\string`}\edef\rq{\string'}% -as usual in LaTeX .............. \lq \rq +\let\@cilq='% -this will be the catcode independent left quote +\edef\lqq{\string`\string`}\edef\rqq{\string'\string'}% -.............. \lqq \rqq +\edef\pointvirgule{\string;}% -.................................... \pointvirgule +\edef\deuxpoints{\string:}% -........................................ \deuxpoints +\let\@cidp=:% -this will be the catcode independent double point +\edef\pointexclamation{\string!}% -........................... \pointexclamation +\edef\pointinterrogation{\string?}% -....................... \pointinterrogation +\edef\inferieura{\string<}% -....................................... \inferieura +\edef\superieura{\string>}% -....................................... \superieura +\edef\dittomark{\string"}% -......................................... \dittomark +\let\f@par\par% -save it for \lettrine inside a list environment. +\let\@SLQ\lq% +\def\@SRQ@{^\bgroup\prim@s}% +\def\@SRQ{\ifmmode\expandafter\@SRQ@\else\rq\fi}% +%#< +\let\@gotl\guillemotleft% +\let\@gotr\guillemotright% +\def\@temp@{LO1}\ifx\@temp@\f@encoding% + \else\edef\@temp@{OT1}\fi% +\def\@tempa#1{\expandafter\relax% -define OT1-guillemets or LO1 ones + \expandafter\global% + \expandafter\def% + \csname\@temp@\string#1\endcsname}% +\@tempa{\guillemotleft}{\let\ifECM\iffalse% + \ifFG\ly(\kern-0.20em(\else<<\fi}% +\@tempa{\guillemotright}{\let\ifECM\iffalse% + \ifFG\unskip% -last kern was not in the correct font. + \ly\kern+0.20em)\kern-0.20em)% + \else>>% + \fi}% +\let\@LSG\inferieura\def\@DOG{\inferieura\inferieura}% +\let\@RSG\superieura\def\@DFG{\superieura\superieura}% +\def\@SOC{\string[% -] emacs + }% +\def\@SFC{% -[ emacs + \string]}% +\edef\@LP{\ifECM023\else(\fi% -) emacs + }% +\edef\@RP{% -( emacs + \ifECM024\else)\fi}% +%#> +% Define Options ............................ French style OPTIONS definitions +% +\newif\ifFH% +\let\@noBDfr\@nodocument% -options can only be set after \begin{document} +\def\frenchhyphenation{\@noBDfr}% -or in \usersfrenchoptions +\def\nofrenchhyphenation{\@noBDfr}% +\def\frenchtypography{\@noBDfr}% +\def\regularmathcomma{\@noBDfr}% +\def\frenchmathcomma{\@noBDfr}% +\def\frenchwarnings{\@noBDfr}% +\def\nofrenchwarnings{\@noBDfr}% +\def\nofrenchtypography{\@noBDfr}% +\def\nofrenchtranslation{\@noBDfr}% +\def\frenchtranslation{\@noBDfr}% +\ifx\RIfM@\undefined% -used before \begin{document} by AmS classes +\def\nofrenchguillemets{\@noBDfr}% +\def\frenchguillemets{\@noBDfr}% +\def\nofrenchbguillemets{\@noBDfr}% +\def\frenchbguillemets{\@noBDfr}% +\fi% +% Defaultly, layout is not constant from one language to another. +\global\let\ifCLAfrench\iffalse% -No defaultly constant French page layout. +\def\ConstantLayout{\@noBDfr}% +%\def\nombre{\@noBDfr}% +%\def\WindowsUnits{\@noBDfr}% +%\def\FileName{\@noBDfr}% +%\def\theFileName{\@noBDfr}% +%#< +\def\originalmathcomma{\@noBDfr}% +\def\everyparguillemetsremoved{\@noBDfr}% +\def\Numeros{\@noBDfr}% +\def\order{\@noBDfr}% +\def\endorder{\@noBDfr}% +\def\sommairename{\@noBDfr}% +\def\versatim{\@noBDfr}% +\def\endversatim{\@noBDfr}% +%#> +\def\nofrenchmacros{\@noBDfr}% +\def\frenchmacros{\@noBDfr}% +\def\automaticlettrine{\@noBDfr}% +\def\noautomaticlettrine{\@noBDfr}% +\def\noeveryparguillemets{\@noBDfr}% +\def\everyparguillemets{\@noBDfr}% +\def\nofrenchlayout{\@noBDfr}% +\def\frenchlayout{\@noBDfr}% +\def\indentfirst{\@noBDfr}% +\def\nonindentfirst{\@noBDfr}% +\def\NouveauLangage{\@noBDfr}% +\def\letpunctutionactivefor{\@noBDfr}% +% This dirty hack to bypass ugly latex209 output routine of seminar slides. +\def\@tempa{\let\ifarticle\iffalse}% +\ifx\ifarticle\undefined\expandafter\@tempa\fi% +\ifx\@seminarerr\undefined\else\ifarticle\else% +\let\@soORI\shipout% +\def\shipout#1#2{\def\@tempa{slide}\def\@tempb{slide*}% + {\ifx\@tempa\@currenvir\let\protect\noexpand% + \else\ifx\@tempb\@currenvir\let\protect\noexpand\fi% + \fi% + \@soORI#1#2}% + \global\let\shipout\@soORI% -just one time mod. + }% +\fi\fi% -\@seminarerr +% The new \hyphenation macro is used first at language.dat loading for frhyphex +\let\h@yphenation\hyphenation% -save original \hyphenation +\long\def\f@hyphenation#1{\bgroup% + \let\par\space% -For \h@yphenation. + \def\-{ }% -Stops compound words. + \let\allowhyphens\undefined% -but not \allowhyphens. + \csname accenthyphcodes\endcsname% + \lowercase{\edef\@tempa{#1}}% + \h@yphenation{\@tempa}\egroup}% +% +\def\@tempa{\let\iffrenchbibliography\iftrue}% +\ifx\iffrenchbibliography\undefined\expandafter\@tempa\fi% +% +\ifx\nombre\undefined\else\let\@nomORI\nombre\fi% +% +\begingroup\obeyspaces% +\gdef\@@nombre{\ifFTY\@mathcomma\obeyspaces\let =\,\fi}% +\endgroup% +\def\@nombre#1{\bgroup\let\ifFTY\iftrue\def\@tempa{#1}% + \def\,{\ifmmode\mskip\thinmuskip\fi}% + \if@filesw{\immediate\openout\@inputcheck=\jobname.tmp% + \let\protect\noexpand% + \ifmmode% + \immediate\write\@inputcheck{\protect\makeatletter% + \protect\@@nombre% + \@tempa\ignorespaces}% + \else% + \immediate\write\@inputcheck{\protect\makeatletter% + \protect\@@nombre% + $\@tempa$\ignorespaces}% + \fi% + \immediate\closeout\@inputcheck% + }% + \immediate\openin\@inputcheck=\jobname.tmp% + \immediate\read\@inputcheck to\@tempa% + \immediate\closein\@inputcheck% + \def\@tempa{{\input{\jobname.tmp}}}% + \fi% + \@tempa\egroup% + }% +% French Lite defs: +\ifx\nombre\undefined\DeclareRobustCommand*{\nombre}{\@nombre}\fi% +\ifx\WindowsUnits\undefined% -.................................... \WindowsUnits + \def\WindowsUnits{\@wu}\fi% +% +\def\FileName{\bgroup% -.............................................. \FileName + \def\@FNenc@loop##1##2{\@tempcnta`##1\relax% + \loop\catcode\@tempcnta=11% + \ifnum\@tempcnta<`##2\relax% + \advance\@tempcnta\@ne% + \repeat}% + \@FNenc@loop\^^A\^^H% + \@FNenc@loop\^^K\^^K% + \@FNenc@loop\^^N\^^_% + \@FNenc@loop\^^?\^^ff% -128-255 + \@FileName}% +\def\@FileName#1{\gdef\theFileName{#1}\egroup}% -................... \theFileName +% +\let\og\empty\let\fg\empty% -Guillemets for French light: +% Extrait de frenchb.ldf 2004/04/02 v1.6f on 2005/03/23: + \def\FrenchGuillemetsFrom#1#2#3#4{% + \DeclareFontEncoding{#1}{}{}% + \DeclareFontSubstitution{#1}{#2}{m}{n}% + \DeclareTextCommand{\guillemotleft}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3}}% + \DeclareTextCommand{\guillemotright}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} + \def\CyrillicGuillemets{\FrenchGuillemetsFrom{OT2}{wncyr}{60}{62}} + \def\PolishGuillemets{\FrenchGuillemetsFrom{T1}{lmr}{19}{20}} + \def\LasyGuillemets{% + \DeclareTextCommand{\guillemotleft}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}}% + \DeclareTextCommand{\guillemotright}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}} +\ifeF@NoEnc\else + \IfFileExists{t1lmr.fd}{\PolishGuillemets}{\LasyGuillemets} +\fi + \DeclareTextSymbolDefault{\guillemotleft}{OT1} + \DeclareTextSymbolDefault{\guillemotright}{OT1} + \def\guill@spacing{\penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font + minus.8\fontdimen4\font} + \DeclareRobustCommand*{\begin@guill}{\leavevmode + \guillemotleft\penalty\@M\guill@spacing} + \DeclareRobustCommand*{\end@guill}{\ifdim\lastskip>\z@\unskip\fi + \penalty\@M\guill@spacing\guillemotright\xspace} + \AtBeginDocument{\ifx\xspace\@undefined\let\xspace\relax\fi} + \def\bbl@frenchguillemets{\renewcommand{\og}{\begin@guill}% + \renewcommand{\fg}{\end@guill}} + \def\bbl@nonfrenchguillemets{\renewcommand{\og}{``}% + \renewcommand{\fg}{\ifdim\lastskip>\z@\unskip\fi ''}} +%%%%%%%%%%%%%%% +\def\@ifo{% -\GOfrench 1st part: options to be defined at \begin{document} +\def\kbIO{\bgroup% -Is redefined at \begin{document} + \ifECM\fontencoding{OT1}\selectfont\fi% -Basic fontencoding needed. + \ifFTY\expandafter\nofrenchtypography\fi% + \let\@nobraces\@firstofone% -could be provided separately, + \let\protect\string% + \ifEightBitOutput% -eg by kbconfig. + \def\'####1{\expandafter\@nobraces\@aiguORI####1}% + \def\`####1{\expandafter\@nobraces\@gravORI####1}% + \def\^####1{\expandafter\@nobraces\@acchORI####1}% + \def\"####1{\expandafter\@nobraces\@tremORI####1}% + \def\c####1{\expandafter\@nobraces\@cediORI####1}% + \csname @kbspecials\endcsname% -Translation settings. + \else% -7-bit output wanted. + \let\add@accent\@gobble% + \def\set@display@protect{\let\protect\noexpand}% -Have spaces! + \fi% + \@kbtypeout}% +\let\s@owhyphens\showhyphens% +% Save original settings of \dospecials et \@sanitize +\let\@dsORI\dospecials% -...........................\@dospecials.........original +\@ifundefined{@sanitize}{\def\@sanitize{\relax}}{}% +\let\@saORI\@sanitize% -............................\@sanitize...........original +\def\frenchhyphenation{% + \ifFH\else\FHtrue% -....................\frenchhyphenation + \edef\@uchORI{\the\uchyph}% -save previous uchyph value + \def\@Hif{\ifFH}\let\@Hfi\fi% + \lccode `\'=`\'% + \ifx\flowercase\undefined\else\def\lowercase{\flowercase}\fi% + \@ifundefined{allowhyphens}{% -.............................. \allowhyphens + \def\allowhyphens{\ifhmode\nobreak\hskip\z@skip\fi}}{}% +% % There is no need to change here left&right hyphenmin counts +% % but other languages might have changed default values + \@ifundefined{lefthyphenmin}{}% + {\lefthyphenmin=2\righthyphenmin=3}% -disallow x- or -xx breaks + \@whatUCH% -set Upper Case Hyphenation whatsit + \def\@tempa####1{{\accenthyphcodes\h@yphenation{####1}}}% + \ifx\@tempa\hyphenation\f@issue% + \@fw{-41- %\@txt@msg{your format is out of date, }% + %\@txt@msg{please run initex again!}% + }\stop% + \fi% + \def\accenthyphcodes{% -Use fontencoding just + \let\@typeset@protect\protect% -in a + \ifx\protect\noexpand\else% -typesetting process. + \ifECM\else\fontencoding{T1}% + \let\pickup@font\@gobble% + \let\size@update\relax\selectfont% + \fi\fi}% + \let\hyphenation\f@hyphenation% + \def\showhyphens####1{\bgroup% + \csname accenthyphcodes\endcsname% + \protected@edef\@tempa{####1}% + \s@owhyphens{\@tempa}\egroup}% + \fi}% -\ifFH +\def\nofrenchhyphenation{% + \ifFH\FHfalse% -....................\nofrenchhyphenation + \lccode`\'=0% + \let\hyphenation\h@yphenation% -restore original \hyphenation + \let\showhyphens\s@owhyphens% + \ifx\lowercaseORI\undefined\else\let\lowercase\lowercaseORI\fi% + \@ifundefined{lefthyphenmin}{}% + {\lefthyphenmin=2\righthyphenmin=3}% -disallow x- or -xx breaks + \uchyph=\@uchORI% -reset original hyph. on words starting with capitals + \fi}% +%#< +\edef\originalmathcomma% -.................................. \originalmathcomma + {\noexpand\mathcode`,=\the\mathcode`,}% +%#> +\@tempcnta=\the\mathcode`,\@tempcntb=\the\mathcode`,% +\divide\@tempcnta by 4096\relax% -On r'ecup`ere la classe (demi octet poids fort) +\multiply\@tempcnta by -4096\relax% -en 'eliminant les poids failbles. +\advance\@tempcntb by \@tempcnta% -On garde le restant de poids faible. +\edef\@tempb{\noexpand\mathcode`,=\the\@tempcntb}% -French is usually "013B. +\advance\@tempcntb by 24576\relax% +\edef\@tempa{\noexpand\mathcode`,=\the\@tempcntb}% -Regular is usually "613B. +% Regular LaTeX math code for comma is usually "613B (ie 24891). +\edef\regularmathcomma{% -.................................... \regularmathcomma + \noexpand\def\noexpand\@mathcomma{\@tempa}% + \noexpand\@mathcomma}% +\def\@tempa{\if\space\next\else\mathord\fi\mathcomma}% +\let\ifFTY\iftrue% -For the following definitions: +\ifx\@tempa\sm@rtcomma% -In case icomma is in force we use: + \def\frenchmathcomma{% -...................................... \frenchmathcomma + \def\@mathcomma{\ifFTY\mathcode`\,="8000\fi}% + \@mathcomma}% +\else% -otherwise: +\edef\frenchmathcomma{% -French math code for comma is usually "013B (ie 315). + \noexpand\def\noexpand\@mathcomma% + {\noexpand\ifFTY\@tempb\noexpand\fi}% + \noexpand\@mathcomma}% +\fi% +\frenchmathcomma% -Is the default for french. +\def\ifFTY{\ErrFrench}% +% +\def\nofrenchtypography{% -...................................\nofrenchtypography + \let\ifFTY\iffalse\let\if@Back\ifFTY% +% Reset OT1 definition of \textbackslash to undefined. +\expandafter\let\csname OT1\string\textbackslash \endcsname\undefined% +%#< + \notabbingaccents% -usefull in T1 too with 8bits chars. +%#> + \nofrenchguillemets% -reseting our guillemets + \nofrenchbguillemets% -and those as frenchb + \sloppy% -may extend line past the right hand + \nonfrenchspacing% + \regularmathcomma% +% necessary to commute in case of \XeTeXinterchartokenstate + \eFr@Typofalse + }% +\def\frenchtypography{% -.......................................\frenchtypography + \let\ifFTY\iftrue\let\if@Back\ifFTY% +% Add OT1 definition of \textbackslash, missing inside \LaTeX. +\expandafter\let\csname OT1\string\textbackslash \endcsname\@boiORI% + \let\ifLPA\iffalse% -default is clean... + \typedspaces% +%#< + \nowrongtypedspaces% + \tabbingaccents% -usefull in T1 too with 8bits chars. + \englishquote\englishdoublequotes% + \nolabelsinmargin% + \frenchguillemets% +%#> + \frenchbguillemets% +%#< + \normalbrackets\todayguillemets% + \guillemetsinroman\guillemetsinarrays% +%#> + \edef\@tempa{\the\vfuzz}% -AmS may have changed \vfuzz + \fussy% -must not extend line past the right hand + \vfuzz=\@tempa% -and should not change \vfuzz + \frenchspacing% + \frenchmathcomma% +% \nooverfullhboxmark% std LaTeX default not plain +% necessary to commute in case of \XeTeXinterchartokenstate + \eFr@Typotrue + }% +\def\nofrenchtranslation{% + \let\ifFTR\iffalse\@cORI}% -........\nofrenchtranslation +\def\frenchtranslation{% + \let\ifFTR\iftrue\captionsfrench}% -....\frenchtranslation +\let\frenchguillemets\relax\let\nofrenchguillemets\relax% +\let\frenchbguillemets\bbl@frenchguillemets% -............... \frenchbguillemets +\let\nofrenchbguillemets\bbl@nonfrenchguillemets% -........ \nofrenchbguillemets +%#< +\def\frenchguillemets{% + \let\ifFG\iftrue% -..................... \frenchguillemets + \let\guillemets\@LG% + \let\endguillemets\RG@% + \let\guillemotleft\f@guillemets% + \let\guillemotright\endf@guillemets% + \AFPinfsup}% +\def\nofrenchguillemets{% + \let\ifFG\iffalse% -.................. \nofrenchguillemets + \let\guillemotleft\@gotl% + \let\guillemotright\@gotr% + \let\guillemets\f@guillemets% + \let\endguillemets\endf@guillemets% + \DFPinfsup}% +\def\noeveryparguillemets{\let\ifEPG\iffalse% -.............\noeveryparguillemets + \@desarm\let\@desarm\relax% -release memory + \def\guillemets{%%\leavevmode\unskip% + \f@issue% + \@fw{-53- % + %\@txt@msg{environnement guillemets }% + %\@txt@msg{ inutilisable avec l'option }% + %\@txt@msg{\string\noeveryparguillemets}% + }% + \bgroup\bgroup% + \def\guillemets{\bgroup% + \let\endguillemets\egroup}}% + }% +\def\everyparguillemets{\let\ifEPGR\iffalse% -.............. \everyparguillemets + \let\ifEPG\iftrue% + \let\guillemets\@LG% + \let\endguillemets\RG@% + }% +\def\everyparguillemetsremoved{% + \let\ifEPGR\iftrue}% -........ \everyparguillemetsremoved +%#> +\def\@tempa{\global\let\ifCLA\iffalse}% -If not already set, no defaultly +\ifx\ifCLA\undefined\expandafter\@tempa\fi% -constant language layout. +\def\ConstantLayout{\global\let\ifCLA\iftrue% -...................\ConstantLayout + \expandafter\let\csname ifCLA\languagename\endcsname\iftrue% + \def\@tempa{\let\ifbbbbfixlanguage\iftrue}% + \ifx\ifbbbbfixlanguage\undefined\@tempa\fi% + \def\@tempa{\ifbbbbfixlanguage\else% + \f@issue% + \@fw{-85- %\@txt@msg{Attention \string: l'option fixlanguage }% +%\@txt@msg{n'a pas ete fournie a l'appel de babelbib}% + }\fi% + }% + \ifx\@nodocument\relax\@tempa% + \else\ifx\btxselectlanguage\undefined% + \PassOptionsToPackage{fixlanguage}{babelbib}% + \else\@tempa% + \fi% + \fi% + \let\ConstantLayout\relax}% -This is a one time macro. +% +\def\nofrenchlayout{\nofrenchtrivsep% + \let\ifFLA\iffalse\@EIM}% -...................\nofrenchlayout +\def\frenchlayout{% + \let\ifFLA\iftrue\everyparguillemets% -...........\frenchlayout + \@FIM\@FL\let\@FL\empty\noautomaticlettrine% + \frenchtrivsep}% +\def\frenchwarnings{\let\ifFW\iftrue% -......................... \frenchwarnings + \frenchtrivsepwarnings}% +\def\nofrenchwarnings{\let\ifFW\iffalse% -..................... \nofrenchwarnings + }% -This code is not completed. +%#< +\def\nofrenchmacros{\let\ifFMA\iffalse}% -........................\nofrenchmacros +\def\frenchmacros{\let\ifFMA\iftrue\@ifm% -.........................\frenchmacros + \let\@ifm\relax}% -release memory +%#> +}% -end of \@ifo {\GOfrench part 1} +%#< +\long\def\usersfrenchoptions% -............................. \usersfrenchoptions + {\bgroup\makeatletter% +% \expandafter\makeatother% + \expandafter\egroup% + \g@addto@macro\@ufo}% +%#> +\ifx\@ufo\undefined% + \let\@ufo\empty% -necessary for babel when loading +\fi% +% +%....................................................... Modified TeX macros +% + \def\prim@s{\prime\futurelet\@let@token\pr@m@s}% + \def\pr@m@s{\ifx\@cilq\@let@token\expandafter\pr@@@s% + \else\ifx^\@let@token\expandafter\expandafter\expandafter\pr@@@t% + \else\egroup\fi% + \fi}% +\let\@fsORI\frenchspacing% -modified for guillemets............. \frenchspacing +\def\frenchspacing{\@fsORI\ifECM\sfcode`\(=0\sfcode`\)=1000\fi}% +%%%% +% let < ' : ` > active for the following macros and +\catcode`<=\active\catcode`>=\active\catcode`'=\active% +\catcode`:=\active\catcode``=\active% +\let<=\inferieura\let>=\superieura% -define them for french light. +\def\@Fstr{\def<{\@LSG}\def>{\@RSG}\def`{\@SLQ}\def'{\@SRQ}% + \def:{\deuxpoints}% + \let\dGs\empty}% -Nullify any \dGs macro from keyboard.sty. +\def\@LiN{\let\@sogORI<\let\@sfgORI>\let\@lqORI`\let\@rqORI'% + \let\@dpORI:\@Fstr\@ifFTYfalse}% +\def\@LiB{\let<\@sogORI\let>\@sfgORI\let`\@lqORI\let'\@rqORI% + \let:\@dpORI\@ifFTYback}% +\catcode\lq:=12% +\let\@s@ORI\special% -................................................. \special +% done in \GOfrench: +%\def\special#1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{#1}\egroup\@ifFTYback}% +% \newcount, \newdimen, \newbox were \outer defs in plain. +% but with eTeX these definitions are ok (rj, v 6,01) +\ifx\eTeXversion\undefined% (rj) +\def\newcount{\alloc@0\count\countdef\insc@unt}% -.................... \newcount +\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}% -.................... \newdimen +\def\newbox{\alloc@4\box\chardef\insc@unt}% -......................... \newbox +\fi% (rj) +% +%........................................ Modified package's & LaTeX macros +% +% Those defs which need to be set at \begin{document} are delayed. +% Take in account the varioref package if present: +\let\ifFTY\iffalse% -Temporary definition. +\ifx\vref\undefined\else% -As \@ifpackageloaded is forbidden at +\@ifpackageloaded{varioref}{\def\@vrfCode{% -\begin{document}, test it now. + \@gG{vr}{vref}{/}{1}% -................................... \vref + \@gG{vpr}{vpageref}{1}{1}% -...........................\vpageref + \@gG{vprr}{vpagerefrange}{1}{2}% -................\vpagerefrange + \def\reftextpagerange##1##2{% -...............\reftextpagerange + pages~\pageref{##1}\ifFTY -\else --\fi\pageref{##2}}% + }% + }{}% +\fi% +\def\ifFTY{\ErrFrench}% -Reset original value. +% Take in account the beamer class (don't use \l@chapter) +\@ifclassloaded{beamer}{\let\l@chapter\empty% + \def\beamer@captiontemplate{\small\structure% + {\insertcaptionname\captionseparator\space}% + \insertcaption} + }{}% +% +\def\GOfrench{% -this is the code to initiate the French style + \def\special##1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{##1}% + \egroup\@ifFTYback}% + \let\@noBDfr\relax% -release french options/commands now + {\catcode\lq\<=\active\ifx<\undefined\else\global% + \let\@mLSG<\global% + \def\@LSG{\ifmmode\@mLSG\else\inferieura\fi}\fi}% + {\catcode\lq\>=\active\ifx>\undefined\else\global% + \let\@mRSG>\global% + \def\@RSG{\ifmmode\@mRSG\else\superieura\fi}\fi}% +\if@PMF\def\pmfrench{}\def\noeveryparguillemets{}\def\@stared{}% + \def\@desarm{}\def\@qquotes{}\def\@staring{}\def\@fniv2{}\fi% +\def\sm@llerthree{\protect\sm@ller\protect\sm@ller\protect\sm@ller} +\@ifundefined{smaller}{\def\sm@ller{\small}% -... you can use ...[smaller.sty] + \let\sm@llerthree\scriptsize% + \def\l@rger{\large}}% + {\def\RSsmallest{4pt}% -... you can use ...[relsize.sty] + \ifx\undefined\sm@ller% + \let\sm@ller\smaller\fi}% +\@ifundefined{footnotesize}{% -.................................... \footnotesize + \def\footnotesize{\sm@ller\sm@ller}}{}% +\@ifundefined{Huge}{% -.................................................... \Huge + \def\Huge{\l@rger\l@rger\l@rger\l@rger\l@rger}}{}% +%#< +\@ifundefined{lettrinefont}{\let\lettrinefont\Huge}{}% -........... \lettrinefont +\let\sv@lf=\lettrinefont% -save it +\ifx\@pdfcreator\undefined% -Complete pdf creator name. + \else\addto\@pdfcreator{, with \frenchpack\space package}\fi% +%#> +% Command to leave chapter counter asis.................... \noresetatpart +\def\noresetatpart{\ifFLA\let\cl@part\empty\fi}% +% Command to leave footnote counter asis over chapter change. +\def\noresetatchapter{\ifFLA\let\cl@chapter\empty\fi}% -....... \noresetatchapter +% Let \chapter be defined. +\@ifundefined{chapter}{}{}% -.......................................... \chapter +% Reset chapter counter when starting a part & +\@ifundefined{c@chapter}{\newcounter{chapter}}{\@addtoreset{chapter}{part}}% +\@ifundefined{quotation}{\def\quotation{}}{}% -...................... \quotation +\ifx\tableofcontents\undefined% + \else\let\@tocORI\tableofcontents\fi% -permit toc normal processing +\ifx\pdfstringdef\undefined% -Save orginal \contentsline for hyperref. + \else\let\contentslineORI\contentsline\fi% +% Coding to bypass pb of duplicate in hyprref < 6,69f +%\ifx\undefined\pdfstringdef\@tempa% Using pdfTeX hyperref should +% \else\ifx\theHchapter\undefined% have no \thechapter otherwise +% \else\@tempa% it complains arguing there is a duplicate section +% \fi% #, +%\fi% so we no more define \thechapter in that case. +\@ifundefined{l@chapter}{% -...................................... \l@chapter +\def\@tempa{% + \def\l@chapter####1####2{\addpenalty{-\@highpenalty}% + \vskip 1.0em plus\p@\@tempdima 1.5em% -numbering size + \begingroup% + \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth% + \bfseries \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip% + ####1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss ####2}\par% + \penalty\@highpenalty% + \endgroup}}% +\ifx\RIfM@\undefined\@tempa% -use l@chapter + \else% % -even with AmS styles + \ifx\fr@RIfM@cls\undefined\@tempa +\fi% -but not for AmS classes +\fi}{}% -undefined in article.sty +% Due to resetting of chapter counter at part change we have to better +\@ifundefined{theHchapter}{}% -qualify the chapter anchor names. + {\renewcommand{\theHchapter}{\arabic{part}.\arabic{chapter}}}% +% +% General code for generating replacement macros for \cite \nocite etc. +% \@gG{a string "s" for letting \@"s"@ORI as the original macro} +% {original macro name -without backslash} +% {string "/" if original macro had no [optional arg] otherwise empty} +% "1" if original macro has one req. [o.p. arg 1] +% "2" if original macro has two req. [o.p.1][o.p.2] +% "//"if no optional arg but more than one required arg: +% {number of required args} % default is 1, maximum is 3. + \def\@gG##1##2##3##4{% + \def\@temp@{\expandafter\let\csname @##1@ORI\endcsname=}% + \expandafter\@temp@\csname ##2\endcsname% + \if##3\empty% + \if2##4% + \expandafter\def\csname ##2\endcsname####1####2% + {\protect\atgG{##1}{{####1}{####2}}}% + \else% + \if3##4% + \expandafter\def\csname ##2\endcsname####1####2####3% + {\protect\atgG{##1}{{####1}{####2}{####3}}}% + \else% + \expandafter\def\csname ##2\endcsname####1% + {\protect\atgG{##1}{{####1}}}% + \fi% + \fi% + \else% -Case of just one required argument, check optional args: + \if/##3\expandafter\def\csname ##2\endcsname{\protect\atgH{##1}}% + \else% + \if2##4\expandafter\def\csname ##2\endcsname{\protect\atgN{##1}}% + \else\expandafter\def\csname ##2\endcsname{\protect\atgM{##1}}% + \fi% + \fi% + \fi}% + \def\atgG##1##2{\bgroup\@ifFTYfalse\@Fstr% + \expandafter\csname @##1@ORI\endcsname##2\egroup}% + \def\atgH##1##2{\bgroup\@ifFTYfalse\@Fstr% + \expandafter\csname @##1@ORI\endcsname{##2}\egroup}% + \def\atgM##1{\@ifNextNB[{\@gM@@{##1}}{\@gM@@{##1}[\empty]}% -]emacs + }% + \def\atgN##1{\@ifNextNB[{\@gM@@@{##1}}{\@gM@@@{##1}[\empty]}% -]emacs + }% + \def\@gM@@##1[##2]##3{\@gM@@@{##1}[##2]{##3}{}}% + \def\@gM@@@##1[##2]##3##4{\bgroup\@ifFTYfalse\@Fstr% + \xdef\@temp@{\noexpand\@gG@{##3}{##4}}\egroup% + \ifx\empty##2\let\@gG@=\empty% + \else\protected@edef\@gG@{[##2]}\fi% + \let\@typeset@protect\protect% + \protected@edef\@temp@{\noexpand\expandafter% + \noexpand\expandafter% + \noexpand\csname @##1@ORI\noexpand\endcsname% + \@temp@}\@temp@}% +% Nullify Babel mechanism which doesn't run correctly in its current version +\ifx\babel@sanitize@arg\undefined\else% +\def\babel@sanitize@arg##1{##1}% +\wlog{\frenchname.sty\string: use of the babel package force me to nullify % + \noexpand\babel@sanitize@arg.}% +\fi% +\ifx\ifthenelse\undefined\else\let\@iTeORI\ifthenelse% + \long\def\ifthenelse##1##2##3{\@ifFTYfalse\@iTeORI{##1}% + {\@ifFTYback##2}{\@ifFTYback##3}}% +\fi% +\ifx\texttt\undefined\else\@gG{xt}{texttt}{/}{1}% -...................... \texttt + \MakeRobustCommand{texttt}\fi% +\ifx\hyperbaseurl\undefined\else\@gG{hl}{hyperbaseurl}{/}{1}\fi% -. \hyperbaseurl +\ifx\Ginclude@graphics\undefined\else\@gG{ig}% -.............. \Ginclude@graphics + {Ginclude@graphics}{/}{1}\fi% -. (\includegraphics) +% As \citeyear is in various packages we check first for natbib.sty and +\ifx\NAT@citex\undefined% -then modify all \cite... commands via \@citex. + \ifx\cite\undefined\else\@gG{c}{cite}{1}{1}\fi% -.................... \cite + \ifx\citeyear\undefined\else\@gG{cy}{citeyear}{/}{1}\fi% -........... \citeyear +\else% -....................................................... Natbib \cite... + \let\@cxORI\@citex% + \def\@citex[##1][##2]##3{\@ifFTYfalse% + \let\mbox\mboxORI% + \@cxORI[##1][##2]{##3}\aftergroup\@ifFTYback}% +%%%%%%%%%%%%%%%%%%%%%%% +%Following code for Natbib and jurabib wrong, obsolate and misplaced.2006/08/15 +%\@gG{fc}{fullcite}{1}{1}% +%\@gG{cin}{citation}{/}{1}% +%\def\@lbibitem[##1]##2{\protected@edef\jb@key{##2}\def\jb@tempb{##1}}% +\@gG{cin}{citation}{/}{1}% -............................................\citation + \ifx\ifjb@index@bib\undefined\let\ifjb@index@bib\iffalse\fi% + \ifx\jb@lbibitem\undefined\else% -............... JURABIB ........ \jb@lbibitem +% Modify jurabib definition of \jb@lbibitem as of jurabib v0.6 (2004/01/25) +% with a \protected@xdef for \jb@key. + \def\jb@lbibitem[##1]##2{% + \gdef\jb@tempb{##1}% + \protected@xdef\jb@key{##2}%\gdef\jb@key{##2}% + \ifjb@index@bib% + \jb@call@index{aut}{##2}% + \jb@call@index{ed}{##2}% + \jb@call@index{org}{##2}% + \fi% + \endgroup}% + \@gG{fc}{fullcite}{1}{1}% -.......................JURABIB.............\fullcite + \fi% +\fi% +\ifx\nocite\undefined\else\@gG{nc}{nocite}{/}{1}\fi% -................... \nocite +% As \bibcite has not originally any argument the following definition +% is remove and \@newl@bel is introduced in replacement of \newlabel. +%\ifx\bibcite\undefined\else\@gG{bc}{bibcite}{1}{1}\fi%............... \bibcite +\ifx\backcite\undefined\else\@gG{bkc}{backcite}{//}{2}\fi% -........... \backcite +\ifx\bibitem\undefined\else\let\@biORI\bibitem% -...................... \bibitem + \def\bibitem{\@LiN\@ifNextNB[{\@bi@cb}{\@bi@ca}% -]emacs + }% + \def\@bi@ca##1{\@biORI{##1}\@LiB}% + \def\@bi@cb[##1]##2{\@biORI[##1]{##2}\@LiB}% +\fi% +\expandafter\ifx\string\bt@@item\undefined% -... bibtopic \\bt@@item + \else\@gG{bti}{\string\bt@@item}{1}{1}% + \fi% +% Take in account varioref package if present at \begin{document}: +\ifx\vref\undefined\else% -Nullify \@vrfCode if varioref is + \ifx\reftextvario\undefined\let\@vrfCode\undefined% -now loaded. +\fi\fi% +% +\ifx\ref\undefined\else\@gG{r}{ref}{/}{1}\fi% -............................. \ref +\ifx\tag\undefined\else\@gG{tG}{tag}{/}{1}\fi% -............................ \tag +\ifx\pageref\undefined\else\let\pageref@ORI\pageref% + \let\f@pageref\pageref\@gG{fpr}{f@pageref}{/}{1}% + \def\pageref{\ifFTY\expandafter\f@pageref\else% -....................\pageref + \expandafter\pageref@ORI\fi}% +\fi% +\csname @vrfCode\endcsname% -load mods for varioref package \vref, \vpageref +\xdef\@lim{}\let\ifMOVING\iffalse% +% The label for the subfigure package ...........................\sf@@sub@label +\ifx\sf@@sub@label\undefined\else\@gG{ss}{sf@@sub@label}{/}{1}\fi% +% Set code for labels in margin. +\def\@temp@{% + \def\label{\protect\@LabeL}% -needed to be protected for \thanks +% Remove patch $\label$ for Simon Pierre DESROSIERS 9/09/05 +% \def\@LabeL{\ifmmode\expandafter\s@LabeL\else\expandafter\t@LabeL\fi}% +% \def\s@LabeL####1{\gdef\r@LabeL{\label{####1}}\aftergroup\r@LabeL}% +% New patch for \label en mode math. 4/07/2006 % +\def\r@LabeL{\ifx\@lim\empty% -Special def to put labels in margin + \else\marginpar{\@lim@}\xdef\@lim{}% -at end of maths $$. + \fi}% -No need to nullify MOVING after group. +\def\m@LabeL{\def\@setMGtrue{\let\ifMOVING\iftrue}% + \ifmmode\@setMGtrue% -If maths go like a moving block. + \aftergroup\r@LabeL% -Do final margin at end of maths group. + \fi% + \expandafter\t@LabeL}% -Go process \label as usual. +\def\@LabeL{\ifMOVING\expandafter\t@LabeL% -If already moving process as usual + \else\m@LabeL% -else test for maths. + \fi}% +% + \def\t@LabeL####1{\@ifFTYfalse\if@labelsinmargin\ifMOVING% + \xdef\@lim{\ifx\@lim\empty\else\@lim\@@par\relax\fi[####1]}% + \gdef\@lim@{\@ifFTYfalse\hbadness=\@M\tt\@lim\@ifFTYback}% + \else\marginpar{% + \@ifFTYfalse\hbadness=\@M\tt[####1]\@ifFTYback}\fi\fi% +% how suppress Overful \hbox here? + \bgroup\@Fstr\@lORI{####1}\egroup\@ifFTYback}% + }% +\ifx\fr@RIfM@cls\undefined\else% -isolate maketitle action with AmS classes. +\let\@mtORI\maketitle% -............................................ \maketitle +\def\maketitle{{\@mtORI}}% -avoid removing of keywords environement. +\fi% +\ifx\label\undefined\else\let\@lORI\label% -.............................. \label + \@temp@% -new def apply + \let\ltx@label\label% -for amsmath.sty +\fi% +%instead this coding, active chars in \label must be protected inside a \thanks +% As the internal macro of \newlabel is \@newl@bel #1 the following +% definition of \newlabel is removed and replace by \@newl@bel. +%\ifx\newlabel\undefined\else\@gG{nl}{newlabel}{/}{1}\fi%............ \newlabel +\ifx\@newl@bel\undefined\else\@gG{nl}{@newl@bel}{//}{3}\fi% -......... \@newl@bel +\def\@temp@{% + \let\@aclORI\addcontentsline% -............................ \addcontentsline + \global\let\ifCG\iftrue% -Nullify if-guillemets on a new sectioning + \def\addcontentsline####1####2####3{\@ifFTYfalse\bgroup\@Fstr% + \@aclORI{####1}{####2}{####3}\egroup\@ifFTYback}% + }% +\@ifundefined{addcontentsline}{\gdef\addcontentsline##1##2##3{}}% -dummy def + {\@temp@}% +\let\ifFrench\iffalse% -let it be known now +\def\@temp@{% + \def\index{\bgroup\ifFrench\@DFP\fi% -Is further redefined + \expandafter\egroup\@iORI}% -inside \footnote. + }% +\ifx\index\undefined\else\let\@iORI\index% -.............................. \index + \@temp@% -new def apply +\fi% +% +\ifx\list\undefined\else% -Mods to keep track + \let\@liORI\list% -that we are in a list environment ........ \list +\fi% + \let\@topsepORI\topsep% -ans save original vertical + \let\@partopsepORI\partopsep% -spaces + \let\@itemsepORI\itemsep% -so that we could warn when + \let\@parsepORI\parsep% -user try to change them. +%\def\GOfrench{continuation -emacs pb- +\def\warn@seps{\def\topsep{\@w@s{\string\topsep}\@topsepORI}% + \def\partopsep{\@w@s{\string\partopsep}\@partopsepORI}% + \def\itemsep{\@w@s{\string\itemsep}\@itemsepORI}% + \def\parsep{\@w@s{\string\parsep}\@parsepORI}% + \def\@tempa{verse}\def\@tempb{quotation}% + \ifx\@tempa\@currenvir\let\@w@s\@gobble\else% + \ifx\@tempb\@currenvir\let\@w@s\@gobble\fi% + \fi% + }% +\def\@w@s##1{\ifFTSW\f@issue% + \@fw{-58- %\@txt@msg{valeur de ##1 ignor\'ee}% +% dans l\string'environnement \@currenvir% + }[##1]\fi}% +\def\org@seps{\let\topsep\@topsepORI% + \let\partopsep\@partopsepORI% + \let\itemsep\@itemsepORI% + \let\parsep\@parsepORI% + }% +\def\list##1##2{\def\@inAlist{}\@liORI{##1}{% + \ifx\@trivlist\@tlORI\else\warn@seps\fi% + ##2\org@seps}}% +\ifx\@makecaption\undefined\else\let\@mcORI\@makecaption\fi% -.... \@makecaption +% +\ifx\captionseparator\undefined% + \def\captionseparator{~--}% -............................ \captionseparator +\fi% +\let\ifFTY\iffalse% -Let it be knwon temporary. +% \captionseparator is off with memoir.cls, use \captiondelim. +\ifx\@contdelim\undefined\else% -..............(ccaption/memoir) \@contdelim + \ifx\@memerror\undefined% + \let\@cdORI\@contdelim% -The definition for ccaption: + \def\@contdelim{\ifFTY\space\else\@cdORI\fi}% + \else%\let\@contdelim\@cdORI% -Don't modify \@contdelim for memoir.cls + \let\captionseparator\empty% -Suppress our \captionseparator for table/figure + \let\captionfont\@conttfont% -Apply requested memoir font. + \fi% +\fi% +\def\ifFTY{\ErrFrench}% +\ifx\captionfont\undefined% -..................................... \captionfont + \let\captionfont\emph% -Std is italics. + \else\let\@cfORI\captionfont% -Might be Caption2, thus + \def\captionlabelfont{\upshape}% -set defaults. + \def\captionfont{\itshape\@cfORI}% + \ifx\captionlabeldelim\undefined\else% -Use Caption2 delimitor cs + \let\captionlabeldelim\captionseparator% -if any, and set our + \let\captionseparator\empty% -default value. + \fi% +\fi% +\def\@makecaption##1##2{\ifFTY% + \def\@secondofmany####1####2\void{####2}% +% Removed mod for empty \caption (pb with hyperref) 2007/06/28 +% \protected@edef\@tempa{\@secondofmany##2\void}% +% The previous coding don't remove the unusefull \captionseparator: + \def\@tempa{\@secondofmany##2\void}% -To debug. + \ifx\@tempa\empty% + \let\captionseparator\empty% + \fi% + \@mcORI{##1}{\relax% -for AmSLaTeX V1.2 96/11 + \captionfont{##2}}% + \else\@mcORI{##1}{##2}\fi}% +% +%Leslie claims that "The footnotemarker is regarded as having zero width, which +%is appropriate when it comes at the end of line"(p164) <== not a French habit. +\def\@temp@{% + \def\thanks####1{\global\let\@makefntext\fr@makefntext% -........... \thanks + \bgroup% + \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi\nobreak\fi% + \def\@footnotemark{\hbox{\@textsuperscript{\normalfont\,\@thefnmark}}}% + \fi\let\ifFTY\iffalse\@thORI{####1}% + \egroup}% + }% +\ifx\thanks\undefined\else\let\@thORI\thanks\@temp@\fi% +\let\ifFTY\iffalse% -temp def for next processing +\ifx\@makefnmark\undefined\else\let\@mfnmORI\@makefnmark% -........ \@makefnmark +\def\@makefnmark{\ifFTY\hbox{\@textsuperscript{\normalfont% + \ifx\thefootnote\relax\else\,\fi% + \@thefnmark}}% + \else\@mfnmORI\fi}% +\fi% +\def\@temp@{\long\def\fr@makefntext####1{% footline starts here % + \bgroup% + \ifFTY\def\@tempa{footnote}\let\@tfnORI\@thefnmark% + \ifx\@tempa\@mpfn% -do it only for page footnotes not minipages ones + \def\@thefnmark{% -marker under the footline, no more in superscript. +% two grouping levels in pure 2e. + \egroup\egroup% -no point when no marker + \long\def\@tempa{\fnsymbol{footnote}}% + \ifx\@tempa\thefootnote% -When using symbols put them + \expandafter\raise+0.55ex% -higher (cf Lexique IN p. 33) + \fi% -\thefootnote + \hbox\bgroup\textnormal\bgroup% + \def\@temp@{% +\ifx\fr@RIfM@cls\undefined% -Remove space when \thanks and AmS classes. +\ifx\thanks\relax\else\kern-1.1\parindent\fi% -.1 should be explained. +\else \kern-\parindent% -otherwise remove superfluous spacing. +\fi% +%\@ifnextchar\relax{\def\@temp@{\,}}% Prefered: + \@ifnextchar\relax{\def\@temp@{\hphantom{.}\kern+0.25em}}% + {\def\@temp@{.\kern+0.25em}}% + }% + \expandafter\@temp@\@tfnORI\@temp@% + }% + \leavevmode\kern+0.5em% -add some spacing for at least 3 digits + \else\def\@thefnmark{\@tfnORI\,}\fi% -add thin space in mpfootmarks + \fi\@mfntORI{####1}\egroup}% -\@makefntext + }% + \let\@mfntORI\@makefntext\@temp@% + \let\@makefntext\fr@makefntext% -............................. \@makefntext +\def\ifFTY{\ErrFrench}% +\let\@fntORI\@footnotetext% -nullify marginpar in ................ \@footnotext +\long\def\@footnotetext##1{\bgroup\let\if@labelsinmargin\iffalse% + \@fntORI{##1}\egroup}% +% Why \footnote doesn't \unskip the previous space? +% Allow hyphenation too with \nobreak (as suggested by Bernd Raichle) +\let\@fnORI\footnote% -............................................... \footnote +\def\footnote{\bgroup% + \def\index{\@ifnextchar[{\f@index}% -] + {\f@index@}% + }% + \def\f@index[####1]####2{\@ifFTYfalse\@iORI[####1]{####2}% + \@ifFTYback}% + \def\f@index@####1{\@ifFTYfalse\@iORI{####1}\@ifFTYback}% + \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi% + \nobreak\fi\fi% + \ifmmode\let\@fnORI\fr@footnote\fi% + \@ifNextNB[% -] for balancing + \@Footnote\@Fntnorm}% +\long\def\@Footnote[##1]##2{\@fnORI[##1]{##2}% + \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}% +\long\def\@Fntnorm##1{\@fnORI{##1}% + \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}% +\def\@Fntcoma{\ifFLA\@textsuperscript{,}\nobreak\fi}% +\def\@Fxloat##1[##2]{\@xfORI{##1}[##2]\csname @Fend\@currenvir\endcsname}% +\let\@fgeORI\figure\let\@efgeORI\endfigure% -needed for figurette +\def\@temp@{\let\@fgeORI\figure% -..................................... \figure + \def\figure{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \@set@fr@fn@% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@fgeORI}}% +\ifx\figure\undefined\let\@temp@\relax\fi\@temp@% +\def\@Fendfigure{\let\@efgeORI\endfigure% -.......................... \endfigure + \def\endfigure{\@efgeORI% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}}% +\ifx\endfigure\undefined\let\@Fendfigure\relax\fi% +\let\@cnORI\caption% -\caption is redefined in the table environement : +\def\@tablescaption{\@dblarg\@t@blescaption}% -footnote will be only +\let\mboxORI\mbox% -save \mbox definition. +\def\mbox##1{\leavevmode\hbox{\protect\@set@fr@fn@##1}}%% -.............. \mbox +\def\@set@fr@fn@{\ifFrench\let\footnote\fr@footnote\fi}% -Footnote's text lost +\def\fr@footnote{\@ifNextNB[\fr@fn@{\fr@fn@[]}% -] in tables + }% -caption. +\def\fr@fn@[##1]##2{\footnotemark% + \f@issue% + \@fw{-8- % -\@txt@msg{\string\footnotetext{##2} perdu.} +%\@txt@msg{Coder \'event. \string\protect\string\footnote}% + }[##2]% -\mbox + }% +\def\@t@blescaption[##1]##2{\let\cur@fn\footnote% -footnote mark in tables + \let\footnote\fr@footnote% -caption and text + \@cnORI[##1]{##2}\let\footnote\cur@fn}% -will be lost. +\def\@temp@{% + \let\@tbeORI\table% -footnotes made like in minipages ...... \table + \def\table{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \ifFLA\begingroup% + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}\c@mpfootnote\z@% + \ifx\@captype\undefined\def\@captype{table}\fi% -for ams classes + \let\caption\@tablescaption% -allow page footnote in \caption + \let\@footnotetext\@mpfootnotetext\fi% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@tbeORI}% + \expandafter\let% + \expandafter\@dbtbeORI\csname table*\endcsname% -......... \table* + \expandafter\def\csname table*\endcsname{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \ifFLA\begingroup% + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}\c@mpfootnote\z@% + \ifx\@captype\undefined\def\@captype{table}\fi% -for amsbook + \let\caption\@tablescaption% -allow page footnote in \caption + \let\@footnotetext\@mpfootnotetext\fi% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@dbtbeORI}% + }% +\ifx\table\undefined\let\@temp@\relax\fi\@temp@% +\def\@Fendtable{% -Will be called by \@Fxloat. + \let\@etORI\endtable% -................................... \endtable + \def\endtable{\ifFLA\par% + \vskip-\lastskip% -make footnotes here + \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% + \footnoterule\unvbox\@mpfootins\fi% + \fi\@etORI\ifFLA\endgroup\fi% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}% + }% +\ifx\endtable\undefined\let\@Fendtable\relax\fi% +\def\@temp@{\def\endtable{\ifFLA\endgroup% -\endtable may be \relax + \expandafter\let\csname endtable*\endcsname\endtable% -as in endfloat + \fi}% + }% +\ifx\endtable\relax\@temp@% -is also used in frenchll for testing purpose +\fi% +\expandafter\def\csname @Fendtable*\endcsname{% -Will be called by \@Fxloat. + \expandafter\let% + \expandafter\@dbetORI\csname endtable*\endcsname% -...... \endtable* + \expandafter\def% + \csname endtable*\endcsname{\ifFLA\par% + \vskip-\lastskip% -make footnotes here + \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% + \footnoterule\unvbox\@mpfootins\fi% + \fi\@dbetORI\ifFLA\endgroup\fi% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}% + }% +\expandafter\ifx\csname endtable*\endcsname\relax% + \expandafter\let\csname endtable*\endcsname\endtable% +\fi% -for ams classes +% The following code is for beamer which don't use float for figures/tables. +\expandafter\ifx\csname\string\table\endcsname\undefined\else% + \expandafter\let\expandafter\BfigureORI\csname\string\figure\endcsname% + \expandafter\def\csname\string\figure\endcsname{\@Fendfigure\BfigureORI}% + \expandafter\let\expandafter\BtableORI\csname\string\table\endcsname% + \expandafter\def\csname\string\table\endcsname{\@Fendtable\BtableORI}% +\fi% +%#< +\def\drapeaufg{\ifFLA% -........................................... \drapeaufg + \raggedright\hbadness=6000% + \rightskip=0.3em plus 0.75em\hfuzz=0.4em\relax% + \let\enddrapeaufg\par\fi}% +\def\drapeaufgIN{\ifFLA% -................/........................ \drapeaufgIN + \raggedright\hbadness=6000% + \rightskip=0.3em plus 0.75em\hfuzz=6em% + \lefthyphenmin=12\righthyphenmin=10\relax% + \let\enddrapeaufgIN\par\fi}% +\def\drapeaufd{\ifFLA\raggedleft% -................................ \drapeaufd + \let\enddrapeaufd\par\fi}% +\def\drapeaufdIN{\ifFLA% -......................................... \drapeaufdIN + \raggedleft\hfuzz=6em% + \lefthyphenmin=12\righthyphenmin=10\relax% + \let\enddrapeaufdIN\par\fi}% +%#> +%\GOfrench{ -emacs pb- +% continuing definition of \GOfrench +\ifx\undefined\Hy@PDFDef\let\Hy@PDFDef\pdfstringdef\fi% -......... \pdfstringdef +\ifx\undefined\Hy@PDFDef\else% -For the old hyperref package. + \let\@hpdORI\Hy@PDFDef% + \def\Hy@PDFDef##1##2{\@ifFTYfalse\afterassignment% + \@Fstr\@hpdORI{##1}{##2}\@ifFTYback}% +\fi% +\ifx\pdfstringdef\undefined\else% + \let\pdfstringdef\Hy@PDFDef% +\fi% + \let\@lti\labelitemi\let\@ltii\labelitemii% + \let\@ltiii\labelitemiii\let\@ltiv\labelitemiv% + \@ifo% -define French options, GOfrench part 1 + \let\@ifo\undefined% -now release memory + \@doFh% -process language.dat, GOfrench part 2 + \let\@doFh\undefined% -release memory + \let\hyphex\undefined\let\frhyphex\undefined% + \let\@temp@\undefined% + \let\ifFTY\iffalse\let\ifFTR\iffalse% -if begin language isnt + \let\ifFLA\iffalse\let\ifFMA\iffalse\let\ifFH\iffalse% -french +% Get original \everypar control command but not hebrew macro. +\def\@tempa##1{\o@everypar{\rl@everypar##1}}% +\ifx\@tempa\everypar\let\TeXeverypar\o@everypar% +\else\let\TeXeverypar=\everypar% +\fi% +% +% As eTeX is bugged (no respect of \csname beginL\endcsname=\relax when +% TeX--XeT option disabled), Philip Taylor suggested the following code +% to replace the test about \beginL: +% %\ifx\beginL\undefined\else% + \ifx \TeXXeTstate \undefined% + \edef \next {\ifx \beginL \undefined 00\else 01\fi}% + \else% + \edef \next {\ifnum \TeXXeTstate = 0 00\else 01\fi}% + \fi% + \if \next\let\beginL\relax\let\beginR\relax% -patch eTeX. + \else% +% assume Left to right for *the* document if TeX--XeT. + \edef\@fepORI{{\the\TeXeverypar}}% + \def\@SetBFWdirection{\csname begin% + \beginFWdirection\endcsname}% + \TeXeverypar={\@SetBFWdirection% + \let\@SetBFWdirection\relax% + {\let\@nodocument\relax% -In case hebrew. + \@fepORI}}% + \fi% + \let\ErrFrench\@Ffnt\def\@Ffnt##1{}% +% insure files integrity +\ifx\undefined\babel@core@loaded% -already done for Babel in .ldf +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- this file and other auxiliary files require to % + use the following}}}% +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- LaTeX packages: \frenchpack!}}}% +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- check \protect\protect\protect\usepackage% + \protect\space or remove these files. % + Typesetting is aborted!}% + \protect\stop}}% +%\let\auxWARNINGi=\@gobble% set in the preambule +\fi% +% for french guillemets with a XeLaTex motor under utf8 +% patch inclusion: +\@finput{frpatch.sty}% + \ifx\FSfd@patch\FSfd\else + \f@issue% + \@fw{-42- % +%\@txt@msg{The French patch file (frpatch.sty) is not suitable^^J}% +%\@txt@msg{for this version of the "\frenchpack" package dated \FSfd}% + }% + \batchmode\@@end% + \fi% + \let\@Ffnt\ErrFrench\let\ErrFrench\undefined% -ditto +%%% Since "msg" is in use, \InputIfFileExists no more input the file, why? +%%% \InputIfFileExists{\frenchname.cfg}{% load site config file. +%%% \f@issue% +%%% \@fw{-48- %\@txt@msg{Lecture du fichier de }% +%%% %\@txt@msg{configuration de \frenchpack}% +%%% }}{}% +%%% so we now call \IfFileExists ... \@finput + \IfFileExists{\frenchname.cfg}{% -load site config file. + \f@issue% + \@fw{-48- %\@txt@msg{Lecture du fichier de }% + %\@txt@msg{configuration de \frenchpack}% + }% + \@finput{\frenchname.cfg}}{}% + \beginlanguage}% -now the new language (end of \GOfrench) +% + \let\@dORI\document% -................................... \begin{document} + \def\document{% -\slidesonly of seminar must not gobble me! + \ifx\noxcomment\undefined\else% + \global\let\@x@hk\xcomment@hook\global\noxcomment\fi% + \ifx\btxselectlanguage\undefined% + \else\ifx\babel@savevariable\undefined% + \f@issue\@fw{-87- % +%\@txt@msg{ERREUR \string: }% +%\@txt@msg{babelbib s'utilise uniquement avec babel}% + }% + \stop% + \fi% + \fi% + \ifx\@bglngpk\babel@savevariable% + \else% -Babel loaded after french. + \f@issue\@fw{-71- % +%\@txt@msg{ATTENTION : }% +%\@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}% + }% + \fi\let\@bglngpk\undefined% + \@dORI% -execute original \document + \GOfrench% -now initiate the style + \let\GOfrench\undefined% -release memory + \ifx\noxcomment\undefined\else\let\xcomment@hook\@x@hk% + \expandafter\xcomment@hook\fi}% +% now reset < ` ' > as other chars +\@makeother`\@makeother<\@makeother>\@makeother'% +% ReRead of aux file at \end{document} may create problems. +% As French things are already applied, so it's unuseful after \end{document} +\let\enddocumentasusual\enddocument% -............................ \enddocument + \def\enddocument{\def\@tempa{\AtEndDocument{\french\f@clearpage% + \global\let\ifCLA\iffalse% -No more page, thus no layout. + \let\ifCLAfrench\iffalse% + \endfrench}}% +%%% Notice we specially use \AtEndDocument to avoid AmS hook material +%%% to print outside of the current (final) page the \@setaddresses. + \csname f@lastpage\endcsname% -Allow user mods here. + \@CGroup% -end any remaining opened << group + \ifFLA% -At the real end of document we should + \@tempa% -output last page in french. + \def\@tempa{empty}\ifx\@specialstyle\@tempa% + \else\gdef\@specialstyle{french}\fi% + \fi% + \let\GOfrench\relax% -Stop to generate \beginL. + \switchtolanguage\englishTeXmods% + \let\f@clearpage\clearpage% -Keep \clearpage for \AtEndDocument +% Avoid the lastpage package do a \clearpage until last \french page +\ifx\lastpage@putlabel\undefined% -and avoid any change of +\else\let\clearpage\relax% -the page counter: + \let\lastpage@putlabelORI\lastpage@putlabel% + \def\lastpage@putlabel{\addtocounter{page}{+1}\lastpage@putlabelORI% + \addtocounter{page}{-1}}% +\fi% +% Redef of \@newl@bel due to Babel \select@language + \ifx\undefined\babel@core@loaded\else% -i.e. \@testdef: + \ifx\@testdef\undefined\else% -................ \newlabel + \@gG{@td}{@testdef}{//}{3}\fi% -............ \@testdef + \fi% +% Let few stuff expand in \edef for TeX4ht. +\ifx\ConfigureToc\undefined\else% + \let\@ifFTYfalse\relax\let\@ifFTYback\relax% + \@Fstr\let\@Fstr\relax% +\fi% + \enddocumentasusual% + }% +\let\@whatUCH\relax% -\@whatUCH is \relax with french light. +%#< +% =============================== +% | Hyphenation | +% =============================== +% +% Allow or not hyphenation of words starting with a capital letter +\def\allowfulluchyph{\@noBDfr% + \uchyph=1\let\@whatUCH\allowfulluchyph% -.. \allowfulluchyph + \let\@uchbox\empty}% +\def\allowuchyph{\@noBDfr% + \uchyph=1\let\@whatUCH\allowuchyph% -.............. \allowuchyph + \let\@uchbox\hbox}% +\def\disallowuchyph{\@noBDfr% + \uchyph=-1% -................................ \disallowuchyph + \let\@whatUCH\disallowuchyph\let\@uchbox\hbox}% +\def\notthyphenation{\@noBDfr% + {\tt\hyphenchar\font=-1}% -.................\notthyphenation + \let\ifTTH\iffalse}% +\def\tthyphenation{\@noBDfr% + {\tt\hyphenchar\font=`\-}% -.................. \tthyphenation + \let\ifTTH\iftrue}% +\let\@whatUCH\allowuchyph% -is normaly the TeX default +\let\ifTTH\iffalse% -we presume that there no tt hyph. by default +\let\ifFH\iffalse% -we assume we start with no French hyphenation (wrong!) +% +% A macro asking to load a language specific exceptions file. +% Argument provides the language name. File name is in language.dat +\def\hyphex#1{% -available before \begin{document} + \if#1\empty% -........................................... (\hyphex) + \else% -a general macro for other languages + \edef\@excn{#1}\fi% + \let\if@FE\iftrue}% -\hyphex{} before begin document will +% % load exceptions files +\def\frhyphex{% -available before \begin{document} + \if@PMF\else\hyphex{\frenchname}\fi}% -................. \frhyphex +%#> +% =============================== +% | Translations | +% =============================== +% +% The following is to ``repair'' default captions used in standard V2 styles +% prior October 91 as "Figure n:" and "Table n:". +\def\@eatDP{\@ifNextNB:{\@gobble}{}}% +%\def\@eatP#1{\@ifNextNB.{\@gobble}{}}% for any AmS class +\def\f@ffrench{\ifx\listoffigures\relax\else% + \figurename~\thefigure\ifFTY\captionseparator\fi\fi% + \ifFTY\expandafter\@eatDP\fi}% +\def\f@tfrench{\ifx\listoftables\relax\else% + \tablename~\thetable\ifFTY\captionseparator\fi\fi% + \ifFTY\expandafter\@eatDP\fi}% +\def\unnumberedcaptions#1{\@noBDfr% +%............................... \unnumberedcaptions + \expandafter\let\csname listof#1s\endcsname\relax% + \ifx\listoffigures\relax\ifx\listoftables\relax% + \let\unnumberedcaptions\undefined% + \fi\fi% + }% +% +% Titles ....................................................... \captionsnames +\@ifundefined{captionsnames}{\def\captionsnames{\relax}\let\@tempa\@currname% +% load English captions but force language name for ... +\xdef\@currname{fenglish}\@finput{fenglish.sty}\let\@currname\@tempa}{}% +\def\languagename{french}% -... any further msg message with \kbencoding. +\let\ifnonenglishheadings\iftrue% -Bypass to a LaTeX slight bug... +%#< +\def\tocreduite#1#2{}% -Reduce toc to a toc-summary for \sommaire. +\def\@sEAT#1#2{\@sORI*{\sommairename}}% -Normally a \sommaire is short +\def\@cEAT#1#2{\@chORI*{\sommairename}}% -and need no headings. +\def\@smr[#1]{\let\@tempa\contentsname% -Save it for + \let\contentsname\sommairename% -memoir.cls. + \ifx\tableofcontents\undefined\else% + \begingroup\ifcase #1 0% -Process \sommaire[1-4] + \or \let\l@paragraph\tocreduite% -.....\sommaire[1] + \let\l@subparagraph\tocreduite% + \or \let\l@subsubsection\tocreduite% -.\sommaire[2] + \let\l@paragraph\tocreduite% + \let\l@subparagraph\tocreduite% + \or \let\l@subsection\tocreduite% -....\sommaire[3] DEFAULT + \let\l@subsubsection\tocreduite% + \let\l@paragraph\tocreduite% + \let\l@subparagraph\tocreduite% + \else \let\l@section\tocreduite% -.......\sommaire[4] + \let\l@subsection\tocreduite% + \let\l@subsubsection\tocreduite% + \let\l@paragraph\tocreduite% + \let\l@subparagraph\tocreduite% + \fi% + \let\@sORI\section\let\@chORI\chapter% + \let\section\@sEAT\let\chapter\@sEAT% + \let\@ToCisNOT\relax% -let it be a sommaire first ie there is no toc + \def\@starttoc##1{% -\@startoc locally redefined to let toc reusable + \ifx\fr@RIfM@cls\undefined% -special case AmS document class + \else\chapter*{\sommairename}% -print sommaire now + \fi% + \begingroup\makeatletter% -any case require a second pass + \immediate\openin\@inputcheck \jobname.##1 % + \if@filesw \expandafter\newwrite\csname tf@##1\endcsname\fi% + \ifeof\@inputcheck \@Ffnt{\jobname.##1}% + \if@filesw\immediate\openout \csname tf@##1\endcsname% + \jobname.##1\relax\fi% + \else\immediate\closein\@inputcheck \relax\@@input \jobname.##1 % + \@ifundefined{@ToCisNOT}{% -let a toc be defined further + \if@filesw\immediate\openout \csname tf@##1\endcsname% + \jobname.##1\relax\fi}{}% + \fi\global\@nobreakfalse \endgroup}% + \ifx\fr@RIfM@cls\undefined% -special case AmS document class + \else\def\contentsname{}% -dont print table of contents at all here! + \fi% -in usual cases (LaTeX document classes) we do + \tableofcontents\endgroup% -print the sommaire now. + \def\tableofcontents{% -new def that records there is a toc in the doc + \ifx\pdfstringdef\undefined% -Reset orginal \contentsline + \else\let\contentsline\contentslineORI\fi% -for hyperref. + \addtocontents{toc}{\protect% + \let% -just to be not + \protect\@ToCisNOT\protect\empty}% -as relax + \begingroup% -\@starttoc locally redefined to avoid pb with Atari + \def\@starttoc####1{\begingroup% -normal def without newdef of tf@ + \makeatletter\@input{\jobname.####1}% + \if@filesw\immediate\openout \csname tf@####1\endcsname% + \jobname.####1\relax\fi% + \global\@nobreakfalse \endgroup}% + \@tocORI\endgroup}% -now the original toc command + \fi% -of \if\tableofcontents\undefined + \let\contentsname\@tempa% -Restore it for memoir.cls. + }% -\@smr +\def\sommaire{\@ifNextNB[{\@smr}{\@smr[3]}% -]......................... \sommaire + }% -a Sommaire is a TOC in front of a document +\def\@temp@{\let\if@twocolumn\iffalse}% +\@ifundefined{if@twocolumn}{\@temp@}{}% +\@ifundefined{abstract}{% -undefined in book + \def\abstract{\let\@w@s\@gobble% + \if@twocolumn\section*{\abstractname}% + \else\sm@ller\begin{center}% + \textbf{\abstractname\vspace*{-.5em}\vspace*{\z@}}% + \end{center}\quotation\fi}% + \def\endabstract{\if@twocolumn\else\endquotation\fi}}{}% +\@ifundefined{resume}{% -there are styles already defining \resume +\def\resume{% -.......................................................... \resume + \let\@w@s\@gobble% -no warning for \parsep mod. + \abstract}% +\let\endresume\endabstract% -......................................... \endresume + }{}% +% +\def\@tempa{% +\def\endkeywords{\@noBDfr}% +\def\keywords{\@noBDfr% -.............................................. \keywords + \let\@w@s\@gobble% -no warning for \parsep mod. + \quotation\noindent\sm@ller{% + \ifx\fr@RIfM@cls\undefined% + \else\let\textbf\textsc\fi% -for AmS classes + \kwname}% + \let\endkeywords=\endquotation}% -.................... \endkeywords + }% +\@ifundefined{keywords}{\@tempa}% + {\ifx\fr@RIfM@cls\undefined% + \else\@tempa% -do redefine AmS class keyords def + \fi% + }% +\@ifundefined{endkeywords}{\let\endkeywords\relax}{}% +% +\def\motsclef{\keywords\relax% case any arg. % -....................... \motsclef + \def\endmotsclef{\endkeywords}}% -.................... \endmotsclef +% +\let\ifFTR\iftrue% -Default translation is on. +\ifx\texteuro\undefined\else% + \let\textcurrencyORI\textcurrency% -.............................. \textcurrency + \def\textcurrency{\ifFTR\expandafter\texteuro% + \else\expandafter\textcurrencyORI% + \fi}% +\fi% +\def\annexe {\@ann{\appendixname}}% -................................... \annexe +\def\annexes{\@ann{\appendixname s}}% -................................. \annexes +\def\@ann#1{\@noBDfr\leavevmode% + \ifx\fr@RIfM@cls\undefined\else% -for AmS classes + \let\chaptername\appendixname% -forget Chapter + \fi% + \ifx\chapter\undefined\else% + \par\setcounter{chapter}{0}\setcounter{section}{0}% + \def\@chapapp{\appendixname}\def\thechapter{\Alph{chapter}}% + \addcontentsline{toc}{chapter}{\protect#1}% + \fi}% +\@ifundefined{@restonecolfalse}{\def\@restonecolfalse{}% + \def\@restonecoltrue{}}{}% -dummy def +\@ifundefined{@mkboth}{\def\@mkboth#1#2{}}{}% -idem +\def\glossaire{\@glo{%\protect% + \glossaryname}}% -............................. \glossaire +\def\glossaires{\@glo{%\protect% + \glossaryname s}}% -......................... \glossaires +\def\@glo#1{\ifx\chapter\undefined\else% + \setcounter{chapter}{0}\setcounter{section}{0}% + \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn\fi% + \hbox{}% -to simulate any text that will allow the writes + \clearpage% -to be done to the file instead of the terminal + \ifx\fr@RIfM@cls\undefined% -no need with AmS classes + \chapter*{#1% + \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}% + }% + \addcontentsline{toc}{chapter}{\protect#1}% + \else\chapter*{#1}% -just this for AmS classes + \fi% + \ifx\undefined\@glossaryfile\else% + \immediate\closeout\@glossaryfile% + \ifx\undefined\glossaryentry% -dummy def .... \glossaryentry + \long\def\glossaryentry##1##2{\noindent-- ##1\par}% + \fi% + \ifx\undefined\theglossary% +% default glossary defs, type \glossary{[entry :] comments} +% and use \printglossary[filename] default is jobname.gls ..... \printglossary + \let\theglossary\description% + \let\endtheglossary\enddescription% + \let\scan@allowedfalse\makeatother% -gglo.ist call this + \def\pfill##1 {}% -nullify page num. unneded + \def\@pgf[##1]{\@finput{##1}}% + \def\printglossary{\@ifNextNB[% -] emacs + {\@pgf}{\@pgf[\jobname.gls]}}% + \fi% + \fi\fi}% -\input \jobname.glo will typeset the glossary +%#> +\def\datefrench{% +\def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi% + \ifnum\day=1\relax 1\ier% + \else \number\day\fi% + \space\ifcase\month\or janvier\or f\'evrier\or mars\or % + avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or % + octobre\or novembre\or d\'ecembre\fi \space\number\year}% +}\datefrench% +\if@filesw + \def\ordinalSecondNam{{s}econd}% + \def\ordinalSecondName{{s}econde}% +\else% + \def\ordinalSecondNam{{d}euxi\`eme}% + \let\ordinalSecondName\ordinalSecondNam% +\fi% + \def\@osn#1#2{\expandafter\ifx\csname#1osn\endcsname% + \relax#2\else\csname#1osn\endcsname\fi}% + \def\ordinal#1{\ifcase\value{#1}\or {p}remier% + \or\@osn{#1}{\ordinalSecondNam}\else\ordin@l{#1}\fi}% + \def\ordin@l#1{\ifcase\value{#1}\or\or\or % + {t}roisi\`eme\if@filesw{\protected@write\@auxout{}{% + \protect\expandafter% + \protect\gdef\protect\csname#1osn% + \protect\endcsname% + {{d}euxi\`eme}}}% + \fi% + \or {q}uatri\`eme\or {c}inqui\`eme\or {s}ixi\`eme\or % + {s}epti\`eme\or {h}uiti\`eme\or {n}euvi\`eme\or {d}ixi\`eme\or % + {o}nzi\`eme\or {d}ouzi\`eme\or {t}reizi\`eme\or {q}uatorzi\`eme\or % + {q}uinzi\`eme\or {s}eizi\`eme\or {d}ix-septi\`eme\or {d}ix-huiti\`eme\or % + {d}ix-neuvi\`eme\or {v}ingti\`eme\fi}% + \def\ordinale#1{\ifcase\value{#1}\or {p}remi\`ere% + \or\@osn{#1}{\ordinalSecondName}\else\ordin@l{#1}\fi}% + \def\Ordinal{\expandafter\uppercase\ordinal}% + \def\Ordinale{\expandafter\uppercase\ordinale}% +% +\def\captionsfrench{% -......................................... \captionsfrench + \ifFTR% -Is French translation allowed? + \ifx\captionsnames\captionsfrench\else% + \let\@tdORI\today% -................................................... \today + \let\f@fORI\fnum@figure% -......................................... \fnum@... + \let\f@tORI\fnum@table% + \let\@cnsORI\captionsnames% +% The following for styles or classes: article, report and book + \def\pagename{page}% + \def\refname{R\'ef\'erences}% + \def\abstractname{R\'esum\'e}% +\ifx\bibname\undefined\else% + \def\bibname{Bibliographie}% +\fi% +\ifx\btxselectlanguage\undefined% -Don't call \bibsfrench if babelbib loaded. + \csname bibsfrench\endcsname% -more bibs-names if any. +\fi% + \def\contentsname{Table des mati\`eres}% + \def\listfigurename{Table des figures}% + \def\listtablename{Liste des tableaux}% +\ifx\listalgorithmname\undefined\else% + \def\ALG@name{algorithme}% + \def\listalgorithmname{Liste des \ALG@name s}% +\fi% + \def\indexname{Index}% + \def\seename{\emph{voir}}% -used normally in makeidx.sty + \def\seealsoname{\emph{voir aussi}}% -added macro \seealso + \def\figurename{\textsc{Fig.}}% + \def\tablename{\textsc{Tab.}}% + \def\sommairename{Sommaire}% + \def\partname{% -"Premi\`ere partie" instead of "Part I" + \ignorespaces\Ordinale{part}\space partie% + \@RPtNoInDoc\noexpand\@RPtNoInToc}% + \def\glossaryname{Glossaire}% -added + \def\kwname{\textbf{Mots-cl\'e} : }% + \def\draftname{- \noexpand\351preuve -}% -PostScript IsoLatin1 \'epreuve + \def\prefacename{Pr\'eface}% +\ifx\proofname\undefined\else\def\proofname{D\'emonstration}\fi% +% +% Comment for further dev: +% Next ones depend from the class of document in use, thus the translations +% should apply _only_ when the corresponding class is loaded. Thus it should +% be better to define these names when loading french, not dynamically at +% run time when typesetting the document. +% +\ifx\fr@RIfM@cls\undefined% -figure and table captions modified + \let\fnum@figure\f@ffrench% -except for any AmSLaTeX V1.2 class + \let\fnum@table\f@tfrench% -for which it remains unsolved pbs. + \def\@RPtNoInToc{}% + \def\@RPtNoInDoc{\def\thepart{}}% -nullify \thepart + \else\def\@RPtNoInToc##1.{.}% -remove until dot + \def\@RPtNoInDoc##1\thepart{}% -remove until value +% \let\@eatDP\@eatP% +\fi% +% The following is only for letter +\ifx\opening\undefined\else% + \def\headtoname{}% + \def\ccname{c.c. }% -copie conforme + \def\enclname{P.j. }% -Pieces jointes + \def\PSname{P.-S. :}% -Post-Scriptum + \def\Objectname{Objet :}% -Object of the letter + \def\YourRefname{v/r\'ef. :}% -Your reference number + \def\OurRefname{n/r\'ef. :}% -Our reference number + \def\emailname{m.\'el. :}% -Email address +\fi% +% The following is for seminar +\ifx\slidename\undefined\else% + \def\slidename{Transparent}% + \def\listslidename{Liste des transparents}% +\fi% +% The following is for endnotes 98/01 +\ifx\notesname\undefined\else% + \def\notesname{Notes}% +\fi% +% The following is only for report and book ... + \def\chaptername{Chapitre}% + \def\appendixname{Annexe}% + \let\captionsnames\captionsfrench% + \fi% \else of \ifx\captionsnames\captionsfrench% + \let\today\todayfrench% +\def\@cORI{\@cnsORI% -Restore original caption names + \let\today\@tdORI% + \let\fnum@figure\f@fORI% + \let\fnum@table\f@tORI}% +\fi% -\ifFTR +}% -end of captionsfrench +%#< +\iffrenchbibliography% + \ifx\@rbibstyid\undefined% + \let\@rbibstyid\empty% + \ifx\jb@pkg@name\undefined\else% + \def\@rbibstyid{jb}% + \fi% + \fi% + \ifx\bibsfrench\undefined% + \edef\@tempa{fr\@rbibstyid bib.ldf}% + \IfFileExists{\@tempa}{% +\f@issue% +\@fW{ -65- % +%\@txt@msg{\frenchname.sty charge }% +%\@txt@msg{les traductions pour la bibliographie \string:}% + }\@finput{\@tempa}}{}% + \fi% + \ifx\bibsenglish\relax% + \edef\@tempa{en\@rbibstyid bib.ldf}% + \InputIfFileExists{\@tempa}{}{}% + \fi% +\fi% +%#> +%%%%%%%%%%%%%%%%%% +% =============================== +% | Layout | +% =============================== +% +% NB: See elsewhere in the code for appearance of \ifFLA, to find +% all French layout coding. +\let\@tlORI\@trivlist% +\def\frenchtrivsepwarnings{\let\ifFTSW\iftrue}% -........ \frenchtrivsepwarnings +\def\nofrenchtrivsepwarnings{\let\ifFTSW\iffalse}% -... \nofrenchtrivsepwarnings +\long\def\frtrivseplengths#1{% -............................... \frtrivseplengths + \nofrenchtrivsepwarnings% + \long\def\fr@tsl{#1}% + }% +\def\fr@tsl{\setlength{\parsep}{0.2ex plus 0.1ex minus 0.1ex}% + \setlength{\itemsep}{0.2ex plus 0.1ex minus 0.1ex}% + \setlength{\topsep}{0.4ex plus 0.2ex minus 0.2ex}% + \setlength{\partopsep}{1.6ex plus 0.8ex minus 0.8ex}% + }% +\def\frenchtrivsep{\ifFLA\def\@trivlist{% -...................... \frenchtrivsep + \fr@tsl\@tlORI}% + \fi} +\def\nofrenchtrivsep{\let\@trivlist\@tlORI}% -................. \nofrenchtrivsep +\@ifundefined{@afterindenttrue}{\let\@afterindenttrue\relax% + \let\@afterindentfalse\relax}{}% +\let\@aifORI\@afterindentfalse% -save first indent +\edef\@piORI{\the\parindent}% -save \parindent +\begingroup \catcode `| =0 \catcode `[ = 1 \catcode`] =2% + \catcode `\{=12 \catcode `\}=12 \catcode`\\=12% + |gdef|@xversatim#1\end{versatim}[#1|end[versatim]]% + |endgroup% -running macro for versatim +% +\let\@FIM@\relax% -Macro is relax with french light +%#< +\def\@FIM@{\ifCG\else\ifFLA\ifEPG\ifEPGR\else\leftguillemets\fi\fi\fi\fi}% +\let\checkitemguillemets\@FIM@% +%#> +\def\fr@idf{\let\@afterindentfalse\@afterindenttrue\@afterindenttrue}% +\def\fr@nidf{\let\@afterindentfalse\@aifORI\@afterindentfalse}% +\ifx\titlespacing\undefined% + \let\which@indent\fr@idf% -French default is \indentfirst +\else\let\which@indent\fr@nidf% -but let's titlesec package decide if loaded. +\fi% +\def\fr@lbi{\def\labelitemi{\@FIM@--}\def\labelitemii{\@FIM@--}% + \def\labelitemiii{\@FIM@--}\def\labelitemiv{\@FIM@--}% + }% +\long\def\frlabelitems#1{\ifFLA\long\def\fr@lbi{#1}% -............. \frlabelitems + \fr@lbi\fi}% +\def\@FIM{% -Correct labels in itemize environement .............. \labelitem.. + \fr@lbi% + \def\indentfirst{\ifFLA\fr@idf\fi}% -.................... \indentfirst + \def\nonindentfirst{\ifFLA\fr@nidf\fi}% -............. \nonindentfirst + \which@indent% -Apply requested indent in first paragraph + %#< +% The "order" list .................... \begin{order} & \end{order} + \def\labelfrenchenumi{\@FIM@\quando={\arabic{enumi}}}% + \def\labelfrenchenumii{\@FIM@\quando={\arabic{enumii}}}% + \def\labelfrenchenumiii{\@FIM@\quando={\arabic{enumiii}}}% + \def\labelfrenchenumiv{\@FIM@\quando={\arabic{enumiv}}}% + \def\order{\ifnum \@enumdepth >3 \@toodeep\else% + \advance\@enumdepth \@ne% + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list% + {\csname labelfrench\@enumctr\endcsname}% + {\usecounter{\@enumctr}% + \ifFLA% -French layout might be switched after the definition + \addtolength{\leftmargin}{0.9em}% -allow a second digit and << + \fi% + \def\makelabel####1{\hss\llap{####1}}}\fi}% -\order + \let\endorder =\endlist% +% The "versatim" environment .... \begin{versatim} & \end{versatim} +% inapropriate for multi-level of indentation! + \def\versatim{\bgroup\let\@w@s\@gobble% -nullify warning 58 + \ifFLA% -protect our new settings + \let\dospecials\@dsversa% -our specials for versatim + \def\@xobeysp{\leavevmode{}\space}% -allow hypenation at space + \ifx\verbatim@font\undefined\let\verbatim@font=\tt\fi% + \let\@ttORI\verbatim@font% -save the original \tt definition + \def\verbatim@font{\@ttORI% -execute it first to know the font + \verse% -now enter verse environment (\itemindent is negative) + \vskip-2\parskip% -remove vertical par skips + \vskip-1\partopsep\vskip-\topsep% + \leavevmode% + \leftskip=-2\itemindent% -the margin is increased + \parindent=2\itemindent% -each line will go in the margin + \parskip\z@% -no more interline (interpar) spacing + \pretolerance=\@M\tolerance=\@M\hbadness=\@M% -max tolerance + \hyphenchar\the\font=`\-}% + \let\tt=\verbatim@font% -useful outside NFSS + \fi% -ifFLA end of \verbatim@font new def + \let\@xverbatim\@xversatim% -define environment + \verbatim}% -now enter usual verbatim + \def\endversatim{\endverse% + \ifTTH\else\hyphenchar\the\font=-1\fi% -was a global def + \endverbatim\ifFLA\vskip+1\partopsep\fi\egroup}% + \@ifundefined{vers}{% + \def\@vers##1{\def\@tempa ####1##1{\leavevmode\null####1% + \endgroup}\@tempa}% + \def\vers{% -................................................ \vers + \begingroup% -protect local modifications + \def\@xobeysp{\ifFLA\else\penalty\@M\fi\space}% -allow + \catcode``=13 \@noligs \tt% -hyphenation at blank space +% word hyphenation done only if \tthyphenation typed + \ifFLA\let\dospecials\@dsversa\fi% + \let\do\@makeother\dospecials\@vobeyspaces \frenchspacing% + \@vers}}{}% + \@ifundefined{verbatimfile}% -........................... \verbatimfile + {\def\verbatimfile##1{\begingroup\@verbatim\frenchspacing + \@vobeyspaces\input ##1\endgroup}}{}% +%#> +}% -end of \@FIM +%===================== for the letter ... +\def\@temp@{% -a temporary def of all material +\let\@ps@fp\ps@firstpage% +\def\@opening{% +\let\@wideletter\relax% -Definitions for french light here. +\let\emailadd\@empty\let\@yourref\@empty\let\@ourref\@empty% +\let\@object\@empty% +%#< + \@ifundefined{wideletter}{% + \def\@wideletter{}\def\wideletter{% -.............................. \wideletter + \def\@wideletter{\leftskip-0.25\indentedwidth}}}{}% + \@ifundefined{email}{% + \def\email####1{\def\emailadd{\texttt{####1}}}}{}% -.................... \email + \@ifundefined{emailadd}{\def\emailadd{}}{}% + \@ifundefined{yourref}{% + \def\yourref####1{\def\@yourref{####1}}}{}% -......................... \yourref + \@ifundefined{@yourref}{\def\@yourref{}}{}% + \@ifundefined{ourref}{% + \def\ourref####1{\def\@ourref{####1}}}{}% -............................ \ourref + \@ifundefined{@ourref}{\def\@ourref{}}{}% + \@ifundefined{object}{% + \def\object####1{\def\@object{####1}}}{}% -............................ \object + \@ifundefined{@object}{\def\@object{}}{}% + \@ifundefined{PS}{% + \def\PS####1{{\raggedright\PSname\space ####1}}}{}% -...................... \PS +%#> + \def\ps@firstpage{\ifFLA% + \advance\topmargin by -20\p@% -I also suggest to add in +% document preambule: \advance\textheight by 20\p@% + \def\@oddhead{\ifx\undefined\formhead\else% + \bgroup\hss\formhead\hss\egroup\fi}% + \def\@oddfoot{\raisebox{-45\p@}[\z@]% + {\hbox to \textwidth{% + \ifcase \@ptsize\relax% + \normalsize% + \or \sm@ller% + \or \footnotesize% + \fi% +%\hspace*{100\p@}\fromlocation \hfill \telephonenum + \ifx\undefined\formfoot\hfill\else% + \bgroup\hss\formfoot\hss\egroup\fi% + }}\hss}% + \def\@evenhead{}\def\@evenfoot{}% + \else\@ps@fp\fi}% + \long\def\opening####1{% -.......................................... \opening + \ifFLA%%% -these 3 counts not saved for other languages (unnecessary) + \advance\indentedwidth by -0.25\longindentation% + \advance\longindentation by 0.22\textwidth% + \advance\parindent by 1.5em% -null in standard ..... + %%% + \let\nopagenumbers\relax% -Avoid to switch to empty page style. + \thispagestyle{firstpage}% -set firstpage allowing the user to +% use \@oddhead & \@oddfoot in \ps@firstpage + \raggedbottom% -force address to remain in the same place + \ifx\@empty\fromlocation\location{Le}\fi% + \ifx\@empty\fromaddress\let\fromaddress\space\fi% -make an blank box + {\raggedright\hspace*{-0.25\indentedwidth}% + \parbox[t]{0.5\textwidth}{\ignorespaces% + \vbox to 0\p@{\fromaddress\vss}}% + \\*[1.75\baselineskip]% +% \\*[0.65in]% dont let the date appearing in the window +% \vspace*{-5\baselineskip}\vspace*{60\p@}% error average + \par}% + \ifx\@empty\toname% -in fact \toname is never empty in LaTeX V2.09! +% except if you code \begin{letter}{} + {\raggedleft\bgroup\fromlocation\space\@date\egroup\par}% + \else% + {\raggedleft\begin{tabular}{l}\ignorespaces% +% \toname\\ \toaddress\\*[8\parskip]% + \toname\\ \toaddress\\*[6\parskip]% + \fromlocation\space\@date\end{tabular}\par}% + \fi% + \ifx\@empty\@ourref\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \OurRefname\space\@ourref \par}% + \fi% + \ifx\@empty\@yourref\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \YourRefname\space\@yourref \par}% + \fi% + \ifx\@empty\@object\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \textbf{\Objectname}\space\@object \par}% + \fi% + \par\vspace*{3\parskip}% + \noindent####1\hfill\vspace*{3\parskip}% no need of \linebreak% + \@wideletter% + \else\@oORI{####1}% + \fi}}% +\def\@closing{% + \def\closing{\fclosing@[9]}% -...................................... \closing + \def\fclosing{\@ifNextNB[{\fclosing@}{\fclosing@[9]}% -]........... \fclosing + }% + \long\def\fclosing@[####1]####2{% + \ifFLA% + \par% -\nobreak + \vspace{\parskip}\stopbreaks% + \ignorespaces ####2\\[####1\medskipamount]% + \ifx\@empty\fromaddress\else% + \hspace*{-0.25\indentedwidth}% + \hspace*{\longindentation}\fi% + {\raggedright\begin{tabular}{l}\ignorespaces% + \ifx\@empty\fromsig% + \fromname% + \else \fromsig \fi% + \ifx\@empty\emailadd\else\\{\footnotesize% + \emph{\emailname} \emailadd}\fi% + \strut\end{tabular}}\par% + \vskip 0pt plus 1fil% -un peu d'elasticite + \else\@cloORI{####2}% + \fi}% + \def\endletter{\ifFLA\vskip 0pt plus 3fil\fi% -un peu d'elasticite + \@elORI}}% -@closing +\@ifundefined{opening}{\def\@opening{}\def\@closing{}}% + {\let\@oORI\opening\let\@cloORI\closing% + \let\@elORI\endletter% + \@opening\@closing}% +}% -\@temp@ +\ifx\opening\undefined\let\@temp@\relax\fi% +\@temp@% -only if letter ..... +%===================== +%#< +%............................................................ \begin{figurette} +\let\ifFLA\iffalse% -dummy def for next processing +\def\@temp@{% +\def\figurette{\@noBDfr% + \ifx\@fgeORI\undefined\figure\fi% -can't work without figure + \ifFLA\bgroup% + \def\@xfloat####1[h]{% + \expandafter\let\csname end####1\endcsname\endfigurette% + \vskip\intextsep\def\@captype{####1}\parindent\z@}% + \@fgeORI[h]\else\figure[h]\fi}% +\def\endfigurette{\@noBDfr% +%.......................................... \end{figurette} + \ifFLA\vskip\intextsep\egroup\else\@efgeORI\fi% + \ifx\@lim\empty\else\marginpar{\@lim@}\xdef\@lim{}\fi% + \let\ifMOVING\iffalse}% + }% +\ifx\figure\undefined\def\@temp@{}\fi% -only when \figure is already defined +\@temp@% +%#> +% Reset chapter counter when starting a part --> \GOfrench +% +% Check for AmS package's class +\def\@tempa{\let\fr@RIfM@cls\undefined}% -will set the no AmS class loaded flag +\let\fr@RIfM@cls\RIfM@% -if no AmS package, no class as well + \ifx\RIfM@\undefined\else% + \expandafter\ifx\csname @classname\endcsname\relax\@tempa% + \else\def\@tempb#1#2#3#4\@nil{% + \if#1a\if#2m\if#3s\else\@tempa\fi% + \else\@tempa\fi\else\@tempa\fi}% + \expandafter\@tempb\@classname\@nil% + \fi% + \fi% -\RIfM@\undefined +% +% This is the French pagestyle to use instead in place of plain wrongly +% used by LaTeX in many situations. Quite simple one................ \ps@french +\def\@temp@{\def\ps@french{\if@fancyplain\ps@plain@fancy\else\ps@plain\fi}}% +\ifx\ps@fancyplain\undefined% -do nothing outside fancyheadings + \ifx\fr@RIfM@cls\undefined\def\ps@french{}% -in standard LaTeX, but not + \else\def\ps@french{\global\topskip\normaltopskip}% -with AmS classes. + \fi% \fr@RIfM@cls\undefined% +\else\@temp@% -to avoid pb in case \if@fancy... undefined +\fi% +\let\ps@frenchORI\ps@french% -Save final french page style def. +\let\@sdORI\secdef% -will be used at each new sectioning. +\def\nofrenchpagestyle{\let\secdef\@sdORI}% -................. \nofrenchpagestyle +\def\frenchpagestyle{% -........................................ \frenchpagestyle + \def\secdef{\ifFLA\thispagestyle{french}\fi\@sdORI}% -.............. (\secdef) + }% +\frenchpagestyle% -Now run the french page style if \frenchlayout. +\ifx\aliaspagestyle\undefined% -Is memoir.cls loaded? no: +\def\nobeginingfolio{\let\ps@french\ps@empty}% -................ \nobeginingfolio +\else% +\def\nobeginingfolio{\let\ps@french\ps@empty% -yes: + \aliaspagestyle{chapter}{empty}% + }% +\fi% +\def\beginingfolio{\let\ps@french\ps@frenchORI% -................. \beginingfolio + \frenchpagestyle}% -This is the default value. +%#< +\@ifundefined{nopagenumbers}{% -don't run everywhere............ (\nopagenumbers) + \def\nopagenumbers{\ifFLA\pagestyle{empty}% + \thispagestyle{empty}\fi}% + }{}% +\def\ifFLA{\ErrFrench}% +% + \newif\ifnonvoid% -still an outer def. +\def\@desarm{% -the \noeveryparguillemets processing + \newbox\@FrBoxi\newbox\@FrBoxii\newbox\@FrBoxiii% + \newbox\@FrBoxiiii\newbox\@FrBoxvi\newbox\@FrBoxvii\newbox\@FrBoxQuotes% + \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi% + \def\@setpartozero{\widowpenalty=\z@\clubpenalty=\z@% + \interlinepenalty=\z@\brokenpenalty=\z@\displaywidowpenalty=\z@}% + \def\nonvoidtrue{\let\ifnonvoid\iftrue}% + \def\nonvoidfalse{\let\ifnonvoid\iffalse}% + \def\@transfervbox##1##2{\nonvoidtrue% + \loop% + \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% + \unskip}% + \ifvoid\@FrBoxiii\nonvoidfalse\fi% + \ifnonvoid% + \setbox\@FrBoxii=\vbox{\unvbox##2\box\@FrBoxiii}% + \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii% + \repeat}% + \def\@transferaddvbox##1##2{\nonvoidtrue% + \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% + \unskip}% + \setbox##2=\vbox{\box\@FrBoxiii}% + \setbox##1=\box\@FrBoxi% + \loop% + \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% + \unskip}% + \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi% + \ifnonvoid% + \setbox\@FrBoxii=\vbox{\unvbox##2% + \hbox to \@FrDimen{\copy\@FrBoxQuotes\unhbox\@FrBoxiii}}% + \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii% + \repeat}% + \def\@sendtopage##1{\nonvoidtrue% + \loop% + \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% + \unskip}% + \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi% + \ifnonvoid% + \unhbox\@FrBoxiii\unskip\break% + \setbox##1=\box\@FrBoxi% + \repeat}% + \def\@stared{\egroup% + \@transfervbox\@FrBoxvi\@FrBoxvii% + \@transferaddvbox\@FrBoxvii\@FrBoxvi% + \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi% + \global\setbox\@FrBoxiiii=\lastbox\unskip}% + \@transfervbox\@FrBoxvii\@FrBoxvi% + \noindent \@sendtopage\@FrBoxvi% + \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}% + \def\@fniv2{\egroup% + \@transfervbox\@FrBoxvi\@FrBoxvii% + \@transferaddvbox\@FrBoxvii\@FrBoxvi% + \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi% + \global\setbox\@FrBoxiiii=\lastbox\unskip}% + \@transfervbox\@FrBoxvii\@FrBoxvi% + \noindent \@sendtopage\@FrBoxvi% + \setbox\@FrBoxvii=\vbox\bgroup\@setpartozero% + \noindent \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}% + \def\@qqguill{\relax}% + \def\@staring{\global\setbox\@FrBoxQuotes=\hbox to 0.81em{\@qqguill}\egroup% + \setbox\@FrBoxvi=\vbox{\unvbox\@FrBoxvii% + \global\setbox\@FrBoxiiii=\lastbox\unskip}% + \@transfervbox\@FrBoxvi\@FrBoxvii% + \noindent\@sendtopage\@FrBoxvii% + \setbox\@FrBoxvi=\vbox\bgroup\@setpartozero% + \hangindent=\wd\@FrBoxQuotes\hangafter=1% + \setbox\@FrBoxvii=\hbox{\unhcopy\@FrBoxiiii\unskip\unskip% + \unpenalty}% + \@FrDimenS=\@FrDimen \advance\@FrDimenS by -2em% + \ifvoid\@FrBoxiiii\indent\copy\@FrBoxQuotes% + \else% + \parindent=\z@% + \ifdim \wd\@FrBoxvii>\@FrDimenS \unhbox\@FrBoxvii\break% + \else \unhbox\@FrBoxvii% + \fi\fi}% + \def\@qquotes{\setbox\@FrBoxvii=\vbox\bgroup\@setpartozero}% +}% -end \@desarm +%#> +\def\@EIM{\def\labelitemi{\@lti}\def\labelitemii{\@ltii}% + \def\labelitemiii{\@ltiii}\def\labelitemiv{\@ltiv}% + \let\@afterindentfalse\@aifORI\@afterindentfalse% + \parindent\@piORI}% -restore \parindent +\let\@FL\relax% -\@FL is \relax with french light. +%#< +{\catcode`.=12\catcode`p=12\catcode`t=12\gdef\auTo@gf#1.#2pt{#1}}% +\def\@FL{% -LETTRINES defs +\def\automaticlettrine{% + \ifx\lettrinefontname\undefined% -..... \automaticlettrine + \def\@tempa####1 ####2\@@{% -extract font name + \def\lettrinefontname{####1}}% + \edef\@tempb{ }% + \expandafter\@tempa\fontname% + \expandafter\font\@tempb\@@\fi% + \let\sv@lf=\lettrinefont}% +\def\noautomaticlettrine{% + \let\lettrinefontname=\undefined% -.\noautomaticlettrine + \let\lettrinefont=\sv@lf}% -reset font +\ifx\lettrine\undefined% -............................................. \lettrine +\def\lettrine{\par% + \let\@tempa\relax% + \def\@tempa{\def\@fbr{\fboxrule=\z@}% + \protect\@lettrineS% + }% + \@tempa}% +\if@PMF\def\@Ettrine[##1]{##1}\let\@ettrine\relax\else% + \def\@ettrine##1##2\par{\bgroup\parskip=\z@% -NFSS requires a + {\ly\xdef\bef@ly{\the\font}}% -global def! + \let\newpage=\relax\let\clearpage=\relax% + \let\cleardoublepage=\relax% + \edef\bef@fnt{\the\font}% + \ifCG\def\bef@let{}% + \else\def\bef@let{\bef@fnt\def\ly{\bef@ly}% + \leftguillemets\space}% + \fi\@@ttrine{##1}{##2}\egroup}% + \def\@@ttrine##1##2{\ifFLA\def\@@ttrnxt{\@@@trine##1\@@{##2}}% + \else\def\@@ttrnxt{##1\space\ignorespaces##2}% + \fi% -fol.hbox to start a new par after 1 line lett. + \@@ttrnxt\unskip\par% -First \par is for lineno package. + \f@par% -The second \par ends the \lettrine. + \@nobreakfalse}% -Allow breaks after that paragraph. + \def\@@@trine##1##2\@@##3{\@fbr\TeXeverypar{}% +%%% start of automatic font calculation (a piece of code coming from Ronan) + \ifx\lettrinefontname\undefined\let\auTo@lh\undefined% + \else\let\auTo@lh\lettrinehang% + \ifx\auTo@lh\undefined\def\auTo@lh{2}\fi% + \bgroup% + \ifx\@htfreq\undefined\newdimen\@htfreq\newdimen\@htfbase\fi% + \setbox0=\hbox{M}\@htfreq=\ht0% + \def\dimentocount####1{\expandafter\auTo@gf\the####1}% + \font\@fontreq=\lettrinefontname% + \setbox0=\hbox{\@fontreq ##1}\@htfbase=\ht0% + \advance\@htfreq by \auTo@lh\baselineskip% + \advance\@htfreq by \lineskip% -inapropriate increment + \advance\@htfreq by -\baselineskip% + \multiply\@htfreq by 100 % -To be more precise + \multiply\@htfbase by 100 % + \divide\@htfreq by \dimentocount\@htfbase% -\relax + \multiply\@htfreq by \@m% +\global\font\lettrinefont=\lettrinefontname\space scaled \dimentocount\@htfreq% + \egroup% + \fi% +%%% end of automatic font calculation + \setbox0\hbox{% -\fbox is eliminated for that measuring + {\shortstack{\bef@let{\lettrinefont##1}\relax% + \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}% + \@FrDimenH=\ht0\advance\@FrDimenH by\dp0% + \@FrDimenS=\@FrDimenH\advance\@FrDimenS by\fboxsep% + \ifdim\baselineskip\superieura0pt% + \divide\@FrDimenS by\baselineskip% + \fi\@FrCount=\@FrDimenS% + \@FrDimen=\baselineskip\multiply\@FrDimen by-\@FrCount% + \advance\@FrDimen by\@FrDimenH% + \ifdim\@FrDimen>0.025\baselineskip \advance\@FrCount by 1\fi% + \ifx\auTo@lh\undefined\else\@FrCount=\auTo@lh\fi% + \ifx\lettrinehang\undefined\else\@FrCount=\lettrinehang\fi% + \@FrDimenI=\wd0% + \ifdim\fboxrule=\z@\else\advance\@FrDimenI by2\fboxrule% + \advance\@FrDimenI by2\fboxsep\fi% + \@FrDimenS=\fontdimen2\font\advance\@FrDimenI by+3\@FrDimenS% + \ifdim\fboxrule=\z@\advance\@FrDimenI by-0.30\@FrDimenS\fi% + \advance\@FrCount by -1% + \@FrDimen=\@FrCount\baselineskip% + \advance\@FrCount by 1% + \ifdim\fboxrule=\z@\else\advance\@FrDimen by -\fboxrule\fi% + \@FrDimenH=-\dp0% -to get baseline alignement + \setbox0\hbox{\ifdim\fboxrule=\z@\kern-\fboxsep\fi% + \fbox{\shortstack{{% + \def\@LSG{\f@issue\@fw{-5- % +%\@txt@msg{d\'efinition de lettrine incorrecte}% + }}% + \let\@RSG=\@LSG\bef@let% + \lettrinefont\raise-\@FrDimen\hbox{##1}\relax% + \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}}% + \box0\@FrDimen=\@FrDimenH% + \advance\@FrDimenH by-\@FrCount\baselineskip% + \advance\@FrDimenH by \lineskip% -inapropriate action + \ifdim\fboxrule=\z@\else\advance\@FrDimenH by -\fboxrule\fi% + \vspace*{\@FrDimenH}% -where to write the rest of the line + \hangindent=\@FrDimenI% +\ifx\lettrinehang\undefined% -hangafter change then allowed + \ifdim\@FrDimen<-0.025\baselineskip% -if dp0 > 25/1000 then + \advance\@FrCount by\@ne% -add one more line hangafter + \divide\@FrDimen by-\baselineskip% -and may be it could + \advance\@FrCount by\@FrDimen% -extend past a line. + \fi% +\fi% + \ifnum\@FrCount=1\f@issue\@fw{-6- %\@txt@msg{lettrine \`a revoir}% + }\fi% + \hangafter=-\@FrCount% + \noindent\kern-2.5\@FrDimenS% + \def\@temp@{##2}% + \ifx\empty\@temp@\f@issue\@fw{-7- % + %\@txt@msg{lettrine r\'eduite \`a 1 seule lettre}% + }% + \else{\scshape ##2}\fi\def\@temp@{##3}% + \ifx\@temp@\empty\else\space\ignorespaces##3\fi% + }% -@@@trine + \def\@Ettrine[##1 ##2 ##3]##4\par{\bgroup\parskip=0pt% -NFSS requires a + {\ly\xdef\bef@ly{\the\font}}% -global def! + \let\newpage=\relax% + \edef\bef@fnt{\the\font}\@gN% + \ifFLA\def\bef@let{\bef@fnt\def\ly{\bef@ly}##1\space}% + \else ##1\space\fi% + \@@ttrine{##2}{{\def\@aft@let{##3}\ifx\@aft@let\empty% + \else##3\space\fi% + \ignorespaces ##4}}\egroup}% +\fi% -\if@PMF +\def\flettrine{\par% -................................................ \flettrine + \let\@tempa\relax% + \def\@tempa{\def\@fbr{}\protect\@lettrineS}% + \@tempa}% +\def\@lettrineS{\ifx\@FrDimenH\undefined% + \newdimen\@FrDimenH\newdimen\@FrDimenI\fi% + \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi% + \@ifNextNB[{\@Ettrine}{\@ettrine}% -] emacs + }% +\fi% -\lettrine undefined + }% -end of \@FL +%%%%%%%%%%%%%%%%% +%#> +% =============================== +% | Typography | +% =============================== +% +% Let the possibility to turn all off +\def\nonfrench{\ifFrench\@DFP% -....................... \begin & \end{nonfrench} + \def\@temp@{\@AFP}% -\@AFP only for non LaTeX users + \else\@NoFr\def\@temp@{\relax}\fi% + \def\endnonfrench{\@temp@\ignorespaces}% + \ignorespaces}% +% +% Original settings of \dospecials et \@sanitize saved at \begin{document} +% include ! ? ; : < > ` ' ^ " in dospecials and sanitize: +\def\@dospecialsfrench{\do\`\do'\@dsversa}% -..................\@dospecialsfrench +\def\@dsversa{% -specials reduced for versatim envir..........\@dsversa + \do\ \do\\\do\{\do\}\do\$\do\&\do\#\do\|\do\^^K\do\_\do\^^A\do\%\do\~% -$emacs + \do\!\do\?\do\;\do\:\do\<\do\>\do\^\do\"}% +\def\@sanitizefrench{% -.........................................\@sanitizefrench +% \@makeother\ \@makeother\\\@makeother\$\@makeother\&%$emacs +% \@makeother\#\@makeother\|\@makeother\^^K\@makeother\_% +% \@makeother\^^A\@makeother\%\@makeother\~% + \@saORI% -get original \@sanitize and add ours: + \@makeother\!\@makeother\?\@makeother\;\@makeother\:% + \@makeother\`\@makeother'\@makeother\<\@makeother\>% + \@makeother\^\@makeother\"}% +% +%\@ifNextNB X {YES} {NO} ... if next char is X then YES else NO ... \@ifNextNB +\def\@ifNextNB#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet% + \@tempc\@Fifnch}% + \def\@Fifnch{\ifx \@tempc \@tempe\let\@tempd\@tempa% -Next char may be an + \else\let\@tempd\@tempb\fi\@tempd}% -active space. +%\ifNextNBc X or Y {YES} {NO} ... ... \@ifNextNBc +\def\@ifNextNBc#1#2#3#4{\let\@tempe=#1\let\@tempf=#2% + \def\@tempa{#3}\def\@tempb{#4}\futurelet% + \@tempc\@Fifnchc}% + \def\@Fifnchc{\ifx\@tempc\@tempf\@tempa\else\@Fifnch\fi}% +% +\def\@skiplastspace{\ifdim\lastskip>\z@\unskip\penalty\@M\fi}% -..\@skiplastspace +% +\let\ifFrench\iftrue% -temporary setting +\def\@AFP{% -................................ \@AFP = Activate French Punctuation + \let\dospecials\@dospecialsfrench% + \let\@sanitize\@sanitizefrench% + \AFPdp\AFPinfsup}% +\def\AFPdp{\ifFrench\catcode`\!=\active\catcode`\?=\active% + \catcode`\;=\active\catcode`\:=\active\fi}% +\let\AFPinfsup\relax% +%#< +\def\AFPinfsup{\ifFrench\ifFG\catcode`\<=\active\catcode`\>=\active\fi\fi}% +%#> +\def\AFPq{\ifFrench\catcode`'=\active\catcode``=\active\fi}% +\def\AFPdq{\catcode`"=\active}% +% +\def\@DFP{% -............................ \@DFP = Desactivate French Punctuation + \DFPq\DFPinfsup\ifLPA\else\DFPdp% + \let\dospecials\@dsORI% + \let\@sanitize\@saORI\fi}% +\def\DFPq{\ifFrench\catcode``=12\catcode`'=12\fi}% +\let\DFPinfsup\relax% +%#< +\def\DFPinfsup{\ifFrench\catcode`<=12\catcode`>=12\fi}% +%#> +\def\DFPdp{\ifFrench\catcode`;=12\catcode`:=12% + \catcode`!=12\catcode`?=12\fi}% +\def\DFPdq{\catcode`"=12}% +%#< +% Typographic process of dots (default is: let dots macros as usual) +% +\let\@doORI\dots\let\@ldoORI\ldots% +\def\TeXdots{\@noBDfr% + \ifFTY\let\dots\@doORI\let\ldots\@ldoORI\fi}% -.............\TeXdots +\def\noTeXdots{\@noBDfr% + \ifFTY\def\dots{...}\def\ldots{...}\fi}% -............ \noTeXdots +% +% i dotless (for those who haven't a good text editor) +% +\let\@hatORI\^\let\@treORI\"% +\def\idotless{\@noBDfr% + \ifFTY% -............................................... \idotless + \def\^##1{{\expandafter\@hatORI\ifx ##1i\i\else##1\fi}}% + \def\"##1{{\expandafter\@treORI\ifx ##1i\i\else##1\fi}}% + \fi}% +\def\iwithdot{\@noBDfr% + \let\^\@hatORI\let\"\@treORI}% -.....(no MlTeX command). \iwithdot +%#> +% Typographic process of double punctuation: +% +\let\ifLPA\iffalse% -\ifLPA must be initiated. +\let\ifFG\iffalse% -\ifFG must be initiated. +\def\@tempa#1{\f@issue% + \@fw{-13- %\@txt@msg{le caract\`ere "#1" est d\'ej\`a actif}% + }[#1]% + \let\@tempb\next\let\@tempc\empty}% -warning message +\let\@tempb\empty% +\AFPdp% -activate first part +\let\ifWTS\iffalse% -set wrong typed spaces to false +\def\@WTS{\relax\ifmmode\else\ifhmode% -skip wrong typed space + \ifdim\lastskip>\z@\unskip\fi% + \fi\fi}% +% this part is necessary because some modules like biblatex ares conceived to +% run only with babel or polyglossia and some definitions are necessary +% because of \XeTeXinterchartokenstate +% Necessary : +% Add a thin space before punctuation ; : and ! in place of a space +\def\intercharpunct{% +% \lccode\lccode8217=8217 + \XeTeXinterchartokenstate=1 + \XeTeXcharclass `\! \french@punctthin + \XeTeXcharclass `\? \french@punctthin + \XeTeXcharclass `\; \french@punctthin + \XeTeXcharclass `\: \french@punctthick + \XeTeXinterchartoks \z@ \french@punctthin = {\nobreak\thinspace}% + \XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}% + \XeTeXinterchartoks 4095 \french@punctthin = {\efr@unskip\nobreak\thinspace}% + \XeTeXinterchartoks 4095 \french@punctthick = {\efr@unskip\nobreakspace}% + } +\def\nointercharpunct{% +% \lccode8217=\z@ + \XeTeXcharclass `\! \z@ + \XeTeXcharclass `\? \z@ + \XeTeXcharclass `\; \z@ + \XeTeXcharclass `\: \z@ + \XeTeXinterchartokenstate=0 + } +\newcount\eF@nonchar +\newif\ifeF@active@punct % est pour la ponctuation +\newif\ifeF@xetex@punct +\ifdefined\XeTeXinterchartokenstate + \eF@xetex@puncttrue\eF@active@punctfalse + \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt + \eF@nonchar=255 \relax + \else + \eF@nonchar=4095 \relax + \fi +\fi +% ceci ou largeur fixe ? % insecable : space : \char160 fine : \char8239 +\ifeF@xetex@punct + \newXeTeXintercharclass\french@punctthin % ! ? ; et autres + \newXeTeXintercharclass\french@punctthick % : +% + \def\efr@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi} + \def\xpg@nospace#1{#1} +% + \ifeFr@Typo\protect\intercharpunct\else\nointercharpunct\fi +\fi% +% < for XeLaTex ****** + +\ifeF@NoEnc + \@finput{efrenchu.tex} +% and at begin should not use interchartoks + \AtBeginDocument{\nointercharpunct} +\fi +% now we come to the treatement of punctuation without \XeTeXinterchartokenstate +% \XeTeXinterchartokenstate make inactive the following treatments +\def\@tempc{% +\def;{\ifFTY\protect\@PV%{}% -............................................... ";" + \else\ifWTS\@WTS\fi\string;\fi}% + }% +\def\@tempd{\@tempa{\string;}}% +\ifx;\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PV{\relax\ifmmode\string;\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi\string;\fi}% +\def\@tempc{% +\def:{\ifFTY\protect\@DP%{}% -............................................... ":" + \else\ifWTS\@WTS\fi\string:\fi}% + }% +\def\@tempd{\@tempa{\string:}}% +\ifx:\undefined\def\@tempd{}\fi\@tempd\@tempc% +\@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}% +\def\@DP{\relax\ifmmode\string:\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi% + \string:% + \@beginparpenalty=\@M\relax% +% -Page break forbidden after ":" + \fi}% % -but remains not perfect... +% Stuff for \WindowsUnits +\def\@wu#1{\@@wu#1,\void}% +\def\@@wu#1,#2{\ifx#1\empty\else\@@@wu #1\fi% + \def\@tempa{\@@wu#2}% + \ifx#2\void\else\expandafter\@tempa\fi% + }% +\def\@@@wu#1=#2{\expandafter\edef\csname #1\endcsname:{#2\string:}}% +% \hhline modification should be removed if the version +% [1997/11/24 v3.x beta] is generally in use (and distributed). +\ifx\hhline\undefined\else\let\@hhlORI\hhline% -......................... \hhline + \def\hhline{\omit\ifFrench\let:\@cidp\fi% + \expandafter\@gobble\@hhlORI}% +\fi% +\def\@tempc{% +\def!{\ifFTY\protect\@PE%{}% -............................................... "!" + \else\ifWTS\@WTS\fi\string!\fi}% + }% +\def\@tempd{\@tempa{\string!}}% +\ifx!\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PE{\ifmmode\string!\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi% + \string!\fi}% +\def\@tempc{% +\def?{\ifFTY\protect\@PI%{}% -............................................... "?" + \else\ifWTS\@WTS\fi\string?\fi}% + }% +\def\@tempd{\@tempa{\string?}}% +\ifx?\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PI{\relax\ifmmode\string?\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M% + \hskip +0.09em plus 0.07667em% -max glue accepted + \fi% + \fi% + \string?\fi}% +\ifx\@tempb\next\let\AFPdp\empty\f@issue% + \@fw{-13b- % + \@txt@msg{la double ponctuation est alors d\'esactiv\'ee}}\fi% +\let\ifLPA\ErrFrench% -\ifLPA restored. +\let\ifFG\ErrFrench% -\ifFG restored. +\let\@aORI\@array% -........................................ \@array for \array +\def\@array{}% -default noop, further defined. +% 2e float placement correction +\DFPdp\AFPdp% -normally a noop but in case of warning... +\ifx\AFPdp\empty\else% -only for activated exclamation mark +\def\@array{\let\noexpand\@tempa=\noexpand!% + \def\noexpand!{\noexpand\string\noexpand!}% + \edef\noexpand\@tempb{##1}% -asis substitution + \let\noexpand!=\noexpand\@tempa}% +\fi% +\catcode`<=13\catcode`>=13% -temporary activation +\let\ifArG\iftrue% -by now assume guillemets are available in arrays. +\edef\@array[#1]{\edef\noexpand\@tempb{#1}% -default substitution + \noexpand\ifArG\noexpand\else% + \noexpand\ifnum\catcode`\noexpand<=\active% + \noexpand\ifmmode\let\noexpand<\noexpand\inferieura% + \let\noexpand>\noexpand\superieura% + \noexpand\fi\noexpand\fi\@array% + \noexpand\fi% + \noexpand\@aORI[{\noexpand\@tempb}]}% +\let\@eaORI\eqnarray% -.............................................. \eqnarray +\def\eqnarray{\ifArG\else\ifnum\catcode`<=\active% + \let<\inferieura\let>\superieura% + \fi\fi\@eaORI}% +\ifx\@@array\undefined\else% -When array package loaded we must ...... \@@array + \let\@@aORI\@@array% -protect it too +\def\@@array{\ifArG\else\ifnum\catcode`<=\active% + \let<\inferieura\let>\superieura% + \fi\fi\@@aORI}% -as for eqnarray (and standard array). +\fi% +\catcode`<=12\catcode`>=12% +\DFPdp% -desactivate first part +\let\@CGroup\relax\let\@@FG\relax% -Should be relax for french light. +\let\@LG\relax% +%#< +% Process of guillemets (typed << and >>)%.......................... Guillemets +% +% here is the oldest way to def. guillemets (still useful with plain} +\def\@og{\leavevmode\ifdim\lastskip>\z@\unskip% + \penalty-9\hskip0.35em minus 0.35em\fi% + \raise0.27ex\hbox{$\scriptscriptstyle\ll$}\,\nobreak\ignorespaces}% +\def\@cg{\@skiplastspace\nobreak\,\leavevmode\raise0.27ex% + \hbox{$\scriptscriptstyle\gg$}}% +\let\ifFG\iftrue% -set the default +\AFPinfsup% -activate for guillemets +% special definition for \lettrine and \flettrine: +\def\@gN{\def<##1{\ifx ##1<\leftguillemets\else\@LSG##1\fi}% + \def>##1{\ifx ##1>\rightguillemets\else\@RSG##1\fi}}% +\let\@oldog\<\let\@oldcg\>% -let it run if previously defined +\def\@ogx<{\ifFTY\@og\else\@DOG\fi}% +\def\@cgx>{\ifFTY\@cg\else\@DFG\fi}% +% Guillemets must not be typed \<< and \>>, the following is for compatibility +%\def\<{\@ifNextNB<{\@ogx}{\@oldog}}% +%\def\>{\@ifNextNB>{\@cgx}{\@oldcg}}% +% +%\def<{\ifnum\catcode`< =\active% look at \normalbrackets................. "<< +% \expandafter\@genGL\else\@LSG\fi}% \EBCDICbrackets are different +\def\@@LFG{\ifFTY\ifmmode\protect\@LSG\else% + \ifIEB\@SOC\else\@LSG\fi% -EBCDICbracket + \fi% + \else\@LSG\fi}% +\global\let\ifCG\iftrue% +\let\inside@an@expand\empty% -Stuff to expand in an usual \edef. +\def\if@mid@expandable#1#2{\let\inside@an@expand\relax\relax% + \ifx\inside@an@expand\relax% + \let\inside@an@expand\empty% + \expandafter#2% + \else\expandafter#1% + \fi}% +% A command to avoid wrong crash when expanding a macro which is not +% fully expandable; usage: \edef\XX{\stop@mid@expandable}\XX +\def\stop@mid@expandable{\if@mid@expandable{% + \errmessage{This macro is not expandable, please % + \string\protect \space it.}\stop}{}% + }% +%%%\def\@LG{\relax\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}% +\def\@LG{\relax\if@mid@expandable{\@@@LG}{\@@LG}}% +\def\@@LG{\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}% +\def\@@@LG{\relax\noexpand <<\relax} +\def\@SifDOGon{\global\let\ifDOG\iftrue}% -set scnd level of guillemets flag +\def\@SifDOGoff{\global\let\ifDOG\iffalse}\@SifDOGoff% -now set it off +\def\@@@OG{\ifCG\ifFLA\ifEPG\else% -now be tolerant... in noeverypar + \hbadness=10000% -all this stuff is really dirty ! + \ifhmode\newline\fi% -We force newline if any stuff already typeset. + \bgroup\def\par{}% + \@FrDimen=\textwidth% -line size on mono-column + \if@twocolumn\tolerance=5000\pretolerance=5000% + \advance\@FrDimen by -\columnsep% + \divide\@FrDimen by 2\fi% -for two-column + \@ifundefined{@inAlist}{}{% -revisite box size in a list environment + \advance\@FrDimen by -\leftmargin\advance\@FrDimen by -\rightmargin% + \advance\@FrDimen by -\listparindent\hsize=\@FrDimen}% + \@qquotes\fi\fi\fi% + \@oguills% + \ifFLA\ifEPG\bgroup\def\@currenvir{guillemets}% -simulate an environment + \let\@CGroup\egroup\fi\fi% -for error processing + \ifCG\ifFLA\ifEPG% -save the current \everypar and apply it first + \xdef\@epORI{{\the\TeXeverypar}}% + \TeXeverypar={\@epORI% -Original \everypar. + \ifEPGR\else% -If not allready done, + \@oguills% -insert guillemets and + \@ifundefined{@OuvOpen}{% -then according + \,% -kerning just after. + }{}% + \fi}% + \fi\fi% + \else\@SifDOGon\@AG% -ancient guillemets featuring + \ifFLA\ifEPG\else\def\@qqguill{\@oguills}\@staring\fi\fi\fi% +%%% \protect\@CGfalse% + \global\let\ifCG\iffalse% + \ifUSP\kern+0.13em\penalty\@M\ignorespaces% + \else\kern-0.19em\relax\penalty\@M\fi}% -likely as \ignorespaces\fi +\def\@AG{\ifAG\let\@LP\@RP\let\@gotl\@gotr% + \fi}% -Apply ancient guillemets if required +\def\f@guillemets{<<}% +\def\@oguills{% + \bgroup\@ifundefined{@OuvOpen}{\def\@OuvOpen{}% -avoid duplicate << + \@ifundefined{ly}{\@og}% + {\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi% + \ifx\@gotl\undefined\char\rq\@LP% + \else\@gotl\fi\kern+0.20em}}% + \else\hbox{{\ly\@LP\kern-0.20em\@LP\kern+0.20em}}\fi% + \nobreak}}{}\egroup}% +%\def>{\ifnum\catcode`> =\active% look at \normalbrackets................. ">>" +% \expandafter\@genGR\else\@RSG\fi}% \EBCDICbrackets are different +\def\@@RFG{\ifFTY\ifmmode\protect\@RSG\else% + \ifIEB\@SFC\else\@RSG\fi% -EBCDICbracket + \fi% + \else\@RSG\fi}% +\def\@SifFTY{\let\ifFTY\iffalse}% -to turn of FTY temporary +%%%\def\@RG{\relax\ifmmode\@SifFTY\fi\ifFTY\@@FG\else\@DFG\fi}% +\def\@RG{\relax\if@mid@expandable{\@@@RG}{\@@RG}}% +\def\@@RG{\ifmmode\@SifFTY\fi\ifFTY\@@FG\else\@DFG\fi}% +\def\@@@RG{\relax\noexpand >>\relax} +\def\endf@guillemets{>>}% +\ifx\RIfM@\undefined\else% -For AmSTeX we force \nofrenchguillemets. + \edef\@emORI{\the\everymath\relax}% -Save original \everymath. + \edef\@edORI{\the\everydisplay\relax}% -Save original \everydisplay. + \f@issue\@fW{^^J -18- % + %\@txt@msg{\frenchname.sty force l'option }% New definition takes care + %\@txt@msg{\string\nofrenchguillemets\space en maths avec AmSLaTeX.}% + }% -that \nofrenchguillemets may + % be still undefined; expansion differed. + \everymath={\csname nofrenchguillemets\endcsname\@emORI}% + \everydisplay={\csname nofrenchguillemets\endcsname\@edORI}% +\fi% +\DFPinfsup% -desactivate for guillemets +% The grammar environnement from syntax package...................... \grammar +\ifx\grammar\undefined% -can't use French guillemets. + \else\let\@grORI\grammar\def\grammar{\nofrenchguillemets\@grORI}% +\fi% + +\def\@@FG{\ifCG\f@issue% + \@fw{-14- %\@txt@msg{fermeture de guillemets non ouverts}% + }\fi% + \ifUSP\unskip\kern+0.13em\else% + \ifdim\lastskip>\z@\unskip% -skip previous space + \penalty\@M% -don't break here + \space% -better than \kern + \penalty\@M% + \fi% + \kern-0.19em% + \fi% + \xdef\@tempd{\@currenvir}\def\@tempe{guillemets}% + \ifx\@tempd\@tempe% + \@CGroup\@fguills% -end group if any and put closing guillemets + \else\ifEPG% + \@fguills% -typeset but no real closing (see \@@@FG) + \def\@CGroup{\egroup\@gobble}% -warning until \endguillemets: + \ifFLA% -Message issued only when french layout is active. + \f@issue% + \@fw{-49- %\@txt@msg{fermeture pr\'ematur\'ee de guillemets}% + }% + \fi% + \else\@CGroup\@fguills% + \fi% + \fi% +% \edef\@currenvir{\@tempd}% generates error instead of just a warning. + \ifDOG\ifFLA\ifEPG\else\@fniv2\fi\fi% + \@SifDOGoff\else\@@@FG\fi% -reset secnd and first level +% following code would be fine but doesn't run: +% \@ifNextNB\space{\penalty-\@highpenalty}{}% allow break if space after + }% +\let\guillemets\@LG% -................................. \begin & \end guillemets +\def\RG@{\ifFTY\ifCG% -could be still closed in a prev. envir + \else\@RG% -Assume first closing >> and print it + \fi% + \@CGroup\@@@FG\relax\fi}% -end second level >> +\let\endguillemets\RG@% +\def\@@@FG{\ifFLA\ifEPG\ifx\@epORI\undefined\else% -\everypar is restored + \expandafter\TeXeverypar=\@epORI\fi% + \xdef\@epORI{{}}% -any way \xdef can be cleared + \else\@staring\@stared\egroup\fi\fi% + \global\let\ifCG\iftrue\let\@CGroup\relax}% +\def\@fguills{\@ifundefined{ly}{\@cg}% -ECM + {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi\kern+0.20em% + \ifx\@gotr\undefined\char\rq\@RP% + \else\@gotr\fi}}% + \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}% +\ifGIAF\else\ifdim\fontdimen\@ne\font>\z@\/\fi\fi% -italic correction simulated + }% +%#> +\def\@normalrq{\relax\ifmmode^\prime\else\@frq\fi}% +\def\@frq{{\catcode`'=12{\ifNEQ\ifECM\char\rq001% + \else\char\rq023\hbox{}\fi% + \else\string'\fi}}}% +\AFPq% -activate quoting +\def`{\protect\@PLQ}% -..................................................... "``" + \let\@PLQ@\lq% + \def\@PLQ{\ifmmode\string`\let\@PLQ@\relax% + \else\ifNED\let\@PLQ@\@PLQn\fi% -may start a par. + \ifhmode\let\@PLQ@\@PLQn\fi% + \fi\@PLQ@}% + \def\@PLQn{\@ifNextNB`{\protect\@OQ}% + {\ifNEQ\ifECM\char\rq000\hbox{}% + \else\char\rq022\hbox{}\fi% + \else\string`\fi}% + }% + \def\@OQ`{\ifNED\protect\@LG\else\string``\fi}% +\def'{\protect\@PRQ}% -..................................................... "''" + \let\@PRQ@\rq% -set the default + \def\@PRQ{\ifmmode\let\@PRQ@\@SRQ@% + \else\ifhmode\let\@PRQ@\@PRQn\fi% + \fi\@PRQ@}% + \def\@@FGp'{\@@FG}% + \def\@PRQn{\let\@PRQ@\rq% -reset the default + \@ifNextNB'{\ifNED\let\@PRQn@\@@FGp% + \else\let\@PRQn@\relax\string'\fi\@PRQn@}% + {\protect\@normalrq}}% +% +% SUBOPTIONS definitions............................................ SUBOPTIONS +\let\ifNED\iffalse% -False for french light. +\let\ifNEQ\iffalse% -False for french light. +%#< +\def\noenglishdoublequotes{\@noBDfr% + \AFPq\let\ifNED\iftrue% -...... \noenglishdoublequotes + \ifFrench\let\@cilq='\fi}% +\def\noenglishquote{\@noBDfr% + \AFPq\let\ifNEQ\iftrue% -................... \noenglishquote + \ifFrench\let\@cilq='\fi}% +%#> +\DFPq% -disactivate quoting +\def\untypedspaces{\@noBDfr% + \let\ifUSP\iftrue}% -......................... \untypedspaces +\def\typedspaces{\@noBDfr% + \let\ifUSP\iffalse}% -............................ \typedspaces +\let\if@labelsinmargin\iffalse% -Should be false for french light. +%#< +\def\englishdoublequotes{\@noBDfr% + \let\ifNED\iffalse% -.............. \englishdoublequotes + \DFPq\ifFrench\let\@cilq='\fi}% +\def\englishquote{\@noBDfr% + \let\ifNEQ\iffalse\DFPq% -...................... \englishquote + \ifFrench\let\@cilq='\fi}% +\def\labelsinmargin{\@noBDfr% + \let\if@labelsinmargin\iftrue}% -............ \labelsinmargin +\def\nolabelsinmargin{\@noBDfr% + \let\if@labelsinmargin\iffalse}% -........\nolabelsinmargin +\def\letpunctuationactivefor{\@noBDfr% +%........................ \letpunctuationactivefor + \global\let\ifLPA\iftrue% + \def\wrongtypedspaces{\@noBDfr% + \global\let\ifWTS\iftrue}% -.............\wrongtypedspaces + }% +\def\wrongtypedspaces{\f@issue\@fw{-17- % +%\@txt@msg{\string\wrongtypedspaces\space est }% +%\@txt@msg{inop\'erant dans ce contexte}% + }}% +\def\nowrongtypedspaces{\@noBDfr% + \global\let\ifWTS\iffalse% -......... \nowrongtypedspaces + \ifLPA\DFPdp% -don't change \dospecials and \@sanitize + \fi\global\let\ifLPA\iffalse}% -it might be dangerous +% With \tabbingaccents you can't put a diacritic (` or ') on a blank space +% but it's okay for all accentuated letters. Usefull in full 8bits with +% ECM too! because 8bits chars are firstly converted to 7bits "a la TeX". +\def\tabbingaccents{\@noBDfr% + \let\@ifTA\iffalse}% -...................... \tabbingaccents +\def\notabbingaccents{\@noBDfr% + \let\@ifTA\iftrue}% -................... \notabbingaccents +\AFPq% +% tabbing environment is modified to be able to put diacritics +\def\@temp@{% + \def\tabbing{\def\@tempa{\let`=\lq\let'=\@normalrq}% -............ \tabbing +% \noenglishquote and \noenglishdoublequotes will do nothing in \tabbing + \ifNED\@tempa\fi\ifNEQ\@tempa\fi% + \def\@tempa{\let\@ifTA\iftrue}% + \ifFTY\else\expandafter\@tempa\fi% + \ifFTY\@ifTA\else% + \let\@trjORI\@tabrj\let\@tlabORI\@tablab% + \let\@ORIrj=\`\let\@ORIlab=\'% + \def\@@tabrj{\ifcat\@tempc\space\let\@tempa=\@trjORI% + \else\let\@tempa=\@ORIrj\fi\@tempa}% + \def\@@tablab{\ifcat\@tempc\space\let\@tempa=\@tlabORI% + \else\let\@tempa=\@ORIlab\fi\@tempa}% + \def\@tabrj{\futurelet\@tempc\@@tabrj}% + \def\@tablab{\futurelet\@tempc\@@tablab}% + \fi\fi\@tgORI}% + }% +\ifx\tabbing\undefined% + \else\let\@tgORI\tabbing% -put diacritics \` & \' + \@temp@% -new def apply +\fi% +\DFPq% +\AFPinfsup% -activate < and > +\def\EBCDICbrackets{\@noBDfr% + \let\ifIEB\iftrue% -......................... \EBCDICbrackets + \ifFG% + \def<{\protect\@LFG}% -old code generate \ifnum incompatibilty + \def\@LFG{\@ifNextNB<{\protect\@OG}{\@@LFG}}% + \def\@OG<{\ifnum\catcode`< =\active\expandafter\@LG% + \else\@@LFG\@@LFG\fi}% + \def>{\protect\@RFG}% + \def\@RFG{\@ifNextNB>{\protect\@FG}{\@@RFG}}% + \def\@FG>{\ifnum\catcode`> =\active\expandafter\@RG% + \else\@@RFG\@@RFG\fi}% + \fi}% +\long\def\@BracesOrNot[#1]{\ifmmode\@PreserveBraces[#1]% + \else\expandafter#1\fi}% +\let\@fobeyspaces\empty% +\long\def\@genG#1#2#3{\@fobeyspaces% + \ifx#2#3\expandafter\protect\csname @#1G\endcsname% + \else\csname @@#1FG\endcsname\expandafter\@BracesOrNot% + \expandafter[\expandafter{% + \expandafter#3\expandafter}\expandafter]% + \fi}% +\edef\@genGL{\noexpand\@genG{L}\noexpand<}% +\edef\@genGR{\noexpand\@genG{R}\noexpand>}% +% Hacking for blank space after "<" or ">" doesn't run in any \ifdim x > y +% like in \footnote, so the code is nullified until... +%\def\@bobeyspaces{\obeyspaces% +% \def\@fobeyspaces{\catcode`\ =10\let\@fobeyspaces\relax}}% +\let\@bobeyspaces\empty +\def\normalbrackets{\@noBDfr% + \let\ifIEB\iffalse% -........................ \normalbrackets + \ifFG% + \def<{\ifnum\catcode`< =\active\@bobeyspaces\expandafter\expandafter% + \expandafter\@genGL\ifmmode\relax\fi% + \else\@LSG\fi}% + \def>{\ifnum\catcode`> =\active\@bobeyspaces\expandafter\expandafter% + \expandafter\@genGR\ifmmode\relax\fi% + \else\@RSG\fi}% + \fi}% +\DFPinfsup% -desactivate < and > +%#> +\let\ifFG\iffalse% -default further choice +%#< +\def\ancientguillemets{\@noBDfr% + \let\ifAG\iftrue}% -................... \ancientguillemets +\def\todayguillemets{\@noBDfr% + \let\ifAG\iffalse}% -...................... \todayguillemets +\def\guillemetsinarrays{\@noBDfr% + \let\ifArG\iftrue}% -................ \guillemetsinarrays +\def\noguillemetsinarrays{\@noBDfr% + \let\ifArG\iffalse}% -........... \noguillemetsinarrays +\def\guillemetsinallfonts{\@noBDfr% + \let\ifGIAF\iftrue}% -........... \guillemetsinallfonts +\def\guillemetsinroman{\@noBDfr% + \let\ifGIAF\iffalse}% -................ \guillemetsinroman +\def\overfullhboxmark{\@noBDfr% + \ifFLA\overfullrule=5pt\fi}% -.......... \overfullhboxmark +\def\nooverfullhboxmark{\@noBDfr% + \ifFLA\overfullrule=0pt\fi}% -....... \nooverfullhboxmark +%#> +\let\ifFrench\iffalse% -reset original value +% +% For compatibility with MlTeX docs but unneeded in this style%...\fhyph \ehyph +{\def\@genMLhyph{\@ifundefined{french}{}{\gdef\fhyph{\french}}% + \@ifundefined{english}{}{\gdef\ehyph{\english}}}% +\@ifundefined{fhyph}{\@genMLhyph}{}% +}% +% +\gdef\frenchTeXmods{% -............................................\frenchTeXmods + \global\let\ifFrench\iftrue% +\ifCLA% + \ifCLAfrench% + \@AFP% -activate French punctuation + \frenchtypography\frenchtranslation\frenchlayout% + \fi% +\else% + \@AFP% -activate French punctuation + \frenchtypography\frenchtranslation\frenchlayout% +\fi% + \frenchmacros\frenchwarnings% + \let\@HifORI\@Hif\let\@HfiORI\@Hfi% + \frenchhyphenation% + \csname @xtrasfrench\endcsname% -from other packages +% (TeX-XeT first direction of writing will be set by the first \everypar) + \ifx\GOfrench\undefined% -When document is really started, + \csname beginL\endcsname% -set TeX--XeT direction of writing. + \fi% + \def\languagename{french}% -set it for mlp. + \@ufo% -user options + \let\switchtolanguage\endfrench% + \ignorespaces% + }% -end \frenchTeXmods +% Declare Options, extras and even more extras +\ifx\undefined\babel@core@loaded% + \edef\extrasfrench{}\def\@xtrasfrench{\extrasfrench}% -for other packages. + \DeclareOption{french}{\def\beginlanguage{% + \ifx\babel@savevariable% -selectlanguage + \undefined\french% + \else\endenglish\selectlanguage{french}\fi}% + }% + \DeclareOption{english}{\def\beginlanguage{% + \ifx\babel@savevariable% -selectlanguage + \undefined\english% + \else\selectlanguage{english}\fi}% + }% +\else\let\extrasfrench\frenchTeXmods% + \AtBeginDocument{% -With babel, at begin document we should + \def\@tempa{\protect\@LabeL}% -test if our label def had + \ifx\@tempa\label\else% -been changed by any package such as hyperref + \let\@lORI\label\let\label\@tempa\fi% -and then reset it. + \def\@tempa{\protect\atgH{r}}% -Same test and action + \ifx\@tempa\ref\else\@gG{r}{ref}{/}{1}\fi% -for \ref. + }% +\fi% +% +\@ifundefined{switchtolanguage}{% + \def\switchtolanguage#1{#1}}{}% -.(style depending)........ \switchtolanguage +\let\@stlORI\switchtolanguage +\def\@DFPtestANDset{% -Test if French was activated, + \ifx\ifFrench\iffalse% -if not \ifLPA will make French to crash + \f@issue\@fw{-71- % +%\@txt@msg{ATTENTION : }% with message -26*-; better is that message. % +%\@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}% + }% + \fi% + \let\@DFPtestANDset\@DFP% + \@DFP}% +\def\endfrench{% -............................................. \endfrench +%%% This \endL should be omitted otherwise it will be an extra for eTeX. +%%% \ifx\undefined\GOfrench% When french document really started, +%%% \csname endL\endcsname% stop any TeX--XeT french direction of writing. +%%% \fi% +\ifCLAfrench\else% + \@DFPtestANDset% + \nofrenchtypography\nofrenchtranslation\nofrenchlayout% +\fi% + \nofrenchmacros% + \nofrenchhyphenation% + \let\@Hif\@HifORI\let\@Hfi\@HfiORI% + \let\switchtolanguage\@stlORI% + \let\ifFrench\iffalse\@stlORI% + \ignorespaces}% -end of \endfrench +\let\noextrasfrench\endfrench% +%#< +\def\frenchtest{\@finput{french.tst}}% -The Torture Test ........... \frenchtest +\def\frenchdoc{\@finput{frdoc.tex}}% -The Documentation ............. \frenchdoc +%#> +%%%%%%%%%%%%%%%%%% +% =============================== +% | Language switch mechanism | +% =============================== +% based on language.dat file +% +\@ifundefined{englishTeXmods}{\gdef\englishTeXmods{}}{}% -....... \englishTeXmods +% +\global\let\@Hif\empty\global\let\@Hfi\empty% -dflt \if...\fi hyphenation switch +\global\let\if@FE\iffalse% -don't reload hyphenation exception if not required. +\newif\if@more\@moretrue% +\def\@doFh{% -define processing for reading language.dat at \begin{document} +\def\f@ERRdat{\f@issue% + \errmessage{-9- %\@txt@msg{Corrupted/absent language.dat file.}% + }\global\let\french\@@end% + }% + \bgroup% -there is a marmelade here for a temporary usage. + \let\ORIGfrench\french% + \newcount\@FrCount% +\def\tl@ng##1{}% -no need at this time to test if \<language>TeXmods is defined +\def\@rhef##1/##2 /{\def\@tempa{##2}% -reloading of hyphenation exceptions files + \def\@tempb{##1}% -language name + \def\@tempc{\ifx\space\@tempa\else% + \expandafter\gdef\csname ##1@hefn\endcsname{##2\relax}% + \if@FE\expandafter\@@input##2\relax\fi\fi}% + \ifx\undefined\@excn\@tempc% + \else\ifx\@tempb\@excn\@tempc\fi\fi}% +\gdef\NouveauLangage[##1]##2{%....................... \NouveauLangage[##]{name} +%-- check for an anormal change in language.dat: + \expandafter\@ifundefined{l@##2}{}% do nothing, unused at initex + {% First accept babel definitions (\chardef) of languages. + \chardef\l@no##1\expandafter\if\csname l@##2\endcsname\l@no\else% + \edef\l@no{##1}\expandafter% +% Secondly accept our own defs. + \ifx\csname l@##2\endcsname\l@no% OK + \else\f@issue\typeout{^^J \frenchname.sty \string: -27- % +%\@txt@msg{language \l@no\space (##2) was initially }% +%\@txt@msg{(at initex) numbered \csname l@##2\endcsname\space(ERROR!)}% + }[##2]\f@ERRdat% + \fi\fi}% +%-- + \expandafter\tl@ng\csname##2TeXmods\endcsname% + \expandafter\gdef\csname##2 \endcsname% The protected language cs. + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2\endcsname% The language cs. + {\protect\csname##2 \endcsname}% + }%\NouveauLangage +% ============================================ +% begin definition of Nouveau@Langage +\def\Nouveau@Langage[##1]##2{% -....................... \Nouveau@Langage[##]{name} + +%arabic as a language should not change the definition of \arabic V5,9995 +% the same is valid for future similar cases V5,9995 + \expandafter\@ifundefined{##2}{\lang@defifalse}% V5,9995 + {\lang@defitrue}% V5,9995 +%-- check for an anormal change in language.dat: + \expandafter\@ifundefined{mlp##2}{\langmlp@defifalse}% + {\langmlp@defitrue}% + \def\l@n@test{##2} +% here only the choises french or english, excluding arabic as language V6,0 + \ifx \l@n@fre\l@n@test\langok@defitrue\fi % french is accepted:\def\l@n@fre{french}% + \ifx \l@n@eng\l@n@test\langok@defitrue\fi % english accepted: \def\l@n@eng{english}% +% \iflangok@defi \typeout{ ##1 : ##2}\fi% +% < -- arabic prepare + \expandafter\@ifundefined{l@##2}{}% + \iflangok@defi + {% + \expandafter\tl@ng\csname##2TeXmods\endcsname% + \iflang@defi% ++ test same name existing? + \expandafter\gdef\csname##2Lang \endcsname% + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2Lang\endcsname% + {\protect\csname##2Lang \endcsname}% + \typeout{eFrench Info : % + \\##2Lang commute sur langue ##2 }% + \typeout{eFrench Info : % + et \\##2TeXmods pour ses extensions }% + \typeout{eFrench Info : % + avec \\ = une seule barre oblique inverse ===}% + \else% ** name not yet existing + \expandafter\gdef\csname##2 \endcsname% + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2\endcsname% + {\protect\csname##2 \endcsname}% + \fi% same name already existing ? + }% + \fi% -- french or english accepted + }% -\Nouveau@Langage +% end definition of Nouveau@Langage +% ============================================ +% using Nouveau@Langage also for dialects: +% test if #1 equal ``='' that means same language hyphenation but a dialect. +\edef\@temp@{=}% +\def\@langue##1##2 ##3 ##4/##5{\def\@tempa{=}\def\@tempb{##1}% + \ifx\@tempa\@tempb% + \ifnum\@FrCount > 0 \advance\@FrCount by -1\fi% + \relax% -relax Max! Why is it absolutely needed? + \expandafter\Nouveau@Langage\expandafter[\the\@FrCount]{##2}% + \ifnum\@FrCount \@temp@ 0 \@FrCount= -1\fi% + \else\langok@defifalse\edef\@temp@{<}\@l@ngue##1##2 ##3 ##4/{##5}% + \fi}% +\def\@l@ngue##1 ##2 ##3/##4{\Nouveau@Langage[##4]{##1}% +%%%\typeout{La langue ##1 est utilis\'ee sous le num\'ero \the\@FrCount} +%\expandafter\@@input##2\relax%% loading of patterns is done at initex +%% % \if@FE + \@rhef##1/##3/% -Check if reload of exceptions file is needed. +%%%\fi + }% -end of \Nouveau@Langage +% +\let\hyphenation\f@hyphenation% -use our new macro. +% +% Nouveau@Langage (as @l@ngue will be use to read language.dat : +% +\openin\@inputcheck = language.dat \def\@tempb{}% +\ifeof\@inputcheck\@Ffnt{language.dat}% + \ifx\undefined\french % -language.dat is absent but \french might be def. + \else\xdef\@PrevF{\french}% + \gdef\french{\switchtolanguage\frenchTeXmods\@PrevF}% + {\@PrevF\f@issue\@fw{-15- % +%\@txt@msg{le langage \frenchname\space porte le }% +%\@txt@msg{num\'ero \the\language}% + }}% + \fi% + \ifx\undefined\l@english % -any default English language number? + \def\l@english{0}% -set it + \fi% + \ifx\undefined\english % -check English (fenglish.sty usally loaded) + \else\xdef\@PrevE{\language=\l@english}% + \gdef\english{\switchtolanguage\englishTeXmods\@PrevE}% + {\@PrevE\f@issue\@fw{-16 % + %\@txt@msg{the English language\space is numbered }% + %\@txt@msg{\the\language}% + }}% + \fi +\else\@FrCount=-1% +% =============================== +% begin some indicators for language testing +\newif\iflang@defi% V5,9995 RJ +\newif\iflangmlp@defi% V5,9995 RJ +\newif\iflangok@defi% V6,0 RJ +\def\l@n@fre{french}% V6,0 RJ +\def\l@n@eng{english}% V6,0 RJ +\let\englishORI\english% V5,9995 RJ +\let\english\undefined% V5,9995 RJ +% end some indicators +% =============================== +\loop \endlinechar=-1 \read\@inputcheck to \@lineD \endlinechar`\^^M% + \ifx\@lineD\empty \else \advance\@FrCount by 1% + \edef\@lineD{\@lineD\space\space/{\the\@FrCount}}% + \expandafter\@langue\@lineD% + \fi% + \ifeof\@inputcheck \@morefalse \fi% + \if@more\repeat% +\fi\closein\@inputcheck% < language.dat +\ifx\undefined\english\let\english\englishORI\fi% V5,9995 ! +\let\hyphenation\@hyphenation% -reset original cs. +% +\def\@MLtst{\@ifundefined{fhyph}% -if French and \fhyph undef. (no language.dat) + {\if@PMF\gdef\french{\switchtolanguage\frenchTeXmods}% + \f@issue% + \@fw{-19- % +%\@txt@msg{utilisation du langage interne num\'ero \the\language}% + }% + \else\f@issue% + \typeout{^^J \frenchname.sty: -20b- +%\@txt@msg{the French language is undefined (ERROR!)}% + }\f@ERRdat\fi}% +%if \fhyph defined as in MlTeX then : + {\gdef\french{\switchtolanguage\frenchTeXmods\fhyph}% + \gdef\english{\switchtolanguage\englishTeXmods\ehyph}% + }% + }% -@MLtst +\@ifundefined{french}{\@MLtst}{}% -French might be still undefined! +\@ifundefined{endenglish}{\global\let\endenglish\french}{}% -and \endenglish +\gdef\tl@ng##1{\ifx ##1\relax\f@issue% + \@fw{-21- %\@txt@msg{##1 n'est pas d\'efini}% + }[##1]\fi}% +\ifx\ORIGfrench\french\f@ERRdat\fi% + \egroup% -this is the end of the marmelade + }% -end of \@doFh (\GOfrench part 2) +%%%%%%%%%%%%%%%%%% Insure AmSTeX will not be loaded later. +\ifx\vert\undefined\else\let\@bvORI\vert\fi% -Already done before macros. +\def\@fwVIIIII{\f@issue% + \kbtypeout{^^J -73- %\@txt@msg{ERREUR avec AmSTeX : }% +%\@txt@msg{\frenchname.sty a \'et\'e charg\'e trop t\^ot !}% + }\stop}% +\ifx\RIfM@\undefined% +\def\vert{\ifx\RIfM@\undefined\expandafter\@bvORI\else\expandafter% + \@fwVIIIII\fi}% +\else% +\def\vert{\@bvORI}% +\fi% +%%%%%%%%%%%%%%%%%% +%#< +% =============================== +% | Macros for help | +% =============================== +% +% Abbreviations +\def\@abbf[#1]{\def\abbrevfilename{#1}}% +\AFPdq% -Activate " char for the following coding +\def\abbreviations{\if@PMF\else\AFPdq\fi% -...................... \abbreviations + \@abbdefs\let\@abbdefs\relax% + \@ifNextNB[% -] emacs + {\@abbf}{\@abbf[frabbrev.tex]}}% +% The following lines are excluded from high speed \if...\fi scan +\def\f@protect{\ifx\protect\@typeset@protect% + \else\f@x@protect\fi}% +\def\f@x@protect\fi#1{\fi\protect"}% +\def\@eatprotect#1\protect#2\@nil{#1}% +\if@PMF\let\f@protect\undefined\let\f@x@protect\undefined% + \let\@eatprotect\undefined% +\fi% -\if@PMF +\def\@abbdefs{% -the needed defs for abbrevs + \def\ABBfound{\global\let\ifABBfound\iftrue}% + \let\ifABBfound\iffalse% + \def\@abbrev##1##2 ##3##4 ##5/{% + \let\ifFMA\iftrue% -allways true here + \edef\@tempa{##1##2}% + \ifx##3*\edef\@tempb{##4}\edef\@tempc{##4s}% + \else\edef\@tempb{##3##4}\edef\@tempc{}% + \fi% + \ifx\@tempa\@tempb##5\ABBfound% + \else\ifx\@tempc\empty% + \else\ifx\@tempa\@tempc##5\ABBfound\fi% + \fi% + \fi% + \ifABBfound% + \else\edef\@tempa{##2}\edef\@tempb{##4}% + \ifx\@tempa\@tempb##5\ABBfound% + \else\ifx\@tempc\empty% + \else\ifx\@tempa\@tempc##5\ABBfound\fi% + \fi% + \fi% + \fi}% + \def\@openabbrev##1{\openin\@inputcheck=##1 % + \ifeof\@inputcheck\@Ffnt{##1}\fi}% + \def"{\f@protect\AbbrevName}% -"......................................... "xx" + \def\AbbrevName##1"{\def\@tempa{##1}\ifx\@tempa\space``\space''% + \else\@@bbrev##1"\fi}% + \def\@@bbrev##1{\expandafter\@@@bbrev\@eatprotect##1\protect\@nil}% + \def\@@@bbrev##1"{\begingroup% + \def\ABBMfalse{\global\let\ifABBM\iffalse}% + \let\ifABBM\iftrue\global\let\ifABBfound\iffalse% + \@openabbrev{\abbrevfilename}% + \ifeof\@inputcheck\else% + \loop\endlinechar=-1\read\@inputcheck to \@lineD\endlinechar`\^^M% + \ifx\@lineD\empty% + \else\edef\@lineD{##1 \@lineD/}\expandafter\@abbrev\@lineD\fi% + \ifABBfound\ABBMfalse\fi% + \ifeof\@inputcheck \ABBMfalse\ifABBfound\else% + \f@issue% + \@fw{-22- % + %\@txt@msg{abr\'eviation de \string"##1\string" non trouv\'ee}% + }[##1]% + \fi\fi% + \ifABBM\repeat% + \fi\closein\@inputcheck% + \ifABBfound\else``##1''\fi\endgroup}% + }% -end of \@abbdefs +\if@PMF\let\@abbdefs\relax\fi% -No need with PMF. +\DFPdq% -Deactivate " char +\def\noabbreviations{\if@PMF\else\DFPdq\fi}% -................. \noabbreviations +% Save original macros if they exist before the French option loading + \let\@atORI\at% +% \let\@bvORI\vert% Already done before macros. + \let\@bsORI\backslash% +\catcode`\/=0{\catcode`/\=12% +/gdef/@boiORI{{/protect/string\}}}% -}emacs+TeX +/catcode`/\=0\catcode`\/=12% + \let\@boi\textbackslash% -Should be ok with hyperref + \let\@chapORI\chap% + \let\@tildeORI\tilde% + \let\@etcORI\etc% + \let\@numORI\numero% + \let\@numsORI\numeros% + \let\@NumORI\Numero% + \let\@NumsORI\Numeros% + \let\@degreORI\degre% + \let\@degresORI\degres% + \let\@iemeORI\ieme% + \let\@iemesORI\iemes% + \let\@ierORI\ier% + \let\@iersORI\iers% + \let\@iereORI\iere% + \let\@ieresORI\ieres% + \let\@fscORI\fsc% + \let\@lscORI\lsc% + \let\@ntsORI\!% + \let\@hntscORI\halfnegthinspace% +\def\@ifm{%\noabbreviations% -this is the default +% original commands would be better preceeded by \expandafter + \def\at{\ifFMA\string @\else\@atORI\fi}% -at char ............. \at +\ifx\RIfM@\undefined% + \def\vert{\ifx\RIfM@\undefined% + \ifmmode\expandafter\@bvORI% + \else\ifFMA\string |\else\@bvORI\fi\fi% + \else\expandafter\@fwVIIIII% + \fi}% +\else% + \def\vert{\ifmmode\expandafter\@bvORI% -| .............. \vert + \else\ifFMA\string |\else\@bvORI\fi\fi}% +\fi% + \def\backslash{\ifmmode\@bsORI% -(barre oblique inversee) ........ \backslash + \else\ifFMA% + \protect\@boi% + \else\@bsORI% + \fi% + \fi}% + \def\chap{\ifFMA\string ^\else\@chapORI\fi}% -hat char ........... \chap + \def\tilde{\relax\ifFMA\ifmmode\expandafter% -tilde char.......... \tilde + \expandafter\expandafter\@tildeORI% + \else\string~\fi\else\expandafter\@tildeORI\fi}% + \def\@Fsp##1{\ifFMA\ifmmode^{\mathrm{##1}}% + \else$^{\mathrm{##1}}$\fi% + \else##1\fi}% + \def\@umer##1{\protect\@Fsp{##1}\kern.2em\ignorespaces}% + \long\def\etc{\def\@tempa{}% -etc. ................ \etc + \ifFMA% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M~\fi% + \fi% + etc\def\@tempa{\@ifNextNB.{}{% + \@fw{-60- % +%\@txt@msg{point manquant apr\`es \string\etc}% + }}}% + \else\@etcORI% + \fi\@tempa}% +\let\nombre\undefined% -To avoid redefinition info message of LaTeX. +\DeclareRobustCommand*{\nombre}% -..................................... \nombre + {\ifFMA\expandafter\@nombre% -This control command designed + \else\expandafter\@nomORI% -to typeset french numbers + \fi}% -with correct spacing like in 123 456,789 012. + \def\numero{\ifFMA n\@umer{o}\else\@numORI\fi}% -n^o ........... \numero + \def\Numero{\ifFMA N\@umer{o}\else\@NumORI\fi}% -N^o ........... \Numero + \def\numeros{\ifFMA n\@umer{os}\else\@numsORI\fi}% -n^os ........... \numeros + \def\Numeros{\ifFMA N\@umer{os}\else\@NumsORI\fi}% -N^os ........... \Numeros + \def\degre{\ifFMA\r{}\space% -degree char....... \degre + \else\expandafter\@degreORI\fi}% + \def\degres{\ifFMA\@Fsp{o}\else\@degresORI\fi}% -degrees sign..... \degres + \def\leftguillemets{\@noBDfr% + \ifFMA\@oguills% -<< char...\leftguillemets + \else<<\fi}% + \def\rightguillemets{\@noBDfr% + \ifFMA\@fguills% ->> char..\rightguillemets + \else>>\fi}% + \def\fup{\@noBDfr\ifFTY% -.............................................. \fup + \expandafter\@fup\fi}\MakeRobustCommand{fup}% + \def\@fup{\@ifstar{\csname\string\!\endcsname\@@fup}{\@@fup}}% + \def\@@fup##1{\def\@tempa{\leavevmode\raise+0.80ex% + \hbox{\protect\sm@llerthree% + \MakeLowercase{##1}}% + \@ifNextNB\bgroup{\@@@fup}{\kern+.17em}}% + \ifFMA\expandafter\@tempa\else##1\fi% + }% + \def\@@@fup##1{\ifx\empty##1\else\kern+.17em{##1}\fi}% +% \def\ieme{\ifFMA\protect\fup{e}\else\@iemeORI\fi}% +% \def\iemes{\ifFMA\protect\fup{es}\else\@iemesORI\fi}% + \def\@tgifFMA##1##2{\ifFMA\expandafter\protect\expandafter##1% + \else\expandafter\protect\expandafter##2\fi% + }% + \def\ieme{\@tgifFMA\@Ieme\@iemeORI}% -............... ieme sign..... \ieme + \def\@Ieme{\@ifstar{\@ieme}{\@@eme}}% + \def\@ieme{\fup*{e}}% + \def\@@eme{\fup{e}}\MakeRobustCommand{ieme}% + \def\iemes{\@tgifFMA\@Iemes\@iemesORI}% -............ iemes sign..... \iemes + \def\@Iemes{\@ifstar{\@iemes}{\@@emes}}% + \def\@iemes{\fup*{es}}\MakeRobustCommand{iemes}% + \def\@@emes{\fup{es}}% + \def\ier{\@tgifFMA\@ier\@ierORI}% -.................. ier sign..... \ier + \def\@ier{\fup*{er}}\MakeRobustCommand{ier}% + \def\iers{\@tgifFMA\@iers\@iersORI}% -............... iers sign..... \iers + \def\iers{\fup*{ers}}\MakeRobustCommand{iers}% + \def\iere{\@tgifFMA\@iere\@iereORI}% -............... iere sign..... \iere + \def\iere{\fup*{re}}\MakeRobustCommand{iere}% + \def\ieres{\@tgifFMA\@ieres\@ieresORI}% -............ ieres sign..... \ieres + \def\@ieres{\fup*{res}}\MakeRobustCommand{ieres}% + \def\fsc{\@noBDfr\Fsc@@}% -....................... small caps for names \fsc + \MakeRobustCommand{fsc}% + \def\Fsc@@{\@ifNextNB*{\let\Fsc@F\@sc@F\FSC@}{\let\Fsc@F\relax\FSC@*}}% + \def\@sc@F{\rmfamily\mdseries}% -The star option forces cmr and m font. + \def\FSC@*##1{\fsc@##1\@@}% +% Still bugged bec \fsc{{{...}}} generates a wrong output + \def\fsc@##1##2\@@{\ifFMA\leavevmode{\ifECM\Fsc@F\else\@sc@F\fi% + \textsc{% + \@uchbox{\let\protect\@empty% + \let\@typeset@protect\@empty% + \let\@changed@x\@changed@x@mouth% + \if\relax\noexpand##1\fsc@@@##1##2\@@% + \else\edef\@tempa{##1}% + \expandafter\fsc@@\@tempa##2\@@% + \fi}}}% + \else\@fscORI##1\fi}% + \def\fsc@@##1##2\@@{\MakeUppercase{##1}\lsc@*{##2}}% -remove surrounding {} + \def\fsc@@@##1##2##3\@@{\MakeUppercase{##1{##2}}\lsc@*{##3}}% +% + \def\lsc{\@noBDfr\Lsc@@}% -............... allways lower case small caps \lsc + \MakeRobustCommand{lsc}% + \def\Lsc@@{\@ifNextNB*{\let\Fsc@F\@sc@F\lsc@}{\let\Fsc@F\relax\lsc@*}}% + \def\lsc@*##1{\ifFMA\leavevmode{\ifECM\Fsc@F\else\@sc@F\fi% + \textsc{\@uchbox{\MakeLowercase{##1}}}}% + \else\@lscORI##1\fi}% +%......................................... \primo \secundo \tertio \quarto% +%((((..................................... \primo) \secundo) \tertio) \quarto) + \def\@FE{\@noBDfr% -( emacs + \@ifNextNB){\@@FPE}{\@@FE}}% + \def\@@FE{\the\@FrCount$^{\mathrm o}$\kern+.29em}% +% \def%( emacs +% \@@FPE){\the\@FrCount\kern-.25em\lower.2ex\hbox{\degre}% +% \kern-.55em%(emacs +% )\kern+.3em}% + \def% -( emacs + \@@FPE){\setbox0=\hbox{\degre}\@FrDimen=\wd0\multiply\@FrDimen by 10% + \divide\@FrDimen by 45\leavevmode% + \the\@FrCount\kern-\@FrDimen% + \setbox0=\hbox{\the\@FrCount}\@tempdima=\ht0% + \setbox0=\hbox{\degre}\@tempdimb=\ht0% + \advance\@tempdimb by -\@tempdima% + \lower\@tempdimb\hbox{\degre}% + \multiply\@FrDimen by 45% + \divide\@FrDimen by 20% + \kern-\@FrDimen% -(emacs + )\kern+.3em}% + \def\quando=##1{\@FrCount=##1\@FE}% -(emacs.......... \quando=n or \quando=n) + \MakeRobustCommand{quando}% + \def\primo{\@FrCount=1\@FE}% + \def\secundo{\@FrCount=2\@FE}% + \def\tertio{\@FrCount=3\@FE}% + \def\quarto{\@FrCount=4\@FE}% +\def\frenchalias##1##2{% -.......................................... \frenchalias + \ifx##1\undefined\let##1 ##2\relax% + \else\f@issue% + \@fw{-1- %\@txt@msg{la macro \string##1 existe d\'ej\`a}% + }[\string##1]% + \expandafter\stop% + \fi}% +% +% (Leslie says: "... counters are referencable, footnote counters are not.") +% Now we do. A facility to be added in future LaTeX releases I hope. +\@ifundefined{refmark}% -stands for \footnotemark[\ref{...}] .......... \refmark + {\def\refmark##1{\@noBDfr% + \ifFTY\ifhmode% -unskip last space + \ifdim\lastskip>\z@\unskip\fi\fi\fi% + \hbox{% -following patch due to NFSS2: +%%%\ifx\DeclareFontShape\undefined\else\let\bf\mathbf\fi%\bf is used in \ref! + $^{\,% -\ref may force \itshape + \let\itshape\relax% -which don't run in math. +\textrm{\scriptsize% -\textrm introduced to avoid \pdfannotlink (13d) to crash. + \ref{##1}% + }% -(Bypass to be removed when version 14 widely installed). + }$}}}{}%....}% +\def\!{\relax\ifFMA\ifmmode% + \mskip-\thinmuskip\else\negthinspace\fi% -......... \! + \else\@ntsORI\fi}% +\expandafter\def\csname\string\!\endcsname{\kern-.083335em}% +\def\halfnegthinspace{\ifFMA\expandafter% -Not documented macro: + \csname\string\!\endcsname% -..... \halfnegthinspace + \else\expandafter\@hntsORI\fi}% +\@ifundefined{moretolerance}{\def\moretolerance{% -.............. \moretolerance + \@noBDfr% + \advance\tolerance by \the\tolerance% -double each tolerance + \advance\pretolerance by \the\pretolerance}}{}% +\@ifundefined{I}{\def\I{I}}{}% -to uppercase \i ........................... \I + \def\Sauter##1Lignes{\@noBDfr% + \vspace*{##1\baselineskip}}% -............ \Sauter#Lignes + }% -end of \@ifm +%%%%% Logo symbolisant TeX, LaTeX et les autres +\@ifundefined{AllTeX}{% -............................................... \AllTeX +\def\AllTeX{(\kern-.075em L\kern-.36em{\sbox\z@ T\vbox to\ht\z@{\hbox{% + \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse% + \selectfont A}\vss}}\kern-.15em)\kern-.075em\TeX}% +\MakeRobustCommand{AllTeX}% + }{}% +%#> +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\let\@currname\@currnameORI% -reset current package name +\def\languagename{english}% -Let's go in english until \begin{document} +\def\beginlanguage{% -.......\beginlanguage might be used after \begin{document} + \ifx\babel@savevariable% -selectlanguage + \undefined\french% + \else\endenglish\selectlanguage{french}\fi% + }% +\let\@bglngpk\babel@savevariable% -Set it for further integrity tests. +\ifx\pg@add@to\undefined\else% -polyglot is running +\def\pg@begin{\begingroup}% -Javier Bezos <jbezos@mx3.redestb.es> +\def\pg@end{\endgroup}% -as of 98/05/15 +\fi% +% +\edef\beginFWdirection{L}% -write Left to right +\ifx\undefined\babel@core@loaded\ProcessOptions*% -Activate options + \else% -special case Babel + \PackageInfo{\frenchname}% + {Initialisation de l'option \frenchname\space pour Babel}% + \GOfrench\let\GOfrench\relax% +\fi% +\let\@FW\undefined% -No more used macro. +% REMember that \french is equal to \frenchTeXmods PLUS hyphen. stuff. +\resetat% -........................................................ reset @ char +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Let few other packages know that french is loaded. +% +\PassOptionsToPackage{french}{varioref}% +\PassOptionsToPackage{french}{pdfscreen}% +% +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/src/frenchle.tex b/language/french/e-french/texmf/doc/src/frenchle.tex new file mode 100644 index 0000000000..0e42ffcb93 --- /dev/null +++ b/language/french/e-french/texmf/doc/src/frenchle.tex @@ -0,0 +1,2584 @@ +% !TeX encoding = utf8 +%This is frenchle.tex : a light french style for LaTeX +% LPPL Copyright by eFrench +% +% +% = = = = = = = = = = = = = = = ATTENTION ! = = = = = = = = = = = = = = = +% +% Ce source devrait rester dans le dépôt subversion. Il ne faut le publier qu'en forme PDF +% ou DVI. Le source en tant que tel pourrait perturber un utilisateur +% moyen de LaTeX et frenchle +% = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = +\documentclass[a4paper,12pt,openright]{article} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage{times} +\usepackage{url} +\usepackage{moreverb} +\usepackage{relsize} +\makeatletter\def\tempa{\let\if@screen\iffalse}\makeatother% 1.5in +\tempa% +\def\href#1#2{#2} +\let\titcolor\relax +\usepackage[print]{pdfscreen} +\usepackage{mymaj, french} +\usersfrenchoptions{% + \disallowuchyph + \overfullhboxmark +} + + \definecolor{section0}{rgb}{.722,.525,.431} + \definecolor{section1}{rgb}{.650,.350, 0 } + \definecolor{section2}{rgb}{.750,.250, 0} + \definecolor{section3}{rgb}{.950,.050,.0} + \definecolor{section4}{rgb}{.545,.271,.750} + \definecolor{section5}{rgb}{.627,.322,.176} + \definecolor{titcolor}{rgb}{.922,.725,.831} + \definecolor{bleu}{rgb}{.0,.0,.650} + +\hypersetup{ + pdfwindowui=true, pdfnewwindow=true, + colorlinks=true, pdfmenubar=true, pdffitwindow=true, + anchorcolor=bleu, urlcolor=bleu, +} + +\makeatletter +\newcommand{\linkandfootnote}[3]{% + \href{#3}{#2}\bgroup% + \expandafter\ifx\csname r@tlf.#1\endcsname\relax% + \expandafter\global% + \expandafter\let\csname r@tlf.#1\endcsname\empty% + \footnote{\texttt{<}\url{#3}\texttt{>}.\label{lf.#1}}% + \else\refmark{lf.#1}% + \fi\egroup% + }% +\makeatother + +\textwidth=168mm +\textheight=240mm +\voffset -1in +\hoffset -1in +\oddsidemargin=21mm +\evensidemargin=21mm +\topmargin=1cm +\footskip=23mm +\renewcommand{\ttdefault}{lmtt} +\hypersetup{ +pdftitle={Le style frenchle }, +pdfauthor={Bernard Gaulle, Raymond Juillerat}, +pdfcreator={Bernard Gaulle}, +pdfsubject={TeX, LaTeX et la langue française}, +pdfkeywords={TeX, LaTeX, pdfLaTeX, efrench, frenchle.sty, french.sty}, +} +\makeindex +\begin{document} +%\moretolerance +\sloppy +\newcommand{\fcefr}{{\relsize{-1}E}F{\relsize{-1}RENCH}} +\DeclareRobustCommand{\cefr}{\fcefr}% maintenant dans french.cfg +\newcommand{\fslefr}{\textsl{\fcefr}} +\DeclareRobustCommand{\slefr}{\fslefr} +\disallowuchyph% C'est ma devise... (inclus dans myfroptn) + +% Page de titre : +\makeatletter +\def\@fnsymbol#1{\ensuremath{\ifcase#1\or \star \or \diamond + \or \heartsuit \else\@ctrerr\fi}} +\makeatother +\title{\hbox{}%\vspace*{-3cm} + \Large + L'extension \textit{frenchle} + pour \LaTeX\\ +du paquetage \cefr.\\ +Notice d'utilisation} + +\author{Bernard \fsc{Gaulle}, repris par Raymond \fsc{Juillerat}\\ +pour le groupe \slefr \href{mailto:efrench(at)lists.tuxfamily.org}{\texttt{<efrench.org>}}% +\thanks{Attention, l'adresse m.él. fournie via les butineurs est +piégée ; il faut la corriger à la main.}\\% +LPPL © \slefr (voir le fichier +\linkandfootnote{copyright}{\texttt{Copyright.pdf}} +{http://efrench.org/}% +% ou \texttt{copyrigh.tex} +).\\ +} +\date{version \textit{le} \frenchstyleid}\label{prempage} +\index{efrench@\slefr|(} +\maketitle \index{Copyright}%\thispagestyle{empty} +%\vfill +\sommaire[3] +\vfill\vfill +\newcommand{\NNL}{\protect\let\\\relax} +\makeatletter\def\HyPsd@CatcodeWarning#1{}\makeatother% +%% +\let\Subsubsection\subsubsection +\def\subsubsection#1{\Subsubsection[\NNL#1]{\protect\color{section3}#1}} +\let\Subsection\subsection +\def\subsection#1{\Subsection[\NNL#1]{\protect\color{section2}#1}} +\let\Section\section +\def\section#1{\Section[\NNL#1]{\protect\color{section1}#1}} + +\pagebreak + +\section {Introduction} +L’extension \textit{frenchle} pour \LaTeX{} est destinée à « franciser » les documents +imprimés par \LaTeX{} selon les canons typographiques usuellement employés dans +le monde de l’édition française. Elle est aussi appelée « french allégé » car il +existe une version professionnelle , maintenue par le groupe \slefr{ } +offrant plus de dispositifs actifs +et notamment plus de possibilités de personnalisation. Cette dernière est +\maj aussi sous licence LPPL et désormais distribuée par TeXLive et MikTeX, +en tant qu'élément du paquet \maj e-french. +\section {Objectifs} +Cette extension a été conçue d’emblée comme sous-ensemble de \textsl{FrenchPro}\index{FrenchPro@\textsl{FrenchPro}aujourd'hui {\large\slefr}} +(aujourd'hui {\cefr}) +avec les objectifs suivants : +\begin{itemize} +\item être un logiciel libre, ou du moins tout autant que peut l’être \LaTeX. +Ainsi il peut être utilisé gratuitement, sans restriction ; être déposé dans +le domaine public et être rediffusé par n’importe quel moyen. +\item être le plus simple possible d’emploi ; ne pas nécessiter de connaissances +particulières autres que celles de \LaTeX{} et fournir, par défaut, une francisation +acceptable des documents de tous les jours tels que courriers, +articles, notes et rapports. Pour les livres ou les thèses d’autres extensions +peuvent s’avérer nécessaires et pour un niveau de satisfaction élevé, +la version professionnelle \textsl{french.sty} peut être requise. +\item permettre d’évoluer vers le style \textsl{french} de +%\textsl{french} de +la distribution \slefr{} (autrefois \textsl{FrenchPro}\index{FrenchPro@\textsl{FrenchPro}!aujourd'hui {\large\slefr}}) +sans aucune modificiation préalable +du document source (à l’exception du changement de nom d’extension). +\item être très facile d’installation ; ne nécessiter aucune modificiation de fichier +de configuration ; utiliser très peu de fichiers et ainsi s’intégrer naturellement +dans les environnements \LaTeX{} français. +\end{itemize} +Cette notice décrit de façon exhaustive ce que fait pour vous l’extension de +façon automatique, comment vous pouvez l’utiliser et les nouvelles commandes +mises à votre disposition. En outre, vous y trouverez des exemples de l’effet +produit par \textit{frenchle} et ses commandes, sur le document résultant. +En complément, vous pouvez vous reporter à la +\linkandfootnote{lafaq}{FAQ french}{http://www.efrench.org/distributions/faq.pdf} qui répond à +nombre de questions sur la francisation avec \TeX{} et \LaTeX. +\section {Historique} \label{histo} +Cet historique est en deux parties. +\begin{itemize} +\item D'abord, il s'agit d'une reprise intégrale de l'historique laissé par Bernard \textsc{Gaulle} +créateur des extensions \textsl{french} et \textit{frenchle}. Sa denière mise au point datait +du 23 mai 2007. Les seules modifications qui ont été nécessaires ont été de supprimer les +références à des sites qui n'existaient plus sur la Toile, éventuellement d'en remplacer +par un lien vers une adresse valable. +\item Ensuite quelques courtes réflexions au sujet du contexte dans lequel cette histoire +se déroule +\end{itemize} +\subsection{Historique repris de Bernard \textsc{Gaulle}} +Avant \textit{frenchle}, existait l’extension \texttt{french} (version 0.1 à pré-V5) qui avait +été développée pendant 12 ans (1988-2000) et avait traversé avec succès tous +les grands changements de version de \TeX{} (v2, v3, tds) et de \LaTeX{} (2.09, nfss, +2e, dc, ec) tout en restant toujours compatible avec la version précédente pour +assurer la stabilité si chère aux utilisateurs de \TeX. + +Au début, l’installation de la francisation nécessitait parfois plusieurs jours +de travail à un gourou \TeX{} et l’utilisateur final disposait de peu de fonctions de +%1. <http://frenchpro.free.fr/FAQ.pdf>. +personnalisation ; il était enfermé dans les limites du style, d’autant que toute +modification nécessitait la connaissance de \LaTeX. + +De très gros efforts ont été réalisés pour que toute fonction/décision de +\textsl{french} soit réversible et que l’utilisateur puisse y introduire ses propres améliorations. +Un nombre important de commandes a été développé à cet effet. +Dans le même temps, cette francisation s’adaptait tant bien que mal aux +différentes plates-formes d’exploitation (DOS, Window, MacOs, Unix, ...) et +aux différents moteurs \TeX{} (Personal \-\TeX, OzTEX, GTEX, Web2c, ...). La complexité +de l’ensemble s’est alors accrue, ne serait-ce que par la multiplication +du nombre de fichiers nécessaires à l’installation. + +Pour maîtriser cette expansion et en contrôler l’évolution j’ai choisi la méthode +employée pars Donald \textsc{Knuth} pour \TeX{} à savoir : écoute des demandes des +utilisateurs, discussion des améliorations proposées et intégration des fonctions +d’intérêt général qui enrichissent l’extension et ne remettent pas en cause la +compatibilité avec les versions précédentes. à cela j’avais souhaité que \textsl{french} +n’entre pas dans un circuit commercial sans mon accord préalable. Pour ce faire, +une notice de Copyright avait été élaborée et jointe à la distribution de l’ensemble +des fichiers. Dédié aux francophones, le Copyright de \textsl{french} faisait naturellement +mention de GUTenberg (association francophone des utilisateuers +de \TeX) dont j’étais le président fondateur. + +Depuis l’origine, \textsl{french} était archivé sur Internet dans le domaine public. +Aussi, lorsque l’initiative CTAN s’est mise en place avec pour objectif de contenir +tout ce qui a été développé autour de \TeX, \textsl{french} y a été archivé tout +naturellement. + +Plus tard, dans les années 1997-1998, le TUG ainsi que plusieurs éditeurs a +souhaité pouvoir rediffuser le contenu de CTAN sur CD; certaines de ces distributions +entrant dans un circuit commercial effectif. La distribution de \textsl{french} ne +pouvait pas s’intégrer, par défaut, à ces dernières. Alors, pour simplifier la tâche +des distributeurs, les archivistes du CTAN on créé en 1999 une zone « \textit{nonfree} » +où \textsl{french} a été déposé, \textit{ex abrupto}, pour ne pas risquer d’être redistribué en +violation du Copyright. Bien que ne ressemblant en rien à un \textit{shareware}, \textsl{french} +s’est alors retrouvé archivé aux côtés des autres \textit{sharewares} du monde \TeX. Cet +état de fait étant insupportable pour moi qui avais permis à quiconque d’utiliser +\textsl{french} gratuitement pendant une bonne dizaine d’années, j’ai demandé son +retrait de CTAN. Mes tentatives pour changer les choses au sein de CTAN et +du TUG ayant échoué, j’ai choisi de m’adapter à la situation en développant +\textit{frenchle} avec licence \LaTeX{} standard et \textsl{FrenchPro} \index{FrenchPro@\textsl{FrenchPro}!d'origine} +sous licence \textit{shareware} ; le +premier pouvant résider normalement sur CTAN et le second pouvant être mis +dans la zone « \textit{nonfree} » aux côtés des autres \textit{sharewares}. + +L’extension \textit{frenchle} a été mise dans le domaine public pour la première +fois en juin 2000. Six mois plus tard, \textsl{FrenchProV5} \index{FrenchPro@\textsl{FrenchPro}!d'origine} était disponible et six mois +plus tard encore, les adhérents GUTenberg ayant participé au vote du nouveau +conseil d’administration n’ont pas voulu renouveler leur confiance au président +fondateur. C’est ainsi que l’extension \textit{frenchle} est arrivée dans le monde du +logiciel libre. + +Depuis, le TUG (fin 2001) et les associations régionales d’utilisateurs de +\TeX{} (GUTenberg, Dante, etc.) distribuent des CDs contenant l’intégralité des +fichiers disponibles sur CTAN, y compris la zone « \textit{nonfree} » \index{FrenchPro@\textsl{FrenchPro}!d'origine}% +\footnote{ Déplorons juste que \textsl{FrenchPro} y ait été oublié jusqu’à l’année 2003.}. +Pour sa part, GUTenberg, documente \texttt{frenchb}\index{babel@\textit{babel}!frenchb@\texttt{frenchb}} + mais oublie curieusement +\texttt{{\backslash}usepackage[frenchle]\{babel\} }\index{extension!babel@\verb'babel'} +et ne connait pas \textsl{FrenchPro} comme l’atteste +le Cahier hors-série numéro 2 de février 2003, page 24% +\footnote{Quelques corrections ont toutefois été consenties dans une version en ligne +(aujourd'hui [2012] disparue) }. +Dans la liste des « \textit{malheurs} » infligés à mes outils de francisation de \LaTeX, +GUTenberg a demandé à l’auteur du paquetage Babel (de Johannes \textsc{Braams}) +de réduire la francisation (option \texttt{french} de Babel) à la seule utilisation de +l’option \texttt{frenchb}\index{babel@\textit{babel}!frenchb@\texttt{frenchb}} de Daniel \textsc{Flipo}. +Cette mesure a pris effet avec la version +de \LaTeX{} distribuée fin 2003. Ceci est la raison pour laquelle je propose l’extension +\texttt{babelfr}\index{extension!babelfr@\texttt{babelfr}} en remplacement\index{extension!babel@\verb'babel'} +de \texttt{babel} ce qui ne retire rien à Babel mais lui +redonne les facilités antérieures. + +À suivre ... ? + +\subsection{Réflexions de Raymond Juillerat} +\subsubsection{Babel et \textsl{mlp}}\label{refmlp}\index{mlp} +Il est clair que les travaux de Daniel \textsc{Flipo} (\texttt{frenchb}) +\index{babel@\textit{babel}!frenchb@\texttt{frenchb}} et de Bernard \textsc{Gaulle} (\texttt{french}) +sont tous deux remarquables. L'extension \texttt{french.sty} +(avec ses modules de \textsl{FrenchPro}\index{FrenchPro@\textsl{FrenchPro}!aujourd'hui {\large\slefr}}) +a toujours été pensée comme +pouvant tourner sous \TeX{} et sous \LaTeX, l'extension \texttt{frenchb.ldf} est prévue comme +fonctionnant uniquement sous \LaTeX{} avec \index{babel@\textit{babel}!options de francisation} +Babel. +\MAJ Pour l'allemand aussi, il y a un module pouvant tourner avec Babel et +un autre indépendant. +Pour l'allemand il y a \texttt{german.ldf} et \texttt{ngerman.ldf} ({Babel}) +en parallèle avec \texttt{german.sty} et \texttt{ngerman.sty}. +En ce qui concerne la typographie française, on n'aura +probablement pas non plus de solution unique pouvant tourner avec ou sans Babel. \endMAJ Je comprends une certaine +déception de Bernard Gaulle de voir sa solution multilangage \textsl{mlp}\index{extension!mlp@\textsl{mlp}} dépassée par Babel. +Mais il faudra suivre l'exemple de nos amis germains. + +\MAJ En fait, \textsl{mlp} permet à french de rester au niveau de nos amis germaniques qui incluent une possibilité +interne de passage à l'anglais ou au français (utile pour les sommaires). + Car \textsl{mlp} dans son état actuel, +ne permet que de passer à l'anglais ou à l'allemand. Pour l'allemand, il faut \textsl{mlp}. +\endMAJ +\subsubsection{Les formats et les césures}\label{lesformats} +Bernard \textsc{Gaulle} a vécu l'époque où pour une césure\index{césure} correcte, il était très important de créer un +\index{format}format. Cette initialisation n'est plus nécessaire\index{commande!frlatex@\verb'frlatex'} (depuis 1992 ou même plus tôt) +et a été remplacée par des méthodes plus simples. + +\MAJ Avec les dernières versions de Mik\TeX{} et de \TeX{}live +c'est aujourd'hui très simple. +\TeX{}live charge le paquet \slefr{} par défaut et pour l'instant Mik\TeX{} ne le fait pas mais +offre la possibilité de le charger au besoin.\endMAJ + +Pourrait-on mettre à disposition, en dehors de \texttt{french.sty} quelques éléments qui +devraient aussi être parfaitement compatibles avec Babel, comme les lettrines, composition en drapeau ? +Ou d'autres pièces parmi +celles présentées dans le \linkandfootnote{tortures}{test de torture du dépôt \slefr} +{http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/test/frenchrf.dvi} +ainsi que des macros comme versatim, vers, numero, ordinal, etc. +Et, pourquoi pas, les intégrer à \texttt{frenchb} ? + + \section{Maintenance et mises-à -jour} +Cette section est divisée en deux sous-sections. +\begin{itemize} +\item D'abord, il s'agit la reprise intégrale de la section laissés par Bernard \textsc{Gaulle} +au 23 mai 2007. Les seules modifications qui ont été nécessaires c'était de supprimer les +références à des sites qui n'existent plus sur la Toile, éventuellement d'en remplacer +par un lien vers une adresse valable. +\item Enfin la suite de la maintenance, dès que le projet \slefr a été mis en place pour reprendre l'Å“uvre +de son auteur originel afin qu'elle ne tombe pas dans l'oubli. +\end{itemize} +\subsection{Maintenance par Bernard \textsc{Gaulle}} +Bénéficiant des nombreuses années de test dans le cadre du développement +de l’ensemble des modules \textsl{FrenchPro}\index{FrenchPro@\textsl{FrenchPro}!aujourd'hui {\large\slefr}} puis \slefr, +l’extension \textit{french allégée} est extrêmement +solide et résistante aux différentes conditions d’utilisation. +Des messages d’erreur ou d’avertissement sont fournis à l’utilisateur en cas +de détection d’anomalie (cf paragr. \ref{messag} page \pageref{messag} ). +à chaque fois qu’un correctif est appliqué à \textit{frenchle} il est immédiatement +publié sur \linkandfootnote{svnfrench}{le serveur web} +{http://svn.tuxfamily.org/viewvc.cgi/efrench_efrenchsources/trunk/inputs/french/frenchle.sty} +%\footnote{disparu depuis} + puis recopié sur les serveurs CTAN. +Avant de signaler une erreur éventuelle vous devez vous assurer de reproduire +le problème avec le plus petit fichier source possible. Ensuite, vous pouvez +envoyer votre rapport de bogue sur Internet (liste francophone gut@ens.fr ou +les newsgroup tels que fr.comp.text.tex) où les gourous \LaTeX{} auront vite fait +de trouver, sinon une solution, tout au moins un contournement. Et lorsque vous +estimerez avoir obtenu une solution satisfaisante ou, à l’inverse, aucun début +de solution, n’hésitez pas à nous contacter (voir les contacts, page \pageref{contact}). +\subsection{\textsc{eFrench} et \textit{frenchle}} +%\subsection{\slefr} +Ici quelques explications pour indiquer ce que le groupe {\cefr} a apporté à frenchle.sty version 5,9993 pour en +faire une version 6,0. +\subsubsection{De FrenchPro à \textsc{eFrench}} +Bernard Gaulle, l'auteur des modules de typographie française dénommés {\sl Frenchle} et {\sl FrenchPro} est décédé peu après +avoir sorti les versions 5,9993 de ces extensions de francisation pour \LaTeX{} . +Avec l'accord de l'épouse de l'auteur, héritière des droits sur l'Å“uvre, un groupe, +lancé par Laurent \textsc{Bloch} +a géré une nouvelle version qui succède à celle de Bernard Gaulle publiée désormais sous licence LPPL. + {\sl FrenchPro} est devenu dès lors \slefr. +La version de \texttt{french.sty} a ainsi passé à 5,9994. La grande différence, c'est qu'elle n'est plus +{\sl shareware}, et ne se bloque plus après un mois d'utilisation et beaucoup d'avertissements. +Il n'était alors pas nécessaire de modifier {\sl Frenchle} déjà sous licence LPPL. + +Les responsables de la distribution \slefr{} et {\sl Frenchle} ont constaté qu'il y avait un nouveau +problème au niveau de l'utilisation multilingue. Si bien qu'il a +fallu une nouvelle correction de frenchle.sty et french.sty qui ont été portés tous deux à la version 5,9995. + +%\subsubsection{Essai d'utilisation multilingue}\label{multilingue} +%\index{multilinguisme}\index{langues}\index{langages}% +%\seealso{langages}{langues} +%À chaque ou {\em langage} +% indiqué dans le fichier\index{fichier!langage.dat@\texttt{language.dat}} +%\verb|language.dat| l'extension \slefr{} définit une commande du +%même nom. Si nous notons ce langage sous la forme : +%\verb|<|{\em langage}\verb|>|, +%la commande s'écrira alors \verb|\<|{\em langage}\verb|>|. +%Cette nouvelle commande permet alors dans le cadre de \textsl{mlp} (§ \ref{refmlp}) de passer du français% +%\footnote{Chaque commande \texttt{\backslash\string<}{\em langage}\texttt{\string>} +%permet de passer en fait du langage actif à ce nouveau +%\texttt{\string<}{\em langage}\texttt{\string>}.} +% à ce \verb|<|{\em langage}\verb|>|. +% +% +%Toutefois, il y a des exceptions. Un exemple, c'est le passage à la langue arabe qui, si \slefr{} +%avait gardé ce schéma en toute occasion, entrerait en conflit avec le formatage de nombre +%en notation arabe qui est défini par \verb|\arabic|. Dans tous les cas où la définition simple +%mènerait à un conflit, il faut choisir \verb|\<|{\em langage}\verb|>Lang| +%\index{langage@\texttt{\backslash<{}}{\em langage}{\tt>Lang{}}}. % +%Dans ces cas, un message est envoyé au journal. +%On passera alors à la +%langue arabe par \verb|\arabicLang|. + +%En fonctionnement normal une option de style \verb|\<|{\em langage}\verb|>| +%ou \verb|\<|{\em langage}{\tt>Lang{}} +%(dont l'extension s'appelle %le code est dans le fichier +%\index{fichier!langage.sty@{\tt<\em langage\tt>.sty}}% +%\verb|<|{\em lan\-gage}\verb|>|\texttt{.sty}) +%définit une commande \verb|\<|{\em langage}\verb|>TeXmods| +%\index{langage@\texttt{\backslash<{}}{\em langage}{\tt>{}}}% +%\index{langageTeX@\texttt{\backslash<{}}{\em langage}{\tt>TeXmods}}% +%pour compléter cette nouvelle langue (définir des commandes +%ou faire des actions spécifiques) +%et deux autres : \verb|\begin<|\emph{langage}\verb|>| pour y passer +%et \verb|\end<|\emph{langage}\verb|>| pour +%en sortir. \index{efrench@\slefr|)} +%Pour l'arabe, on aura \verb|\begin{arabicLang}| et \verb|\end{arabicLang}| +%en complément de \verb|\arabicLang|. +% +% et {\sl Frenchle} ont constaté qu'il y avait un nouveau +%problème au niveau de l'utilisation multilingue. Si bien qu'il a +%fallu une nouvelle correction de frenchle.sty et french.sty qui ont été portés tous deux à la version 5,9995. +% +%\subsubsection{Essai d'utilisation multilingue}\label{multilingue} +%\index{multilinguisme}\index{langues}\index{langages}% +%\seealso{langages}{langues} +%À chaque ou {\em langage} +% indiqué dans le fichier\index{fichier!langage.dat@\texttt{language.dat}} +%\verb|language.dat| l'extension \slefr{} définit une commande du +%même nom. Si nous notons ce langage sous la forme : +%\verb|<|{\em langage}\verb|>|, +%la commande s'écrira alors \verb|\<|{\em langage}\verb|>|. +%Cette nouvelle commande permet alors dans le cadre de \textsl{mlp} (§ \ref{refmlp}) de passer du français% +%\footnote{Chaque commande \texttt{\backslash\string<}{\em langage}\texttt{\string>} +%permet de passer en fait du langage actif à ce nouveau +%\texttt{\string<}{\em langage}\texttt{\string>}.} +% à ce \verb|<|{\em langage}\verb|>|. +% +% +%Toutefois, il y a des exceptions. Un exemple, c'est le passage à la langue arabe qui, si \slefr{} +%avait gardé ce schéma en toute occasion, entrerait en conflit avec le formatage de nombre +%en notation arabe qui est défini par \verb|\arabic|. Dans tous les cas où la définition simple +%mènerait à un conflit, il faut choisir \verb|\<|{\em langage}\verb|>Lang| +%\index{langage@\texttt{\backslash<{}}{\em langage}{\tt>Lang{}}}. % +%Dans ces cas, un message est envoyé au journal. +%On passera alors à la +%langue arabe par \verb|\arabicLang|. + +%En fonctionnement normal une option de style \verb|\<|{\em langage}\verb|>| +%ou \verb|\<|{\em langage}{\tt>Lang{}} +%(dont l'extension s'appelle %le code est dans le fichier +%\index{fichier!langage.sty@{\tt<\em langage\tt>.sty}}% +%\verb|<|{\em lan\-gage}\verb|>|\texttt{.sty}) +%définit une commande \verb|\<|{\em langage}\verb|>TeXmods| +%\index{langage@\texttt{\backslash<{}}{\em langage}{\tt>{}}}% +%\index{langageTeX@\texttt{\backslash<{}}{\em langage}{\tt>TeXmods}}% +%pour compléter cette nouvelle langue (définir des commandes +%ou faire des actions spécifiques) +%et deux autres : \verb|\begin<|\emph{langage}\verb|>| pour y passer +%et \verb|\end<|\emph{langage}\verb|>| pour +%en sortir. \index{efrench@\slefr|)} +%Pour l'arabe, on aura \verb|\begin{arabicLang}| et \verb|\end{arabicLang}| +%en complément de \verb|\arabicLang|. +% +%Comme ce mécanisme avait été introduit avec succès dans {\cefr}, nous l'avons aussi +%introduit dans \textsl{frenchle}. +%C'est l'arrivée à la version 5,9995. +\subsubsection{Restrictions de l'option multilingue} + +\MAJ Il fallait alors résoudre un conflit entre la version 5,9995 et \textsl{mlp}.\index{mlp} +Et comme de toute manière sans \textsl{mlp}, \slefr{} et {\sl Frenchle} +ne peuvent être multilingues nous arrivons à la version 6,0 où sans \textsl{mlp}, +on ne peut choisir que l'anglais comme autre langue et avec \textsl{mlp} +l'allemand en plus. +Le mécanisme construisant une commande \verb|\<|{\em langage}\verb|>| qui avait été prévue +par Bernard Gaulle dans le cadre de \textsl{babelfr} +est désormais réduite aux langues \textsl{french} , \textsl{english} et avec \textsl{mlp} , \textsl{german} ou \textsl{ngerman}.% +\endMAJ + +\section{ Conditions d’utilisation} +Il n’y a pas de condition particulière d’utilisation de l’extension \textit{frenchle} ; +toutefois il est conseillé de placer l’appel de \textit{frenchle} en dernière position dans +%2. Déplorons juste que \textit{eFrench} y ait été oublié jusqu’à l’année 2003. +%3. Quelques corrections ont toutefois été consenties dans une version en ligne à +%http://math.univ-lille1.fr/~flipo/dfshort.pdf. +%4. http://daniel.flipo.free.fr/frenchb/index.html +%5. <http://frenchle.free.fr/>. +%6. <frenchlebg -chez- free.fr> +le chargement des extensions au sein du document \index{classe!de document}source :\\[.5em] +\rule{0pt}{1em}\hfill\fbox{ +\begin{minipage}{90mm} + \backslash\texttt{documentclass}\{\textit{\texttt{classe\_de\_documents}}\}\\ + \backslash\texttt{usepackage}[\textit{codage d’entrée} ]\{\texttt{inputenc}\}\\ +\rule{0.4\textwidth}{0pt} \vdots \\ + \backslash\texttt{usepackage}\{\textit{extension n-2} \}\\ + \backslash\texttt{usepackage}\{\textit{extension n-1} \}\\ + \backslash\texttt{usepackage}\{\texttt{frenchle}\}\\ + \backslash\texttt{begin\{document\}} +\end{minipage} +}\hfill\rule{0pt}{1em}\\[.5em] +%\begin{decl} +%\end{decl} +en effet, il est tenu compte d’un certain nombre d’extensions afin d’en modifier +légèrement le comportement ou bien d’éviter des conflits. Quelque soit le +moteur \TeX, quelque soit l’installation (réalisée correctement) et quelque soit +l’environnement (de bonne programmation) l’extension \textit{frenchle} doit fonctionner +; n’hésitez pas à \linkandfootnote{noustux}{nous}{mailto:efrench@lists.tuxfamily.org} +faire part d’anomalies flagrantes. +Je rappelle que la gestion des caractères accentués est faite par l’extension +\texttt{inputenc} ; il suffit juste que vous précisiez le codage de votre document (latin9, +utf8, applemac, ansinew, ...). +\maj Nous verrons plus loin (section \ref{multilin} ou page \pageref{peutfaire}) qu’il existe d’autres possibilités pour faire +appel à \textit{frenchle}. +\section{ Ce que fait l’extension} +Nous arrivons maintenant au côté pratique des choses : je vais vous montrer +ce que fait, par défaut, l’extension \textit{frenchle} sur le plan typographique et +comment son comportement peut éventuellement être changé. +\subsection{ La ponctuation} +La virgule, le point-virgule, les deux-points, le point d’exclamation et le +point d’interrogation sont activés afin de les espacer\index{ponctuation} correctement du texte +précédent. +\begin{minipage}{\textwidth} +\begin{center} +\textit{Texte source}\\[0.5ex] +\begin{boxedverbatim} +$\pi=3,14...$ +point-virgule ; le texte +deux-points : le texte +point d’exclamation ! La phrase +point d’interrogation ? La phrase + +\end{boxedverbatim} +\\[.5ex] +\begin{minipage}{60mm} +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{55mm} +\nofrenchtypography +$\pi=3,14...$\\ +point-virgule ; le texte\\ +deux-points : le texte\\ +point d’exclamation ! La phrase\\ +point d’interrogation ? La phrase +\end{minipage} +} +\end{center} +\end{minipage} +\begin{minipage}{60mm} +\begin{center} +\textit{Composition avec frenchle} +\fbox{\begin{minipage}{55mm} +\frenchtypography +$\pi=3,14...$\\ +point-virgule ; le texte\\ +deux-points : le texte\\ +point d’exclamation ! La phrase\\ +point d’interrogation ? La phrase +\end{minipage} +} +\end{center} +\end{minipage} +\end{center} +\end{minipage} +\rule{0pt}{1em} + +L’espacement inséré par \textit{frenchle} devant la ponctuation est insécable, ce qui +permet de ne jamais retrouver cette ponctuation en tout début de ligne ou de +page. Une mesure spéciale, du même type, est appliquée aux deux-points afin +de ne pas le retrouver seul en bas de page, coupé du texte qui suit. +En standard, le traitement de la virgule par \LaTeX{} est différent en mode +mathématique et en mode texte. Dans ce dernier mode, aucun espacement n’est +inséré automatiquement par \LaTeX. En mode mathématique, grâce à \textit{frenchle} +il en est maintenant de même (contrairement au fonctionnement standard). +Ainsi, on se souviendra de la règle de base du mode mathématique : la barre +d’espacement ne produit aucun effet ; tout espacement doit être indiqué par une +commande ad hoc ( \backslash, \index{\,@\verb'\,'} +ou \backslash\texttt{\textit{space}} \index{space,@\verb'\space'} +ou \backslash\texttt{\textit{thinspace}} ou ...)\index{thinspace,@\verb'\thinspace'} . + + +\begin{center} +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +$\pi \simeq 3,14$ +$\textrm{PI vaut environ 3,14}$ +$f(x,y,z)$ saisi sans espacement +$g(x, y, z)$ saisi avec espacement +$h(x,\,y,\,z)$ avec commande ad hoc +\end{boxedverbatim} +\\[0.3ex] +\begin{minipage}{70mm} +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{65mm} +\nofrenchtypography +$\pi \simeq 3,14$\\ +$\textrm{PI vaut environ 3,14}$\\ +$f(x,y,z)$ saisi sans espacement\\ +$g(x, y, z)$ saisi avec espacement\\ +$h(x,\,y,\,z)$ avec commande ad hoc +\end{minipage} +} +\end{center} +\end{minipage} +\begin{minipage}{65mm} +\begin{center} +\textit{Composition avec frenchle} +\fbox{\begin{minipage}{60mm} +\frenchtypography +$\pi \simeq 3,14$\\ +$\textrm{PI vaut environ 3,14}$\\ +$f(x,y,z)$ saisi sans espacement\\ +$g(x, y, z)$ saisi avec espacement\\ +$h(x,\,y,\,z)$ avec commande ad hoc +\end{minipage} +} +\end{center} +\end{minipage} +\end{center} +\rule{0pt}{1em} + + +Les commandes de \textit{frenchle} qui régissent l’espacement après la virgule sont\\ +\verb|\frenchmathcomma| \index{frenchmathcomma@\verb'\frenchmathcomma'} +et \verb|\regularmathcomma|\index{regularmathcomma@\verb'\regularmathcomma'} : + +\begin{center} %============================= +\textit{Texte source}\\[1ex] + +\begin{boxedverbatim} +\regularmathcomma $3,14 \ f(x,y)$ +\frenchmathcomma $3,14 \ f(x,y)$ +\end{boxedverbatim} +\\[.3ex] +\begin{minipage}{60mm} +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{55mm} +\nofrenchtypography +\regularmathcomma $3,14 \ f(x,y)$\\ +\frenchmathcomma $3,14 \ f(x,\,y)$ +\end{minipage} +} +\end{center} +\end{minipage} +\begin{minipage}{60mm} +\begin{center} +\textit{Composition avec frenchle} +\fbox{\begin{minipage}{55mm} +\frenchtypography +\regularmathcomma $3,14 \ f(x,y)$\\ +\frenchmathcomma $3,14 \ f(x,\,y)$ +\end{minipage} +} +\end{center} +\end{minipage} +\end{center} +\rule{0pt}{1em} +L’espacement dans un nombre\index{nombre} (décimal ou non) se fait automatiquement +avec l’ordre \verb|\nombre|\index{nombre@\verb'\nombre'} dès l’instant où un espace a été inséré avec la barre d’espacement, +comme il se doit, après chaque millier ou millième : + +%\pagebreak +\begin{center} %============================= +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +$1 234,567 89$ +\nombre{1 234,567 89} +\end{boxedverbatim} +\\[.3ex] +\begin{minipage}{60mm} +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{55mm} +\nofrenchtypography +$1 234,567 89$\\ +\nombre{1 234,567 89} +\end{minipage} +} +\end{center} +\end{minipage} +\begin{minipage}{60mm} +\begin{center} +\textit{Composition avec frenchle} +\fbox{\begin{minipage}{55mm} +\frenchtypography +$1 234,567 89$\\ +\nombre{1 234,567 89} +\end{minipage} +} +\end{center} +\end{minipage} +\end{center} +%6 +%Composition standard +%1234, 56789 +%1 234, 567 89 +%Composition avec \textit{frenchle} +%1234,56789 +%1 234,567 89 + +\pagebreak +À l’exception de cet ordre \backslash\texttt{nombre}, \textit{frenchle} peut rajouter automatiquement +les espaces que vous auriez oubliés à la saisie devant la double ponctuation : + +\begin{center} %============================= +\textit{Texte source}\\ +\fbox{\begin{minipage}{130mm} +\nofrenchtypography\tt +\begin{tabular}{ll} +&... fin; il s’ensuit: boum! quoi?\\ +\{{\backslash}untypedspaces&... fin; il s’ensuit: boum! quoi?\}\\ +&... fin ; il s’ensuit : boum ! quoi ?\\ +\end{tabular} +\end{minipage} +}\\[.5em] +\begin{minipage}{60mm} +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{55mm} +\nofrenchtypography +... fin; il s’ensuit: boum! quoi?\\ +{\untypedspaces... fin; il s’ensuit: boum! quoi?}\\ +... fin ; il s’ensuit : boum ! quoi ? +\end{minipage} +} +\end{center} +\end{minipage} +\begin{minipage}{60mm} +\begin{center} +\textit{Composition avec frenchle} +\fbox{\begin{minipage}{55mm} +\frenchtypography +... fin; il s’ensuit: boum! quoi?\\ +{\untypedspaces... fin; il s’ensuit: boum! quoi?}\\ +... fin ; il s’ensuit : boum ! quoi ? +\end{minipage} +} +\end{center} +\end{minipage} +\end{center} +% ==================================== +\rule{0pt}{1em} + +Vous l’avez compris, c’est l’option \verb|\typedspaces|\index{typedspaces@\verb'\typedspaces'} qui est active par défaut +(c’est-à -dire que l’on saisit tous les espacements nécessaires). +Tous les effets que l’on vient de voir sont contrôlables par les ordres \verb|\typedspaces|\index{typedspaces@\verb'\typedspaces'} +\verb|\untypedspaces|\index{untypedspaces@\verb'\untypedspaces'}, + \backslash\texttt{frenchtypography}\index{frenchtypography@\verb'\frenchtypography'} +et \backslash\texttt{nofrenchtypography} ; voyons, sur l’exemple suivant, ce que +\index{nofrenchtypography@\verb'\nofrenchtypography'} +cela donne avec \backslash\texttt{nofrenchtypography}. +\begin{center} +\textit{Texte source}\\ +\begin{boxedverbatim} +{\nofrenchtypography +$\pi=3,14...$\\ +point-virgule ; le texte\\ +deux-points : le texte\\ +point d’exclamation ! La phrase\\ +point d’interrogation ? La phrase\\ +} +\end{boxedverbatim} +\\[.5em] +\begin{minipage}{60mm} +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{55mm} +\nofrenchtypography +$\pi=3,14...$\\ +point-virgule ; le texte\\ +deux-points : le texte\\ +point d’exclamation ! La phrase\\ +point d’interrogation ? La phrase +\end{minipage} +} +\end{center} +\end{minipage} +\begin{minipage}{60mm} +\begin{center} +\textit{Composition avec frenchle} +\fbox{\begin{minipage}{55mm} +\nofrenchtypography +$\pi=3,14...$\\ +point-virgule ; le texte\\ +deux-points : le texte\\ +point d’exclamation ! La phrase\\ +point d’interrogation ? La phrase +\end{minipage} +} +\end{center} +\end{minipage} +\end{center} +\rule{0pt}{1em} +\frenchtypography\frenchlayout +Vous voyez donc clairement qu’en plaçant l’ordre \index{nofrenchtypography@\verb'\nofrenchtypography'} + \backslash\texttt{nofrenchtypography} au +bon endroit, on annule les effets micro-typographiques de \textit{frenchle}. + +\subsection{Les notes}\index{notes} +Un petit exemple vaudra mieux qu’un long discours : +%\let\oldrfootcounter\thefootnote %- - - - - - - - - - - - - - - - - - - - - - - - counter thefootnote +\begin{center} %============================= +\textit{Texte source}\\\index{footnote@\verb'\footnote'} +\begin{boxedverbatim} +\noindent Ici\footnote{Essai de note.}\\ + Ici \footnote{Ceci est une note.} +et là \footnote{Une autre note.}\footnote{Et + encore une autre note.}. +\end{boxedverbatim} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\parbox{60mm}{ +\begin{center} +\textit{Composition standard} %-----------------------------------------standard +\fbox{\begin{minipage}{55mm} +\nofrenchtypography\nofrenchlayout{ +\noindent +\large Ici\footnote{Essai de note.}\\ +\large Ici \footnote{Ceci est une note.} +et là \footnote{Une autre note.}\footnote{Et +encore une autre note.}.} +\vspace{5ex} +\end{minipage} +}% +\end{center} +}% +\parbox{65mm}{ +\begin{center} +\textit{Composition avec frenchle} %-----------------------------------------frenchle +\fbox{\frenchtypography\frenchlayout% +\begin{tabular}{@{}lll} +%\frenchtypography{ +%\renewcommand{\@makefntext}{\fr@makefntext}% +\multicolumn{2}{@{}l}{\large Ici\footnotemark[1]}\\ +\multicolumn{2}{@{}l}{\large Ici\footnotemark[2] +et là $^{3,}$\,$^4$.}\\ +\\ +\\\cline{1-2}%} +\rule{0.5em}{0pt}&\footnotesize1. {Essai de note.}&\\[-.2em] +&\multicolumn{2}{l}{\footnotesize2. {Ceci est une note.}}\\[-.2em] +&\footnotesize3. {Une autre note.}\\[-.2em] +&\multicolumn{2}{l}{\footnotesize4. {Et encore une autre note.\rule{10mm}{0pt}}}\\[-.03em] +\end{tabular}% +}% +\end{center} +} +\end{center} +% ==================================== +Comme on le voit, l’espacement devant l’ordre \texttt{{\backslash}footnote} %n’a aucune importance +est sans importance +avec \textit{frenchle}. Deux \texttt{{\backslash}footnotes} peuvent se suivre (sans espace cette fois-ci) +et être composées selon l’usage. Vous aurez bien entendu noté la différence\index{notes!de bas de page} +en bas de page. + +Dans la page de titre, \LaTeX{} exige que l’on utilise l’ordre \texttt{{\backslash}thanks} à la place +de {\backslash}footnote : +\begin{center} %============================= +\textit{Texte source}\\[.3ex] +\begin{boxedverbatim} +\title{L’extension \textit{frenchle} +\thanks{Merci à tous les contributeurs.} \\ +pour les documents en français +\author{B. Gaulle} +} +\maketitle +\end{boxedverbatim} +\\[.5ex] +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\parbox{70mm}{ +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{65mm} +\nofrenchtypography\nofrenchlayout{ +%\let{\@mpfootnotetext}{\@footnotetex}t% +\noindent +\hfill \large L'extension \textit{frenchle}\footnote {Merci à tous les contributeurs}\hfill\rule{0pt}{1pt}\\ +\large pour les documents en français}\\ +\rule{0pt}{2em}\hfill B. Gaulle\hfill\rule{0pt}{1pt}\\ +\rule{0pt}{2em} +\end{minipage} +}% +\end{center} +}% +\parbox{70mm}{ +\begin{center} +\textit{Composition avec frenchle} +\fbox{\frenchtypography\frenchlayout% +\begin{tabular}{@{}ll@{}l@{}} +%\frenchtypography{ +%\renewcommand{\@makefntext}{\fr@makefntext}% +\multicolumn{3}{@{}c}{\large L'extension \textit{frenchle}\footnotemark[1]}\\ +\multicolumn{3}{@{}c}{\large pour les documents en français}\\ +&\rule{5em}{0pt}\\ +\multicolumn{3}{@{}c}{\rule{0pt}{1em}B. Gaulle}\\ +\multicolumn{3}{@{}c}{\rule{0pt}{2em}}\\\cline{1-2} +&\multicolumn{2}{l}{\rule{0pt}{1em}\footnotesize1. {Merci à tous les contributeurs}}\\ +\end{tabular}% +}% +\end{center} +} +\end{center} + +Des notes peuvent aussi être placées dans une figure\index{notes!dans les figures} mais en général le texte +de la note est perdu par \LaTeX{} et \textit{frenchle} vous en avertit, il faut alors procéder +comme suit : d'une part \index{footnotemark@\verb'\footnotemark'} +saisir {\backslash}footnotemark à la place de \verb'\footnote' pour placer simplement \index{footnotetext@\verb'\footnotetext'} +l’appel de note et ensuite, après la figure saisir\index{figures!notes dans les } + \verb'\footnotetext'\{texte de la note\}.\label{notesfigu} +\begin{center} %============================= +\begin{minipage}{\textwidth} +\begin{center} +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +\begin{figure} + \begin{tabular}{|c|} + \hline + \centerline{Peu importe la figure \footnotemark.} \\ + \hline + \end{tabular} + \caption{Une figure explicative} + \end{figure} + \footnotetext{Une explication peut en amener une autre + en bas de page} +\end{boxedverbatim} +\end{center} +\end{minipage} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\parbox{70mm}{ +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{65mm} +\nofrenchtypography\nofrenchlayout{ +\noindent +\rule{0pt}{1pt}\hfill \fbox{ +\large Peu importe la figure\footnote{% +Une explication peut en amener une autre en bas de page}.}\hfill\rule{0pt}{1pt}\\ +} +\rule{0pt}{1pt}\hfill\rule{0pt}{1.5em} Figure 1: Une figure explicative\hfill\rule{0pt}{1pt}\\ +\vspace{4em} +\end{minipage} +}% +\end{center} +}% +\parbox{70mm}{ +\begin{center} +\textit{Composition avec frenchle} + +\fbox{ +\begin{minipage}{65mm} +\hfill\fbox{\large Peu importe la figure\footnotemark[1].}\hfill\rule{0pt}{1pt}\\[1em] +\centerline{\textsc{Fig.} 1 -- \textit{Une figure explicative}} +\begin{tabular}{lll} +&\rule{4.3em}{0pt}\\[1.9em] +\multicolumn{3}{@{}c}{\rule{0pt}{2em}}\\\cline{1-2} +&\multicolumn{2}{l}{\rule{0pt}{1em}\footnotesize1. {Une explication peut en amener une}}\\[-.3em] +\multicolumn{3}{l}{\footnotesize{}autre en bas de page}\\ +\end{tabular} +\end{minipage}} +\end{center} +} +% +\end{center} % =========================== + +Comme vous le savez les figures \index{figures} et tableaux sont flottants avec \LaTeX{} c’est +à dire qu’il sont placés au mieux par \LaTeX{} en fonction des options que vous +choisissez ; il est donc parfois délicat de faire résider sur la même page la figure +et le texte de la note en bas de page. + +Pour les tableaux\index{tableaux}, par contre, les notes ne sont pas perdues en français car +elles sont composées juste en dessous du tableau\index{tableaux!notes dans les} + (comme dans le cas d’une minipage +\LaTeX) : +\begin{center} %============================= +\textit{Texte source}\\[1ex] + +\begin{boxedverbatim} +\begin{table} +Il est toujours possible de placer une +note dans un tableau en français : +\bigskip +\begin{tabular}{|c|} + \hline + Peu importe le tableau + \footnote{Une explication en + dessous (perdue ?).}. \\ + \hline + \end{tabular} + \end{table} +\end{boxedverbatim} + +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\alph{mpfootnote}} +\parbox[t]{70mm}{ +\begin{center} +\textit{Composition standard} +{\nofrenchtypography\nofrenchlayout +\fbox{ +\begin{minipage}{65mm} +Il est toujours possible de placer une\\ +note dans un tableau en français :\\ +\bigskip +\begin{tabular}{|c|} +\hline +\rule{0pt}{1.2em}Peu importe le tableau +\footnotemark[1].\\ +\hline +\end{tabular} +\end{minipage} +}} +\end{center} +}% +\parbox[t]{70mm}{ +\begin{center} +\textit{Composition avec frenchle} +\fbox{ +\begin{minipage}{65mm} +Il est toujours possible de placer une\\ +note dans un tableau en français :\\ +\bigskip +\begin{tabular}{|c|} +\hline +\rule{0pt}{1.2em}Peu importe le tableau +\footnote{Une explication en +dessous (perdue ?).}.\\ +\hline +\end{tabular} +\end{minipage} +} + +\end{center} +} +% +\end{center} + +\frenchtypography\frenchlayout +%\pagebreak +Tous les effets que l’on vient de voir pour les notes sont contrôlables par +les ordres \texttt{{\backslash}french\-typography}\index{frenchtypography@\verb'\frenchtypography'} + et \verb|\frenchlayout|\index{frenchlayout@\verb'\frenchlayout'}, l’un gérant l’espacement et +l’autre la mise-en-page. Pour les désactiver vous pouvez coder +\texttt{{\backslash}nofrenchtypography}\index{nofrenchtypography@\verb'\nofrenchtypography'} +et \texttt{{\backslash}nofrenchlayout}\index{nofrenchlayout@\verb'\nofrenchlayout'} ; +essayons-les pour voir ce que cela donne : +%\pagebreak +\begin{center} %============================= +\textit{Texte source}\\ +\begin{boxedverbatim} +{ \nofrenchtypography + \nofrenchlayout + \begin{table} + Peu importe le tableau + \footnote{Une note perdue.}.\\ + \hline + \end{tabular} + \end{table} +} +\end{boxedverbatim} +\\[.5em] +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\parbox[t]{70mm}{ +\begin{center} +\textit{Composition standard} +{\nofrenchtypography\nofrenchlayout +\begin{minipage}{65mm} +\begin{tabular}{|c|} +\hline +\rule{0pt}{1.6em}\Large Peu importe le tableau +\footnotemark[1].\\ +\hline +\end{tabular} +\end{minipage} +} +\end{center} +}% +\parbox[t]{70mm}{ +\begin{center} +\textit{Composition avec frenchle} + +\begin{minipage}{65mm} +\begin{tabular}{|c|} +\hline +\rule{0pt}{1.6em}\Large Peu importe le tableau +\footnotemark[1].\\ +\hline +\end{tabular} +\end{minipage} + +\end{center} +} +% +\end{center} + +Ainsi, la composition par \textit{frenchle} est redevenue tout à fait au standard +\LaTeX. +\pagebreak +\subsection{ Le titrage} +L’extension \textit{frenchle} traduit et compose les différents éléments servant au +titrage\index{titrage} dans le document comme vous le trouverez ci-après. Une exception +toutefois concerne l’ordre \verb|\chaptername|\index{chaptername@\verb'\chaptername'} qui, pour des raisons de conception +des hauts de pages de \LaTeX, ne peut pas disposer, pour la plupart du temps, +d’une traduction anglaise.\\[1em] + +\begin{tabular}{|l|l|l|}\hline +\rule{0pt}{1.1em}\textit{Composition en anglais}&\textit{Texte source}&\textit{Composition en français}\\\hline +\rule{0pt}{1em}References &\tt{\backslash}refname &Références \index{refname@\verb'\refname '} \\ +Abstract &\tt{\backslash}abstractname &Résumé \index{abstractname@\verb'\abstractname '} \\ +Table of Contents &\tt{\backslash}contentsname &Table des matières \index{contentsname@\verb'\contentsname'}\\ +List of Figures &\tt{\backslash}listfigurename &Table des figures \index{listfigurename@\verb'\listfigurename'}\\ +List of Tables &\tt{\backslash}listtablename &Liste des tableaux\index{listtablename@\verb'\listtablename'} \\ +Index &\tt{\backslash}indexname &Index \index{indexname@\verb'\indexname'} \\ +Figure &\tt{\backslash}figurename &Fig. \index{figurename@\verb'\figurename'} \\ +Table &\tt{\backslash}tablename &Tab. \index{tablename@\verb'\tablename'} \\ +Part &\tt{\backslash}partname &partie \index{partname@\verb'\partname'} \\ +\hline +\end{tabular} + +\bigskip +\pagebreak +Il s’agit là de quelques commandes standard de \LaTeX{} mais \textit{frenchle} en +introduit d’autres dans certains environnements de classe ou d’extensions : + +\bigskip +\begin{tabular}{|l|l|l|}\hline +\rule{0pt}{1.1em}\textit{Composition en anglais}&\textit{Texte source}&\textit{Composition en français}\\\hline +\rule{0pt}{1em}see &\tt{\backslash}seename &voir \index{seename@\verb'\seename'} \\ +see also &\tt{\backslash}seealsoname &voir aussi \index{seealsoname @\verb'\seealsoname '}\\ +Glossary &\tt{\backslash}glossaryname &Glossaire \index{glossaryname@\verb'\glossaryname'} \\ +Keywords: &\tt{\backslash}kwname &Mots-clé : \index{kwname@\verb'\kwname'}\\ +DRAFT &\tt{\backslash}draftname &- épreuve - \index{draftname@\verb'\draftname'}\\ +Preface &\tt{\backslash}prefacename &Préface \index{prefacename@\verb'\prefacename'} \\ +Proof &\tt{\backslash}proofname &Démonstration\index{proofname@\verb'\proofname'} \\ +To &\tt{\backslash}headtoname\verb|\mbox{}|& \index{headtoname@\verb'\headtoname'}\\ +cc &\tt{\backslash}ccname &c.c. \index{ccname@\verb'\ccname'}\\ +Encl &\tt{\backslash}enclname &P.j. \index{enclname@\verb'\enclname'} \\ +PS: &\tt{\backslash}PSname &P.-S. : \index{PSname@\verb'\PSname'} \\ +Subject: &\tt{\backslash}Objectname &Objet : \index{Objectname@\verb'\Objectname'} \\ +Your Ref: &\tt{\backslash}YourRefname &v/réf. : \index{YourRefname@\verb'\YourRefname'} \\ +Our Ref: &\tt{\backslash}OurRefname &n/réf. : \index{OurRefname@\verb'\OurRefname'} \\ +email: &\tt{\backslash}emailname &m.él. : \index{emailname@\verb'\emailname'}\\ +Slide &\tt{\backslash}slidename &Transparent \index{slidename@\verb'\slidename'} \\ +Notes &\tt{\backslash}notesname &Notes \index{notesname@\verb'\notesname'}\\ +Appendix &\tt{\backslash}appendixname &Annexe \index{appendixname@\verb'\appendixname'} \\ +\hline % +\end{tabular}\\[1em] +(Le libellé {\tt{\backslash}draftname} est destiné à une utilisation en PostScript) + +D’autres libellés peuvent être employés dans d’autres extensions ; leur traduction +dépendra de l’interaction de celle-ci avec \textit{frenchle}. Pour être garanti +d’obtenir l’interaction maximum il est souhaitable de coder l’option \textsl{french} +dans {\tt{\backslash}documentclass}\index{classe!de document} + (voir les autres possibilités au paragr. \ref{peutfaire} page \pageref{peutfaire}) :\\[1em] +\rule{0pt}{1em}\hfill\fbox{ +\begin{minipage}{90mm} + \backslash\texttt{documentclass[french]}\{\textit{classe\_de\_documents}\}\\ + \backslash\texttt{usepackage}\{\textit{extension 1}\}\\ +\rule{0.4\textwidth}{0pt} \vdots \\ + \backslash\texttt{usepackage}\{\textit{extension n-1} \}\\ + \backslash\texttt{usepackage}\{\texttt{frenchle}\}\\ + \backslash\texttt{begin\{document\}} +\end{minipage} +}\hfill\rule{0pt}{1em}\\[.5em] + +Cette simple option sera alors passée à toutes les extensions qui ont prévu +une traduction en français ; la première de ces extensions étant \textit{frenchle} +elle-même . +Vous pouvez, bien sûr, à tout moment modifier la traduction des libellés de +votre choix en redéfinissant les macros-instructions mais il est préférable de le +faire avant le \texttt{{\backslash}begin\{document\}}. + +\noindent +\begin{minipage}{\textwidth} +\begin{center} %============================= +\textit{Texte source}\\[.5ex] +{\large +\begin{boxedverbatim} +\fraddto\captionsfrench{\def\figurename{Figurine}} +\begin{figure} + \begin{tabular}{|c|} + \hline + \centerline{Peu importe la figurine.}\\ + \hline +\end{tabular} +\caption{Une nouvelle figurine} +\end{figure} +\end{boxedverbatim} +}\\[.5em] +\end{center} +\end{minipage} +\begin{center} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\parbox{60mm}{ +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{55mm} +\nofrenchtypography\nofrenchlayout{ +\noindent +\rule{0pt}{1pt}\hfill \fbox{ +\large Peu importe la figurine}\hfill\rule{0pt}{1pt}\\ +} +\rule{0pt}{1pt}\hfill\rule{0pt}{1.5em} Figure 1: Une nouvelle figurine\hfill\rule{0pt}{1pt}\\ +\end{minipage} +}% +\end{center} +}% +\parbox{65mm}{ +\begin{center} +\textit{Composition avec frenchle} +\fbox{ +\begin{minipage}{60mm} +\hfill\fbox{\large Peu importe la figurine}\hfill\rule{0pt}{1pt}\\[1em] +\centerline{{Figurine} 1 -- \textit{Une nouvelle figurine }}\\ +\end{minipage}} +\end{center} +} +% +\end{center} % =========================== + +On notera que les définitions sont introduites simplement à la façon \TeX{} pour +s’appliquer dans toutes les circonstances. + +Les titres des figures et des tableaux sont précisés avec l’ordre \texttt{{\backslash}caption} (au +dessus dans le cas d’un tableau ; en dessous dans le cas d’une figure) comme +dans l’exemple ci-après. +\begin{center} %============================= +\begin{minipage}{\textwidth} +\begin{center} +\textit{Texte source}\\[.5em] +{%\large +\begin{boxedverbatim} +\begin{figure} + \begin{tabular}{|c|} + \hline + \centerline{Peu importe la figure.}\\ + \hline + \end{tabular} +\caption{Une figure explicative} +\end{figure} + +\begin{table} +\caption{Exemple de tableau}\medskip + \begin{tabular}{|c|} + \hline + \centerline{Peu importe le tableau.}\\ + \hline + \end{tabular} +\end{table} +\end{boxedverbatim} +} +\\[.5em] +\end{center} +\end{minipage}%{\textwidth} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\parbox{70mm}{ +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{65mm} +\nofrenchtypography\nofrenchlayout{ +\noindent +\rule{0pt}{1pt}\hfill \fbox{ + \hspace{2em}Peu importe la figure\hspace{2em}}\hfill\rule{0pt}{1pt}\\ +} +\rule{0pt}{1pt}\hfill\rule{0pt}{1.5em} Figure 1: Une figure explicative\hfill\rule{0pt}{1pt}\\[3em] +\rule{0pt}{1pt}\hfill\rule{0pt}{1.5em} Table 1: Exemple de tableau\hfill\rule{0pt}{1pt}\\ +\rule{0pt}{1pt}\hfill \fbox{ + \hspace{2em}Peu importe le tableau.\hspace{2em}}\hfill\rule{0pt}{1pt} +\end{minipage} +}% +\end{center} +}% +\parbox{70mm}{ +\begin{center} +\textit{Composition avec frenchle} +\fbox{ +\begin{minipage}{65mm} +\hfill\fbox{\hspace{1em}Peu importe la figure\hspace{1em}}\hfill\rule{0pt}{1pt}\\[.75em] +\centerline{\textsc{Fig.} 1 -- \textit{Une figure explicative }}\\[3.65em] +\centerline{\textsc{Tab.} 1 -- \textit{Exemple de tableau }}\\[.05em] +\rule{0pt}{1pt}\hfill\fbox{\hspace{2em}Peu importe le tableau\hspace{2em}}\hfill\rule{0pt}{1pt} +\end{minipage}} +\end{center} +} +% +\end{center} % =========================== + +La composition de ces titres est contrôlée avec l’aide des ordres +\texttt{{\backslash}captionfont}\index{captionfont@\verb'\captionfont'} +et\\ \texttt{{\backslash}captionseparator}\index{captionseparator@\verb'\captionseparator'} : + +\begin{center} %============================= +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +\renewcommand{\captionfont}{\upshape + \bfseries\selectfont} +\renewcommand{\captionseparator}{$\Rightarrow$} + +\begin{figure} +\begin{tabular}{|c|} +\hline +\centerline{Peu importe la figure.}\\ +\hline +\end{tabular} +\caption{Une figure explicative} +\end{figure} +\end{boxedverbatim} +\\[.5em] +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\parbox{70mm}{ +\begin{center} +\textit{Composition standard} +\fbox{\begin{minipage}{65mm} +\nofrenchtypography\nofrenchlayout{ +\noindent +\rule{0pt}{1pt}\hfill \fbox{ +\hspace{2em}Peu importe la figure.\hspace{2em}}\hfill\rule{0pt}{1pt}\\ +} +\rule{0pt}{1pt}\hfill\rule{0pt}{1.5em} Figure 1: Une figure explicative\hfill\rule{0pt}{1pt}\\ +\end{minipage} +}% +\end{center} +}% +\parbox{70mm}{ +\begin{center} +\textit{Composition avec frenchle} +\fbox{ +\begin{minipage}{65mm} +\hfill\fbox{\hspace{2em}Peu importe la figure\hspace{2em}}\hfill\rule{0pt}{1pt}\\[1em] +\centerline{\textsc{Fig.} 1$\Rightarrow$ \textbf{Une figure explicative }}\\ +\end{minipage}} +\end{center} +} +% +\end{center} % =========================== + +\pagebreak +Tous les effets précédents sont contrôlés par les ordres +\texttt{{\backslash}frenchtypography}\index{frenchtypography@\verb'\frenchtypography'} +et \texttt{{\backslash}frenchtrans\-lation} \index{frenchtranslation@\verb'\frenchtranslation'} +( et leurs inverses \texttt{{\backslash}nofrenchtypography} +\index{nofrenchtypography@\verb'\nofrenchtypography'} +et \texttt{{\backslash}nofrench\-translation)} ; \index{nofrenchtranslation@\verb'\nofrenchtranslation'} +faisons un essai avec \texttt{{\backslash}nofrenchtranslation} : +\begin{center} %============================= +\begin{minipage}{\textwidth} +\begin{center} %============================= +\textit{Texte source}\\ +\begin{boxedverbatim} +{\nofrenchtranslation + \begin{table} + \caption{Titres divers}\medskip + \begin{tabular}{|c|c|} + \hline + \verb|\tablename| & \tablename \\ + \verb|\appendixname| & \appendixname \\ + \verb|\figurename| & \figurename \\ + \verb|\abstractname| & \abstractname \\ + \verb|\contentsname| & \contentsname \\ + \hline + \end{tabular} + \end{table} +} +\end{boxedverbatim} +\end{center} +\end{minipage} +\\[.5em] +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} + +\noindent +\parbox{70mm}{ +\begin{center} +\textit{Composition standard} \small \nofrenchtranslation +\begin{tabular}{|@{}c|c|c|@{}c|}\hline +\multicolumn{4}{|c|} {\rule{0pt}{1.2em}Table 1: Titres divers}\\[.2em]\cline{2 - 3} +\rule{0pt}{1.2em}&\tt{\backslash}tablename & \tablename&\\ +&\tt{\backslash}appendixname & \appendixname& \\ +&\tt{\backslash}figurename& \figurename&\\ +&\tt{\backslash}abstractname&\abstractname&\\ +&\tt{\backslash}contentsname&\contentsname&\\\cline{2 - 3} +\multicolumn{4}{|c|}{}\\\hline +\end{tabular} +\end{center} +}% +\parbox{70mm}{ +\begin{center} +\textit{Composition avec frenchle} \small \nofrenchtranslation +\begin{tabular}{|@{}c|c|c|@{}c|}\hline +\multicolumn{4}{|c|} {\rule{0pt}{1.2em}Table 1: \textit{Titres divers}}\\[.2em]\cline{2 - 3} +\rule{0pt}{1.2em}&\tt{\backslash}tablename & \tablename&\\ +&\tt{\backslash}appendixname & \appendixname& \\ +&\tt{\backslash}figurename& \figurename&\\ +&\tt{\backslash}abstractname&\abstractname&\\ +&\tt{\backslash}contentsname&\contentsname&\\\cline{2 - 3} +\multicolumn{4}{|c|}{}\\\hline +\end{tabular}\end{center} +} +% +\end{center} % =========================== + +et maintenant mettons simplement \verb'\nofrenchtypography'\index{nofrenchtypography@\verb'\nofrenchtypography'} +pour voir quel effet +cela produit sur le même tableau ; il va falloir ouvrir l’œil ! +\begin{center} %============================= +\begin{minipage}{\textwidth} +\begin{center} +\textit{Texte source}\\ +\begin{boxedverbatim} +{\nofrenchtypography + \begin{table} + \caption{Titres divers}\medskip + \begin{tabular}{|c|c|} + \hline + \verb|\tablename| & \tablename \\ + \verb|\appendixname| & \appendixname \\ + \verb|\figurename| & \figurename \\ + \verb|\abstractname| & \abstractname \\ + \verb|\contentsname| & \contentsname \\ + \hline + \end{tabular} + \end{table} +} +\end{boxedverbatim} +\\[.5em] +\end{center} +\end{minipage}%{\textwith} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} + +\noindent +\parbox{70mm}{ +\begin{center} \nofrenchtypography +\textit{Composition standard} \small \nofrenchtranslation +\begin{tabular}{|@{}c|c|c|c@{}|}\hline +\multicolumn{4}{|c|} {\rule{0pt}{1.2em}Table 1: Titres divers}\\[.2em]\cline{2 - 3} +\rule{0pt}{1.2em}&\tt{\backslash}tablename & \tablename&\\ +&\tt{\backslash}appendixname & \appendixname& \\ +&\tt{\backslash}figurename& \figurename&\\ +&\tt{\backslash}abstractname&\abstractname&\\ +&\tt{\backslash}contentsname&\contentsname&\\\cline{2 - 3} +\multicolumn{4}{|c|}{}\\\hline +\end{tabular} +\end{center} +}% +\parbox{70mm}{ +\begin{center} \nofrenchtypography +\textit{Composition avec frenchle} \small +\begin{tabular}{|@{}c|c|c|c@{}|}\hline +\multicolumn{4}{|c|} {\rule{0pt}{1.2em}\textsc{Tab.} %Table +1: {Titres divers}}\\[.2em]\cline{2 - 3} +\rule{0pt}{1.2em}&\tt{\backslash}tablename & \tablename&\\ +&\tt{\backslash}appendixname & \appendixname& \\ +&\tt{\backslash}figurename& \figurename&\\ +&\tt{\backslash}abstractname&\abstractname&\\ +&\tt{\backslash}contentsname&\contentsname&\\\cline{2 - 3} +\multicolumn{4}{|c|}{}\\\hline +\end{tabular}\end{center} +} +% +\end{center} % =========================== +%\subparagraph +{\textbf{ Remarque de B. \textsc{Gaulle}}} Avez-vous trouvé où la +\texttt{{\backslash}frenchtypography}\index{frenchtypography@\verb'\frenchtypography'} +n’est pas appliquée ici ? + Bravo ! + +{\footnotesize Je vous le dis en passant : il +\maj s'agit du deux-points après le numéro (1:) de la table. (\textsc{Tab.} 1:)} +\subsection{La mise en page} +L’extension \textit{frenchle} modifie la mise en page de \LaTeX.\index{mise en page} Premier exemple : +avec \LaTeX, par défaut, tous les débuts de paragraphes sont mis en retrait de +la marge, sauf pour les premiers paragraphes de partie, chapitre, section, etc. +L’extension \textit{frenchle} corrige ce problème :\\[1em] +\begin{center} %============================= +\begin{minipage}{\textwidth} +\begin{center} +\textit{Texte source}\\ +\begin{boxedverbatim} +\section{Nouvelle section} +Le premier paragraphe débute ainsi. +Ceci est un texte de remplissage sans +intérêt. + +Le second paragraphe débute ainsi. +Ceci est un texte de remplissage sans +intérêt. +\end{boxedverbatim} +\\[.5em] +\end{center} +\end{minipage} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\noindent +\parbox{70mm}{ +\begin{center} \nofrenchtypography +\textit{Composition standard} \small +\end{center} +\fbox{ +\begin{minipage}{60mm} +{\Large \bf 1\hspace{.5em} Nouvelle section}\\ +\rule{0pt}{2.1em}Le premier paragraphe débute ainsi. +Ceci est un texte de remplissage sans +intérêt. + +\hspace*{1.5em}Le second paragraphe débute ainsi. +Ceci est un texte de remplissage sans +intérêt. +\end{minipage} +} +}% +\parbox{70mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition avec frenchle} \small +\end{center} +\fbox{ +\begin{minipage}{60mm} +{\Large \bf 1\hspace{.5em} Nouvelle section}\\ +\hspace*{1.5em\rule{0pt}{2.1em}}Le premier paragraphe débute ainsi. +Ceci est un texte de remplissage sans +intérêt. + +\hspace*{1.5em}Le second paragraphe débute ainsi. +Ceci est un texte de remplissage sans +intérêt. +\end{minipage} +} +}\\[1.5em] +% +\end{center} % =========================== + +Si vous souhaitez, pour d’autres besoins, utiliser l’extension \texttt{titlesec}, alors +\textit{frenchle} adoptera les options (\texttt{indentfirst}\index{indentfirst@\verb'\indentfirst'} +ou \texttt{nonindentfirst}\index{nonindentfirst@\verb'\nonindentfirst'}) par défaut ou +précisées au chargement de l’extension. + +Avec l’extension \textit{frenchle} la mise en page des listes est différente au niveau +des marqueurs et des espacements verticaux : +\begin{center} %============================= +\begin{minipage}{\textwidth} +\begin{center} %============================= +\textit{Texte source}\\[.5ex] +\begin{boxedverbatim} +La liste se compose de : +\begin{itemize} +\item premier élément de la liste ; +\item deuxième élément ; + \begin{itemize} + \item sous-élément ... + \end{itemize} +\item dernier élément. +\end{itemize} +\end{boxedverbatim} +\\[.5em] +\end{center} +\end{minipage} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\noindent +\frlabelitems{\renewcommand{\labelitemi}{--}% +\renewcommand{\labelitemii}{--}% +\renewcommand{\labelitemiii}{--}% +} +\parbox[t]{65mm}{ +\begin{center} \nofrenchtypography \nofrenchlayout \english +\textit{Composition standard} \small +\end{center} +\fbox{ \nofrenchtrivsep +\begin{minipage}{55mm} +La liste se compose de : +\begin{itemize} +\item [\textbullet]premier élément de la liste ; +\item [$\bullet$]deuxième élément ; +\begin{itemize} +\item [--]sous-élément ... +\end{itemize} +\item [$\bullet$]dernier élément. +\end{itemize} +\end{minipage} +} +}% +%\renewcommand{\FrenchLabelItem}{\textemdash} +%\frlabelitems{\renewcommand{\labelitemi}{--}% +%\renewcommand{\labelitemii}{--}% +%\renewcommand{\labelitemiii}{--}}% +\parbox[t]{65mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition avec frenchle} \small +\end{center} +\fbox{ +\begin{minipage}{55mm} +La liste se compose de : +\begin{itemize} +\item premier élément de la liste ; +\item deuxième élément ; +\begin{itemize} +\item sous-élément ... +\end{itemize} +\item dernier élément. +\end{itemize} + +\end{minipage} +} +}\\[1.5em] +% +\end{center} % =========================== + +Les espacements verticaux sont gérés par les ordres \\ +\texttt{\backslash{}frenchtrivsep}\index{frenchtrivsep@\verb'\frenchtrivsep'} et +\texttt{\backslash{}nofrenchtrivsep}\index{nofrenchtrivsep@\verb'\nofrenchtrivsep'} : + +\begin{center} %============================= +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +{\nofrenchtrivsep + +La liste se compose de : +\begin{itemize} +\item premier élément de la liste ; +\item deuxième élément ; +\item dernier élément. +\end{itemize} +} +\end{boxedverbatim} +\\[.5em]\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\noindent +\frlabelitems{\renewcommand{\labelitemi}{--}% +\renewcommand{\labelitemii}{--}% +\renewcommand{\labelitemiii}{--}% +} +\parbox[t]{65mm}{ +\begin{center} \nofrenchtypography \nofrenchlayout \english +\textit{Composition standard} \small +\end{center} +\fbox{ \nofrenchtrivsep +\begin{minipage}{55mm} +La liste se compose de : +\begin{itemize} +\item [$\bullet$]premier élément de la liste ; +\item [$\bullet$]deuxième élément ; +%\begin{itemize} +%\item [--]sous-élément ... +%\end{itemize} +\item [$\bullet$]dernier élément. +\end{itemize} +\end{minipage} +} +}% +%\renewcommand{\FrenchLabelItem}{\textemdash} +%\frlabelitems{\renewcommand{\labelitemi}{--}% +%\renewcommand{\labelitemii}{--}% +%\renewcommand{\labelitemiii}{--}}% +\parbox[t]{65mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition avec frenchle} \small +\end{center} +\fbox{\nofrenchtrivsep +\begin{minipage}{55mm} +La liste se compose de : +\begin{itemize} +\item premier élément de la liste ; +\item deuxième élément ; +%\begin{itemize} +%\item sous-élément ... +%\end{itemize} +\item dernier élément. +\end{itemize} + +\end{minipage} +} +}\\[1.5em] +% +\end{center} % =========================== + +Les valeurs d’espacement sont appliqués par \textit{frenchle} à tous les environnements +de liste, de façon homogène. À chaque fois que vous essaierez de modifier +la valeur de ces dimensions (ou qu’une extension le fera à votre place) vous serez +pévenu par \textit{frenchle} que celà n’est pas possible de la sorte. L’affichage de ces +messages\index{messages} d’avertissement est contôlé par les ordres +\verb|\frenchtrivsepwarnings|\index{frenchtrivsepwarnings@\verb'\frenchtrivsepwarnings'} +et \verb|\nofrenchtrivsepwarnings|\index{nofrenchtrivsepwarnings@\verb'\nofrenchtrivsepwarnings'}. + +Vous pouvez choisir vos propres valeurs d’espacement dans les listes en +utilisant l’ordre \\\verb|\frtrivseplengths| et dans ce cas les messages d’avertisssement +précités ne sont plus émis (sauf à +rajouter \verb|\frenchtrivsepwarnings|\index{frenchtrivsepwarnings@\verb'\frenchtrivsepwarnings'} +dans \verb|\frtrivseplengths|)\index{frtrivseplengths@\verb'\frtrivseplengths'} + ; l’exemple suivant vous le démontre. + +\begin{center} %============================= +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +\frtrivseplengths{% + \setlength{\parsep}{0.1ex plus 0.1ex minus 0.1ex}% + \setlength{\itemsep}{0.1ex plus 0.1ex minus 0.1ex}% + \setlength{\topsep}{0.2ex plus 0.2ex minus 0.2ex}% + \setlength{\partopsep}{0.8ex plus 0.8ex minus 0.8ex}% + } + +La liste se compose de : +\begin{itemize} +\item premier élément de la liste ; +\item deuxième élément ; +\item dernier élément. +\end{itemize} +\end{boxedverbatim} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\noindent +\frlabelitems{\renewcommand{\labelitemi}{--}% +\renewcommand{\labelitemii}{--}% +\renewcommand{\labelitemiii}{--}% +} +\parbox[t]{65mm}{ +\begin{center} \nofrenchtypography \nofrenchlayout \english +\textit{Composition standard} \small +\end{center} +\fbox{ \nofrenchtrivsep +\begin{minipage}{55mm} +La liste se compose de : +\begin{itemize} +\item [$\bullet$]premier élément de la liste ; +\item [$\bullet$]deuxième élément ; +%\begin{itemize} +%\item [--]sous-élément ... +%\end{itemize} +\item [$\bullet$]dernier élément. +\end{itemize} +\end{minipage} +} +}% +%\renewcommand{\FrenchLabelItem}{\textemdash} +%\frlabelitems{\renewcommand{\labelitemi}{--}% +%\renewcommand{\labelitemii}{--}% +%\renewcommand{\labelitemiii}{--}}% +\parbox[t]{65mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition avec frenchle} \small +\end{center} +\fbox{%\nofrenchtrivsep +\begin{minipage}{55mm} +\frtrivseplengths{% +\setlength{\parsep}{0.1ex plus 0.1ex minus 0.1ex}% +\setlength{\itemsep}{0.1ex plus 0.1ex minus 0.1ex}% +\setlength{\topsep}{0.2ex plus 0.2ex minus 0.2ex}% +\setlength{\partopsep}{0.8ex plus 0.8ex minus 0.8ex}% +} + +La liste se compose de : +\begin{itemize} +\item premier élément de la liste ; +\item deuxième élément ; +%\begin{itemize} +%\item sous-élément ... +%\end{itemize} +\item dernier élément. +\end{itemize} + +\end{minipage} +} +}\\[1.5em] +% +\end{center} % =========================== + +Vous pouvez aussi changer les marqueurs de liste en faisant appel à la +commande spéciale \verb|\frlabelitems|\index{frlabelitems@\verb'\frlabelitems'} comme dans l’exemple (sans aucun intérêt typographique) +suivant : + +\begin{center} %============================= +\begin{minipage}{\textwidth} +\begin{center} %============================= +\textit{Texte source}\\\index{labelitemi@\verb'\labelitemi'}\index{labelitemii@\verb'\labelitemii'}\index{labelitemiii@\verb'\labelitemiii'} +\begin{boxedverbatim} +\frlabelitems{\renewcommand{\labelitemi}{*}% + \renewcommand{\labelitemii}{**}% + \renewcommand{\labelitemiii}{***}% + } +La liste se compose de : +\begin{itemize} +\item premier élément de la liste ; + \begin{itemize} + \item sous-élément ... + \end{itemize} +\item dernier élément. +\end{itemize} +\end{boxedverbatim} +\end{center} +\end{minipage} +\setcounter{mpfootnote}{1} %- - - - - - - - - - - - - - - - - - - - - - - - counter mpfootnote +\renewcommand{\thempfootnote}{\arabic{mpfootnote}} +\noindent +\parbox[t]{65mm}{ +\begin{center} \nofrenchtypography \nofrenchlayout \english +\textit{Composition standard} \small +\end{center} +\fbox{ \nofrenchtrivsep +\begin{minipage}{55mm} +\frlabelitems{\renewcommand{\labelitemi}{*}% +\renewcommand{\labelitemii}{**}% +\renewcommand{\labelitemiii}{***}% + } +La liste se compose de : +\begin{itemize} +\item [\textbullet]premier élément de la liste ; +\item [$\bullet$]deuxième élément ; +\begin{itemize} +\item [--]sous-élément ... +\end{itemize} +\item [$\bullet$]dernier élément. +\end{itemize} +\end{minipage} +} +}% +\parbox[t]{65mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition avec frenchle} \small +\end{center} +\fbox{ +\begin{minipage}{55mm} +\frlabelitems{\renewcommand{\labelitemi}{*}% +\renewcommand{\labelitemii}{**}% +\renewcommand{\labelitemiii}{***}% +} +La liste se compose de : +\begin{itemize} +\item premier élément de la liste ; +\item deuxième élément ; +\begin{itemize} +\item sous-élément ... +\end{itemize} +\item dernier élément. +\end{itemize} + +\end{minipage} +} +}\\[1.5em] +% +\end{center} % =========================== +\frlabelitems{\renewcommand{\labelitemi}{--}% +\renewcommand{\labelitemii}{--}% +\renewcommand{\labelitemiii}{--}% +} + + +L’extension \textit{frenchle} s’adapte à la classe de document demandée ; la mise +en page peut donc être extrêmement différente, voici un exemple avec la classe +\texttt{letter}\index{classe!letter@\texttt{letter}} : +\begin{center} %============================= +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +\address{B. \textsc{Gaulle}\\ Mon adresse} +\begin{letter} + {M. Dupond\\ + 17, rue St. \’Eloi\\ + 24140 La Monzie Montastruc} + + \opening{Cher Monsieur X,} + + La documentation est là ! + + \closing{Bonne lecture.} + \cc{Monsieur le directeur Y} + \encl{lettre du ministre Z} +\end{letter} +\end{boxedverbatim} + +\noindent +\parbox[t]{66mm}{ +\begin{center} \nofrenchtypography \nofrenchlayout \english +\textit{Composition standard} +\end{center} +\fbox{ \nofrenchtrivsep +\begin{minipage}{61mm} \scriptsize +\begin{flushright} +\begin{tabular}{l@{}} +B. \textsc{Gaulle}\\ + Mon adresse\\[2ex] +April 28, 2012 +\end{tabular} +\end{flushright} +{M. Dupond\\ +17, rue St.Éloi\\ +24140 La Monzie Montastruc}\\[1.5ex] + +{Cher Monsieur X,}\\[-.5ex] + +La documentation est là !\\[1ex] +%\rule{0pt}{1pt}\hfill\hfill{Bonne lecture.}\hfill\rule{0pt}{1pt}\\ +\centerline{\phantom{Bonne lecture.}Bonne lecture.}\\[11ex] +cc: Monsieur le directeur Y\\[.5ex] +encl: lettre du ministre Z +\end{minipage} +} +}% +\parbox[t]{66mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition avec frenchle} +\end{center} +\fbox{ +\begin{minipage}{61mm}\scriptsize +B. \textsc{Gaulle}\\ + Mon adresse\\[-2.5ex] +\begin{flushright} +\begin{tabular}{l@{}} +M. Dupond\\ +17, rue St.Éloi\\ +24140 La Monzie Montastruc\\[6ex] +Le 28 avril 2012\\[3.5ex] +\end{tabular} +\end{flushright} +\rule{3em}{0pt}Cher Monsieur X,\\[5ex] +\rule{5em}{0pt}La documentation est là !\\[2ex] +\rule{5em}{0pt}Bonne lecture.\\[15ex] +c.c. : Monsieur le directeur Y\\ +P. j. : lettre du ministre Z +\end{minipage} +} +}\\[1.5em] +% +\end{center} % =========================== + +Bien entendu, l’adresse de l’expéditeur doit se retrouver dans la fenêtre de +l’enveloppe.\\ + +\MAJ Remarque d'un utilisateur suisse : la région alémanique qui utilisait + dans le passé le même format que + la France suit de plus en plus la norme DIN (allemande) qui resssemble à la composition standard. + Malheureusement, nous nous sentons peu à peu envahis du côté francophone par cette norme peu habituelle +pour nous.\endMAJ + +Avec la classe \texttt{book}\index{classe!book@\texttt{book}} \textit{frenchle} s’efforce de maintenir la numérotation des +pages au même endroit tout au long du document (contrairement à \LaTeX) ; par +ailleurs la mise en page du titre courant et des débuts de partie sont différentes : + +\begin{center} %============================= +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +\chapter{Nouveau chapitre} + +\section{Nouvelle section} + +Il était une fois dans la villle de Foix un ... +\end{boxedverbatim} + +\noindent +\parbox[t]{66mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition standard} +\end{center} +\fbox{ +\begin{minipage}{61mm} %\scriptsize +\vspace{7ex} +{\large\textbf{Chapter 2\\[1ex] +Nouveau chapitre}}\\[3ex] +\textbf{2.1.\hspace{1em} Nouvelle section}\\[1ex] +{\tiny Il était une fois dans la villle de Foix un ...}\\[5.5ex] +\begin{center} +{\tiny {3}} +\end{center} +\end{minipage} +} +}% +\parbox[t]{66mm}{ +\begin{center} +\textit{Composition avec frenchle} +\end{center} +\fbox{ +\begin{minipage}{61mm}%\scriptsize +%\centerline{\tiny \textsc{CHAPITRE 2\hspace{2em}NOUVEAU CHAPITRE}} +{\tiny \rule{1em}{0pt}\hfill 3\rule{1em}{0pt}}\\[6ex] +{\large\textbf{Chapitre 2\\[1ex] +Nouveau chapitre}}\\[3ex] +\textbf{2.1.\hspace{1em} Nouvelle section}\\[1ex] +\rule{2ex}{0pt}{\tiny Il était une fois dans la villle de Foix un ...}\\[8ex] +\rule{1em}{0pt} +\end{minipage}%\\[1.5em] +} +} +\end{center} % =========================== + +À chaque changement de partie la numérotation des chapitres est remise à +zéro ; si vous ne le souhaitez pas il suffit de coder \verb|\noresetatpart|\index{noresetatpart@\verb'\noresetatpart'}. + +Dans le même registre, \LaTeX{} remet à zéro le compteur de notes de bas de +page à chaque chapitre ; si vous ne le souhaitez pas il suffit alors de coder l’ordre +\verb|\noresetatchapter|\index{noresetatchapter@\verb'\noresetatchapter'}.\\ + +L’extension \textit{frenchle} tient compte aussi des styles ou classes de documents +de l’AMS\index{classe!amsbook@\texttt{amsbook}} : + +\begin{center} %============================= +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +\chapter{Nouveau chapitre avec amsbook} + +\section{Nouvelle section} + +Il était une fois un livre que +j’avais composé avec amour ... +\end{boxedverbatim} + +\noindent +\parbox[t]{66mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition standard} +\end{center} +\fbox{ +\begin{minipage}{61mm} %\scriptsize \tinySMALL +\begin{center} +{\scriptsize \textsc CHAPTER 2}\\[5ex] +\textbf{Nouveau chapitre avec amsbook}\\[3ex] +\textbf{\small 1.\hspace{1em} Nouvelle section}\\[.5ex] +\end{center} +{\scriptsize Il était une fois un livre que +j’avais composé avec amour ...}\\[9ex] +\centerline{\tiny 3} +\end{minipage} +} +}% +\parbox[t]{66mm}{ +\begin{center} +\textit{Composition avec frenchle} +\end{center} +\fbox{ +\begin{minipage}{61mm}%\scriptsize +{\tiny \hfill 1.\hspace{1em}NOUVELLE SECTION\hfill{3}}\\[7ex] +\begin{center} +CHAPITRE 2\\[3ex] +\textbf{Nouveau chapitre avec amsbook}\\[1ex] +\textbf{\small 1.\hspace{1em} Nouvelle section}\\[1ex] +\end{center} +{\scriptsize Il était une fois un livre que +j’avais composé avec amour ...} +\end{minipage} +} +}%\\[1.5em] +% +\end{center} % =========================== +\vspace{1ex} + +Toute la mise en page et différentes choses dont on a déjà parlé (comme les +notes dans les tables et les notes consécutives) sont en fait contrôlées par les +ordres \verb|\frenchlayout| (qui est l’option par défaut)\index{frenchlayout@\verb'\frenchlayout'} + et \verb|\nofrenchlayout| ; \index{nofrenchlayout@\verb'\nofrenchlayout'} +voici à nouveau l’exemple avec la classe \texttt{letter}\index{classe!letter@\texttt{letter}} : +\begin{center} %============================= +\begin{minipage}{\textwidth} +\begin{center} +\textit{Texte source}\\[1ex] +\begin{boxedverbatim} +\nofrenchlayout +\address{B. \textsc{Gaulle}} +\begin{letter} +{M. Dupond\\ +17, rue St. \’Eloi\\ +24140 La Monzie Montastruc} + +\opening{Cher Monsieur X,} + +La documentation est là ! + +\closing{Bonne lecture.} +\cc{Monsieur le directeur Y} +\encl{lettre du ministre Z} +\end{letter} +\end{boxedverbatim} +\end{center} +\end{minipage} + +\noindent +\parbox[t]{66mm}{ +\begin{center} \nofrenchtypography \nofrenchlayout \english +\textit{Composition standard} +\end{center} +\fbox{ \nofrenchtrivsep +\begin{minipage}{61mm} \scriptsize +\begin{flushright} +\begin{tabular}{l@{}} +B. \textsc{Gaulle}\\ + \\[2ex] +April 28, 2012 +\end{tabular} +\end{flushright} +{M. Dupond\\ +17, rue St.Éloi\\ +24140 La Monzie Montastruc}\\[1.5ex] + +{Cher Monsieur X,}\\[-.5ex] + +La documentation est là !\\[1ex] +%\rule{0pt}{1pt}\hfill\hfill{Bonne lecture.}\hfill\rule{0pt}{1pt}\\ +\centerline{\phantom{Bonne lecture.}Bonne lecture.}\\[11ex] +cc: Monsieur le directeur Y\\[.5ex] +encl: lettre du ministre Z +\end{minipage} +} +}% +\parbox[t]{66mm}{ +\begin{center} \frenchtypography \frenchlayout +\textit{Composition avec frenchle} +\end{center} +\fbox{ +\begin{minipage}{61mm}\scriptsize +\begin{flushright} +\begin{tabular}{l@{}} +B. \textsc{Gaulle}\\ + \\[2ex] +28 avril 2012 +\end{tabular} +\end{flushright} +{M. Dupond\\ +17, rue St.Éloi\\ +24140 La Monzie Montastruc}\\[1.5ex] + +{Cher Monsieur X,}\\[-.5ex] + +La documentation est là !\\[1ex] +%\rule{0pt}{1pt}\hfill\hfill{Bonne lecture.}\hfill\rule{0pt}{1pt}\\ +\centerline{\phantom{Bonne lecture.}Bonne lecture.}\\[11ex] +c.c. : Monsieur le directeur Y\\[.5ex] +P. j. : lettre du ministre Z +\end{minipage} +} +}\\[1.5em] +% +\end{center} % =========================== + \frenchtypography \frenchlayout + +\subsection{Le multilinguisme}\label{multilin}\label{multilingue} +Par défaut, \textit{frenchle} est bilingue français-anglais, c’est-à -dire que vous pouvez +composer des parties du document selon les habitudes typographiques +françaises et d’autres à l’anglaise (ou plutôt à l’américaine). Il existe plusieurs +méthodes pour réaliser cela : +\begin{description} +\item[1\iere méthode :] dès que vous souhaitez passer en anglais vous saisissez l’ordre +\verb|\english|\index{english@\verb'\english'} et lorsque vous désirez revenir au français vous +saisissez \verb|\french|\index{french@\verb'\french'}. +\begin{center} +\fbox{ +\begin{minipage}{65mm} +\centerline{\texttt{\backslash{}english} \textit{texte en anglais} \texttt{\backslash{}french}} +\end{minipage} +} +\end{center} +\item[2\ieme méthode :] puisque le document, par défaut, est en français vous pouvez +limiter la partie anglaise à un seul bloc \LaTeX{}: +\begin{center} +\fbox{ +\begin{minipage}{50mm} +\centerline{\texttt{\{\backslash{}english} \textit{texte en anglais} \}} +\end{minipage} +} +\end{center} +%{\english texte en anglais } +\item[3\ieme méthode :] consiste à appliquer la méthode \LaTeX{} c’est-à -dire à utiliser +l’environnement \texttt{english} : +\begin{center} +\fbox{ +\begin{minipage}{40mm} +\texttt{\backslash{}begin\{english\}}\\ +\textit{partie à l’anglaise}\\ +\texttt{\backslash{}end\{english\}} +\end{minipage} +} +\end{center} +\item[4\ieme méthode :] passer à d'autres langues. +Ceci n'est possible qu'en utilisant \textsl{mlp}\label{meth4} +\index{mlp}et se limitant à l'allemand : +\begin{center} +\fbox{ +\begin{minipage}{80mm} +\texttt{\backslash{}documentclass[german, frenchle, ...}\\ +\texttt{\backslash{}usepackage\{{mlp}\}}\\ +\texttt{\backslash{}begin\{document\}}\\ +\vdots\\ +\texttt{\backslash{}english}\\ +\textit{partie à l’anglaise}\\ +\texttt{\backslash{}german}\\ +\textit{partie à l’allemande}\\ +\texttt{\backslash{}french}\\ +\textit{suite en français} +\end{minipage} +}\\[1ex] +\end{center} +\end{description} + +%\paragraph*{Méthodes 1 à 3} +Bien entendu, tout ce que l’on vient de dire est réversible ; je veux dire que +vous pouvez remplacer \texttt{english} par \texttt{french} si votre objectif est de composer +seulement quelques morceaux en français. +\paragraph*{Babel-french}\MAJ +Il reste la possibilité d'utiliser \texttt{babel} +(\texttt{frenchb}\index{babel@\textit{babel}!frenchb@\texttt{frenchb}} de Daniel \textsc{Flipo} pour le français) +qui couvre sinon un très grand nombre \index{extension!babel@\verb'babel'} +de langages . + +On pourrait argumenter que \texttt{frenchle} (et sa grande sÅ“ur \texttt{french}) du paquet \cefr{} +sont concurrents de \texttt{french} pour \texttt{babel}. +Toutefois, le but recherché n'est pas le même et la plupart des autres paquets de langues se déclinèrent sous deux versions, +l'une indépendante et l'autre pour \texttt{babel}. C'est n'est plus aujourd'hui que le cas de l'allemand, qui d'ailleurs de +manière semblable \texttt{frenchle} peut commuter sur l'anglais ou le français sans \texttt{babel}. + +\endMAJ + +\section{Ce que ne fait pas l'extension} +Les versions antérieures à \LaTeXe{} ne peuvent pas être utilisées avec \textit{frenchle}. +De même, le mode de compatibilité avec \LaTeX{} 2.09 n’est pas accepté par +\textit{frenchle}. + +L’extension \textit{frenchle} ne gère pas la coupure des mots (ou césure) ; cela est\index{césure} +un dispositif intégré à \LaTeX{} par un dispositif dérivé de \texttt{babel}\index{extension!babel@\verb'babel'}. +Celui-ci est normalement totalement contrôlé par la gestion des langues intégrée +à votre système (\TeX{}live ou Mik\TeX, voir aussi sous \ref{multilingue} à la page \pageref{multilingue}). +C'est pour cette raison que la méthode 4 ci-dessus %(§ \ref{meth4}) +fonctionne. + +Les classes de document non standard (et a fortiori les classes « maison ») \index{classe!non standard@\textit{non standard}} %!frabbrev@\texttt{frabbrev.tex} +ne sont pas supportées par \textit{frenchle}. En dehors de ce principe il y a la pratique +qui est bien différente car toutes les classes de document sont en général +« calquées » sur les classes standard de \LaTeX{} et donc respectent les méthodes +de programmation et les structures \LaTeX{} qui sont nécessaires à \textit{frenchle}. Donc, +beaucoup de classes de document fonctionnent bien avec l’extension \textit{frenchle}. + +L’extension \textit{frenchle} ne corrige pas les erreurs de \LaTeX, cela va de soi, +quoique ... quand cela est possible nous essayons d’améliorer la situation. Ainsi, par +exemple, \LaTeX{} a la fâcheuse habitude de perdre les notes de bas de page dans +certaines situations (cf page \pageref{notesfigu}). Avec \textit{frenchle} vous serez prévenu en général que +le texte de votre note n’a pas été imprimé et un message vous donne même la méthode +pour vous en sortir. Aussi vaut-il mieux ne jamais supprimer les messages\index{messages} de +\textit{frenchle}. + +L’extension \textit{frenchle} ne cherche pas à remplacer les extensions ou autres dispositifs +efficaces qui existent par ailleurs ; citons, par exemple, l’extension \texttt{aeguill}\index{extension!aeguill@\verb'aeguill'} +pour obtenir des guillemets francais ou l’extension \texttt{lettrine}\index{extension!lettrine@\verb'lettrine'} pour obtenir des +grosses lettres en début de paragraphe. Notons que ces deux sujets sont traités +entièrement par \slefr . +Raison de plus de faire le pas vers \slefr .\index{efrench@\slefr} +Pour faciliter le passage de \texttt{frenchb} à \textit{frenchle} le traitement des guillemets\index{guillemets} +de \texttt{frenchb} a été introduit dans \textit{frenchle} ; on dispose ainsi des commandes \verb|\og| +et \verb|\fg| ; voici un exemple d’utilisation : + +\begin{center} +\fbox{ +\begin{minipage}{60mm} +\texttt{\backslash{}usepackage[cm]\{aeguill\}}\\ +\vdots\\ +\texttt{\backslash{}usepackage\{frenchle\}}\\ +\texttt{\backslash{}begin\{document\}}\\ +\end{minipage} +} +\end{center} +\textbf{Remarque} : +l'appel de l'extension \texttt{\backslash{}usepackage[cm]\{aeguill\}}\index{extension!aeguill@\verb'aeguill'} + n'est \index{efrench@\slefr} pas nécessaire si vous utilisez le codage T1\index{codage!T1} +de fontes (\texttt{\backslash{}usepackage[T1]\{fontenc\}}).\\ +\begin{center} +\begin{tabular}{l|l|} +\multicolumn{1}{c}{\textit{Texte source}}&\multicolumn{1}{c}{\textit{Composition avec frenchle}}\\\hline +\verb|frenchle est destiné à |&\rule{0pt}{2.5ex}frenchle est destiné à \\ +\verb|\og franciser \fg\ les|&\og franciser \fg\ les\\ +\verb|documents.|&documents\\ +\verb|Les classes [...] sont|&Les classes [...] sont\\ +\verb|\og calquées \fg\ |&\og calquées \fg\ \\ +\verb|sur les classes|&sur les classes\\ +\verb|standard. [...] Les classes|&standard. [...] Les classes\rule{1em}{0pt}\\ +\verb|non-standard (et \emph{a|&non-standard (et \emph{a}\\ +\texttt{fortiori\} les classes}&\emph{fortiori} les classes\\ +\verb|\og \emph{maison} \fg)|&\og \emph{maison} \fg)\\ +\verb|etc.|&etc.\\\cline{2-2} +\end{tabular}\\[2ex] +\end{center} +Ceci est une des mille et une façons d’accéder aux guillemets français. On +notera que dans le cas présent il me faut saisir un \texttt{\backslash\textvisiblespace} après le \texttt{\backslash{}fg} s’il doit y +avoir effectivement un espace après le guillemet fermant. + +\section{Ce que pourrait faire l'extension}\label{peutfaire} +Bien d’autres choses pourraient être ajoutées à \textit{frenchle} n’hésitez pas à faire +part de vos améliorations. Pour tester facilement ces améliorations vous pouvez +les inclure dans le fichier de configuration appelé \textit{frenchle}.cfg. Voici un +exemple permettant de saisir les guillemets (8bits, non utf-8) directement au clavier : +\begin{center} +\begin{boxedverbatim} +% Pour utiliser les guillemets 8-bits : +\catcode‘\« =\active\catcode‘\ »=\active +\def« {\og\ignorespaces}\def »{\fg} +\end{boxedverbatim} +\rule{0pt}{1ex}\\[2ex] +\begin{tabular}{l|l|} +\multicolumn{1}{c}{\textit{Texte source}}&\multicolumn{1}{c}{\textit{Composition avec frenchle}}\\\hline +\verb|frenchle est destiné à |&\rule{0pt}{2.5ex}frenchle est destiné à \\ +\texttt{« franciser » les}&« franciser » les\\ +\verb|documents.|&documents\\ +\verb|Les classes [...] sont|&Les classes [...] sont\\ +\texttt{« calquées » }&« calquées » \\ +\verb|sur les classes|&sur les classes\\ +\verb|standard. [...] Les classes|&standard. [...] Les classes\rule{1em}{0pt}\\ +\verb|non-standard (et \emph{a|&non-standard (et \emph{a}\\ +\texttt{fortiori\} les classes}&\emph{fortiori} les classes\\ +\texttt{«}\verb| \emph{maison}| \texttt{»})&\og \emph{maison} \fg)\\ +\verb|etc.|&etc.\\\cline{2-2} +\end{tabular}\\[2ex] +\end{center} + +L’avantage du fichier de configuration est que je n’ai rien à coder dans le +préambule du document et que ces modifications s’appliqueront automatiquement +à tous les documents utilisant \textit{frenchle} (avec une réserve dépendant de +l’emplacement exact du fichier \texttt{frenchle.cfg}\index{fichier!frenchle.cfg@\texttt{frenchle.cfg}}). + +Cette action n'est pas possible dans le codage d'entrée UTF-8, mais \textsl{frenchle} et +\textsl{french} du paquet \slefr comprennnent correctement les guillemets +« et » sans devoir les définir dans un fichier accesoire. + +\section{Comment appeler \textit{frenchle} ?} +Plusieurs méthodes existent pour faire appel à \textit{frenchle}, en voici les trois +principales : +\begin{description} +\item[1\iere méthode :] demander le chargement de l’extension par l’ordre \verb|\usepackage| ; +dans ce cas placer cet ordre le plus près de l’ordre \verb|\begin{document}|\index{classe!de document} :\\[.5em] +\rule{0pt}{1em}\hfill\fbox{ +\begin{minipage}{90mm} + \backslash\texttt{documentclass}\{\textit{classe\_de\_documents}\}\\ + \backslash\texttt{usepackage}\{\textit{extension 1} \}\\ +\rule{0.4\textwidth}{0pt} \vdots \\ + \backslash\texttt{usepackage}\{\textit{extension n-1} \}\\ + \backslash\texttt{usepackage}\{\texttt{frenchle}\}\\ + \backslash\texttt{begin\{document\}} +\end{minipage} +}\hfill\rule{0pt}{1em}\\[.5em] +\item[2\ieme méthode :] demander à ce que toutes les extensions puissent éventuellement +bénéficier\\ de \textit{frenchle} :\\[.5em] +\rule{0pt}{1em}\hfill\fbox{ +\begin{minipage}{100mm} + \backslash\texttt{documentclass[frenchle]}\{\textit{classe\_de\_documents}\}\\ + \backslash\texttt{usepackage}\{\textit{extension 1} \}\\ +\rule{0.4\textwidth}{0pt} \vdots \\ + \backslash\texttt{usepackage}\{\textit{extension n-1} \}\\ + \backslash\texttt{begin\{document\}} +\end{minipage} +}\hfill\rule{0pt}{1em}\\[.5em] + +\item \MAJ Une méthode multilingue appelant \textsl{mlp} est présentée en page \pageref{meth4}, méthode 4. +L'option \textsl{mlp} permet d'appeller un paquet de langue allemande. +Sans \textsl{mlp} on ne peut que passer à l'anglais.\endMAJ +\end{description} + +%\pagebreak +\section{Messages}\label{messag} +Voici l’ensemble des messages\index{messages} émis par \textit{frenchle} avec leurs explications. Pour +aborder cette partie il est fortement conseillé d’avoir lu, au moins une fois, la +\linkandfootnote{lafaq}{FAQ}{http://www.efrench.org/distributions/faq.pdf} +sur la francisation de \LaTeX.\\ +\begin{verbatim} +-8a- \footnotetext{...} perdu. +-8b- Coder event. \protect\footnote. +\end{verbatim} +Signifie en général que vous avez utilisé une \backslash{}footnote dans un \backslash{}caption +de tableau. L’extension \textit{frenchle} ne pouvant mettre correctement le texte +de la note en bas de page (défaut actuel de \LaTeX), vous devez, vous +même, insérer la commande \texttt{\backslash{}footnotetext{...}} +après le tableau.\\ +\begin{verbatim} +-9- Corrupted/absent language.dat file. +\end{verbatim} +L’extension \textit{frenchle} vérifie à chaque exécution que le fichier + \index{fichier!langage.dat@\texttt{language.dat}}\vers'language.dat' + soit accessible et non-corrompu. Il est désormais chargé par \LaTeX automatiquement.\\ +\begin{verbatim} +-13- le caractère "..." est déjà actif + la double ponctuation est alors désactivée. +\end{verbatim} +Vous utilisez très probablement un style ou une extension qui fait déjà +usage de ce ou ces caractères. Pour éviter toute anomalie de fonctionnement, +l’extension \textit{frenchle} désactive alors l’effet de la double ponctuation +! : ; ? pour tout votre document. Si ce n’est pas ce que vous voulez, +essayez de charger l’extension en question, soit après le chargement de +l’extension \textit{frenchle} soit dans un environnement \texttt{english}.\\ +\begin{verbatim} +-15- le langage frenchle porte le numéro ... +\end{verbatim} +L’extension \textit{frenchle} vous indique le numéro interne employé pour le langage +\textsl{french}. \\ +\begin{verbatim} +-16- the English language is numbered ... +\end{verbatim} +Même explication que pour le message précédent mais portant ici sur +l’anglais.\\ +\begin{verbatim} +-19- utilisation du langage interne numéro... +\end{verbatim} +Aucun langage \textsl{french} n’a été trouvé dans le fichier \texttt{language.dat}\index{fichier!langage.dat@\texttt{language.dat}}, +dans ces conditions le +style \textit{frenchle} vous indique le numéro de langue interne qu’il va utiliser. + +À vous de voir si ce numéro est acceptable pour la mise en page de votre +texte français. + +Mais ceci ne devrait plus arriver avec les versions récentes de \LaTeX.\\ +\begin{verbatim} +-20- WARNING: the french language is undefined in your format + the french language is undefined (ERROR!) +\end{verbatim} +Vous ne pouvez utiliser \textit{frenchle} sans que votre moteur \LaTeX{} soit un minimum +francisé, c.-à -d. dispose par exemple de motifs de césure adaptés\index{césure}. +Le premier message n’est qu’un avertissement si le fichier de configuration +\texttt{language.dat}\index{fichier!langage.dat@\texttt{language.dat}} définit le français ; si ce n’est pas le cas le deuxième +message est émis.\\[2ex] +\texttt{-21-\backslash\textit{xxx}TeXmods n’est pas défini}. +Une demande a été faite pour travailler avec la langue \textit{xxx} mais celle-ci est +inconnue ou, tout au moins, la commande \backslash\textit{xxx}TeXmods n’est pas définie. +Probablement une erreur interne...\\ +\begin{verbatim} +-23- Extension : style frenchle V... -- date -- (B.Gaulle) +\end{verbatim} +Ceci est la bannière du style \textit{frenchle}. Pensez à vous mettre à jour régulièrement.\\ +\begin{verbatim} +-24- frenchle.sty utilise dans ce document le codage de fonte (O)T1. +\end{verbatim} +Ceci est un message d’information permettant de voir quel +codage\index{OT1 (codage)@\verb'OT1' (codage)}\index{T1 (codage)@\verb'T1' (codage)} de +fonte a été détecté par \textit{frenchle} et sera utilisé pour tout le document\index{codage!utilisé}. +Vous avez toujours le loisir de changer de \index{codage!changement de}codage avant le chargement +initial de \textit{frenchle} de façon qu’il détecte celui qui convient à l’ensemble +des parties françaises du document.\\ +\begin{verbatim} +-25- frenchle.sty affiche ici ses messages en 7-bits (à la TeX). +\end{verbatim} +Le format \LaTeX{} qui a été créé ne supporte pas le 8-bits en sortie. Cela +peut effectivement venir du moteur \TeX{} car tous ne disposent pas de cette +facilité. Si vous souhaitez toutefois afficher les messages en 8-bits, forcez +l’option \verb|\usualmessages|\index{usualmessages@\verb'\usualmessages'}.\\ +\begin{verbatim} +-25- frenchle.sty affiche ici ses messages en 8-bits. +\end{verbatim} +Ceci est l’option normale si le moteur \TeX{} est capable de produire du 8-bits + en sortie, à la place des caractères hexadécimaux sous la forme \chap\chap{}xx. +Cette option peut avoir été forcée par la commande \backslash{}usualmessages.\\ +\begin{verbatim} +-27- frenchle.sty language x (y) was initially +(at initex) numbered z (ERROR!) +\end{verbatim} +Signifie que l’ordre des langues a été probablement modifié dans le fichier +\texttt{language.dat} ou qu’il ne s’agit pas du bon fichier. +Ceci ne devrait plus arriver avec les versions récentes de \LaTeX, +puisqu'il n'est plus nécessaire de créer le format fr\LaTeX qui pourrrait entrer en conflit +avec les définitions déjà inscrites dans \texttt{langage.dat}.\\ +\begin{verbatim} +-29a- ****Warning****: your TeX V3 engine + CM + fonts (your format default) isn’t sufficient + to hyphenate words containing diacritics (like in french). +\end{verbatim} +Ce que l’on appelle communément la césure des mots ne pourra jamais\index{césure} +être effective, dans ces conditions, sur des mots comportant des lettres +accentuées. Il s’agit là du plus grave défaut de francisation que vous obtiendrez +mais il y en a d’autres... Il serait peut-être bon de considérer +l’installation d’un moteur \TeX{} avec option Ml\TeX{} ou la mise en place, +par défaut dans le format\index{fontes!cm@\textit{cm}}, de polices de caractères 8-bits. +Quoique le fomat ne soit plus une solution à l'heure actuelle, voir le paragraphe \ref{lesformats}.\\ +\begin{verbatim} +-34- this file and other auxiliary files require to + use the following LaTeX packages: frenchle ...! + check \usepackage or remove these files. + Typesetting is aborted! +\end{verbatim} +Vous avez dans un passage \LaTeX{} précédent utilisé une (ou plusieurs) +extension qui n’est plus demandée actuellement. Peut-être est-ce volontaire? +Dans ce cas il est préférable d’effacer les fichiers auxiliaires pouvant +contenir des informations relatives à cette extension. Sinon, il suffit de demander +le chargement de l’extension ad hoc.\\ +\begin{verbatim} +-41- Format is out of date, please run initex again. +\end{verbatim} +Ce message ne devrait pas apparaître avec les {\em récentes} versions de \LaTeX. + +L’extension \textit{frenchle} s’est aperçue d’une incohérence au niveau des commandes +de césure. Ces dernières correspondent à une installation ancienne\index{césure} +de la francisation qui les plaçait dans le format. Il était {\em auparavant} impératif de refaire +un format correct.\\ +\begin{verbatim} +-42- The french patch file (frlpatch.sty) is not suitable + for this version of the "frenchle" package dated YY/MM/DD. +\end{verbatim} +Signifie qu’un fichier de \textit{patch}\index{fichier!frlpatch.sty@\texttt{frlpatch.sty}} a été trouvé dans le système mais qu’il ne +convient pas à la version de l’extension \textit{frenchle} que vous utilisez. Il est +nécessaire d’accorder l’un avec l’autre. Dans le doute vous pouvez toujours +renommer le fichier de patch pour qu’il ne soit pas trouvé.\\ +\begin{verbatim} +-48- Lecture du fichier de configuration de frenchle. +\end{verbatim} +Un fichier de configuration \texttt{frenchle.cfg} a été détecté sur l’installation. +Il est lu et les ordres exécutables sont appliqués.\\ +\begin{verbatim} +-51- ERREUR : ce document n’a pas été converti en 8-bits. +\end{verbatim} +Certains documents doivent être convertis en 8-bits avant utilisation. Selon +le type de document, la composition est arrêtée temporairement ou +définitivement. Ce message est réservé à des tests ; il ne devrait jamais +être émis à votre intention. Dans l'état de cette version et sous codage UTF8, ce test doit être supprimé.\\ +\begin{verbatim} +-52- Error: the frenchle package doesn’t run in + such minimal document class, sorry! +\end{verbatim} +L’extension \textit{frenchle} ne peut fonctionner avec une classe de document +réduite, et en particulier avec la classe\index{classe!minimal@\verb'minimal'}% +\index{minimal@\verb'minimal'} \texttt{minimal}.\\ +\begin{verbatim} +-58- Valeur de ... ignorée. +\end{verbatim}%\tthyphenation +Un environnement de liste est utilisé avec modification d’espacement, +(\verb|\topsep, \partosep,| \verb|\itemsep|\index{itemsep@\verb'\itemsep'} ou \verb|\parsep|) alors que les espacement +verticaux sont imposés par \textit{frenchle}. Vous avez plusieurs solutions : +soit vous abandonnez l’idée de les modifier (si cela vient de +vous) soit vous pouvez revenir aux espacements standard de \LaTeX{} avec\index{nofrenchtrivsep@\verb'\nofrenchtrivsep'} +\texttt{\backslash{}nofrenchtrivsep} soit enfin vous pouvez supprimer ce message avec +l’ordre \texttt{\backslash{}nofrenchtrivsepwarnings}\index{nofrenchtrivsepwarnings@\verb'\nofrenchtrivsepwarnings'}.\\ +\begin{verbatim} +-68- ERROR: frenchle is no more running with 2.09 emulation, sorry! +\end{verbatim} +Vous utilisez probablement un très vieux document qui n’a pas été entièrement +reconverti pour \LaTeXe ; cette version de \textit{frenchle} ne peut être utilisée +dans ce cas.\\ +\begin{verbatim} +-71- ATTENTION : si babel est utilisé, mettre french en option +\end{verbatim} +Vous avez probablement fait appel à babel\index{babel@\textit{babel}!french en@frenchle en option de} + par une commande du genre\index{extension!babel@\verb'babel'} +\backslash{}usepackage[...]\{babel\} puis vous avez demandé à charger une extension +\textsl{french} (\texttt{efrench.ldf} ou \texttt{frenchle.ldf}), ce qui est incompatible. Soit +vous utilisez babel avec l’option \textit{efrench} ou \textit{frenchle} soit vous utilisez +une extension \textsl{french} toute seule. Il est probable que la composition du +document n’ira pas bien loin...\\ +\begin{verbatim} +-73- ERREUR avec AmS\TeX{} : frenchle.sty a été chargé trop tôt. +\end{verbatim} +Il est indispensable de charger l’extension de francisation après AmS\TeX{} +de façon à ce qu’elle s’adapte au contexte.\\ +\begin{verbatim} +-93- you are using two french options for +Babel, please choose one... +\end{verbatim} +Il se peut que vous ayez demandé le chargement de \textit{frenchle} par Babel +et en même temps que vous ayez donné à Babel l’option \textsl{french} (dans le +\backslash{}documentclass par exemple). Il vous faut alors soit éliminer une option +soit utiliser l’extension \texttt{babelfr}\index{extension!babelfr@\texttt{babelfr}} +à la place de \texttt{babel}\index{extension!babel@\verb'babel'}. +\pagebreak +\section{Remerciements et contacts} +\paragraph*{Remerciements de Bernard \fsc{gaulle}}Ce document serait incomplet sans les +remerciements\index{remerciements} aux nombreux contributeurs +(dont une liste exhaustive serait bien impossible à réaliser) qui ont +apporté leurs problèmes, leurs solutions ou leurs corrections ; c’est aussi grâce +à eux que \textit{frenchle} est maintenu à jour et enrichi régulièrement, je les en remercie +vivement et avec moi toute la communauté francophone des utilisateurs de +\LaTeX. + +\paragraph*{Contacts}\label{contact} +En cas de problème, prière de \linkandfootnote{rayj}{me} +{mailto:raymond@juill.ch} contacter\index{contacts} (qui ai mis à jour ces pages) +ou \linkandfootnote{noustux}{<l'équipe eFrench>}{mailto:efrench@lists.tuxfamily.org} +Nous ferons de notre mieux pour vous aider. + +\bibliographystyle{plain} +\ifx\Section\undefined\else\let\section\Section\fi% Restore \section. +\def\refname{Références bibliographiques}\index{références} +\begin{drapeaufg} +\begin{thebibliography}{9}\index{bibliographie} +\bibitem{ hautsdecasse}J. André \& J. Grimault, \textit{\linkandfootnote{rhautsdecasse} +{Emploi des capitales (première partie)}{http://cahiers.gutenberg.eu.org/cg-bin/article/CG_1990___6_42_0.pdf}}, +\textit{in} Les Cahiers GUTenberg \Numero{} 6, 1990. +\bibitem{ codetypo}\textit{Code typographique}, Fédération de la communication , 17\ieme édition, 1995. +\bibitem{ division} J. Désarménien, \textit{La division par ordinateur des mots français : application +à \TeX}, {\it in} TSI vol. 5 {\Numero} 4, 1986. +%[4] D. Flipo, B. Gaulle et K. Vancauwenberghe,Motifs de césure français, +%in Les Cahiers GUTenberg N18, 1994. +%(http://www.gutenberg.eu.org/pub/GUTenberg/publicationsPDF/ +%18-motifs.pdf) +\bibitem{cesures} D. Flipo, B. Gaulle et K. Vancauwenberghe,\textit{ +\linkandfootnote{ rcesures}{Motifs de césure français}{http://cahiers.gutenberg.eu.org/cg-bin/article/CG_1994___18_35_0.pdf}}, +{\it in} Les Cahiers GUTenberg \Numero 18, 1994\index{césure}. +%[5] B. Gaulle, FAQ \textsl{french}, foire aux questions à propos de \LaTeX{} en français, +%2007 +%(http://frenchpro.free.fr/screen.pdf/FAQscreen.pdf) +\bibitem{faq} B. Gaulle, eFrench +\textit{\linkandfootnote{lafaq}{% +Foire aux questions à propos de \LaTeX{} en français}% +{http://www.efrench.org/distributions/faq.pdf}}, 2007 +\bibitem{compagnon} M. Goossens, F. Mittelbach et A. Samarin, \textit{The \LaTeX{} companion}, +Addison-Wesley, 1993. +\bibitem{guidrom} \textit{Guide du typographe romand}, Association suisse des compositeurs à la machine, +6\ieme~édition, 2000. +\bibitem{lamptex} L. Lamport, \textit{\LaTeX, A document preparation system}, Addison-Wesley, 1994. +\bibitem{lampndx} L. Lamport, \textit{An Index Processor For \LaTeX}, 1987. +\bibitem{imprnat} \textit{Lexique des règles typographiques en usage à l’Imprimerie nationale}, +4\ieme~édition, 1991, ISBN 2-11-081075-0. +\bibitem{perrousmanu} Y. Perrousseaux, \textit{Manuel de typographie française élémentaire}, Atelier +Perrousseaux, 4\ieme~édition,1995, ISBN 2-911220-00-5. +\bibitem{perrousmepa} Y. Perrousseaux, \textit{Mise en page et impression}, Atelier Perrousseaux, +1996, ISBN 2-911220-01-3. +%[13] E. Saudrais, Le petit typographe rationnel, document électronique, 2007 +%(http://perso.wanadoo.fr/eddie.saudrais/prepa/typo.pdf) +\bibitem{lepetity} E. Saudrais, + \textit{\linkandfootnote{rlepetity}{Le petit typographe rationel}{http://tex.loria.fr/typographie/saudrais-typo.pdf}} +\end{thebibliography} +\end{drapeaufg} +\vfill +\newpage +\nooverfullhboxmark% Pourquoi faut-il le repréciser pour la versions screen? +\printindex +\def\footnote#1{}% nullify any footnote here. +\tableofcontents +\end{document} diff --git a/language/french/e-french/texmf/doc/src/myfroptn.sty b/language/french/e-french/texmf/doc/src/myfroptn.sty new file mode 100644 index 0000000000..388f18b205 --- /dev/null +++ b/language/french/e-french/texmf/doc/src/myfroptn.sty @@ -0,0 +1,17 @@ +% This is a test of a personal style file defining the french options +% i want to use usually in my documents. 2000/03/03 +% Copyright Bernard Gaulle as in french_doc.pdf + +\usersfrenchoptions{% voici mes options %%%%%%%%%%%%%%%%%%%%%%%%% + \disallowuchyph % C'est ma devise... % + \overfullhboxmark % devrait pas y en avoir% + }% % +% En plain TeX il faut retirer le % de debut de ligne suivante % +%\@ufo% car il n'y a pas de \begin{document} %%%%%%%%%%%%%%%%%%%% + +%\message{Activation des options personnelles du style french} +\endinput +%% +%% checksum = "12795 17 93 776" +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/src/mymaj.sty b/language/french/e-french/texmf/doc/src/mymaj.sty new file mode 100644 index 0000000000..a74e72fae6 --- /dev/null +++ b/language/french/e-french/texmf/doc/src/mymaj.sty @@ -0,0 +1,181 @@ +% ----------- mymaj.sty +% Permet de mettre un trait vertical dans la marge. +% +% Appel : +% \maj ................... pour marquer une ligne seule +% \begin{MAJ}...\end{MAJ} pour une entite plus grande +% +% Les trois variables suivantes permettent de parametrer la macro. +% majwidth epaisseur du trait +% majhskip espace entre le trait et le paragraphe +% +% Bugs connues : +% 1- ne pas utiliser dans une \footnote +% 2- ne pas mettre \maj dans \begin{MAJ} ... \end{MAJ} +% 3- les barres de mise a jour peuvent se retrouver anormalement en haut +% ou bas de page. +%% +%% checksum = "65193 181 669 6726" +%% +%/////////////////////////////////////////// +% Change bar document-style option for LaTeX. +% +% Copyright (C) 1990 by David B. Johnson (dbj@titan.rice.edu). +% +% These macros draw a solid bar down the right margin of the output, +% covering a range of the input file that has been declared to be changed. +% +% The beginning and end of a change bar in the text are marked with +% \chgbarbegin and \chgbarend, respectively. For example, +% +% Here is some sample text \chgbarbegin that was +% changed\chgbarend{} and some that wasn't changed. +% +% The change bar is drawn continuously between the line of output +% containing the \chgbarbegin and the line of output containing the +% \chgbarend. These lines can end up on separate pages, and the +% division at page boundaries is handled automatically. +% +% Two dimensions control the size and placement of the change bars: +% \chgbarwidth The width of a change bar +% \chgbarsep The distance between the text and the change bar +% +% Warning: it does not appear to be possible to do this completely +% correctly, due to the time at which the verticle glue on a page is +% finally set, and the way that page breaks are decided. With +% \raggedbottom, this normally works fine. It hasn't been tested with +% \flushbottom, but will probably behave worse. In strange rare +% situations, a change bar might be drawn from the first line of a page +% up off the top of a page; this can usually be fixed by slightly moving +% the \chngbarend around, or by breaking a single change bar range +% into two ranges. +% +\newdimen\chgbarwidth \newdimen\chgbarsep +\chgbarwidth 4pt +\chgbarsep .25in +% +\def\chgbarbegin{\ifhmode\@chgbar{-2}\else\@chgbar{-3}\fi} +\def\chgbarend{\@chgbar{-4}} +% +\marginparpush 0pt +% +% The remainder of this is hacked up based on the LaTeX 2.09 latex.tex. +% +% copied from \marginpar +\def\@chgbar#1{\ifhmode \@bsphack\@floatpenalty -\@Mii\else + \@floatpenalty-\@Miii\fi\ifinner + \@parmoderr\@floatpenalty\z@ + \else\@next\@currbox\@freelist{\global + \count\@currbox#1}{\@floatpenalty\z@ \@fltovf + \def\@currbox{\@tempboxa}}\fi + \setbox\@tempboxa\color@vbox\vbox + \bgroup\end@float\@esphack} +% +\newdimen\@chgbarbegin +\newif\if@inchgbar \@inchgbarfalse +% +\def\@addmarginpar{% +\ifnum\count\@currbox = -2 % change bar begin from hmode + \global\@chgbarbegin\@pageht \global\advance\@chgbarbegin -\baselineskip + \global\@inchgbartrue + \@cons\@freelist\@currbox +\else +\ifnum\count\@currbox = -3 % change bar begin not from hmode + \global\@chgbarbegin\@pageht + \global\@inchgbartrue + \@cons\@freelist\@currbox +\else +\ifnum\count\@currbox = -4 % change bar end + \if@inchgbar\else\@latexbug\fi + \@tempdima\@pageht \advance\@tempdima -\@chgbarbegin + \nointerlineskip + \@tempcnta\@ne + \if@twocolumn + \if@firstcolumn \@tempcnta\m@ne \fi + \else + \if@mparswitch + \ifodd\c@page \else\@tempcnta\m@ne \fi + \fi + \if@reversemargin \@tempcnta -\@tempcnta \fi + \fi + \hbox to\columnwidth + {\ifnum \@tempcnta >\z@ + \hskip\columnwidth \hskip\chgbarsep + \else \hskip -\chgbarsep \fi +\hbox{\vbox to 0pt{\vss + \hrule \@height\@tempdima \@width\chgbarwidth \@depth\z@ +}} +\hss} + \nointerlineskip + \global\@inchgbarfalse + \@cons\@freelist\@currbox +\else + \@next\@marbox\@currlist{\@cons\@freelist\@marbox + \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne + \if@twocolumn + \if@firstcolumn \@tempcnta\m@ne \fi + \else + \if@mparswitch + \ifodd\c@page \else\@tempcnta\m@ne \fi + \fi + \if@reversemargin \@tempcnta -\@tempcnta \fi + \fi + \ifnum\@tempcnta <\z@ \global\setbox\@marbox\box\@currbox \fi + \@tempdima\@mparbottom \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox \ifdim\@tempdima >\z@ + \@warning{Marginpar on page \thepage\space moved}\else\@tempdima\z@ \fi + \global\@mparbottom\@pageht \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\ht\@marbox\z@ \global\dp\@marbox\z@ + \vskip -\@pagedp \vskip\@tempdima\nointerlineskip + \hbox to\columnwidth + {\ifnum \@tempcnta >\z@ + \hskip\columnwidth \hskip\marginparsep + \else \hskip -\marginparsep \hskip -\marginparwidth \fi + \box\@marbox \hss} + \vskip -\@tempdima + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp} +\fi\fi\fi} +% +\def\@makecol{\setbox\@outputbox\box\@cclv + \if@inchgbar + \@tempcnta\@ne + \if@twocolumn + \if@firstcolumn \@tempcnta\m@ne \fi + \else + \if@mparswitch + \ifodd\c@page \else\@tempcnta\m@ne \fi + \fi + \if@reversemargin \@tempcnta -\@tempcnta \fi + \fi + \@tempdima\ht\@outputbox \advance\@tempdima -\@chgbarbegin + \advance\@tempdima -\baselineskip + \setbox\@outputbox + \vbox{\boxmaxdepth \maxdepth + \unvbox\@outputbox \nointerlineskip \hbox to\columnwidth + {\ifnum \@tempcnta >\z@ + \hskip\columnwidth \hskip\chgbarsep + \else \hskip -\chgbarsep \fi + \hbox{\vbox to 0pt{\vss + \hrule \@height\@tempdima \@width\chgbarwidth \@depth\z@}}\hss}} + \global\@chgbarbegin 0pt +\fi + \ifvoid\footins\else\setbox\@outputbox + \vbox{\boxmaxdepth \maxdepth + \unvbox\@outputbox\vskip\skip\footins\footnoterule\unvbox\footins}\fi + \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats + \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth + \@texttop\dimen128=\dp\@outputbox\unvbox\@outputbox + \vskip-\dimen128\@textbottom} + \global\maxdepth\@maxdepth} +%/////////////////////////////////////////// +\let\majwidth\chgbarwidth% The width of a change bar +\majwidth=0.5pt% +\let\majhskip\chgbarsep% The distance between the text and the change bar +\let\MAJ\chgbarbegin\let\endMAJ\chgbarend% +\def\maj{\chgbarbegin\hbox to 0pt{}\chgbarend}% +\if@twoside\else\reversemarginpar\fi% a little more french ? +\endinput% diff --git a/language/french/e-french/texmf/doc/test/README b/language/french/e-french/texmf/doc/test/README new file mode 100644 index 0000000000..149f9ac9ed --- /dev/null +++ b/language/french/e-french/texmf/doc/test/README @@ -0,0 +1,51 @@ +% README of the french style distribution (tst sub-directory) 2003/02/17 +% author Bernard Gaulle, adapted Raymond Juillerat +% + +This material was designed to help (La)TeX users to test the french style +files installation. + +Quick description of contents: + +README.test : the file you are reading. + +fxench.tst : this file has to be converted to 8-bit and renamed french.tst; + this is the bi-lingual torture test basic file used to + typeset the following documents: +frenchlb.tex : a french LaTeX book (to be compared at printing level + with frenchrf.pdf). +texxetlb.tex : the same to be run with any TeXXeT engine. +frenchab.tex : the same with AmsLaTeX. + +frenchln.tex : the same, loading the french style before \documentstyle. + and testing the "poor man french style" option. +frenchlr.tex : a french LaTeX report +frenchla.tex : a french LaTeX article +frenchll.tex : a french LaTeX letter (just a test) + +The previous files require: +myfigure.eps : an EPS face (not mine) +mygglo.ist : the file is use with Makeindex to produce my glossary +mylist.sty : a verbatim style +frenchlb.ind : for those who don't have makeindex, this is the index produced. +frenchlb.glo : for those who don't have makeindex, this is the glossary too. + +For comparison after installation: +frenchrf.pdf : the Torture test (frenchlb) document composed by the author. + (The program makeindex was used to produce the index + i.e. the .ind file and the glossary i.e. the .glo file) + +Your "TO DO" list: +================= + +1- Convert the file french.tst to 8-bit. +2- Ensure your TEXINPUT path pointing to the inputs directory first. + For LaTeX users: LaTeX frenchlb.tex + For TeX users: TeX frencht.tex +3- Print the first 45 pages of frenchlb.pdf. +4- Print the first 45 pages of frenchrf.pdf and then compare the outputs +5- Go back to the main directory. + +Optional tests are provided, look at the files. +============================================================================== + diff --git a/language/french/e-french/texmf/doc/test/XeLaTeX/frenT1xe.pdf b/language/french/e-french/texmf/doc/test/XeLaTeX/frenT1xe.pdf Binary files differnew file mode 100644 index 0000000000..8bcda89644 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/XeLaTeX/frenT1xe.pdf diff --git a/language/french/e-french/texmf/doc/test/XeLaTeX/frenT1xe.tex b/language/french/e-french/texmf/doc/test/XeLaTeX/frenT1xe.tex new file mode 100644 index 0000000000..8727598e05 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/XeLaTeX/frenT1xe.tex @@ -0,0 +1,85 @@ +% !TeX program =XeLatex +% This is frenT1lb.tex +% +% French Torture Test with LaTeX (main style: book) +% Copyright Bernard Gaulle as in french.doc +% +% last mods 2006/04/25 +% +\advance\hoffset by -10pt% marge droite (chez moi) pas totalement imprimee +\documentclass[twocolumn,a4paper]{book}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%% si vous n'avez pas utilise kbconfig, probablement avez-vous besoin de : +%\usepackage[T1]{fontenc}% pour utiliser les fontes a la norme Cork (DC,...) +%\usepackage[utf8]{inputenc}% pour le codage d'entree, ici utf8, XeLaTex s'en passe +\usepackage{eurosym} % pour euro +\usepackage{xltxtra}% pour le logo de XeTeX +\usepackage{fontspec} +\fontencoding{T1} +%\DeclareUnicodeCharacter{20AC}\euro de ceci aussi, XeLaTex s'en passe +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{mysmall,mylist} +%\usepackage{epstopdf} %converting to PDF +%\usepackage{french}% Maintenant on peut utiliser cette syntaxe: +\usepackage[anglais,francais]{mlp} +\setlength{\textheight}{225mm}% a4paper is a little shorter...than a4.sty +\advance\hoffset by 40pt% for better placement +\listfiles + +\setlength{\textwidth}{415pt}%% +\catcode`\@=11 +\let\Stop\undefined\ifx\@@end\undefined\let\@@end\end\fi +% Localisation code for numbered \typeout: "\kbAissue% localise it." +% For debugging one can remove "msg" access, just uncomment +%\let\kbAissue\relax% this line. + \ifx\kbAissue\undefined% +% Firstly we add the material to use the "msg" package for localization. + \def\kb@issue#1#2{\kb@issue@[#1]#2\void}% The local \issuemsg macro. + % which will call the real one; + % #1 is the macro message required. + % #2 is the message header + msg number + % such as "^^J -234-", just message + % number (234) is kept. + \let\kbAissue\kb@issue% + \def\kb@issue@[#1]#2-#3-#4\void{\issuemsg[#1]#3(french)}% + \ifx\issuemsg\undefined\let\kbAissue\relax\let\typeouA\typeout\fi% + \fi% +% +\ifx\endfrench\switchtolanguage +\kbAissue% localise it. + \typeout{-37a- ANOMALIE : extension french active ici.}\Stop +\@@end +\fi +\def\LPLAIN{lplain} +\ifx\fmtname\LPLAIN\else\relax + \def\LPLAIN{LaTeX2e} + \ifx\fmtname\LPLAIN\else\relax + \typeout{**********************************************} +\kbAissue% localise it. + \typeout{-36- ANOMALIE \string: nom de format LaTeX (\fmtname) invalide.} + \typeouA{CORRIGER pour avoir \fmtname=\LPLAIN\space ou ancien nom.} +\Stop% Vous devez avoir dans ltvers.dtx : \def\fmtname{LaTeX2e} ! +\@@end + \fi +\fi +\catcode`\@=12 +\let\iflatex\iftrue +\def\SmsG{\typeout% + {\string<\string<--------------------------------------------------------}} +\def\FmsG{\typeout% + {--------------------------------------------------------\string>\string>}} +{\SmsG\obeyspaces +\typeout{( Test de torture du style \frenchname} +\typeout{(Ce test genere deliberement quelques messages d'erreur. )} +\typeout{(Pour vous permettre de distinguer les messages d'erreur )} +\typeout{(normaux de ceux qui sont anormaux, j'ai encadre, comme )} +\typeout{(ici, ces messages ; ne vous en preoccupez pas. --bg )} +\FmsG}% +\frenchtest +\ifx\endfrench\switchtolanguage\else +\kbAissue% localise it. + \typeout{-37b- ANOMALIE \string: extension french inactive ici.}\Stop\fi +\end{document} +%% +%% checksum = "56133 79 312 3522" +%% diff --git a/language/french/e-french/texmf/doc/test/XeLaTeX/french.tst b/language/french/e-french/texmf/doc/test/XeLaTeX/french.tst new file mode 100644 index 0000000000..eae5a989f2 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/XeLaTeX/french.tst @@ -0,0 +1,3684 @@ +% !TeX encoding = utf8 +% This is the french torture file for all formats. +% Copyright Bernard Gaulle as in french.doc +% +% À passer en 8 bits conformément à votre système +% +%% checksum = "25011 3750 14847 120214" +%% +% +% For localisation: +% +\makeatletter% +\ifx\documentclass\undefined\let\kbAissue\relax\let\typeouA\typeout% +\else% + \let\typeouA\@gobble% +% For debugging one can remove "msg" access, just uncomment +%\let\kbAissue\relax% this line. + \ifx\kbAissue\undefined% +% Firstly we add the material to use the "msg" package for localization. + \def\kb@issue#1#2{\kb@issue@[#1]#2\void}% The local \issuemsg macro. + % which will call the real one; + % #1 is the macro message required. + % #2 is the message header + msg number + % such as "^^J -234-", just message + % number (234) is kept. + \let\kbAissue\kb@issue% + \def\kb@issue@[#1]#2-#3-#4\void{\issuemsg[#1]#3(french)}% + \ifx\issuemsg\undefined\let\kbAissue\relax\let\typeouA\typeout\fi% + \fi% +\fi% +\makeatother% +% +% For better debugging: +%\ifx\IeC\undefined code dont XeLaTex se passe +%\kbAissue% localise it. +%\typeout{^^J-66- ERROR! This file can't be typeset without any input} +% \typeouA{-66- encoding declaration (look at keyboard or inputenc packages.)} +%\expandafter\stop% \usepackage[latin1]{keyboard} should be fine. +%\fi +\let\FP\frenchpack\hyphenation{e-french} % anciennement French-Pro +\wlog{Formating \jobname\space with\space\FP\space(\frenchstyleid)} +% +% +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi% +\ProvidesFile{french.tst}% + [2005/05/11 The torture test file for the package \FP]% **last mods** +\ifx\undefined\FmsG\def\FmsG{}\def\SmsG{}\fi +% +{\catcode`\<=\active\catcode`\>=\active% +% Je veux : +%\global\def<{\left\langle}\global\def>{\right\rangle} +% Et pour ne pas pouvoir avoir l'effet que localement, +% je fais : +\gdef<{\myinf}\gdef>{\mysup} +} +\label{nulllabel}% null \label for AmSTeX test \ref within a \ref +\iflatex\makeindex \makeglossary + \csname frhyphex\endcsname% load (again) the exceptions, outside babel + \def\NL#1{\Sauter#1Lignes} + \begin{document} + \makeatletter + \ifx\babel@savevariable\undefined% + \let\FRENCH\frenchTeXmods% + \else\def\FRENCH{\selectlanguage{french}}% pour babel + \fi% + \makeatother + \csname onecolumn\endcsname % avoid writting \onecolumn + % (special effect in frencht.tex) + \renewcommand{\thepage}{\roman{page}}% + \ifx\documentclass\undefined\else% for 2e + % As 2e doesn't accept \verb in arguments: + \gdef\myverb|#1|{%\nonfrench + \texttt{#1}% + %\endnonfrench + \relax}% + \fi +\else + \let\FRENCH\frenchTeXmods% + \def\NL#1{\par} +\fi +\ifx\myverb\undefined\let\myverb=\verb\fi% +% global here is just req. for TeX--XeT tests. +\global\let\myinf\inferieura% A no-op def +\global\let\mysup\superieura% for a temporary action +\ifx\undefined\english\let\english\relax\fi% +% Les \ldots sont $\ldots$ a cause de AmSLaTeX V1.1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\HyphDiff#1#2{{\setbox0=\vbox{% + \pretolerance=-1 \hyphenpenalty=-10000 + \hsize=0pt \leftskip=0pt \rightskip=0pt \parfillskip=0pt + \parindent=0pt \hfuzz=\maxdimen \interlinepenalty=0 + \clubpenalty=0 \widowpenalty=0 \brokenpenalty=0 + \hskip 0pt #1}% + \setbox2=\hbox{}% + \setbox9=\vbox{\unvbox 0 \loop \unskip \setbox1=\lastbox + \ifhbox 1 + \global\setbox 2 = \hbox{% + \unhbox 1 \discretionary{}{}{}% + \unhbox 2}% + \repeat}% +\setbox3\hbox{#2}\ifnum\wd2=\wd3\else +\kbAissue% localise it. +\typeout{-31- Wrong French Hyphenation\string! + Are you sure to run with a format ***********} +\typeouA{-31- in which the french patterns were + installed at initex time\string? ***********} +\ifECM\else% +\kbAissue% localise it. +\typeout{-32- if yes try to switch to T1 font + encoding (\noexpand\usepackage[T1]{fontenc})***} +\fi% +\showhyphens{#1}\typeout{(should be\string: #2) + \string<\string<======== *********************************} +\fi}} +\HyphDiff{éventualité}{éven-tua-lité} +\HyphDiff{dégazonnage}{dé-ga-zon-nage} +\HyphDiff{chromosomique}{chro-mo-so-mique} +%%%% +\SmsG% +\typeout{V\'% + erification de la sortie de caract\`% + eres 8-bits \string:} +\message{L'\'% \typeout ne transforme pas en 8bits pour l'instant. + et\'% + e est l\`% + a en ao\^% + ut \string!} +\typeout{Et si les caractères sont en utf8 \string:} +\message{L'été est en août \string!} +\typeout{Ce n'est pas mieux} +\iflatex% +\typeout{Essai de macro d'accentuation dans un ordre \string\showhyphens % + \string:} +\showhyphens{Faut-il croire \`% + a l'\'% + ETERNIT\'% + E ? \'% + eludons ...} +\showhyphens{Ao\^% + ut 2001 ou l'autre \`% + ere ...} +\fi% +\FmsG% +% +\english% Title page is in english +\ifx\documentclass\undefined % Still Plain! so no \DeclareFontFamily +\else% +% To avoid "No file OMScmtt.fd" message 2004/10/29 +\DeclareFontFamily{OMS}{cmtt}{\skewchar\font48 } +\DeclareFontShape{OMS}{cmtt}{m}{n}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{it}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{sl}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{sc}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{n}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{it}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{sl}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{sc}% + {<->ssub*cmsy/b/n}{} +%%%%%%%%%%%%%%%%%%%%%%% +\fi% +\makeatletter% for \f@encoding +\french +\title{\fbox{ \FP\ avec \XeLaTeX% +% \thanks{We are here in english, notice the problem when we use, +% like in \texttt{frenchla}, a +% {\mdseries\texttt{\textbackslash fnsymbol}} +% in a box.\newline% +% \indent \hspace*{0.5em} +% Notice also that +% {\mdseries\texttt{\textbackslash backslash}} +% can't be used.% +% }% + }\\ \ \\% + Version \frenchstyleid\\ \ \\ + ``Torture'' Test (\jobname) \\ with + \ifx\encodingdefault\undefined Unknown + \else\ifx\f@encoding\undefined\encodingdefault{} + \else\f@encoding{} \fi + \fi Font Encoding\\\ } + \author{Bernard {\sc Gaulle}% + \thanks{Thanks to those good guys who helped me.\newline% + \indent\hspace*{0.5em} + This test note is also referred by a + {\mdseries\texttt{\textbackslash refmark}} call. + \label{title:thanks}% + }% + \\ \ \\ et...\refmark{title:thanks}\\[2em]% +Revisited 2018 by Raymond Juillerat for \XeLaTeX + }% +% AmS \normalparindent no more exists 2000/06/15, so the code is removed. +%\makeatletter% Don't let AMS change \parindent +%\ifx\RIfM@\undefined\else\normalparindent=1em\parindent=\normalparindent\fi% +%\makeatother +\makeatother% +\date{Printed on \today} +% As the titlepage is in English but the date in French we let \ier defined: +{\def\ier{ier}\maketitle} +\setcounter{page}{2}\thispagestyle{empty} +\cleardoublepage\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\sommaire[4] +\bigskip +\begin{center} +\noindent\fbox{% +\begin{minipage}[t]{0.5\textwidth} +\begin{center} \fbox{\parbox{5cm}{{\bf Remarque} : \\ la commande +\texttt{\backslash som\-maire}\label{pbverb}% +\footnote{Cette note a été demandée depuis une minipage.}% +\footnote{Cette deuxième note aussi.} +%%%%NB : \verb|\sommaire| ou \verb|\tableofcontents| produisent des HORREURS, +%%%% lorsqu'ils ont utilises dans un \fbox, BUG LATEX ! + est un apport de \FP.\hfill}} +\end{center} +\end{minipage} +} +\end{center} + +{% Not a LaTeX redefinition : \def\thefootnote{\fnsymbol{footnote}} +\renewcommand{\thefootnote}{\fnsymbol{footnote}}% +Essai de note avec \verb|\fnsymbol| +\footnote{Note avec une étoile.}. + +\def\thefootnote{\relax} +Essai de note de bas de page non numérotée +\footnote{Note non numérotée.}. +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\cleardoublepage +\chapter*{\prefacename} + +{\em Certains croient qu'une préface peut apporter de la valeur au livre, +moi je pense plutôt que cela apporte de la {\em valeur} +à l'auteur...} (dans +tous les sens du terme). + +\cleardoublepage + +\twocolumn +\renewcommand{\thepage}{\arabic{page}}\setcounter{page}{1}% +\chapter*{Introduction} + +\begin{motsclef} +french, style, francisation, francophonie, multilingue, +english, option, extension. +\end{motsclef} + +\begin{resume} +Ce document a été conçu +uniquement pour tester intensivement \FP\ (anciennement appelé +option de style% + \glossary{<< : ; style ? ! >>}\index{<< : ; style ? >>}% + \footnote{Cette note a pour but de faire appel à une macro + \texttt{\backslash index} contenant des caractères actifs.% + \index{<< : ; depuis la note de bas de page ? >>}% + } +\index{french!Le point d'exclamation est un caractère spécial de Makeindex}% +\index{<@{\tt\protect\inferieura} ({\tt\protect\backslash inferieura})}% +\index{>@{\tt\protect\superieura} ({\tt\protect\backslash superieura})}% +\index{Magic di N'Konga (auteur célèbre)}% + \texttt{FrenchPro}). +\end{resume} + +\bigskip Notez que les deux environnements \verb|resume| et \verb|motsclef| +(ainsi que \verb|keywords|) +sont des apports de \FP. + +\bigskip Si le libellé << Résumé >> apparaît dans la partie + anglaise, cela +signifie que \FP\ ne possédait pas de définition +d'\verb|\abstract| et donc l'a remplacé par \verb|\resume|. Cela signifie +aussi que les libellés anglais n'ont pas été définis +%(\verb|\captionnames|% +%\footnote{Une extension {\tt fenglish} est fournie conjointement avec +%\FP\ ; {\tt\backslash captionnames} y est défini. +%Cette extension {\tt +%fenglish} est automatiquement appelée par \FP\ dans le +%cas que nous avons cité.} +% n'était pas défini par les extensions appelées avant +% \FP). +Rappelez-vous aussi que \verb|\abstract| ne fait pas partie de la classe +de document \verb|book|. + +Remarquez les différences entre les numéros de notes de bas de page en +français et en anglais, ainsi que l'impression de ce même numéro en +bas de la page. + +\english\newpage +\begin{keywords} %???\relax% for AMS which has its own macro with #1 +French, Style, Option, Package, French-Speaking usage, English, Multilingual. +\end{keywords} + +\begin{abstract} The object of this paper is to test intensively \FP. +\end{abstract} +\NL1 + +\bigskip Notice that the three environments +\verb|resume|, \verb|keywords| and \verb|motsclef| +are all introduced by \FP. + +\bigskip Notice that if the abstract name printed here is not ``Abstract'' you +are using packages that have no \verb|\abstractname| defined for eng\-lish. + The english package defining such captions is loaded only +if \verb|\captionsnames|% +\footnote{The {\tt fenglish} package is given with \FP, +so {\tt$\backslash$captionnames} are normally defined because +\FP\ is calling automatically the {\tt fenglish} package in the +pre\-viously cited case.} was +previously undefined. (Remember also that as \verb|\abstract| is not defined +in the \verb|book| document class the \FP\ assumes it is a +\verb|\resume|.) + +Notice the different typesetting of the footnote numbers in French and English +as well as the printing of that numbers before the footnote text.\vfill + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\pagebreak +\french +\part{Ce qui marche est ici...} +\disallowuchyph% ce que je prefere... + +\chapter{Avertissements} + +Seul le document authentique qui est fourni par l'auteur + sous une forme composée +constitue la référence. Cela veut dire que l'installateur de \FP\ +sur un système doit comparer son résultat +(sous forme papier ou +fichier \verb|.pdf|) avec la forme authentique fournie par l'auteur. + +\bigskip + +\bigskip \FP\ a été conçu pour fonctionner +avec la majorité des formats basés sur \LaTeX{} +\footnote{Au siècle dernier (XX\ieme), \FP\ était appelé << style +\texttt{french} >> et pouvait fonctionner en dehors de \LaTeX\ mais +l'effort pour assurer cette facilité dans de trop nombreux formats +exotiques était totalement disproportionné ; ceci a donc été +abandonné (au moment de la sortie de \LaTeXe).}% +. + +\bigskip \AllTeX{} est mon logo ; il symbolise {\em tous les \TeX{}} ; on peut +l'imprimer correctement dans toutes les polices ({\em \AllTeX}, {\bf \AllTeX}, +{\sf \AllTeX}, {\tt \AllTeX}, ...) grâce à la partie NFSS de \LaTeXe% +\footnote{Le document de référence ({\tt frenchrf}) +a été produit avec NFSS. Ce document-ci a été composé avec le format +{\tt \fmtname}.} +. + +\newpage\english Only the authentic author's document in a composed form is +the reference. That means that the on site \FP\ installator must +compare his result (paper or \verb|.pdf| file) with the authentic form +provided by the author. +\NL2 + +\bigskip \FP\ was designed to work with all {\em formats\/} +based on \LaTeX. + +\bigskip \AllTeX{} is my logo ; it's a symbol for expressing +{\em all \TeX{}} ; one can print it correctly in all shapes +({\em \AllTeX}, {\bf \AllTeX}, +{\sf \AllTeX}, {\tt \AllTeX}, etc.) due to the NFSS part of \LaTeXe% +\footnote{The +reference document was produced with NFSS of {\tt \fmtname}.}% +. + +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{La torture} + +\section{Le saviez-vous ?} Nos journaux, livres, revues, +articles scientifiques ou autres ont été (en gros) durant les trente +dernières années du vingtième siècle imprimés +par des machines d'origine +américaine. Ainsi, petit à petit, nous perdîmes +l'habitude de lire des +majuscules accentuées parce que tout simplement les polices + de caractères +utilisables sur ces machines n'en comportaient pas. + +L'usage de plus en plus généralisé de l'infor\-ma\-tique +{\em américaine} fit ainsi disparaître pendant un temps tous + les accents de notre langue écrite. + +De la même manière un certain nombre de +{\em mauvaises habitudes} furent +prises quasiment inconsciemment tout simplement parce que les programmes +informatiques ne pouvaient pas faire autrement. Ainsi de nombreuses {\it +coquetteries} de notre typographie sont tombées dans l'oubli. + +Saviez-vous par exemple qu'on n'imprime pas des guillemets comme ceci `` '' ni +même ` ' mais ainsi << >> ? Nous nous autoriserons toutefois + à utiliser dans +ce document ces guillemets %\noenglishquote +(` ') que nous considérons comme +{\em techniques}. + +\newpage\english \section{Did you know that?} +Our (french) +newspapers, books, magazines, scientific articles and other things have +been printed the last thirty years (roughly) +of the twentiest century with american machines. So our +habits to read accented uppercase letters declined because they simply were +not included in the machinery.\NL2 + +Together with American computer usage growth, all french +diacritics disappeared from our french written language.\NL1 + +In a same way {\em bad +habits} took place, inconsciously, for the only reason that computer programs +could not do otherwise. So, a lot of french typographic {\em coquetteries\/} +are largely forgotten.\NL1 + + Did you know for example that we never typeset french +guillemets like this `` '' neither ` ' but% +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding\else% +\footnote{We switched to \emph{French} here to be able % + to print valid glyphs.}% +\fi} % +\begin{french}<< and >>\end{french}? Instead, we will +authorised ourselves to use (` ') in this document +because we consider they are {\em technical} guillemets. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +*** Cet espace est laissé intentionellement à blanc *** +\NL3 +\section{Typographie française} +%\noenglishquote +La typographie française est spécifique en ce qui concerne +l'utilisation des signes sui\-vants : +`\verb|.| \verb|:| \verb|;| \verb|!| \verb|?| \verb|<<| \verb|>>|'. + +La répartition des espaces dans une ligne se fait de façon +équitable entre les +mots (jamais à l'intérieur des mots) et après +la ponctuation (c'est le +\verb|\frenchspacing| de \TeX{}) contrairement à la + typographie anglaise. + +Les `\verb|; ! ?|' doivent être précédés d'une espace fine +insécable. C'est +ce que nous avons appliqué dans \FP. +Le cas du `\verb|?|' +a été traité spécialement car l'espace fine ayant +été jugée trop grande (par +des spécialistes), a été réduite tout en adjoignant une peu de +{\em glue} d'extensibilité. + +En ce qui concerne le `\verb|:|', le code typogra\-phi\-que% +\footnote{Nous +avons choisi d'adopter les recommandations de l'imprimerie nationale +française.} précise qu'il est précédé +d'une espace {\em mot\/} +insécable. +D'autres ont jugé que c'était inesthétique et cela a été +remplacé par une espace fine. + +Les guillemets français << doivent être suivis d'une espace mot +insécable qui +a été remplacée ici par une espace moindre. +Les guillemets fermants >> +sont, eux, précédés de la même espace. + +\SmsG% +Lorsque la ligne n'est pas assez remplie et qu'il existe un `:', les +typographes ont --~semble-\hbox{t-il}~-- l'habitude +de répartir largement les espaces autour +des deux points. C'est ce qui a été fait dans \FP\ qui +pourra éventuellement produire une ligne : peu remplie\footnote{Le cas présenté ici a été +créé artificiellement et peut donc apparaître exagéré dans +certaines mises-en-pages.}% +\penalty-10000% + ou aussi bien une ligne se terminant ainsi : << {\em com\-me % \- pour fourier +font les pros\/} >> +lorsqu'ils ne trouvent pas d'autre moyen mais il devrait s'agir que de cas +extrêmes. À noter que cela a pour avantage de réduire les +\verb|over/under-full hbox| de façon significative. + +Paragraphe de remplissage...\\ ...\\... pour vérifier que le `:' ne +termine ni la page ni la colonne. Ainsi : + +%\englishquote +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item %qu'il s'agisse de verbatim ou d'une liste d'éléments +les deux points et le texte qui suit +sont tous deux sur la même page. +\end{itemize} +%\newpage % already done with the previous list +\FmsG% +\english + +\smallskip + +\section{French printing} + +French printing use specific typographic rules specially in concern with +the following: `. : ; ! ?' and french guillemets. + +Interword spacing in a line is allways equal (and never modified inside a +word). It's the same way after punctuation (standard \verb|\frenchspacing|) as +opposed to the english typography.\NL1 + +All `; ! ?' are preceeded by a thin and uncuttable space. We apply this +automatically in \FP. (We have added few stretching {\em glue} to +the question mark).\NL2 + +Regarding the `:' we have not inserted an inter-word space but a thin space +and also have added some glue.\NL2 + +\smallskip +French guillemets are processed the same way. \NL3 + +In an {\em underfull\/} line containing a `:' man has habits to share spaces +around the double points. This way used in \FP\ can also produce a +line with a ragged right, as shown in the french column. This technique + reduce a lot of {\em overfull} and {\em underfull} {\tt hboxes} +produced by \TeX{}. +\NL3 + +As shown also, \FP\ is reluctant to print a double point at the +end of a page or a column.\french%\noenglishquote +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section[Dactylographie française]{Rappels concernant la \newline +dactylographie} + +Les habitudes de saisie c.-à -d. les habitudes dactylographiques, + veulent que les signes suivants +`\verb|:| \verb|;| \verb|!| \verb|?| \verb|>>|' +soient toujours précédés d'un blanc +(barre d'espace sur les claviers) et les \verb|<<| toujours +suivis d'un blanc. \FP\ remplacera +automatiquement ce blanc (à la composition) par l'espace appropriée. + +{\moretolerance\moretolerance\moretolerance +Les guillemets français << (et respectivement >>)... +\footnote{\tthyphenation Avec les options fournies +telles \vers|A4| et \vers|double|\-\vers|column| on obtient + là un \vers|overfull| \vers|hbox| difficilement réductible +de façon automatique mais je l'ai réduit +avec 3 \texttt{\backslash moretolerance}% +\notthyphenation.} +\par} +%\nooverfullhboxmark + +Les vrais guillemets français << (et respectivement >>) +s'utilisent toujours doublés (\verb|<<| et respectivement +\verb|>>|). Ainsi $<$ et $>$ ne +sont que des signes mathématiques et n'ont pas +d'autre sens en français que : {\em inférieur à } et +{\em supérieur à }. + +Il est fortement conseillé de poursuivre +ces habitudes dactylographiques qui +contribuent aussi à éclaircir le texte +saisi et donc ainsi à faciliter les +corrections ultérieures. +\NL1 + +\subsection[Test de la ponctuation française + \mdseries`\protect\myverb|. : ; ! ?|'] +{Test de la ponctuation \newline française + \mdseries`\protect\myverb|. : ; ! ?|'} + +Le deux points s'imprime comme ceci : s'il est précédé d'un blanc +(au moins un) sinon rien n'est changé (par ex. 11:33). Notez +l'espace après le point terminant la phrase ; le point virgule +est aussi précédé d'une espace fine s'il n'est pas collé +au mot le précédant (comme dans cet exemple dû à une faute +de frappe; assez fréquente).\\ +{\moretolerance +Oh ! Quoi-donc ? Notez ici l'espacement utilisé +devant le `!' et le `?'. Il ne faut +pas oublier aussi de taper le blanc avant, sinon? tout est +%terriblement + collé! Voyez-vous la différence ? Bravo ! +} + +Mais pour les documents {\em mal\/} saisis (c.-à -d. sans blanc) il est +toujours possible de spécifier la sous-option \verb|\untypedspaces| +\untypedspaces pour obtenir une insertion automatique des espaces +manquants comme ici! où il avait été saisi `\verb|ici!|'. +Vérifions pour les autres ponctuations :;? \typedspaces que nous +n'obtenons pas :;? serrées comme ici. + +Vérification de l'espacement : + +\noindent +\verb| \typedspaces X~; Y ; Z;| = \typedspaces X~; Y ; Z; + +\noindent +\verb|\untypedspaces X~; Y ; Z;| = \untypedspaces X~; Y ; Z; \typedspaces + +\newpage\english +\section{French typing} +French typists have some habits. For example they type a space before `: ; ! ? +\verb|>>|' and after \verb|<<|. \FP\ replace automatically this +blank space by the appropriate spacing. + +There is only one kind of quoting in French by the mean of guillemets which +are allways typed \verb|<<| and \verb|>>|. Usual english simple and double +quotes must be prohibited. + +\subsection{\mdseries% + \texttt{\textbackslash untypedspaces}}% +This control command offers the ability to repair automatically a document +badly typed i.e. in which spaces were not typed before french punctuation. +This bypass can help but is not the good way to use daily because there are +many cases where, for example, a double point must never be preceeded +by a space. + +Now we verify that the spacing is unchanged in English: + +\noindent +\verb| \typedspaces X~; Y ; Z;| = \typedspaces X~; Y ; Z; + +\noindent +\verb|\untypedspaces X~; Y ; Z;| = \untypedspaces X~; Y ; Z; \typedspaces + +\subsection{\mdseries% + \texttt{\textbackslash wrongtypedspaces}} +A french typist may input spaces before +punctuation as it is usual in French. These unfortunate space + can be removed by simply letting \FP\ do it with* the control +sequence: + +\begin{verbatim} +\letpunctuationactivefor + \wrongtypedspaces +\end{verbatim} + +\FRENCH% pour ne pas dire \french +\letpunctuationactivefor\wrongtypedspaces +\english +Let's try the previous example:\par +\noindent +\verb| X~; Y ; Z;| = X~; Y ; Z; + +Now we say \verb|\nowrongtypedspaces| +\nowrongtypedspaces to come back to the normal +situation. + +\vfill +\french +\nowrongtypedspaces% to be sure it is set when english text is skipped +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\csname StopFrenchLbT\endcsname% special case, temporary. + +\section[Test des guillemets français 7-bits (<< >>) +et utf8 (« ») +]% +{Test des guillemets \newline français (<< >>)} +\hyphenation{nor-ma-le-ment} + +Les guillemets français s'écrivent et se saisissent +<< normalement >> comme ceci : +\verb|<< |{\tt nor}\-% +{\tt male}\-{\tt ment }\verb|>>| + ou éventuellement en italiques mais toujours +\bgroup% for frenchle +<< \em normalement\/ >> % +\egroup% for frenchle +; ici nous avons tapé au clavier : +\verb|<< \em| {\tt normalement}\verb| >>|. +Et en tapant par contre :\\ \verb|<<\em| + {\tt anormale\-ment (sans espace)}\verb|>>| \ on obtient... +\bgroup% for frenchle +<<\em anormale\-ment (sans espace)\/>>. +\egroup% for frenchle +Re\-mar\-quez que les guillemets font office d'acco\-lades \TeX{} et que donc +les changements de polices sont restaurés en sortant de la citation. + +Pour les documents déjà saisis {\em sans espace} << \FP\ >> +insérera systématiquement un espace à l'endroit +désiré si l'on a donné la sous-option \verb|\untypedspaces|. +\untypedspaces +Et en tapant à nouveau +\verb|<<\em| {\tt anormale\-ment (sans espace)}\verb|>>| on obtient +\bgroup% for frenchle +<<\em anormalement (sans espace)\/>>. +\egroup% for frenchle +\typedspaces + +Parfois on désirera remplacer systématiquement tous les +guillemets anglais (`` et '') d'un texte par de vrais guillemets +français, il +suffira alors de fournir l'étrange option :\\ +\texttt{\backslash noenglishdoublequotes}\\ +\noenglishdoublequotes pour obtenir : `` ''. + +`` '' (même test en début de paragraphe).\englishdoublequotes + +Lorsqu'une citation est faite dans un texte, celle-ci commence +toujours par des guillemets. << Cette citation peut se poursuivre sur +plusieurs paragraphes. + +Dans ce cas, le style %\verb|french| +insérera systématiquement les guillemets nécessaires +en début de +chaque paragraphe. >> + +Mais une citation peut aussi en contenir une autre. << Dans ce cas l'imprimerie + nationale précise dans ses {\em Règles typographiques} : +\ancientguillemets + << Lors\-que la première citation est +elle-même placée entre +guillemets, chaque ligne de la seconde débutera par un +guillemet ouvrant. >> +Ce dispositif, comme on le voit, n'est pas mis en Å“uvre ici + (voir son application au paragraphe \ref{noeveryparguillemets}). + << La deuxième citation peut aussi... + +se poursuivre sur un ou +plusieurs paragra\-phes. >> Notez bien qu'avant cette citation nous avons +demandé les \verb|\ancientguillemets| +pour produire ces guillemets fermants +en début de ligne. Le \verb|\todayguillemets| rétablit la +situation une fois +le deuxième niveau terminé. \todayguillemets + +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding +\enlargethispage{10pt}% increase probably due to EC fonts metrics? +\fi} +Il arrive que la fin d'une citation de deux\-ième niveau +coïncide avec celle +du premier niveau. << Dans ce cas il faudra coder, comme ici :\\ +\verb|\endguillemets| +à la place de ``\verb|>>|'' \endguillemets. + +Deux tests : \fbox{\begin{guillemets} XXX \end{guillemets}} +et \fbox{X \begin{guillemets} XXX \end{guillemets} X} servant à +vérifier l'espacement quand on utilise \verb|\begin| et \verb|\end|. + +Le paragraphe suivant va alors démarrer de façon +tout à fait normale... + +On peut aussi coder : +\begin{verbatim} +\begin{guillemets} +Une citation... +\end{guillemets} +\end{verbatim} +ce qui donnera : +\begin{guillemets} +Une citation... +\end{guillemets} +et en tapant {\em à la \TeX} : \verb|\guillemets{}| \verb|Une citation...| +\verb|\en|\vers|d|\-\vers|guillemets{}| nous devons obtenir absolument la même chose : +\guillemets{} Une citation... \endguillemets{} + +Vérifions maintenant l'espacement dans les différents cas : + +\noindent +\fbox{\parbox{2cm}{<<X\dotfill X>>}} \%\texttt{\backslash typedspaces} + {\em sans blanc} + +\noindent +\fbox{\parbox{2cm}{<< X\dotfill X >>}} \%\texttt{\backslash typedspaces} +{\em normal} + +\noindent\untypedspaces +\fbox{\parbox{2cm}{<< X\dotfill X >>}} \%\texttt{\backslash untypedspaces} +{\em avec blanc} + +\noindent +\fbox{\parbox{2cm}{<<X\dotfill X>>}} \%\texttt{\backslash untypedspaces} +{\em sans blanc} +\typedspaces + +\noindent +\fbox{\parbox{3cm}{A blabla bla blabla : << +Ceci est mon test de césure >>}} <<...>> reste possible. + +\begin{flushleft} + Ceci est << un test avec \verb|\raggedright| >> qui +--~théoriquement~-- ne devrait plus nous poser de problème. +\end{flushleft} + +\subsection{{\mdseries% +\texttt{\textbackslash noeveryparguillemets}}}\label{noeveryparguillemets} +Cette option permet de gérer correctement les citations de second +rang mais elle est tout à fait contraire + au processus \verb|\everypar| cité précédemment grâce auquel + les guillemets sont générés automatiquement à chaque +début de paragraphe. +Voici ce que produit l'option {\em normale\/} +\texttt{\backslash every\-par\-guil\-lemets} sur le paragraphe suivant : + +<< Tout le monde s'accorde à trouver légitime la division : +{\tt extra-ordinaire}. Le cas des mots com\-posés est le seul +à rencontrer +cette unanimité. Dans les autres, les opinions sont très partagées. + Frey est le plus catégorique : il n'admet de division selon la formation +que pour des mots de composition complètement française, et la rejette +sinon... Le {\em Code typographique}, tout en adoptant ce même point + de vue << ... [reconnaît] néanmoins que certains auteurs de travaux +scientifiques préfèrent la division éty\-mologique +qui fait ressortir + la racine grecque ou latine. >> Quant à Gouriou, il avait écrit : +<< On préfèrera cependant garder la coupure étymologique + chaque fois que les composants sont {\em aisément} reconnaissables. >> +(L'italique est de Gouriou.) +\marginpar{{\footnotesize Ici on a triché avec des} \texttt{\backslash!}} +\!Telle \!est aussi \!l'opinion \!de \!Girodet >>. + +Et voici l'effet de \verb|\noeveryparguillemets| : +\noeveryparguillemets + +<< Tout le monde s'accorde à trouver légitime la division : +{\tt extra-ordinaire}. Le cas des mots com\-posés est le seul +à rencontrer +cette unanimité. Dans les autres, les opinions sont très partagées. + Frey est le plus catégorique : il n'admet de division selon la formation +que pour des mots de composition complètement française, et la rejette +sinon... Le {\em Code typo\-graphique}, tout en adoptant ce même point + de vue << ... [reconnaît] néanmoins que certains auteurs de travaux +scientifiques préfèrent la division éty\-mologique +qui fait ressortir + la racine grecque ou latine. >> Quant à Gouriou, il avait écrit : +<< On préfèrera cependant garder la coupure étymologique + chaque fois que les composants sont {\em aisément} re\-connaissables. >> +(L'itali\-que est de Gouriou.) +Telle est aussi l'opinion de Girodet >>. +\everyparguillemets + +Il faut noter que cette option impose que le paragraphe commence et se +termine par des guillemets. % sinon code \guillpar et \parguill +C'est pour cela que nous n'avons pas mis cette option par défaut. + +\subsubsection{Un test assez méchant} +Voici un exemple d'utilisation dans un environement \verb|quotation|% +\footnote{Nous avons introduit \texttt{\backslash moretolerance} +pour obtenir une composition correcte.} : +\begin{quotation} +\moretolerance\moretolerance\moretolerance +<< Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\end{quotation} + +Le même exemple sans \verb|quotation| : + +<< Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste à con\-naître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\bigskip + +\noeveryparguillemets +Puis avec \verb|\noeveryparguillemets| (c.-à -d. sans \verb|quotation|) : + +<< Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste à connaî\-tre la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la % En cas d'arrêt à cet endroit : le format +fonte. \endguillemets%.fmt utilisé n'est prob. pas ds le bon codage ! +\bigskip + +Et enfin avec \verb|quotation|, voilà +ce que cela peut donner\label{quotation} : +%%% La \marginpar suivante pose un pb de ``Lost Float'' qd elle est +%%% placee plus loin, pourquoi ? +\marginpar{{\footnotesize Il y a ici un problème à étudier en 2 colonnes !}} +\begin{quotation} +<< Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consis\-te à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. + \endguillemets +\end{quotation} +\everyparguillemets +On notera ici les espaces inter-mots beaucoup plus {\em tolérants}. C'est +la seule solution trouvée pour arriver à imprimer +quelque chose d'à peu +près correct en double colonnage. + +Essayons les \verb|\og| et \verb|\fg| ainsi :\\ +\verb|Ceci \og est entre guillemets \fg.|\\ +Ceci \og est entre guillemets \fg. + + +\vfill +Terminons la page en anglais pour tester le haut de page. Les guillemets +doivent être bons avec le codage T1. + +\english +Let's complete the page with english text in order to test and show +how will be printed the header. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\onecolumn +\subsubsection{Même test en \mdseries\texttt{\textbackslash onecolumn}} +Voici un exemple en environement \verb|quotation| : +\begin{quotation} +<< Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\end{quotation} + +Le même exemple sans \verb|quotation| : + +<< Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\bigskip + +\noeveryparguillemets +Puis avec \verb|\noeveryparguillemets| (sans \verb|quotation|) : + +<< Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\bigskip + +Et enfin avec \verb|quotation| : +\begin{quotation} + \let\bkORI\break + %\def\break{\bkORI\hbox to 0pt{/}}% for debug + %\ancientguillemets% for debug +<< Je ne peux mieux faire que de citer la définition qu'a donné +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\end{quotation} +\everyparguillemets + +\subsubsection{Test de << stretchability >>} + +Les espaces doivent être également répartis sur la ligne : + +\medskip +\hbox to \hsize{etiord-gauche\footnote{En plain \TeX{} l'espacement est ici +\label{etiord} + curieusement incorrect ! ...} + << centre-ertnec >> \hbox{}\footnote{... alors qu'il faudrait +la même répartition + de l'espace.}% + ehcuag-droite} +\medskip + +\subsection{Test des commandes \mdseries\texttt{\textbackslash ifnum}} + +\ifnum 1 < 3 1\verb| < |3 est VRAI, bien sûr ! + \else 1\verb| < |3 est FAUX ! \fi +comme +\ifnum 3 > 1 3\verb| > |1 est aussi VRAI, bien sûr ! + \else 3\verb| > |1 est FAUX ! \fi + +\medskip + +\subsection{Test des commandes \mdseries\texttt{\textbackslash everypar}} + +{J'ai codé dans cette section \verb|\everypar{$++\,$}| : \everypar{$++\,$} + +Paragraphe 1 << citation niveau 1 + +Paragraphe 2 << citation niveau 2 + +Paragraphe 3 fin citation niveau 2 >> puis fin niveau 1 >> + +Paragraphe 4} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage% tjrs en 1 colonne +\hbox{}\ifx\itshape\undefined\else% avoid old frencht crash +\subsection{Test de fermeture prématurée} + +Il arrive que les guillemets soient fermés dans un environnement +plus intérieur qui n'apparie donc pas correctement les blocs. +Voici un exemple d'utilisation : + +\begin{verbatim} +Maître Corbeau dit à son clerc : << \itshape Cher collègue, + +\begin{itemize} +\item Ah que vous êtes joli ! +\item Ah que vous me semblez beau ! >> \upshape +et s'enfuit de ce pas... +\end{itemize} + +\endguillemets +\textsf{Quel homme étrange, n'est-ce pas ?} +\end{verbatim} + +Voici ce que cela donne comme composition : + +\medskip +\bgroup% for frenchle +Maître Corbeau dit à son clerc : << \itshape Cher collègue, + +\SmsG% +\begin{itemize} +\item Ah que vous êtes joli ! +\item Ah que vous me semblez beau ! >> \upshape +et s'enfuit de ce pas... +\end{itemize} +\FmsG% + +\endguillemets +\egroup% for frenchle +\textsf{Quel homme étrange, n'est-ce pas ?} + +\medskip +On notera plusieurs choses. Premièrement il a fallu +rétablir \verb|\upshape| après les guillemets fermants, +du fait du mauvais appariement des blocs. Ensuite un message +sort indiquant une fermeture prématurée des guillemets. +Cette fermeture restant incomplète on note enfin que l'on a forcé +un \verb|\endguillemets| pour clore proprement et définitivement +l'environnement guillemets. + +\subsection{\mdseries\texttt{\textbackslash everyparguillemetsremoved}} +\label{noeveryparguillemetsremoved} +Dans le même exemple nous pouvons aussi interdire la génération +automatique des guillemets ouvrants à chaque début de paragraphe ; +il faut alors saisir \verb|\everyparguillemetsremoved| : +\everyparguillemetsremoved + +\medskip +\bgroup% for frenchle +Maître Corbeau dit à son clerc : << \itshape Cher collègue, + +\SmsG% +\begin{itemize} +\item Ah que vous êtes joli ! +\item Ah que vous me semblez beau ! >> \upshape +et s'enfuit de ce pas... +\end{itemize} +\FmsG% + +\endguillemets +\egroup% for frenchle +\textsf{Quel homme étrange, n'est-ce pas ?} + +\medskip +Il suffit ensuite de rétablir \verb|\everyparguillemets|. +\everyparguillemets +\fi% ifx \itshape + +\subsection{Test de l'espacement} +{\def\marque#1{\vbox{\halign{\hfil##\hfil\cr + \llap{\vrule width4.5mm height.4pt}% + \rlap{\vrule width4.5mm height.4pt}\cr + \noalign{\vskip-1cm}% + #1\cr}}} + \Huge + \def\ecartement{\fbox{a << \marque{\hbox{$|$}} >> b}} + \ecartement +} +% Difference de taille a voir entre les deux %%%%%% +\setbox7\hbox{\leftguillemets\ X} +\setbox8\hbox{X\ \rightguillemets} +\SmsG% +\message{Taille des boites page \thepage\space \string: + \the\wd7=\string?=\the\wd8} +\FmsG% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\newpage +\hbox{} +\vfill +\centerline{\Large Page intentionnellement laissée blanche} +\vfill +\twocolumn +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage + +\subsection{Guillemets interrompus} +Une citation peut être en anglais et donc se commencer par +\vers|<< \|\vers|english| et se terminer par \vers|\|\vers|french >>|. Ce cas +ne doit plus générer de message +{\em fermeture de guillemets non ouverts} ! +Voici le test, réalisé ici +tout d'abord avec l'environnement \vers|nonfrench| : + +\medskip +1 \fbox{<< \begin{nonfrench}% LaTeX keeps space + Text in English + \end{nonfrench}% LaTeX keeps space + >>} + + +\medskip +Puis avec : \\ +\verb|\begin{english}| ... \verb|\end{english}| : + +\medskip +% bypass here our TeX--XeT emulation to avoid message: english environment +% ended by \end{guillemets} +\def\temp{\begingroup} +\ifx\beginL\temp +\else +{% local redef of english for plain and our specific test file + \ifx\undefined\englishORI\else\let\english\englishORI\fi% +2 \fbox{<< \begin{english}% LaTeX keeps space + Text in English + \end{english}% LaTeX keeps space + >>} + +\medskip +Et enfin avec \verb|\|\verb|english| ... \verb|\endenglish| : + +\medskip +3 \fbox{<< {\csname english\endcsname + Text in English + \csname endenglish\endcsname}% space here to remove + >>} +}% local redef of english for plain test +\fi + +\medskip +Ceci avait aussi pour but de tester ces possibilités de +changement de langage et de vérifier l'espacement qui +devrait être ainsi : + +\medskip +0 \fbox{<< Text in English >>} + +\noenglishdoublequotes +\subsection{`` {\mdseries\texttt{\textbackslash noenglishdoublequotes}} ''} + +Nous avons mis la commande \vers|\noenglish|\-\vers|doublequotes| juste avant +le titre de section de façon à remplacer les << quotes >> anglaises +par des guillemets français dans ce titre. +Il s'agit de vérifier aussi que la génération des fichiers auxiliaires +\verb|.aux| et \verb|.toc| ne pose pas de problème lorsque ces fichiers +sont réutilisés. Bien sûr, si cette option n'est pas activée pour tout le +document, comme ici, on ne retrouvera pas les guillemets français +dans la table des matières. + +\noenglishdoublequotes + +\english% histoire de changer de langue ? +\french +%\newpage +\subsection%{<< no-french guillemets >>} + {\mdseries\texttt{\textbackslash nofrenchguillemets}} +En codant \verb|\nofrenchguillemets| +\nofrenchguillemets on n'utilise plus +les guillemets programmés dans l'extension {\tt french}. Si on les utilise +malgré tout, le résultat dépendra de la police. Ici nous utilisons la +police \fontname\font{} et nous obtenons : + +<% + < en 7-bits >% + > + +et aussi : + +<< en 8-bits >>. + +Réactivons maintenant les guillemets avec la commande +\verb|\frenchguillemets| +\frenchguillemets et faisons le même test : + +<% + < en 7-bits >% + > + +et aussi : + +<< en 8-bits >>. Voyez-vous ? + +Vous ne voyez rien car \XeLaTeX{} ne fait pas de différence. Est-ce mieux +que Pdf\LaTeX{} ? +\vfill +\subsection{Haut de page+guillemets} + +\subsubsection{En 8-bits} +Il ne devrait pas y avoir de problème du tout. +Car, puisqu'il s'agit d'un guillemet en 8-bits, cela doit +être forcément un vrai guillemet français. Mais, malheureusement, +{\em la solution pour l'implémenter n'est pas encore trouvée avec +le codage OT1 ; mais avec le codage TU de XeTeX il y a une possibilité, +voir ci-dessous}. +Le codage de fonte de ce document imprime : +\nonfrench <% + < >% + >% +\endnonfrench{} + (doit être parfait en T1 et qui l'est aussi ici sous Xe\LaTeX). + +\subsubsection{En 7-bits} +En codage OT1 les guillemets 7-bits de haut de page ne peuvent être +bons sur cette page + {\bf QUE} parce que nous avons terminé la +page en français, sinon nous aurions eu : +\ifx\textexclamdown\undefined + \def\textexclamdown{¡}\def\textquestiondown{¿} +\fi +\textexclamdown\textexclamdown{} et \textquestiondown\textquestiondown. + +\textbf{Remarque :} OT1 concerne une autre version de ce document +qui était utilisée bien avant \XeLaTeX. + \subsubsection{En Utf8 avec \XeLaTeX} +Pour des guillemets corrects avec \XeLaTeX{} et source en Utf8, +je propose cette insertion dans le source.\\ + \verb| \catcode\char|«\verb|\active|\\ + \verb| \catcode\char|»\verb|\active|\\ + \verb| \def|«\verb|{\guillemotleft}|\\ + \verb| \def|»\verb|{\guillemotright}|\\ + +Ce sont les définitions ici utilisées dans ce document. +Elles font désormais partie du paquet e-French par +le petit module \emph{efrenchu.tex} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\hbox{ }\NL{24} + +\subsection{Guillemets et maths} + +L'équation suivante ne doit plus produire le fameux message : + +{\tt ! Argument of \backslash \string @genG % string pour amslatex + has an extra % { pour emacs + $\}$% c'est un \delimiter qui pose pb tq avec frencht d'ou mode math +.} + +$$U^{k+1}=U^{k}- {< g_{k},d_{k} >}$$ + +\section{D'autres guillemets}\label{autres} +Avec \FP\ il est possible de substituer automatiquement aux +guillemets `anglais' la forme \noenglishquote `que voici' en donnant la +sous-option\\ \verb|\noenglishquote|. + +Mais attention, les apostrophes disparaissent +comme dans : {\em il s'agit ici de l'exemple} +\englishquote qui aurait dû être imprimé : +{\em il s'agit ici de l'exemple}. +Un usage intensif de cette option est plutôt à déconseiller. + +\newpage +\english +\section{French guillemets} +Using french guillemets in an english document (\verb|<<| and \verb|>>|) will +give (depending of font encoding) that: << and >>, it is normal! + +As you can look in the previous columns, french guillemets have specific +rules. They are used for quotation when an author is cited or each time an +emphasis is needed. Normally, italic is not used inside a quoted french +text, excepted when you really want to show some wording. + +When opened, each paragraph of the quoted text will start left + with the opening french guillemets. + +Another quotated text can take place inside a first level. This second level +citation is also very specific. Each line must start with guillemets. + +The style designer, from time to time, chose to apply here an ancient rule +by putting here closing guillemets. + +The technical tools involved in \FP\ + disallow to have at the same time +the \verb|\everypar| possibility and the second level mechanism. + +\subsection{Guillemets and maths} + +The following equation is always correct: + +$$U^{k+1}=U^{k}- {< g_{k},d_{k} >}$$ + +and never produce an error message. +\NL1 + +\section{Other guillemets} +With \FP\ it is possible to replace english guillemets by +diacritic caracters. But, be careful, all apostrophes will be diacritics too. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{Trois petits points} +Les points de suspension sont : ... et non pas ceux de \TeX{} : $\ldots{}$ +\noTeXdots +En codant \verb|\noTeXdots| les commandes \verb|\dots| ou \verb|\ldots| de +\LaTeX{} donneront : $\ldots{}$ Mais l'option par défaut a été +volontairement maintenue au standard (\verb|\TeXdots|) puisqu'il suffit +de ne pas les utiliser.\TeXdots + +\section{Crochets} +IBM, en son temps, avait créé l'EBCDIC dans lequel ne figurait pas +les crochets ([ ]). C'est la raison pour laquelle les utilisateurs IBM +ont parfois substitué $<$ et $>$ aux crochets. La sous option +\verb|\EBCDICbrackets| \EBCDICbrackets +permet de les remplacer comme ici <automatiquement> par des crochets. +Mais faites attention, les doubles guillemets +\verb|<|\verb|<| et \verb|>|\verb|>| % pour eviter la conversion 8bits + ne donneront jamais des crochets mais << et >> +(sauf en mode \verb|verbatim|). On peut en général +se contenter de \verb|< <| et \verb|> >| pour obtenir < < et > >. +On revient à la situation antérieure en tapant la commande suivante : +\verb|\normalbrackets|\normalbrackets. + +\section{Débordements} +Nous venons de choisir l'option d'indication de débordement de ligne +\verb|\overfullhboxmark| et nous voyons son +effet lorsque la ligne ne peut être coupée grâce à l'impression +de la petite boîte noire. +%(cf. page \pageref{debordement}). +Cette option est activée au minimum pour une page entière. +Ne pas spécifier l'option et son contraire sur la même page sinon +l'effet est inchangé. + +\labelsinmargin +\section{\mdseries\texttt{\textbackslash labelsinmargin}}% +\label{labels: in: margin} +\FP\ offre la possibilité, comme cela a été demandé +à partir de cette section, d'imprimer dans la marge le libellé des +étiquettes utilisées dans les ordres \verb|\label|. +Cette option, utilisable +aussi en dehors du français, est la suivante : +\verb|\labelsinmargin|. + +\newpage\english +\section{Three dots} +Usual and common \TeX{} and \LaTeX{} dots are not french dots. +\NL4 + +\section{Brackets} +An option is offered to replace \verb|<| and \verb|>| by brackets. +\NL{11} + +\section{\mdseries\texttt{\textbackslash overfullhboxmark}} +The command \verb|\overfullhboxmark| print a black +box where your have an overfull \verb|hbox| i.e.\ when a line can't be +hyphenated. The default is \verb|\nooverfullhboxmark|. +\NL4 + +\section{Labels in margin}\label{labels are in margin} +An option allow you to print the labels you use in a page. These labels are +printed in margins. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{Des points sur...} +Inutile de mettre les points sur les i quand on accentue un i. Tout bon +éditeur de texte doit faire ce travail pour vous. Sinon il existe la +sous-option \verb|\idotless| qui produira \idotless +\let\XX\^% Pour éviter une traduction éventuelle en 8 bits +\XX{i} si on lui demande d'imprimer \verb|\^i|. +\iwithdot La valeur par défaut +dans \FP\ est \verb|\iwithdot| qui donnera malgré tout de +bons i accentués avec ML\TeX{} (î) s'ils sont saisis directement en 8 +bits (vérifiez dans votre fichier source). + +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding +\section{Ponctuation et mode \protect\linebreak % SPECIAL FONTES EC REELLES + mathématique} +\else +\section{Ponctuation et mode\\ mathématique} +\fi} +Il s'agit de vérifier que les modifications introduites +par l'extension \FP\ +ne posent aucun genre de problème en mode mathématique. +\\ Nous définissons une macro \verb|\test| : +\\ \verb|\def\test#1{#1}|\def\test#1{#1} +\\ pour voir si le mode mathématique peut être appelé +sans problème en +argument de macro-instructions. L'appel de \verb|\test{$x''$}| ne doit +pas poser de problème% +\iflatex +, ni même \verb|\texttt{|\-\verb|[$x''=0$]}| +\\ Ainsi : \verb|\texttt{[$x''=0$]}| +\\donne : \texttt{[$x''=0$]} et +\else% +. \\Ainsi : +\fi +\\ \verb|$A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$| +\\ \verb|\test{$A':B''_1<C_{d'}$}| +\\donne : $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{donne :} \test{$A':B''_1<C_{d'}$} +\\Avec \verb|\noenglishquote|\noenglishquote{} cela... +\\donne : $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{donne :} \test{$A':B''_1<C_{d'}$} +\englishquote +\\ puis avec \verb|\noenglishdoublequotes| \noenglishdoublequotes et +`` mise en vedette '' : +$$% \begin{displaymath} + A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ; +$$% \end{displaymath} +$$% \begin{displaymath} + \test{A':B''_1<C_{d'}} +$$% \end{displaymath} +De même : +\begin{verbatim} +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)} +\end{verbatim} +doit s'imprimer :\\ +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)}\\ +sans produire le message d'erreur << Fermeture de guillemets non ouverts ! >>. +\englishdoublequotes + + +\newpage\english +\section{An \i dotless} +Everybody knows that a french ``{\em i circonflexe}'' has no dot on it. +(In my opinion it is a \TeX{} bug to leave the dot when a diacritic is +put on.) To suppress the dot automatically the best way is to use a well +programmed text editor. \FP\ offers another opportunity with +\verb|\idotless|. + +\NL3 + +\section[Math mode and punctuation]{Math mode and \newline punctuation} +Here we verify that french modifications about punctation +does not introduce any problem in printing mathematics. +\\ We define a new macro \verb|\test| : +\\ \verb|\def\test#1{#1}|\def\test#1{#1} +\\ in order to see if there is no more problem when passing maths +inside a macro argument. Calling \verb|\test{$x''$}| must not +introduce any problem% +\iflatex +, as well as \verb|\texttt{|\-\verb|[$x''=0$]}| +\NL1\\So: \verb|\texttt{[$x''=0$]}| +\\gives: \texttt{[$x''=0$]} and +\else% +. \NL1\\So: +\fi +\\\verb|$A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$| +\\\verb|\test{$A':B''_1<C_{d'}$}| +\\ gives: $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{gives:} \test{$A':B''_1<C_{d'}$} +\\With \verb|\noenglishquote|\noenglishquote{} it$\ldots{}$ +\\gives: $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{gives:} \test{$A':B''_1<C_{d'}$} +\englishquote +\\ and with \verb|\noenglishdoublequotes|\noenglishdoublequotes{} +in ``display'' math mode: +$$% \begin{displaymath} + A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ; +$$% \end{displaymath} +$$% \begin{displaymath} + \test{A':B''_1<C_{d'}} +$$% \end{displaymath} +\englishdoublequotes +Also: +\ifx\documentclass\undefined\\ % Still Plain! +\else\\[-2\baselineskip] % to keep the same spacing as in French +\fi +\begin{verbatim} +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)} +\end{verbatim} +must print:\\ +%\SmsG% +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)}\\ +%\FmsG% +without producing the error message: +``Fermeture de guillemets non ouverts !''. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +Pour ma part lorsque je désire des crochets que je n'ai pas +au clavier, je préfère taper :\\ +\verb|{\tt CALL SUBR(<iopt<,ilopt> >)}| et utiliser +l'option \verb|\EBCDICbrackets|\EBCDICbrackets{} :\\ +{\tt CALL SUBR(<iopt<,ilopt> >)} + +Cette option n'a pas d'effet en mode mathématique : +$$ 1233 < 1234 <% + < 1235 >% + > 1234 > 1233 $$ +\normalbrackets + +\makeatletter% we should use \frac with AmS +\ifx\RIfM@\undefined%\ifx\csname amsmath.sty\endcsname\relax + \long\def\text#1{#1}\long\def\frac#1#2{{#1\over#2}} +\fi +\makeatother + +Vérifions aussi +($x < {\frac{1}{3}} < {\frac{1}{2}} > {\frac{1}{4}}$) : +$$x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4} $$ +puis aussi : + + \text{\quad pour $|y| < \frac{111}{444}$} + +\bigskip +La double ponctuation ne doit avoir aucun effet +(visible) dans une formule en mode +mathématiques, est-ce bien le cas sur l'exemple ci-dessous : + +{\LARGE $$a := b, (c!n=m) \textrm{ ; vrai ?}$$} + +On notera que la partie texte de la formule a été saisie avec la +commande : \\ +\verb|\textrm{ ; vrai ?}|\\ +et que l'espacement français y a été appliqué. + +\iflatex +\subsection{Le cas de la virgule} +En standard \AllTeX{} (ou alors avec l'option spéciale +\verb|\regularmathcomma| de \FP) le traitement de la virgule +est spécifique, ainsi quand on tape ce qui suit en mode +mathématique de mise en valeur : +\regularmathcomma% +\begin{versatim} +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{€}$$ +\end{versatim} +on obtient des espacements après les virgules, +qu'il y ait ou non des espaces dans le source \TeX\ : +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{€}$$ +(ce qui montre une anomalie dans la composition +des nombres relatifs) +\frenchmathcomma +\fi + +\newpage\english +When I have no brackets on my keyboard I prefer to type:\\ +\verb|{\tt CALL SUBR(<iopt<,ilopt> >)}|\\ using + the option \verb|\EBCDICbrackets| but the result in english +remains unchanged\EBCDICbrackets{}:\\ +{\tt CALL SUBR(<iopt<,ilopt> >)} + +And within math mode: +$$ 1233 < 1234 <% + < 1235 >% + > 1234 > 1233 $$ +\normalbrackets + +\makeatletter% we should use \frac with AmS +\ifx\RIfM@\undefined%\ifx\csname amsmath.sty\endcsname\relax + \long\def\text#1{#1}\long\def\frac#1#2{{#1\over#2}} +\fi +\makeatother + +Let's verify also ($x < {\frac{1}{3}} < {\frac{1}{2}} > {\frac{1}{4}}$) : +$$x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4}$$ +and: + + \text{\quad pour $|y| < \frac{111}{444}$} + +\bigskip +The ``double punctuation'' should not have any effect +in maths, which is obviously the case in the following +English example: +\NL1 + +{\LARGE $$a := b, (c!n=m) \textrm{ ; vrai ?}$$} + +Though the text part of the formula has been typed +via a command: \\ +\verb|\textrm{ ; vrai ?}|\\ +the french spacing doesn't apply here. + +\iflatex +\subsection{The comma case} +With \AllTeX{} standard (or with the special \FP\ +\verb|\regularmathcomma| the processing of comma is really specific. +So, when you type in the following in display math mode: +\regularmathcomma% +\begin{verbatim} +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ + 1\,500,00\,\textrm{€}$$ +\end{verbatim} +you will get thin spaces after the commas, +no matter spaces are given or not in the \TeX\ source: +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{€}$$ +(which shows a french typesetting error for +the relative numbers). +\frenchmathcomma +\fi% + +\iflatex\french +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Par contre avec \FP\ on n'obtient +aucun espacement supplémentaire : +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{€}$$ +cela est dû à l'option \verb|\frenchmathcomma| qui est +activée par défaut avec \FP. +Mais cela montre alors une anomalie de composition +dans les listes $(x,y,z)$. + +Si l'on veut des espaces il faut alors les indiquer +explicitement, comme cela est l'usage, plus +généralement, en mode mathématique : +\begin{versatim} +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{€}$$ +\end{versatim} +ce qui donnera : +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{€}$$ + +\medskip + +On notera que \FP\ obéit à l'extension \texttt{icomma} +lorsque cette dernière est chargée avant \FP, mais +seulement en français. + + +\newpage\english +With the \FP\ package there is no space added +at all: +\frenchmathcomma% +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{€}$$ +this is due to the option \verb|\frenchmathcomma| which is +defaultly activated in the \FP\ package. +People will then distinguish a typesetting error +in the lists $(x,y,z)$. + +If you want spaces you should then give them to \TeX\ +explicitely, as usually done, more generally in math mode: +\begin{verbatim} +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ + V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ + 1\,500,00\,\textrm{€}$$ +\end{verbatim} +which will give: +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{€}$$ +\fi + +You should notice that \FP\ respect the choice of +the \texttt{icomma} package when that last one is loaded before +\FP; but it only applies in French. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{Mon antislash est \mdseries\texttt{\backslash}} + +L'antislash n'existe pas dans toutes les polices en OT1. +Que vous utilisiez \verb|\backslash| ou \verb|\textbackslash| +vous obtiendrez la même chose, ainsi +en romain droit on obtient : + +textbackslash=\textbackslash + +backslash=\backslash + +\noindent +mais avec la fonte tt on obtient : + +{\tt +textbackslash=\textbackslash + +backslash=\backslash +} +\NL2 + +\section{Notes de bas de page} + +\iflatex\makeatletter\xdef\countSAVED{\the\c@footnote}\makeatother\fi +\long\def\XX{% + Numérotation normale\footnote{Une note normalement numérotée.}. + {\setcounter{footnote}{0} + \renewcommand{\thefootnote}{\fnsymbol{footnote}} + + Voici une note\footnote{Première note.} + puis une autre\footnote{Deuxième note.} + puis encore une autre\footnote{Troisième note.} + }} + +Nous comparons ici la composition des notes de bas de page +(avec et sans \verb|\fnsymbol|) +dans une langue et dans l'autre. Voyons ce que cela donne : + +\XX + +\newpage\english +\section{My antislash is \mdseries\texttt{\textbackslash}} + +The antislash glyph doesn't exist in all OT1 font. +Whatever you use, \verb|\backslash| or \verb|\textbackslash| +you will obtain the same output, so +in upright roman you obtain: + +textbackslash=\textbackslash + +backslash=$\backslash$ + +\noindent +but with the tt font you obtain: + +{\tt +textbackslash=\textbackslash + +backslash=$\backslash$ +} + +\noindent +but \verb|\backslash| is only available in +math mode. + +\section{Compared footnotes} + +We compare the typesetting of footnotes +(with and without \verb|\fnsymbol|) +in one language versus the other. Let's look at them. + +\iflatex\makeatletter\c@footnote=\countSAVED\makeatother\fi + +\XX +\iflatex\makeatletter\c@footnote=\countSAVED\makeatother\fi +\addtocounter{footnote}{1} +\NL1 + +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage + +\section{\mdseries\texttt{\textbackslash guillemetsinarrays}} + +Avec \FP\ l'utilisation de guillemets à la +française en mode texte dans les environnements \texttt{array} ou +\texttt{eqnarray} est possible +mais il est nécessaire de protéger les opérateurs +inférieur (\texttt{<}) et supérieur (\texttt{>}) lorsqu'ils terminent +une colonne. On rajoute alors une paire d'accolades ou \verb|\relax| +pour terminer la macro-commande : +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& << >> &c\\ +<{}& \textrm{<< text >>}&c +\end{array} +$ +\end{verbatim} + +\noindent ce qui donne : + +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& << >> &c\\ +<{}& \textrm{<< text >>}&c +\end{array} +$ + +\medskip +On peut éviter d'avoir à modifier des tableaux existants et dans ce +cas on codera \verb|\no|\-\verb|guil|\-\verb|lemetsinarrays| : + +\begin{verbatim} +\noguillemetsinarrays +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & << >> &c\\ +< & \textrm{<< text >>}&c +\end{array} +$ +\end{verbatim} + +\noindent ce qui donne alors : + +\noguillemetsinarrays +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & << >> &c\\ +< & \textrm{<< text >>}&c +\end{array} +$ +\guillemetsinarrays% reset default + +\newpage\english +\section{Guillemets in arrays} +The \FP\ package allows people to print french guillemets +in \texttt{array} environments (but in text mode). This usually breaks +the code for \texttt{<} or \texttt{>} when they finish an array slot. +So you should protect them; like this: +\NL2 + +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& \textrm{<< text >>}&c +\end{array} +$ +\end{verbatim} +\NL1 + +\noindent which gives: + +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& \textrm{<< text >>}&c +\end{array} +$ +\NL1 + +\medskip + +One can avoid to modify existing arrays and then just say +\verb|\noguillemetsinarrays| but this command is not +interesting in English because the problem doesn't exist +at all: + +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & \textrm{<< text >> &c +\end{array} +$ +\end{verbatim} +\NL1 + +\noindent gives the following result: + +\def\GOfrench{\let\ifCLA\iffalse}% To allow dmy and frencht to compile +\ifx\ifCLA\undefined\expandafter\GOfrench\fi% without error. +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +< &b\\ +a & b &<\\ +a & +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +> &c\\ +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +< & \textrm{<< text >>}&c +\end{array} +$ +\NL1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\noguillemetsinarrays% for continuation of column +Cette commande est aussi valable pour les environnements +\texttt{eqnarray} : + +\begin{eqnarray} +a & < &b\\ +a & > &c\\ +< & << >> &c\\ +< & \textrm{<< text >>}&c +\end{eqnarray} + +Pour terminer je rétablis la valeur par défaut : +\verb|\guillemetsinarrays| +\guillemetsinarrays +et si j'essaye le même exemple j'obtiendrais +le message : \\ +{\makeatletter\let\@PreserveBraces={% uggly hack for plain +\vers|! Argument of \@PreserveBraces has an|\\ +\vers|extra }.| +}% closing hack. + +\section{Guillemets verbatim} + +Avec l'option \verb|\nofrenchguillemets| il est possible +--~si \FP\ travaille en codage de fonte du genre \texttt{T1} +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding\else +(mais ca ne semble pas être le cas ici)\fi}% +~-- +\nofrenchguillemets +d'imprimer des guillemets 8-bits en verbatim : \verb|<< >>|. +\frenchguillemets + +\iflatex +\section{Environnement guillemets exclus} + +\begin{versatim} +\guillemets{} Je me suis dit que : +<< avec l'option [...] les guillemets +sont inopérants. \endguillemets{} +\end{versatim} +\SmsG +\noeveryparguillemets +\guillemets{} +\verb|[\guillemets{}]| Je me suis dit que : +<< avec l'option \vers|\noevery|\-\vers|par|\-\vers|guillemets| +on ne doit pas avoir un environnement qui se termine avant la fin +du paragraphe. C'est pourquoi l'environnement \texttt{guillemets} +n'est plus autorisé dans ce cadre. +Désormais un message est émis et ces environnements +guillemets sont inopérants. \endguillemets{} + +On note que \verb|\guillemets{}| n'a aucun effet visible +et que le début de paragraphe est forcé aux premiers +caractères-guillemets ouvrants qui suivent. Le +\verb|\endguillemets{}| de fin d'environnement ferme cependant +le paragraphe. + +\guillemets [\verb|\guillemets{}|]\! +Ces environnements exclus dans le cadre de cette option + peuvent être de premier ou +/\guillemets{} deuxième \endguillemets{}/ niveau +comme ici (slashs). [\verb|\endguillemets{}|] +\endguillemets{} + +\FmsG +\frenchguillemets +\fi% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\english +Notice that with standard \LaTeX\ you obtain a message +saying that \verb|\guillemotleft| and \verb|\guillemotright| +are invalid in math mode when you try to use guillemets +in an \texttt{array} environement. +\NL{9} + +\smallskip + +\section{Verbatim Guillemets} + +The 8bit french guillemets chars printed within +a verbatim environnement give here: \verb|<< >>| + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Utilisation de la \mdseries\texttt{toc}} + +Il n'est pas prévu de pouvoir composer une table des matières ou un +sommaire dans plus d'une langue. +On notera que \verb|\sommaire| est un apport de \FP. + +\section{Fichiers {\mdseries\texttt{lof}} et {\mdseries\texttt{lot}}} +On vérifie ici que la ponctuation française n'a pas créé +d'ennui particulier. +Nous avons laissé en blanc la figure \ref{x<<:;!?>>x} +qui n'est qu'un simple +test. De même le tableau \ref{y`<<:;!?>>'y} n'est là que pour +créer une entrée dans la liste des tableaux. + +Le {\em caption} de la figure +\ref{x<<:;!?>>x} + doit apparaître com\-me ceci : + {\it << essai >> ; 2 cm ! pourquoi pas ?} +\begin{figure}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\%\vspace*{2cm} +\ \\ +\ Peu importe la figure...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{<< essai >> ; 2 cm ! pourquoi pas ? + \protect\\ (cf. aussi le tableau \ref{frenchdactylo})} +\label{x<<:;!?>>x} +\end{figure} + +Le {\em caption} du tableau +\ref{y`<<:;!?>>'y} + doit être comme ceci : +{\it ` << essai >> ; 2 cm ! pourquoi pas ? '} +\begin{table}[h] +\caption{` << essai >> ; 2 cm ! pourquoi pas ? ' + \protect\\ (cf. aussi le tableau \ref{frenchdactylo})} +\label{y`<<:;!?>>'y} + +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau\footnote{Une note de tableau.}...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +On notera les libellés ({\sc Fig.} et {\sc Tab.}) plus confor\-mes à +l'usage français. Ne pas oublier non plus que les titres de tableaux sont +toujours placés, en français, avant ceux-ci contrairement aux figures. + +\FP\ ne prévoit pas que l'on puisse composer une +partie des tables des figures (ou tableaux) en français et une autre +en anglais par exemple. Les fichiers \verb|.lof| et \verb|.lot| seront +donc composés entièrement dans la langue présélectionnée. + +\newpage\english +\section{{\mdseries\texttt{toc}} file use} +No facility is given to typeset the \verb|.toc| in various languages. + +Notice that \verb|\sommaire| is a new command brought up with this +package. + +\section{{\mdseries\texttt{lof}} and {\mdseries\texttt{lot}} files} +Same test in English just to verify that our french modifications +does not affect the text in English. + +You will notice, of course, that the caption names are re-established +to their original values ({\bf figure} and {\bf table}). + +The following figure (not referable) %(\ref{ex<<:;!?>>ex}) +caption must look like: +<< essai >>; 2 cm! Why not? +\begin{figure}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter how is the figure$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{<< essai >>; 2 cm! Why not? + \protect\\ (cf. also the table \ref{frenchdactylo})} +%\label{ex<<:;!?>>ex}% produit un missing \endcsname +\end{figure} + +The {\em caption} of the table (not referable) %\ref{ey`<<:;!?>>'ey} +must look like: +` << essai >>; 2 cm! Why not? ' +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter how is the table\footnotemark% \footnotetext est perdu ! + $\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{` << essai >>; 2 cm! Why not? ' + \protect\\ (cf. also the table \ref{frenchdactylo})} +%\label{ey`<<:;!?>>'ey}% generates missing \endcsname +\end{table}\footnotetext{A note from a table.} +\NL1 + +Notice that we have here the standard caption names used by \LaTeX{}. + +You can see in the French column the specific labels and places of caption +titles (under the figure but over the table). + +Don't try to compose \verb|.lof| and \verb|.lot| files in more than one +language, it's not designed in this (stupid?) way! + +\french +\begin{table*}[tb] +\caption{` << essai >> ; 2 cm ! pourquoi pas ? ' + (cf. aussi le tableau \ref{frenchdactylo})} +\label{2`<<:;!?>>'2} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau sur deux colonnes% +\footnote{Une note de tableau.}...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table*} + +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Encore un tableau...} +Mais celui-ci est sur deux colonnes si l'option +\verb|twocolumn| est active. Vérifions simplement +que le traitement est le même qu'en une seule +colonne. + +Le {\em caption} du tableau +\ref{2`<<:;!?>>'2} + doit être comme ceci : +{\it ` << essai >> ; 2 cm ! pourquoi pas ? '} + +\section{\sloppy Encore {\mdseries\texttt{\textbackslash labelsinmargin}}} + +À nouveau nous utilisons \verb|\labelsinmargin| +\labelsinmargin +pour vérifier son fonctionnement dans une figure +et un titre de figure + +\begin{figure}[h] +\label{label de la figure} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe la figure...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{le titre de la figure avec label +\label{label du titre fig.}} +\end{figure} + +Même test avec un tableau : +\begin{table}[h] +\label{label du tableau} +\caption{le titre du tableau avec label\label{label du titre tab.}} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +\sloppypar{ +Désactivons définitivement l'option +avec \verb!\nolabelsinmargin!. +} +\nolabelsinmargin + +\newpage\english +\NL8 +\section{{\mdseries\texttt{\textbackslash labelsinmargin}} again} + +Again we test \verb|\labelsinmargin| +\labelsinmargin +to verify that it is running within a figure +and in a figure's caption. + +\begin{figure}[h] +\label{label in a figure} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter the figure$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{title with a label\label{label in fig. caption}} +\end{figure} + +Same test with a table: +\begin{table}[h] +\label{label in a table} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter the table$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{title with a label\label{label in a tab. caption}} +\end{table} + +Disactivate definitely the option with \verb!\nolabelsinmargin!. +\nolabelsinmargin + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\section{Notes dans \mdseries\texttt{\textbackslash caption}} + +Si une note dans un tableau doit être imprimée à la fin du +tableau, une note dans un titre de tableau doit être +imprimée en fin de page. Malheureusement \LaTeX{} perd +le texte des notes dans les environnements {\tt figure} et +{\tt table}. L'ex\-ten\-sion \FP\ prévient l'utilisateur +que le texte doit être réinséré à l'aide de \verb|\footnotetext|. + +\begin{table}[h] + +\SmsG% +\caption[Essai de footnote dans un caption de tableau] + {Légende\protect\footnote{Une note de bas de page.}} +\FmsG% + +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Peu importe le tableau...\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} +\footnotetext{Une note de bas de page.} + +\section{{\mdseries\texttt{\textbackslash caption}} vide} + +\begin{table}[h] +\caption{} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Tableau sans légende\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +\section{\mdseries\texttt{\textbackslash nombre}} + +Les nombres en français sont imprimés correctement lorsque l'on +utilise \verb|\nombre|, ainsi : + +\begin{verbatim} +\nombre{123 456,123 456} +\end{verbatim} +imprime \nombre{123 456,123 456} au lieu de la forme habituelle + {\regularmathcomma $123 456,123 456$} +ou \mbox{123 456,123 456} suivant que l'on est en mode math +ou en mode texte. + +On y voit des espaces fines à chaque millier et (normalement) +une virgule sans espace supplémentaire comme cela se produit +en mode math avec \TeX{} standard. + +\section{Autre chose ?} +Non ! + +[espace libre utilisable] + +\newpage\english + +\section{Notes within \mdseries\texttt{\textbackslash caption}} + +Normally in French we print table's footnotes at the end of the table +but it can't be the case when a footnote is called from a caption title. +But unfortunately footnote's text is lost when inside a \LaTeX{} figure +or table environnement, as shown here. +Thus {\tt french.sty} warn the user with the appropriate message, but +in English nothing is done. + +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ No matter the table$\ldots{}$\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption[footnote try within a table's caption] + {Caption title\protect\footnote{A footnote page.}} + +\end{table} +%\footnotetext{A footnote page.} + +\section{Empty \mdseries\texttt{\textbackslash caption}} + +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Empty caption\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{} +\end{table} + +\section{\mdseries\texttt{\textbackslash nombre}} + +French number should be correctly printed using +\verb|\nombre|, so : + +\begin{verbatim} +\nombre{123 456,123 456} +\end{verbatim} +should not print as usual +$123 456,123 456$ nor \mbox{123 456,123 456} +(depending you are in math or in text mode) +but $123\,456{,}123\,456$. +\NL1 + +We see here thin spaces between each thousand part and no +(usual) space after the comma (as it is in math with standard +\TeX{}). + +\smallskip + +\section{Anything else?} + +No! + +\noindent +[free space to reuse] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Le 1\protect\fup{er} paragraphe} +Notez bien que le 1\fup{er} paragraphe d'une section +ne commence jamais au fer à gauche +en français, comme vous le voyez ici. + +Le deuxième paragraphe démarre comme le premier...\footnote{% +La typographie du titre de section (1\fup{er}) est à noter ; + {\tt mysmaller.sty} a été utilisé +à la compilation de {\tt frenchrf} avec \LaTeX{}. +Il existe aussi l'extension {\tt relsize} qui fonctionne +bien avec \FP.} + +\section{Test des listes}\label{listes} + +Voici un test d'énumération (\verb|itemize|) de \LaTeX{} : + +\begin{itemize} +\item liste de niveau 1 ; + \begin{itemize} + \item incluant un niveau 2, + \begin{itemize} + \item mais aussi un niveau 3, + \item peu utilisé ; + \end{itemize} + \item le niveau 2 se terminant ici ; + \end{itemize} +\item suite de la liste de niveau 1 ; +\item dernier élément de niveau 1. +\end{itemize} + +On remarquera les deux choses suivantes : +\primo les marqueurs sont identiques quel que soit +le niveau et \secundo aucun élément ne commence par une majuscule. +\NL2 + +\section{Caractères actifs} +Quelques jeux de macros doivent parfois être chargés +directement dans le document +et utilisent les caractères {\em actifs\/} de \FP. Il y +a alors conflit ouvert. Plusieurs solutions sont offertes, soit utiliser +l'ordre : \\ +\verb| \originalinput{fichier}|\\ + soit : +\begin{verbatim} + \begin{nonfrench} + ... macros-instructions... + \end{nonfrench} +\end{verbatim} + +Mais attention n'utilisez pas en français un code que +vous auriez chargé +en anglais ou réciproquement ! + + +\newpage\english +\section{First paragraph} +In English each paragraph is indented except the first one of a section, +subsection, etc. as you can see in this example. + +Subsequent paragraphs start indented$\ldots{}$\NL1 + +\section{Itemized lists} +Here is the same french \verb|itemize| list:\NL1 + +\begin{itemize} +\item liste de niveau 1; + \begin{itemize} + \item incluant un niveau 2, + \begin{itemize} + \item mais aussi un niveau 3, + \item peu utilisé ; + \end{itemize} + \item le niveau 2 se terminant ici ; + \end{itemize} +\item suite de la liste de niveau 1 ; +\item dernier élément de niveau 1. +\end{itemize} + +You can compare english and french lists. +Notice firstly that item markers are identical at each level and secondly +that each item never starts with an uppercase letter. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Active characters} +Codes that were designed for English might bring problems when used with +\FP\ because few characters are {\em activated\/}. +Few solutions are offered, either:\\ +\verb| \originalinput{file}| + +or: +\begin{verbatim} + \begin{nonfrench} + ... macros-instructions... + \end{nonfrench} +\end{verbatim} +% * * * + +But be carefull, don't use in French a code that was loaded in English +or reciprocally! + +% * * * + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\section{Abréviations} +\abbreviations +Si on demande \verb|\abbreviations| alors on a +accès à un fichier d'abré\-via\-tions +typo\-graphi\-ques françaises. +Ainsi je saisis \verb|"monseigneur"| et j'imprime "monseigneur"\!. +De même, avec ML\TeX{} je saisis \verb|"deuxième"| +(vérifiez dans le +source que ce mot est bien codé en 8bits) et j'imprime "deuxième"\!% +. %alors que le fichier d'abréviations contient \verb|"deuxi\`|\verb|eme"|. +Ainsi il n'est plus vraiment indispensable de se rappeler que +l'abréviation de madame est "madame" (et maître : "maître"\!). + +Lorsqu'un mot ne figure pas dans le fichier d'abréviations, il est alors +imprimé tel que. Ainsi \verb|"GUTenberg"| imprimera +\SmsG% +"GUTenberg". +\FmsG% + Mais n'oubliez jamais le double guillemet fermant sinon vous obtiendrez + un message du genre : +\begin{versatim} + Paragraph ended before \AbbrevName was complete. +\end{versatim} + +Je peux aussi donner mon fichier personnel d'abréviations en codant :\\ +\verb|\abreviations[mon_fichier_personnel]| + +On retire ces possibilités par la commande \verb|\noabbreviations|. +N'oublions pas que le caractère \verb|"| sert normalement en \TeX{} +comme en \LaTeX{} à exprimer les nombres en hexadécimal. + +\section{Monsieur s'abrège "Monsieur"} + +Que je saisisse \verb|"Monsieur"| ou \verb|"monsieur"| +j'obtiens la même abréviation : "Monsieur" ou "monsieur", respectivement. + +Il n'en est pas toujours de même... ainsi lorsqu'on saisit +\verb|"Numéro"| et \verb|"numéro"| on obtient respectivement : +"Numéro" et "numéro", car \verb|Numéro| +est une entrée dans le fichier des abbréviations où il est écrit +\verb|{Numéro}|. + +Il est désormais possible de placer une abréviation dans un titre +de chapitre ou de section, comme le titre de cette section le +démontre ; nous avons saisi : +\begin{verbatim} +\section{Monsieur s'abrège "Monsieur"} +\end{verbatim} + +\noabbreviations + +\newpage\english + +\section{Abbreviations} +The abbreviation facility offered in \FP\ is based on +an abbreviations file. When requested by \verb|\abbreviations| one +may call any \verb|"abbreviation"|. If this abbreviation is found in the +file it will be replaced by the typographic expansion, if not it will +be printed as is.\NL2 + +But never forget the ending double quotes otherwise you will obtain the +terrible message: +{\tt Paragraph} {\tt ended before} \texttt{\textbackslash AbbrevName} +{\tt was complete.} +\NL4 + +You can have your own abbreviations file by calling: +\verb|\abreviations[my_file]|.\NL1 + +Saying \verb|\noabbreviations| this facility is lost. Remember that the +char \verb|"| is used normally in \TeX{} as in \LaTeX{} to start an +hexadecimal number. + +But used in English, \verb|"monsieur"| will give "monsieur"% +\footnote{Notice the quoting!}. + +\newpage\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Autres macros utiles} +\verb|\fsc{KnUtH}| permet d'imprimer \fsc{KnUtH} et \verb|\lsc{SnCf}| +donne \lsc{SnCf}. Cela doit aussi marcher si le mot commence par une +accentuation comme ici avec le mot \fsc{\'% a laisser tq a cause du 7bits +epinal} et même quand cette accentuation est plus loin dans +le mot comme ici dans \fsc{ANDR\'% a laisser tq a cause du 7bits +E}. + +\bigskip +Voici une note% +\footnote{La note.\label{NOTE}} +de bas de page commandée par \verb|\footnote{La note.\label{NOTE}}|. +Je peux faire à nouveau appel à cette note\refmark{NOTE} + par l'ordre \verb|\refmark{NOTE}|. + +\bigskip +Par analogie avec l'environnement \verb|verse| : +\begin{verse} +%\moretolerance % pour eviter un leger overfull hbox +1\iere{} ligne : cette ligne est bien trop longue, elle doit être coupée autant de fois que nécessaire...\\ +2\ieme{} ligne : le test terrible de...\\% +3\ieme{} ligne : `ceci est le test des quotes'\\ +\end{verse} +\tthyphenation +voici le même test (sans \verb|\\|) +avec l'environnement \vers|versatim| qui est +un environnement \vers|verba|\-\vers|tim| composé +avec des coupures de lignes +comme l'est l'environnement \verb|verse| et dont les {\em quotes} peuvent +être imprimées avec des accents si on précise +\vers|\noenglishquote| : +\noenglishquote +\begin{versatim} +1\iere{} ligne : cette ligne est bien trop longue, elle doit être coupée autant de fois que nécessaire... +2\ieme{} ligne : le test terrible de \end{document} +3\ieme{} ligne : `ceci est le test des quotes' +\end{versatim} +\englishquote + +\allowuchyph +Et maintenant voici l'ordre réduit \verb|\vers| qui +s'utilise comme \verb|\verb| et doit permettre de couper une +longue chaîne de caractères \texttt{ver\-batim}. Celle-ci +sera coupée par défaut entre les mots (\vers|\notthyphe|\-\vers|nation|) +mais pourra l'être à l'intérieur des mots si on précise +\tthyphenation \vers|\tthyphe|\-\vers|nation| comme ici : << +\vers|Longue Chaîne De Caractères À Couper Absolument| >>. +Les mots commençant en majuscule ne pourront être coupés +que si \vers|\uchyph=1|, valeur par défaut dans \FP\ +(\vers|\|\vers|allow|\-\vers|uchyph|) qui est utilisée pour cette +partie uniquement. + +\subsection*{Test de {\mdseries\texttt{\textbackslash fsc}} +(\fsc{French CAPS})} +Ce paragraphe teste la protection de certaines macro-instructions. + +\disallowuchyph\notthyphenation +\newpage\english +\section{Other useful macros} +French patronymic names are printed in small capitals with the first +letter in uppercase. That is done with the \verb|\fsc| macro. +Another macro \verb|\lsc| is available to print all the word(s) in small +capitals, specially usefull for trademark or companies names. + +\LaTeX{} is at the current time unable to print a \verb|\ref| as +a footnotemark, the command \verb|\refmark| is able to do that. + +Also, \LaTeX{} doesn't offer any {\tt verbatim} style able to +hyphenate lines. \FP\ is able to do this with the +environment {\tt versatim} or the \texttt{\textbackslash vers} order within a +line. + +These environments allow to replace the {\tt tt} quoting +({\tt ` '}) by more realistic ones ({\tt\`{ } \'{ }}) with +the order \texttt{\textbackslash noenglishquote}. Of course this environment +produce nothing different from the standard \verb|verbatim| when +used in \verb|\english|: +{\overfullrule=5pt + +\hfuzz=30pt +\begin{versatim} +1\iere{} ligne : cette ligne est bien trop +2\ieme{} ligne : le test terrible de... +3\ieme{} ligne : `ceci est le test des... +\end{versatim} + +\SmsG% + +And now this a test of a long string within a \verb|\vers|: +``\vers|Longue Chaîne De Caractères À Couper A| +This string would be hyphenated only if someone said +\verb|\tthyphenation| previously. +} + +\FmsG% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Accents et {\mdseries\tt tabbing}} +\FP\ apporte une solution pour pouvoir introduire +des lettres accentuées dans un environnement \vers|tabbing| lorsque +le source \TeX{} est en 7bits ou utilise Ml\TeX{} +\footnote{% +Cette option est aussi utile désormais en T1 car les lettres accentuées +sont traduites avec \FP, de façon interne, en 7-bits à la \TeX. + }% + ; c'est l'option par défaut +\vers|\|\vers|tabbing|\-\vers|accents|\tabbingaccents. L'exem\-ple : +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \a`% + a matelas \> confort +\end{tabbing} +\notabbingaccents +doit s'imprimer ainsi : +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \>\a`a outils \> rustique \\ +Toile : \>\a`a matelas \> confort \\ +\end{tabbing} +\vspace*{-0.5\baselineskip} +Nous l'avions saisi comme suit : +\begin{versatim} +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \a`% + a matelas \> confort +\end{tabbing} +\end{versatim} + +\section{Figurettes} +Le style \verb|french| propose un environnement spécial, appelé +\verb|figurette|, + pour placer les figures à l'enfroit exact où +ces figures se présentent +dans le texte. Cela est particulièrement utile pour des petites figures, +domaine où \LaTeX{} n'est pas adapté en standard. +Pour réaliser ceci : + \begin{figurette} + \center\fbox{essai}\endcenter% rajoute pour plain TeX + \caption{Ceci est une figurette} + \label{figurette} + \end{figurette} +Nous avons écrit : +\begin{verbatim} + \begin{figurette} + \center\fbox{essai} + \caption{Ceci est une figurette} + \label{figurette} + \end{figurette} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\english +\section{Diacritics \& {\mdseries\tt tabbing}} +There is no way in a \LaTeX{} \texttt{tabbing} to put diacritics on letters +as we use them usually. Here is how is printed the {\tt tabbing} +you can find in the french part: + +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \`% + a matelas \> confort +\end{tabbing} + +and that would normally be printed as follows: + +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \>\a`a outils \> rustique \\ +Toile : \>\a`a matelas \> confort \\ +\end{tabbing} + + \begin{figurette} + \center\fbox{essai}\endcenter% rajoute pour plain TeX + \caption{Originally a figurette} + \label{engfig} + \end{figurette} +\NL{4} + +\section{Little figures} + +\FP\ offers a special environment called +\verb|figurette| which allows to put little figures EXACTLY +where they appear in the text. This is a lack in the present +versions of \LaTeX{}. In English the environment \verb|figurette| +is replaced by an environment \verb|figure[h]|; look at figure +\ref{engfig} we tried to put here without success and we +typed like this: + +\begin{verbatim} + \begin{figurette} + \center\fbox{essai} + \caption{Originally a figurette} + \label{engfig} + \end{figurette} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\ifx\drapeaufg\undefined\else +\section{Composition \protect\linebreak en drapeau} +À gauche on trouve une composition justifiée standard \LaTeX. +Dessous, une composition avec l'environnement \texttt{drapeaufg} +proposé par l'extension \FP, il s'agit d'une composition +\emph{en drapeau, au fer} à gauche. À droite, il s'agit aussi d'une +composition \emph{en drapeau, au fer} à gauche mais cette fois-ci avec +l'environnement \texttt{drapeaufgIN}, sans coupure de mots, comme cela +est recommandé par l'imprimerie nationale. + +\subsection{Tests ordinaires} +\textbf{\large Texte justifié de référence} + +\medskip +\def\GOfrench{\noindent{\fboxsep 0pt\fboxrule 0.2pt\fbox{\advance\hsize by -2pt + \hbox{\vbox{\noindent +<< Par ailleurs, les lignes n'occupant pas toute la + justification (titres ou légendes le plus souvent) peuvent être + \emph{centrées} ou se présenter alignées verticalement + par la gauche sur la + marge de gauche de la page, ou \XX + verticalement par la droite sur la marge de + droite de la page. On dira alors qu'elles sont composées +\emph{en drapeau, au fer} à gauche ou \emph{en drapeau, au fer} à droite. +Dans ce type de composition, les coupures de mots sont proscrites et les +rejets à la ligne devront obéir à une certaine logique souvent dictée par le +sens. Ainsi on ne séparera pas l'article du substantif, le pronom personnel +sujet de son verbe, l'adjectif numéral du nom auquel il se \XX +rapporte, \etc. >> +(règles Imprimerie Nationale, p~153)% +}}\hss}}} + +\let\XX\relax +\GOfrench + +\hbox{} + +\textbf{\large Drapeau, au fer à gauche} + +\medskip +\begin{drapeaufg} +\GOfrench +\end{drapeaufg} + +\newpage +\enlargethispage{20pt}\hbox{}\smallskip + +\hbox{}\smallskip\NL5 +Dans ce dernier cas, des débordements dans la marge droite +sont possibles ; ils sont à traiter +au cas par cas par de simples coupures de lignes placées aux endroits +recommandés par l'imprimerie nationale (selon texte encadré). Le +dernier texte est ainsi corrigé.\NL3\vspace*{-2.5pt} + +\textbf{\large Drapeau << fg >>, selon IN} + +\medskip +\begin{drapeaufgIN} +\GOfrench +\end{drapeaufgIN} + +\medskip +\textbf{\large Drapeau << fg IN >>, corrigé} + +\medskip +\let\XX\\ +\begin{drapeaufgIN} +\GOfrench +\end{drapeaufgIN} + +\newpage +\subsection{Tests en drapeau << fg >>, aux limites} +Voici deux tests aux limites de la composition +\emph{en drapeau, au fer} à gauche, sur une colonne +étroite (2cm) tout d'abord avec l'environnement +\texttt{drapeaufg} et ensuite avec la recommandation +de l'imprimerie nationale appliquée à +\FP\ (ou interprètée par l'environnement \texttt{drapeaufgIN}). + +Les coefficients de laideur (\texttt{badness}) +acceptés sont élevés, c'est la raison pour laquelle +aucun message d'\texttt{underfull hbox} +(tout comme celui d'\texttt{overfull}) +n'est émis dans les deux cas +ci-dessous. + +\bigskip + +\def\temp{\noindent{\fboxsep 0pt\fboxrule 0.2pt\fbox{\advance\hsize by -2pt + \hbox{\vbox{\noindent + instit instits +institut instituts +institution institutions +institutionnel institutionnels +institutionnelle institutionnelles +institutionnellement +constitutionnellement +inconstitutionnellement +}}\hss}}} + +\let\XX\relax +\parbox{2cm}{% +\begin{drapeaufg} +\hsize=2cm +\temp +\end{drapeaufg} +} +\hspace*{0.5cm} +\parbox{2cm}{% +\begin{drapeaufgIN} +\hsize=2cm +\temp +\end{drapeaufgIN} +} + +\newpage +\subsection{Tests en drapeau << fd >>, aux limites} +Nous effectuons ici les mêmes test mais avec +les environnements \texttt{drapeaufd} (fer à droite) +et \texttt{drapeaufdIN} (selon imprimerie nationale). +En fait, l'environnement +\texttt{drapeaufd} est tout simplement +un \texttt{raggedleft}. +\NL{9} + +\let\XX\relax +\parbox{2cm}{% +\begin{drapeaufd} +%\mbox{Avec \the\rightskip :} +\hsize=2cm +\temp +\end{drapeaufd} +} +\hspace*{0.5cm} +\parbox{2cm}{% +\begin{drapeaufdIN} +%\mbox{Avec \the\rightskip :} +\hsize=2cm +\temp +\end{drapeaufdIN} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\Large +\let\XX\relax +\subsection{Test << fd >> classique} + +\begin{drapeaufd} +\GOfrench +\end{drapeaufd} + +\normalsize\bigskip + +L'Å“il aiguisé sera troublé car +les deux colonnes ne sont pas alignées horizontalement ; +cela est dû à la différence de matériel à composer, au total, +dans chacune des deux colonnes. + +\vfill + +\newpage +\Large +\subsection{Test << fd >> IN} +\begin{drapeaufdIN} +\GOfrench +\end{drapeaufdIN} + +\normalsize\bigskip + +Quelque soit le corps de la police (dans les limites +classiques de \LaTeX{}), avec cette largeur de colonne, +on n'obtient pas de différence +de mise en page entre les deux environnements. Les règles +de l'imprimerie nationale sont donc plus largement appliquées +dans ce cas. + +\vfill +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\newpage\french +\hbox{} +\vfill +\centerline{\Large Page intentionnellement laissée blanche} +\vfill +\twocolumn + +\fi% on a saute si drapeaufg est inconnu (frencht) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Lettrines} +\SmsG% lettrine reduite a 1 seule lettre ! +Voici le test des lettrines proposées en mode semi-automatique +avec \FP\ : + +\bigskip +\verb| \flettrine{Quoi ?}| +\flettrine{Quoi ?} {Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +<< Ici démarre une lettrine dans une citation. + +\bigskip +\lettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +\bigskip +\flettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +et la citation se termine ici. >> + +\bigskip +\verb| \font\lettrinefont=cmr17 scaled|\\ +{\font\lettrinefont=cmr17 scaled \magstep5 +\verb| \magstep5\lettrine[`` {Paris} '']| +\lettrine[`` {Paris} ''] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés.\par} + +\bigskip +\verb| \lettrine[<< {Paris} >>]| +\lettrine[<< {Paris} >>] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +\bigskip +\verb| \flettrine[<< {Paris} ]| +\flettrine[<< {Paris} ] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. >> + +\bigskip +\tthyphenation\noindent +\vers|\|\vers|font\lettrinefont=cmti12 scaled| \!\vers| \magstep4\lettrine| +{\em \% vérification d'italique.} +\font\lettrinefont=cmti12 scaled \magstep4\lettrine +Blalbla {\bf je blablate}, tu blablates, ils blablatent, b... +(ceci est l'exemple même de ce qu'il ne faut pas faire car ainsi +le mot n'est pas mis en petites capitales). Ceci avait pour but +de tester une police italique. + +\bigskip +\lettrine{L'absurdité} de cette lettrine... + +\notthyphenation +\FmsG + +\newpage\english + +\section{Illuminated letters} + +Look at the French part of this document because, in English, +these macros have no effect: + +\bigskip +\verb| \flettrine{Quoi ?}| +\flettrine{Quoi ?} {Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +<< Ici démarre une lettrine dans une citation. + +\bigskip +\lettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +\bigskip +\flettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +et la citation se termine ici. >> + +\bigskip +\verb| \font\lettrinefont=cmr17 scaled|\\ +{\font\lettrinefont=cmr17 scaled \magstep5 +\verb| \magstep5\lettrine[`` {Paris} '']| +\lettrine[`` {Paris} ''] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés.\par} + +\bigskip +\verb| \lettrine[<< {Paris} >>]| +\lettrine[<< {Paris} >>] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +\bigskip +\verb| \flettrine[<< {Paris} ]| +\flettrine[<< {Paris} ] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. >> + +\bigskip +\noindent +\verb|\font\lettrinefont=cmti12 scaled| \verb| \magstep4\lettrine| +%{\em \% vérification d'italique.} +\font\lettrinefont=cmti12 scaled \magstep4\lettrine +Blalbla {\bf je blablate}, tu blablates, ils blablatent, b... +(ceci est l'exemple même de ce qu'il ne faut pas faire car ainsi +le mot n'est pas mis en petites capitales). Ceci avait pour but +de tester une police italique. + +\bigskip +\lettrine{L'absurdité} de cette lettrine... + +\onecolumn\newpage% +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% ===>>>> Il n'y a plus d'anglais au delà de cette limite <<<<=== +\def\lastlinein#1{\expandafter\gdef\csname #1\endcsname{\relax}} +\lastlinein{english}% this is for frencht.tex +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Lettrines automatiques ou non} + +\bigskip +\lettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\automaticlettrine + +\lettrine{THIS IS A TEST} (a default automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a default automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + + +\bigskip +\def\lettrinefontname{cmr17} +\lettrine{THIS IS A TEST} (a cmr17 automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a cmr17 automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\lettrine{Que vaut ce test ?} (en automatique) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\noautomaticlettrine +\lettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\lettrine{Que vaut ce test ?} (non-automatique) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{Énumérations} +L'espacement des énumérations françaises est + profondément modifié avec \FP, pour s'en +convaincre voir le test des listes page \pageref{listes} ou +l'environnement \texttt{order} ci-après. + +\section{L'environnement << {\mdseries\texttt{order}} >>} +Un environnement spécifique est proposé, il s'agit de l'environnement +\verb|order| pour \LaTeX{} dont voici un petit exemple : + +\begin{order} +\item Bien regarder ; +\item l'espacement de chaque élément est spécial ; +\item l'espacement vertical est aussi différent. +\item A-D-O-P-T-E-Z \ \ L-E ! +\end{order} + +Ce prototype correspond bien aux énumérations +françaises (je ne +parle pas uniquement des marqueurs -- primo, secundo, \etc. -- +mais aussi de la gestion des espaces). En voici un autre exemple +concret : +\NL1 + +Les guillemets entrent aussi en ligne de compte : << Je citerai +3 cas très importants : +\begin{order} +\item le premier cas ; +\item le second ; +\item le dernier. +\end{order} +qui sont [...] >> +\NL1 + +À noter que ce mécanisme de rajout des guillemets en début de +chaque élément de liste marche aussi avec un environnement +comme \texttt{itemize}. + +\expandafter\ifx\csname frenchTeXmods\endcsname\relax + \space% ce test ne marche pas en LaTeX standard. +\else + \ifx\frenchTeXmods\empty\space% ni en dummy french ! + \else +\section{Tests aux limites des guillemets anglais} + +Vérifions qu'il est possible d'activer temporairement +quelques caractères sans perturber le traitement. Exemple : + +\begin{verbatim} +{\catcode`\'=\active\catcode`\'=\active + `` Test guillemets anglais '' +} +\end{verbatim} + +{\catcode`\'=\active\catcode`\'=\active + `` Test guillemets anglais '' +} + \fi +\fi + +Un cas bien spécial avait été rencontré avec l'extension \myverb|amstex| +qui utilisait une référence avec des mathématiques dans une autre +référence, ce qui entrainait une boucle infinie avec \FP. Voici +le test en question : +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% this code generates a loop with versions of french < V3,42 %%%%%% +\makeatletter +\def\r@ref{{\ref{nulllabel}$'$}}{1} +\makeatother +\ref{ref} = 1 $'$ % boucle garantie si < V3,42 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Autre test aux limites ? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{<< Autres tests >>} +Nous sommes ici en une colonne. + +\bigskip +Voici un test d'encadré contenant le mode \verb|centering| : +\begin{center}\fbox{% +\parbox{6cm}{\begin{center}Information : si vous voulez me joindre, +mon tél. : 01 69 35 85 40. Je n'y suis qu'aux horaires de +bureau.\end{center}}% + }\end{center} + +Bon ?\footnote{L'objet de cette note de bas de page est +de vérifier l'espacement des inférieurs et supérieurs, +\primo en \texttt{\backslash tt} : +\texttt{XXXX ===> <=== YYYY} et +\secundo en {\tt verbatim} : +\myverb|french V4 < french V5 > frenchOLD|% +.} + +\begin{table*}[h] +\caption{Dactylographie et typographie comparées} +\label{frenchdactylo} +\vspace*{1cm} +\huge +\begin{tabular}{|r|r|} +\hline +dactylographie\ \ \ \ \hfill & \ \ \ typographie\ \ \ \hfill\\ +\hline + \verb|use \dots or \ldots| \ & use \dots\ or $\ldots{}$\ \\ + \verb|utilisez...| \ & utilisez...\ \\ + \verb|semi-colon;| \ & semi-colon;\ \\ + \verb|point-virgule ;| \ & point-virgule ;\ \\ + \verb|My god!| \ & My god!\ \\ + \verb|Mon dieu !| \ & Mon Dieu !\ \\ + \verb|Why not?| \ & Why not?\ \\ + \verb|Pourquoi pas ?| \ & Pourquoi pas ?\ \\ + \verb|``I say''| \ & ``I say''\ \\ + \verb|<< Je dis >>| \ & << Je dis >>\ \\ + \verb|He said: Yes| \ & He said: Yes\ \\ + \verb|Il dit : non| \ & Il dit : non\ \\ + \verb|$1\,234,567$| \ & $1\,234,567$\ \\ + \verb|$f(x,\,y)$| \ & $f(x,\,y)$\ \\ +\hline +\end{tabular} +\normalsize +\end{table*} + +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifx\itshape\undefined\else% avoid old frencht crash +\subsection{Test des guillemets dans un \mdseries\texttt{\backslash edef}} + +Les guillemets peuvent être appelés dans une définition de macro +telle que \verb|\edef| mais comme les guillemets ne sont pas expansibles +entièrement il a donc fallu arriver à réaliser une définition acceptable. + +Ainsi \verb|\edef\testedef{<< essai >>}| +\edef\testedef{<< essai >>} +donnera la curieuse définition suivante : \\ +\hbox{}\hfill\texttt{\meaning\testedef} ; \\ +elle reste complètement expansible (dans certaines conditions) +ou pas du tout (comme ici appelée en tt on obtiendra +le résultat suivant : \texttt{\testedef}). +\fi + +\subsection{{\mdseries\tt <{}} et {\mdseries\tt >{}} redéfinis} + +Mes utilisateurs sont terribles ! Ils veulent le beurre, l'argent du +beurre et aussi la fermière... S'ils codent +\verb9\def\truc<#1|#2>{/#1 OU #2/}9 + ils veulent pouvoir obtenir +/Essai OU Erreur/ en saisissant \verb9\truc<Essai|Erreur>9. Faisons +l'essai réel : +{\def\truc<#1|#2>{/#1 OU #2/} \truc<Essai|Erreur>}. + +Encore plus fort : nous voulons avoir une notation de Backus-Naur +c'est-à -dire des \verb|\rangle| et \verb|\langle|. Voici la +définition que nous avons entrée avant le \verb|\begin{document}| : +\begin{verbatim} +{\catcode`\<=\active\catcode`\>=\active% +\global\def<{\left\langle}\global\def>{\right\rangle} +} +\end{verbatim} + +Pour tester l'efficacité de ces macros il suffit alors de faire +par exemple : +\begin{verbatim} +<< $<assignement>$ >> +\end{verbatim} +à condition que l'option \verb|\frenchguillemets| soit +active (en maths). + +Essayons cela : +% en fait il faut reactiver cela maintenant : +{% + \gdef\myinf{\left\langle}% + \gdef\mysup{\right\rangle}% +<< $\frenchguillemets% on a \nofrenchguillemets avec AmSTeX + <assignement>$ >>. +}% +% Remettre ici pour frenchle +\global\let\myinf\inferieura% A no-op def +\global\let\mysup\superieura% for a temporary action + +\subsection{\mdseries\texttt{\textbackslash special}} +L'inclusion d'une commande \verb|\special| est ici testée :\\ +{%%%%%%%%%%%% attention : commentaires impossible dans cette partie. + \catcode`\%=12 + \texttt{\backslash special}\verb|{ps:|{\tt %%% + }\verb| Texte bidon {`<<manuel:C;!?>>'}}| + \special{ps:%%% + Texte bidon {`<<manuel:C;!?>>'}} +} + +\subsection{{\mdseries\texttt{\textbackslash refmark}} dans un tableau} + +Où l'on reparle encore de \verb|\refmark|... + +La note \ref{bas} est référencée depuis le tableau ci-dessous, tout comme +les notes du tableau lui-même. + + \begin{table}[htbp] + \begin{center} + \begin{tabular}{|c|l|} + \hline + Lettre & Utilisation\\ + \hline + {\tt h} & petit blabla gentil et anodin \refmark{bas}\\ + {\tt l} & ici reblabla assez moyen\refmark{bas}$^,$\refmark{refnote}\\ + {\tt L} & autre grand grand grand blabla + \footnote{La note du tableau << refmark >>.\label{refnote}}\\ + \hline + \end{tabular} + \caption{Le titre du tableau.} + \end{center} +\end{table} + +En dehors du tableau on peut faire appel\footnote{La note de page.\label{bas}} +à une note qui est, par contre, référencée dans le tableau. Tout cela +est réalisé grâce à l'ordre \verb|\refmark| introduit par l'extension +\FP. + +\subsection{{\mdseries\texttt{\textbackslash nombre}} en argument} + +Voici un test simple permettant de valider \verb|\nombre| lorsqu'il +est en argument d'une macro-instruction : + +\begin{verbatim} +\noindent +1\,234 un nombre simple !\\ +$*$\\ +\nombre{1 234} un nombre simple !\\ +\nombre{1 234,5} avec une décimale.\\ +\texttt{\nombre{1 234,56} avec fonte tt.}\\ +\emph{\nombre{1 234,567} en mode emphasé.}\\ +\nombre{1 234,567 8} avec encore une décimale. +\end{verbatim} + +Il faut noter que l'ordre \verb|\nombre| est toujours composé en mode +mathématique ce qui force l'utilisation des fontes mathématiques. +Tout changement de fonte doit donc être précisé de façon ad hoc. +Par ailleurs, la composition n'est garantie que si l'option +\verb|\nofiles| n'a pas été indiquée en début de document. +Voici ce que ce test donne : + +\noindent +1\,234 un nombre simple !\\ +$*$\\ +\nombre{1 234} un nombre simple !\\ +\nombre{1 234,5} avec une décimale.\\ +\texttt{\nombre{1 234,56} avec fonte tt.}\\ +\emph{\nombre{1 234,567} en mode emphasé.}\\ +\nombre{1 234,567 8} avec encore une décimale. + +\ifx\documentclass\undefined % Still Plain! so no \DeclareFontFamily +\else% +\subsection{{\mdseries\texttt{\textbackslash label}} en mode math} + +Il s'agit ici de tester la commande \verb|\label| dans un environnement +\verb|equation| : + +\begin{verbatim} +Vérifions le numéro de l'équation \ref{labelequation} ci-dessous : +\begin{equation}\label{labelequation} +V_{Lm}=\frac{L}{t_p} +\end{equation} +\end{verbatim} + +Voici le résultat du test : + +Vérifions le numéro de l'équation \ref{labelequation} ci-dessous : +\begin{equation}\label{labelequation} +V_{Lm}=\frac{L}{t_p} +\end{equation} +\fi + +\csname TexteComplementaire\endcsname + +\subsection{Bibliographie} +Voyons maintenant la bibliographie. +Dans \cite{`<<manuel:Gaulle;!?>>'} on trouvera... +\nocite{`<<merci:Ronan;!?>>'} +Par contre +\cite[pp.1--3, X \& consorts]{<<blabla>>} +est beaucoup plus fourni en exemples et commentaires... Mais dans +\cite[p. 25 \S~13 {{\it et seq.}}]{`<<torture:Gaulle;!?>>'} +toutes ces informations +sont plus détaillées. + +Ce qui suit n'est pas un exemple de belle bibliographie, juste une +vérification de bon fonctionnement. + +\bibliographystyle{plain} + +\begin{thebibliography}{Knuth 99} + +\section*{Bibliographie dans le document} + +\bibitem[Knuth 99]{<<blabla>>} Le \TeX book ou la << bible >> + des gourous \TeX +\bibitem{`<<manuel:Gaulle;!?>>'} B. {\sc Gaulle}, {\em + Le résultat d'une << {\em dure} >> journée de travail !} +\bibitem{`<<merci:Ronan;!?>>'} R. {\sc Keryell}, {\em + Le gentil normalien qui m'a beaucoup aidé grâce à sa thèse...} +\bibitem{`<<torture:Gaulle;!?>>'} B. {\sc Gaulle}, {\em + Notice d'utilisation du style french}, 1991-1999. +\bibitem{`<<tortureFP:Gaulle;!?>>'} B. {\sc Gaulle}, {\em + Notice d'utilisation de l'extension \FP\ pour \LaTeX}, 2000-20xx. +\end{thebibliography} + +\ifx\documentclass\undefined % Still Plain! so skip +\else% +\section*{\phantom{\normalsize[Knuth 99]}Bibliographie en dehors du document} + +Avec certaines extensions de bibliographie il peut s'avérer utile +de protéger les caractères actifs à l'intérieur même de la base +de données bibliographique. + +\bibliography{testbib} +\fi% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\listoffigures +\listoftables +\glossary{Façon cordon bleu} +\glossaires +\section*{Glossaire des mots techniques} +\printglossary[\jobname.glo] + +\noindent -- magnification + +\noindent -- caractères spéciaux : \NL1 + +{\huge%\frenchmacros n'est pas utile ici +\begin{tabular}{|c|c|} +\hline +Pour imprimer ceci & Saisir cela\\ \hline +\at & \verb|\at|\\ \hline +\texttt{\vert} & \verb|\texttt{\vert}|\\ \hline +\tilde & \verb|\tilde|\\ \hline +\texttt{\backslash}& \verb|\texttt{\backslash}|\\ \hline +\chap & \verb|\chap|\\ \hline +\degre & \verb|\degre| \\ \hline +\degres & \verb|\degres| \\ \hline +\normalsize +1\ier{} étage & \verb|1\ier{} étage| \\ \hline +\normalsize +(2\ieme\!) & \verb|(2\ieme\!)| \\ \hline +\primo & \verb|\primo|\\ \hline +\secundo) & \verb|\secundo)|\\ +\hline +\end{tabular} +} \NL1 + +On notera que le caractère \verb|\degre| n'est pas le signe typographique +usuellement utilisé pour exprimer +des degrés mais que \verb|\degres| est +plus conforme à la tradition. On remarque bien les différences entre +\verb|\primo| et \verb|\secundo)| +(la forme parenthésée n'est pas valable +en {\em belle} typographie française). +\primo... \secundo... \tertio... \quarto... +\primo)... \secundo)... \tertio)... \quarto)... + +\section*{Glossaire argotique} +Le pied + +\printindex + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\part{Ce qui ne marche pas (bien)...} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Quelques questions à étudier} + +Cette partie ne comporte que des << anomalies >> que l'auteur espère +résoudre d'ici quelque temps, +grâce à votre aide... peut être ? + +En fait il ne reste vraiment +pas grand chose à règler mais ce sont probablement des +vieux problèmes sacrément compliqués. + +\section{Le << 2 points >>} +Le << 2 points >> a une fâcheuse tendance +à rester en bas de page lorsqu'il est +suivi d'un {\tt verbatim}. Il serait souhaitable d'en trouver la raison. + +\section{Les guillemets} + +Le problème avec \verb|quotation| page \pageref{quotation}. + +%Et la perte d'informations +%dans le cas de \verb|\noeveryparguillemets| lorsque l'on démarre +%une citation dans un paragraphe déjà commencé. +% +%Vraiment très {\em fragile} ce \verb|\noeveryparguillemets| ! ( + +Voir le cas des notes +de bas de page ou en marge qui produis(ai ?)ent des désastres +avec \verb|\noeveryparguillemets|. + +\section{Le cas des extensions mal écrites ...} + +... ne se résout souvent que par la modification de l'extension en question. +Cela a été le cas de nombreuses extensions depuis le début de \frenchname{} +et j'ai bien peur que cela continue \emph{éternellement}% (et à propos : qui me succèdera ?) +. +Ici Bernard Gaulle ajoutait (déjà en 2002) : << et à propos : qui me succédera ? >>. +Nous pensons que le groupe de travail autour du projet e-french répond à sa question. + +Certains cas sont insolubles, par exemple : +l'extension \verb|here.sty| +redéfinissait << au vol >> +l'ordre \LaTeX{} \verb|\table| au lieu +de modifier l'existant ; cela posait un réel problème à FrenchPro +qui se base sur la modification d'une commande \verb|\table| +existante. Heureusement ce style périmé peut être remplacé +avantageusement par \verb|float|. + +Notons qu'aujourd'hui avec les diverses variantes de \texttt{float}, +ce problème n'existe plus (comme bien d'autres d'ailleurs). + +\chapter{Améliorations à envisager} + +\section{Index et bibliographie} +Deux thèmes qui n'ont que très peu été abordés. + +\section{Abréviations} +Il est fâcheux d'avoir à connaître quelles sont les mots +abrégeables pour pouvoir demander leur abréviation ; autant les saisir +correctement dès le début... + +Faut-il arrêter la composition \LaTeX{} quand une abréviation +n'est pas trouvée ? + +Faut-il offrir la possibilité de lister toutes les abréviations ? + +\annexes +\hsize=18cm +% +%\chapter{Copyright} +%\Mylisting{copyrigh.tex} +% +%\chapter{Le fichier \mdseries{\tt language.dat}} +%\Mylisting{language.dat} + +\chapter{Le fichier \mdseries{\tt frabbrev-u8.tex}} +\Mylisting{frabbrev-u8.tex} + +% retire pour mettre french.cmd 98/06 +%\chapter{Le fichier \mdseries{\tt french.dmy}} +%My\listing{french.dmy} + +\chapter{Le fichier \mdseries{\tt french.cmd}} +\Mylisting{french.cmd} + +\chapter{Le fichier \mdseries{\tt french.chk}} +\Mylisting{french.chk} +% +%\chapter{Un style english (\mdseries{\tt fenglish})} +%\Mylisting{fenglish_doc} + +%\chapter{Le code de l'extension \FP} +% +%\Mylisting{french_doc.txt} + +\newpage +\hsize=15cm +\abbreviations\noenglishdoublequotes +\tableofcontents +\noabbreviations\englishdoublequotes% remove options set for toc. + +\english %=\relax if english text (see \lastlinein) +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/XeLaTeX/lisez-moi.txt b/language/french/e-french/texmf/doc/test/XeLaTeX/lisez-moi.txt new file mode 100644 index 0000000000..dd87b0a242 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/XeLaTeX/lisez-moi.txt @@ -0,0 +1,2 @@ +Pour compiler ajouter ..\mymaj et ..\mylist ici. +Ceci est un essai loin de la grande perfection. diff --git a/language/french/e-french/texmf/doc/test/french.tst b/language/french/e-french/texmf/doc/test/french.tst new file mode 100644 index 0000000000..7404ef046d --- /dev/null +++ b/language/french/e-french/texmf/doc/test/french.tst @@ -0,0 +1,3805 @@ +% !TeX encoding = latin9 +% This is the french torture file for all formats. +% Copyright Bernard Gaulle as in french.doc +% +% À passer en 8 bits conformément à votre système +% +%% checksum = "25011 3750 14847 120214" +%% +% +% For localisation: +% +\makeatletter% +\ifx\documentclass\undefined\let\kbAissue\relax\let\typeouA\typeout% +\else% + \let\typeouA\@gobble% +% For debugging one can remove "msg" access, just uncomment +%\let\kbAissue\relax% this line. + \ifx\kbAissue\undefined% +% Firstly we add the material to use the "msg" package for localization. + \def\kb@issue#1#2{\kb@issue@[#1]#2\void}% The local \issuemsg macro. + % which will call the real one; + % #1 is the macro message required. + % #2 is the message header + msg number + % such as "^^J -234-", just message + % number (234) is kept. + \let\kbAissue\kb@issue% + \def\kb@issue@[#1]#2-#3-#4\void{\issuemsg[#1]#3(french)}% + \ifx\issuemsg\undefined\let\kbAissue\relax\let\typeouA\typeout\fi% + \fi% +\fi% +\makeatother% +% +% For better debugging: +\ifx\IeC\undefined +\kbAissue% localise it. +\typeout{^^J-66- ERROR! This file can't be typeset without any input} + \typeouA{-66- encoding declaration (look at keyboard or inputenc packages.)} +\expandafter\stop% \usepackage[latin1]{keyboard} should be fine. +\fi +\let\FP\frenchpack\hyphenation{e-french} % anciennement French-Pro +\wlog{Formating \jobname\space with\space\FP\space(\frenchstyleid)} +% +% +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi% +\ProvidesFile{french.tst}% + [2005/05/11 The torture test file for the package \FP]% **last mods** +\ifx\undefined\FmsG\def\FmsG{}\def\SmsG{}\fi +% +{\catcode`\<=\active\catcode`\>=\active% +% Je veux : +%\global\def<{\left\langle}\global\def>{\right\rangle} +% Et pour ne pas pouvoir avoir l'effet que localement, +% je fais : +\gdef<{\myinf}\gdef>{\mysup} +} +\label{nulllabel}% null \label for AmSTeX test \ref within a \ref +\iflatex\makeindex \makeglossary + \csname frhyphex\endcsname% load (again) the exceptions, outside babel + \def\NL#1{\Sauter#1Lignes} + \begin{document} + \makeatletter + \ifx\babel@savevariable\undefined% + \let\FRENCH\frenchTeXmods% + \else\def\FRENCH{\selectlanguage{french}}% pour babel + \fi% + \makeatother + \csname onecolumn\endcsname % avoid writting \onecolumn + % (special effect in frencht.tex) + \renewcommand{\thepage}{\roman{page}}% + \ifx\documentclass\undefined\else% for 2e + % As 2e doesn't accept \verb in arguments: + \gdef\myverb|#1|{%\nonfrench + \texttt{#1}% + %\endnonfrench + \relax}% + \fi +\else + \let\FRENCH\frenchTeXmods% + \def\NL#1{\par} +\fi +\ifx\myverb\undefined\let\myverb=\verb\fi% +% global here is just req. for TeX--XeT tests. +\global\let\myinf\inferieura% A no-op def +\global\let\mysup\superieura% for a temporary action +\ifx\undefined\english\let\english\relax\fi% +% Les \ldots sont $\ldots$ a cause de AmSLaTeX V1.1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\HyphDiff#1#2{{\setbox0=\vbox{% + \pretolerance=-1 \hyphenpenalty=-10000 + \hsize=0pt \leftskip=0pt \rightskip=0pt \parfillskip=0pt + \parindent=0pt \hfuzz=\maxdimen \interlinepenalty=0 + \clubpenalty=0 \widowpenalty=0 \brokenpenalty=0 + \hskip 0pt #1}% + \setbox2=\hbox{}% + \setbox9=\vbox{\unvbox 0 \loop \unskip \setbox1=\lastbox + \ifhbox 1 + \global\setbox 2 = \hbox{% + \unhbox 1 \discretionary{}{}{}% + \unhbox 2}% + \repeat}% +\setbox3\hbox{#2}\ifnum\wd2=\wd3\else +\kbAissue% localise it. +\typeout{-31- Wrong French Hyphenation\string! + Are you sure to run with a format ***********} +\typeouA{-31- in which the french patterns were + installed at initex time\string? ***********} +\ifECM\else% +\kbAissue% localise it. +\typeout{-32- if yes try to switch to T1 font + encoding (\noexpand\usepackage[T1]{fontenc})***} +\fi% +\showhyphens{#1}\typeout{(should be\string: #2) + \string<\string<======== *********************************} +\fi}} +\HyphDiff{éventualité}{éven-tua-lité} +\HyphDiff{dégazonnage}{dé-ga-zon-nage} +\HyphDiff{chromosomique}{chro-mo-so-mique} +%%%% +\SmsG% +\typeout{V\'% + erification de la sortie de caract\`% + eres 8-bits \string:} +\message{L'\'% \typeout ne transforme pas en 8bits pour l'instant. + et\'% + e est l\`% + a en ao\^% + ut \string!} +\iflatex% +\typeout{Essai de macro d'accentuation dans un ordre \string\showhyphens % + \string:} +\showhyphens{Faut-il croire \`% + a l'\'% + ETERNIT\'% + E ? \'% + eludons ...} +\showhyphens{Ao\^% + ut 2001 ou l'autre \`% + ere ...} +\fi% +\FmsG% +% +\english% Title page is in english +\ifx\documentclass\undefined % Still Plain! so no \DeclareFontFamily +\else% +% To avoid "No file OMScmtt.fd" message 2004/10/29 +\DeclareFontFamily{OMS}{cmtt}{\skewchar\font48 } +\DeclareFontShape{OMS}{cmtt}{m}{n}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{it}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{sl}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{sc}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{n}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{it}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{sl}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{sc}% + {<->ssub*cmsy/b/n}{} +%%%%%%%%%%%%%%%%%%%%%%% +\fi% +\makeatletter% for \f@encoding +\title{\fbox{ \FP\ \LaTeX% + \thanks{We are here in english, notice the problem when we use, + like in \texttt{frenchla}, a + {\mdseries\texttt{\textbackslash fnsymbol}} + in a box.\newline% + \indent \hspace*{0.5em} + Notice also that + {\mdseries\texttt{\textbackslash backslash}} + can't be used.% + }% + }\\ \ \\% + Version \frenchstyleid\\ \ \\ + ``Torture'' Test (\jobname) \\ with + \ifx\encodingdefault\undefined Unknown + \else\ifx\f@encoding\undefined\encodingdefault{} + \else\f@encoding{} \fi + \fi Font Encoding\\\ } + \author{Bernard {\sc Gaulle}% + \thanks{Thanks to those good guys who helped me.\newline% + \indent\hspace*{0.5em} + This test note is also referred by a + {\mdseries\texttt{\textbackslash refmark}} call. + \label{title:thanks}% + }% + \\ \ \\ et...\refmark{title:thanks}% + }% +% AmS \normalparindent no more exists 2000/06/15, so the code is removed. +%\makeatletter% Don't let AMS change \parindent +%\ifx\RIfM@\undefined\else\normalparindent=1em\parindent=\normalparindent\fi% +%\makeatother +\makeatother% +\date{Printed on \today} +% As the titlepage is in English but the date in French we let \ier defined: +{\def\ier{ier}\maketitle} +\setcounter{page}{2}\thispagestyle{empty} +\cleardoublepage\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\sommaire[4] +\bigskip +\begin{center} +\noindent\fbox{% +\begin{minipage}[t]{0.5\textwidth} +\begin{center} \fbox{\parbox{5cm}{{\bf Remarque} : \\ la commande +\texttt{\backslash som\-maire}\label{pbverb}% +\footnote{Cette note a été demandée depuis une minipage.}% +\footnote{Cette deuxième note aussi.} +%%%%NB : \verb|\sommaire| ou \verb|\tableofcontents| produisent des HORREURS, +%%%% lorsqu'ils ont utilises dans un \fbox, BUG LATEX ! + est un apport de \FP.\hfill}} +\end{center} +\end{minipage} +} +\end{center} + +{% Not a LaTeX redefinition : \def\thefootnote{\fnsymbol{footnote}} +\renewcommand{\thefootnote}{\fnsymbol{footnote}}% +Essai de note avec \verb|\fnsymbol| +\footnote{Note avec une étoile.}. + +\def\thefootnote{\relax} +Essai de note de bas de page non numérotée +\footnote{Note non numérotée.}. +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\cleardoublepage +\chapter*{\prefacename} + +{\em Certains croient qu'une préface peut apporter de la valeur au livre, +moi je pense plutôt que cela apporte de la {\em valeur} +à l'auteur...} (dans +tous les sens du terme). + +\cleardoublepage + +\twocolumn +\renewcommand{\thepage}{\arabic{page}}\setcounter{page}{1}% +\chapter*{Introduction} + +\begin{motsclef} +french, style, francisation, francophonie, multilingue, +english, option, extension. +\end{motsclef} + +\begin{resume} +Ce document a été conçu +uniquement pour tester intensivement \FP\ (anciennement appelé +option de style% + \glossary{« : ; style ? ! »}\index{« : ; style ? »}% + \footnote{Cette note a pour but de faire appel à une macro + \texttt{\backslash index} contenant des caractères actifs.% + \index{« : ; depuis la note de bas de page ? »}% + } +\index{french!Le point d'exclamation est un caractère spécial de Makeindex}% +\index{<@{\tt\protect\inferieura} ({\tt\protect\backslash inferieura})}% +\index{>@{\tt\protect\superieura} ({\tt\protect\backslash superieura})}% +\index{Magic di N'Konga (auteur célèbre)}% + \texttt{FrenchPro}). +\end{resume} + +\bigskip Notez que les deux environnements \verb|resume| et \verb|motsclef| +(ainsi que \verb|keywords|) +sont des apports de \FP. + +\bigskip Si le libellé « Résumé » apparaît dans la partie + anglaise, cela +signifie que \FP\ ne possédait pas de définition +d'\verb|\abstract| et donc l'a remplacé par \verb|\resume|. Cela signifie +aussi que les libellés anglais n'ont pas été définis +%(\verb|\captionnames|% +%\footnote{Une extension {\tt fenglish} est fournie conjointement avec +%\FP\ ; {\tt\backslash captionnames} y est défini. +%Cette extension {\tt +%fenglish} est automatiquement appelée par \FP\ dans le +%cas que nous avons cité.} +% n'était pas défini par les extensions appelées avant +% \FP). +Rappelez-vous aussi que \verb|\abstract| ne fait pas partie de la classe +de document \verb|book|. + +Remarquez les différences entre les numéros de notes de bas de page en +français et en anglais, ainsi que l'impression de ce même numéro en +bas de la page. + +\english\newpage +\begin{keywords} %???\relax% for AMS which has its own macro with #1 +French, Style, Option, Package, French-Speaking usage, English, Multilingual. +\end{keywords} + +\begin{abstract} The object of this paper is to test intensively \FP. +\end{abstract} +\NL1 + +\bigskip Notice that the three environments +\verb|resume|, \verb|keywords| and \verb|motsclef| +are all introduced by \FP. + +\bigskip Notice that if the abstract name printed here is not ``Abstract'' you +are using packages that have no \verb|\abstractname| defined for eng\-lish. + The english package defining such captions is loaded only +if \verb|\captionsnames|% +\footnote{The {\tt fenglish} package is given with \FP, +so {\tt$\backslash$captionnames} are normally defined because +\FP\ is calling automatically the {\tt fenglish} package in the +pre\-viously cited case.} was +previously undefined. (Remember also that as \verb|\abstract| is not defined +in the \verb|book| document class the \FP\ assumes it is a +\verb|\resume|.) + +Notice the different typesetting of the footnote numbers in French and English +as well as the printing of that numbers before the footnote text.\vfill + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%\pagebreak +\french +\part{Ce qui marche est ici...} +\disallowuchyph% ce que je prefere... + +\chapter{Avertissements} + +Seul le document authentique qui est fourni par l'auteur + sous une forme composée +constitue la référence. Cela veut dire que l'installateur de \FP\ +sur un système doit comparer son résultat +(sous forme papier ou +fichier \verb|.pdf|) avec la forme authentique fournie par l'auteur. + +\bigskip + +\bigskip \FP\ a été conçu pour fonctionner +avec la majorité des formats basés sur \LaTeX{} +\footnote{Au siècle dernier (XX\ieme), \FP\ était appelé « style +\texttt{french} » et pouvait fonctionner en dehors de \LaTeX\ mais +l'effort pour assurer cette facilité dans de trop nombreux formats +exotiques était totalement disproportionné ; ceci a donc été +abandonné (au moment de la sortie de \LaTeXe).}% +. + +\bigskip \AllTeX{} est mon logo ; il symbolise {\em tous les \TeX{}} ; on peut +l'imprimer correctement dans toutes les polices ({\em \AllTeX}, {\bf \AllTeX}, +{\sf \AllTeX}, {\tt \AllTeX}, ...) grâce à la partie NFSS de \LaTeXe% +\footnote{Le document de référence ({\tt frenchrf}) +a été produit avec NFSS. Ce document-ci a été composé avec le format +{\tt \fmtname}.} +. + +\newpage\english Only the authentic author's document in a composed form is +the reference. That means that the on site \FP\ installator must +compare his result (paper or \verb|.pdf| file) with the authentic form +provided by the author. +\NL2 + +\bigskip \FP\ was designed to work with all {\em formats\/} +based on \LaTeX. + +\bigskip \AllTeX{} is my logo ; it's a symbol for expressing +{\em all \TeX{}} ; one can print it correctly in all shapes +({\em \AllTeX}, {\bf \AllTeX}, +{\sf \AllTeX}, {\tt \AllTeX}, etc.) due to the NFSS part of \LaTeXe% +\footnote{The +reference document was produced with NFSS of {\tt \fmtname}.}% +. + +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{La torture} + +\section{Le saviez-vous ?} Nos journaux, livres, revues, +articles scientifiques ou autres ont été (en gros) durant les trente +dernières années du vingtième siècle imprimés +par des machines d'origine +américaine. Ainsi, petit à petit, nous perdîmes +l'habitude de lire des +majuscules accentuées parce que tout simplement les polices + de caractères +utilisables sur ces machines n'en comportaient pas. + +L'usage de plus en plus généralisé de l'infor\-ma\-tique +{\em américaine} fit ainsi disparaître pendant un temps tous + les accents de notre langue écrite. + +De la même manière un certain nombre de +{\em mauvaises habitudes} furent +prises quasiment inconsciemment tout simplement parce que les programmes +informatiques ne pouvaient pas faire autrement. Ainsi de nombreuses {\it +coquetteries} de notre typographie sont tombées dans l'oubli. + +Saviez-vous par exemple qu'on n'imprime pas des guillemets comme ceci `` '' ni +même ` ' mais ainsi « » ? Nous nous autoriserons toutefois + à utiliser dans +ce document ces guillemets %\noenglishquote +(` ') que nous considérons comme +{\em techniques}. + +\newpage\english \section{Did you know that?} +Our (french) +newspapers, books, magazines, scientific articles and other things have +been printed the last thirty years (roughly) +of the twentiest century with american machines. So our +habits to read accented uppercase letters declined because they simply were +not included in the machinery.\NL2 + +Together with American computer usage growth, all french +diacritics disappeared from our french written language.\NL1 + +In a same way {\em bad +habits} took place, inconsciously, for the only reason that computer programs +could not do otherwise. So, a lot of french typographic {\em coquetteries\/} +are largely forgotten.\NL1 + + Did you know for example that we never typeset french +guillemets like this `` '' neither ` ' but% +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding\else% +\footnote{We switched to \emph{French} here to be able % + to print valid glyphs.}% +\fi} % +\begin{french}« and »\end{french}? Instead, we will +authorised ourselves to use (` ') in this document +because we consider they are {\em technical} guillemets. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +*** Cet espace est laissé intentionellement à blanc *** +\NL3 +\section{Typographie française} +%\noenglishquote +La typographie française est spécifique en ce qui concerne +l'utilisation des signes sui\-vants : +`\verb|.| \verb|:| \verb|;| \verb|!| \verb|?| \verb|«| \verb|»|'. + +La répartition des espaces dans une ligne se fait de façon +équitable entre les +mots (jamais à l'intérieur des mots) et après +la ponctuation (c'est le +\verb|\frenchspacing| de \TeX{}) contrairement à la + typographie anglaise. + +Les `\verb|; ! ?|' doivent être précédés d'une espace fine +insécable. C'est +ce que nous avons appliqué dans \FP. +Le cas du `\verb|?|' +a été traité spécialement car l'espace fine ayant +été jugée trop grande (par +des spécialistes), a été réduite tout en adjoignant une peu de +{\em glue} d'extensibilité. + +En ce qui concerne le `\verb|:|', le code typogra\-phi\-que% +\footnote{Nous +avons choisi d'adopter les recommandations de l'imprimerie nationale +française.} précise qu'il est précédé +d'une espace {\em mot\/} +insécable. +D'autres ont jugé que c'était inesthétique et cela a été +remplacé par une espace fine. + +Les guillemets français « doivent être suivis d'une espace mot +insécable qui +a été remplacée ici par une espace moindre. +Les guillemets fermants » +sont, eux, précédés de la même espace. + +\SmsG% +Lorsque la ligne n'est pas assez remplie et qu'il existe un `:', les +typographes ont --~semble-\hbox{t-il}~-- l'habitude +de répartir largement les espaces autour +des deux points. C'est ce qui a été fait dans \FP\ qui +pourra éventuellement produire une ligne : peu remplie\footnote{Le cas présenté ici a été +créé artificiellement et peut donc apparaître exagéré dans +certaines mises-en-pages.}% +\penalty-10000% + ou aussi bien une ligne se terminant ainsi : « {\em com\-me % \- pour fourier +font les pros\/} » +lorsqu'ils ne trouvent pas d'autre moyen mais il devrait s'agir que de cas +extrêmes. À noter que cela a pour avantage de réduire les +\verb|over/under-full hbox| de façon significative. + +Paragraphe de remplissage...\\ ...\\... pour vérifier que le `:' ne +termine ni la page ni la colonne. Ainsi : + +%\englishquote +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item %qu'il s'agisse de verbatim ou d'une liste d'éléments +les deux points et le texte qui suit +sont tous deux sur la même page. +\end{itemize} +%\newpage % already done with the previous list +\FmsG% +\english + +\smallskip + +\section{French printing} + +French printing use specific typographic rules specially in concern with +the following: `. : ; ! ?' and french guillemets. + +Interword spacing in a line is allways equal (and never modified inside a +word). It's the same way after punctuation (standard \verb|\frenchspacing|) as +opposed to the english typography.\NL1 + +All `; ! ?' are preceeded by a thin and uncuttable space. We apply this +automatically in \FP. (We have added few stretching {\em glue} to +the question mark).\NL2 + +Regarding the `:' we have not inserted an inter-word space but a thin space +and also have added some glue.\NL2 + +\smallskip +French guillemets are processed the same way. \NL3 + +In an {\em underfull\/} line containing a `:' man has habits to share spaces +around the double points. This way used in \FP\ can also produce a +line with a ragged right, as shown in the french column. This technique + reduce a lot of {\em overfull} and {\em underfull} {\tt hboxes} +produced by \TeX{}. +\NL3 + +As shown also, \FP\ is reluctant to print a double point at the +end of a page or a column.\french%\noenglishquote +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section[Dactylographie française]{Rappels concernant la \newline +dactylographie} + +Les habitudes de saisie c.-à-d. les habitudes dactylographiques, + veulent que les signes suivants +`\verb|:| \verb|;| \verb|!| \verb|?| \verb|»|' +soient toujours précédés d'un blanc +(barre d'espace sur les claviers) et les \verb|«| toujours +suivis d'un blanc. \FP\ remplacera +automatiquement ce blanc (à la composition) par l'espace appropriée. + +{\moretolerance\moretolerance\moretolerance +Les guillemets français « (et respectivement »)... +\footnote{\tthyphenation Avec les options fournies +telles \vers|A4| et \vers|double|\-\vers|column| on obtient + là un \vers|overfull| \vers|hbox| difficilement réductible +de façon automatique mais je l'ai réduit +avec 3 \texttt{\backslash moretolerance}% +\notthyphenation.} +\par} +%\nooverfullhboxmark + +Les vrais guillemets français « (et respectivement ») +s'utilisent toujours doublés (\verb|«| et respectivement +\verb|»|). Ainsi $<$ et $>$ ne +sont que des signes mathématiques et n'ont pas +d'autre sens en français que : {\em inférieur à} et +{\em supérieur à}. + +Il est fortement conseillé de poursuivre +ces habitudes dactylographiques qui +contribuent aussi à éclaircir le texte +saisi et donc ainsi à faciliter les +corrections ultérieures. +\NL1 + +\subsection[Test de la ponctuation française + \mdseries`\protect\myverb|. : ; ! ?|'] +{Test de la ponctuation \newline française + \mdseries`\protect\myverb|. : ; ! ?|'} + +Le deux points s'imprime comme ceci : s'il est précédé d'un blanc +(au moins un) sinon rien n'est changé (par ex. 11:33). Notez +l'espace après le point terminant la phrase ; le point virgule +est aussi précédé d'une espace fine s'il n'est pas collé +au mot le précédant (comme dans cet exemple dû à une faute +de frappe; assez fréquente).\\ +{\moretolerance +Oh ! Quoi-donc ? Notez ici l'espacement utilisé +devant le `!' et le `?'. Il ne faut +pas oublier aussi de taper le blanc avant, sinon? tout est +%terriblement + collé! Voyez-vous la différence ? Bravo ! +} + +Mais pour les documents {\em mal\/} saisis (c.-à-d. sans blanc) il est +toujours possible de spécifier la sous-option \verb|\untypedspaces| +\untypedspaces pour obtenir une insertion automatique des espaces +manquants comme ici! où il avait été saisi `\verb|ici!|'. +Vérifions pour les autres ponctuations :;? \typedspaces que nous +n'obtenons pas :;? serrées comme ici. + +Vérification de l'espacement : + +\noindent +\verb| \typedspaces X~; Y ; Z;| = \typedspaces X~; Y ; Z; + +\noindent +\verb|\untypedspaces X~; Y ; Z;| = \untypedspaces X~; Y ; Z; \typedspaces + +\newpage\english +\section{French typing} +French typists have some habits. For example they type a space before `: ; ! ? +\verb|»|' and after \verb|«|. \FP\ replace automatically this +blank space by the appropriate spacing. + +There is only one kind of quoting in French by the mean of guillemets which +are allways typed \verb|«| and \verb|»|. Usual english simple and double +quotes must be prohibited. + +\subsection{\mdseries% + \texttt{\textbackslash untypedspaces}}% +This control command offers the ability to repair automatically a document +badly typed i.e. in which spaces were not typed before french punctuation. +This bypass can help but is not the good way to use daily because there are +many cases where, for example, a double point must never be preceeded +by a space. + +Now we verify that the spacing is unchanged in English: + +\noindent +\verb| \typedspaces X~; Y ; Z;| = \typedspaces X~; Y ; Z; + +\noindent +\verb|\untypedspaces X~; Y ; Z;| = \untypedspaces X~; Y ; Z; \typedspaces + +\subsection{\mdseries% + \texttt{\textbackslash wrongtypedspaces}} +A french typist may input spaces before +punctuation as it is usual in French. These unfortunate space + can be removed by simply letting \FP\ do it with* the control +sequence: + +\begin{verbatim} +\letpunctuationactivefor + \wrongtypedspaces +\end{verbatim} + +\FRENCH% pour ne pas dire \french +\letpunctuationactivefor\wrongtypedspaces +\english +Let's try the previous example:\par +\noindent +\verb| X~; Y ; Z;| = X~; Y ; Z; + +Now we say \verb|\nowrongtypedspaces| +\nowrongtypedspaces to come back to the normal +situation. + +\vfill +\french +\nowrongtypedspaces% to be sure it is set when english text is skipped +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\csname StopFrenchLbT\endcsname% special case, temporary. + +\section[Test des guillemets français, 7 (<% + < >% + >) et 8-bits (« »)]% +{Test des guillemets \newline français (« »)} +\hyphenation{nor-ma-le-ment} + +Les guillemets français s'écrivent et se saisissent +« normalement » comme ceci : +\verb|« |{\tt nor}\-% +{\tt male}\-{\tt ment }\verb|»| + ou éventuellement en italiques mais toujours +\bgroup% for frenchle +« \em normalement\/ » % +\egroup% for frenchle +; ici nous avons tapé au clavier : +\verb|« \em| {\tt normalement}\verb| »|. +Et en tapant par contre :\\ \verb|«\em| + {\tt anormale\-ment (sans espace)}\verb|»| \ on obtient... +\bgroup% for frenchle +«\em anormale\-ment (sans espace)\/». +\egroup% for frenchle +Re\-mar\-quez que les guillemets font office d'acco\-lades \TeX{} et que donc +les changements de polices sont restaurés en sortant de la citation. + +Pour les documents déjà saisis {\em sans espace} << \FP\ >> +insérera systématiquement un espace à l'endroit +désiré si l'on a donné la sous-option \verb|\untypedspaces|. +\untypedspaces +Et en tapant à nouveau +\verb|«\em| {\tt anormale\-ment (sans espace)}\verb|»| on obtient +\bgroup% for frenchle +«\em anormalement (sans espace)\/». +\egroup% for frenchle +\typedspaces + +Parfois on désirera remplacer systématiquement tous les +guillemets anglais (`` et '') d'un texte par de vrais guillemets +français, il +suffira alors de fournir l'étrange option :\\ +\texttt{\backslash noenglishdoublequotes}\\ +\noenglishdoublequotes pour obtenir : `` ''. + +`` '' (même test en début de paragraphe).\englishdoublequotes + +Lorsqu'une citation est faite dans un texte, celle-ci commence +toujours par des guillemets. « Cette citation peut se poursuivre sur +plusieurs paragraphes. + +Dans ce cas, le style %\verb|french| +insérera systématiquement les guillemets nécessaires +en début de +chaque paragraphe. » + +Mais une citation peut aussi en contenir une autre. « Dans ce cas l'imprimerie + nationale précise dans ses {\em Règles typographiques} : +\ancientguillemets + « Lors\-que la première citation est +elle-même placée entre +guillemets, chaque ligne de la seconde débutera par un +guillemet ouvrant. » +Ce dispositif, comme on le voit, n'est pas mis en ½uvre ici + (voir son application au paragraphe \ref{noeveryparguillemets}). + « La deuxième citation peut aussi... + +se poursuivre sur un ou +plusieurs paragra\-phes. » Notez bien qu'avant cette citation nous avons +demandé les \verb|\ancientguillemets| +pour produire ces guillemets fermants +en début de ligne. Le \verb|\todayguillemets| rétablit la +situation une fois +le deuxième niveau terminé. \todayguillemets + +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding +\enlargethispage{10pt}% increase probably due to EC fonts metrics? +\fi} +Il arrive que la fin d'une citation de deux\-ième niveau +coïncide avec celle +du premier niveau. « Dans ce cas il faudra coder, comme ici :\\ +\verb|\endguillemets| +à la place de ``\verb|»|'' \endguillemets. + +Deux tests : \fbox{\begin{guillemets} XXX \end{guillemets}} +et \fbox{X \begin{guillemets} XXX \end{guillemets} X} servant à +vérifier l'espacement quand on utilise \verb|\begin| et \verb|\end|. + +Le paragraphe suivant va alors démarrer de façon +tout à fait normale... + +On peut aussi coder : +\begin{verbatim} +\begin{guillemets} +Une citation... +\end{guillemets} +\end{verbatim} +ce qui donnera : +\begin{guillemets} +Une citation... +\end{guillemets} +et en tapant {\em à la \TeX} : \verb|\guillemets{}| \verb|Une citation...| +\verb|\en|\vers|d|\-\vers|guillemets{}| nous devons obtenir absolument la même chose : +\guillemets{} Une citation... \endguillemets{} + +Vérifions maintenant l'espacement dans les différents cas : + +\noindent +\fbox{\parbox{2cm}{«X\dotfill X»}} \%\texttt{\backslash typedspaces} + {\em sans blanc} + +\noindent +\fbox{\parbox{2cm}{« X\dotfill X »}} \%\texttt{\backslash typedspaces} +{\em normal} + +\noindent\untypedspaces +\fbox{\parbox{2cm}{« X\dotfill X »}} \%\texttt{\backslash untypedspaces} +{\em avec blanc} + +\noindent +\fbox{\parbox{2cm}{«X\dotfill X»}} \%\texttt{\backslash untypedspaces} +{\em sans blanc} +\typedspaces + +\noindent +\fbox{\parbox{3cm}{A blabla bla blabla : « +Ceci est mon test de césure »}} «...» reste possible. + +\begin{flushleft} + Ceci est « un test avec \verb|\raggedright| » qui +--~théoriquement~-- ne devrait plus nous poser de problème. +\end{flushleft} + +\subsection{{\mdseries% +\texttt{\textbackslash noeveryparguillemets}}}\label{noeveryparguillemets} +Cette option permet de gérer correctement les citations de second +rang mais elle est tout à fait contraire + au processus \verb|\everypar| cité précédemment grâce auquel + les guillemets sont générés automatiquement à chaque +début de paragraphe. +Voici ce que produit l'option {\em normale\/} +\texttt{\backslash every\-par\-guil\-lemets} sur le paragraphe suivant : + +« Tout le monde s'accorde à trouver légitime la division : +{\tt extra-ordinaire}. Le cas des mots com\-posés est le seul +à rencontrer +cette unanimité. Dans les autres, les opinions sont très partagées. + Frey est le plus catégorique : il n'admet de division selon la formation +que pour des mots de composition complètement française, et la rejette +sinon... Le {\em Code typographique}, tout en adoptant ce même point + de vue « ... [reconnaît] néanmoins que certains auteurs de travaux +scientifiques préfèrent la division éty\-mologique +qui fait ressortir + la racine grecque ou latine. » Quant à Gouriou, il écrit : +« On préfèrera cependant garder la coupure étymologique + chaque fois que les composants sont {\em aisément} re\-connaissables. » +(L'italique est de Gouriou.) +\marginpar{{\footnotesize Ici on a triché avec des} \texttt{\backslash!}} +\!Telle \!est aussi \!l'opinion \!de \!Girodet ». + +Et voici l'effet de \verb|\noeveryparguillemets| : +\noeveryparguillemets + +« Tout le monde s'accorde à trouver légitime la division : +{\tt extra-ordinaire}. Le cas des mots com\-posés est le seul +à rencontrer +cette unanimité. Dans les autres, les opinions sont très partagées. + Frey est le plus catégorique : il n'admet de division selon la formation +que pour des mots de composition complètement française, et la rejette +sinon... Le {\em Code typo\-graphique}, tout en adoptant ce même point + de vue « ... [reconnaît] néanmoins que certains auteurs de travaux +scientifiques préfèrent la division éty\-mologique +qui fait ressortir + la racine grecque ou latine. » Quant à Gouriou, il écrit : +« On préfèrera cependant garder la coupure étymologique + chaque fois que les composants sont {\em aisément} re\-connaissables. » +(L'italique est de Gouriou.) +Telle est aussi l'opinion de Girodet ». +\everyparguillemets + +Il faut noter que cette option impose que le paragraphe commence et se +termine par des guillemets. % sinon code \guillpar et \parguill +C'est pour cela que nous n'avons pas mis cette option par défaut. + +\subsubsection{Un test assez méchant} +Voici un exemple d'utilisation dans un environement \verb|quotation|% +\footnote{Nous avons introduit \texttt{\backslash moretolerance} +pour obtenir une composition correcte.} : +\begin{quotation} +\moretolerance\moretolerance\moretolerance +« Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +« La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\end{quotation} + +Le même exemple sans \verb|quotation| : + +« Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +« La scien\-ce du graveur, dit-il, consiste à con\-naître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\bigskip + +\noeveryparguillemets +Puis avec \verb|\noeveryparguillemets| (c.-à-d. sans \verb|quotation|) : + +« Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +« La scien\-ce du graveur, dit-il, consiste à connaî\-tre la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la % En cas d'arrêt à cet endroit : le format +fonte. \endguillemets%.fmt utilisé n'est prob. pas ds le bon codage ! +\bigskip + +Et enfin avec \verb|quotation|, voilà +ce que cela peut donner\label{quotation} : +%%% La \marginpar suivante pose un pb de ``Lost Float'' qd elle est +%%% placee plus loin, pourquoi ? +\marginpar{{\footnotesize Il y a ici un problème à étudier en 2 colonnes !}} +\begin{quotation} +« Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +« La scien\-ce du graveur, dit-il, consis\-te à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. + \endguillemets +\end{quotation} +\everyparguillemets +On notera ici les espaces inter-mots beaucoup plus {\em tolérants}. C'est +la seule solution trouvée pour arriver à imprimer +quelque chose d'à peu +près correct en double colonnage. + +\vfill +Terminons la page en anglais pour tester le haut de page. Les guillemets +doivent être bons avec le codage T1. + +\english +Let's complete the page with english text in order to test and show +how will be printed the header. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\onecolumn +\subsubsection{Même test en \mdseries\texttt{\textbackslash onecolumn}} +Voici un exemple en environement \verb|quotation| : +\begin{quotation} +« Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +« La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\end{quotation} + +Le même exemple sans \verb|quotation| : + +« Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +« La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\bigskip + +\noeveryparguillemets +Puis avec \verb|\noeveryparguillemets| (sans \verb|quotation|) : + +« Je ne peux mieux faire que de citer la définition qu'a donnée +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +« La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\bigskip + +Et enfin avec \verb|quotation| : +\begin{quotation} + \let\bkORI\break + %\def\break{\bkORI\hbox to 0pt{/}}% for debug + %\ancientguillemets% for debug +« Je ne peux mieux faire que de citer la définition qu'a donné +de la gravure un de nos maîtres fondeurs, Fournier le Jeune : + +« La scien\-ce du graveur, dit-il, consiste à connaître la figure +la plus parfaite que l'on puisse donner aux caractères, les dimensions +qu'ils doivent avoir et à les représenter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perpétuent des lettres +à l'infini par la fonte. \endguillemets +\end{quotation} +\everyparguillemets + +\subsubsection{Test de « stretchability »} + +Les espaces doivent être également répartis sur la ligne : + +\medskip +\hbox to \hsize{etiord-gauche\footnote{En plain \TeX{} l'espacement est ici +\label{etiord} + curieusement incorrect ! ...} + « centre-ertnec » \hbox{}\footnote{... alors qu'il faudrait +la même répartition + de l'espace.}% + ehcuag-droite} +\medskip + +\subsection{Test des commandes \mdseries\texttt{\textbackslash ifnum}} + +\ifnum 1 < 3 1\verb| < |3 est VRAI, bien sûr ! + \else 1\verb| < |3 est FAUX ! \fi +comme +\ifnum 3 > 1 3\verb| > |1 est aussi VRAI, bien sûr ! + \else 3\verb| > |1 est FAUX ! \fi + +\medskip + +\subsection{Test des commandes \mdseries\texttt{\textbackslash everypar}} + +{J'ai codé dans cette section \verb|\everypar{$++\,$}| : \everypar{$++\,$} + +Paragraphe 1 « citation niveau 1 + +Paragraphe 2 « citation niveau 2 + +Paragraphe 3 fin citation niveau 2 » puis fin niveau 1 » + +Paragraphe 4} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage% tjrs en 1 colonne +\hbox{}\ifx\itshape\undefined\else% avoid old frencht crash +\subsection{Test de fermeture prématurée} + +Il arrive que les guillemets soient fermés dans un environnement +plus intérieur qui n'apparie donc pas correctement les blocs. +Voici un exemple d'utilisation : + +\begin{verbatim} +Maître Corbeau dit à son clerc : « \itshape Cher collègue, + +\begin{itemize} +\item Ah que vous êtes joli ! +\item Ah que vous me semblez beau ! » \upshape +et s'enfuit de ce pas... +\end{itemize} + +\endguillemets +\textsf{Quel homme étrange, n'est-ce pas ?} +\end{verbatim} + +Voici ce que cela donne comme composition : + +\medskip +\bgroup% for frenchle +Maître Corbeau dit à son clerc : « \itshape Cher collègue, + +\SmsG% +\begin{itemize} +\item Ah que vous êtes joli ! +\item Ah que vous me semblez beau ! » \upshape +et s'enfuit de ce pas... +\end{itemize} +\FmsG% + +\endguillemets +\egroup% for frenchle +\textsf{Quel homme étrange, n'est-ce pas ?} + +\medskip +On notera plusieurs choses. Premièrement il a fallu +rétablir \verb|\upshape| après les guillemets fermants, +du fait du mauvais appariement des blocs. Ensuite un message +sort indiquant une fermeture prématurée des guillemets. +Cette fermeture restant incomplète on note enfin que l'on a forcé +un \verb|\endguillemets| pour clore proprement et définitivement +l'environnement guillemets. + +\subsection{\mdseries\texttt{\textbackslash everyparguillemetsremoved}} +\label{noeveryparguillemetsremoved} +Dans le même exemple nous pouvons aussi interdire la génération +automatique des guillemets ouvrants à chaque début de paragraphe ; +il faut alors saisir \verb|\everyparguillemetsremoved| : +\everyparguillemetsremoved + +\medskip +\bgroup% for frenchle +Maître Corbeau dit à son clerc : « \itshape Cher collègue, + +\SmsG% +\begin{itemize} +\item Ah que vous êtes joli ! +\item Ah que vous me semblez beau ! » \upshape +et s'enfuit de ce pas... +\end{itemize} +\FmsG% + +\endguillemets +\egroup% for frenchle +\textsf{Quel homme étrange, n'est-ce pas ?} + +\medskip +Il suffit ensuite de rétablir \verb|\everyparguillemets|. +\everyparguillemets +\fi% ifx \itshape + +\subsection{Test de l'espacement} +{\def\marque#1{\vbox{\halign{\hfil##\hfil\cr + \llap{\vrule width4.5mm height.4pt}% + \rlap{\vrule width4.5mm height.4pt}\cr + \noalign{\vskip-1cm}% + #1\cr}}} + \Huge + \def\ecartement{\fbox{a « \marque{\hbox{$|$}} » b}} + \ecartement +} +% Difference de taille a voir entre les deux %%%%%% +\setbox7\hbox{\leftguillemets\ X} +\setbox8\hbox{X\ \rightguillemets} +\SmsG% +\message{Taille des boites page \thepage\space \string: + \the\wd7=\string?=\the\wd8} +\FmsG% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\newpage +\hbox{} +\vfill +\centerline{\Large Page intentionnellement laissée blanche} +\vfill +\twocolumn +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage + +\subsection{Guillemets interrompus} +Une citation peut être en anglais et donc se commencer par +\vers|« \|\vers|english| et se terminer par \vers|\|\vers|french »|. Ce cas +ne doit plus générer de message +{\em fermeture de guillemets non ouverts} ! +Voici le test, réalisé ici +tout d'abord avec l'environnement \vers|nonfrench| : + +\medskip +1 \fbox{« \begin{nonfrench}% LaTeX keeps space + Text in English + \end{nonfrench}% LaTeX keeps space + »} + + +\medskip +Puis avec : \\ +\verb|\begin{english}| ... \verb|\end{english}| : + +\medskip +% bypass here our TeX--XeT emulation to avoid message: english environment +% ended by \end{guillemets} +\def\temp{\begingroup} +\ifx\beginL\temp +\else +{% local redef of english for plain and our specific test file + \ifx\undefined\englishORI\else\let\english\englishORI\fi% +2 \fbox{« \begin{english}% LaTeX keeps space + Text in English + \end{english}% LaTeX keeps space + »} + +\medskip +Et enfin avec \verb|\|\verb|english| ... \verb|\endenglish| : + +\medskip +3 \fbox{« {\csname english\endcsname + Text in English + \csname endenglish\endcsname}% space here to remove + »} +}% local redef of english for plain test +\fi + +\medskip +Ceci avait aussi pour but de tester ces possibilités de +changement de langage et de vérifier l'espacement qui +devrait être ainsi : + +\medskip +0 \fbox{« Text in English »} + +\noenglishdoublequotes +\subsection{`` {\mdseries\texttt{\textbackslash noenglishdoublequotes}} ''} + +Nous avons mis la commande \vers|\noenglish|\-\vers|doublequotes| juste avant +le titre de section de façon à remplacer les « quotes » anglaises +par des guillemets français dans ce titre. +Il s'agit de vérifier aussi que la génération des fichiers auxiliaires +\verb|.aux| et \verb|.toc| ne pose pas de problème lorsque ces fichiers +sont réutilisés. Bien sûr, si cette option n'est pas activée pour tout le +document, comme ici, on ne retrouvera pas les guillemets français +dans la table des matières. + +\noenglishdoublequotes + +\english% histoire de changer de langue ? +\french +%\newpage +\subsection%{« no-french guillemets »} + {\mdseries\texttt{\textbackslash nofrenchguillemets}} +En codant \verb|\nofrenchguillemets| +\nofrenchguillemets on n'utilise plus +les guillemets programmés dans l'extension {\tt french}. Si on les utilise +malgré tout, le résultat dépendra de la police. Ici nous utilisons la +police \fontname\font{} et nous obtenons : + +<% + < en 7-bits >% + > + +et aussi : + +« en 8-bits ». + +Réactivons maintenant les guillemets avec la commande +\verb|\frenchguillemets| +\frenchguillemets et faisons le même test : + +<% + < en 7-bits >% + > + +et aussi : + +« en 8-bits ». Voyez-vous ? +\vfill +\subsection{Haut de page+guillemets} + +\subsubsection{En 8-bits} +Il ne devrait pas y avoir de problème du tout. +Car, puisqu'il s'agit d'un guillemet en 8-bits, cela doit +être forcément un vrai guillemet français. Mais, malheureusement, +{\em la solution pour l'implémenter n'est pas encore trouvée avec +le codage OT1}. +Le codage de fonte de ce document imprime : +\nonfrench <% + < >% + >% +\endnonfrench{} + (doit être parfait en T1). + +\subsubsection{En 7-bits} +En codage OT1 les guillemets 7-bits de haut de page ne peuvent être +bons sur cette page + {\bf QUE} parce que nous avons terminé la +page en français, sinon nous aurions eu : +\ifx\textexclamdown\undefined + \def\textexclamdown{¡}\def\textquestiondown{¿} +\fi +\textexclamdown\textexclamdown{} et \textquestiondown\textquestiondown + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\hbox{ }\NL{24} + +\subsection{Guillemets et maths} + +L'équation suivante ne doit plus produire le fameux message : + +{\tt ! Argument of \backslash \string @genG % string pour amslatex + has an extra % { pour emacs + $\}$% c'est un \delimiter qui pose pb tq avec frencht d'ou mode math +.} + +$$U^{k+1}=U^{k}- {< g_{k},d_{k} >}$$ + +\section{D'autres guillemets}\label{autres} +Avec \FP\ il est possible de substituer automatiquement aux +guillemets `anglais' la forme \noenglishquote `que voici' en donnant la +sous-option \verb|\noenglishquote|. +Mais attention, les apostrophes deviennent des accents +comme dans : {\em il s'agit ici de l'exemple} +\englishquote qui aurait dû être imprimé : +{\em il s'agit ici de l'exemple}. +Un usage intensif de cette option est plutôt à déconseiller. + +\newpage +\english +\section{French guillemets} +Using french guillemets in an english document (\verb|«| and \verb|»|) will +give (depending of font encoding) that: « and », it is normal! + +As you can look in the previous columns, french guillemets have specific +rules. They are used for quotation when an author is cited or each time an +emphasis is needed. Normally, italic is not used inside a quoted french +text, excepted when you really want to show some wording. + +When opened, each paragraph of the quoted text will start left + with the opening french guillemets. + +Another quotated text can take place inside a first level. This second level +citation is also very specific. Each line must start with guillemets. + +The style designer, from time to time, chose to apply here an ancient rule +by putting here closing guillemets. + +The technical tools involved in \FP\ + disallow to have at the same time +the \verb|\everypar| possibility and the second level mechanism. + +\subsection{Guillemets and maths} + +The following equation is always correct: + +$$U^{k+1}=U^{k}- {< g_{k},d_{k} >}$$ + +and never produce an error message. +\NL1 + +\section{Other guillemets} +With \FP\ it is possible to replace english guillemets by +diacritic caracters. But, be careful, all apostrophes will be diacritics too. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{Trois petits points} +Les points de suspension sont : ... et non pas ceux de \TeX{} : $\ldots{}$ +\noTeXdots +En codant \verb|\noTeXdots| les commandes \verb|\dots| ou \verb|\ldots| de +\LaTeX{} donneront : $\ldots{}$ Mais l'option par défaut a été +volontairement maintenue au standard (\verb|\TeXdots|) puisqu'il suffit +de ne pas les utiliser.\TeXdots + +\section{Crochets} +IBM, en son temps, avait créé l'EBCDIC dans lequel ne figurait pas +les crochets ([ ]). C'est la raison pour laquelle les utilisateurs IBM +ont parfois substitué $<$ et $>$ aux crochets. La sous option +\verb|\EBCDICbrackets| \EBCDICbrackets +permet de les remplacer comme ici <automatiquement> par des crochets. +Mais faites attention, les doubles guillemets +\verb|<|\verb|<| et \verb|>|\verb|>| % pour eviter la conversion 8bits + ne donneront jamais des crochets mais « et » +(sauf en mode \verb|verbatim|). On peut en général +se contenter de \verb|< <| et \verb|> >| pour obtenir < < et > >. +On revient à la situation antérieure en tapant la commande suivante : +\verb|\normalbrackets|\normalbrackets. + +\section{Débordements} +Nous venons de choisir l'option d'indication de débordement de ligne +\verb|\overfullhboxmark| et nous voyons son +effet lorsque la ligne ne peut être coupée grâce à l'impression +de la petite boîte noire. +%(cf. page \pageref{debordement}). +Cette option est activée au minimum pour une page entière. +Ne pas spécifier l'option et son contraire sur la même page sinon +l'effet est inchangé. + +\labelsinmargin +\section{\mdseries\texttt{\textbackslash labelsinmargin}}% +\label{labels: in: margin} +\FP\ offre la possibilité, comme cela a été demandé +à partir de cette section, d'imprimer dans la marge le libellé des +étiquettes utilisées dans les ordres \verb|\label|. +Cette option, utilisable +aussi en dehors du français, est la suivante : +\verb|\labelsinmargin|. + +\newpage\english +\section{Three dots} +Usual and common \TeX{} and \LaTeX{} dots are not french dots. +\NL4 + +\section{Brackets} +An option is offered to replace \verb|<| and \verb|>| by brackets. +\NL{11} + +\section{\mdseries\texttt{\textbackslash overfullhboxmark}} +The command \verb|\overfullhboxmark| print a black +box where your have an overfull \verb|hbox| i.e.\ when a line can't be +hyphenated. The default is \verb|\nooverfullhboxmark|. +\NL4 + +\section{Labels in margin}\label{labels are in margin} +An option allow you to print the labels you use in a page. These labels are +printed in margins. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{Des points sur...} +Inutile de mettre les points sur les i quand on accentue un i. Tout bon +éditeur de texte doit faire ce travail pour vous. Sinon il existe la +sous-option \verb|\idotless| qui produira \idotless +\let\XX\^% Pour éviter une traduction éventuelle en 8 bits +\XX{i} si on lui demande d'imprimer \verb|\^i|. +\iwithdot La valeur par défaut +dans \FP\ est \verb|\iwithdot| qui donnera malgré tout de +bons i accentués avec ML\TeX{} (î) s'ils sont saisis directement en 8 +bits (vérifiez dans votre fichier source). + +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding +\section{Ponctuation et mode \protect\linebreak % SPECIAL FONTES EC REELLES + mathématique} +\else +\section{Ponctuation et mode mathématique} +\fi} +Il s'agit de vérifier que les modifications introduites +par l'extension \FP\ +ne posent aucun genre de problème en mode mathématique. +\\ Nous définissons une macro \verb|\test| : +\\ \verb|\def\test#1{#1}|\def\test#1{#1} +\\ pour voir si le mode mathématique peut être appelé +sans problème en +argument de macro-instructions. L'appel de \verb|\test{$x''$}| ne doit +pas poser de problème% +\iflatex +, ni même \verb|\texttt{|\-\verb|[$x''=0$]}| +\\ Ainsi : \verb|\texttt{[$x''=0$]}| +\\donne : \texttt{[$x''=0$]} et +\else% +. \\Ainsi : +\fi +\\ \verb|$A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$| +\\ \verb|\test{$A':B''_1<C_{d'}$}| +\\donne : $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{donne :} \test{$A':B''_1<C_{d'}$} +\\Avec \verb|\noenglishquote|\noenglishquote{} cela... +\\donne : $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{donne :} \test{$A':B''_1<C_{d'}$} +\englishquote +\\ puis avec \verb|\noenglishdoublequotes| \noenglishdoublequotes et +`` mise en vedette '' : +$$% \begin{displaymath} + A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ; +$$% \end{displaymath} +$$% \begin{displaymath} + \test{A':B''_1<C_{d'}} +$$% \end{displaymath} +De même : +\begin{verbatim} +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)} +\end{verbatim} +doit s'imprimer :\\ +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)}\\ +sans produire le message d'erreur « Fermeture de guillemets non ouverts ! ». +\englishdoublequotes + + +\newpage\english +\section{An \i dotless} +Everybody knows that a french ``{\em i circonflexe}'' has no dot on it. +(In my opinion it is a \TeX{} bug to leave the dot when a diacritic is +put on.) To suppress the dot automatically the best way is to use a well +programmed text editor. \FP\ offers another opportunity with +\verb|\idotless|. + +\NL3 + +\section[Math mode and punctuation]{Math mode and \newline punctuation} +Here we verify that french modifications about punctation +does not introduce any problem in printing mathematics. +\\ We define a new macro \verb|\test| : +\\ \verb|\def\test#1{#1}|\def\test#1{#1} +\\ in order to see if there is no more problem when passing maths +inside a macro argument. Calling \verb|\test{$x''$}| must not +introduce any problem% +\iflatex +, as well as \verb|\texttt{|\-\verb|[$x''=0$]}| +\NL1\\So: \verb|\texttt{[$x''=0$]}| +\\gives: \texttt{[$x''=0$]} and +\else% +. \NL1\\So: +\fi +\\\verb|$A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$| +\\\verb|\test{$A':B''_1<C_{d'}$}| +\\ gives: $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{gives:} \test{$A':B''_1<C_{d'}$} +\\With \verb|\noenglishquote|\noenglishquote{} it$\ldots{}$ +\\gives: $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{gives:} \test{$A':B''_1<C_{d'}$} +\englishquote +\\ and with \verb|\noenglishdoublequotes|\noenglishdoublequotes{} +in ``display'' math mode: +$$% \begin{displaymath} + A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ; +$$% \end{displaymath} +$$% \begin{displaymath} + \test{A':B''_1<C_{d'}} +$$% \end{displaymath} +\englishdoublequotes +Also: +\ifx\documentclass\undefined\\ % Still Plain! +\else\\[-2\baselineskip] % to keep the same spacing as in French +\fi +\begin{verbatim} +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)} +\end{verbatim} +must print:\\ +%\SmsG% +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)}\\ +%\FmsG% +without producing the error message: +``Fermeture de guillemets non ouverts !''. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +Pour ma part lorsque je désire des crochets que je n'ai pas +au clavier, je préfère taper :\\ +\verb|{\tt CALL SUBR(<iopt<,ilopt> >)}| et utiliser +l'option \verb|\EBCDICbrackets|\EBCDICbrackets{} :\\ +{\tt CALL SUBR(<iopt<,ilopt> >)} + +Cette option n'a pas d'effet en mode mathématique : +$$ 1233 < 1234 <% + < 1235 >% + > 1234 > 1233 $$ +\normalbrackets + +\makeatletter% we should use \frac with AmS +\ifx\RIfM@\undefined%\ifx\csname amsmath.sty\endcsname\relax + \long\def\text#1{#1}\long\def\frac#1#2{{#1\over#2}} +\fi +\makeatother + +Vérifions aussi +($x < {\frac{1}{3}} < {\frac{1}{2}} > {\frac{1}{4}}$) : +$$x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4} $$ +puis aussi : + + \text{\quad pour $|y| < \frac{111}{444}$} + +\bigskip +La double ponctuation ne doit avoir aucun effet +(visible) dans une formule en mode +mathématiques, est-ce bien le cas sur l'exemple ci-dessous : + +{\LARGE $$a := b, (c!n=m) \textrm{ ; vrai ?}$$} + +On notera que la partie texte de la formule a été saisie avec la +commande : \\ +\verb|\textrm{ ; vrai ?}|\\ +et que l'espacement français y a été appliqué. + +\iflatex +\subsection{Le cas de la virgule} +En standard \AllTeX{} (ou alors avec l'option spéciale +\verb|\regularmathcomma| de \FP) le traitement de la virgule +est spécifique, ainsi quand on tape ce qui suit en mode +mathématique de mise en valeur : +\regularmathcomma% +\begin{versatim} +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{\euro}$$ +\end{versatim} +on obtient des espacements après les virgules, +qu'il y ait ou non des espaces dans le source \TeX\ : +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{\euro}$$ +(ce qui montre une anomalie dans la composition +des nombres relatifs) +\frenchmathcomma +\fi + +\newpage\english +When I have no brackets on my keyboard I prefer to type:\\ +\verb|{\tt CALL SUBR(<iopt<,ilopt> >)}|\\ using + the option \verb|\EBCDICbrackets| but the result in english +remains unchanged\EBCDICbrackets{}:\\ +{\tt CALL SUBR(<iopt<,ilopt> >)} + +And within math mode: +$$ 1233 < 1234 <% + < 1235 >% + > 1234 > 1233 $$ +\normalbrackets + +\makeatletter% we should use \frac with AmS +\ifx\RIfM@\undefined%\ifx\csname amsmath.sty\endcsname\relax + \long\def\text#1{#1}\long\def\frac#1#2{{#1\over#2}} +\fi +\makeatother + +Let's verify also ($x < {\frac{1}{3}} < {\frac{1}{2}} > {\frac{1}{4}}$) : +$$x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4}$$ +and: + + \text{\quad pour $|y| < \frac{111}{444}$} + +\bigskip +The ``double punctuation'' should not have any effect +in maths, which is obviously the case in the following +English example: +\NL1 + +{\LARGE $$a := b, (c!n=m) \textrm{ ; vrai ?}$$} + +Though the text part of the formula has been typed +via a command: \\ +\verb|\textrm{ ; vrai ?}|\\ +the french spacing doesn't apply here. + +\iflatex +\subsection{The comma case} +With \AllTeX{} standard (or with the special \FP\ +\verb|\regularmathcomma| the processing of comma is really specific. +So, when you type in the following in display math mode: +\regularmathcomma% +\begin{verbatim} +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ + 1\,500,00\,\textrm{\euro}$$ +\end{verbatim} +you will get thin spaces after the commas, +no matter spaces are given or not in the \TeX\ source: +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{\euro}$$ +(which shows a french typesetting error for +the relative numbers). +\frenchmathcomma +\fi% + +\iflatex\french +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Par contre avec \FP\ on n'obtient +aucun espacement supplémentaire : +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{\euro}$$ +cela est dû à l'option \verb|\frenchmathcomma| qui est +activée par défaut avec \FP. +Mais cela montre alors une anomalie de composition +dans les listes $(x,y,z)$. + +Si l'on veut des espaces il faut alors les indiquer +explicitement, comme cela est l'usage, plus +généralement, en mode mathématique : +\begin{versatim} +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{\euro}$$ +\end{versatim} +ce qui donnera : +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{\euro}$$ + +\medskip + +On notera que \FP\ obéit à l'extension \texttt{icomma} +lorsque cette dernière est chargée avant \FP, mais +seulement en français. + + +\newpage\english +With the \FP\ package there is no space added +at all: +\frenchmathcomma% +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{\euro}$$ +this is due to the option \verb|\frenchmathcomma| which is +defaultly activated in the \FP\ package. +People will then distinguish a typesetting error +in the lists $(x,y,z)$. + +If you want spaces you should then give them to \TeX\ +explicitely, as usually done, more generally in math mode: +\begin{verbatim} +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ + V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ + 1\,500,00\,\textrm{\euro}$$ +\end{verbatim} +which will give: +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{\euro}$$ +\fi + +You should notice that \FP\ respect the choice of +the \texttt{icomma} package when that last one is loaded before +\FP; but it only applies in French. +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{Mon antislash est \mdseries\texttt{\backslash}} + +L'antislash n'existe pas dans toutes les polices en OT1. +Que vous utilisiez \verb|\backslash| ou \verb|\textbackslash| +vous obtiendrez la même chose, ainsi +en romain droit on obtient : + +textbackslash=\textbackslash + +backslash=\backslash + +\noindent +mais avec la fonte tt on obtient : + +{\tt +textbackslash=\textbackslash + +backslash=\backslash +} +\NL2 + +\section{Notes de bas de page} + +\iflatex\makeatletter\xdef\countSAVED{\the\c@footnote}\makeatother\fi +\long\def\XX{% + Numérotation normale\footnote{Une note normalement numérotée.}. + {\setcounter{footnote}{0} + \renewcommand{\thefootnote}{\fnsymbol{footnote}} + + Voici une note\footnote{Première note.} + puis une autre\footnote{Deuxième note.} + puis encore une autre\footnote{Troisième note.} + }} + +Nous comparons ici la composition des notes de bas de page +(avec et sans \verb|\fnsymbol|) +dans une langue et dans l'autre. Voyons ce que cela donne : + +\XX + +\newpage\english +\section{My antislash is \mdseries\texttt{\textbackslash}} + +The antislash glyph doesn't exist in all OT1 font. +Whatever you use, \verb|\backslash| or \verb|\textbackslash| +you will obtain the same output, so +in upright roman you obtain: + +textbackslash=\textbackslash + +backslash=$\backslash$ + +\noindent +but with the tt font you obtain: + +{\tt +textbackslash=\textbackslash + +backslash=$\backslash$ +} + +\noindent +but \verb|\backslash| is only available in +math mode. + +\section{Compared footnotes} + +We compare the typesetting of footnotes +(with and without \verb|\fnsymbol|) +in one language versus the other. Let's look at them. + +\iflatex\makeatletter\c@footnote=\countSAVED\makeatother\fi + +\XX +\iflatex\makeatletter\c@footnote=\countSAVED\makeatother\fi +\addtocounter{footnote}{1} +\NL1 + +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage + +\section{\mdseries\texttt{\textbackslash guillemetsinarrays}} + +Avec \FP\ l'utilisation de guillemets à la +française en mode texte dans les environnements \texttt{array} ou +\texttt{eqnarray} est possible +mais il est nécessaire de protéger les opérateurs +inférieur (\texttt{<}) et supérieur (\texttt{>}) lorsqu'ils terminent +une colonne. On rajoute alors une paire d'accolades ou \verb|\relax| +pour terminer la macro-commande : +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& « » &c\\ +<{}& \textrm{« text »}&c +\end{array} +$ +\end{verbatim} + +\noindent ce qui donne : + +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& « » &c\\ +<{}& \textrm{« text »}&c +\end{array} +$ + +\medskip +On peut éviter d'avoir à modifier des tableaux existants et dans ce +cas on codera \verb|\no|\-\verb|guil|\-\verb|lemetsinarrays| : + +\begin{verbatim} +\noguillemetsinarrays +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & « » &c\\ +< & \textrm{« text »}&c +\end{array} +$ +\end{verbatim} + +\noindent ce qui donne alors : + +\noguillemetsinarrays +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & « » &c\\ +< & \textrm{« text »}&c +\end{array} +$ +\guillemetsinarrays% reset default + +\newpage\english +\section{Guillemets in arrays} +The \FP\ package allows people to print french guillemets +in \texttt{array} environments (but in text mode). This usually breaks +the code for \texttt{<} or \texttt{>} when they finish an array slot. +So you should protect them; like this: +\NL2 + +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& \textrm{« text »}&c +\end{array} +$ +\end{verbatim} +\NL1 + +\noindent which gives: + +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& \textrm{« text »}&c +\end{array} +$ +\NL1 + +\medskip + +One can avoid to modify existing arrays and then just say +\verb|\noguillemetsinarrays| but this command is not +interesting in English because the problem doesn't exist +at all: + +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & \textrm{<< text >> &c +\end{array} +$ +\end{verbatim} +\NL1 + +\noindent gives the following result: + +\def\GOfrench{\let\ifCLA\iffalse}% To allow dmy and frencht to compile +\ifx\ifCLA\undefined\expandafter\GOfrench\fi% without error. +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +< &b\\ +a & b &<\\ +a & +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +> &c\\ +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +< & \textrm{<< text >>}&c +\end{array} +$ +\NL1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\noguillemetsinarrays% for continuation of column +Cette commande est aussi valable pour les environnements +\texttt{eqnarray} : + +\begin{eqnarray} +a & < &b\\ +a & > &c\\ +< & « » &c\\ +< & \textrm{« text »}&c +\end{eqnarray} + +Pour terminer je rétablis la valeur par défaut : +\verb|\guillemetsinarrays| +\guillemetsinarrays +et si j'essaye le même exemple j'obtiendrais +le message : \\ +{\makeatletter\let\@PreserveBraces={% uggly hack for plain +\vers|! Argument of \@PreserveBraces has an|\\ +\vers|extra }.| +}% closing hack. + +\section{Guillemets verbatim} + +Avec l'option \verb|\nofrenchguillemets| il est possible +--~si \FP\ travaille en codage de fonte du genre \texttt{T1} +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding\else +(mais ca ne semble pas être le cas ici)\fi}% +~-- +\nofrenchguillemets +d'imprimer des guillemets 8-bits en verbatim : \verb|« »|. +\frenchguillemets + +\iflatex +\section{Environnement guillemets exclus} + +\begin{versatim} +\guillemets{} Je me suis dit que : +« avec l'option [...] les guillemets +sont inopérants. \endguillemets{} +\end{versatim} +\SmsG +\noeveryparguillemets +\guillemets{} +\verb|[\guillemets{}]| Je me suis dit que : +« avec l'option \vers|\noevery|\-\vers|par|\-\vers|guillemets| +on ne doit pas avoir un environnement qui se termine avant la fin +du paragraphe. C'est pourquoi l'environnement \texttt{guillemets} +n'est plus autorisé dans ce cadre. +Désormais un message est émis et ces environnements +guillemets sont inopérants. \endguillemets{} + +On note que \verb|\guillemets{}| n'a aucun effet visible +et que le début de paragraphe est forcé aux premiers +caractères-guillemets ouvrants qui suivent. Le +\verb|\endguillemets{}| de fin d'environnement ferme cependant +le paragraphe. + +\guillemets [\verb|\guillemets{}|]\! +Ces environnements exclus dans le cadre de cette option + peuvent être de premier ou +/\guillemets{} deuxième \endguillemets{}/ niveau +comme ici (slashs). [\verb|\endguillemets{}|] +\endguillemets{} + +\FmsG +\frenchguillemets +\fi% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\english +Notice that with standard \LaTeX\ you obtain a message +saying that \verb|\guillemotleft| and \verb|\guillemotright| +are invalid in math mode when you try to use guillemets +in an \texttt{array} environement. +\NL{9} + +\smallskip + +\section{Verbatim Guillemets} + +The 8bit french guillemets chars printed within +a verbatim environnement give here: \verb|« »| + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Utilisation de la \mdseries\texttt{toc}} + +Il n'est pas prévu de pouvoir composer une table des matières ou un +sommaire dans plus d'une langue. +On notera que \verb|\sommaire| est un apport de \FP. + +\section{Fichiers {\mdseries\texttt{lof}} et {\mdseries\texttt{lot}}} +On vérifie ici que la ponctuation française n'a pas créé +d'ennui particulier. +Nous avons laissé en blanc la figure \ref{x«:;!?»x} +qui n'est qu'un simple +test. De même le tableau \ref{y`«:;!?»'y} n'est là que pour +créer une entrée dans la liste des tableaux. + +Le {\em caption} de la figure +\ref{x«:;!?»x} + doit apparaître com\-me ceci : + {\it « essai » ; 2 cm ! pourquoi pas ?} +\begin{figure}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\%\vspace*{2cm} +\ \\ +\ Peu importe la figure...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{« essai » ; 2 cm ! pourquoi pas ? + \protect\\ (cf. aussi le tableau \ref{frenchdactylo})} +\label{x«:;!?»x} +\end{figure} + +Le {\em caption} du tableau +\ref{y`«:;!?»'y} + doit être comme ceci : +{\it ` « essai » ; 2 cm ! pourquoi pas ? '} +\begin{table}[h] +\caption{` « essai » ; 2 cm ! pourquoi pas ? ' + \protect\\ (cf. aussi le tableau \ref{frenchdactylo})} +\label{y`«:;!?»'y} + +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau\footnote{Une note de tableau.}...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +On notera les libellés ({\sc Fig.} et {\sc Tab.}) plus confor\-mes à +l'usage français. Ne pas oublier non plus que les titres de tableaux sont +toujours placés, en français, avant ceux-ci contrairement aux figures. + +\FP\ ne prévoit pas que l'on puisse composer une +partie des tables des figures (ou tableaux) en français et une autre +en anglais par exemple. Les fichiers \verb|.lof| et \verb|.lot| seront +donc composés entièrement dans la langue présélectionnée. + +\newpage\english +\section{{\mdseries\texttt{toc}} file use} +No facility is given to typeset the \verb|.toc| in various languages. + +Notice that \verb|\sommaire| is a new command brought up with this +package. + +\section{{\mdseries\texttt{lof}} and {\mdseries\texttt{lot}} files} +Same test in English just to verify that our french modifications +does not affect the text in English. + +You will notice, of course, that the caption names are re-established +to their original values ({\bf figure} and {\bf table}). + +The following figure (not referable) %(\ref{ex«:;!?»ex}) +caption must look like: +« essai »; 2 cm! Why not? +\begin{figure}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter how is the figure$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{« essai »; 2 cm! Why not? + \protect\\ (cf. also the table \ref{frenchdactylo})} +%\label{ex«:;!?»ex}% produit un missing \endcsname +\end{figure} + +The {\em caption} of the table (not referable) %\ref{ey`«:;!?»'ey} +must look like: +` « essai »; 2 cm! Why not? ' +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter how is the table\footnotemark% \footnotetext est perdu ! + $\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{` « essai »; 2 cm! Why not? ' + \protect\\ (cf. also the table \ref{frenchdactylo})} +%\label{ey`«:;!?»'ey}% generates missing \endcsname +\end{table}\footnotetext{A note from a table.} +\NL1 + +Notice that we have here the standard caption names used by \LaTeX{}. + +You can see in the French column the specific labels and places of caption +titles (under the figure but over the table). + +Don't try to compose \verb|.lof| and \verb|.lot| files in more than one +language, it's not designed in this (stupid?) way! + +\french +\begin{table*}[tb] +\caption{` « essai » ; 2 cm ! pourquoi pas ? ' + (cf. aussi le tableau \ref{frenchdactylo})} +\label{2`«:;!?»'2} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau sur deux colonnes% +\footnote{Une note de tableau.}...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table*} + +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Encore un tableau...} +Mais celui-ci est sur deux colonnes si l'option +\verb|twocolumn| est active. Vérifions simplement +que le traitement est le même qu'en une seule +colonne. + +Le {\em caption} du tableau +\ref{2`«:;!?»'2} + doit être comme ceci : +{\it ` « essai » ; 2 cm ! pourquoi pas ? '} + +\section{\sloppy Encore {\mdseries\texttt{\textbackslash labelsinmargin}}} + +À nouveau nous utilisons \verb|\labelsinmargin| +\labelsinmargin +pour vérifier son fonctionnement dans une figure +et un titre de figure + +\begin{figure}[h] +\label{label de la figure} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe la figure...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{le titre de la figure avec label +\label{label du titre fig.}} +\end{figure} + +Même test avec un tableau : +\begin{table}[h] +\label{label du tableau} +\caption{le titre du tableau avec label\label{label du titre tab.}} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +\sloppypar{ +Désactivons définitivement l'option +avec \verb!\nolabelsinmargin!. +} +\nolabelsinmargin + +\newpage\english +\NL8 +\section{{\mdseries\texttt{\textbackslash labelsinmargin}} again} + +Again we test \verb|\labelsinmargin| +\labelsinmargin +to verify that it is running within a figure +and in a figure's caption. + +\begin{figure}[h] +\label{label in a figure} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter the figure$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{title with a label\label{label in fig. caption}} +\end{figure} + +Same test with a table: +\begin{table}[h] +\label{label in a table} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter the table$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{title with a label\label{label in a tab. caption}} +\end{table} + +Disactivate definitely the option with \verb!\nolabelsinmargin!. +\nolabelsinmargin + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\section{Notes dans \mdseries\texttt{\textbackslash caption}} + +Si une note dans un tableau doit être imprimée à la fin du +tableau, une note dans un titre de tableau doit être +imprimée en fin de page. Malheureusement \LaTeX{} perd +le texte des notes dans les environnements {\tt figure} et +{\tt table}. L'ex\-ten\-sion \FP\ prévient l'utilisateur +que le texte doit être réinséré à l'aide de \verb|\footnotetext|. + +\begin{table}[h] + +\SmsG% +\caption[Essai de footnote dans un caption de tableau] + {Légende\protect\footnote{Une note de bas de page.}} +\FmsG% + +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Peu importe le tableau...\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} +\footnotetext{Une note de bas de page.} + +\section{{\mdseries\texttt{\textbackslash caption}} vide} + +\begin{table}[h] +\caption{} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Tableau sans légende\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +\section{\mdseries\texttt{\textbackslash nombre}} + +Les nombres en français sont imprimés correctement lorsque l'on +utilise \verb|\nombre|, ainsi : + +\begin{verbatim} +\nombre{123 456,123 456} +\end{verbatim} +imprime \nombre{123 456,123 456} au lieu de la forme habituelle + {\regularmathcomma $123 456,123 456$} +ou \mbox{123 456,123 456} suivant que l'on est en mode math +ou en mode texte. + +On y voit des espaces fines à chaque millier et (normalement) +une virgule sans espace supplémentaire comme cela se produit +en mode math avec \TeX{} standard. + +\section{Autre chose ?} +Non ! + +[espace libre utilisable] + +\newpage\english + +\section{Notes within \mdseries\texttt{\textbackslash caption}} + +Normally in French we print table's footnotes at the end of the table +but it can't be the case when a footnote is called from a caption title. +But unfortunately footnote's text is lost when inside a \LaTeX{} figure +or table environnement, as shown here. +Thus {\tt french.sty} warn the user with the appropriate message, but +in English nothing is done. + +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ No matter the table$\ldots{}$\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption[footnote try within a table's caption] + {Caption title\protect\footnote{A footnote page.}} + +\end{table} +%\footnotetext{A footnote page.} + +\section{Empty \mdseries\texttt{\textbackslash caption}} + +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Empty caption\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{} +\end{table} + +\section{\mdseries\texttt{\textbackslash nombre}} + +French number should be correctly printed using +\verb|\nombre|, so : + +\begin{verbatim} +\nombre{123 456,123 456} +\end{verbatim} +should not print as usual +$123 456,123 456$ nor \mbox{123 456,123 456} +(depending you are in math or in text mode) +but $123\,456{,}123\,456$. +\NL1 + +We see here thin spaces between each thousand part and no +(usual) space after the comma (as it is in math with standard +\TeX{}). + +\smallskip + +\section{Anything else?} + +No! + +\noindent +[free space to reuse] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Le 1\protect\fup{er} paragraphe} +Notez bien que le 1\fup{er} paragraphe d'une section +ne commence jamais au fer à gauche +en français, comme vous le voyez ici. + +Le deuxième paragraphe démarre comme le premier...\footnote{% +La typographie du titre de section (1\fup{er}) est à noter ; + {\tt mysmaller.sty} a été utilisé +à la compilation de {\tt frenchrf} avec \LaTeX{}. +Il existe aussi l'extension {\tt relsize} qui fonctionne +bien avec \FP.} + +\section{Test des listes}\label{listes} + +Voici un test d'énumération (\verb|itemize|) de \LaTeX{} : + +\begin{itemize} +\item liste de niveau 1 ; + \begin{itemize} + \item incluant un niveau 2, + \begin{itemize} + \item mais aussi un niveau 3, + \item peu utilisé ; + \end{itemize} + \item le niveau 2 se terminant ici ; + \end{itemize} +\item suite de la liste de niveau 1 ; +\item dernier élément de niveau 1. +\end{itemize} + +On remarquera les deux choses suivantes : +\primo les marqueurs sont identiques quel que soit +le niveau et \secundo aucun élément ne commence par une majuscule. +\NL2 + +\section{Définition de langue} + +Cette partie n'a plus de sens (R. J.). +%On peut se définir une langue comme par exemple le kathmandouais par : \\% +%\verb|\NouveauLangage[2]|\verb|{kathmandouais}|\\% +%\global% for TeX--XeT tests +%\def\kathmandouaisTeXmods{\empty} +% \NouveauLangage[2]{kathmandouais} % +%et ensuite on peut écrire kathmandouais en tapant : +%\verb|\kathmandouais| +%\SmsG% +%\kathmandouais%Message a ignorer si vous n'avez que 2 langues definies. +%bla... blabla... bla% +%\typeout{I AM WRITING KATMANDOUAIS, Ye\string! (language=\the\language)}% +%\FmsG% +%\footnote{Mais bien entendu les césures ne seront pas bonnes car elles +%seront faites à partir d'un language existant. On notera la typographie +%du numéro de cette note saisie en {\em Katmandouais}.} +% et revenir au français par +%\verb|\french|\french% +%\footnote{Si le point qui suit n'est pas accolé au mot {\tt french} +%alors cela signifie que des {\em blank space} traînent dans +%\FP.}. +%S'il n'y a pas de commande \verb|\kathmandouaisTeXmods| de définie +%rien ne se passera +%vraiment, cela sera équivalent à \verb|\relax|, seul un message +%d'avertissement sera émis. + +\newpage\english +\section{First paragraph} +In English each paragraph is indented except the first one of a section, +subsection, etc. as you can see in this example. + +Subsequent paragraphs start indented$\ldots{}$\NL1 + +\section{Itemized lists} +Here is the same french \verb|itemize| list:\NL1 + +\begin{itemize} +\item liste de niveau 1; + \begin{itemize} + \item incluant un niveau 2, + \begin{itemize} + \item mais aussi un niveau 3, + \item peu utilisé ; + \end{itemize} + \item le niveau 2 se terminant ici ; + \end{itemize} +\item suite de la liste de niveau 1 ; +\item dernier élément de niveau 1. +\end{itemize} + +You can compare english and french lists. +Notice firstly that item markers are identical at each level and secondly +that each item never starts with an uppercase letter. + +\section{Create a language} + +This creation is now obsolete (R. J.). +%There is a new control sequence to allow {\em the creation} of new language:\\ +%\verb|\NouveauLangage[n]{language}|\\ +%This command is in fact used internally but it can be also used elsewhere +%to define a new language which rules will be set by:\\ +% \verb|\<language>TeXmods| (if defined.) The internal language number \verb|n| +%tells \TeX{} what hyphenation table is to use among those defined at +%\verb|INITEX| time. + +\begin{table*}[th]% pour la page suivante +\begin{center} +\fbox{Attention : psfig est périmé ; il n'est utilisé ici qu'à des fins de test. (B. G.)}\\[2ex] +\fbox{Puisque psfig est périmé utilisons graphicx et epstopdf (R. J.)} +\end{center} +\end{table*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Caractères actifs} +Quelques jeux de macros doivent parfois être chargés +directement dans le document +et utilisent les caractères {\em actifs\/} de \FP. Il y +a alors conflit ouvert. Plusieurs solutions sont offertes, soit utiliser +l'ordre : \\ +\verb| \originalinput{fichier}|\\ + soit : +\begin{verbatim} + \begin{nonfrench} + ... macros-instructions... + \end{nonfrench} +\end{verbatim} +%Nous avons adopté la deuxième solution ici : +% +%\tthyphenation +%\begin{versatim} +%Saluons au passage Trevor Darrell, l'auteur de \verb|psfig| : +% \begin{nonfrench} +% \let\psfig\undefined +% \input mypsfig.sty +% \begin{center} +% \ \hbox{\vbox{\psfig{figure=% +% myfigure.ps,height=1in}}}\ +% \end{center} +% \end{nonfrench} +%\end{versatim} + +%Saluons au passage Trevor Darrell, l'auteur de \verb|psfig| : +%\begin{nonfrench} +% \let\psfig\undefined +% \input mypsfig.sty +% \begin{center} +% \ \hbox{\vbox{\psfig{figure=% +% myfigure.ps,height=1in}}}\ +% \end{center} +%\end{nonfrench} +Mais attention n'utilisez pas en français un code que +vous auriez chargé +en anglais ou réciproquement ! + + +L'extension \FP\ n'est plus compatible avec \verb|psfig|. +Mais pour montrer quand même l'image que Bernard Gaule voulait placer ici, la voici +ayant sous Linux remplacé +\texttt{myfigure.ps} en son expression encapsulée \texttt{myfigure.eps} +par « \texttt{convert myfigure.ps myfigure.eps} ».\NL1 +%L'ordre \texttt{convert} est une commande Linux. +%En voici l'exemple -- sans utiliser \verb|nonfrench| -- avec +%\verb|\psdraft| : +% \let\psfig\undefined +% \input mypsfig.sty +% \psdraft + +Saluons au passage Trevor Darrell, l'auteur de \verb|psfig| : \begin{center} + \ \hbox{\vbox{\includegraphics[height=1in]{myfigure.eps}}} +%{\psfig{figure=% +% myfigure.ps,height=1in}}}\ +% \ \hbox{\vbox{\psfig{figure=% +% myfigure.ps,height=1in}}}\ +\NL1 + \end{center} +Voici le code modifié : +\begin{verbatim} +% \input mypsfig.sty +% \psdraft + \begin{center} + \ \hbox{\vbox{\includegraphics% + [height=1in]{myfigure.pdf}}} +% \ \hbox{\vbox{\psfig{figure=% +% myfigure.ps,height=1in}}}\ + \end{center} +\end{verbatim} + +\NL1 +Comme vous le voyez l'appel à \texttt{mypsfig.sty} n'est plus nécessaire. +Mais nous avions chargé \texttt{graphicx} et \texttt{epstopdf} dans les styles chargés à la base. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\english +\section{Active characters} +Codes that were designed for English might bring problems when used with +\FP\ because few characters are {\em activated\/}. +Few solutions are offered, either:\\ +\verb| \originalinput{file}| + +or: +\begin{verbatim} + \begin{nonfrench} + ... macros-instructions... + \end{nonfrench} +\end{verbatim} +%We used here the second solution: +%\begin{verbatim} +%Saluons au passage Trevor Darrell, +% l'auteur de \verb|psfig| : +% \begin{nonfrench} +% \let\psfig\undefined +% \input mypsfig.sty +% \begin{center} +% \ \hbox{\vbox{\psfig{figure=% +% myfigure.ps,height=1in}}}\ +% \end{center} +% \end{nonfrench} +%\end{verbatim} +% +%\notthyphenation +%%\begin{nonfrench}% inutile d'obtenir un message de warning +% \let\psfig\undefined +% \input mypsfig.sty +But be carefull, don't use in French a code that was loaded in English +or reciprocally! + +The \FP\ extension is no more compatible with \verb|psfig|. + +But in order to show the image that Bernard Gaule had in mind to place here, you can see it +after having converted with the Linux command \texttt{convert myfigure.ps myfigure.eps} +his original \texttt{myfigure.ps} in an encapsulated version \texttt{myfigure.eps}. + +%\NL1 +Saluons au passage Trevor Darrell, % + l'auteur de \verb|psfig| : + \begin{center} + \ \hbox{\vbox{\includegraphics[height=1in]{myfigure.eps}}} +% \ \hbox{\vbox{\psfig{figure=% +% myfigure.ps,height=1in}}}\ + \end{center} +\NL1 +%%\end{nonfrench} +Here is the modified code: +\begin{verbatim} +% \input mypsfig.sty +% \psdraft + \begin{center} + \ \hbox{\vbox{\includegraphics% + [height=1in]{myfigure.eps}}} +% \ \hbox{\vbox{\psfig{figure=% +% myfigure.ps,height=1in}}}\ + \end{center} +\end{verbatim} +As you can see, a call to \texttt{mypsfig.sty} is no more necessary. +But \texttt{graphicx} and \texttt{epstopdf} have been loaded in the main module. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\section{Abréviations} +\abbreviations +Si on demande \verb|\abbreviations| alors on a +accès à un fichier d'abré\-via\-tions +typo\-graphi\-ques françaises. +Ainsi je saisis \verb|"monseigneur"| et j'imprime "monseigneur"\!. +De même, avec ML\TeX{} je saisis \verb|"deuxième"| +(vérifiez dans le +source que ce mot est bien codé en 8bits) et j'imprime "deuxième"\!% +. %alors que le fichier d'abréviations contient \verb|"deuxi\`|\verb|eme"|. +Ainsi il n'est plus vraiment indispensable de se rappeler que +l'abréviation de madame est "madame" (et maître : "maître"\!). + +Lorsqu'un mot ne figure pas dans le fichier d'abréviations, il est alors +imprimé tel que. Ainsi \verb|"GUTenberg"| imprimera +\SmsG% +"GUTenberg". +\FmsG% + Mais n'oubliez jamais le double guillemet fermant sinon vous obtiendrez + un message du genre : +\begin{versatim} + Paragraph ended before \AbbrevName was complete. +\end{versatim} + +Je peux aussi donner mon fichier personnel d'abréviations en codant :\\ +\verb|\abreviations[mon_fichier_personnel]| + +On retire ces possibilités par la commande \verb|\noabbreviations|. +N'oublions pas que le caractère \verb|"| sert normalement en \TeX{} +comme en \LaTeX{} à exprimer les nombres en hexadécimal. + +\section{Monsieur s'abrège "Monsieur"} + +Que je saisisse \verb|"Monsieur"| ou \verb|"monsieur"| +j'obtiens la même abréviation : "Monsieur" ou "monsieur", respectivement. + +Il n'en est pas toujours de même... ainsi lorsqu'on saisit +\verb|"Numéro"| et \verb|"numéro"| on obtient respectivement : +"Numéro" et "numéro", car \verb|Numéro| +est une entrée dans le fichier des abbréviations où il est écrit +\verb|{Numéro}|. + +Il est désormais possible de placer une abréviation dans un titre +de chapitre ou de section, comme le titre de cette section le +démontre ; nous avons saisi : +\begin{verbatim} +\section{Monsieur s'abrège "Monsieur"} +\end{verbatim} + +\noabbreviations + +\newpage\english + +\section{Abbreviations} +The abbreviation facility offered in \FP\ is based on +an abbreviations file. When requested by \verb|\abbreviations| one +may call any \verb|"abbreviation"|. If this abbreviation is found in the +file it will be replaced by the typographic expansion, if not it will +be printed as is.\NL2 + +But never forget the ending double quotes otherwise you will obtain the +terrible message: +{\tt Paragraph} {\tt ended before} \texttt{\textbackslash AbbrevName} +{\tt was complete.} +\NL4 + +You can have your own abbreviations file by calling: +\verb|\abreviations[my_file]|.\NL1 + +Saying \verb|\noabbreviations| this facility is lost. Remember that the +char \verb|"| is used normally in \TeX{} as in \LaTeX{} to start an +hexadecimal number. + +But used in English, \verb|"monsieur"| will give "monsieur"% +\footnote{Notice the quoting!}. + +\newpage\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Autres macros utiles} +\verb|\fsc{KnUtH}| permet d'imprimer \fsc{KnUtH} et \verb|\lsc{SnCf}| +donne \lsc{SnCf}. Cela doit aussi marcher si le mot commence par une +accentuation comme ici avec le mot \fsc{\'% a laisser tq a cause du 7bits +epinal} et même quand cette accentuation est plus loin dans +le mot comme ici dans \fsc{ANDR\'% a laisser tq a cause du 7bits +E}. + +\bigskip +Voici une note% +\footnote{La note.\label{NOTE}} +de bas de page commandée par \verb|\footnote{La note.\label{NOTE}}|. +Je peux faire à nouveau appel à cette note\refmark{NOTE} + par l'ordre \verb|\refmark{NOTE}|. + +\bigskip +Par analogie avec l'environnement \verb|verse| : +\begin{verse} +%\moretolerance % pour eviter un leger overfull hbox +1\iere{} ligne : cette ligne est bien trop longue, elle doit être coupée autant de fois que nécessaire...\\ +2\ieme{} ligne : le test terrible de...\\% +3\ieme{} ligne : `ceci est le test des quotes'\\ +\end{verse} +\tthyphenation +voici le même test (sans \verb|\\|) +avec l'environnement \vers|versatim| qui est +un environnement \vers|verba|\-\vers|tim| composé +avec des coupures de lignes +comme l'est l'environnement \verb|verse| et dont les {\em quotes} peuvent +être imprimées avec des accents si on précise +\vers|\noenglishquote| : +\noenglishquote +\begin{versatim} +1\iere{} ligne : cette ligne est bien trop longue, elle doit être coupée autant de fois que nécessaire... +2\ieme{} ligne : le test terrible de \end{document} +3\ieme{} ligne : `ceci est le test des quotes' +\end{versatim} +\englishquote + +\allowuchyph +Et maintenant voici l'ordre réduit \verb|\vers| qui +s'utilise comme \verb|\verb| et doit permettre de couper une +longue chaîne de caractères \texttt{ver\-batim}. Celle-ci +sera coupée par défaut entre les mots (\vers|\notthyphe|\-\vers|nation|) +mais pourra l'être à l'intérieur des mots si on précise +\tthyphenation \vers|\tthyphe|\-\vers|nation| comme ici : « +\vers|Longue Chaîne De Caractères À Couper Absolument| ». +Les mots commençant en majuscule ne pourront être coupés +que si \vers|\uchyph=1|, valeur par défaut dans \FP\ +(\vers|\|\vers|allow|\-\vers|uchyph|) qui est utilisée pour cette +partie uniquement. + +\subsection*{Test de {\mdseries\texttt{\textbackslash fsc}} +(\fsc{French CAPS})} +Ce paragraphe teste la protection de certaines macro-instructions. + +\disallowuchyph\notthyphenation +\newpage\english +\section{Other useful macros} +French patronymic names are printed in small capitals with the first +letter in uppercase. That is done with the \verb|\fsc| macro. +Another macro \verb|\lsc| is available to print all the word(s) in small +capitals, specially usefull for trademark or companies names. + +\LaTeX{} is at the current time unable to print a \verb|\ref| as +a footnotemark, the command \verb|\refmark| is able to do that. + +Also, \LaTeX{} doesn't offer any {\tt verbatim} style able to +hyphenate lines. \FP\ is able to do this with the +environment {\tt versatim} or the \texttt{\textbackslash vers} order within a +line. + +These environments allow to replace the {\tt tt} quoting +({\tt ` '}) by more realistic ones ({\tt\`{ } \'{ }}) with +the order \texttt{\textbackslash noenglishquote}. Of course this environment +produce nothing different from the standard \verb|verbatim| when +used in \verb|\english|: +{\overfullrule=5pt + +\hfuzz=30pt +\begin{versatim} +1\iere{} ligne : cette ligne est bien trop +2\ieme{} ligne : le test terrible de... +3\ieme{} ligne : `ceci est le test des... +\end{versatim} + +\SmsG% + +And now this a test of a long string within a \verb|\vers|: +``\vers|Longue Chaîne De Caractères À Couper A| +This string would be hyphenated only if someone said +\verb|\tthyphenation| previously. +} + +\FmsG% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Accents et {\mdseries\tt tabbing}} +\FP\ apporte une solution pour pouvoir introduire +des lettres accentuées dans un environnement \vers|tabbing| lorsque +le source \TeX{} est en 7bits ou utilise Ml\TeX{} +\footnote{% +Cette option est aussi utile désormais en T1 car les lettres accentuées +sont traduites avec \FP, de façon interne, en 7-bits à la \TeX. + }% + ; c'est l'option par défaut +\vers|\|\vers|tabbing|\-\vers|accents|\tabbingaccents. L'exem\-ple : +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \a`% + a matelas \> confort +\end{tabbing} +\notabbingaccents +doit s'imprimer ainsi : +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \>\a`a outils \> rustique \\ +Toile : \>\a`a matelas \> confort \\ +\end{tabbing} +\vspace*{-0.5\baselineskip} +Nous l'avions saisi comme suit : +\begin{versatim} +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \a`% + a matelas \> confort +\end{tabbing} +\end{versatim} + +\section{Figurettes} +Le style \verb|french| propose un environnement spécial, appelé +\verb|figurette|, + pour placer les figures à l'enfroit exact où +ces figures se présentent +dans le texte. Cela est particulièrement utile pour des petites figures, +domaine où \LaTeX{} n'est pas adapté en standard. +Pour réaliser ceci : + \begin{figurette} + \center\fbox{essai}\endcenter% rajoute pour plain TeX + \caption{Ceci est une figurette} + \label{figurette} + \end{figurette} +Nous avons écrit : +\begin{verbatim} + \begin{figurette} + \center\fbox{essai} + \caption{Ceci est une figurette} + \label{figurette} + \end{figurette} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\english +\section{Diacritics \& {\mdseries\tt tabbing}} +There is no way in a \LaTeX{} \texttt{tabbing} to put diacritics on letters +as we use them usually. Here is how is printed the {\tt tabbing} +you can find in the french part: + +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \`% + a matelas \> confort +\end{tabbing} + +and that would normally be printed as follows: + +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \>\a`a outils \> rustique \\ +Toile : \>\a`a matelas \> confort \\ +\end{tabbing} + + \begin{figurette} + \center\fbox{essai}\endcenter% rajoute pour plain TeX + \caption{Originally a figurette} + \label{engfig} + \end{figurette} +\NL{4} + +\section{Little figures} + +\FP\ offers a special environment called +\verb|figurette| which allows to put little figures EXACTLY +where they appear in the text. This is a lack in the present +versions of \LaTeX{}. In English the environment \verb|figurette| +is replaced by an environment \verb|figure[h]|; look at figure +\ref{engfig} we tried to put here without success and we +typed like this: + +\begin{verbatim} + \begin{figurette} + \center\fbox{essai} + \caption{Originally a figurette} + \label{engfig} + \end{figurette} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\ifx\drapeaufg\undefined\else +\section{Composition \protect\linebreak en drapeau} +À gauche on trouve une composition justifiée standard \LaTeX. +Dessous, une composition avec l'environnement \texttt{drapeaufg} +proposé par l'extension \FP, il s'agit d'une composition +\emph{en drapeau, au fer} à gauche. À droite, il s'agit aussi d'une +composition \emph{en drapeau, au fer} à gauche mais cette fois-ci avec +l'environnement \texttt{drapeaufgIN}, sans coupure de mots, comme cela +est recommandé par l'imprimerie nationale. + +\subsection{Tests ordinaires} +\textbf{\large Texte justifié de référence} + +\medskip +\def\GOfrench{\noindent{\fboxsep 0pt\fboxrule 0.2pt\fbox{\advance\hsize by -2pt + \hbox{\vbox{\noindent +« Par ailleurs, les lignes n'occupant pas toute la + justification (titres ou légendes le plus souvent) peuvent être + \emph{centrées} ou se présenter alignées verticalement + par la gauche sur la + marge de gauche de la page, ou \XX + verticalement par la droite sur la marge de + droite de la page. On dira alors qu'elles sont composées +\emph{en drapeau, au fer} à gauche ou \emph{en drapeau, au fer} à droite. +Dans ce type de composition, les coupures de mots sont proscrites et les +rejets à la ligne devront obéir à une certaine logique souvent dictée par le +sens. Ainsi on ne séparera pas l'article du substantif, le pronom personnel +sujet de son verbe, l'adjectif numéral du nom auquel il se \XX +rapporte, \etc. » +(règles Imprimerie Nationale, p~153)% +}}\hss}}} + +\let\XX\relax +\GOfrench + +\hbox{} + +\textbf{\large Drapeau, au fer à gauche} + +\medskip +\begin{drapeaufg} +\GOfrench +\end{drapeaufg} + +\newpage +\enlargethispage{20pt}\hbox{}\smallskip + +\hbox{}\smallskip\NL5 +Dans ce dernier cas, des débordements dans la marge droite +sont possibles ; ils sont à traiter +au cas par cas par de simples coupures de lignes placées aux endroits +recommandés par l'imprimerie nationale (selon texte encadré). Le +dernier texte est ainsi corrigé.\NL3\vspace*{-2.5pt} + +\textbf{\large Drapeau « fg », selon IN} + +\medskip +\begin{drapeaufgIN} +\GOfrench +\end{drapeaufgIN} + +\medskip +\textbf{\large Drapeau « fg IN », corrigé} + +\medskip +\let\XX\\ +\begin{drapeaufgIN} +\GOfrench +\end{drapeaufgIN} + +\newpage +\subsection{Tests en drapeau « fg », aux limites} +Voici deux tests aux limites de la composition +\emph{en drapeau, au fer} à gauche, sur une colonne +étroite (2cm) tout d'abord avec l'environnement +\texttt{drapeaufg} et ensuite avec la recommandation +de l'imprimerie nationale appliquée à +\FP\ (ou interprètée par l'environnement \texttt{drapeaufgIN}). + +Les coefficients de laideur (\texttt{badness}) +acceptés sont élevés, c'est la raison pour laquelle +aucun message d'\texttt{underfull hbox} +(tout comme celui d'\texttt{overfull}) +n'est émis dans les deux cas +ci-dessous. + +\bigskip + +\def\temp{\noindent{\fboxsep 0pt\fboxrule 0.2pt\fbox{\advance\hsize by -2pt + \hbox{\vbox{\noindent + instit instits +institut instituts +institution institutions +institutionnel institutionnels +institutionnelle institutionnelles +institutionnellement +constitutionnellement +inconstitutionnellement +}}\hss}}} + +\let\XX\relax +\parbox{2cm}{% +\begin{drapeaufg} +\hsize=2cm +\temp +\end{drapeaufg} +} +\hspace*{0.5cm} +\parbox{2cm}{% +\begin{drapeaufgIN} +\hsize=2cm +\temp +\end{drapeaufgIN} +} + +\newpage +\subsection{Tests en drapeau « fd », aux limites} +Nous effectuons ici les mêmes test mais avec +les environnements \texttt{drapeaufd} (fer à droite) +et \texttt{drapeaufdIN} (selon imprimerie nationale). +En fait, l'environnement +\texttt{drapeaufd} est tout simplement +un \texttt{raggedleft}. +\NL{9} + +\let\XX\relax +\parbox{2cm}{% +\begin{drapeaufd} +%\mbox{Avec \the\rightskip :} +\hsize=2cm +\temp +\end{drapeaufd} +} +\hspace*{0.5cm} +\parbox{2cm}{% +\begin{drapeaufdIN} +%\mbox{Avec \the\rightskip :} +\hsize=2cm +\temp +\end{drapeaufdIN} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\Large +\let\XX\relax +\subsection{Test « fd » classique} + +\begin{drapeaufd} +\GOfrench +\end{drapeaufd} + +\normalsize\bigskip + +L'½il aiguisé sera troublé car +les deux colonnes ne sont pas alignées horizontalement ; +cela est dû à la différence de matériel à composer, au total, +dans chacune des deux colonnes. + +\vfill + +\newpage +\Large +\subsection{Test « fd » IN} +\begin{drapeaufdIN} +\GOfrench +\end{drapeaufdIN} + +\normalsize\bigskip + +Quelque soit le corps de la police (dans les limites +classiques de \LaTeX{}), avec cette largeur de colonne, +on n'obtient pas de différence +de mise en page entre les deux environnements. Les règles +de l'imprimerie nationale sont donc plus largement appliquées +dans ce cas. + +\vfill +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\newpage\french +\hbox{} +\vfill +\centerline{\Large Page intentionnellement laissée blanche} +\vfill +\twocolumn + +\fi% on a saute si drapeaufg est inconnu (frencht) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Lettrines} +\SmsG% lettrine reduite a 1 seule lettre ! +Voici le test des lettrines proposées en mode semi-automatique +avec \FP\ : + +\bigskip +\verb| \flettrine{Quoi ?}| +\flettrine{Quoi ?} {Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +« Ici démarre une lettrine dans une citation. + +\bigskip +\lettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +\bigskip +\flettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +et la citation se termine ici. » + +\bigskip +\verb| \font\lettrinefont=cmr17 scaled|\\ +{\font\lettrinefont=cmr17 scaled \magstep5 +\verb| \magstep5\lettrine[`` {Paris} '']| +\lettrine[`` {Paris} ''] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés.\par} + +\bigskip +\verb| \lettrine[« {Paris} »]| +\lettrine[« {Paris} »] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +\bigskip +\verb| \flettrine[« {Paris} ]| +\flettrine[« {Paris} ] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. » + +\bigskip +\tthyphenation\noindent +\vers|\|\vers|font\lettrinefont=cmti12 scaled| \!\vers| \magstep4\lettrine| +{\em \% vérification d'italique.} +\font\lettrinefont=cmti12 scaled \magstep4\lettrine +Blalbla {\bf je blablate}, tu blablates, ils blablatent, b... +(ceci est l'exemple même de ce qu'il ne faut pas faire car ainsi +le mot n'est pas mis en petites capitales). Ceci avait pour but +de tester une police italique. + +\bigskip +\lettrine{L'absurdité} de cette lettrine... + +\notthyphenation +\FmsG + +\newpage\english + +\section{Illuminated letters} + +Look at the French part of this document because, in English, +these macros have no effect: + +\bigskip +\verb| \flettrine{Quoi ?}| +\flettrine{Quoi ?} {Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +« Ici démarre une lettrine dans une citation. + +\bigskip +\lettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +\bigskip +\flettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +et la citation se termine ici. » + +\bigskip +\verb| \font\lettrinefont=cmr17 scaled|\\ +{\font\lettrinefont=cmr17 scaled \magstep5 +\verb| \magstep5\lettrine[`` {Paris} '']| +\lettrine[`` {Paris} ''] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés.\par} + +\bigskip +\verb| \lettrine[« {Paris} »]| +\lettrine[« {Paris} »] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. + +\bigskip +\verb| \flettrine[« {Paris} ]| +\flettrine[« {Paris} ] +{sera toujours Paris}. Ceci est une lettrine obtenue +grâce au collègue allemand E.~{\sc Scha\-lück} et + aux différents codes qu'il +m'a donnés. » + +\bigskip +\noindent +\verb|\font\lettrinefont=cmti12 scaled| \verb| \magstep4\lettrine| +%{\em \% vérification d'italique.} +\font\lettrinefont=cmti12 scaled \magstep4\lettrine +Blalbla {\bf je blablate}, tu blablates, ils blablatent, b... +(ceci est l'exemple même de ce qu'il ne faut pas faire car ainsi +le mot n'est pas mis en petites capitales). Ceci avait pour but +de tester une police italique. + +\bigskip +\lettrine{L'absurdité} de cette lettrine... + +\onecolumn\newpage% +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% ===»» Il n'y a plus d'anglais au delà de cette limite ««=== +\def\lastlinein#1{\expandafter\gdef\csname #1\endcsname{\relax}} +\lastlinein{english}% this is for frencht.tex +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Lettrines automatiques ou non} + +\bigskip +\lettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\automaticlettrine + +\lettrine{THIS IS A TEST} (a default automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a default automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + + +\bigskip +\def\lettrinefontname{cmr17} +\lettrine{THIS IS A TEST} (a cmr17 automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a cmr17 automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\lettrine{Que vaut ce test ?} (en automatique) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\noautomaticlettrine +\lettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\lettrine{Que vaut ce test ?} (non-automatique) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{Énumérations} +L'espacement des énumérations françaises est + profondément modifié avec \FP, pour s'en +convaincre voir le test des listes page \pageref{listes} ou +l'environnement \texttt{order} ci-après. + +\section{L'environnement « {\mdseries\texttt{order}} »} +Un environnement spécifique est proposé, il s'agit de l'environnement +\verb|order| pour \LaTeX{} dont voici un petit exemple : + +\begin{order} +\item Bien regarder ; +\item l'espacement de chaque élément est spécial ; +\item l'espacement vertical est aussi différent. +\item A-D-O-P-T-E-Z \ \ L-E ! +\end{order} + +Ce prototype correspond bien aux énumérations +françaises (je ne +parle pas uniquement des marqueurs -- primo, secundo, \etc. -- +mais aussi de la gestion des espaces). En voici un autre exemple +concret : +\NL1 + +Les guillemets entrent aussi en ligne de compte : « Je citerai +3 cas très importants : +\begin{order} +\item le premier cas ; +\item le second ; +\item le dernier. +\end{order} +qui sont [...] » +\NL1 + +À noter que ce mécanisme de rajout des guillemets en début de +chaque élément de liste marche aussi avec un environnement +comme \texttt{itemize}. + +\expandafter\ifx\csname frenchTeXmods\endcsname\relax + \space% ce test ne marche pas en LaTeX standard. +\else + \ifx\frenchTeXmods\empty\space% ni en dummy french ! + \else +\section{Tests aux limites des guillemets anglais} + +Vérifions qu'il est possible d'activer temporairement +quelques caractères sans perturber le traitement. Exemple : + +\begin{verbatim} +{\catcode`\'=\active\catcode`\'=\active + `` Test guillemets anglais '' +} +\end{verbatim} + +{\catcode`\'=\active\catcode`\'=\active + `` Test guillemets anglais '' +} + \fi +\fi + +Un cas bien spécial avait été rencontré avec l'extension \myverb|amstex| +qui utilisait une référence avec des mathématiques dans une autre +référence, ce qui entrainait une boucle infinie avec \FP. Voici +le test en question : +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% this code generates a loop with versions of french < V3,42 %%%%%% +\makeatletter +\def\r@ref{{\ref{nulllabel}$'$}}{1} +\makeatother +\ref{ref} = 1 $'$ % boucle garantie si < V3,42 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Autre test aux limites ? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{« Autres tests »} +Nous sommes ici en une colonne. + +\bigskip +Voici un test d'encadré contenant le mode \verb|centering| : +\begin{center}\fbox{% +\parbox{6cm}{\begin{center}Information : si vous voulez me joindre, +mon tél. : 01 69 35 85 40. Je n'y suis qu'aux horaires de +bureau.\end{center}}% + }\end{center} + +Bon ?\footnote{L'objet de cette note de bas de page est +de vérifier l'espacement des inférieurs et supérieurs, +\primo en \texttt{\backslash tt} : +\texttt{XXXX ===> <=== YYYY} et +\secundo en {\tt verbatim} : +\myverb|french V4 < french V5 > frenchOLD|% +.} + +\begin{table*}[h] +\caption{Dactylographie et typographie comparées} +\label{frenchdactylo} +\vspace*{1cm} +\huge +\begin{tabular}{|r|r|} +\hline +dactylographie\ \ \ \ \hfill & \ \ \ typographie\ \ \ \hfill\\ +\hline + \verb|use \dots or \ldots| \ & use \dots\ or $\ldots{}$\ \\ + \verb|utilisez...| \ & utilisez...\ \\ + \verb|semi-colon;| \ & semi-colon;\ \\ + \verb|point-virgule ;| \ & point-virgule ;\ \\ + \verb|My god!| \ & My god!\ \\ + \verb|Mon dieu !| \ & Mon Dieu !\ \\ + \verb|Why not?| \ & Why not?\ \\ + \verb|Pourquoi pas ?| \ & Pourquoi pas ?\ \\ + \verb|``I say''| \ & ``I say''\ \\ + \verb|« Je dis »| \ & « Je dis »\ \\ + \verb|He said: Yes| \ & He said: Yes\ \\ + \verb|Il dit : non| \ & Il dit : non\ \\ + \verb|$1\,234,567$| \ & $1\,234,567$\ \\ + \verb|$f(x,\,y)$| \ & $f(x,\,y)$\ \\ +\hline +\end{tabular} +\normalsize +\end{table*} + +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifx\itshape\undefined\else% avoid old frencht crash +\subsection{Test des guillemets dans un \mdseries\texttt{\backslash edef}} + +Les guillemets peuvent être appelés dans une définition de macro +telle que \verb|\edef| mais comme les guillemets ne sont pas expansibles +entièrement il a donc fallu arriver à réaliser une définition acceptable. + +Ainsi \verb|\edef\testedef{« essai »}| +\edef\testedef{« essai »} +donnera la curieuse définition suivante : \\ +\hbox{}\hfill\texttt{\meaning\testedef} ; \\ +elle reste complètement expansible (dans certaines conditions) +ou pas du tout (comme ici appelée en tt on obtiendra +le résultat suivant : \texttt{\testedef}). +\fi + +\subsection{{\mdseries\tt <{}} et {\mdseries\tt >{}} redéfinis} + +Mes utilisateurs sont terribles ! Ils veulent le beurre, l'argent du +beurre et aussi la fermière... S'ils codent +\verb9\def\truc<#1|#2>{/#1 OU #2/}9 + ils veulent pouvoir obtenir +/Essai OU Erreur/ en saisissant \verb9\truc<Essai|Erreur>9. Faisons +l'essai réel : +{\def\truc<#1|#2>{/#1 OU #2/} \truc<Essai|Erreur>}. + +Encore plus fort : nous voulons avoir une notation de Backus-Naur +c'est-à-dire des \verb|\rangle| et \verb|\langle|. Voici la +définition que nous avons entrée avant le \verb|\begin{document}| : +\begin{verbatim} +{\catcode`\<=\active\catcode`\>=\active% +\global\def<{\left\langle}\global\def>{\right\rangle} +} +\end{verbatim} + +Pour tester l'efficacité de ces macros il suffit alors de faire +par exemple : +\begin{verbatim} +« $<assignement>$ » +\end{verbatim} +à condition que l'option \verb|\frenchguillemets| soit +active (en maths). + +Essayons cela : +% en fait il faut reactiver cela maintenant : +{% + \gdef\myinf{\left\langle}% + \gdef\mysup{\right\rangle}% +« $\frenchguillemets% on a \nofrenchguillemets avec AmSTeX + <assignement>$ ». +}% +% Remettre ici pour frenchle +\global\let\myinf\inferieura% A no-op def +\global\let\mysup\superieura% for a temporary action + +\subsection{\mdseries\texttt{\textbackslash special}} +L'inclusion d'une commande \verb|\special| est ici testée :\\ +{%%%%%%%%%%%% attention : commentaires impossible dans cette partie. + \catcode`\%=12 + \texttt{\backslash special}\verb|{ps:|{\tt %%% + }\verb| Texte bidon {`«manuel:C;!?»'}}| + \special{ps:%%% + Texte bidon {`«manuel:C;!?»'}} +} + +\subsection{{\mdseries\texttt{\textbackslash refmark}} dans un tableau} + +Où l'on reparle encore de \verb|\refmark|... + +La note \ref{bas} est référencée depuis le tableau ci-dessous, tout comme +les notes du tableau lui-même. + + \begin{table}[htbp] + \begin{center} + \begin{tabular}{|c|l|} + \hline + Lettre & Utilisation\\ + \hline + {\tt h} & petit blabla gentil et anodin \refmark{bas}\\ + {\tt l} & ici reblabla assez moyen\refmark{bas}$^,$\refmark{refnote}\\ + {\tt L} & autre grand grand grand blabla + \footnote{La note du tableau « refmark ».\label{refnote}}\\ + \hline + \end{tabular} + \caption{Le titre du tableau.} + \end{center} +\end{table} + +En dehors du tableau on peut faire appel\footnote{La note de page.\label{bas}} +à une note qui est, par contre, référencée dans le tableau. Tout cela +est réalisé grâce à l'ordre \verb|\refmark| introduit par l'extension +\FP. + +\subsection{{\mdseries\texttt{\textbackslash nombre}} en argument} + +Voici un test simple permettant de valider \verb|\nombre| lorsqu'il +est en argument d'une macro-instruction : + +\begin{verbatim} +\noindent +1\,234 un nombre simple !\\ +$*$\\ +\nombre{1 234} un nombre simple !\\ +\nombre{1 234,5} avec une décimale.\\ +\texttt{\nombre{1 234,56} avec fonte tt.}\\ +\emph{\nombre{1 234,567} en mode emphasé.}\\ +\nombre{1 234,567 8} avec encore une décimale. +\end{verbatim} + +Il faut noter que l'ordre \verb|\nombre| est toujours composé en mode +mathématique ce qui force l'utilisation des fontes mathématiques. +Tout changement de fonte doit donc être précisé de façon ad hoc. +Par ailleurs, la composition n'est garantie que si l'option +\verb|\nofiles| n'a pas été indiquée en début de document. +Voici ce que ce test donne : + +\noindent +1\,234 un nombre simple !\\ +$*$\\ +\nombre{1 234} un nombre simple !\\ +\nombre{1 234,5} avec une décimale.\\ +\texttt{\nombre{1 234,56} avec fonte tt.}\\ +\emph{\nombre{1 234,567} en mode emphasé.}\\ +\nombre{1 234,567 8} avec encore une décimale. + +\ifx\documentclass\undefined % Still Plain! so no \DeclareFontFamily +\else% +\subsection{{\mdseries\texttt{\textbackslash label}} en mode math} + +Il s'agit ici de tester la commande \verb|\label| dans un environnement +\verb|equation| : + +\begin{verbatim} +Vérifions le numéro de l'équation \ref{labelequation} ci-dessous : +\begin{equation}\label{labelequation} +V_{Lm}=\frac{L}{t_p} +\end{equation} +\end{verbatim} + +Voici le résultat du test : + +Vérifions le numéro de l'équation \ref{labelequation} ci-dessous : +\begin{equation}\label{labelequation} +V_{Lm}=\frac{L}{t_p} +\end{equation} +\fi + +\csname TexteComplementaire\endcsname + +\subsection{Bibliographie} +Voyons maintenant la bibliographie. +Dans \cite{`«manuel:Gaulle;!?»'} on trouvera... +\nocite{`«merci:Ronan;!?»'} +Par contre +\cite[pp.1--3, X \& consorts]{«blabla»} +est beaucoup plus fourni en exemples et commentaires... Mais dans +\cite[p. 25 \S~13 {{\it et seq.}}]{`«torture:Gaulle;!?»'} +toutes ces informations +sont plus détaillées. + +Ce qui suit n'est pas un exemple de belle bibliographie, juste une +vérification de bon fonctionnement. + +\bibliographystyle{plain} + +\begin{thebibliography}{Knuth 99} + +\section*{Bibliographie dans le document} + +\bibitem[Knuth 99]{«blabla»} Le \TeX book ou la « bible » + des gourous \TeX +\bibitem{`«manuel:Gaulle;!?»'} B. {\sc Gaulle}, {\em + Le résultat d'une « {\em dure} » journée de travail !} +\bibitem{`«merci:Ronan;!?»'} R. {\sc Keryell}, {\em + Le gentil normalien qui m'a beaucoup aidé grâce à sa thèse...} +\bibitem{`«torture:Gaulle;!?»'} B. {\sc Gaulle}, {\em + Notice d'utilisation du style french}, 1991-1999. +\bibitem{`«tortureFP:Gaulle;!?»'} B. {\sc Gaulle}, {\em + Notice d'utilisation de l'extension \FP\ pour \LaTeX}, 2000-20xx. +\end{thebibliography} + +\ifx\documentclass\undefined % Still Plain! so skip +\else% +\section*{\phantom{\normalsize[Knuth 99]}Bibliographie en dehors du document} + +Avec certaines extensions de bibliographie il peut s'avérer utile +de protéger les caractères actifs à l'intérieur même de la base +de données bibliographique. + +\bibliography{testbib} +\fi% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\listoffigures +\listoftables +\glossary{Façon cordon bleu} +\glossaires +\section*{Glossaire des mots techniques} +\printglossary[\jobname.glo] + +\noindent -- magnification + +\noindent -- caractères spéciaux : \NL1 + +{\huge%\frenchmacros n'est pas utile ici +\begin{tabular}{|c|c|} +\hline +Pour imprimer ceci & Saisir cela\\ \hline +\at & \verb|\at|\\ \hline +\texttt{\vert} & \verb|\texttt{\vert}|\\ \hline +\tilde & \verb|\tilde|\\ \hline +\texttt{\backslash}& \verb|\texttt{\backslash}|\\ \hline +\chap & \verb|\chap|\\ \hline +\degre & \verb|\degre| \\ \hline +\degres & \verb|\degres| \\ \hline +\normalsize +1\ier{} étage & \verb|1\ier{} étage| \\ \hline +\normalsize +(2\ieme\!) & \verb|(2\ieme\!)| \\ \hline +\primo & \verb|\primo|\\ \hline +\secundo) & \verb|\secundo)|\\ +\hline +\end{tabular} +} \NL1 + +On notera que le caractère \verb|\degre| n'est pas le signe typographique +usuellement utilisé pour exprimer +des degrés mais que \verb|\degres| est +plus conforme à la tradition. On remarque bien les différences entre +\verb|\primo| et \verb|\secundo)| +(la forme parenthésée n'est pas valable +en {\em belle} typographie française). +\primo... \secundo... \tertio... \quarto... +\primo)... \secundo)... \tertio)... \quarto)... + +\section*{Glossaire argotique} +Le pied + +\printindex + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\part{Ce qui ne marche pas (bien)...} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Quelques questions à étudier} + +Cette partie ne comporte que des « anomalies » que l'auteur espère +résoudre d'ici quelque temps, +grâce à votre aide... peut être ? + +En fait il ne reste vraiment +pas grand chose à règler mais ce sont probablement des +vieux problèmes sacrément compliqués. + +\section{Le « 2 points »} +Le « 2 points » a une fâcheuse tendance +à rester en bas de page lorsqu'il est +suivi d'un {\tt verbatim}. Il serait souhaitable d'en trouver la raison. + +\section{Les guillemets} + +Le problème avec \verb|quotation| page \pageref{quotation}. + +%Et la perte d'informations +%dans le cas de \verb|\noeveryparguillemets| lorsque l'on démarre +%une citation dans un paragraphe déjà commencé. +% +%Vraiment très {\em fragile} ce \verb|\noeveryparguillemets| ! ( + +Voir le cas des notes +de bas de page ou en marge qui produis(ai ?)ent des désastres +avec \verb|\noeveryparguillemets|. + +\section{Le cas des extensions mal écrites ...} + +... ne se résout souvent que par la modification de l'extension en question. +Cela a été le cas de nombreuses extensions depuis le début de \frenchname{} +et j'ai bien peur que cela continue \emph{éternellement}% (et à propos : qui me succèdera ?) +. +Ici Bernard Gaulle ajoutait (déjà en 2002) : « et à propos : qui me succédera ? ». +Nous pensons que le groupe de travail autour du projet e-french répond à sa question. + +Certains cas sont insolubles, par exemple : +l'extension \verb|here.sty| +redéfinissait « au vol » +l'ordre \LaTeX{} \verb|\table| au lieu +de modifier l'existant ; cela posait un réel problème à FrenchPro +qui se base sur la modification d'une commande \verb|\table| +existante. Heureusement ce style périmé peut être remplacé +avantageusement par \verb|float|. + +Notons qu'aujourd'hui avec les diverses variantes de \texttt{float}, +ce problème n'existe plus (comme bien d'autres d'ailleurs). + +\chapter{Améliorations à envisager} + +\section{Index et bibliographie} +Deux thèmes qui n'ont que très peu été abordés. + +\section{Abréviations} +Il est fâcheux d'avoir à connaître quelles sont les mots +abrégeables pour pouvoir demander leur abréviation ; autant les saisir +correctement dès le début... + +Faut-il arrêter la composition \LaTeX{} quand une abréviation +n'est pas trouvée ? + +Faut-il offrir la possibilité de lister toutes les abréviations ? + +\annexes +\hsize=18cm +% +%\chapter{Copyright} +%\Mylisting{copyrigh.tex} +% +%\chapter{Le fichier \mdseries{\tt language.dat}} +%\Mylisting{language.dat} + +\chapter{Le fichier \mdseries{\tt frabbrev.tex}} +\Mylisting{frabbrev.tex} + +% retire pour mettre french.cmd 98/06 +%\chapter{Le fichier \mdseries{\tt french.dmy}} +%My\listing{french.dmy} + +\chapter{Le fichier \mdseries{\tt french.cmd}} +\Mylisting{french.cmd} + +\chapter{Le fichier \mdseries{\tt french.chk}} +\Mylisting{french.chk} +% +%\chapter{Un style english (\mdseries{\tt fenglish})} +%\Mylisting{fenglish_doc} + +%\chapter{Le code de l'extension \FP} +% +%\Mylisting{french_doc.txt} + +\newpage +\hsize=15cm +\abbreviations\noenglishdoublequotes +\tableofcontents +\noabbreviations\englishdoublequotes% remove options set for toc. + +\english %=\relax if english text (see \lastlinein) +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/frenchab.tex b/language/french/e-french/texmf/doc/test/frenchab.tex new file mode 100644 index 0000000000..3993d1187a --- /dev/null +++ b/language/french/e-french/texmf/doc/test/frenchab.tex @@ -0,0 +1,68 @@ +% !TeX encoding = latin9 +% This is frenchab.tex +% +% French Torture Test with AmsLaTeX (main style: book) +% Copyright Bernard Gaulle as in french.doc +% +% last mods 2006/04/25 +% +\advance\hoffset by -10pt% marge droite (chez moi) pas totalement imprimee +% +\documentclass[twocolumn]{book} + \usepackage[latin9]{inputenc}% pour le codage d'entrée, ici latin9 + \usepackage[T1]{fontenc}% pour utiliser les fontes ec (et cm en math) +\usepackage{amsmath,mylist,mya4,graphicx,french} +\usepackage{eurosym} %for the ¤ +\usepackage{epstopdf}% so graphicx accepts eps images +\setlength{\textwidth}{410pt}%% +\let\Stop\undefined +% Localisation code for numbered \typeout: "\kbAissue% localise it." +% For debugging one can remove "msg" access, just uncomment +%\let\kbAissue\relax% this line. +\makeatletter + \ifx\kbAissue\undefined% +% Firstly we add the material to use the "msg" package for localization. + \def\kb@issue#1#2{\kb@issue@[#1]#2\void}% The local \issuemsg macro. + % which will call the real one; + % #1 is the macro message required. + % #2 is the message header + msg number + % such as "^^J -234-", just message + % number (234) is kept. + \let\kbAissue\kb@issue% + \def\kb@issue@[#1]#2-#3-#4\void{\issuemsg[#1]#3(french)}% + \ifx\issuemsg\undefined\let\kbAissue\relax\let\typeouA\typeout\fi% + \fi% +\makeatother +% +\ifx\endfrench\switchtolanguage +\kbAissue% localise it. + \typeout{-37a- ANOMALIE : french actif.}\Stop\fi +\def\LPLAIN{lplain} +\ifx\fmtname\LPLAIN\else\def\LPLAIN{LaTeX2e}\fi +\ifx\fmtname\LPLAIN\else\relax + \typeout{**********************************************} +\kbAissue% localise it. + \typeout{-36- ANOMALIE : format LaTeX (\fmtname) non standard.} + \typeout{CORRIGER pour avoir \fmtname=\LPLAIN\space ou ancien nom.} +\Stop% Vous devez avoir dans ltvers.dtx : \def\fmtname{LaTeX2e} ! +\fi +\let\iflatex\iftrue +\def\SmsG{\typeout% + {\string<\string<--------------------------------------------------------}} +\def\FmsG{\typeout% + {--------------------------------------------------------\string>\string>}} +{\SmsG\obeyspaces +\typeout{( Test de torture du style \frenchname} +\typeout{(Ce test genere deliberement quelques messages d'erreur. )} +\typeout{(Pour vous permettre de distinguer les messages d'erreur )} +\typeout{(normaux de ceux qui sont anormaux, j'ai encadre, comme )} +\typeout{(ici, ces messages ; ne vous en preoccupez pas. --bg )} +\FmsG}% +\frenchtest +\ifx\endfrench\switchtolanguage\else +\kbAissue% localise it. + \typeout{-37b- ANOMALIE : french inactif.}\Stop\fi +\end{document} +%% +%% checksum = "21525 63 238 2681" +%% diff --git a/language/french/e-french/texmf/doc/test/frenchla.tex b/language/french/e-french/texmf/doc/test/frenchla.tex new file mode 100644 index 0000000000..ed6717aa15 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/frenchla.tex @@ -0,0 +1,21 @@ +% !TeX encoding = latin9 +% This is frenchlb.tex +% +% French Torture Test with LaTeX (main style article) +% Copyright Bernard Gaulle as in french.doc +% +% last mods 2006/04/25 +% +\documentclass[twocolumn]{article} + \usepackage[latin9]{inputenc}% pour le codage d'entrée, ici latin9 + \usepackage[T1]{fontenc}% pour utiliser les fontes ec (et cm en math) +\usepackage{eurosym} %for the ¤ +\usepackage{mylist,mya4,graphicx,french} +\usepackage{epstopdf}% so graphicx accepts eps images +\setlength{\textwidth}{410pt}%% +\let\iflatex\iftrue +\frenchtest +\end{document} +%% +%% checksum = "13164 16 42 436" +%% diff --git a/language/french/e-french/texmf/doc/test/frenchlb.tex b/language/french/e-french/texmf/doc/test/frenchlb.tex new file mode 100644 index 0000000000..4e0faaf9a8 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/frenchlb.tex @@ -0,0 +1,84 @@ +% !TeX encoding = latin9 +% This is frenchlb.tex +% +% French Torture Test with LaTeX (main style: book) +% Copyright Bernard Gaulle as in french.doc +% +% last mods 2006/04/25 +% +\advance\hoffset by 20pt% pour centrer l'ensemble. +\documentclass[twocolumn,twoside,a4paper]{book}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Si vous n'avez pas utilisé kbconfig pour créer le format, +% probablement avez-vous besoin de : + \usepackage[latin9]{inputenc}% pour le codage d'entrée, ici latin9 + \usepackage[T1]{fontenc}% pour utiliser les fontes ec (et cm en math) +% Ou alors \usepackage[decmulti]{inputenc}% pour le codage d'entrée mais c'est +% vous qui l'aurez choisi... Moi je préfère encore keyboard (cad kbconfig). +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\usepackage{mysmall,graphicx,mylist} +\usepackage{eurosym} %for the ¤ +\usepackage{epstopdf}% so graphicx accepts eps images +%\usepackage[tracefiles]{msg}% Only usefull for tracing purpose. +% Plut\^ot que \usepackage{french} on fait appel à mlp pour charger french : +\usepackage[anglais,francais]{mlp} +\setlength{\textheight}{225mm}% a4paper is a little shorter...than a4.sty +\setlength{\textwidth}{410pt}%% +\listfiles + +\catcode`\@=11 +\let\Stop\undefined\ifx\@@end\undefined\let\@@end\end\fi +% Localisation code for numbered \typeout: "\kbAissue% localise it." +% For debugging one can remove "msg" access, just uncomment +%\let\kbAissue\relax% this line. + \ifx\kbAissue\undefined% +% Firstly we add the material to use the "msg" package for localization. + \def\kb@issue#1#2{\kb@issue@[#1]#2\void}% The local \issuemsg macro. + % which will call the real one; + % #1 is the macro message required. + % #2 is the message header + msg number + % such as "^^J -234-", just message + % number (234) is kept. + \let\kbAissue\kb@issue% + \def\kb@issue@[#1]#2-#3-#4\void{\issuemsg[#1]#3(french)}% + \ifx\issuemsg\undefined\let\kbAissue\relax\let\typeouA\typeout\fi% + \fi% +% +\ifx\endfrench\switchtolanguage +\kbAissue% localise it. + \typeout{-37a- ANOMALIE : extension french active ici.}\Stop +\@@end +\fi +\def\LPLAIN{lplain} +\ifx\fmtname\LPLAIN\else\relax + \def\LPLAIN{LaTeX2e} + \ifx\fmtname\LPLAIN\else\relax + \typeout{**********************************************} +\kbAissue% localise it. + \typeout{-36- ANOMALIE \string: nom de format LaTeX (\fmtname) invalide.} + \typeouA{-36b- CORRIGER pour avoir \fmtname=\LPLAIN\space ou ancien nom.} +\Stop% Vous devez avoir dans ltvers.dtx : \def\fmtname{LaTeX2e} ! +\@@end + \fi +\fi +\catcode`\@=12 +\let\iflatex\iftrue +\def\SmsG{\typeout% + {\string<\string<--------------------------------------------------------}} +\def\FmsG{\typeout{}\typeout% + {--------------------------------------------------------\string>\string>}} +{\SmsG\obeyspaces +\typeout{( Test de torture du style \frenchname} +\typeout{(Ce test genere deliberement quelques messages d'erreur. )} +\typeout{(Pour vous permettre de distinguer les messages d'erreur )} +\typeout{(normaux de ceux qui sont anormaux, j'ai encadre, comme )} +\typeout{(ici, ces messages ; ne vous en preoccupez pas. --bg )} +\FmsG}% +\frenchtest +\ifx\endfrench\switchtolanguage\else +\kbAissue% localise it. + \typeout{-37b- ANOMALIE \string: extension french inactive ici.}\Stop\fi% +\end{document} +%% +%% checksum = "10201 81 331 3632" +%% diff --git a/language/french/e-french/texmf/doc/test/frenchll.tex b/language/french/e-french/texmf/doc/test/frenchll.tex new file mode 100644 index 0000000000..7451cb8305 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/frenchll.tex @@ -0,0 +1,102 @@ +% This is frenchll.tex +% +% French Torture Test with LaTeX (main style: letter) +% Copyright Bernard Gaulle as in french.doc +% +% last mods 2006/04/25 +% 7bits file. +% +%% +%% checksum = "09076 98 267 3191" +%% +\advance\hoffset by -10pt% marge droite (chez moi) pas totalement imprimee +\advance\voffset by -20pt% marge haute (chez moi) pas totalement imprimee +% +\def\twocolumn{\relax}% Un peu debile de pouvoir faire une lettre en 2 colonnes +% +\def\TT#1{\gdef\TITLE{#1}} +\def\formhead{\Huge \bf Association GUTenberg} +\def\formfoot{\bf Si\`ege social : C/o Irisa, campus de Beaulieu, + F--35042 Rennes cedex.} +\def\title#1{\french + \begin{letter}{M. Dupond\\ + 17, rue St. \'Eloi\\ + 24140 La monzie montastruc} + \yourref{votre lettre du 15 courant} + \ourref{bg-004-92} + \object{Remerciements} + \opening{Cher Monsieur X,} + + Voici... +Blabla habituel, b, khwd djhlheqw lwj wljlwd lkwd wx, jh, 2d + wkjyujb 2d, jhgoi2w 1w3dh, jljkwds m, hlwd blhwdl wbwd khw2db + bbklwyh, wluw bowdb, wlup ; 4f ; iw +13, nbjh3d mldfkm, mhowedm mnpi13m eef. + \fclosing[7]{Veuillez agr\'eer, cher X, l'expression de mes salutations les + plus distingu\'ees.} + \cc{Monsieur le directeur Y} + \encl{lettre du ministre Z} + \PS{J'oubliais de...} +\vfill + \end{letter} + \english + \begin{letter}{M. Smith\\ + 17, St. Patrick street\\ + YORK WZG-21, England} + \opening{Dear Sir,} + \par + Here is...\vfill + \closing{Yours,} + \cc{Y} + \encl{Z} + I forgot to say... +\vfill + \end{letter} + \french + \TT{#1} +} +% Pseudo definitions de macros non autorisees dans le style letter +\def\maketitle{\expandafter\let\csname table*\endcsname\table% + \expandafter\let\csname endtable*\endcsname\endtable% + \expandafter\let\csname chapter*\endcsname\chapter% + \expandafter\let\csname section*\endcsname\section% + \TITLE} +\def\tableofcontents{} +\def\part{\par} +\def\chapter{\par} +\def\section{\par} +\def\subsection{\par} +\def\subsubsection{\par} +\makeatletter +\def\caption{\@ifnextchar[\@caption\@@caption%] + } +\def\@caption[#1]#2{\@@caption{#2}} +\def\@@caption#1{\centerline{#1}} +\makeatother +\def\figure{}\def\endfigure{} +\let\table\relax\let\endtable\relax% as in endfloat +\def\thebibliography{}\def\endthebibliography{}\def\bibitem{} +\def\listoffigures{}\def\listoftables{} +\def\printglossary[#1]{\relax} +\newcounter{chapter}\newcounter{section} +% +\documentclass{letter} +\usepackage[latin9]{inputenc}% pour le codage d'entrée, ici latin9 + \usepackage[T1]{fontenc}% pour utiliser les fontes ec (et cm en math) +\usepackage{eurosym} %for the € +\usepackage{mylist,mya4,graphicx,french} +\usepackage{epstopdf}% so graphicx accepts eps images +\address{Bernard {\sc Gaulle}\\4, avenue Cadoux-Girault\\ + F--92270 Bois-Colombes} +\location{\em Paris, le} +\signature{B. {\sc Gaulle} (votre serviteur...)} +\email{gaulle@idris.fr} +\setlength{\textwidth}{410pt}%% +\ifx\documentclass\undefined +%\input mypsfig.sty +%\else +%\usepackage{mypsfig} +\fi +\let\iflatex\iftrue +\frenchtest +\end{document} diff --git a/language/french/e-french/texmf/doc/test/frenchln.tex b/language/french/e-french/texmf/doc/test/frenchln.tex new file mode 100644 index 0000000000..6119e7f812 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/frenchln.tex @@ -0,0 +1,35 @@ +% This is frenchln.tex +% +% French Torture Test with LaTeX, +% with the ``Poor Man French'' package. +% (main style: book) +% Copyright Bernard Gaulle as in french.doc +% +% last mods 2006/04/25 +% +% 7bits file. +% +% (case of a french document sent to another system where there is no +% french customization. So the french style is sent before the document +% and that is *that* whole document which is typeset by LaTeX.) +% +% I tested it without language.dat nor frenglish.sty nor abbrevfr.tex. +% and with no language specification coming from INTEX time +%\let\french\undefined\let\fhyph\undefined +%\let\english\undefined\let\ehyph\undefined +% +\documentclass[twocolumn]{book} +\usepackage[latin9]{inputenc}% pour le codage d'entrée, ici latin9 + \usepackage[T1]{fontenc}% pour utiliser les fontes ec (et cm en math) +\usepackage{eurosym} %for the ¤ +\usepackage{mylist,mya4,graphicx,pmfrench} +\usepackage{epstopdf}% so graphicx accepts eps images +\setlength{\textwidth}{410pt}%% +\let\iflatex\iftrue +\gdef\listing#1{\leavevmode{\it \% le fichier {\tt #1} + est d\'elib\'er\'ement non imprim\'e.}\par} +\frenchtest +\end{document} +%% +%% checksum = "14399 31 126 1062" +%% diff --git a/language/french/e-french/texmf/doc/test/frenchlr.tex b/language/french/e-french/texmf/doc/test/frenchlr.tex new file mode 100644 index 0000000000..1cc8872554 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/frenchlr.tex @@ -0,0 +1,18 @@ +% This is frenchlr.tex +% +% French Torture Test with LaTeX (main style: report) +% Copyright Bernard Gaulle as in french.doc +% +% last mods 2006/04/25 +% +\let\iflatex=\iftrue +\documentclass[twocolumn]{report} +\usepackage[latin9]{inputenc}% pour le codage d'entrée, ici latin9 + \usepackage[T1]{fontenc}% pour utiliser les fontes ec (et cm en math) +\usepackage{eurosym} %for the ¤ +\usepackage{mylist,mya4,graphicx,french} +\usepackage{epstopdf}% so graphicx accepts eps images +\setlength{\textwidth}{410pt}% + +\frenchtest +\end{document} diff --git a/language/french/e-french/texmf/doc/test/frenchrf.pdf b/language/french/e-french/texmf/doc/test/frenchrf.pdf Binary files differnew file mode 100644 index 0000000000..61f359e0d5 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/frenchrf.pdf diff --git a/language/french/e-french/texmf/doc/test/fxench.tst b/language/french/e-french/texmf/doc/test/fxench.tst new file mode 100644 index 0000000000..65d52fc1cf --- /dev/null +++ b/language/french/e-french/texmf/doc/test/fxench.tst @@ -0,0 +1,3750 @@ +% This is the french torture file for all formats. +% Copyright Bernard Gaulle as in french.doc +% +% \`{A} passer en 8 bits conform\'{e}ment \`{a} votre syst\`{e}me +% +%% checksum = "26167 3750 15103 125091" +%% +% +% For localisation: +% +\makeatletter% +\ifx\documentclass\undefined\let\kbAissue\relax\let\typeouA\typeout% +\else% + \let\typeouA\@gobble% +% For debugging one can remove "msg" access, just uncomment +%\let\kbAissue\relax% this line. + \ifx\kbAissue\undefined% +% Firstly we add the material to use the "msg" package for localization. + \def\kb@issue#1#2{\kb@issue@[#1]#2\void}% The local \issuemsg macro. + % which will call the real one; + % #1 is the macro message required. + % #2 is the message header + msg number + % such as "^^J -234-", just message + % number (234) is kept. + \let\kbAissue\kb@issue% + \def\kb@issue@[#1]#2-#3-#4\void{\issuemsg[#1]#3(french)}% + \ifx\issuemsg\undefined\let\kbAissue\relax\let\typeouA\typeout\fi% + \fi% +\fi% +\makeatother% +% +% For better debugging: +\ifx\IeC\undefined +\kbAissue% localise it. +\typeout{^^J-66- ERROR! This file can't be typeset without any input} + \typeouA{-66- encoding declaration (look at keyboard or inputenc packages.)} +\expandafter\stop% \usepackage[latin1]{keyboard} should be fine. +\fi +\let\FP\frenchpack\hyphenation{French-Pro} +\wlog{Formating \jobname\space with\space\FP\space(\frenchstyleid)} +% +% +\ifx\ProvidesFile\undefined\def\ProvidesFile#1[#2]{}\fi% +\ProvidesFile{french.tst}% + [2005/05/11 The torture test file for the package \FP]% **last mods** +\ifx\undefined\FmsG\def\FmsG{}\def\SmsG{}\fi +% +{\catcode`\<=\active\catcode`\>=\active% +% Je veux : +%\global\def<{\left\langle}\global\def>{\right\rangle} +% Et pour ne pas pouvoir avoir l'effet que localement, +% je fais : +\gdef<{\myinf}\gdef>{\mysup} +} +\label{nulllabel}% null \label for AmSTeX test \ref within a \ref +\iflatex\makeindex \makeglossary + \csname frhyphex\endcsname% load (again) the exceptions, outside babel + \def\NL#1{\Sauter#1Lignes} + \begin{document} + \makeatletter + \ifx\babel@savevariable\undefined% + \let\FRENCH\frenchTeXmods% + \else\def\FRENCH{\selectlanguage{french}}% pour babel + \fi% + \makeatother + \csname onecolumn\endcsname % avoid writting \onecolumn + % (special effect in frencht.tex) + \renewcommand{\thepage}{\roman{page}}% + \ifx\documentclass\undefined\else% for 2e + % As 2e doesn't accept \verb in arguments: + \gdef\myverb|#1|{%\nonfrench + \texttt{#1}% + %\endnonfrench + \relax}% + \fi +\else + \let\FRENCH\frenchTeXmods% + \def\NL#1{\par} +\fi +\ifx\myverb\undefined\let\myverb=\verb\fi% +% global here is just req. for TeX--XeT tests. +\global\let\myinf\inferieura% A no-op def +\global\let\mysup\superieura% for a temporary action +\ifx\undefined\english\let\english\relax\fi% +% Les \ldots sont $\ldots$ a cause de AmSLaTeX V1.1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\HyphDiff#1#2{{\setbox0=\vbox{% + \pretolerance=-1 \hyphenpenalty=-10000 + \hsize=0pt \leftskip=0pt \rightskip=0pt \parfillskip=0pt + \parindent=0pt \hfuzz=\maxdimen \interlinepenalty=0 + \clubpenalty=0 \widowpenalty=0 \brokenpenalty=0 + \hskip 0pt #1}% + \setbox2=\hbox{}% + \setbox9=\vbox{\unvbox 0 \loop \unskip \setbox1=\lastbox + \ifhbox 1 + \global\setbox 2 = \hbox{% + \unhbox 1 \discretionary{}{}{}% + \unhbox 2}% + \repeat}% +\setbox3\hbox{#2}\ifnum\wd2=\wd3\else +\kbAissue% localise it. +\typeout{-31- Wrong French Hyphenation\string! + Are you sure to run with a format ***********} +\typeouA{-31- in which the french patterns were + installed at initex time\string? ***********} +\ifECM\else% +\kbAissue% localise it. +\typeout{-32- if yes try to switch to T1 font + encoding (\noexpand\usepackage[T1]{fontenc})***} +\fi% +\showhyphens{#1}\typeout{(should be\string: #2) + \string<\string<======== *********************************} +\fi}} +\HyphDiff{\'{e}ventualit\'{e}}{\'{e}ven-tua-lit\'{e}} +\HyphDiff{d\'{e}gazonnage}{d\'{e}-ga-zon-nage} +\HyphDiff{chromosomique}{chro-mo-so-mique} +%%%% +\SmsG% +\typeout{V\'% + erification de la sortie de caract\`% + eres 8-bits \string:} +\message{L'\'% \typeout ne transforme pas en 8bits pour l'instant. + et\'% + e est l\`% + a en ao\^% + ut \string!} +\iflatex% +\typeout{Essai de macro d'accentuation dans un ordre \string\showhyphens % + \string:} +\showhyphens{Faut-il croire \`% + a l'\'% + ETERNIT\'% + E ? \'% + eludons ...} +\showhyphens{Ao\^% + ut 2001 ou l'autre \`% + ere ...} +\fi% +\FmsG% +% +\english% Title page is in english +\ifx\documentclass\undefined % Still Plain! so no \DeclareFontFamily +\else% +% To avoid "No file OMScmtt.fd" message 2004/10/29 +\DeclareFontFamily{OMS}{cmtt}{\skewchar\font48 } +\DeclareFontShape{OMS}{cmtt}{m}{n}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{it}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{sl}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{m}{sc}% + {<->ssub*cmsy/m/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{n}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{it}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{sl}% + {<->ssub*cmsy/b/n}{} +\DeclareFontShape{OMS}{cmtt}{bx}{sc}% + {<->ssub*cmsy/b/n}{} +%%%%%%%%%%%%%%%%%%%%%%% +\fi% +\makeatletter% for \f@encoding +\title{\fbox{ \FP\ \LaTeX% + \thanks{We are here in english, notice the problem when we use, + like in \texttt{frenchla}, a + {\mdseries\texttt{\textbackslash fnsymbol}} + in a box.\newline% + \indent \hspace*{0.5em} + Notice also that + {\mdseries\texttt{\textbackslash backslash}}% + can't be used.% + }% + }\\ \ \\% + Version \frenchstyleid\\ \ \\ + ``Torture'' Test (\jobname) \\ with + \ifx\encodingdefault\undefined Unknown + \else\ifx\f@encoding\undefined\encodingdefault{} + \else\f@encoding{} \fi + \fi Font Encoding\\\ } + \author{Bernard {\sc Gaulle}% + \thanks{Thanks to those good guys who helped me.\newline% + \indent\hspace*{0.5em} + This test note is also referred by a + {\mdseries\texttt{\textbackslash refmark}} call. + \label{title:thanks}% + }% + \\ \ \\ et...\refmark{title:thanks}% + }% +% AmS \normalparindent no more exists 2000/06/15, so the code is removed. +%\makeatletter% Don't let AMS change \parindent +%\ifx\RIfM@\undefined\else\normalparindent=1em\parindent=\normalparindent\fi% +%\makeatother +\makeatother% +\date{Printed on \today} +% As the titlepage is in English but the date in French we let \ier defined: +{\def\ier{ier}\maketitle} +\setcounter{page}{2}\thispagestyle{empty} +\cleardoublepage\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\sommaire[4] +\bigskip +\begin{center} +\noindent\fbox{% +\begin{minipage}[t]{0.5\textwidth} +\begin{center} \fbox{\parbox{5cm}{{\bf Remarque} : \\ la commande +\texttt{\backslash som\-maire}\label{pbverb}% +\footnote{Cette note a \'{e}t\'{e} demand\'{e}e depuis une minipage.}% +\footnote{Cette deuxi\`{e}me note aussi.} +%%%%NB : \verb|\sommaire| ou \verb|\tableofcontents| produisent des HORREURS, +%%%% lorsqu'ils ont utilises dans un \fbox, BUG LATEX ! + est un apport de \FP.\hfill}} +\end{center} +\end{minipage} +} +\end{center} + +{% Not a LaTeX redefinition : \def\thefootnote{\fnsymbol{footnote}} +\renewcommand{\thefootnote}{\fnsymbol{footnote}}% +Essai de note avec \verb|\fnsymbol| +\footnote{Note avec une \'{e}toile.}. + +\def\thefootnote{\relax} +Essai de note de bas de page non num\'{e}rot\'{e}e +\footnote{Note non num\'{e}rot\'{e}e.}. +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\cleardoublepage +\chapter*{\prefacename} + +{\em Certains croient qu'une pr\'{e}face peut apporter de la valeur au livre, +moi je pense plut\^{o}t que cela apporte de la {\em valeur} +\`{a} l'auteur...} (dans +tous les sens du terme). + +\cleardoublepage + +\twocolumn +\renewcommand{\thepage}{\arabic{page}}\setcounter{page}{1}% +\chapter*{Introduction} + +\begin{motsclef} +french, style, francisation, francophonie, multilingue, +english, option, extension. +\end{motsclef} + +\begin{resume} +Ce document a \'{e}t\'{e} con\c{c}u +uniquement pour tester intensivement \FP\ (anciennement appel\'{e} +option de style% + \glossary{<< : ; style ? ! >>}\index{<< : ; style ? >>}% + \footnote{Cette note a pour but de faire appel \`{a} une macro + \texttt{\backslash index} contenant des caract\`{e}res actifs.% + \index{<< : ; depuis la note de bas de page ? >>}% + } +\index{french!Le point d'exclamation est un caract\`{e}re sp\'{e}cial de Makeindex}% +\index{<@{\tt\protect\inferieura} ({\tt\protect\backslash inferieura})}% +\index{>@{\tt\protect\superieura} ({\tt\protect\backslash superieura})}% +\index{Magic di N'Konga (auteur c\'{e}l\`{e}bre)}% + \texttt{french}). +\end{resume} + +\bigskip Notez que les deux environnements \verb|resume| et \verb|motsclef| +(ainsi que \verb|keywords|) +sont des apports de \FP. + +\bigskip Si le libell\'{e} << R\'{e}sum\'{e} >> appara\^{\i}t dans la partie + anglaise, cela +signifie que \FP\ ne poss\'{e}dait pas de d\'{e}finition +d'\verb|\abstract| et donc l'a remplac\'{e} par \verb|\resume|. Cela signifie +aussi que les libell\'{e}s anglais n'ont pas \'{e}t\'{e} d\'{e}finis +(\verb|\captionnames|% +\footnote{Une extension {\tt fenglish} est fournie conjointement avec +\FP\ ; {\tt\backslash captionnames} y est d\'{e}fini. +Cette extension {\tt +fenglish} est automatiquement appel\'{e}e par \FP\ dans le +cas que nous avons cit\'{e}.} + n'\'{e}tait pas d\'{e}fini par les extensions appel\'{e}es avant + \FP). +Rappelez-vous aussi que \verb|\abstract| ne fait pas partie de la classe +de document \verb|book|. + +Remarquez les diff\'{e}rences entre les num\'{e}ros de notes de bas de page en +fran\c{c}ais et en anglais, ainsi que l'impression de ce m\^{e}me num\'{e}ro en +bas de la page. + +\english\newpage +\begin{keywords} %???\relax% for AMS which has its own macro with #1 +French, Style, Option, Package, French-Speaking usage, English, Multilingual. +\end{keywords} + +\begin{abstract} The object of this paper is to test intensively \FP. +\end{abstract} +\NL1 + +\bigskip Notice that the three environments +\verb|resume|, \verb|keywords| and \verb|motsclef| +are all introduced by \FP. + +\bigskip Notice that if the abstract name printed here is not ``Abstract'' you +are using packages that have no \verb|\abstractname| defined for eng\-lish. + The english package defining such captions is loaded only +if \verb|\captionsnames|% +\footnote{The {\tt fenglish} package is given with \FP, +so {\tt$\backslash$captionnames} are normally defined because +\FP\ is calling automatically the {\tt fenglish} package in the +pre\-viously cited case.} was +previously undefined. (Remember also that as \verb|\abstract| is not defined +in the \verb|book| document class the \FP\ assumes it is a +\verb|\resume|.) + +Notice the different typesetting of the footnote numbers in French and English +as well as the printing of that numbers before the footnote text. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\french +\part{Ce qui marche est ici...} +\disallowuchyph% ce que je prefere... + +\chapter{Avertissements} + +Seul le document authentique qui est fourni par l'auteur + sous une forme compos\'{e}e +constitue la r\'{e}f\'{e}rence. Cela veut dire que l'installateur de \FP\ +sur un syst\`{e}me doit comparer son r\'{e}sultat +(sous forme papier ou +fichier \verb|.dvi|) avec la forme authentique fournie par l'auteur. + +\bigskip + +\bigskip \FP\ a \'{e}t\'{e} con\c{c}u pour fonctionner +avec la majorit\'{e} bas\'{e}s sur \LaTeX{} +\footnote{Au si\`{e}cle dernier (XX\ieme), \FP\ \'{e}tait appel\'{e} << style +\texttt{french} >> et pouvait fonctionner en dehors de \LaTeX\ mais +l'effort pour assurer cette facilit\'{e} dans de trop nombreux formats +exotiques \'{e}tait totalement disproportionn\'{e} ; ceci a donc \'{e}t\'{e} +abandonn\'{e} (au moment de la sortie de \LaTeXe).}% +. + +\bigskip \AllTeX{} est mon logo ; il symbolise {\em tous les \TeX{}} ; on peut +l'imprimer correctement dans toutes les polices ({\em \AllTeX}, {\bf \AllTeX}, +{\sf \AllTeX}, {\tt \AllTeX}, ...) gr\^{a}ce \`{a} la partie NFSS de \LaTeXe% +\footnote{Le document de r\'{e}f\'{e}rence ({\tt frenchrf}) +a \'{e}t\'{e} produit avec NFSS. Ce document-ci a \'{e}t\'{e} compos\'{e} avec le format +{\tt \fmtname}.} +. + +\newpage\english Only the authentic author's document in a composed form is +the reference. That means that the on site \FP\ installator must +compare his result (paper or \verb|.dvi| file) with the authentic form +provided by the author. +\NL3 + +\bigskip \FP\ was designed to work with all {\em formats\/} +based on \LaTeX. + +\bigskip \AllTeX{} is my logo ; it's a symbol for expressing +{\em all \TeX{}} ; one can print it correctly in all shapes +({\em \AllTeX}, {\bf \AllTeX}, +{\sf \AllTeX}, {\tt \AllTeX}, etc.) due to the NFSS part of \LaTeXe% +\footnote{The +reference document was produced with NFSS of {\tt \fmtname}.}% +. + +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{La torture} + +\section{Le saviez-vous ?} Nos journaux, livres, revues, +articles scientifiques ou autres ont \'{e}t\'{e} + pendant ces trente derni\`{e}res ann\'{e}es imprim\'{e}s +par des machines d'origine +am\'{e}ricaine. Ainsi, petit \`{a} petit, nous perd\^{\i}mes +l'habitude de lire des +majuscules accentu\'{e}es parce que tout simplement les polices + de caract\`{e}res +utilisables sur ces machines n'en comportaient pas. + +L'usage de plus en plus g\'{e}n\'{e}ralis\'{e} de l'infor\-ma\-tique +{\em am\'{e}ricaine} fit ainsi dispara\^{\i}tre pendant un temps tous + les accents de notre langue \'{e}crite. + +De la m\^{e}me mani\`{e}re un certain nombre de +{\em mauvaises habitudes} furent +prises quasiment inconsciemment tout simplement parce que les programmes +informatiques ne pouvaient pas faire autrement. Ainsi de nombreuses {\it +coquetteries} de notre typographie sont tomb\'{e}es dans l'oubli. + +Saviez-vous par exemple qu'on n'imprime pas des guillemets comme ceci `` '' ni +m\^{e}me ` ' mais ainsi << >> ? Nous nous autoriserons toutefois + \`{a} utiliser dans +ce document ces guillemets %\noenglishquote +(` ') que nous consid\'{e}rons comme +{\em techniques}. + +\newpage\english \section{Did you know that?} +Our (french) +newspapers, books, magazines, scientific articles and other things have +been printed with american machines during these last thirty years. So our +habits to read accented uppercase letters declined because they simply were +not included in the machinery.\NL2 + +Together with American computer usage growth, all french +diacritics disappeared from our french written language.\NL1 + +In a same way {\em bad +habits} took place, inconsciously, for the only reason that computer programs +could not do otherwise. So, a lot of french typographic {\em coquetteries\/} +are largely forgotten.\NL2 + + Did you know for example that we never typeset french +guillemets like this `` '' neither ` ' but% +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding\else% +\footnote{We switched to \emph{French} here to be able % + to print valid glyphs.}% +\fi} % +\begin{french}<< and >>\end{french}? Instead, we will +authorised ourselves to use (` ') in this document +because we consider they are {\em technical} guillemets. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +*** Cet espace est laiss\'{e} intentionellement \`{a} blanc *** +\NL3 +\section{Typographie fran\c{c}aise} +%\noenglishquote +La typographie fran\c{c}aise est sp\'{e}cifique en ce qui concerne +l'utilisation des signes sui\-vants : +`\verb|.| \verb|:| \verb|;| \verb|!| \verb|?| \verb|<<| \verb|>>|'. + +La r\'{e}partition des espaces dans une ligne se fait de fa\c{c}on +\'{e}quitable entre les +mots (jamais \`{a} l'int\'{e}rieur des mots) et apr\`{e}s +la ponctuation (c'est le +\verb|\frenchspacing| de \TeX{}) contrairement \`{a} la + typographie anglaise. + +Les `\verb|; ! ?|' doivent \^{e}tre pr\'{e}c\'{e}d\'{e}s d'une espace fine +ins\'{e}cable. C'est +ce que nous avons appliqu\'{e} dans \FP. +Le cas du `\verb|?|' +a \'{e}t\'{e} trait\'{e} sp\'{e}cialement car l'espace fine ayant +\'{e}t\'{e} jug\'{e}e trop grande (par +des sp\'{e}cialistes), a \'{e}t\'{e} r\'{e}duite tout en adjoignant une peu de +{\em glue} d'extensibilit\'{e}. + +En ce qui concerne le `\verb|:|', le code typogra\-phi\-que% +\footnote{Nous +avons choisi d'adopter les recommandations de l'imprimerie nationale +fran\c{c}aise.} pr\'{e}cise qu'il est pr\'{e}c\'{e}d\'{e} +d'une espace {\em mot\/} +ins\'{e}cable. +D'autres ont jug\'{e} que c'\'{e}tait inesth\'{e}tique et cela a \'{e}t\'{e} +remplac\'{e} par une espace fine. + +Les guillemets fran\c{c}ais << doivent \^{e}tre suivis d'une espace mot +ins\'{e}cable qui +a \'{e}t\'{e} remplac\'{e}e ici par une espace moindre. +Les guillemets fermants >> +sont, eux, pr\'{e}c\'{e}d\'{e}s de la m\^{e}me espace. + +\SmsG% +Lorsque la ligne n'est pas assez remplie et qu'il existe un `:', les +typographes ont --~semble-\hbox{t-il}~-- l'habitude +de r\'{e}partir largement les espaces autour +des deux points. C'est ce qui a \'{e}t\'{e} fait dans \FP\ qui +pourra \'{e}ventuellement produire une ligne : +peu remplie\footnote{Le cas pr\'{e}sent\'{e} ici a \'{e}t\'{e} +cr\'{e}\'{e} artificiellement et peut donc appara\^{\i}tre exag\'{e}r\'{e} dans +certaines mises-en-pages.}% +\penalty-10000% + ou aussi bien une ligne se terminant ainsi : << {\em com\-me % \- pour fourier +font les pros\/} >> +lorsqu'ils ne trouvent pas d'autre moyen mais il devrait s'agir que de cas +extr\^{e}mes. \`{A} noter que cela a pour avantage de r\'{e}duire les +\verb|over/under-full hbox| de fa\c{c}on significative. + +Paragraphe de remplissage...\\ ...\\... pour v\'{e}rifier que le `:' ne +termine ni la page ni la colonne. Ainsi : + +%\englishquote +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{itemize} +\item %qu'il s'agisse de verbatim ou d'une liste d'\'{e}l\'{e}ments +les deux points et le texte qui suit +sont tous deux sur la m\^{e}me page. +\end{itemize} +%\newpage % already done with the previous list +\FmsG% +\english + +\smallskip + +\section{French printing} + +French printing use specific typographic rules specially in concern with +the following: `. : ; ! ?' and french guillemets. + +Interword spacing in a line is allways equal (and never modified inside a +word). It's the same way after punctuation (standard \verb|\frenchspacing|) as +opposed to the english typography.\NL1 + +All `; ! ?' are preceeded by a thin and uncuttable space. We apply this +automatically in \FP. (We have added few stretching {\em glue} to +the question mark).\NL2 + +Regarding the `:' we have not inserted an inter-word space but a thin space +and also have added some glue.\NL2 + +\smallskip +French guillemets are processed the same way. \NL3 + +In an {\em underfull\/} line containing a `:' man has habits to share spaces +around the double points. This way used in \FP\ can also produce a +line with a ragged right, as shown in the french column. This technique + reduce a lot of {\em overfull} and {\em underfull} {\tt hboxes} +produced by \TeX{}. +\NL3 + +As shown also, \FP\ is reluctant to print a double point at the +end of a page or a column. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french%\noenglishquote +\section[Dactylographie fran\c{c}aise]{Rappels concernant la \newline +dactylographie} + +Les habitudes de saisie c.-\`{a}-d. les habitudes dactylographiques, + veulent que les signes suivants +`\verb|:| \verb|;| \verb|!| \verb|?| \verb|>>|' +soient toujours pr\'{e}c\'{e}d\'{e}s d'un blanc +(barre d'espace sur les claviers) et les \verb|<<| toujours +suivis d'un blanc. \FP\ remplacera +automatiquement ce blanc (\`{a} la composition) par l'espace appropri\'{e}e. + +{\moretolerance\moretolerance\moretolerance +Les guillemets fran\c{c}ais << (et respectivement >>)... +\footnote{\tthyphenation Avec les options fournies +telles \vers|A4| et \vers|double|\-\vers|column| on obtient + l\`{a} un \vers|overfull| \vers|hbox| difficilement r\'{e}ductible +de fa\c{c}on automatique mais je l'ai r\'{e}duit +avec 3 \texttt{\backslash moretolerance}% +\notthyphenation.} +\par} +%\nooverfullhboxmark + +Les vrais guillemets fran\c{c}ais << (et respectivement >>) +s'utilisent toujours doubl\'{e}s (\verb|<<| et respectivement +\verb|>>|). Ainsi $<$ et $>$ ne +sont que des signes math\'{e}matiques et n'ont pas +d'autre sens en fran\c{c}ais que : {\em inf\'{e}rieur \`{a}} et +{\em sup\'{e}rieur \`{a}}. + +Il est fortement conseill\'{e} de poursuivre +ces habitudes dactylographiques qui +contribuent aussi \`{a} \'{e}claircir le texte +saisi et donc ainsi \`{a} faciliter les +corrections ult\'{e}rieures. +\NL1 + +\subsection[Test de la ponctuation fran\c{c}aise + \mdseries`\protect\myverb|. : ; ! ?|'] +{Test de la ponctuation \newline fran\c{c}aise + \mdseries`\protect\myverb|. : ; ! ?|'} + +Le deux points s'imprime comme ceci : s'il est pr\'{e}c\'{e}d\'{e} d'un blanc +(au moins un) sinon rien n'est chang\'{e} (par ex. 11:33). Notez +l'espace apr\`{e}s le point terminant la phrase ; le point virgule +est aussi pr\'{e}c\'{e}d\'{e} d'une espace fine s'il n'est pas coll\'{e} +au mot le pr\'{e}c\'{e}dant (comme dans cet exemple d\^{u} \`{a} une faute +de frappe; assez fr\'{e}quente).\\ +{\moretolerance +Oh ! Quoi-donc ? Notez ici l'espacement utilis\'{e} +devant le `!' et le `?'. Il ne faut +pas oublier aussi de taper le blanc avant, sinon? tout est +%terriblement + coll\'{e}! Voyez-vous la diff\'{e}rence ? Bravo ! +} + +Mais pour les documents {\em mal\/} saisis (c.-\`{a}-d. sans blanc) il est +toujours possible de sp\'{e}cifier la sous-option \verb|\untypedspaces| +\untypedspaces pour obtenir une insertion automatique des espaces +manquants comme ici! o\`{u} il avait \'{e}t\'{e} saisi `\verb|ici!|'. +V\'{e}rifions pour les autres ponctuations :;? \typedspaces que nous +n'obtenons pas :;? serr\'{e}es comme ici. + +V\'{e}rification de l'espacement : + +\noindent +\verb| \typedspaces X~; Y ; Z;| = \typedspaces X~; Y ; Z; + +\noindent +\verb|\untypedspaces X~; Y ; Z;| = \untypedspaces X~; Y ; Z; \typedspaces + +\newpage\english +\section{French typing} +French typists have some habits. For example they type a space before `: ; ! ? +\verb|>>|' and after \verb|<<|. \FP\ replace automatically this +blank space by the appropriate spacing. + +There is only one kind of quoting in French by the mean of guillemets which +are allways typed \verb|<<| and \verb|>>|. Usual english simple and double +quotes must be prohibited. + +\subsection{\mdseries% + \texttt{\textbackslash untypedspaces}}% +This control command offers the ability to repair automatically a document +badly typed i.e. in which spaces were not typed before french punctuation. +This bypass can help but is not the good way to use daily because there are +many cases where, for example, a double point must never be preceeded +by a space. + +Now we verify that the spacing is unchanged in English: + +\noindent +\verb| \typedspaces X~; Y ; Z;| = \typedspaces X~; Y ; Z; + +\noindent +\verb|\untypedspaces X~; Y ; Z;| = \untypedspaces X~; Y ; Z; \typedspaces + +\subsection{\mdseries% + \texttt{\textbackslash wrongtypedspaces}} +A french typist may input spaces before +punctuation as it is usual in French. These unfortunate space + can be removed by simply letting \FP\ do it with* the control +sequence: + +\begin{verbatim} +\letpunctuationactivefor + \wrongtypedspaces +\end{verbatim} + +\FRENCH% pour ne pas dire \french +\letpunctuationactivefor\wrongtypedspaces +\english +Let's try the previous example:\par +\noindent +\verb| X~; Y ; Z;| = X~; Y ; Z; + +Now we say \verb|\nowrongtypedspaces| +\nowrongtypedspaces to come back to the normal +situation. + +\vfill + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\nowrongtypedspaces% to be sure it is set when english text is skipped +\csname StopFrenchLbT\endcsname% special case, temporary. + +\section[Test des guillemets fran\c{c}ais, 7 (<% + < >% + >) et 8-bits (<< >>)]% +{Test des guillemets \newline fran\c{c}ais (<< >>)} +\hyphenation{nor-ma-le-ment} + +Les guillemets fran\c{c}ais s'\'{e}crivent et se saisissent +<< normalement >> comme ceci : +\verb|<< |{\tt nor}\-% +{\tt male}\-{\tt ment }\verb|>>| + ou \'{e}ventuellement en italiques mais toujours +\bgroup% for frenchle +<< \em normalement\/ >> % +\egroup% for frenchle +; ici nous avons tap\'{e} au clavier : +\verb|<< \em| {\tt normalement}\verb| >>|. +Et en tapant par contre :\\ \verb|<<\em| + {\tt anormale\-ment (sans espace)}\verb|>>| \ on obtient... +\bgroup% for frenchle +<<\em anormale\-ment (sans espace)\/>>. +\egroup% for frenchle +Re\-mar\-quez que les guillemets font office d'acco\-lades \TeX{} et que donc +les changements de polices sont restaur\'{e}s en sortant de la citation. + +Pour les documents d\'{e}j\`{a} saisis {\em sans espace} \FP\ +ins\'{e}rera syst\'{e}matiquement un espace \`{a} l'endroit +d\'{e}sir\'{e} si l'on a donn\'{e} la sous-option \verb|\untypedspaces|. +\untypedspaces +Et en tapant \`{a} nouveau +\verb|<<\em| {\tt anormale\-ment (sans espace)}\verb|>>| on obtient +\bgroup% for frenchle +<<\em anormalement (sans espace)\/>>. +\egroup% for frenchle +\typedspaces + +Parfois on d\'{e}sirera remplacer syst\'{e}matiquement tous les +guillemets anglais (`` et '') d'un texte par de vrais guillemets +fran\c{c}ais, il +suffira alors de fournir l'\'{e}trange option :\\ +\texttt{\backslash noenglishdoublequotes}\\ +\noenglishdoublequotes pour obtenir : `` ''. + +`` '' (m\^{e}me test en d\'{e}but de paragraphe).\englishdoublequotes + +Lorsqu'une citation est faite dans un texte, celle-ci commence +toujours par des guillemets. << Cette citation peut se poursuivre sur +plusieurs paragraphes. + +Dans ce cas, le style %\verb|french| +ins\'{e}rera syst\'{e}matiquement les guillemets n\'{e}cessaires +en d\'{e}but de +chaque paragraphe. >> + +Mais une citation peut aussi en contenir une autre. << Dans ce cas l'imprimerie + nationale pr\'{e}cise dans ses {\em R\`{e}gles typographiques} : +\ancientguillemets + << Lors\-que la premi\`{e}re citation est +elle-m\^{e}me plac\'{e}e entre +guillemets, chaque ligne de la seconde d\'{e}butera par un +guillemet ouvrant. >> +Ce dispositif, comme on le voit, n'est pas mis en {\oe}uvre ici + (voir son application au paragraphe \ref{noeveryparguillemets}). + << La deuxi\`{e}me citation peut aussi... + +se poursuivre sur un ou +plusieurs paragra\-phes. >> Notez bien qu'avant cette citation nous avons +demand\'{e} les \verb|\ancientguillemets| +pour produire ces guillemets fermants +en d\'{e}but de ligne. Le \verb|\todayguillemets| r\'{e}tablit la +situation une fois +le deuxi\`{e}me niveau termin\'{e}. \todayguillemets + +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding +\enlargethispage{10pt}% increase probably due to EC fonts metrics? +\fi} +Il arrive que la fin d'une citation de deux\-i\`{e}me niveau +co\"{\i}ncide avec celle +du premier niveau. << Dans ce cas il faudra coder, comme ici :\\ +\verb|\endguillemets| +\`{a} la place de ``\verb|>>|'' \endguillemets. + +Deux tests : \fbox{\begin{guillemets} XXX \end{guillemets}} +et \fbox{X \begin{guillemets} XXX \end{guillemets} X} servant \`{a} +v\'{e}rifier l'espacement quand on utilise \verb|\begin| et \verb|\end|. + +Le paragraphe suivant va alors d\'{e}marrer de fa\c{c}on +tout \`{a} fait normale... + +On peut aussi coder : +\begin{verbatim} +\begin{guillemets} +Une citation... +\end{guillemets} +\end{verbatim} +ce qui donnera : +\begin{guillemets} +Une citation... +\end{guillemets} +et en tapant {\em \`{a} la \TeX} : \verb|\guillemets{}| \verb|Une citation...| +\verb|\en|\vers|d|\-\vers|guillemets{}| nous devons obtenir absolument la m\^{e}me chose : +\guillemets{} Une citation... \endguillemets{} + +V\'{e}rifions maintenant l'espacement dans les diff\'{e}rents cas : + +\noindent +\fbox{\parbox{2cm}{<<X\dotfill X>>}} \%\texttt{\backslash typedspaces} + {\em sans blanc} + +\noindent +\fbox{\parbox{2cm}{<< X\dotfill X >>}} \%\texttt{\backslash typedspaces} +{\em normal} + +\noindent\untypedspaces +\fbox{\parbox{2cm}{<< X\dotfill X >>}} \%\texttt{\backslash untypedspaces} +{\em avec blanc} + +\noindent +\fbox{\parbox{2cm}{<<X\dotfill X>>}} \%\texttt{\backslash untypedspaces} +{\em sans blanc} +\typedspaces + +\noindent +\fbox{\parbox{3cm}{A blabla bla blabla : << +Ceci est mon test de c\'{e}sure >>}} <<...>> reste possible. + +\begin{flushleft} + Ceci est << un test avec \verb|\raggedright| >> qui +--~th\'{e}oriquement~-- ne devrait plus nous poser de probl\`{e}me. +\end{flushleft} + +\subsection{{\mdseries% +\texttt{\textbackslash noeveryparguillemets}}}\label{noeveryparguillemets} +Cette option permet de g\'{e}rer correctement les citations de second +rang mais elle est tout \`{a} fait contraire + au processus \verb|\everypar| cit\'{e} pr\'{e}c\'{e}demment gr\^{a}ce auquel + les guillemets sont g\'{e}n\'{e}r\'{e}s automatiquement \`{a} chaque +d\'{e}but de paragraphe. +Voici ce que produit l'option {\em normale\/} +\texttt{\backslash every\-par\-guil\-lemets} sur le paragraphe suivant : + +<< Tout le monde s'accorde \`{a} trouver l\'{e}gitime la division : +{\tt extra-ordinaire}. Le cas des mots com\-pos\'{e}s est le seul +\`{a} rencontrer +cette unanimit\'{e}. Dans les autres, les opinions sont tr\`{e}s partag\'{e}es. + Frey est le plus cat\'{e}gorique : il n'admet de division selon la formation +que pour des mots de composition compl\`{e}tement fran\c{c}aise, et la rejette +sinon... Le {\em Code typographique}, tout en adoptant ce m\^{e}me point + de vue << ... [reconna\^{\i}t] n\'{e}anmoins que certains auteurs de travaux +scientifiques pr\'{e}f\`{e}rent la division \'{e}ty\-mologique +qui fait ressortir + la racine grecque ou latine. >> Quant \`{a} Gouriou, il \'{e}crit : +<< On pr\'{e}f\`{e}rera cependant garder la coupure \'{e}tymologique + chaque fois que les composants sont {\em ais\'{e}ment} re\-connaissables. >> +(L'italique est de Gouriou.) +\marginpar{{\footnotesize Ici on a trich\'{e} avec des} \texttt{\backslash!}} +\!Telle \!est aussi \!l'opinion \!de \!Girodet >>. + +Et voici l'effet de \verb|\noeveryparguillemets| : +\noeveryparguillemets + +<< Tout le monde s'accorde \`{a} trouver l\'{e}gitime la division : +{\tt extra-ordinaire}. Le cas des mots com\-pos\'{e}s est le seul +\`{a} rencontrer +cette unanimit\'{e}. Dans les autres, les opinions sont tr\`{e}s partag\'{e}es. + Frey est le plus cat\'{e}gorique : il n'admet de division selon la formation +que pour des mots de composition compl\`{e}tement fran\c{c}aise, et la rejette +sinon... Le {\em Code typo\-graphique}, tout en adoptant ce m\^{e}me point + de vue << ... [reconna\^{\i}t] n\'{e}anmoins que certains auteurs de travaux +scientifiques pr\'{e}f\`{e}rent la division \'{e}ty\-mologique +qui fait ressortir + la racine grecque ou latine. >> Quant \`{a} Gouriou, il \'{e}crit : +<< On pr\'{e}f\`{e}rera cependant garder la coupure \'{e}tymologique + chaque fois que les composants sont {\em ais\'{e}ment} re\-connaissables. >> +(L'italique est de Gouriou.) +Telle est aussi l'opinion de Girodet >>. +\everyparguillemets + +Il faut noter que cette option impose que le paragraphe commence et se +termine par des guillemets. % sinon code \guillpar et \parguill +C'est pour cela que nous n'avons pas mis cette option par d\'{e}faut. + +\subsubsection{Un test assez m\'{e}chant} +Voici un exemple d'utilisation dans un environement \verb|quotation|% +\footnote{Nous avons introduit \texttt{\backslash moretolerance} +pour obtenir une composition correcte.} : +\begin{quotation} +\moretolerance\moretolerance\moretolerance +<< Je ne peux mieux faire que de citer la d\'{e}finition qu'a donn\'{e}e +de la gravure un de nos ma\^{\i}tres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste \`{a} conna\^{\i}tre la figure +la plus parfaite que l'on puisse donner aux caract\`{e}res, les dimensions +qu'ils doivent avoir et \`{a} les repr\'{e}senter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perp\'{e}tuent des lettres +\`{a} l'infini par la fonte. \endguillemets +\end{quotation} + +Le m\^{e}me exemple sans \verb|quotation| : + +<< Je ne peux mieux faire que de citer la d\'{e}finition qu'a donn\'{e}e +de la gravure un de nos ma\^{\i}tres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste \`{a} con\-na\^{\i}tre la figure +la plus parfaite que l'on puisse donner aux caract\`{e}res, les dimensions +qu'ils doivent avoir et \`{a} les repr\'{e}senter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perp\'{e}tuent des lettres +\`{a} l'infini par la fonte. \endguillemets +\bigskip + +\noeveryparguillemets +Puis avec \verb|\noeveryparguillemets| (c.-\`{a}-d. sans \verb|quotation|) : + +<< Je ne peux mieux faire que de citer la d\'{e}finition qu'a donn\'{e}e +de la gravure un de nos ma\^{\i}tres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste \`{a} conna\^{\i}\-tre la figure +la plus parfaite que l'on puisse donner aux caract\`{e}res, les dimensions +qu'ils doivent avoir et \`{a} les repr\'{e}senter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perp\'{e}tuent des lettres +\`{a} l'infini par la % En cas d'arr\^{e}t \`{a} cet endroit : le format +fonte. \endguillemets%.fmt utilis\'{e} n'est prob. pas ds le bon codage ! +\bigskip + +Et enfin avec \verb|quotation|, voil\`{a} +ce que cela peut donner\label{quotation} : +%%% La \marginpar suivante pose un pb de ``Lost Float'' qd elle est +%%% placee plus loin, pourquoi ? +\marginpar{{\footnotesize Il y a ici un probl\`{e}me \`{a} \'{e}tudier en 2 colonnes !}} +\begin{quotation} +<< Je ne peux mieux faire que de citer la d\'{e}finition qu'a donn\'{e}e +de la gravure un de nos ma\^{\i}tres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consis\-te \`{a} conna\^{\i}tre la figure +la plus parfaite que l'on puisse donner aux caract\`{e}res, les dimensions +qu'ils doivent avoir et \`{a} les repr\'{e}senter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perp\'{e}tuent des lettres +\`{a} l'infini par la fonte. + \endguillemets +\end{quotation} +\everyparguillemets +On notera ici les espaces inter-mots beaucoup plus {\em tol\'{e}rants}. C'est +la seule solution trouv\'{e}e pour arriver \`{a} imprimer +quelque chose d'\`{a} peu +pr\`{e}s correct en double colonnage. + +\vfill +Terminons la page en anglais pour tester le haut de page. Les guillemets +doivent \^{e}tre bons avec le codage T1. + +\english +Let's complete the page with english text in order to test and show +how will be printed the header. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\onecolumn +\subsubsection{M\^{e}me test en \mdseries\texttt{\textbackslash onecolumn}} +Voici un exemple en environement \verb|quotation| : +\begin{quotation} +<< Je ne peux mieux faire que de citer la d\'{e}finition qu'a donn\'{e}e +de la gravure un de nos ma\^{\i}tres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste \`{a} conna\^{\i}tre la figure +la plus parfaite que l'on puisse donner aux caract\`{e}res, les dimensions +qu'ils doivent avoir et \`{a} les repr\'{e}senter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perp\'{e}tuent des lettres +\`{a} l'infini par la fonte. \endguillemets +\end{quotation} + +Le m\^{e}me exemple sans \verb|quotation| : + +<< Je ne peux mieux faire que de citer la d\'{e}finition qu'a donn\'{e}e +de la gravure un de nos ma\^{\i}tres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste \`{a} conna\^{\i}tre la figure +la plus parfaite que l'on puisse donner aux caract\`{e}res, les dimensions +qu'ils doivent avoir et \`{a} les repr\'{e}senter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perp\'{e}tuent des lettres +\`{a} l'infini par la fonte. \endguillemets +\bigskip + +\noeveryparguillemets +Puis avec \verb|\noeveryparguillemets| (sans \verb|quotation|) : + +<< Je ne peux mieux faire que de citer la d\'{e}finition qu'a donn\'{e}e +de la gravure un de nos ma\^{\i}tres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste \`{a} conna\^{\i}tre la figure +la plus parfaite que l'on puisse donner aux caract\`{e}res, les dimensions +qu'ils doivent avoir et \`{a} les repr\'{e}senter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perp\'{e}tuent des lettres +\`{a} l'infini par la fonte. \endguillemets +\bigskip + +Et enfin avec \verb|quotation| : +\begin{quotation} + \let\bkORI\break + %\def\break{\bkORI\hbox to 0pt{/}}% for debug + %\ancientguillemets% for debug +<< Je ne peux mieux faire que de citer la d\'{e}finition qu'a donn\'{e} +de la gravure un de nos ma\^{\i}tres fondeurs, Fournier le Jeune : + +<< La scien\-ce du graveur, dit-il, consiste \`{a} conna\^{\i}tre la figure +la plus parfaite que l'on puisse donner aux caract\`{e}res, les dimensions +qu'ils doivent avoir et \`{a} les repr\'{e}senter sur l'acier pour les frapper +sur le cuivre afin d'en former des matrices qui perp\'{e}tuent des lettres +\`{a} l'infini par la fonte. \endguillemets +\end{quotation} +\everyparguillemets + +\subsubsection{Test de << stretchability >>} + +Les espaces doivent \^{e}tre \'{e}galement r\'{e}partis sur la ligne : + +\medskip +\hbox to \hsize{etiord-gauche\footnote{En plain \TeX{} l'espacement est ici +\label{etiord} + curieusement incorrect ! ...} + << centre-ertnec >> \hbox{}\footnote{... alors qu'il faudrait +la m\^{e}me r\'{e}partition + de l'espace.}% + ehcuag-droite} +\medskip + +\subsection{Test des commandes \mdseries\texttt{\textbackslash ifnum}} + +\ifnum 1 < 3 1\verb| < |3 est VRAI, bien s\^{u}r ! + \else 1\verb| < |3 est FAUX ! \fi +comme +\ifnum 3 > 1 3\verb| > |1 est aussi VRAI, bien s\^{u}r ! + \else 3\verb| > |1 est FAUX ! \fi + +\medskip + +\subsection{Test des commandes \mdseries\texttt{\textbackslash everypar}} + +{J'ai cod\'{e} dans cette section \verb|\everypar{$++\,$}| : \everypar{$++\,$} + +Paragraphe 1 << citation niveau 1 + +Paragraphe 2 << citation niveau 2 + +Paragraphe 3 fin citation niveau 2 >> puis fin niveau 1 >> + +Paragraphe 4} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage% tjrs en 1 colonne +\hbox{}\ifx\itshape\undefined\else% avoid old frencht crash +\subsection{Test de fermeture pr\'{e}matur\'{e}e} + +Il arrive que les guillemets soient ferm\'{e}s dans un environnement +plus int\'{e}rieur qui n'apparie donc pas correctement les blocs. +Voici un exemple d'utilisation : + +\begin{verbatim} +Ma\^{\i}tre Corbeau dit \`{a} son clerc : << \itshape Cher coll\`{e}gue, + +\begin{itemize} +\item Ah que vous \^{e}tes joli ! +\item Ah que vous me semblez beau ! >> \upshape +et s'enfuit de ce pas... +\end{itemize} + +\endguillemets +\textsf{Quel homme \'{e}trange, n'est-ce pas ?} +\end{verbatim} + +Voici ce que cela donne comme composition : + +\medskip +\bgroup% for frenchle +Ma\^{\i}tre Corbeau dit \`{a} son clerc : << \itshape Cher coll\`{e}gue, + +\SmsG% +\begin{itemize} +\item Ah que vous \^{e}tes joli ! +\item Ah que vous me semblez beau ! >> \upshape +et s'enfuit de ce pas... +\end{itemize} +\FmsG% + +\endguillemets +\egroup% for frenchle +\textsf{Quel homme \'{e}trange, n'est-ce pas ?} + +\medskip +On notera plusieurs choses. Premi\`{e}rement il a fallu +r\'{e}tablir \verb|\upshape| apr\`{e}s les guillemets fermants, +du fait du mauvais appariement des blocs. Ensuite un message +sort indiquant une fermeture pr\'{e}matur\'{e}e des guillemets. +Cette fermeture restant incompl\`{e}te on note enfin que l'on a forc\'{e} +un \verb|\endguillemets| pour clore proprement et d\'{e}finitivement +l'environnement guillemets. + +\subsection{\mdseries\texttt{\textbackslash everyparguillemetsremoved}} +\label{noeveryparguillemetsremoved} +Dans le m\^{e}me exemple nous pouvons aussi interdire la g\'{e}n\'{e}ration +automatique des guillemets ouvrants \`{a} chaque d\'{e}but de paragraphe ; +il faut alors saisir \verb|\everyparguillemetsremoved| : +\everyparguillemetsremoved + +\medskip +\bgroup% for frenchle +Ma\^{\i}tre Corbeau dit \`{a} son clerc : << \itshape Cher coll\`{e}gue, + +\SmsG% +\begin{itemize} +\item Ah que vous \^{e}tes joli ! +\item Ah que vous me semblez beau ! >> \upshape +et s'enfuit de ce pas... +\end{itemize} +\FmsG% + +\endguillemets +\egroup% for frenchle +\textsf{Quel homme \'{e}trange, n'est-ce pas ?} + +\medskip +Il suffit ensuite de r\'{e}tablir \verb|\everyparguillemets|. +\everyparguillemets +\fi% ifx \itshape + +\subsection{Test de l'espacement} +{\def\marque#1{\vbox{\halign{\hfil##\hfil\cr + \llap{\vrule width4.5mm height.4pt}% + \rlap{\vrule width4.5mm height.4pt}\cr + \noalign{\vskip-1cm}% + #1\cr}}} + \Huge + \def\ecartement{\fbox{a << \marque{\hbox{$|$}} >> b}} + \ecartement +} +% Difference de taille a voir entre les deux %%%%%% +\setbox7\hbox{\leftguillemets\ X} +\setbox8\hbox{X\ \rightguillemets} +\SmsG% +\message{Taille des boites page \thepage\space \string: + \the\wd7=\string?=\the\wd8} +\FmsG% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\newpage +\hbox{} +\vfill +\centerline{\Large Page intentionnellement laiss\'{e}e blanche} +\vfill +\twocolumn +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage + +\subsection{Guillemets interrompus} +Une citation peut \^{e}tre en anglais et donc se commencer par +\vers|<< \|\vers|english| et se terminer par \vers|\|\vers|french >>|. Ce cas +ne doit plus g\'{e}n\'{e}rer de message +{\em fermeture de guillemets non ouverts} ! +Voici le test, r\'{e}alis\'{e} ici +tout d'abord avec l'environnement \vers|nonfrench| : + +\medskip +1 \fbox{<< \begin{nonfrench}% LaTeX keeps space + Text in English + \end{nonfrench}% LaTeX keeps space + >>} + + +\medskip +Puis avec : \\ +\verb|\begin{english}| ... \verb|\end{english}| : + +\medskip +% bypass here our TeX--XeT emulation to avoid message: english environment +% ended by \end{guillemets} +\def\temp{\begingroup} +\ifx\beginL\temp +\else +{% local redef of english for plain and our specific test file + \ifx\undefined\englishORI\else\let\english\englishORI\fi% +2 \fbox{<< \begin{english}% LaTeX keeps space + Text in English + \end{english}% LaTeX keeps space + >>} + +\medskip +Et enfin avec \verb|\|\verb|english| ... \verb|\endenglish| : + +\medskip +3 \fbox{<< {\csname english\endcsname + Text in English + \csname endenglish\endcsname}% space here to remove + >>} +}% local redef of english for plain test +\fi + +\medskip +Ceci avait aussi pour but de tester ces possibilit\'{e}s de +changement de langage et de v\'{e}rifier l'espacement qui +devrait \^{e}tre ainsi : + +\medskip +0 \fbox{<< Text in English >>} + +\noenglishdoublequotes +\subsection{`` {\mdseries\texttt{\textbackslash noenglishdoublequotes}} ''} + +Nous avons mis la commande \vers|\noenglish|\-\vers|doublequotes| juste avant +le titre de section de fa\c{c}on \`{a} remplacer les << quotes >> anglaises +par des guillemets fran\c{c}ais dans ce titre. +Il s'agit de v\'{e}rifier aussi que la g\'{e}n\'{e}ration des fichiers auxiliaires +\verb|.aux| et \verb|.toc| ne pose pas de probl\`{e}me lorsque ces fichiers +sont r\'{e}utilis\'{e}s. Bien s\^{u}r, si cette option n'est pas activ\'{e}e pour tout le +document, comme ici, on ne retrouvera pas les guillemets fran\c{c}ais +dans la table des mati\`{e}res. + +\noenglishdoublequotes + +\english% histoire de changer de langue ? + +\newpage\french +\subsection%{<< no-french guillemets >>} + {\mdseries\texttt{\textbackslash nofrenchguillemets}} +En codant \verb|\nofrenchguillemets| +\nofrenchguillemets on n'utilise plus +les guillemets programm\'{e}s dans l'extension {\tt french}. Si on les utilise +malgr\'{e} tout, le r\'{e}sultat d\'{e}pendra de la police. Ici nous utilisons la +police \fontname\font{} et nous obtenons : + +<% + < en 7-bits >% + > + +et aussi : + +<< en 8-bits >>. + +R\'{e}activons maintenant les guillemets avec la commande +\verb|\frenchguillemets| +\frenchguillemets et faisons le m\^{e}me test : + +<% + < en 7-bits >% + > + +et aussi : + +<< en 8-bits >>. Voyez-vous ? +\vfill +\subsection{Haut de page+guillemets} + +\subsubsection{En 8-bits} +Il ne devrait pas y avoir de probl\`{e}me du tout. +Car, puisqu'il s'agit d'un guillemet en 8-bits, cela doit +\^{e}tre forc\'{e}ment un vrai guillemet fran\c{c}ais. Mais, malheureusement, +{\em la solution pour l'impl\'{e}menter n'est pas encore trouv\'{e}e avec +le codage OT1}. +Le codage de fonte de ce document imprime : +\nonfrench <% + < >% + >% +\endnonfrench{} + (doit \^{e}tre parfait en T1). + +\subsubsection{En 7-bits} +En codage OT1 les guillemets 7-bits de haut de page ne peuvent \^{e}tre +bons sur cette page + {\bf QUE} parce que nous avons termin\'{e} la +page en fran\c{c}ais, sinon nous aurions eu : +\ifx\textexclamdown\undefined + \def\textexclamdown{!`}\def\textquestiondown{?`} +\fi +\textexclamdown\textexclamdown{} et \textquestiondown\textquestiondown + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\hbox{ }\NL{25} + +\subsection{Guillemets et maths} + +L'\'{e}quation suivante ne doit plus produire le fameux message : + +{\tt ! Argument of \backslash \string @genG % string pour amslatex + has an extra % { pour emacs + $\}$% c'est un \delimiter qui pose pb tq avec frencht d'ou mode math +.} + +$$U^{k+1}=U^{k}- {< g_{k},d_{k} >}$$ + +\section{D'autres guillemets}\label{autres} +Avec \FP\ il est possible de substituer automatiquement aux +guillemets `anglais' la forme \noenglishquote `que voici' en donnant la +sous-option \verb|\noenglishquote|. +Mais attention, les apostrophes deviennent des accents +comme dans : {\em il s'agit ici de l'exemple} +\englishquote qui aurait d\^{u} \^{e}tre imprim\'{e} : +{\em il s'agit ici de l'exemple}. +Un usage intensif de cette option est plut\^{o}t \`{a} d\'{e}conseiller. + +\newpage\english +\section{French guillemets} +Using french guillemets in an english document (\verb|<<| and \verb|>>|) will +give (depending of font encoding) that: << and >>, it is normal! + +As you can look in the previous columns, french guillemets have specific +rules. They are used for quotation when an author is cited or each time an +emphasis is needed. Normally, italic is not used inside a quoted french +text, excepted when you really want to show some wording. + +When opened, each paragraph of the quoted text will start left + with the opening french guillemets. + +Another quotated text can take place inside a first level. This second level +citation is also very specific. Each line must start with guillemets. + +The style designer, from time to time, chose to apply here an ancient rule +by putting here closing guillemets. + +The technical tools involved in \FP\ + disallow to have at the same time +the \verb|\everypar| possibility and the second level mechanism. + +\subsection{Guillemets and maths} + +The following equation is always correct: + +$$U^{k+1}=U^{k}- {< g_{k},d_{k} >}$$ + +and never produce an error message. +\NL1 + +\section{Other guillemets} +With \FP\ it is possible to replace english guillemets by +diacritic caracters. But, be careful, all apostrophes will be diacritics too. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Trois petits points} +Les points de suspension sont : ... et non pas ceux de \TeX{} : $\ldots{}$ +\noTeXdots +En codant \verb|\noTeXdots| les commandes \verb|\dots| ou \verb|\ldots| de +\LaTeX{} donneront : $\ldots{}$ Mais l'option par d\'{e}faut a \'{e}t\'{e} +volontairement maintenue au standard (\verb|\TeXdots|) puisqu'il suffit +de ne pas les utiliser.\TeXdots + +\section{Crochets} +IBM, en son temps, avait cr\'{e}\'{e} l'EBCDIC dans lequel ne figurait pas +les crochets ([ ]). C'est la raison pour laquelle les utilisateurs IBM +ont parfois substitu\'{e} $<$ et $>$ aux crochets. La sous option +\verb|\EBCDICbrackets| \EBCDICbrackets +permet de les remplacer comme ici <automatiquement> par des crochets. +Mais faites attention, les doubles guillemets +\verb|<|\verb|<| et \verb|>|\verb|>| % pour eviter la conversion 8bits + ne donneront jamais des crochets mais << et >> +(sauf en mode \verb|verbatim|). On peut en g\'{e}n\'{e}ral +se contenter de \verb|< <| et \verb|> >| pour obtenir < < et > >. +On revient \`{a} la situation ant\'{e}rieure en tapant la commande suivante : +\verb|\normalbrackets|\normalbrackets. + +\section{D\'{e}bordements} +Nous venons de choisir l'option d'indication de d\'{e}bordement de ligne +\verb|\overfullhboxmark| et nous voyons son +effet lorsque la ligne ne peut \^{e}tre coup\'{e}e gr\^{a}ce \`{a} l'impression +de la petite bo\^{\i}te noire. +%(cf. page \pageref{debordement}). +Cette option est activ\'{e}e au minimum pour une page enti\`{e}re. +Ne pas sp\'{e}cifier l'option et son contraire sur la m\^{e}me page sinon +l'effet est inchang\'{e}. + +\labelsinmargin +\section{\mdseries\texttt{\textbackslash labelsinmargin}}% +\label{labels: in: margin} +\FP\ offre la possibilit\'{e}, comme cela a \'{e}t\'{e} demand\'{e} +\`{a} partir de cette section, d'imprimer dans la marge le libell\'{e} des +\'{e}tiquettes utilis\'{e}es dans les ordres \verb|\label|. +Cette option, utilisable +aussi en dehors du fran\c{c}ais, est la suivante : +\verb|\labelsinmargin|. + +\newpage\english +\section{Three dots} +Usual and common \TeX{} and \LaTeX{} dots are not french dots. +\NL4 + +\section{Brackets} +An option is offered to replace \verb|<| and \verb|>| by brackets. +\NL{11} + +\section{\mdseries\texttt{\textbackslash overfullhboxmark}} +The command \verb|\overfullhboxmark| print a black +box where your have an overfull \verb|hbox| i.e.\ when a line can't be +hyphenated. The default is \verb|\nooverfullhboxmark|. +\NL4 + +\section{Labels in margin}\label{labels are in margin} +An option allow you to print the labels you use in a page. These labels are +printed in margins. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Des points sur...} +Inutile de mettre les points sur les i quand on accentue un i. Tout bon +\'{e}diteur de texte doit faire ce travail pour vous. Sinon il existe la +sous-option \verb|\idotless| qui produira \idotless +\let\XX\^% Pour \'{e}viter une traduction \'{e}ventuelle en 8 bits +\XX{i} si on lui demande d'imprimer \verb|\^i|. +\iwithdot La valeur par d\'{e}faut +dans \FP\ est \verb|\iwithdot| qui donnera malgr\'{e} tout de +bons i accentu\'{e}s avec ML\TeX{} (\^{\i}) s'ils sont saisis directement en 8 +bits (v\'{e}rifiez dans votre fichier source). + +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding +\section{Ponctuation et mode \protect\linebreak % SPECIAL FONTES EC REELLES + math\'{e}matique} +\else +\section{Ponctuation et mode math\'{e}matique} +\fi} +Il s'agit de v\'{e}rifier que les modifications introduites +par l'extension \FP\ +ne posent aucun genre de probl\`{e}me en mode math\'{e}matique. +\\ Nous d\'{e}finissons une macro \verb|\test| : +\\ \verb|\def\test#1{#1}|\def\test#1{#1} +\\ pour voir si le mode math\'{e}matique peut \^{e}tre appel\'{e} +sans probl\`{e}me en +argument de macro-instructions. L'appel de \verb|\test{$x''$}| ne doit +pas poser de probl\`{e}me% +\iflatex +, ni m\^{e}me \verb|\texttt{|\-\verb|[$x''=0$]}| +\\ Ainsi : \verb|\texttt{[$x''=0$]}| +\\donne : \texttt{[$x''=0$]} et +\else% +. \\Ainsi : +\fi +\\ \verb|$A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$| +\\ \verb|\test{$A':B''_1<C_{d'}$}| +\\donne : $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{donne :} \test{$A':B''_1<C_{d'}$} +\\Avec \verb|\noenglishquote|\noenglishquote{} cela... +\\donne : $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{donne :} \test{$A':B''_1<C_{d'}$} +\englishquote +\\ puis avec \verb|\noenglishdoublequotes| \noenglishdoublequotes et +`` mise en vedette '' : +$$% \begin{displaymath} + A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ; +$$% \end{displaymath} +$$% \begin{displaymath} + \test{A':B''_1<C_{d'}} +$$% \end{displaymath} +De m\^{e}me : +\begin{verbatim} +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)} +\end{verbatim} +doit s'imprimer :\\ +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)}\\ +sans produire le message d'erreur << Fermeture de guillemets non ouverts ! >>. +\englishdoublequotes + + +\newpage\english +\section{An \i dotless} +Everybody knows that a french ``{\em i circonflexe}'' has no dot on it. +(In my opinion it is a \TeX{} bug to leave the dot when a diacritic is +put on.) To suppress the dot automatically the best way is to use a well +programmed text editor. \FP\ offers another opportunity with +\verb|\idotless|. + +\NL2 + +\section[Math mode and punctuation]{Math mode and \newline punctuation} +Here we verify that french modifications about punctation +does not introduce any problem in printing mathematics. +\\ We define a new macro \verb|\test| : +\\ \verb|\def\test#1{#1}|\def\test#1{#1} +\\ in order to see if there is no more problem when passing maths +inside a macro argument. Calling \verb|\test{$x''$}| must not +introduce any problem% +\iflatex +, as well as \verb|\texttt{|\-\verb|[$x''=0$]}| +\NL1\\So: \verb|\texttt{[$x''=0$]}| +\\gives: \texttt{[$x''=0$]} and +\else% +. \NL1\\So: +\fi +\\\verb|$A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$| +\\\verb|\test{$A':B''_1<C_{d'}$}| +\\ gives: $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{gives:} \test{$A':B''_1<C_{d'}$} +\\With \verb|\noenglishquote|\noenglishquote{} it$\ldots{}$ +\\gives: $A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ;$ +\\\phantom{gives:} \test{$A':B''_1<C_{d'}$} +\englishquote +\\ and with \verb|\noenglishdoublequotes|\noenglishdoublequotes{} +in ``display'' math mode: +$$% \begin{displaymath} + A':B''_1<C_{d'}>D^2\ et\,\ !n\ ?\ ; +$$% \end{displaymath} +$$% \begin{displaymath} + \test{A':B''_1<C_{d'}} +$$% \end{displaymath} +\englishdoublequotes +Also: +\ifx\documentclass\undefined\\ % Still Plain! +\else\\[-2\baselineskip] % to keep the same spacing as in French +\fi +\begin{verbatim} +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)} +\end{verbatim} +must print:\\ +%\SmsG% +{\tt CALL SUBR($<$iopt$<$,ilopt$>% + >$)}\\ +%\FmsG% +without producing the error message: +``Fermeture de guillemets non ouverts !''. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +Pour ma part lorsque je d\'{e}sire des crochets que je n'ai pas +au clavier, je pr\'{e}f\`{e}re taper :\\ +\verb|{\tt CALL SUBR(<iopt<,ilopt> >)}| et utiliser +l'option \verb|\EBCDICbrackets|\EBCDICbrackets{} :\\ +{\tt CALL SUBR(<iopt<,ilopt> >)} + +Cette option n'a pas d'effet en mode math\'{e}matique : +$$ 1233 < 1234 <% + < 1235 >% + > 1234 > 1233 $$ +\normalbrackets + +\makeatletter% we should use \frac with AmS +\ifx\RIfM@\undefined%\ifx\csname amsmath.sty\endcsname\relax + \long\def\text#1{#1}\long\def\frac#1#2{{#1\over#2}} +\fi +\makeatother + +V\'{e}rifions aussi +($x < {\frac{1}{3}} < {\frac{1}{2}} > {\frac{1}{4}}$) : +$$x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4} $$ +puis aussi : + + \text{\quad pour $|y| < \frac{111}{444}$} + +\bigskip +La double ponctuation ne doit avoir aucun effet +(visible) dans une formule en mode +math\'{e}matiques, est-ce bien le cas sur l'exemple ci-dessous : + +{\LARGE $$a := b, (c!n=m) \textrm{ ; vrai ?}$$} + +On notera que la partie texte de la formule a \'{e}t\'{e} saisie avec la +commande : \\ +\verb|\textrm{ ; vrai ?}|\\ +et que l'espacement fran\c{c}ais y a \'{e}t\'{e} appliqu\'{e}. + +\iflatex +\subsection{Le cas de la virgule} +En standard \AllTeX{} (ou alors avec l'option sp\'{e}ciale +\verb|\regularmathcomma| de \FP) le traitement de la virgule +est sp\'{e}cifique, ainsi quand on tape ce qui suit en mode +math\'{e}matique de mise en valeur : +\regularmathcomma% +\begin{versatim} +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{EUR}$$ +\end{versatim} +on obtient des espacements apr\`{e}s les virgules, +qu'il y ait ou non des espaces dans le source \TeX\ : +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{EUR}$$ +(ce qui montre une anomalie dans la composition +des nombres relatifs) +\frenchmathcomma +\fi + +\newpage\english +When I have no brackets on my keyboard I prefer to type:\\ +\verb|{\tt CALL SUBR(<iopt<,ilopt> >)}|\\ using + the option \verb|\EBCDICbrackets| but the result in english +remains unchanged\EBCDICbrackets{}:\\ +{\tt CALL SUBR(<iopt<,ilopt> >)} + +And within math mode: +$$ 1233 < 1234 <% + < 1235 >% + > 1234 > 1233 $$ +\normalbrackets + +\makeatletter% we should use \frac with AmS +\ifx\RIfM@\undefined%\ifx\csname amsmath.sty\endcsname\relax + \long\def\text#1{#1}\long\def\frac#1#2{{#1\over#2}} +\fi +\makeatother + +Let's verify also ($x < {\frac{1}{3}} < {\frac{1}{2}} > {\frac{1}{4}}$) : +$$x < \frac{1}{3} < \frac{1}{2} > \frac{1}{4}$$ +and: + + \text{\quad pour $|y| < \frac{111}{444}$} + +\bigskip +The ``double punctuation'' should not have any effect +in maths, which is obviously the case in the following +English example: +\NL1 + +{\LARGE $$a := b, (c!n=m) \textrm{ ; vrai ?}$$} + +Though the text part of the formula has been typed +via a command: \\ +\verb|\textrm{ ; vrai ?}|\\ +the french spacing doesn't apply here. + +\iflatex +\subsection{The comma case} +With \AllTeX{} standard (or with the special \FP\ +\verb|\regularmathcomma| the processing of comma is really specific. +So, when you type in the following in display math mode: +\regularmathcomma% +\begin{verbatim} +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ + 1\,500,00\,\textrm{EUR}$$ +\end{verbatim} +you will get thin spaces after the commas, +no matter spaces are given or not in the \TeX\ source: +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{EUR}$$ +(which shows a french typesetting error for +the relative numbers). +\frenchmathcomma +\fi% + +\iflatex +\newpage\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Par contre avec \FP\ on n'obtient +aucun espacement suppl\'{e}mentaire : +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{EUR}$$ +cela est d\^{u} \`{a} l'option \verb|\frenchmathcomma| qui est +activ\'{e}e par d\'{e}faut avec \FP. +Mais cela montre alors une anomalie de composition +dans les listes $(x,y,z)$. + +Si l'on veut des espaces il faut alors les indiquer +explicitement, comme cela est l'usage, plus +g\'{e}n\'{e}ralement, en mode math\'{e}matique : +\begin{versatim} +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{EUR}$$ +\end{versatim} +ce qui donnera : +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{EUR}$$ + +\medskip + +On notera que \FP\ ob\'{e}it \`{a} l'extension \texttt{icomma} +lorsque cette derni\`{e}re est charg\'{e}e avant \FP, mais +seulement en fran\c{c}ais. + + +\newpage\english +With the \FP\ package there is no space added +at all: +\frenchmathcomma% +$$\textrm{La fonction}\ f(x,y)\ + \textrm{ou le Vecteur}\ V(x, y, z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{EUR}$$ +this is due to the option \verb|\frenchmathcomma| which is +defaultly activated in the \FP\ package. +People will then distinguish a typesetting error +in the lists $(x,y,z)$. + +If you want spaces you should then give them to \TeX\ +explicitely, as usually done, more generally in math mode: +\begin{verbatim} +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ + V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ + 1\,500,00\,\textrm{EUR}$$ +\end{verbatim} +which will give: +$$\textrm{La fonction}\ f(x,\,y)\ + \textrm{ou le Vecteur}\ V(x,\,y,\,z)$$ +$$Total=1,255\,\$\ ou\ 1\,500,00\,\textrm{EUR}$$ +\fi + +You should notice that \FP\ respect the choice of +the \texttt{icomma} package when that last one is loaded before +\FP; but it only applies in French. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Mon antislash est \mdseries\texttt{\backslash}} + +L'antislash n'existe pas dans toutes les polices en OT1. +Que vous utilisiez \verb|\backslash| ou \verb|\textbackslash| +vous obtiendrez la m\^{e}me chose, ainsi +en romain droit on obtient : + +textbackslash=\textbackslash + +backslash=\backslash + +\noindent +mais avec la fonte tt on obtient : + +{\tt +textbackslash=\textbackslash + +backslash=\backslash +} +\NL2 + +\section{Notes de bas de page} + +\iflatex\makeatletter\xdef\countSAVED{\the\c@footnote}\makeatother\fi +\long\def\XX{% + Num\'{e}rotation normale\footnote{Une note normalement num\'{e}rot\'{e}e.}. + {\setcounter{footnote}{0} + \renewcommand{\thefootnote}{\fnsymbol{footnote}} + + Voici une note\footnote{Premi\`{e}re note.} + puis une autre\footnote{Deuxi\`{e}me note.} + puis encore une autre\footnote{Troisi\`{e}me note.} + }} + +Nous comparons ici la composition des notes de bas de page +(avec et sans \verb|\fnsymbol|) +dans une langue et dans l'autre. Voyons ce que cela donne : + +\XX + +\newpage\english +\section{My antislash is \mdseries\texttt{\textbackslash}} + +The antislash glyph doesn't exist in all OT1 font. +Whatever you use, \verb|\backslash| or \verb|\textbackslash| +you will obtain the same output, so +in upright roman you obtain: + +textbackslash=\textbackslash + +backslash=$\backslash$ + +\noindent +but with the tt font you obtain: + +{\tt +textbackslash=\textbackslash + +backslash=$\backslash$ +} + +\noindent +but \verb|\backslash| is only available in +math mode. + +\section{Compared footnotes} + +We compare the typesetting of footnotes +(with and without \verb|\fnsymbol|) +in one language versus the other. Let's look at them. + +\iflatex\makeatletter\c@footnote=\countSAVED\makeatother\fi + +\XX +\iflatex\makeatletter\c@footnote=\countSAVED\makeatother\fi +\addtocounter{footnote}{1} +\NL1 + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\section{\mdseries\texttt{\textbackslash guillemetsinarrays}} + +Avec \FP\ l'utilisation de guillemets \`{a} la +fran\c{c}aise en mode texte dans les environnements \texttt{array} ou +\texttt{eqnarray} est possible +mais il est n\'{e}cessaire de prot\'{e}ger les op\'{e}rateurs +inf\'{e}rieur (\texttt{<}) et sup\'{e}rieur (\texttt{>}) lorsqu'ils terminent +une colonne. On rajoute alors une paire d'accolades ou \verb|\relax| +pour terminer la macro-commande : +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& << >> &c\\ +<{}& \textrm{<< text >>}&c +\end{array} +$ +\end{verbatim} + +\noindent ce qui donne : + +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& << >> &c\\ +<{}& \textrm{<< text >>}&c +\end{array} +$ + +\medskip +On peut \'{e}viter d'avoir \`{a} modifier des tableaux existants et dans ce +cas on codera \verb|\no|\-\verb|guil|\-\verb|lemetsinarrays| : + +\begin{verbatim} +\noguillemetsinarrays +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & << >> &c\\ +< & \textrm{<< text >>}&c +\end{array} +$ +\end{verbatim} + +\noindent ce qui donne alors : + +\noguillemetsinarrays +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & << >> &c\\ +< & \textrm{<< text >>}&c +\end{array} +$ +\guillemetsinarrays% reset default + +\newpage\english +\section{Guillemets in arrays} +The \FP\ package allows people to print french guillemets +in \texttt{array} environments (but in text mode). This usually breaks +the code for \texttt{<} or \texttt{>} when they finish an array slot. +So you should protect them; like this: +\NL2 + +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& \textrm{<< text >>}&c +\end{array} +$ +\end{verbatim} +\NL1 + +\noindent which gives: + +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & \protect< &b\\ +a & b &<\\ +a & >{} &c\\ +<{}& \textrm{<< text >>}&c +\end{array} +$ +\NL1 + +\medskip + +One can avoid to modify existing arrays and then just say +\verb|\noguillemetsinarrays| but this command is not +interesting in English because the problem doesn't exist +at all: + +\begin{verbatim} +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & < &b\\ +a & b &<\\ +a & > &c\\ +< & \textrm{<< text >>}&c +\end{array} +$ +\end{verbatim} +\NL1 + +\noindent gives the following result: + +\def\GOfrench{\let\ifCLA\iffalse}% To allow dmy and frencht to compile +\ifx\ifCLA\undefined\expandafter\GOfrench\fi% without error. +$ +\begin{array}{ccc} +a & \inferieura &b\\ +a & +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +< &b\\ +a & b &<\\ +a & +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +> &c\\ +\ifCLA\expandafter\protect\fi% To allow \ConstantLayout test file. +< & \textrm{<< text >>}&c +\end{array} +$ +\NL1 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\noguillemetsinarrays% for continuation of column +Cette commande est aussi valable pour les environnements +\texttt{eqnarray} : + +\begin{eqnarray} +a & < &b\\ +a & > &c\\ +< & << >> &c\\ +< & \textrm{<< text >>}&c +\end{eqnarray} + +Pour terminer je r\'{e}tablis la valeur par d\'{e}faut : +\verb|\guillemetsinarrays| +\guillemetsinarrays +et si j'essaye le m\^{e}me exemple j'obtiendrais +le message : \\ +{\makeatletter\let\@PreserveBraces={% uggly hack for plain +\vers|! Argument of \@PreserveBraces has an|\\ +\vers|extra }.| +}% closing hack. + +\section{Guillemets verbatim} + +Avec l'option \verb|\nofrenchguillemets| il est possible +--~si \FP\ travaille en codage de fonte du genre \texttt{T1} +{\makeatletter\def\GOfrench{T1}\ifx\GOfrench\f@encoding\else +(mais ca ne semble pas \^{e}tre le cas ici)\fi}% +~-- +\nofrenchguillemets +d'imprimer des guillemets 8-bits en verbatim : \verb|<< >>|. +\frenchguillemets + +\iflatex +\section{Environnement guillemets exclus} + +\begin{versatim} +\guillemets{} Je me suis dit que : +<< avec l'option [...] les guillemets +sont inop\'{e}rants. \endguillemets{} +\end{versatim} +\SmsG +\noeveryparguillemets +\guillemets{} +\verb|[\guillemets{}]| Je me suis dit que : +<< avec l'option \vers|\noevery|\-\vers|par|\-\vers|guillemets| +on ne doit pas avoir un environnement qui se termine avant la fin +du paragraphe. C'est pourquoi l'environnement \texttt{guillemets} +n'est plus autoris\'{e} dans ce cadre. +D\'{e}sormais un message est \'{e}mis et ces environnements +guillemets sont inop\'{e}rants. \endguillemets{} + +On note que \verb|\guillemets{}| n'a aucun effet visible +et que le d\'{e}but de paragraphe est forc\'{e} aux premiers +caract\`{e}res-guillemets ouvrants qui suivent. Le +\verb|\endguillemets{}| de fin d'environnement ferme cependant +le paragraphe. + +\guillemets [\verb|\guillemets{}|]\! +Ces environnements exclus dans le cadre de cette option + peuvent \^{e}tre de premier ou +/\guillemets{} deuxi\`{e}me \endguillemets{}/ niveau +comme ici (slashs). [\verb|\endguillemets{}|] +\endguillemets{} + +\FmsG +\frenchguillemets +\fi% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\english +Notice that with standard \LaTeX\ you obtain a message +saying that \verb|\guillemotleft| and \verb|\guillemotright| +are invalid in math mode when you try to use guillemets +in an \texttt{array} environement. +\NL{9} + +\smallskip + +\section{Verbatim Guillemets} + +The 8bit french guillemets chars printed within +a verbatim environnement give here: \verb|<< >>| + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Utilisation de la \mdseries\texttt{toc}} + +Il n'est pas pr\'{e}vu de pouvoir composer une table des mati\`{e}res ou un +sommaire dans plus d'une langue. +On notera que \verb|\sommaire| est un apport de \FP. + +\section{Fichiers {\mdseries\texttt{lof}} et {\mdseries\texttt{lot}}} +On v\'{e}rifie ici que la ponctuation fran\c{c}aise n'a pas cr\'{e}\'{e} +d'ennui particulier. +Nous avons laiss\'{e} en blanc la figure \ref{x<<:;!?>>x} +qui n'est qu'un simple +test. De m\^{e}me le tableau \ref{y`<<:;!?>>'y} n'est l\`{a} que pour +cr\'{e}er une entr\'{e}e dans la liste des tableaux. + +Le {\em caption} de la figure +\ref{x<<:;!?>>x} + doit appara\^{\i}tre com\-me ceci : + {\it << essai >> ; 2 cm ! pourquoi pas ?} +\begin{figure}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\%\vspace*{2cm} +\ \\ +\ Peu importe la figure...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{<< essai >> ; 2 cm ! pourquoi pas ? + \protect\\ (cf. aussi le tableau \ref{frenchdactylo})} +\label{x<<:;!?>>x} +\end{figure} + +Le {\em caption} du tableau +\ref{y`<<:;!?>>'y} + doit \^{e}tre comme ceci : +{\it ` << essai >> ; 2 cm ! pourquoi pas ? '} +\begin{table}[h] +\caption{` << essai >> ; 2 cm ! pourquoi pas ? ' + \protect\\ (cf. aussi le tableau \ref{frenchdactylo})} +\label{y`<<:;!?>>'y} + +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau\footnote{Une note de tableau.}...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +On notera les libell\'{e}s ({\sc Fig.} et {\sc Tab.}) plus confor\-mes \`{a} +l'usage fran\c{c}ais. Ne pas oublier non plus que les titres de tableaux sont +toujours plac\'{e}s, en fran\c{c}ais, avant ceux-ci contrairement aux figures. + +\FP\ ne pr\'{e}voit pas que l'on puisse composer une +partie des tables des figures (ou tableaux) en fran\c{c}ais et une autre +en anglais par exemple. Les fichiers \verb|.lof| et \verb|.lot| seront +donc compos\'{e}s enti\`{e}rement dans la langue pr\'{e}s\'{e}lectionn\'{e}e. + +\newpage\english +\section{{\mdseries\texttt{toc}} file use} +No facility is given to typeset the \verb|.toc| in various languages. + +Notice that \verb|\sommaire| is a new command brought up with this +package. + +\section{{\mdseries\texttt{lof}} and {\mdseries\texttt{lot}} files} +Same test in English just to verify that our french modifications +does not affect the text in English. + +You will notice, of course, that the caption names are re-established +to their original values ({\bf figure} and {\bf table}). + +The following figure (not referable) %(\ref{ex<<:;!?>>ex}) +caption must look like: +<< essai >>; 2 cm! Why not? +\begin{figure}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter how is the figure$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{<< essai >>; 2 cm! Why not? + \protect\\ (cf. also the table \ref{frenchdactylo})} +%\label{ex<<:;!?>>ex}% produit un missing \endcsname +\end{figure} + +The {\em caption} of the table (not referable) %\ref{ey`<<:;!?>>'ey} +must look like: +` << essai >>; 2 cm! Why not? ' +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter how is the table\footnotemark% \footnotetext est perdu ! + $\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{` << essai >>; 2 cm! Why not? ' + \protect\\ (cf. also the table \ref{frenchdactylo})} +%\label{ey`<<:;!?>>'ey}% generates missing \endcsname +\end{table}\footnotetext{A note from a table.} +\NL1 + +Notice that we have here the standard caption names used by \LaTeX{}. + +You can see in the French column the specific labels and places of caption +titles (under the figure but over the table). + +Don't try to compose \verb|.lof| and \verb|.lot| files in more than one +language, it's not designed in this (stupid?) way! + +\french +\begin{table*}[tb] +\caption{` << essai >> ; 2 cm ! pourquoi pas ? ' + (cf. aussi le tableau \ref{frenchdactylo})} +\label{2`<<:;!?>>'2} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau sur deux colonnes% +\footnote{Une note de tableau.}...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table*} + +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Encore un tableau...} +Mais celui-ci est sur deux colonnes si l'option +\verb|twocolumn| est active. V\'{e}rifions simplement +que le traitement est le m\^{e}me qu'en une seule +colonne. + +Le {\em caption} du tableau +\ref{2`<<:;!?>>'2} + doit \^{e}tre comme ceci : +{\it ` << essai >> ; 2 cm ! pourquoi pas ? '} + +\section{\sloppy Encore {\mdseries\texttt{\textbackslash labelsinmargin}}} + +\`{A} nouveau nous utilisons \verb|\labelsinmargin| +\labelsinmargin +pour v\'{e}rifier son fonctionnement dans une figure +et un titre de figure + +\begin{figure}[h] +\label{label de la figure} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe la figure...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{le titre de la figure avec label +\label{label du titre fig.}} +\end{figure} + +M\^{e}me test avec un tableau : +\begin{table}[h] +\label{label du tableau} +\caption{le titre du tableau avec label\label{label du titre tab.}} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ Peu importe le tableau...\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +\sloppypar{ +D\'{e}sactivons d\'{e}finitivement l'option +avec \verb!\nolabelsinmargin!. +} +\nolabelsinmargin + +\newpage\english +\NL8 +\section{{\mdseries\texttt{\textbackslash labelsinmargin}} again} + +Again we test \verb|\labelsinmargin| +\labelsinmargin +to verify that it is running within a figure +and in a figure's caption. + +\begin{figure}[h] +\label{label in a figure} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter the figure$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{title with a label\label{label in fig. caption}} +\end{figure} + +Same test with a table: +\begin{table}[h] +\label{label in a table} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +\ \\ +\ No matter the table$\ldots{}$\\ +\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{title with a label\label{label in a tab. caption}} +\end{table} + +Disactivate definitely the option with \verb!\nolabelsinmargin!. +\nolabelsinmargin + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\section{Notes dans \mdseries\texttt{\textbackslash caption}} + +Si une note dans un tableau doit \^{e}tre imprim\'{e}e \`{a} la fin du +tableau, une note dans un titre de tableau doit \^{e}tre +imprim\'{e}e en fin de page. Malheureusement \LaTeX{} perd +le texte des notes dans les environnements {\tt figure} et +{\tt table}. L'ex\-ten\-sion \FP\ pr\'{e}vient l'utilisateur +que le texte doit \^{e}tre r\'{e}ins\'{e}r\'{e} \`{a} l'aide de \verb|\footnotetext|. + +\begin{table}[h] + +\SmsG% +\caption[Essai de footnote dans un caption de tableau] + {L\'{e}gende\protect\footnote{Une note de bas de page.}} +\FmsG% + +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Peu importe le tableau...\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} +\footnotetext{Une note de bas de page.} + +\section{{\mdseries\texttt{\textbackslash caption}} vide} + +\begin{table}[h] +\caption{} +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Tableau sans l\'{e}gende\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\end{table} + +\section{\mdseries\texttt{\textbackslash nombre}} + +Les nombres en fran\c{c}ais sont imprim\'{e}s correctement lorsque l'on +utilise \verb|\nombre|, ainsi : + +\begin{verbatim} +\nombre{123 456,123 456} +\end{verbatim} +imprime \nombre{123 456,123 456} au lieu de la forme habituelle + {\regularmathcomma $123 456,123 456$} +ou \mbox{123 456,123 456} suivant que l'on est en mode math +ou en mode texte. + +On y voit des espaces fines \`{a} chaque millier et (normalement) +une virgule sans espace suppl\'{e}mentaire comme cela se produit +en mode math avec \TeX{} standard. + +\section{Autre chose ?} +Non ! + +[espace libre utilisable] + +\newpage\english + +\section{Notes within \mdseries\texttt{\textbackslash caption}} + +Normally in French we print table's footnotes at the end of the table +but it can't be the case when a footnote is called from a caption title. +But unfortunately footnote's text is lost when inside a \LaTeX{} figure +or table environnement, as shown here. +Thus {\tt french.sty} warn the user with the appropriate message, but +in English nothing is done. + +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ No matter the table$\ldots{}$\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption[footnote try within a table's caption] + {Caption title\protect\footnote{A footnote page.}} + +\end{table} +%\footnotetext{A footnote page.} + +\section{Empty \mdseries\texttt{\textbackslash caption}} + +\begin{table}[h] +\begin{center} +\begin{tabular}{|c|} +\hline +\ \hfill \ \\ +%\ \\ +\ Empty caption\\ +%\ \\ +\ \\ +\hline +\end{tabular} +\end{center} +\caption{} +\end{table} + +\section{\mdseries\texttt{\textbackslash nombre}} + +French number should be correctly printed using +\verb|\nombre|, so : + +\begin{verbatim} +\nombre{123 456,123 456} +\end{verbatim} +should not print as usual +$123 456,123 456$ nor \mbox{123 456,123 456} +(depending you are in math or in text mode) +but $123\,456{,}123\,456$. +\NL1 + +We see here thin spaces between each thousand part and no +(usual) space after the comma (as it is in math with standard +\TeX{}). + +\smallskip + +\section{Anything else?} + +No! + +\noindent +[free space to reuse] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Le 1\protect\fup{er} paragraphe} +Notez bien que le 1\fup{er} paragraphe d'une section +ne commence jamais au fer \`{a} gauche +en fran\c{c}ais, comme vous le voyez ici. + +Le deuxi\`{e}me paragraphe d\'{e}marre comme le premier...\footnote{% +La typographie du titre de section (1\fup{er}) est \`{a} noter ; + {\tt mysmaller.sty} a \'{e}t\'{e} utilis\'{e} +\`{a} la compilation de {\tt frenchrf} avec \LaTeX{}. +Il existe aussi l'extension {\tt relsize} qui fonctionne +bien avec \FP.} + +\section{Test des listes}\label{listes} + +Voici un test d'\'{e}num\'{e}ration (\verb|itemize|) de \LaTeX{} : + +\begin{itemize} +\item liste de niveau 1 ; + \begin{itemize} + \item incluant un niveau 2, + \begin{itemize} + \item mais aussi un niveau 3, + \item peu utilis\'{e} ; + \end{itemize} + \item le niveau 2 se terminant ici ; + \end{itemize} +\item suite de la liste de niveau 1 ; +\item dernier \'{e}l\'{e}ment de niveau 1. +\end{itemize} + +On remarquera les deux choses suivantes : +\primo les marqueurs sont identiques quel que soit +le niveau et \secundo aucun \'{e}l\'{e}ment ne commence par une majuscule. +\NL2 + +\section{D\'{e}finition de langue} + +On peut se d\'{e}finir une langue comme par exemple le kathmandouais par : \\% +\verb|\NouveauLangage[2]|\verb|{kathmandouais}|\\% +\global% for TeX--XeT tests +\def\kathmandouaisTeXmods{\empty} + \NouveauLangage[2]{kathmandouais} % +et ensuite on peut \'{e}crire kathmandouais en tapant : +\verb|\kathmandouais| +\SmsG% +\kathmandouais%Message a ignorer si vous n'avez que 2 langues definies. +bla... blabla... bla% +\typeout{I AM WRITING KATMANDOUAIS, Ye\string! (language=\the\language)}% +\FmsG% +\footnote{Mais bien entendu les c\'{e}sures ne seront pas bonnes car elles +seront faites \`{a} partir d'un language existant. On notera la typographie +du num\'{e}ro de cette note saisie en {\em Katmandouais}.} + et revenir au fran\c{c}ais par +\verb|\french|\french% +\footnote{Si le point qui suit n'est pas accol\'{e} au mot {\tt french} +alors cela signifie que des {\em blank space} tra\^{\i}nent dans +\FP.}. +S'il n'y a pas de commande \verb|\kathmandouaisTeXmods| de d\'{e}finie +rien ne se passera +vraiment, cela sera \'{e}quivalent \`{a} \verb|\relax|, seul un message +d'avertissement sera \'{e}mis. + +\newpage\english +\section{First paragraph} +In English each paragraph is indented except the first one of a section, +subsection, etc. as you can see in this example. + +Subsequent paragraphs start indented$\ldots{}$\NL1 + +\section{Itemized lists} +Here is the same french \verb|itemize| list:\NL1 + +\begin{itemize} +\item liste de niveau 1; + \begin{itemize} + \item incluant un niveau 2, + \begin{itemize} + \item mais aussi un niveau 3, + \item peu utilis\'{e} ; + \end{itemize} + \item le niveau 2 se terminant ici ; + \end{itemize} +\item suite de la liste de niveau 1 ; +\item dernier \'{e}l\'{e}ment de niveau 1. +\end{itemize} + +You can compare english and french lists. +Notice firstly that item markers are identical at each level and secondly +that each item never starts with an uppercase letter. + +\section{Create a language} +There is a new control sequence to allow {\em the creation} of new language:\\ +\verb|\NouveauLangage[n]{language}|\\ +This command is in fact used internally but it can be also used elsewhere +to define a new language which rules will be set by:\\ + \verb|\<language>TeXmods| (if defined.) The internal language number \verb|n| +tells \TeX{} what hyphenation table is to use among those defined at +\verb|INITEX| time. + +\begin{table*}[th]% pour la page suivante +\begin{center} +\fbox{Attention : psfig est p\'{e}rim\'{e} ; il n'est utilis\'{e} ici + qu'\`{a} des fins de test.} +\end{center} +\end{table*} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Caract\`{e}res actifs} +Quelques jeux de macros doivent parfois \^{e}tre charg\'{e}s +directement dans le document +et utilisent les caract\`{e}res {\em actifs\/} de \FP. Il y +a alors conflit ouvert. Plusieurs solutions sont offertes, soit utiliser +l'ordre : \\ +\verb| \originalinput{fichier}|\\ + soit : +\begin{verbatim} + \begin{nonfrench} + ... macros-instructions... + \end{nonfrench} +\end{verbatim} +Nous avons adopt\'{e} la deuxi\`{e}me solution ici : + +\tthyphenation +\begin{versatim} +Saluons au passage Trevor Darrell, l'auteur de \verb|psfig| : + \begin{nonfrench} + \let\psfig\undefined + \input mypsfig.sty + \begin{center} + \ \hbox{\vbox{\psfig{figure=% + myfigure.ps,height=1in}}}\ + \end{center} + \end{nonfrench} +\end{versatim} + +Saluons au passage Trevor Darrell, l'auteur de \verb|psfig| : +\begin{nonfrench} + \let\psfig\undefined + \input mypsfig.sty + \begin{center} + \ \hbox{\vbox{\psfig{figure=% + myfigure.ps,height=1in}}}\ + \end{center} +\end{nonfrench} +Mais attention n'utilisez pas en fran\c{c}ais un code que +vous auriez charg\'{e} +en anglais ou r\'{e}ciproquement ! + +En fait, l'extension \FP\ est compatible avec \verb|psfig|. +En voici l'exemple -- sans utiliser \verb|nonfrench| -- avec +\verb|\psdraft| : + \let\psfig\undefined + \input mypsfig.sty + \psdraft + \begin{center} + \ \hbox{\vbox{\psfig{figure=% + myfigure.ps,height=1in}}}\ + \end{center} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\english +\section{Active characters} +Codes that were designed for English might bring problems when used with +\FP\ because few characters are {\em activated\/}. +Few solutions are offered, either:\\ +\verb| \originalinput{file}| + +or: +\begin{verbatim} + \begin{nonfrench} + ... macros-instructions... + \end{nonfrench} +\end{verbatim} +We used here the second solution: +\begin{verbatim} +Saluons au passage Trevor Darrell, + l'auteur de \verb|psfig| : + \begin{nonfrench} + \let\psfig\undefined + \input mypsfig.sty + \begin{center} + \ \hbox{\vbox{\psfig{figure=% + myfigure.ps,height=1in}}}\ + \end{center} + \end{nonfrench} +\end{verbatim} + +\notthyphenation +Saluons au passage Trevor Darrell, % + l'auteur de \verb|psfig| : +%\begin{nonfrench}% inutile d'obtenir un message de warning + \let\psfig\undefined + \input mypsfig.sty + \begin{center} + \ \hbox{\vbox{\psfig{figure=% + myfigure.ps,height=1in}}}\ + \end{center} +%\end{nonfrench} +But be carefull, don't use in French a code that was loaded in English +or reciprocally! +\NL1 + +In fact the \FP\ is fully compatible with \verb|psfig| once +\FP\ starts working i.e. after the +\vers|\|\vers|begin{document}|. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french + +\section{Abr\'{e}viations} +\abbreviations +Si on demande \verb|\abbreviations| alors on a +acc\`{e}s \`{a} un fichier d'abr\'{e}\-via\-tions +typo\-graphi\-ques fran\c{c}aises. +Ainsi je saisis \verb|"monseigneur"| et j'imprime "monseigneur"\!. +De m\^{e}me, avec ML\TeX{} je saisis \verb|"deuxi\`{e}me"| +(v\'{e}rifiez dans le +source que ce mot est bien cod\'{e} en 8bits) et j'imprime "deuxi\`{e}me"\!% +. %alors que le fichier d'abr\'{e}viations contient \verb|"deuxi\`|\verb|eme"|. +Ainsi il n'est plus vraiment indispensable de se rappeler que +l'abr\'{e}viation de madame est "madame" (et ma\^{\i}tre : "ma\^{\i}tre"\!). + +Lorsqu'un mot ne figure pas dans le fichier d'abr\'{e}viations, il est alors +imprim\'{e} tel que. Ainsi \verb|"GUTenberg"| imprimera +\SmsG% +"GUTenberg". +\FmsG% + Mais n'oubliez jamais le double guillemet fermant sinon vous obtiendrez + un message du genre : +\begin{versatim} + Paragraph ended before \AbbrevName was complete. +\end{versatim} + +Je peux aussi donner mon fichier personnel d'abr\'{e}viations en codant :\\ +\verb|\abreviations[mon_fichier_personnel]| + +On retire ces possibilit\'{e}s par la commande \verb|\noabbreviations|. +N'oublions pas que le caract\`{e}re \verb|"| sert normalement en \TeX{} +comme en \LaTeX{} \`{a} exprimer les nombres en hexad\'{e}cimal. + +\section{Monsieur s'abr\`{e}ge "Monsieur"} + +Que je saisisse \verb|"Monsieur"| ou \verb|"monsieur"| +j'obtiens la m\^{e}me abr\'{e}viation : "Monsieur" ou "monsieur", respectivement. + +Il n'en est pas toujours de m\^{e}me... ainsi lorsqu'on saisit +\verb|"Num\'{e}ro"| et \verb|"num\'{e}ro"| on obtient respectivement : +"Num\'{e}ro" et "num\'{e}ro", car \verb|Num\'{e}ro| +est une entr\'{e}e dans le fichier des abbr\'{e}viations o\`{u} il est \'{e}crit +\verb|{Num\'{e}ro}|. + +Il est d\'{e}sormais possible de placer une abr\'{e}viation dans un titre +de chapitre ou de section, comme le titre de cette section le +d\'{e}montre ; nous avons saisi : +\begin{verbatim} +\section{Monsieur s'abr\`{e}ge "Monsieur"} +\end{verbatim} + +\noabbreviations + +\newpage\english + +\section{Abbreviations} +The abbreviation facility offered in \FP\ is based on +an abbreviations file. When requested by \verb|\abbreviations| one +may call any \verb|"abbreviation"|. If this abbreviation is found in the +file it will be replaced by the typographic expansion, if not it will +be printed as is.\NL2 + +But never forget the ending double quotes otherwise you will obtain the +terrible message: +{\tt Paragraph} {\tt ended before} \texttt{\textbackslash AbbrevName} +{\tt was complete.} +\NL4 + +You can have your own abbreviations file by calling: +\verb|\abreviations[my_file]|.\NL1 + +Saying \verb|\noabbreviations| this facility is lost. Remember that the +char \verb|"| is used normally in \TeX{} as in \LaTeX{} to start an +hexadecimal number. + +But used in English, \verb|"monsieur"| will give "monsieur"% +\footnote{Notice the quoting!}. + +\newpage\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Autres macros utiles} +\verb|\fsc{KnUtH}| permet d'imprimer \fsc{KnUtH} et \verb|\lsc{SnCf}| +donne \lsc{SnCf}. Cela doit aussi marcher si le mot commence par une +accentuation comme ici avec le mot \fsc{\'% a laisser tq a cause du 7bits +epinal} et m\^{e}me quand cette accentuation est plus loin dans +le mot comme ici dans \fsc{ANDR\'% a laisser tq a cause du 7bits +E}. + +\bigskip +Voici une note% +\footnote{La note.\label{NOTE}} +de bas de page command\'{e}e par \verb|\footnote{La note.\label{NOTE}}|. +Je peux faire \`{a} nouveau appel \`{a} cette note\refmark{NOTE} + par l'ordre \verb|\refmark{NOTE}|. + +\bigskip +Par analogie avec l'environnement \verb|verse| : +\begin{verse} +%\moretolerance % pour eviter un leger overfull hbox +1\iere{} ligne : cette ligne est bien trop longue, elle doit \^{e}tre coup\'{e}e autant de fois que n\'{e}cessaire...\\ +2\ieme{} ligne : le test terrible de...\\% +3\ieme{} ligne : `ceci est le test des quotes'\\ +\end{verse} +\tthyphenation +voici le m\^{e}me test (sans \verb|\\|) +avec l'environnement \vers|versatim| qui est +un environnement \vers|verba|\-\vers|tim| compos\'{e} +avec des coupures de lignes +comme l'est l'environnement \verb|verse| et dont les {\em quotes} peuvent +\^{e}tre imprim\'{e}es avec des accents si on pr\'{e}cise +\vers|\noenglishquote| : +\noenglishquote +\begin{versatim} +1\iere{} ligne : cette ligne est bien trop longue, elle doit \^{e}tre coup\'{e}e autant de fois que n\'{e}cessaire... +2\ieme{} ligne : le test terrible de \end{document} +3\ieme{} ligne : `ceci est le test des quotes' +\end{versatim} +\englishquote + +\allowuchyph +Et maintenant voici l'ordre r\'{e}duit \verb|\vers| qui +s'utilise comme \verb|\verb| et doit permettre de couper une +longue cha\^{\i}ne de caract\`{e}res \texttt{ver\-batim}. Celle-ci +sera coup\'{e}e par d\'{e}faut entre les mots (\vers|\notthyphe|\-\vers|nation|) +mais pourra l'\^{e}tre \`{a} l'int\'{e}rieur des mots si on pr\'{e}cise +\tthyphenation \vers|\tthyphe|\-\vers|nation| comme ici : << +\vers|Longue Cha\^{\i}ne De Caract\`{e}res \`{A} Couper Absolument| >>. +Les mots commen\c{c}ant en majuscule ne pourront \^{e}tre coup\'{e}s +que si \vers|\uchyph=1|, valeur par d\'{e}faut dans \FP\ +(\vers|\|\vers|allow|\-\vers|uchyph|) qui est utilis\'{e}e pour cette +partie uniquement. + +\subsection*{Test de {\mdseries\texttt{\textbackslash fsc}} +(\fsc{French CAPS})} +Ce paragraphe teste la protection de certaines macro-instructions. + +\disallowuchyph\notthyphenation +\newpage\english +\section{Other useful macros} +French patronymic names are printed in small capitals with the first +letter in uppercase. That is done with the \verb|\fsc| macro. +Another macro \verb|\lsc| is available to print all the word(s) in small +capitals, specially usefull for trademark or companies names. + +\LaTeX{} is at the current time unable to print a \verb|\ref| as +a footnotemark, the command \verb|\refmark| is able to do that. + +Also, \LaTeX{} doesn't offer any {\tt verbatim} style able to +hyphenate lines. \FP\ is able to do this with the +environment {\tt versatim} or the \texttt{\textbackslash vers} order within a +line. + +These environments allow to replace the {\tt tt} quoting +({\tt ` '}) by more realistic ones ({\tt\`{ } \'{ }}) with +the order \texttt{\textbackslash noenglishquote}. Of course this environment +produce nothing different from the standard \verb|verbatim| when +used in \verb|\english|: +{\overfullrule=5pt + +\hfuzz=30pt +\begin{versatim} +1\iere{} ligne : cette ligne est bien trop +2\ieme{} ligne : le test terrible de... +3\ieme{} ligne : `ceci est le test des... +\end{versatim} + +\SmsG% + +And now this a test of a long string within a \verb|\vers|: +``\vers|Longue Cha\^{\i}ne De Caract\`{e}res \`{A} Couper A| +This string would be hyphenated only if someone said +\verb|\tthyphenation| previously. +} + +\FmsG% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Accents et {\mdseries\tt tabbing}} +\FP\ apporte une solution pour pouvoir introduire +des lettres accentu\'{e}es dans un environnement \vers|tabbing| lorsque +le source \TeX{} est en 7bits ou utilise Ml\TeX{} +\footnote{% +Cette option est aussi utile d\'{e}sormais en T1 car les lettres accentu\'{e}es +sont traduites avec \FP, de fa\c{c}on interne, en 7-bits \`{a} la \TeX. + }% + ; c'est l'option par d\'{e}faut +\vers|\|\vers|tabbing|\-\vers|accents|\tabbingaccents. L'exem\-ple : +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \a`% + a matelas \> confort +\end{tabbing} +\notabbingaccents +doit s'imprimer ainsi : +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \>\a`a outils \> rustique \\ +Toile : \>\a`a matelas \> confort \\ +\end{tabbing} +\vspace*{-0.5\baselineskip} +Nous l'avions saisi comme suit : +\begin{versatim} +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \a`% + a matelas \> confort +\end{tabbing} +\end{versatim} + +\section{Figurettes} +Le style \verb|french| propose un environnement sp\'{e}cial, appel\'{e} +\verb|figurette|, + pour placer les figures \`{a} l'enfroit exact o\`{u} +ces figures se pr\'{e}sentent +dans le texte. Cela est particuli\`{e}rement utile pour des petites figures, +domaine o\`{u} \LaTeX{} n'est pas adapt\'{e} en standard. +Pour r\'{e}aliser ceci : + \begin{figurette} + \center\fbox{essai}\endcenter% rajoute pour plain TeX + \caption{Ceci est une figurette} + \label{figurette} + \end{figurette} +Nous avons \'{e}crit : +\begin{verbatim} + \begin{figurette} + \center\fbox{essai} + \caption{Ceci est une figurette} + \label{figurette} + \end{figurette} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\english +\section{Diacritics \& {\mdseries\tt tabbing}} +There is no way in a \LaTeX{} \texttt{tabbing} to put diacritics on letters +as we use them usually. Here is how is printed the {\tt tabbing} +you can find in the french part: + +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \> \`% + a outils \> rustique \\ +Toile : \> \`% + a matelas \> confort +\end{tabbing} + +and that would normally be printed as follows: + +\begin{tabbing} +Les TYPES : \= Les matieres \= Les genres \kill +Bidon : \> d'huile \>$A'=B''$\` normal \\ +Caisse : \>\a`a outils \> rustique \\ +Toile : \>\a`a matelas \> confort \\ +\end{tabbing} + + \begin{figurette} + \center\fbox{essai}\endcenter% rajoute pour plain TeX + \caption{Originally a figurette} + \label{engfig} + \end{figurette} +\NL{4} + +\section{Little figures} + +\FP\ offers a special environment called +\verb|figurette| which allows to put little figures EXACTLY +where they appear in the text. This is a lack in the present +versions of \LaTeX{}. In English the environment \verb|figurette| +is replaced by an environment \verb|figure[h]|; look at figure +\ref{engfig} we tried to put here without success and we +typed like this: + +\begin{verbatim} + \begin{figurette} + \center\fbox{essai} + \caption{Originally a figurette} + \label{engfig} + \end{figurette} +\end{verbatim} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\ifx\drapeaufg\undefined\else +\section{Composition \protect\linebreak en drapeau} +\`{A} gauche on trouve une composition justifi\'{e}e standard \LaTeX. +Dessous, une composition avec l'environnement \texttt{drapeaufg} +propos\'{e} par l'extension \FP, il s'agit d'une composition +\emph{en drapeau, au fer} \`{a} gauche. \`{A} droite, il s'agit aussi d'une +composition \emph{en drapeau, au fer} \`{a} gauche mais cette fois-ci avec +l'environnement \texttt{drapeaufgIN}, sans coupure de mots, comme cela +est recommand\'{e} par l'imprimerie nationale. + +\subsection{Tests ordinaires} +\textbf{\large Texte justifi\'{e} de r\'{e}f\'{e}rence} + +\medskip +\def\GOfrench{\noindent{\fboxsep 0pt\fboxrule 0.2pt\fbox{\advance\hsize by -2pt + \hbox{\vbox{\noindent +<< Par ailleurs, les lignes n'occupant pas toute la + justification (titres ou l\'{e}gendes le plus souvent) peuvent \^{e}tre + \emph{centr\'{e}es} ou se pr\'{e}senter align\'{e}es verticalement + par la gauche sur la + marge de gauche de la page, ou \XX + verticalement par la droite sur la marge de + droite de la page. On dira alors qu'elles sont compos\'{e}es +\emph{en drapeau, au fer} \`{a} gauche ou \emph{en drapeau, au fer} \`{a} droite. +Dans ce type de composition, les coupures de mots sont proscrites et les +rejets \`{a} la ligne devront ob\'{e}ir \`{a} une certaine logique souvent dict\'{e}e par le +sens. Ainsi on ne s\'{e}parera pas l'article du substantif, le pronom personnel +sujet de son verbe, l'adjectif num\'{e}ral du nom auquel il se \XX +rapporte, \etc. >> +(r\`{e}gles Imprimerie Nationale, p~153)% +}}\hss}}} + +\let\XX\relax +\GOfrench + +\hbox{} + +\textbf{\large Drapeau, au fer \`{a} gauche} + +\medskip +\begin{drapeaufg} +\GOfrench +\end{drapeaufg} + +\newpage +\enlargethispage{20pt}\hbox{}\smallskip + +\hbox{}\smallskip\NL5 +Dans ce dernier cas, des d\'{e}bordements dans la marge droite +sont possibles ; ils sont \`{a} traiter +au cas par cas par de simples coupures de lignes plac\'{e}es aux endroits +recommand\'{e}s par l'imprimerie nationale (selon texte encadr\'{e}). Le +dernier texte est ainsi corrig\'{e}.\NL3\vspace*{-2.5pt} + +\textbf{\large Drapeau << fg >>, selon IN} + +\medskip +\begin{drapeaufgIN} +\GOfrench +\end{drapeaufgIN} + +\medskip +\textbf{\large Drapeau << fg IN >>, corrig\'{e}} + +\medskip +\let\XX\\ +\begin{drapeaufgIN} +\GOfrench +\end{drapeaufgIN} + +\newpage +\subsection{Tests en drapeau << fg >>, aux limites} +Voici deux tests aux limites de la composition +\emph{en drapeau, au fer} \`{a} gauche, sur une colonne +\'{e}troite (2cm) tout d'abord avec l'environnement +\texttt{drapeaufg} et ensuite avec la recommandation +de l'imprimerie nationale appliqu\'{e}e \`{a} +\FP\ (ou interpr\`{e}t\'{e}e par l'environnement \texttt{drapeaufgIN}). + +Les coefficients de laideur (\texttt{badness}) +accept\'{e}s sont \'{e}lev\'{e}s, c'est la raison pour laquelle +aucun message d'\texttt{underfull hbox} +(tout comme celui d'\texttt{overfull}) +n'est \'{e}mis dans les deux cas +ci-dessous. + +\bigskip + +\def\temp{\noindent{\fboxsep 0pt\fboxrule 0.2pt\fbox{\advance\hsize by -2pt + \hbox{\vbox{\noindent + instit instits +institut instituts +institution institutions +institutionnel institutionnels +institutionnelle institutionnelles +institutionnellement +constitutionnellement +inconstitutionnellement +}}\hss}}} + +\let\XX\relax +\parbox{2cm}{% +\begin{drapeaufg} +\hsize=2cm +\temp +\end{drapeaufg} +} +\hspace*{0.5cm} +\parbox{2cm}{% +\begin{drapeaufgIN} +\hsize=2cm +\temp +\end{drapeaufgIN} +} + +\newpage +\subsection{Tests en drapeau << fd >>, aux limites} +Nous effectuons ici les m\^{e}mes test mais avec +les environnements \texttt{drapeaufd} (fer \`{a} droite) +et \texttt{drapeaufdIN} (selon imprimerie nationale). +En fait, l'environnement +\texttt{drapeaufd} est tout simplement +un \texttt{raggedleft}. +\NL{9} + +\let\XX\relax +\parbox{2cm}{% +\begin{drapeaufd} +%\mbox{Avec \the\rightskip :} +\hsize=2cm +\temp +\end{drapeaufd} +} +\hspace*{0.5cm} +\parbox{2cm}{% +\begin{drapeaufdIN} +%\mbox{Avec \the\rightskip :} +\hsize=2cm +\temp +\end{drapeaufdIN} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\Large +\let\XX\relax +\subsection{Test << fd >> classique} + +\begin{drapeaufd} +\GOfrench +\end{drapeaufd} + +\normalsize\bigskip + +L'{\oe}il aiguis\'{e} sera troubl\'{e} car +les deux colonnes ne sont pas align\'{e}es horizontalement ; +cela est d\^{u} \`{a} la diff\'{e}rence de mat\'{e}riel \`{a} composer, au total, +dans chacune des deux colonnes. + +\vfill + +\newpage +\Large +\subsection{Test << fd >> IN} +\begin{drapeaufdIN} +\GOfrench +\end{drapeaufdIN} + +\normalsize\bigskip + +Quelque soit le corps de la police (dans les limites +classiques de \LaTeX{}), avec cette largeur de colonne, +on n'obtient pas de diff\'{e}rence +de mise en page entre les deux environnements. Les r\`{e}gles +de l'imprimerie nationale sont donc plus largement appliqu\'{e}es +dans ce cas. + +\vfill +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\onecolumn +\newpage\french +\hbox{} +\vfill +\centerline{\Large Page intentionnellement laiss\'{e}e blanche} +\vfill +\twocolumn + +\fi% on a saute si drapeaufg est inconnu (frencht) +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Lettrines} +\SmsG% lettrine reduite a 1 seule lettre ! +Voici le test des lettrines propos\'{e}es en mode semi-automatique +avec \FP\ : + +\bigskip +\verb| \flettrine{Quoi ?}| +\flettrine{Quoi ?} {Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. + +<< Ici d\'{e}marre une lettrine dans une citation. + +\bigskip +\lettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. + +\bigskip +\flettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. + +et la citation se termine ici. >> + +\bigskip +\verb| \font\lettrinefont=cmr17 scaled|\\ +{\font\lettrinefont=cmr17 scaled \magstep5 +\verb| \magstep5\lettrine[`` {Paris} '']| +\lettrine[`` {Paris} ''] +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s.\par} + +\bigskip +\verb| \lettrine[<< {Paris} >>]| +\lettrine[<< {Paris} >>] +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. + +\bigskip +\verb| \flettrine[<< {Paris} ]| +\flettrine[<< {Paris} ] +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. >> + +\bigskip +\tthyphenation\noindent +\vers|\|\vers|font\lettrinefont=cmti12 scaled| \!\vers| \magstep4\lettrine| +{\em \% v\'{e}rification d'italique.} +\font\lettrinefont=cmti12 scaled \magstep4\lettrine +Blalbla {\bf je blablate}, tu blablates, ils blablatent, b... +(ceci est l'exemple m\^{e}me de ce qu'il ne faut pas faire car ainsi +le mot n'est pas mis en petites capitales). Ceci avait pour but +de tester une police italique. + +\bigskip +\lettrine{L'absurdit\'{e}} de cette lettrine... + +\notthyphenation +\FmsG + +\newpage\english + +\section{Illuminated letters} + +Look at the French part of this document because, in English, +these macros have no effect: + +\bigskip +\verb| \flettrine{Quoi ?}| +\flettrine{Quoi ?} {Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. + +<< Ici d\'{e}marre une lettrine dans une citation. + +\bigskip +\lettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. + +\bigskip +\flettrine{Paris} +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. + +et la citation se termine ici. >> + +\bigskip +\verb| \font\lettrinefont=cmr17 scaled|\\ +{\font\lettrinefont=cmr17 scaled \magstep5 +\verb| \magstep5\lettrine[`` {Paris} '']| +\lettrine[`` {Paris} ''] +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s.\par} + +\bigskip +\verb| \lettrine[<< {Paris} >>]| +\lettrine[<< {Paris} >>] +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. + +\bigskip +\verb| \flettrine[<< {Paris} ]| +\flettrine[<< {Paris} ] +{sera toujours Paris}. Ceci est une lettrine obtenue +gr\^{a}ce au coll\`{e}gue allemand E.~{\sc Scha\-l\"{u}ck} et + aux diff\'{e}rents codes qu'il +m'a donn\'{e}s. >> + +\bigskip +\noindent +\verb|\font\lettrinefont=cmti12 scaled| \verb| \magstep4\lettrine| +%{\em \% v\'{e}rification d'italique.} +\font\lettrinefont=cmti12 scaled \magstep4\lettrine +Blalbla {\bf je blablate}, tu blablates, ils blablatent, b... +(ceci est l'exemple m\^{e}me de ce qu'il ne faut pas faire car ainsi +le mot n'est pas mis en petites capitales). Ceci avait pour but +de tester une police italique. + +\bigskip +\lettrine{L'absurdit\'{e}} de cette lettrine... + +\onecolumn\newpage% +\french +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% ===>>>> Il n'y a plus d'anglais au del\`{a} de cette limite <<<<=== +\def\lastlinein#1{\expandafter\gdef\csname #1\endcsname{\relax}} +\lastlinein{english}% this is for frencht.tex +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage\french +\section{Lettrines automatiques ou non} + +\bigskip +\lettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\automaticlettrine +\lettrine{THIS IS A TEST} (a default automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a default automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + + +\bigskip +\def\lettrinefontname{cmr17} +\lettrine{THIS IS A TEST} (a cmr17 automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\flettrine{THIS IS A TEST} (a cmr17 automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\lettrine{Que vaut ce test ?} (en automatique) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\noautomaticlettrine +\lettrine{THIS IS A TEST} (a non-automatic one) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +\bigskip +\lettrine{Que vaut ce test ?} (non-automatique) +is a piece of text and some more and some more +and some more and some more and some more and some more and some more +and some more and some more and some more and some more and some more +and some more and some more. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{\'{E}num\'{e}rations} +L'espacement des \'{e}num\'{e}rations fran\c{c}aises est + profond\'{e}ment modifi\'{e} avec \FP, pour s'en +convaincre voir le test des listes page \pageref{listes} ou +l'environnement \texttt{order} ci-apr\`{e}s. + +\section{L'environnement << {\mdseries\texttt{order}} >>} +Un environnement sp\'{e}cifique est propos\'{e}, il s'agit de l'environnement +\verb|order| pour \LaTeX{} dont voici un petit exemple : + +\begin{order} +\item Bien regarder ; +\item l'espacement de chaque \'{e}l\'{e}ment est sp\'{e}cial ; +\item l'espacement vertical est aussi diff\'{e}rent. +\item A-D-O-P-T-E-Z \ \ L-E ! +\end{order} + +Ce prototype correspond bien aux \'{e}num\'{e}rations +fran\c{c}aises (je ne +parle pas uniquement des marqueurs -- primo, secundo, \etc. -- +mais aussi de la gestion des espaces). En voici un autre exemple +concret : +\NL1 + +Les guillemets entrent aussi en ligne de compte : << Je citerai +3 cas tr\`{e}s importants : +\begin{order} +\item le premier cas ; +\item le second ; +\item le dernier. +\end{order} +qui sont [...] >> +\NL1 + +\`{A} noter que ce m\'{e}canisme de rajout des guillemets en d\'{e}but de +chaque \'{e}l\'{e}ment de liste marche aussi avec un environnement +comme \texttt{itemize}. + +\expandafter\ifx\csname frenchTeXmods\endcsname\relax + \space% ce test ne marche pas en LaTeX standard. +\else + \ifx\frenchTeXmods\empty\space% ni en dummy french ! + \else +\section{Tests aux limites des guillemets anglais} + +V\'{e}rifions qu'il est possible d'activer temporairement +quelques caract\`{e}res sans perturber le traitement. Exemple : + +\begin{verbatim} +{\catcode`\'=\active\catcode`\'=\active + `` Test guillemets anglais '' +} +\end{verbatim} + +{\catcode`\'=\active\catcode`\'=\active + `` Test guillemets anglais '' +} + \fi +\fi + +Un cas bien sp\'{e}cial avait \'{e}t\'{e} rencontr\'{e} avec l'extension \myverb|amstex| +qui utilisait une r\'{e}f\'{e}rence avec des math\'{e}matiques dans une autre +r\'{e}f\'{e}rence, ce qui entrainait une boucle infinie avec \FP. Voici +le test en question : +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% this code generates a loop with versions of french < V3,42 %%%%%% +\makeatletter +\def\r@ref{{\ref{nulllabel}$'$}}{1} +\makeatother +\ref{ref} = 1 $'$ % boucle garantie si < V3,42 +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Autre test aux limites ? + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newpage +\section{<< Autres tests >>} +Nous sommes ici en une colonne. + +\bigskip +Voici un test d'encadr\'{e} contenant le mode \verb|centering| : +\begin{center}\fbox{% +\parbox{6cm}{\begin{center}Information : si vous voulez me joindre, +mon t\'{e}l. : 01 69 35 85 40. Je n'y suis qu'aux horaires de +bureau.\end{center}}% + }\end{center} + +Bon ?\footnote{L'objet de cette note de bas de page est +de v\'{e}rifier l'espacement des inf\'{e}rieurs et sup\'{e}rieurs, +\primo en \texttt{\backslash tt} : +\texttt{XXXX ===> <=== YYYY} et +\secundo en {\tt verbatim} : +\myverb|french V4 < french V5 > frenchOLD|% +.} + +\begin{table*}[h] +\caption{Dactylographie et typographie compar\'{e}es} +\label{frenchdactylo} +\vspace*{1cm} +\huge +\begin{tabular}{|r|r|} +\hline +dactylographie\ \ \ \ \hfill & \ \ \ typographie\ \ \ \hfill\\ +\hline + \verb|use \dots or \ldots| \ & use \dots\ or $\ldots{}$\ \\ + \verb|utilisez...| \ & utilisez...\ \\ + \verb|semi-colon;| \ & semi-colon;\ \\ + \verb|point-virgule ;| \ & point-virgule ;\ \\ + \verb|My god!| \ & My god!\ \\ + \verb|Mon dieu !| \ & Mon Dieu !\ \\ + \verb|Why not?| \ & Why not?\ \\ + \verb|Pourquoi pas ?| \ & Pourquoi pas ?\ \\ + \verb|``I say''| \ & ``I say''\ \\ + \verb|<< Je dis >>| \ & << Je dis >>\ \\ + \verb|He said: Yes| \ & He said: Yes\ \\ + \verb|Il dit : non| \ & Il dit : non\ \\ + \verb|$1\,234,567$| \ & $1\,234,567$\ \\ + \verb|$f(x,\,y)$| \ & $f(x,\,y)$\ \\ +\hline +\end{tabular} +\normalsize +\end{table*} + +\newpage +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\ifx\itshape\undefined\else% avoid old frencht crash +\subsection{Test des guillemets dans un \mdseries\texttt{\backslash edef}} + +Les guillemets peuvent \^{e}tre appel\'{e}s dans une d\'{e}finition de macro +telle que \verb|\edef| mais comme les guillemets ne sont pas expansibles +enti\`{e}rement il a donc fallu arriver \`{a} r\'{e}aliser une d\'{e}finition acceptable. + +Ainsi \verb|\edef\testedef{<< essai >>}| +\edef\testedef{<< essai >>} +donnera la curieuse d\'{e}finition suivante : \\ +\hbox{}\hfill\texttt{\meaning\testedef} ; \\ +elle reste compl\`{e}tement expansible (dans certaines conditions) +ou pas du tout (comme ici appel\'{e}e en tt on obtiendra +le r\'{e}sultat suivant : \texttt{\testedef}). +\fi + +\subsection{{\mdseries\tt <{}} et {\mdseries\tt >{}} red\'{e}finis} + +Mes utilisateurs sont terribles ! Ils veulent le beurre, l'argent du +beurre et aussi la fermi\`{e}re... S'ils codent +\verb9\def\truc<#1|#2>{/#1 OU #2/}9 + ils veulent pouvoir obtenir +/Essai OU Erreur/ en saisissant \verb9\truc<Essai|Erreur>9. Faisons +l'essai r\'{e}el : +{\def\truc<#1|#2>{/#1 OU #2/} \truc<Essai|Erreur>}. + +Encore plus fort : nous voulons avoir une notation de Backus-Naur +c'est-\`{a}-dire des \verb|\rangle| et \verb|\langle|. Voici la +d\'{e}finition que nous avons entr\'{e}e avant le \verb|\begin{document}| : +\begin{verbatim} +{\catcode`\<=\active\catcode`\>=\active% +\global\def<{\left\langle}\global\def>{\right\rangle} +} +\end{verbatim} + +Pour tester l'efficacit\'{e} de ces macros il suffit alors de faire +par exemple : +\begin{verbatim} +<< $<assignement>$ >> +\end{verbatim} +\`{a} condition que l'option \verb|\frenchguillemets| soit +active (en maths). + +Essayons cela : +% en fait il faut reactiver cela maintenant : +{% + \gdef\myinf{\left\langle}% + \gdef\mysup{\right\rangle}% +<< $\frenchguillemets% on a \nofrenchguillemets avec AmSTeX + <assignement>$ >>. +}% +% Remettre ici pour frenchle +\global\let\myinf\inferieura% A no-op def +\global\let\mysup\superieura% for a temporary action + +\subsection{\mdseries\texttt{\textbackslash special}} +L'inclusion d'une commande \verb|\special| est ici test\'{e}e :\\ +{%%%%%%%%%%%% attention : commentaires impossible dans cette partie. + \catcode`\%=12 + \texttt{\backslash special}\verb|{ps:|{\tt %%% + }\verb| Texte bidon {`<<manuel:C;!?>>'}}| + \special{ps:%%% + Texte bidon {`<<manuel:C;!?>>'}} +} + +\subsection{{\mdseries\texttt{\textbackslash refmark}} dans un tableau} + +O\`{u} l'on reparle encore de \verb|\refmark|... + +La note \ref{bas} est r\'{e}f\'{e}renc\'{e}e depuis le tableau ci-dessous, tout comme +les notes du tableau lui-m\^{e}me. + + \begin{table}[htbp] + \begin{center} + \begin{tabular}{|c|l|} + \hline + Lettre & Utilisation\\ + \hline + {\tt h} & petit blabla gentil et anodin \refmark{bas}\\ + {\tt l} & ici reblabla assez moyen\refmark{bas}$^,$\refmark{refnote}\\ + {\tt L} & autre grand grand grand blabla + \footnote{La note du tableau << refmark >>.\label{refnote}}\\ + \hline + \end{tabular} + \caption{Le titre du tableau.} + \end{center} +\end{table} + +En dehors du tableau on peut faire appel\footnote{La note de page.\label{bas}} +\`{a} une note qui est, par contre, r\'{e}f\'{e}renc\'{e}e dans le tableau. Tout cela +est r\'{e}alis\'{e} gr\^{a}ce \`{a} l'ordre \verb|\refmark| introduit par l'extension +\FP. + +\subsection{{\mdseries\texttt{\textbackslash nombre}} en argument} + +Voici un test simple permettant de valider \verb|\nombre| lorsqu'il +est en argument d'une macro-instruction : + +\begin{verbatim} +\noindent +1\,234 un nombre simple !\\ +$*$\\ +\nombre{1 234} un nombre simple !\\ +\nombre{1 234,5} avec une d\'{e}cimale.\\ +\texttt{\nombre{1 234,56} avec fonte tt.}\\ +\emph{\nombre{1 234,567} en mode emphas\'{e}.}\\ +\nombre{1 234,567 8} avec encore une d\'{e}cimale. +\end{verbatim} + +Il faut noter que l'ordre \verb|\nombre| est toujours compos\'{e} en mode +math\'{e}matique ce qui force l'utilisation des fontes math\'{e}matiques. +Tout changement de fonte doit donc \^{e}tre pr\'{e}cis\'{e} de fa\c{c}on ad hoc. +Par ailleurs, la composition n'est garantie que si l'option +\verb|\nofiles| n'a pas \'{e}t\'{e} indiqu\'{e}e en d\'{e}but de document. +Voici ce que ce test donne : + +\noindent +1\,234 un nombre simple !\\ +$*$\\ +\nombre{1 234} un nombre simple !\\ +\nombre{1 234,5} avec une d\'{e}cimale.\\ +\texttt{\nombre{1 234,56} avec fonte tt.}\\ +\emph{\nombre{1 234,567} en mode emphas\'{e}.}\\ +\nombre{1 234,567 8} avec encore une d\'{e}cimale. + +\ifx\documentclass\undefined % Still Plain! so no \DeclareFontFamily +\else% +\subsection{{\mdseries\texttt{\textbackslash label}} en mode math} + +Il s'agit ici de tester la commande \verb|\label| dans un environnement +\verb|equation| : + +\begin{verbatim} +V\'{e}rifions le num\'{e}ro de l'\'{e}quation \ref{labelequation} ci-dessous : +\begin{equation}\label{labelequation} +V_{Lm}=\frac{L}{t_p} +\end{equation} +\end{verbatim} + +Voici le r\'{e}sultat du test : + +V\'{e}rifions le num\'{e}ro de l'\'{e}quation \ref{labelequation} ci-dessous : +\begin{equation}\label{labelequation} +V_{Lm}=\frac{L}{t_p} +\end{equation} +\fi + +\csname TexteComplementaire\endcsname + +\subsection{Bibliographie} +Voyons maintenant la bibliographie. +Dans \cite{`<<manuel:Gaulle;!?>>'} on trouvera... +\nocite{`<<merci:Ronan;!?>>'} +Par contre +\cite[pp.1--3, X \& consorts]{<<blabla>>} +est beaucoup plus fourni en exemples et commentaires... Mais dans +\cite[p. 25 \S~13 {{\it et seq.}}]{`<<torture:Gaulle;!?>>'} +toutes ces informations +sont plus d\'{e}taill\'{e}es. + +Ce qui suit n'est pas un exemple de belle bibliographie, juste une +v\'{e}rification de bon fonctionnement. + +\bibliographystyle{plain} + +\begin{thebibliography}{Knuth 99} + +\section*{Bibliographie dans le document} + +\bibitem[Knuth 99]{<<blabla>>} Le \TeX book ou la << bible >> + des gourous \TeX +\bibitem{`<<manuel:Gaulle;!?>>'} B. {\sc Gaulle}, {\em + Le r\'{e}sultat d'une << {\em dure} >> journ\'{e}e de travail !} +\bibitem{`<<merci:Ronan;!?>>'} R. {\sc Keryell}, {\em + Le gentil normalien qui m'a beaucoup aid\'{e} gr\^{a}ce \`{a} sa th\`{e}se...} +\bibitem{`<<torture:Gaulle;!?>>'} B. {\sc Gaulle}, {\em + Notice d'utilisation du style french}, 1991-1999. +\bibitem{`<<tortureFP:Gaulle;!?>>'} B. {\sc Gaulle}, {\em + Notice d'utilisation de l'extension \FP\ pour \LaTeX}, 2000-20xx. +\end{thebibliography} + +\ifx\documentclass\undefined % Still Plain! so skip +\else% +\section*{\phantom{\normalsize[Knuth 99]}Bibliographie en dehors du document} + +Avec certaines extensions de bibliographie il peut s'av\'{e}rer utile +de prot\'{e}ger les caract\`{e}res actifs \`{a} l'int\'{e}rieur m\^{e}me de la base +de donn\'{e}es bibliographique. + +\bibliography{testbib} +\fi% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\listoffigures +\listoftables +\glossary{Fa\c{c}on cordon bleu} +\glossaires +\section*{Glossaire des mots techniques} +\printglossary[\jobname.glo] + +\noindent -- magnification + +\noindent -- caract\`{e}res sp\'{e}ciaux : \NL1 + +{\huge%\frenchmacros n'est pas utile ici +\begin{tabular}{|c|c|} +\hline +Pour imprimer ceci & Saisir cela\\ \hline +\at & \verb|\at|\\ \hline +\texttt{\vert} & \verb|\texttt{\vert}|\\ \hline +\tilde & \verb|\tilde|\\ \hline +\texttt{\backslash}& \verb|\texttt{\backslash}|\\ \hline +\chap & \verb|\chap|\\ \hline +\degre & \verb|\degre| \\ \hline +\degres & \verb|\degres| \\ \hline +\normalsize +1\ier{} \'{e}tage & \verb|1\ier{} \'{e}tage| \\ \hline +\normalsize +(2\ieme\!) & \verb|(2\ieme\!)| \\ \hline +\primo & \verb|\primo|\\ \hline +\secundo) & \verb|\secundo)|\\ +\hline +\end{tabular} +} \NL1 + +On notera que le caract\`{e}re \verb|\degre| n'est pas le signe typographique +usuellement utilis\'{e} pour exprimer +des degr\'{e}s mais que \verb|\degres| est +plus conforme \`{a} la tradition. On remarque bien les diff\'{e}rences entre +\verb|\primo| et \verb|\secundo)| +(la forme parenth\'{e}s\'{e}e n'est pas valable +en {\em belle} typographie fran\c{c}aise). +\primo... \secundo... \tertio... \quarto... +\primo)... \secundo)... \tertio)... \quarto)... + +\section*{Glossaire argotique} +Le pied + +\printindex + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\part{Ce qui ne marche pas (bien)...} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\chapter{Quelques questions \`{a} \'{e}tudier} + +Cette partie ne comporte que des << anomalies >> que l'auteur esp\`{e}re +r\'{e}soudre d'ici quelque temps, +gr\^{a}ce \`{a} votre aide... peut \^{e}tre ? + +En fait il ne reste vraiment +pas grand chose \`{a} r\`{e}gler mais ce sont probablement des +vieux probl\`{e}mes sacr\'{e}ment compliqu\'{e}s. + +\section{Le << 2 points >>} +Le << 2 points >> a une f\^{a}cheuse tendance +\`{a} rester en bas de page lorsqu'il est +suivi d'un {\tt verbatim}. Il serait souhaitable d'en trouver la raison. + +\section{Les guillemets} + +Le probl\`{e}me avec \verb|quotation| page \pageref{quotation}. + +%Et la perte d'informations +%dans le cas de \verb|\noeveryparguillemets| lorsque l'on d\'{e}marre +%une citation dans un paragraphe d\'{e}j\`{a} commenc\'{e}. +% +%Vraiment tr\`{e}s {\em fragile} ce \verb|\noeveryparguillemets| ! ( + +Voir le cas des notes +de bas de page ou en marge qui produis(ai ?)ent des d\'{e}sastres +avec \verb|\noeveryparguillemets|. + +\section{Le cas des extensions mal \'{e}crites ...} + +... ne se r\'{e}sout souvent que par la modification de l'extension en question. +Cela a \'{e}t\'{e} le cas de nombreuses extensions depuis le d\'{e}but de \FP\ +et j'ai bien peur que cela continue +\emph{\'{e}ternellement} (et \`{a} propos : qui me succ\`{e}dera ?). + +Certains cas sont insolubles, par exemple : +l'extension \verb|here.sty| +red\'{e}finissait << au vol >> +l'ordre \LaTeX{} \verb|\table| au lieu +de modifier l'existant ; cela posait un r\'{e}el probl\`{e}me \`{a} \FP\ +qui se base sur la modification d'une commande \verb|\table| +existante. Heureusement ce style p\'{e}rim\'{e} peut \^{e}tre remplac\'{e} +avantageusement par \verb|float|. + +\chapter{Am\'{e}liorations \`{a} envisager} + +\section{Index et bibliographie} +Deux th\`{e}mes qui n'ont que tr\`{e}s peu \'{e}t\'{e} abord\'{e}s. + +\section{Abr\'{e}viations} +Il est f\^{a}cheux d'avoir \`{a} conna\^{\i}tre quelles sont les mots +abr\'{e}geables pour pouvoir demander leur abr\'{e}viation ; autant les saisir +correctement d\`{e}s le d\'{e}but... + +Faut-il arr\^{e}ter la composition \LaTeX{} quand une abr\'{e}viation +n'est pas trouv\'{e}e ? + +Faut-il offrir la possibilit\'{e} de lister toutes les abr\'{e}viations ? + +\annexes +\hsize=18cm + +\chapter{Copyright} +\Mylisting{copyrigh.tex} + +\chapter{Le fichier \mdseries{\tt language.dat}} +\Mylisting{language.dat} + +\chapter{Le fichier \mdseries{\tt frabbrev.tex}} +\Mylisting{frabbrev.tex} + +% retire pour mettre french.cmd 98/06 +%\chapter{Le fichier \mdseries{\tt french.dmy}} +%My\listing{french.dmy} + +\chapter{Le fichier \mdseries{\tt french.cmd}} +\Mylisting{french.cmd} + +\chapter{Le fichier \mdseries{\tt french.chk}} +\Mylisting{french.chk} + +\chapter{Un style english (\mdseries{\tt fenglish})} +\Mylisting{fenglish_doc} + +\chapter{Le code de l'extension \FP} + +\Mylisting{french_doc} + +\newpage +\hsize=15cm +\abbreviations\noenglishdoublequotes +\tableofcontents +\noabbreviations\englishdoublequotes% remove options set for toc. + +\english %=\relax if english text (see \lastlinein) +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/mya4.sty b/language/french/e-french/texmf/doc/test/mya4.sty new file mode 100644 index 0000000000..87626f4b28 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/mya4.sty @@ -0,0 +1,502 @@ +% mya4.sty for those who don't have any a4.sty on their engine +\def\fileversion{1.2} +\def\filedate{26 Feb 90} +\def\docdate {26 Feb 90} +% +%% \CheckSum{134} +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \| Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \º +%% Right brace \} Tilde \%} +%% +% +%\iffalse +% Style option `A4' to be used with LaTeX V2.09 +% +% Please report errors to: J.L. Braams +% JL_Braams@pttrnl.nl (Braams@hlsdnl5.bitnet) +% or: N.A.F.M. Poppelier +% Poppelier@hutruu53.bitnet} +% +% \changes{v1.0}{10 Jan 90}{Changed the margins for one-sided printing} +% \changes{v1.1}{23 Jan 90}{Added \WideMargins macros} +% \changes{v1.2}{26 Feb 90}{Consolidated setting of \marginparwidth} +% +%\fi +% +% \title{A style option to adapt the standard \LaTeX\ document +% styles to A4 paper\thanks{This file +% has version number \fileversion -- +% last revision \filedate, documentation dated \docdate.}} +% +% \author{Nico Poppelier} +% \address{\TeX nique \\ +% Washingtondreef 153\\ +% 3564 KD Utrecht} +% \netaddress{Poppelier@hutruu53.bitnet} +% \author{Johannes Braams} +% \address{PTT Research Neher Laboratories\\ +% P.O. Box 421\\ +% 2260 AK Leidschendam} +% \netaddress{JL_Braams@pttrnl.nl} +% +% \date{Printed \today} +% +% \maketitle +% +% \begin{abstract} +% This article describes a new style option that can be used with the +% document styles that are distributed with the \LaTeX\ distributions. +% It modifies the page layout to conform to the paper format most +% commonly used in Europe, portrait A4. +% \end{abstract} +% +% \section{Introduction} +% +% This file is based on the document style options \verb+A4.sty+ and +% \verb+A4wide.sty+, which can be found in the Rochester style archive. +% The original style option \verb+A4.sty+ we started from was written by +% John Pavel, and is dated May 1987. This option only changes the vertical +% size of the text somewhat, by increasing the number of lines on a page. +% The style option \verb+A4wide.sty+ was written by Jean-Francois Lamy, +% and is dated July 1986. This option only increases the width of the text. +% +% \section{Goals and design decisions} +% +% As many people before us, we found the page layout as implemented in the +% standard \LaTeX\ document styles too much geared towards the +% American-sized paper, which is somewhat wider than A4 paper, but also +% noticeably less high. +% +% Our goal was to get a page layout that was suitable for A4 paper, and +% produced legible texts. There are a number of layout parameters that +% influence the legibility of a text. A parameter of major importance is +% the number of words (or characters) on a line. The maximum number of +% words per line is ten to twelve for optimal legibility, a rule-of-thumb +% that can be found in typographic literature (we used%\cite{treebus}). +% This results in a number of characters per line which lies somewhere +% between sixty and seventy. +% +% Another important parameter is the amount of white space surrounding the +% text. Here we have to distinguish between texts that are printed +% one-sided and texts that are printed two-sided (back to back). In the +% first case the margins on odd and even pages should be equal; in the +% latter case care should be taken that the texts on both sides of the +% paper overlap. +% Also a printed document is likely to be bound some way or another, so +% there should be enough white space in the `inner' margin\footnote{For +% two-sided printing, this is the left margin on odd-numbered pages and the +% right margin on even-numbered ones; for one-sided printing, this is +% always the left margin.} of the text to allow this. +% +% There is yet one more thing to take into account when designing a page +% layout. \LaTeX\ offers the possibility of using marginal notes and if +% someone wants to use marginal notes, they should of course fit on +% the paper. +% +% So, we have the following goals: +% \begin{enumerate} +% \item Choose the text width such that there will be sixty to seventy +% characters on a line; +% \item See to it that in documents that are printed two-sided, the +% texts which end up on two sides of one sheet of paper overlap; +% \item Leave enough white space in the `inner' margin to allow for +% the binding of the document; +% \item Leave enough white space in the `outer' margin +% for marginal notes if they are going to be used. +% \end{enumerate} +% +% +% \section{The implementation} +% +% \subsection{The starting point} +% +% Thus we set out to modify some of the design decisions in the standard +% document styles. Because we knew that we were not the first to tackle +% the problem, we started by having a look at what was already available. +% We came up with the two options mentioned earlier, which are publicly +% available. Undoubtedly there will exist many more such files, some of +% them maybe modifications of those two files. +% +% We had a look at the layout produced by both options and were not +% satisfied with it. For one thing, both of the original options \verb+A4+ +% and \verb+A4wide+ modify only one aspect of the page layout. The first +% thing to do was to put these two files together. This resulted in a +% layout which was still unsatisfactory, since for the 10-point and +% 11-point options lines in the text contained on the average eighty +% characters or more. +% +% \subsection{What else?} +% +% \DescribeMacro\textwidth +% \DescribeMacro\marginparwidth +% Because the result so far gave us lines that contained too many +% characters, we decreased the \verb+\textwidth+ to get lines that +% contain about sixty to seventy characters for all three size options. +% Still more work had to be done. As it turned out, using our new +% \verb+A4.sty+ together with the option \verb+twosided+ had a drawback: +% when the document was printed two-sided the texts on both side of one +% piece of paper overlapped only partly, which does not look good. We +% solved this by modifying the width of the margins for two-sided +% printing. At the same time we modified the \verb+\marginparwidth+ so +% that if someone uses a marginal note it would completely fit on the +% paper instead of falling off the page, which obviously would render +% the note unreadable. +% +% \DescribeMacro\WideMargins +% The decisions described above allow for marginal notes to be printed +% along with the normal text, but if someone makes heavy use of marginal +% notes, the resultant layout will not be very satisfactory, because if +% the full width of the marginal notes is used, they will take up too +% much space in the `outer' margin. For this case we provide the macro +% \verb+\WideMargins+. This macro modifies the page-layout parameters in +% such a way that the width reserved for marginal notes becomes 1.5 +% inches. To achieve this the width of the main body of the text is +% decreased. This macro is meant to be used only in the preamble of the +% document. +% +%\StopEventually{ +% \section{Conclusion} +% +% We have presented a new approach to adapt the page layout of the +% document styles that are part of the standard \LaTeX\ distributions to +% the dimensions of A4 paper. The width of marginal notes has been taken +% into account and a means to get wider marginal notes at the cost of +% shorter lines in the main body of the text has been provided. +% +% \begin{thebibliography}{9} +% \bibitem{treebus} K.F. Treebus. +% {\em Tekstwijzer, een gids voor het grafisch verwerken van tekst.} +% SDU Uitgeverij ('s-Gravenhage, 1988). A Dutch book on layout +% design and typography. +% \end{thebibliography} +% +% \makesignature +% } +% +% \subsection{The code} +% +% We begin by identifying the version of this file on the terminal and +% in the transcript file. +% \begin{macrocode} +\typeout{Style option `A4' \fileversion\space<\filedate> (NP and JLB)} +% \typeout{English documentation\space\space\space<\docdate> (JLB)} +% \end{macrocode} +% +% \begin{macro}{\topmargin} +% First, we redefine the \verb+\textheight+ and \verb+\topmargin+. The +% \verb+\topmargin+ is the distance from the reference point on the page +% to the top of the page of text. In most cases extra white space is not +% necessary since one inch of white space at the top of the page suffices. +% \begin{macrocode} +\topmargin 0pt +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textheight} +% The dimension parameter \verb+\textheight+ gives the total height of the +% text, including footnotes and figures, excluding the running head and +% foot. This height is given as an integral number times the +% \verb+\baselineskip+, which results in an integral number of lines on a +% page. +% +% \noindent +% We have to include definitions of all relevant dimension parameters for +% each of the cases 10-point, 11-point and 12-point. We do this with a +% case statement: +% +% \begin{macrocode} +\ifcase \@ptsize + \textheight 53\baselineskip +% \end{macrocode} +% \noindent +% which modifies the height of the text for texts to be produced +% with the ten-point typeface: +% \begin{macrocode} +\or + \textheight 46\baselineskip +% \end{macrocode} +% \noindent +% the same for eleven point: +% \begin{macrocode} +\or + \textheight 42\baselineskip +% \end{macrocode} +% \noindent +% and for twelve point. Finally we close the \verb+\ifcase+ statement: +% \begin{macrocode} +\fi +% \end{macrocode} +% +% \noindent +% The only thing left to be done is to add the \verb+\topskip+ to +% the \verb+\textheight+. +% The value of \verb+\topskip+ appears always to be 10pt. +% +% \begin{macrocode} +\advance\textheight by \topskip +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\textwidth} +% \begin{macro}{\oddsidemargin} +% \begin{macro}{\evensidemargin} +% That was the `vertical part' of the work. Now we have some work to do +% to get things right horizontally. Again we have to distinguish between +% the various character sizes because sixty eleven-point characters take +% up more space than sixty ten-point characters. But there's more to +% take into account. If documents are printed two-sided, the texts on +% both sides of the paper should overlap completely. This can be done be +% assigning appropriate values to \verb+\oddsidemargin+ and +% \verb+\evensidemargin+, the parameters that define the left margins on +% odd and even pages respectively. +% +% \noindent +% First we start a case statement to distinguish between the various +% typeface sizes. +% \begin{macrocode} +\ifcase \@ptsize +% \end{macrocode} +% Then we specify the width of the text. +% \begin{macrocode} + \textwidth 5.00in +% \end{macrocode} +% \noindent +% Also specify the width of marginal notes. They must have a +% reasonable width to be of any use, and this should be the same for +% either one-sided or two-sided printing. +% \begin{macrocode} + \marginparwidth 1.00in +% \end{macrocode} +% \noindent +% Here we need an if statement to test whether the option \verb+twosided+ +% has been specified. +% \begin{macrocode} + \if@twoside +% \end{macrocode} +% \noindent +% If it was, assign appropriate values to the margin parameters +% \begin{macrocode} + \oddsidemargin 0.55in + \evensidemargin 0.75in + \else +% \end{macrocode} +% \noindent +% If the option \verb+twosided+ was not used, both margin parameters +% must have the same value, for texts on consecutive pages have to +% be put in the same place on the paper. +% \begin{macrocode} + \oddsidemargin 0.55in + \evensidemargin 0.55in +% \end{macrocode} +% \noindent +% Now we close the if statement. +% \begin{macrocode} + \fi +% \end{macrocode} +% \noindent +% We are ready with the modifications for the ten-point typeface size, so +% now we do something similar for the eleven-point typeface. +% \begin{macrocode} +\or + \textwidth 5.20in + \marginparwidth 1.00in + \if@twoside + \oddsidemargin 0.45in + \evensidemargin 0.65in + \else + \oddsidemargin 0.45in + \evensidemargin 0.45in + \fi +% \end{macrocode} +% \noindent +% One more time, now for the twelve-point typeface. +% \begin{macrocode} +\or + \textwidth 5.70in + \marginparwidth 0.80in + \if@twoside + \oddsidemargin 0.20in + \evensidemargin 0.40in + \else + \oddsidemargin 0.20in + \evensidemargin 0.20in + \fi +% \end{macrocode} +% \noindent +% Finally we close the case statement. +% \begin{macrocode} +\fi +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\WideMargins} +% This macro is somewhat tricky: it has to find out +% which typeface size is used, whether the document should be printed +% two-sided, and whether the \verb+\reversemarginpar+ is in effect. +% \verb+\reversemarginpar+ makes the marginal notes appear in the +% margin on the opposite side of the normal placement. +% \begin{macrocode} +\def\WideMargins{% +% \end{macrocode} +% \noindent +% Because for each typeface size the changes to the parameters that +% need to be made are similar, the macro \verb+\WideMargins+ +% uses an internal macro \verb+\@widemargins+. +% +% \begin{macro}{\ExtraWidth} +% In order to store the amount of extra width needed for the marginal +% notes an extra dimension parameter is defined. +% +% \begin{macrocode} + \newdimen\ExtraWidth +% \end{macrocode} +% \end{macro} +% +% \noindent +% First find out about the point size, then call \verb+\@widemargins+ to +% modify the margin widths by the amount given in \verb+\ExtraWidth+. +% \begin{macrocode} + \ifcase \@ptsize +% \end{macrocode} +% +% \noindent +% For both 10-point and 11-point texts the width for marginal notes is +% already 1 inch, so we increase it by half an inch. We subtract half an +% inch from the text width and modify the margins appropriately. +% +% \begin{macrocode} + \ExtraWidth = 0.5in + \@widemargins + \or + \ExtraWidth = 0.5in + \@widemargins + \or +% \end{macrocode} +% +% \noindent +% For 12-point texts the marginal notes are only 0.8 inch wide, so +% now we have to add 0.7 inch to get them 1.5 inch wide. +% +% \begin{macrocode} + \ExtraWidth = 0.7in + \@widemargins +% \end{macrocode} +% +% \noindent +% This macro should only be called once, during the preamble of a +% document, so we \verb+\let+ it be equal to \verb+\relax+ as soon +% as the work is done. +% \begin{macrocode} + \fi\let\WideMargins\relax\let\@widemargins\relax} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@preamblecmds} +% We add \verb+\WideMargins+ to \verb+\@preamblecmds+, which is a +% list of commands to be used only in the preamble of a document. +% +% \begin{macrocode} +{\def\do{\noexpand\do\noexpand} + \xdef\@preamblecmds{\@preamblecmds \do\WideMargins} +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@widemargins} +% This macro modifies the margin parameters. To do this it uses +% the dimension variable \verb+\ExtraWidth+, which was defined by +% \verb+\WideMargins+. +% +% \noindent +% First the \verb+\ExtraWidth+ is subtracted from the \verb+\textwidth+ +% and added to the \verb+\marginparwidth+. +% \begin{macrocode} +\def\@widemargins{% + \global\advance\textwidth by -\ExtraWidth + \global\advance\marginparwidth by \ExtraWidth +% \end{macrocode} +% +% \noindent +% Then we modify the margins, but the value of the switch +% \verb+\if@twoside+ has to be taken into account. Because +% we have to test another switch (\verb+\if@reversemargin+) +% we add another level of macros to modify the margin parameters% +% +% \begin{macrocode} + \if@twoside + \tw@sidedwidemargins + \else + \@nesidedwidemargins + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\tw@sidedwidemargins} +% Normally the marginal notes are printed in the `outer' margins, so +% we have to increase the \verb+\evensidemargin+ to keep the text +% balanced on both sides of the paper, but if \verb+\reversemarginpar+ +% is in effect we have to increase the \verb+\oddsidemargin+ and +% decrease the \verb+\evensidemargin+ accordingly. +% +% \begin{macrocode} +\def\tw@sidedwidemargins{% + \if@reversemargin +% \end{macrocode} +% +% \noindent +% Notice that for documents printed two-sided, the +% \verb+\evensidemargin+ is wider than the \verb+\oddsidemargin+; +% this difference in width is transferred to the other margin. +% +% \begin{macrocode} + \@tempdima=\evensidemargin + \advance\@tempdima by -\oddsidemargin + \advance\oddsidemargin by \ExtraWidth + \advance\oddsidemargin by \@tempdima + \advance\evensidemargin by -\@tempdima + \else +% \end{macrocode} +% +% \noindent +% If the marginal notes go on the normal side of the paper, only the +% \verb+\evensidemargin+ has to be increased. +% +% \begin{macrocode} + \advance\evensidemargin by \ExtraWidth + \fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@nesidedwidemargins} +% For documents that are printed one-sided, both margins have the same +% width. The default placement for the marginal notes is in the right +% margin, so if \verb+\reversemarginpar+ is {\em not\/} in effect the +% margin parameters need not be modified. If it is in effect, both the +% \verb+\oddsidemargin+ and the \verb+\evensidemargin+ need to be +% increased. +% +% \begin{macrocode} +\def\@nesidedwidemargins{% + \if@reversemargin + \advance\oddsidemargin by \ExtraWidth + \advance\evensidemargin by \ExtraWidth + \fi} +% \end{macrocode} +% \end{macro} +% +% \Finale +\endinput diff --git a/language/french/e-french/texmf/doc/test/myfigure.eps b/language/french/e-french/texmf/doc/test/myfigure.eps new file mode 100644 index 0000000000..d4dde79dd4 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/myfigure.eps @@ -0,0 +1,12824 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: (ImageMagick) +%%Title: (myfigure.eps) +%%CreationDate: (2017-02-04T14:34:31+01:00) +%%BoundingBox: -0 -0 360 453 +%%HiResBoundingBox: 0 0 360 453 +%%DocumentData: Clean7Bit +%%LanguageLevel: 1 +%%Pages: 1 +%%EndComments + +%%BeginDefaults +%%EndDefaults + +%%BeginProlog +% +% Display a color image. The image is displayed in color on +% Postscript viewers or printers that support color, otherwise +% it is displayed as grayscale. +% +/DirectClassPacket +{ + % + % Get a DirectClass packet. + % + % Parameters: + % red. + % green. + % blue. + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/DirectClassImage +{ + % + % Display a DirectClass image. + % + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { DirectClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayDirectClassPacket } image + } ifelse +} bind def + +/GrayDirectClassPacket +{ + % + % Get a DirectClass packet; convert to grayscale. + % + % Parameters: + % red + % green + % blue + % length: number of pixels minus one of this color (optional). + % + currentfile color_packet readhexstring pop pop + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/GrayPseudoClassPacket +{ + % + % Get a PseudoClass packet; convert to grayscale. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + color_packet 0 get 0.299 mul + color_packet 1 get 0.587 mul add + color_packet 2 get 0.114 mul add + cvi + /gray_packet exch def + compression 0 eq + { + /number_pixels 1 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add def + } ifelse + 0 1 number_pixels 1 sub + { + pixels exch gray_packet put + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassPacket +{ + % + % Get a PseudoClass packet. + % + % Parameters: + % index: index into the colormap. + % length: number of pixels minus one of this color (optional). + % + currentfile byte readhexstring pop 0 get + /offset exch 3 mul def + /color_packet colormap offset 3 getinterval def + compression 0 eq + { + /number_pixels 3 def + } + { + currentfile byte readhexstring pop 0 get + /number_pixels exch 1 add 3 mul def + } ifelse + 0 3 number_pixels 1 sub + { + pixels exch color_packet putinterval + } for + pixels 0 number_pixels getinterval +} bind def + +/PseudoClassImage +{ + % + % Display a PseudoClass image. + % + % Parameters: + % class: 0-PseudoClass or 1-Grayscale. + % + currentfile buffer readline pop + token pop /class exch def pop + class 0 gt + { + currentfile buffer readline pop + token pop /depth exch def pop + /grays columns 8 add depth sub depth mul 8 idiv string def + columns rows depth + [ + columns 0 0 + rows neg 0 rows + ] + { currentfile grays readhexstring pop } image + } + { + % + % Parameters: + % colors: number of colors in the colormap. + % colormap: red, green, blue color packets. + % + currentfile buffer readline pop + token pop /colors exch def pop + /colors colors 3 mul def + /colormap colors string def + currentfile colormap readhexstring pop pop + systemdict /colorimage known + { + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { PseudoClassPacket } false 3 colorimage + } + { + % + % No colorimage operator; convert to grayscale. + % + columns rows 8 + [ + columns 0 0 + rows neg 0 rows + ] + { GrayPseudoClassPacket } image + } ifelse + } ifelse +} bind def + +/DisplayImage +{ + % + % Display a DirectClass or PseudoClass image. + % + % Parameters: + % x & y translation. + % x & y scale. + % label pointsize. + % image label. + % image columns & rows. + % class: 0-DirectClass or 1-PseudoClass. + % compression: 0-none or 1-RunlengthEncoded. + % hex color packets. + % + gsave + /buffer 512 string def + /byte 1 string def + /color_packet 3 string def + /pixels 768 string def + + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + x y translate + currentfile buffer readline pop + token pop /x exch def + token pop /y exch def pop + currentfile buffer readline pop + token pop /pointsize exch def pop + /Times-Roman findfont pointsize scalefont setfont + x y scale + currentfile buffer readline pop + token pop /columns exch def + token pop /rows exch def pop + currentfile buffer readline pop + token pop /class exch def pop + currentfile buffer readline pop + token pop /compression exch def pop + class 0 gt { PseudoClassImage } { DirectClassImage } ifelse + grestore +} bind def +%%EndProlog +%%Page: 1 1 +%%PageBoundingBox: 0 0 360 453 +userdict begin +DisplayImage +0 0 +360 453 +12 +360 453 +0 +0 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE +FEFEFEFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEEEEEEEEEEEEEEEEEE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD +FDFDFDFDFDFDEEEEEEEEEEEEEEEEEEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDF5F5F5F5F5F5 +F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDF5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FBFBFBFBFBFBFBFBFBD2D2D2D2D2D2D2D2D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD2D2D2 +D2D2D2D2D2D2FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD2D2D2D2D2D2D2D2D2FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFBFBFBFBFBFBFBFBFBD5D5D5D5D5D5D5D5D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFB +D5D5D5D5D5D5D5D5D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD5D5D5D5D5D5D5D5D5FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFC +F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCF9F9F9F9F9F9F9F9F9FBFBFB +FBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9BFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9F9F9F9F1F1F1F1F1F1F1F1F1E2E2E2 +E2E2E2E2E2E2D3D3D3D3D3D3D3D3D3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD5D5D5 +D5D5D5D5D5D5E0E0E0E0E0E0E0E0E0EAEAEAEAEAEAEAEAEAF2F2F2F2F2F2F2F2F2F4F4F4F4F4F4 +F4F4F4F4F4F4E0E0E0E0E0E0E0E0E0C2C2C2C2C2C2C2C2C2C0C0C0C0C0C0C0C0C0D2D2D2D2D2D2 +D2D2D2D2D2D2E6E6E6E6E6E6E6E6E6F5F5F5F5F5F5F5F5F5F9F9F9F9F9F9F9F9F9FBFBFBFBFBFB +FBFBFBFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCDDDDDDDDDDDDDDDDDD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFD +FDFDFDF9F9F9F9F9F9F9F9F9F9F9F9F1F1F1F1F1F1F1F1F1E2E2E2E2E2E2E2E2E2D3D3D3D3D3D3 +D3D3D3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCD5D5D5D5D5D5D5D5D5E0E0E0E0E0E0 +E0E0E0EAEAEAEAEAEAEAEAEAF2F2F2F2F2F2F2F2F2F4F4F4F4F4F4F4F4F4F4F4F4E0E0E0E0E0E0 +E0E0E0C2C2C2C2C2C2C2C2C2C0C0C0C0C0C0C0C0C0D2D2D2D2D2D2D2D2D2D2D2D2E6E6E6E6E6E6 +E6E6E6F5F5F5F5F5F5F5F5F5F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9 +F9F9F9F1F1F1F1F1F1F1F1F1E2E2E2E2E2E2E2E2E2D3D3D3D3D3D3D3D3D3CCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCD5D5D5D5D5D5D5D5D5E0E0E0E0E0E0E0E0E0EAEAEAEAEAEAEAEAEA +F2F2F2F2F2F2F2F2F2F4F4F4F4F4F4F4F4F4F4F4F4E0E0E0E0E0E0E0E0E0C2C2C2C2C2C2C2C2C2 +C0C0C0C0C0C0C0C0C0D2D2D2D2D2D2D2D2D2D2D2D2E6E6E6E6E6E6E6E6E6F5F5F5F5F5F5F5F5F5 +F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC +FCFCFCFCFCFCDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFAFAFAFAFAFAFAFAFAFAFAFAF3F3F3F3F3F3F3F3F3 +E4E4E4E4E4E4E4E4E4CECECECECECECECECEB7B7B7B7B7B7B7B7B7B7B7B79F9F9F9F9F9F9F9F9F +858585858585858585707070707070707070696969696969696969696969696969696969696969 +717171717171717171818181818181818181949494949494949494A5A5A5A5A5A5A5A5A5AEAEAE +AEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E787878787878787878676767676767676767707070 +707070707070707070888888888888888888ABABABABABABABABABC3C3C3C3C3C3C3C3C3D9D9D9 +D9D9D9D9D9D9F7F7F7F7F7F7F7F7F7F7F7F7FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDBDBDBDB +DBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFAFAFAFAFAFAFAFAFAFAFAFAF3F3F3F3F3F3F3F3F3E4E4E4E4E4E4E4E4E4CECECE +CECECECECECEB7B7B7B7B7B7B7B7B7B7B7B79F9F9F9F9F9F9F9F9F858585858585858585707070 +707070707070696969696969696969696969696969696969696969717171717171717171818181 +818181818181949494949494949494A5A5A5A5A5A5A5A5A5AEAEAEAEAEAEAEAEAEAEAEAE9E9E9E +9E9E9E9E9E9E787878787878787878676767676767676767707070707070707070707070888888 +888888888888ABABABABABABABABABC3C3C3C3C3C3C3C3C3D9D9D9D9D9D9D9D9D9F7F7F7F7F7F7 +F7F7F7F7F7F7FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFAFAFAFAFAFAFAFAFAE9E9E9E9E9E9E9E9E9CBCBCBCBCBCB +CBCBCBCBCBCBA9A9A9A9A9A9A9A9A98B8B8B8B8B8B8B8B8B727272727272727272626262626262 +6262626262625656565656565656564E4E4E4E4E4E4E4E4E484848484848484848464646464646 +4646464545454545454545454545454949494949494949495050505050505050505A5A5A5A5A5A +5A5A5A5D5D5D5D5D5D5D5D5D6161616161616161616161615E5E5E5E5E5E5E5E5E545454545454 +5454544E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5A5A5A5A5A5A +5A5A5A6D6D6D6D6D6D6D6D6D8A8A8A8A8A8A8A8A8AC7C7C7C7C7C7C7C7C7C7C7C7F3F3F3F3F3F3 +F3F3F3FDFDFDFDFDFDFDFDFDFBFBFBFBFBFBFBFBFBF5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6 +F6F6F6FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F8F8F8F8F8F8F8F8F8B1B1B1B1B1B1B1B1B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFAFAFAFAFAFAFAFAFAE9E9E9E9E9E9E9E9E9CBCBCBCBCBCBCBCBCBCBCBCBA9A9A9A9A9A9 +A9A9A98B8B8B8B8B8B8B8B8B727272727272727272626262626262626262626262565656565656 +5656564E4E4E4E4E4E4E4E4E484848484848484848464646464646464646454545454545454545 +4545454949494949494949495050505050505050505A5A5A5A5A5A5A5A5A5D5D5D5D5D5D5D5D5D +6161616161616161616161615E5E5E5E5E5E5E5E5E5454545454545454544E4E4E4E4E4E4E4E4E +4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C5A5A5A5A5A5A5A5A5A6D6D6D6D6D6D6D6D6D +8A8A8A8A8A8A8A8A8AC7C7C7C7C7C7C7C7C7C7C7C7F3F3F3F3F3F3F3F3F3FDFDFDFDFDFDFDFDFD +FBFBFBFBFBFBFBFBFBF5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6FDFDFDFDFDFDFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8B1B1B1 +B1B1B1B1B1B1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFAFAFAFAFAFAFAFAFA +E9E9E9E9E9E9E9E9E9CBCBCBCBCBCBCBCBCBCBCBCBA9A9A9A9A9A9A9A9A98B8B8B8B8B8B8B8B8B +7272727272727272726262626262626262626262625656565656565656564E4E4E4E4E4E4E4E4E +484848484848484848464646464646464646454545454545454545454545494949494949494949 +5050505050505050505A5A5A5A5A5A5A5A5A5D5D5D5D5D5D5D5D5D616161616161616161616161 +5E5E5E5E5E5E5E5E5E5454545454545454544E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C4C4C4C +4C4C4C4C4C4C4C4C4C5A5A5A5A5A5A5A5A5A6D6D6D6D6D6D6D6D6D8A8A8A8A8A8A8A8A8AC7C7C7 +C7C7C7C7C7C7C7C7C7F3F3F3F3F3F3F3F3F3FDFDFDFDFDFDFDFDFDFBFBFBFBFBFBFBFBFBF5F5F5 +F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8B1B1B1B1B1B1B1B1B1FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFD +F8F8F8F8F8F8F8F8F8E5E5E5E5E5E5E5E5E5C5C5C5C5C5C5C5C5C59D9D9D9D9D9D9D9D9D777777 +7777777777777777775D5D5D5D5D5D5D5D5D505050505050505050494949494949494949484848 +4848484848484848484747474747474747474545454545454545454141414141414141413F3F3F +3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3E3E3E404040404040404040444444444444444444474747 +4747474747474848484848484848484949494949494949494949494B4B4B4B4B4B4B4B4B484848 +4848484848484D4D4D4D4D4D4D4D4D505050505050505050505050474747474747474747454545 +454545454545494949494949494949575757575757575757898989898989898989898989D0D0D0 +D0D0D0D0D0D0F1F1F1F1F1F1F1F1F1FCFCFCFCFCFCFCFCFCF9F9F9F9F9F9F9F9F9F3F3F3F3F3F3 +F3F3F3F3F3F3F7F7F7F7F7F7F7F7F7FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF8F8F8F8F8F8F8F8F8B3B3B3B3B3B3B3B3B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDF8F8F8F8F8F8F8F8F8E5E5E5 +E5E5E5E5E5E5C5C5C5C5C5C5C5C5C59D9D9D9D9D9D9D9D9D7777777777777777777777775D5D5D +5D5D5D5D5D5D505050505050505050494949494949494949484848484848484848484848474747 +4747474747474545454545454545454141414141414141413F3F3F3F3F3F3F3F3F3E3E3E3E3E3E +3E3E3E3E3E3E404040404040404040444444444444444444474747474747474747484848484848 +4848484949494949494949494949494B4B4B4B4B4B4B4B4B4848484848484848484D4D4D4D4D4D +4D4D4D505050505050505050505050474747474747474747454545454545454545494949494949 +494949575757575757575757898989898989898989898989D0D0D0D0D0D0D0D0D0F1F1F1F1F1F1 +F1F1F1FCFCFCFCFCFCFCFCFCF9F9F9F9F9F9F9F9F9F3F3F3F3F3F3F3F3F3F3F3F3F7F7F7F7F7F7 +F7F7F7FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8 +B3B3B3B3B3B3B3B3B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF7F7F7F7F7F7 +F7F7F7DFE0DFDFE0DFDFE0DFDFE0DFBCBCBCBCBCBCBCBCBC9292929292929292926E6E6E6E6E6E +6E6E6E5757575757575757574B4B4B4B4B4B4B4B4B4B4B4B474747474747474747444444444444 +444444414141414141414141424242424242424242424242424242424242424242424242424242 +4242423F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3B3B3B3C3C3C3C3C3C +3C3C3C3F3F3F3F3F3F3F3F3F404040404040404040424242424242424242464646464646464646 +4646464949494949494949494B4B4B4B4B4B4B4B4B4949494949494949494B4B4B4B4B4B4B4B4B +4B4B4B4B4B4B4B4B4B4B4B4B454545454545454545464646464646464646484848484848484848 +6161616161616161616161619C9C9C9C9C9C9C9C9CD9D9D9D9D9D9D9D9D9F9F9F9F9F9F9F9F9F9 +FEFEFEFEFEFEFEFEFEFBFBFBFBFBFBFBFBFBFBFBFBF2F2F2F2F2F2F2F2F2F9F9F9F9F9F9F9F9F9 +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8B3B3B3B3B3B3B3B3B3FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF7F7F7F7F7F7F7F7F7DFE0DFDFE0DFDFE0DF +DFE0DFBCBCBCBCBCBCBCBCBC9292929292929292926E6E6E6E6E6E6E6E6E575757575757575757 +4B4B4B4B4B4B4B4B4B4B4B4B474747474747474747444444444444444444414141414141414141 +4242424242424242424242424242424242424242424242424242424242423F3F3F3F3F3F3F3F3F +3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F +404040404040404040424242424242424242464646464646464646464646494949494949494949 +4B4B4B4B4B4B4B4B4B4949494949494949494B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B +454545454545454545464646464646464646484848484848484848616161616161616161616161 +9C9C9C9C9C9C9C9C9CD9D9D9D9D9D9D9D9D9F9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFEFBFBFB +FBFBFBFBFBFBFBFBFBF2F2F2F2F2F2F2F2F2F9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF8F8F8F8F8F8F8F8F8B3B3B3B3B3B3B3B3B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEF7F7F7F7F7F7F7F7F7DFE0DFDFE0DFDFE0DFDFE0DFBCBCBCBCBCBCBCBCBC +9292929292929292926E6E6E6E6E6E6E6E6E5757575757575757574B4B4B4B4B4B4B4B4B4B4B4B +474747474747474747444444444444444444414141414141414141424242424242424242424242 +4242424242424242424242424242424242423F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C3B3B3B +3B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F404040404040404040424242 +4242424242424646464646464646464646464949494949494949494B4B4B4B4B4B4B4B4B494949 +4949494949494B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B454545454545454545464646 +4646464646464848484848484848486161616161616161616161619C9C9C9C9C9C9C9C9CD9D9D9 +D9D9D9D9D9D9F9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFEFBFBFBFBFBFBFBFBFBFBFBFBF2F2F2 +F2F2F2F2F2F2F9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8 +F8F8F8B3B3B3B3B3B3B3B3B3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDC5C5C5 +C5C5C5C5C5C59393939393939393939393936C6C6C6C6C6C6C6C6C5858585858585858584C4C4C +4C4C4C4C4C4C464646464646464646454545454545454545454545454545454545454545464646 +464646464646454545454545454545464646464646464646464646454545454545454545444444 +4444444444444444444444444444444141414141414141413E3E3E3E3E3E3E3E3E3E3E3E3F3F3F +3F3F3F3F3F3F4040404040404040403F3F3F3F3F3F3F3F3F414141414141414141444444444444 +4444444444444848484848484848484D4D4D4D4D4D4D4D4D4F4F4F4F4F4F4F4F4F484848484848 +484848484848454545454545454545444444444444444444454545454545454545464646464646 +464646515151515151515151515151707070707070707070B2B2B2B2B2B2B2B2B2EDEDEDEDEDED +EDEDEDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD1D1D1D1D1D1D1D1D1 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDC5C5C5C5C5C5C5C5C5939393939393 +9393939393936C6C6C6C6C6C6C6C6C5858585858585858584C4C4C4C4C4C4C4C4C464646464646 +464646454545454545454545454545454545454545454545464646464646464646454545454545 +454545464646464646464646464646454545454545454545444444444444444444444444444444 +4444444141414141414141413E3E3E3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F404040404040 +4040403F3F3F3F3F3F3F3F3F414141414141414141444444444444444444444444484848484848 +4848484D4D4D4D4D4D4D4D4D4F4F4F4F4F4F4F4F4F484848484848484848484848454545454545 +454545444444444444444444454545454545454545464646464646464646515151515151515151 +515151707070707070707070B2B2B2B2B2B2B2B2B2EDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEF5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD1D1D1D1D1D1D1D1D1FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFD +FDFDFDEDEDEDEDEDEDEDEDEDC5C5C5C5C5C5C5C5C59393939393939393939393936C6C6C6C6C6C +6C6C6C5858585858585858584C4C4C4C4C4C4C4C4C464646464646464646454545454545454545 +454545454545454545454545464646464646464646454545454545454545464646464646464646 +464646454545454545454545444444444444444444444444444444444444414141414141414141 +3E3E3E3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F4040404040404040403F3F3F3F3F3F3F3F3F +4141414141414141414444444444444444444444444848484848484848484D4D4D4D4D4D4D4D4D +4F4F4F4F4F4F4F4F4F484848484848484848484848454545454545454545444444444444444444 +454545454545454545464646464646464646515151515151515151515151707070707070707070 +B2B2B2B2B2B2B2B2B2EDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFA +FAFAFAFAFAFAD1D1D1D1D1D1D1D1D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEF7F7F7F7F7F7F7F7F7DDDDDDDDDDDDDDDDDDABABABABABABABABAB +7777777777777777775B5B5B5B5B5B5B5B5B5B5B5B5151515151515151514C4C4C4C4C4C4C4C4C +474747474747474747454545454545454545444444444444444444444444444444444444444444 +424242424242424242424242424242424242424242424242424242424242424242424242424242 +4242424242424242424141414141414141414040404040404040403F3F3F3F3F3F3F3F3F3F3F3F +4242424242424242424545454545454545454141414141414141413E3E3E3E3E3E3E3E3E3F3F3F +3F3F3F3F3F3F3F3F3F4242424242424242424B4B4B4B4B4B4B4B4B515151515151515151515151 +515151515151515151474747474747474747414141414141414141424242424242424242484848 +4848484848485050505050505050505050505A5A5A5A5A5A5A5A5A818181818181818181CECECE +CECECECECECEF3F3F3F3F3F3F3F3F3FDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9F0F0F0 +F0F0F0F0F0F0FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7ABABABABABAB +ABABABFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +F7F7F7F7F7F7F7F7F7DDDDDDDDDDDDDDDDDDABABABABABABABABAB7777777777777777775B5B5B +5B5B5B5B5B5B5B5B5B5151515151515151514C4C4C4C4C4C4C4C4C474747474747474747454545 +454545454545444444444444444444444444444444444444444444424242424242424242424242 +424242424242424242424242424242424242424242424242424242424242424242424242414141 +4141414141414040404040404040403F3F3F3F3F3F3F3F3F3F3F3F424242424242424242454545 +4545454545454141414141414141413E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F3F3F3F424242 +4242424242424B4B4B4B4B4B4B4B4B515151515151515151515151515151515151515151474747 +474747474747414141414141414141424242424242424242484848484848484848505050505050 +5050505050505A5A5A5A5A5A5A5A5A818181818181818181CECECECECECECECECEF3F3F3F3F3F3 +F3F3F3FDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9F0F0F0F0F0F0F0F0F0FCFCFCFCFCFC +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7ABABABABABABABABABFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFCFCFCFCFCFCFCFCFCEDEDEDEDEDEDEDEDEDEDEDEDC6C6C6C6C6C6C6C6C6909090 +9090909090906363636363636363634E4E4E4E4E4E4E4E4E484848484848484848484848464646 +464646464646444444444444444444414141414141414141414141414141414141424242424242 +4242424242424040404040404040403E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C +3C3C3C3C3C3C3939393939393939393939393939393939393939393939393939393A3A3A3A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3E3E3E3E3E3E3E3E3E414141414141414141454545454545 +4545454040404040404040403B3B3B3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3F3F3F3F3F3F +3F3F3F4848484848484848485151515151515151515151514D4D4D4D4D4D4D4D4D454545454545 +4545454242424242424242424848484848484848484E4E4E4E4E4E4E4E4E4E4E4E515151515151 +5151515F605F5F605F5F605F9D9D9D9D9D9D9D9D9DD9D9D9D9D9D9D9D9D9F4F4F4F4F4F4F4F4F4 +F4F4F4FBFBFBFBFBFBFBFBFBEFEFEFEFEFEFEFEFEFF9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F7F7F7F7F7F7F7F7F7A9A9A9A9A9A9A9A9A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFCFCFCFCFCFC +FCFCFCEDEDEDEDEDEDEDEDEDEDEDEDC6C6C6C6C6C6C6C6C6909090909090909090636363636363 +6363634E4E4E4E4E4E4E4E4E484848484848484848484848464646464646464646444444444444 +444444414141414141414141414141414141414141424242424242424242424242404040404040 +4040403E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3C3C3C393939393939 +3939393939393939393939393939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A +3A3A3A3E3E3E3E3E3E3E3E3E414141414141414141454545454545454545404040404040404040 +3B3B3B3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3F3F3F3F3F3F3F3F3F484848484848484848 +5151515151515151515151514D4D4D4D4D4D4D4D4D454545454545454545424242424242424242 +4848484848484848484E4E4E4E4E4E4E4E4E4E4E4E5151515151515151515F605F5F605F5F605F +9D9D9D9D9D9D9D9D9DD9D9D9D9D9D9D9D9D9F4F4F4F4F4F4F4F4F4F4F4F4FBFBFBFBFBFBFBFBFB +EFEFEFEFEFEFEFEFEFF9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7A9A9A9 +A9A9A9A9A9A9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCEDEDEDEDEDEDEDEDED +EDEDEDC6C6C6C6C6C6C6C6C69090909090909090906363636363636363634E4E4E4E4E4E4E4E4E +484848484848484848484848464646464646464646444444444444444444414141414141414141 +4141414141414141414242424242424242424242424040404040404040403E3E3E3E3E3E3E3E3E +3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3C3C3C393939393939393939393939393939393939 +3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3E3E3E3E3E3E3E3E3E +4141414141414141414545454545454545454040404040404040403B3B3B3B3B3B3B3B3B3B3B3B +3A3A3A3A3A3A3A3A3A3F3F3F3F3F3F3F3F3F484848484848484848515151515151515151515151 +4D4D4D4D4D4D4D4D4D4545454545454545454242424242424242424848484848484848484E4E4E +4E4E4E4E4E4E4E4E4E5151515151515151515F605F5F605F5F605F9D9D9D9D9D9D9D9D9DD9D9D9 +D9D9D9D9D9D9F4F4F4F4F4F4F4F4F4F4F4F4FBFBFBFBFBFBFBFBFBEFEFEFEFEFEFEFEFEFF9F9F9 +F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7A9A9A9A9A9A9A9A9A9FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +F7F7F7F7F7F7F7F7F7DADADADADADADADADAA9A9A9A9A9A9A9A9A9A9A9A9787878787878787878 +565656565656565656474747474747474747444444444444444444444444444444444444444444 +4242424242424242423F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E404040 +4040404040404040403C3C3C3C3C3C3C3C3C393939393939393939373737373737373737343434 +3434343434343434343232323232323232323434343434343434343737373737373737373A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B404040 +4040404040404545454545454545454242424242424242424242423B3B3B3B3B3B3B3B3B393939 +3939393939393E3E3E3E3E3E3E3E3E4B4B4B4B4B4B4B4B4B4B4B4B4F4F4F4F4F4F4F4F4F484848 +4848484848484444444444444444444141414141414141414B4B4B4B4B4B4B4B4B4B4B4B4E4E4E +4E4E4E4E4E4E5151515151515151516F6F6F6F6F6F6F6F6FACACACACACACACACACDCDCDCDCDCDC +DCDCDCDCDCDCF1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1FBFBFBFBFBFBFBFBFBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9CBCBCBCBCBCBCBCBCBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF7F7F7F7F7F7F7F7F7DADADA +DADADADADADAA9A9A9A9A9A9A9A9A9A9A9A9787878787878787878565656565656565656474747 +4747474747474444444444444444444444444444444444444444444242424242424242423F3F3F +3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E4040404040404040404040403C3C3C +3C3C3C3C3C3C393939393939393939373737373737373737343434343434343434343434323232 +3232323232323434343434343434343737373737373737373A3A3A3A3A3A3A3A3A3A3A3A3A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B404040404040404040454545454545 +4545454242424242424242424242423B3B3B3B3B3B3B3B3B3939393939393939393E3E3E3E3E3E +3E3E3E4B4B4B4B4B4B4B4B4B4B4B4B4F4F4F4F4F4F4F4F4F484848484848484848444444444444 +4444444141414141414141414B4B4B4B4B4B4B4B4B4B4B4B4E4E4E4E4E4E4E4E4E515151515151 +5151516F6F6F6F6F6F6F6F6FACACACACACACACACACDCDCDCDCDCDCDCDCDCDCDCDCF1F1F1F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1FBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +CBCBCBCBCBCBCBCBCBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFD +FDFDFDFDFDFDF0F0F0F0F0F0F0F0F0CACACACACACACACACA909090909090909090626262626262 +6262626262624B4B4B4B4B4B4B4B4B454545454545454545424242424242424242424242424242 +4242424040404040404040404040403C3C3C3C3C3C3C3C3C393939393939393939353535353535 +353535363636363636363636353535353535353535353535323232323232323232303030303030 +303030313131313131313131323232323232323232323232343434343434343434353535353535 +353535363636363636363636363636363636363636363636363636363636363636393939393939 +3939393939393939393939393939393939393939393F3F3F3F3F3F3F3F3F484848484848484848 +4848484545454545454545453C3C3C3C3C3C3C3C3C3939393939393939393F3F3F3F3F3F3F3F3F +3F3F3F4949494949494949494C4C4C4C4C4C4C4C4C4747474747474747473F3F3F3F3F3F3F3F3F +4141414141414141414141414B4B4B4B4B4B4B4B4B484848484848484848525252525252525252 +818181818181818181BCBCBCBCBCBCBCBCBCBCBCBCE2E2E2E2E2E2E2E2E2F1F1F1F1F1F1F1F1F1 +FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDF0F0F0F0F0F0 +F0F0F0CACACACACACACACACA9090909090909090906262626262626262626262624B4B4B4B4B4B +4B4B4B454545454545454545424242424242424242424242424242424242404040404040404040 +4040403C3C3C3C3C3C3C3C3C393939393939393939353535353535353535363636363636363636 +353535353535353535353535323232323232323232303030303030303030313131313131313131 +323232323232323232323232343434343434343434353535353535353535363636363636363636 +363636363636363636363636363636363636363636393939393939393939393939393939393939 +3939393939393939393F3F3F3F3F3F3F3F3F484848484848484848484848454545454545454545 +3C3C3C3C3C3C3C3C3C3939393939393939393F3F3F3F3F3F3F3F3F3F3F3F494949494949494949 +4C4C4C4C4C4C4C4C4C4747474747474747473F3F3F3F3F3F3F3F3F414141414141414141414141 +4B4B4B4B4B4B4B4B4B484848484848484848525252525252525252818181818181818181BCBCBC +BCBCBCBCBCBCBCBCBCE2E2E2E2E2E2E2E2E2F1F1F1F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDF0F0F0F0F0F0F0F0F0CACACACACACACACACA +9090909090909090906262626262626262626262624B4B4B4B4B4B4B4B4B454545454545454545 +4242424242424242424242424242424242424040404040404040404040403C3C3C3C3C3C3C3C3C +393939393939393939353535353535353535363636363636363636353535353535353535353535 +323232323232323232303030303030303030313131313131313131323232323232323232323232 +343434343434343434353535353535353535363636363636363636363636363636363636363636 +3636363636363636363939393939393939393939393939393939393939393939393939393F3F3F +3F3F3F3F3F3F4848484848484848484848484545454545454545453C3C3C3C3C3C3C3C3C393939 +3939393939393F3F3F3F3F3F3F3F3F3F3F3F4949494949494949494C4C4C4C4C4C4C4C4C474747 +4747474747473F3F3F3F3F3F3F3F3F4141414141414141414141414B4B4B4B4B4B4B4B4B484848 +484848484848525252525252525252818181818181818181BCBCBCBCBCBCBCBCBCBCBCBCE2E2E2 +E2E2E2E2E2E2F1F1F1F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C1C1C1C1C1C1C1C1C1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEAEAEA +EAEAEAEAEAEAEAEAEAB8B8B8B8B8B8B8B8B87C7C7C7C7C7C7C7C7C565656565656565656454545 +4545454545454545454040404040404040404141414141414141413F3F3F3F3F3F3F3F3F3C3C3C +3C3C3C3C3C3C393939393939393939393939363636363636363636353535353535353535343434 +343434343434363636363636363636353535353535353535353535343434343434343434343434 +343434343434343434343434343434363636363636363636363636363636363636363636323232 +3232323232322F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131313131343434 +3434343434343A3A3A3A3A3A3A3A3A3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C404040404040 +4040404040404242424242424242423C3C3C3C3C3C3C3C3C393939393939393939363636363636 +3636363636363F3F3F3F3F3F3F3F3F4848484848484848484747474747474747473F3F3F3F3F3F +3F3F3F3B3B3B3B3B3B3B3B3B3B3B3B444444444444444444464646464646464646474747474747 +474747686868686868686868959595959595959595959595CACACACACACACACACADFE0DFDFE0DF +DFE0DFF5F5F5F5F5F5F5F5F5FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C8C8C8C8C8C8C8C8C8 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEAEAEAEAEAEAEAEAEAEAEAEAB8B8B8 +B8B8B8B8B8B87C7C7C7C7C7C7C7C7C565656565656565656454545454545454545454545404040 +4040404040404141414141414141413F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C393939393939 +393939393939363636363636363636353535353535353535343434343434343434363636363636 +363636353535353535353535353535343434343434343434343434343434343434343434343434 +3434343636363636363636363636363636363636363636363232323232323232322F2F2F2F2F2F +2F2F2F2F2F2F2F2F2F2F2F2F3131313131313131313131313434343434343434343A3A3A3A3A3A +3A3A3A3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C404040404040404040404040424242424242 +4242423C3C3C3C3C3C3C3C3C3939393939393939393636363636363636363636363F3F3F3F3F3F +3F3F3F4848484848484848484747474747474747473F3F3F3F3F3F3F3F3F3B3B3B3B3B3B3B3B3B +3B3B3B444444444444444444464646464646464646474747474747474747686868686868686868 +959595959595959595959595CACACACACACACACACADFE0DFDFE0DFDFE0DFF5F5F5F5F5F5F5F5F5 +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C8C8C8C8C8C8C8C8C8FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDFDFDFDFDFDFDEAEAEAEAEAEAEAEAEAEAEAEAB8B8B8B8B8B8B8B8B87C7C7C7C7C7C +7C7C7C565656565656565656454545454545454545454545404040404040404040414141414141 +4141413F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C393939393939393939393939363636363636 +363636353535353535353535343434343434343434363636363636363636353535353535353535 +353535343434343434343434343434343434343434343434343434343434363636363636363636 +3636363636363636363636363232323232323232322F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F +3131313131313131313131313434343434343434343A3A3A3A3A3A3A3A3A3E3E3E3E3E3E3E3E3E +3C3C3C3C3C3C3C3C3C4040404040404040404040404242424242424242423C3C3C3C3C3C3C3C3C +3939393939393939393636363636363636363636363F3F3F3F3F3F3F3F3F484848484848484848 +4747474747474747473F3F3F3F3F3F3F3F3F3B3B3B3B3B3B3B3B3B3B3B3B444444444444444444 +464646464646464646474747474747474747686868686868686868959595959595959595959595 +CACACACACACACACACADFE0DFDFE0DFDFE0DFF5F5F5F5F5F5F5F5F5FEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9C8C8C8C8C8C8C8C8C8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEAEAEAEAEAEAEAEAEA +B5B5B5B5B5B5B5B5B5B5B5B5777777777777777777505050505050505050444444444444444444 +4242424242424242424242424242424242424242424040404040404040403C3C3C3C3C3C3C3C3C +3939393939393939393737373737373737373737373737373737373737373A3A3A3A3A3A3A3A3A +3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C +3B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B +373737373737373737343434343434343434323232323232323232343434343434343434343434 +3636363636363636363B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F +3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F4040404040404040403E3E3E3E3E3E3E3E3E373737 +373737373737373737363636363636363636404040404040404040474747474747474747424242 +4242424242423939393939393939393939393C3C3C3C3C3C3C3C3C414141414141414141424242 +424242424242505050505050505050717171717171717171717171959595959595959595B0B0B0 +B0B0B0B0B0B0CECECECECECECECECEEDEDEDEDEDEDEDEDEDEDEDEDF9F9F9F9F9F9F9F9F9FDFDFD +FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD1D1D1D1D1D1 +D1D1D1FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEAEAEAEAEAEAEAEAEAB5B5B5B5B5B5B5B5B5B5B5B5 +777777777777777777505050505050505050444444444444444444424242424242424242424242 +4242424242424242424040404040404040403C3C3C3C3C3C3C3C3C393939393939393939373737 +3737373737373737373737373737373737373A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3E3E3E +3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3C3C3C +3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B373737373737373737343434 +3434343434343232323232323232323434343434343434343434343636363636363636363B3B3B +3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F +3F3F3F3F3F3F4040404040404040403E3E3E3E3E3E3E3E3E373737373737373737373737363636 +363636363636404040404040404040474747474747474747424242424242424242393939393939 +3939393939393C3C3C3C3C3C3C3C3C414141414141414141424242424242424242505050505050 +505050717171717171717171717171959595959595959595B0B0B0B0B0B0B0B0B0CECECECECECE +CECECEEDEDEDEDEDEDEDEDEDEDEDEDF9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD1D1D1D1D1D1D1D1D1FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF3F3F3 +F3F3F3F3F3F3BDBDBDBDBDBDBDBDBD7D7D7D7D7D7D7D7D7D7D7D7D565656565656565656464646 +4646464646464242424242424242424242424242424242424242424242424242424242423F3F3F +3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3C3C3C +3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B +3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F +3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3B3B3B3B3B3B +3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E4040404040404040404141414141414141413E3E3E3E3E3E +3E3E3E3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3C3C3C414141414141414141444444444444 +4444444242424242424242423A3A3A3A3A3A3A3A3A3A3A3A3434343434343434343A3A3A3A3A3A +3A3A3A4242424242424242424444444444444444443A3A3A3A3A3A3A3A3A3A3A3A373737373737 +3737373B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F414141414141414141505050505050505050 +5050506666666666666666667979797979797979798F8F8F8F8F8F8F8F8FB6B6B6B6B6B6B6B6B6 +B6B6B6D4D4D4D4D4D4D4D4D4E5E5E5E5E5E5E5E5E5F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF3F3F3F3F3F3F3F3F3BDBDBDBDBDBD +BDBDBD7D7D7D7D7D7D7D7D7D7D7D7D565656565656565656464646464646464646424242424242 +4242424242424242424242424242424242424242424242423F3F3F3F3F3F3F3F3F3E3E3E3E3E3E +3E3E3E3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E +3E3E3E3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E +3E3E3E3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F3F3F3F3C3C3C3C3C3C +3C3C3C3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E +3E3E3E4040404040404040404141414141414141413E3E3E3E3E3E3E3E3E3A3A3A3A3A3A3A3A3A +3C3C3C3C3C3C3C3C3C3C3C3C414141414141414141444444444444444444424242424242424242 +3A3A3A3A3A3A3A3A3A3A3A3A3434343434343434343A3A3A3A3A3A3A3A3A424242424242424242 +4444444444444444443A3A3A3A3A3A3A3A3A3A3A3A3737373737373737373B3B3B3B3B3B3B3B3B +3F3F3F3F3F3F3F3F3F414141414141414141505050505050505050505050666666666666666666 +7979797979797979798F8F8F8F8F8F8F8F8FB6B6B6B6B6B6B6B6B6B6B6B6D4D4D4D4D4D4D4D4D4 +E5E5E5E5E5E5E5E5E5F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDB +DBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEF3F3F3F3F3F3F3F3F3BDBDBDBDBDBDBDBDBD7D7D7D7D7D7D7D7D7D +7D7D7D565656565656565656464646464646464646424242424242424242424242424242424242 +4242424242424242424242423F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B +3B3B3B3B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C +3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C +3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B +3A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E404040404040404040 +4141414141414141413E3E3E3E3E3E3E3E3E3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3C3C3C +4141414141414141414444444444444444444242424242424242423A3A3A3A3A3A3A3A3A3A3A3A +3434343434343434343A3A3A3A3A3A3A3A3A4242424242424242424444444444444444443A3A3A +3A3A3A3A3A3A3A3A3A3737373737373737373B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F414141 +4141414141415050505050505050505050506666666666666666667979797979797979798F8F8F +8F8F8F8F8F8FB6B6B6B6B6B6B6B6B6B6B6B6D4D4D4D4D4D4D4D4D4E5E5E5E5E5E5E5E5E5F5F5F5 +F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +D2D2D2D2D2D2D2D2D28A8A8A8A8A8A8A8A8A5D5D5D5D5D5D5D5D5D5D5D5D4C4C4C4C4C4C4C4C4C +4545454545454545454141414141414141413E3E3E3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C +3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A +3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3939393939393939393A3A3A +3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3F3F3F +3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3B3B3B +3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E404040404040404040414141414141414141414141 +4141414141413B3B3B3B3B3B3B3B3B3636363636363636363636363B3B3B3B3B3B3B3B3B424242 +424242424242494949494949494949424242424242424242424242353535353535353535393939 +3939393939393C3C3C3C3C3C3C3C3C4141414141414141414040404040404040404040403A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C424242424242 +4242424242424F4F4F4F4F4F4F4F4F5D5D5D5D5D5D5D5D5D6C6C6C6C6C6C6C6C6C878787878787 +878787878787A8A8A8A8A8A8A8A8A8C5C5C5C5C5C5C5C5C5DBDBDBDBDBDBDBDBDBF0F0F0F0F0F0 +F0F0F0FDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9CBCBCBCBCBCBCBCBCBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9D2D2D2D2D2D2D2D2D28A8A8A +8A8A8A8A8A8A5D5D5D5D5D5D5D5D5D5D5D5D4C4C4C4C4C4C4C4C4C454545454545454545414141 +4141414141413E3E3E3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3A3A3A +3A3A3A3A3A3A3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3E3E3E +3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3C3C3C +3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F3F3F3F3E3E3E +3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E +3E3E3E3E3E3E4040404040404040404141414141414141414141414141414141413B3B3B3B3B3B +3B3B3B3636363636363636363636363B3B3B3B3B3B3B3B3B424242424242424242494949494949 +4949494242424242424242424242423535353535353535353939393939393939393C3C3C3C3C3C +3C3C3C4141414141414141414040404040404040404040403A3A3A3A3A3A3A3A3A3A3A3A3A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C4242424242424242424242424F4F4F4F4F4F +4F4F4F5D5D5D5D5D5D5D5D5D6C6C6C6C6C6C6C6C6C878787878787878787878787A8A8A8A8A8A8 +A8A8A8C5C5C5C5C5C5C5C5C5DBDBDBDBDBDBDBDBDBF0F0F0F0F0F0F0F0F0FDFDFDFDFDFDFDFDFD +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +CBCBCBCBCBCBCBCBCBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEE7E7E7E7E7E7E7E7E79F9F9F9F9F9F9F9F9F6565656565656565654E4E4E4E4E4E +4E4E4E4E4E4E454545454545454545404040404040404040393939393939393939343434343434 +343434343434313131313131313131313131313131313131313131313131313131303030303030 +303030303030303030303030303030343434343434343434373737373737373737393939393939 +393939373737373737373737373737373737373737373737373737373737373737353535353535 +3535353636363636363636363737373737373737373737373939393939393939393A3A3A3A3A3A +3A3A3A3939393939393939393939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C +3C3C3C3F3F3F3F3F3F3F3F3F4141414141414141414242424242424242423E3E3E3E3E3E3E3E3E +3E3E3E3939393939393939393A3A3A3A3A3A3A3A3A444444444444444444484848484848484848 +4848483C3C3C3C3C3C3C3C3C3636363636363636363A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B +3E3E3E3E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A373737373737373737 +3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E4242424242424242424C4C4C4C4C4C4C4C4C +5858585858585858586868686868686868686868687B7B7B7B7B7B7B7B7B9D9D9D9D9D9D9D9D9D +CBCBCBCBCBCBCBCBCBE4E4E4E4E4E4E4E4E4F5F5F5F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD8D8D8D8D8D8D8D8D8FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE7E7E7E7E7E7 +E7E7E79F9F9F9F9F9F9F9F9F6565656565656565654E4E4E4E4E4E4E4E4E4E4E4E454545454545 +454545404040404040404040393939393939393939343434343434343434343434313131313131 +313131313131313131313131313131313131313131303030303030303030303030303030303030 +303030343434343434343434373737373737373737393939393939393939373737373737373737 +373737373737373737373737373737373737373737353535353535353535363636363636363636 +3737373737373737373737373939393939393939393A3A3A3A3A3A3A3A3A393939393939393939 +3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F +4141414141414141414242424242424242423E3E3E3E3E3E3E3E3E3E3E3E393939393939393939 +3A3A3A3A3A3A3A3A3A4444444444444444444848484848484848484848483C3C3C3C3C3C3C3C3C +3636363636363636363A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E +3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3737373737373737373B3B3B3B3B3B3B3B3B3E3E3E +3E3E3E3E3E3E3E3E3E4242424242424242424C4C4C4C4C4C4C4C4C585858585858585858686868 +6868686868686868687B7B7B7B7B7B7B7B7B9D9D9D9D9D9D9D9D9DCBCBCBCBCBCBCBCBCBE4E4E4 +E4E4E4E4E4E4F5F5F5F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD8D8D8D8D8D8D8D8D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE7E7E7E7E7E7E7E7E79F9F9F9F9F9F9F9F9F +6565656565656565654E4E4E4E4E4E4E4E4E4E4E4E454545454545454545404040404040404040 +393939393939393939343434343434343434343434313131313131313131313131313131313131 +313131313131313131303030303030303030303030303030303030303030343434343434343434 +373737373737373737393939393939393939373737373737373737373737373737373737373737 +373737373737373737353535353535353535363636363636363636373737373737373737373737 +3939393939393939393A3A3A3A3A3A3A3A3A3939393939393939393939393939393939393A3A3A +3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F414141414141414141424242 +4242424242423E3E3E3E3E3E3E3E3E3E3E3E3939393939393939393A3A3A3A3A3A3A3A3A444444 +4444444444444848484848484848484848483C3C3C3C3C3C3C3C3C3636363636363636363A3A3A +3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3A3A3A +3A3A3A3A3A3A3737373737373737373B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E424242 +4242424242424C4C4C4C4C4C4C4C4C5858585858585858586868686868686868686868687B7B7B +7B7B7B7B7B7B9D9D9D9D9D9D9D9D9DCBCBCBCBCBCBCBCBCBE4E4E4E4E4E4E4E4E4F5F5F5F5F5F5 +F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB +FBFBFBD8D8D8D8D8D8D8D8D8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +F9F9F9F9F9F9F9F9F9C4C4C4C4C4C4C4C4C4767676767676767676505050505050505050424242 +4242424242424242423C3C3C3C3C3C3C3C3C373737373737373737313131313131313131303030 +303030303030303030303030303030303030313131313131313131313131313131313131303030 +3030303030302D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131 +3131313131313131313131313131313232323232323232323232323030303030303030302C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D303030303030303030323232 +323232323232353535353535353535343434343434343434343434343434343434343434353535 +3535353535353737373737373737373B3B3B3B3B3B3B3B3B454545454545454545474747474747 +4747474747473E3E3E3E3E3E3E3E3E353535353535353535373737373737373737454545454545 +4545454545454848484848484848483A3A3A3A3A3A3A3A3A363636363636363636353535353535 +3535353737373737373737373737373B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3A3A3A3A3A3A +3A3A3A3939393939393939393C3C3C3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E404040404040 +4040404848484848484848484D4D4D4D4D4D4D4D4D4D4D4D5757575757575757576A6A6A6A6A6A +6A6A6A969696969696969696CBCBCBCBCBCBCBCBCBE7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7 +F7F7F7FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDF4F4F4F4F4F4F4F4F4 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEF9F9F9F9F9F9F9F9F9C4C4C4 +C4C4C4C4C4C47676767676767676765050505050505050504242424242424242424242423C3C3C +3C3C3C3C3C3C373737373737373737313131313131313131303030303030303030303030303030 +3030303030303131313131313131313131313131313131313030303030303030302D2D2D2D2D2D +2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131313131313131 +3131313232323232323232323232323030303030303030302C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D303030303030303030323232323232323232353535353535 +353535343434343434343434343434343434343434343434353535353535353535373737373737 +3737373B3B3B3B3B3B3B3B3B4545454545454545454747474747474747474747473E3E3E3E3E3E +3E3E3E353535353535353535373737373737373737454545454545454545454545484848484848 +4848483A3A3A3A3A3A3A3A3A363636363636363636353535353535353535373737373737373737 +3737373B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3A3A3A3A3A3A3A3A3A393939393939393939 +3C3C3C3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E404040404040404040484848484848484848 +4D4D4D4D4D4D4D4D4D4D4D4D5757575757575757576A6A6A6A6A6A6A6A6A969696969696969696 +CBCBCBCBCBCBCBCBCBE7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F7FEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDF4F4F4F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDFDFDFDFDFDFDFDFDFDE1E1E1E1E1E1E1E1E1919191919191919191575757575757 +575757414141414141414141373737373737373737373737343434343434343434313131313131 +313131323232323232323232353535353535353535353535353535353535353535353535353535 +353535363636363636363636353535353535353535323232323232323232323232303030303030 +3030302F2F2F2F2F2F2F2F2F323232323232323232343434343434343434323232323232323232 +3232323131313131313131313030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F313131313131313131 +3434343434343434343434343636363636363636363939393939393939393C3C3C3C3C3C3C3C3C +404040404040404040424242424242424242424242404040404040404040363636363636363636 +313131313131313131353535353535353535353535404040404040404040404040404040404040 +373737373737373737313131313131313131313131313131313131313131363636363636363636 +3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3A3A3A3A3A3A3A3A3A393939393939393939393939 +3C3C3C3C3C3C3C3C3C3939393939393939393F3F3F3F3F3F3F3F3F414141414141414141414141 +4545454545454545454D4D4D4D4D4D4D4D4D5F605F5F605F5F605F8A8A8A8A8A8A8A8A8AC0C0C0 +C0C0C0C0C0C0C0C0C0E0E0E0E0E0E0E0E0E0FBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC +FCFCFCFCFCFCE4E4E4E4E4E4E4E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFD +FDFDFDE1E1E1E1E1E1E1E1E1919191919191919191575757575757575757414141414141414141 +373737373737373737373737343434343434343434313131313131313131323232323232323232 +353535353535353535353535353535353535353535353535353535353535363636363636363636 +3535353535353535353232323232323232323232323030303030303030302F2F2F2F2F2F2F2F2F +323232323232323232343434343434343434323232323232323232323232313131313131313131 +3030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F313131313131313131343434343434343434343434 +3636363636363636363939393939393939393C3C3C3C3C3C3C3C3C404040404040404040424242 +424242424242424242404040404040404040363636363636363636313131313131313131353535 +353535353535353535404040404040404040404040404040404040373737373737373737313131 +3131313131313131313131313131313131313636363636363636363A3A3A3A3A3A3A3A3A3C3C3C +3C3C3C3C3C3C3A3A3A3A3A3A3A3A3A3939393939393939393939393C3C3C3C3C3C3C3C3C393939 +3939393939393F3F3F3F3F3F3F3F3F4141414141414141414141414545454545454545454D4D4D +4D4D4D4D4D4D5F605F5F605F5F605F8A8A8A8A8A8A8A8A8AC0C0C0C0C0C0C0C0C0C0C0C0E0E0E0 +E0E0E0E0E0E0FBFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE4E4E4E4E4E4 +E4E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDE1E1E1E1E1E1E1E1E1 +919191919191919191575757575757575757414141414141414141373737373737373737373737 +343434343434343434313131313131313131323232323232323232353535353535353535353535 +353535353535353535353535353535353535363636363636363636353535353535353535323232 +3232323232323232323030303030303030302F2F2F2F2F2F2F2F2F323232323232323232343434 +3434343434343232323232323232323232323131313131313131313030303030303030302D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2F2F2F +2F2F2F2F2F2F313131313131313131343434343434343434343434363636363636363636393939 +3939393939393C3C3C3C3C3C3C3C3C404040404040404040424242424242424242424242404040 +404040404040363636363636363636313131313131313131353535353535353535353535404040 +404040404040404040404040404040373737373737373737313131313131313131313131313131 +3131313131313636363636363636363A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3A3A3A3A3A3A +3A3A3A3939393939393939393939393C3C3C3C3C3C3C3C3C3939393939393939393F3F3F3F3F3F +3F3F3F4141414141414141414141414545454545454545454D4D4D4D4D4D4D4D4D5F605F5F605F +5F605F8A8A8A8A8A8A8A8A8AC0C0C0C0C0C0C0C0C0C0C0C0E0E0E0E0E0E0E0E0E0FBFBFBFBFBFB +FBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE4E4E4E4E4E4E4E4E4FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEF2F2F2F2F2F2F2F2F2F2F2F2B1B1B1B1B1B1B1B1B1666666666666666666454545 +454545454545393939393939393939323232323232323232323232313131313131313131343434 +343434343434353535353535353535323232323232323232323232313131313131313131323232 +323232323232353535353535353535353535353535353535343434343434343434343434353535 +353535353535343434343434343434323232323232323232323232323232323232323232323232 +323232323232353535353535353535373737373737373737323232323232323232303030303030 +3030303030302C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D323232323232323232373737373737 +3737373939393939393939393939393636363636363636363636363636363636363A3A3A3A3A3A +3A3A3A3E3E3E3E3E3E3E3E3E4141414141414141414141414545454545454545453F3F3F3F3F3F +3F3F3F3232323232323232322F2F2F2F2F2F2F2F2F2F2F2F3232323232323232323B3B3B3B3B3B +3B3B3B3B3B3B3B3B3B3B3B3B323232323232323232303030303030303030303030323232323232 +3232323636363636363636363C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B363636363636363636 +3636363939393939393939393737373737373737373939393939393939393C3C3C3C3C3C3C3C3C +3C3C3C3E3E3E3E3E3E3E3E3E4242424242424242424C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C +838383838383838383838383B7B7B7B7B7B7B7B7B7EFEFEFEFEFEFEFEFEFFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FBFBFBFBFBFBFBFBFBDDDDDDDDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF2F2F2F2F2F2 +F2F2F2F2F2F2B1B1B1B1B1B1B1B1B1666666666666666666454545454545454545393939393939 +393939323232323232323232323232313131313131313131343434343434343434353535353535 +353535323232323232323232323232313131313131313131323232323232323232353535353535 +353535353535353535353535343434343434343434343434353535353535353535343434343434 +343434323232323232323232323232323232323232323232323232323232323232353535353535 +3535353737373737373737373232323232323232323030303030303030303030302C2C2C2C2C2C +2C2C2C2D2D2D2D2D2D2D2D2D323232323232323232373737373737373737393939393939393939 +3939393636363636363636363636363636363636363A3A3A3A3A3A3A3A3A3E3E3E3E3E3E3E3E3E +4141414141414141414141414545454545454545453F3F3F3F3F3F3F3F3F323232323232323232 +2F2F2F2F2F2F2F2F2F2F2F2F3232323232323232323B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B +323232323232323232303030303030303030303030323232323232323232363636363636363636 +3C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B363636363636363636363636393939393939393939 +3737373737373737373939393939393939393C3C3C3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E +4242424242424242424C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C838383838383838383838383 +B7B7B7B7B7B7B7B7B7EFEFEFEFEFEFEFEFEFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDDDDDD +DDDDDDDDDDDDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF2F2F2F2F2F2F2F2F2F2F2F2B1B1B1B1B1B1 +B1B1B1666666666666666666454545454545454545393939393939393939323232323232323232 +323232313131313131313131343434343434343434353535353535353535323232323232323232 +323232313131313131313131323232323232323232353535353535353535353535353535353535 +343434343434343434343434353535353535353535343434343434343434323232323232323232 +323232323232323232323232323232323232323232353535353535353535373737373737373737 +3232323232323232323030303030303030303030302C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D +323232323232323232373737373737373737393939393939393939393939363636363636363636 +3636363636363636363A3A3A3A3A3A3A3A3A3E3E3E3E3E3E3E3E3E414141414141414141414141 +4545454545454545453F3F3F3F3F3F3F3F3F3232323232323232322F2F2F2F2F2F2F2F2F2F2F2F +3232323232323232323B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B323232323232323232303030 +3030303030303030303232323232323232323636363636363636363C3C3C3C3C3C3C3C3C3B3B3B +3B3B3B3B3B3B363636363636363636363636393939393939393939373737373737373737393939 +3939393939393C3C3C3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E4242424242424242424C4C4C +4C4C4C4C4C4C5C5C5C5C5C5C5C5C5C838383838383838383838383B7B7B7B7B7B7B7B7B7EFEFEF +EFEFEFEFEFEFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDDDDDDDDDDDDDDDDDDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFCFCFCFCFCFCD4D4D4D4D4D4D4D4D4D4D4D4838383838383838383505050505050505050 +3E3E3E3E3E3E3E3E3E363636363636363636323232323232323232323232303030303030303030 +3030303030303030303131313131313131312D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B +2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F303030303030303030303030 +343434343434343434393939393939393939373737373737373737363636363636363636343434 +343434343434343434353535353535353535373737373737373737363636363636363636363636 +3636363636363636363535353535353535353535353535353535353737373737373737373A3A3A +3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A424242 +4242424242424646464646464646464242424242424242424242424040404040404040403E3E3E +3E3E3E3E3E3E3737373737373737373232323232323232323232322D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F343434343434343434353535353535353535323232323232323232323232313131 +3131313131313232323232323232323939393939393939393E3E3E3E3E3E3E3E3E393939393939 +393939393939353535353535353535373737373737373737373737373737373737393939393939 +3939393939393A3A3A3A3A3A3A3A3A3F3F3F3F3F3F3F3F3F4646464646464646464C4C4C4C4C4C +4C4C4C5A5A5A5A5A5A5A5A5A5A5A5A7E7E7E7E7E7E7E7E7ED2D2D2D2D2D2D2D2D2FCFCFCFCFCFC +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFAFAFAFAFAFAFAFAFADBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCD4D4D4 +D4D4D4D4D4D4D4D4D48383838383838383835050505050505050503E3E3E3E3E3E3E3E3E363636 +363636363636323232323232323232323232303030303030303030303030303030303030313131 +3131313131312D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2D2D2D +2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F303030303030303030303030343434343434343434393939 +393939393939373737373737373737363636363636363636343434343434343434343434353535 +353535353535373737373737373737363636363636363636363636363636363636363636353535 +3535353535353535353535353535353737373737373737373A3A3A3A3A3A3A3A3A3B3B3B3B3B3B +3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A424242424242424242464646464646 +4646464242424242424242424242424040404040404040403E3E3E3E3E3E3E3E3E373737373737 +3737373232323232323232323232322D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F343434343434 +343434353535353535353535323232323232323232323232313131313131313131323232323232 +3232323939393939393939393E3E3E3E3E3E3E3E3E393939393939393939393939353535353535 +3535353737373737373737373737373737373737373939393939393939393939393A3A3A3A3A3A +3A3A3A3F3F3F3F3F3F3F3F3F4646464646464646464C4C4C4C4C4C4C4C4C5A5A5A5A5A5A5A5A5A +5A5A5A7E7E7E7E7E7E7E7E7ED2D2D2D2D2D2D2D2D2FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFA +DBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEECECECECECECECECECA4A4A4A4A4A4A4A4A4A4A4A45E5E5E +5E5E5E5E5E5E4545454545454545453C3C3C3C3C3C3C3C3C363636363636363636343434343434 +343434343434343434343434343434343434343434343434343434343434343434313131313131 +3131313131312D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F +2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C303030303030303030343434343434 +343434343434343434343434323232323232323232323232353535353535353535393939393939 +393939373737373737373737373737373737373737373737373737373737373737373737373737 +373737393939393939393939393939393939393939363636363636363636363636363636363636 +3636363A3A3A3A3A3A3A3A3A444444444444444444494949494949494949464646464646464646 +4646463C3C3C3C3C3C3C3C3C363636363636363636323232323232323232323232323232323232 +3232322F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C303030303030303030 +353535353535353535353535323232323232323232303030303030303030343434343434343434 +393939393939393939393939393939393939393939343434343434343434363636363636363636 +3737373737373737373636363636363636363636363737373737373737373E3E3E3E3E3E3E3E3E +4242424242424242424646464646464646464E4E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E +A1A1A1A1A1A1A1A1A1EEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFADBDBDBDBDBDBDBDBDBFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE +FEFEFEECECECECECECECECECA4A4A4A4A4A4A4A4A4A4A4A45E5E5E5E5E5E5E5E5E454545454545 +4545453C3C3C3C3C3C3C3C3C363636363636363636343434343434343434343434343434343434 +3434343434343434343434343434343434343434343131313131313131313131312D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D +2D2D2D2C2C2C2C2C2C2C2C2C303030303030303030343434343434343434343434343434343434 +323232323232323232323232353535353535353535393939393939393939373737373737373737 +373737373737373737373737373737373737373737373737373737373737393939393939393939 +3939393939393939393636363636363636363636363636363636363636363A3A3A3A3A3A3A3A3A +4444444444444444444949494949494949494646464646464646464646463C3C3C3C3C3C3C3C3C +3636363636363636363232323232323232323232323232323232323232322F2F2F2F2F2F2F2F2F +2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C303030303030303030353535353535353535353535 +323232323232323232303030303030303030343434343434343434393939393939393939393939 +393939393939393939343434343434343434363636363636363636373737373737373737363636 +3636363636363636363737373737373737373E3E3E3E3E3E3E3E3E424242424242424242464646 +4646464646464E4E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5EA1A1A1A1A1A1A1A1A1EEEEEE +EEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFAFAFAFAFAFAFAFAFADBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEECECECECECECECECEC +A4A4A4A4A4A4A4A4A4A4A4A45E5E5E5E5E5E5E5E5E4545454545454545453C3C3C3C3C3C3C3C3C +363636363636363636343434343434343434343434343434343434343434343434343434343434 +3434343434343434343131313131313131313131312D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C +303030303030303030343434343434343434343434343434343434323232323232323232323232 +353535353535353535393939393939393939373737373737373737373737373737373737373737 +373737373737373737373737373737373737393939393939393939393939393939393939363636 +3636363636363636363636363636363636363A3A3A3A3A3A3A3A3A444444444444444444494949 +4949494949494646464646464646464646463C3C3C3C3C3C3C3C3C363636363636363636323232 +3232323232323232323232323232323232322F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2C2C2C +2C2C2C2C2C2C303030303030303030353535353535353535353535323232323232323232303030 +303030303030343434343434343434393939393939393939393939393939393939393939343434 +343434343434363636363636363636373737373737373737363636363636363636363636373737 +3737373737373E3E3E3E3E3E3E3E3E4242424242424242424646464646464646464E4E4E4E4E4E +4E4E4E4E4E4E5E5E5E5E5E5E5E5E5EA1A1A1A1A1A1A1A1A1EEEEEEEEEEEEEEEEEEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFA +FAFAFADBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6737373737373737373737373 +4848484848484848484040404040404040403B3B3B3B3B3B3B3B3B353535353535353535363636 +3636363636363636363939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A373737 +373737373737373737323232323232323232303030303030303030303030303030303030323232 +3232323232322F2F2F2F2F2F2F2F2F2F2F2F282828282828282828272727272727272727292929 +2929292929292C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D313131313131313131353535 +353535353535353535353535353535353535353535353535353535353535353535353535363636 +3636363636363535353535353535353030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F363636363636363636404040404040404040464646464646464646444444444444 +4444444444443E3E3E3E3E3E3E3E3E3737373737373737373232323232323232322F2F2F2F2F2F +2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C303030303030303030303030303030303030303030303030303030303030323232323232 +323232353535353535353535393939393939393939393939393939393939393939373737373737 +3737373636363636363636363535353535353535353535353535353535353535353A3A3A3A3A3A +3A3A3A4040404040404040404545454545454545454B4B4B4B4B4B4B4B4B4B4B4B545454545454 +545454737373737373737373C7C7C7C7C7C7C7C7C7FAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6737373737373737373737373484848484848484848404040 +4040404040403B3B3B3B3B3B3B3B3B353535353535353535363636363636363636363636393939 +3939393939393A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A373737373737373737373737323232 +3232323232323030303030303030303030303030303030303232323232323232322F2F2F2F2F2F +2F2F2F2F2F2F2828282828282828282727272727272727272929292929292929292C2C2C2C2C2C +2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D313131313131313131353535353535353535353535353535 +353535353535353535353535353535353535353535353535363636363636363636353535353535 +3535353030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F363636363636 +3636364040404040404040404646464646464646464444444444444444444444443E3E3E3E3E3E +3E3E3E3737373737373737373232323232323232322F2F2F2F2F2F2F2F2F2F2F2F2C2C2C2C2C2C +2C2C2C2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C303030303030303030 +303030303030303030303030303030303030303030323232323232323232353535353535353535 +393939393939393939393939393939393939393939373737373737373737363636363636363636 +3535353535353535353535353535353535353535353A3A3A3A3A3A3A3A3A404040404040404040 +4545454545454545454B4B4B4B4B4B4B4B4B4B4B4B545454545454545454737373737373737373 +C7C7C7C7C7C7C7C7C7FAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE5E5E5E5E5E5E5E5E5969696969696 +9696965656565656565656565656564444444444444444444040404040404040403B3B3B3B3B3B +3B3B3B3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A363636363636363636363636343434343434343434313131313131 +3131313030303030303030303232323232323232323131313131313131313131312D2D2D2D2D2D +2D2D2D292929292929292929282828282828282828272727272727272727282828282828282828 +2828282C2C2C2C2C2C2C2C2C303030303030303030323232323232323232323232323232323232 +3232323030303030303030303131313131313131313030303030303030302C2C2C2C2C2C2C2C2C +2B2B2B2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D323232323232323232393939393939393939 +3E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3B3B3B373737373737373737363636363636363636 +3434343434343434343030303030303030303030302B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F +2F2F2F2F2F2F2F2F2F313131313131313131313131313131313131353535353535353535353535 +3737373737373737373B3B3B3B3B3B3B3B3B363636363636363636313131313131313131313131 +3232323232323232323636363636363636363C3C3C3C3C3C3C3C3C4545454545454545454D4D4D +4D4D4D4D4D4D4D4D4D5252525252525252525D5D5D5D5D5D5D5D5D939393939393939393E7E7E7 +E7E7E7E7E7E7FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9BFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEE5E5E5E5E5E5E5E5E5969696969696969696565656565656565656 +5656564444444444444444444040404040404040403B3B3B3B3B3B3B3B3B393939393939393939 +3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A +363636363636363636363636343434343434343434313131313131313131303030303030303030 +3232323232323232323131313131313131313131312D2D2D2D2D2D2D2D2D292929292929292929 +2828282828282828282727272727272727272828282828282828282828282C2C2C2C2C2C2C2C2C +303030303030303030323232323232323232323232323232323232323232303030303030303030 +3131313131313131313030303030303030302C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B +2D2D2D2D2D2D2D2D2D3232323232323232323939393939393939393E3E3E3E3E3E3E3E3E3B3B3B +3B3B3B3B3B3B3B3B3B373737373737373737363636363636363636343434343434343434303030 +3030303030303030302B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2B2B2B +2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131 +3131313131313131313131313131313535353535353535353535353737373737373737373B3B3B +3B3B3B3B3B3B363636363636363636313131313131313131313131323232323232323232363636 +3636363636363C3C3C3C3C3C3C3C3C4545454545454545454D4D4D4D4D4D4D4D4D4D4D4D525252 +5252525252525D5D5D5D5D5D5D5D5D939393939393939393E7E7E7E7E7E7E7E7E7FEFEFEFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BFBFBFBFBFBF +BFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +E5E5E5E5E5E5E5E5E5969696969696969696565656565656565656565656444444444444444444 +4040404040404040403B3B3B3B3B3B3B3B3B3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A363636363636363636363636 +343434343434343434313131313131313131303030303030303030323232323232323232313131 +3131313131313131312D2D2D2D2D2D2D2D2D292929292929292929282828282828282828272727 +2727272727272828282828282828282828282C2C2C2C2C2C2C2C2C303030303030303030323232 +323232323232323232323232323232323232303030303030303030313131313131313131303030 +3030303030302C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D323232 +3232323232323939393939393939393E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3B3B3B373737 +3737373737373636363636363636363434343434343434343030303030303030303030302B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D +2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131313131313131 +3131313535353535353535353535353737373737373737373B3B3B3B3B3B3B3B3B363636363636 +3636363131313131313131313131313232323232323232323636363636363636363C3C3C3C3C3C +3C3C3C4545454545454545454D4D4D4D4D4D4D4D4D4D4D4D5252525252525252525D5D5D5D5D5D +5D5D5D939393939393939393E7E7E7E7E7E7E7E7E7FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAC4C4C4C4C4C4C4C4C46F6F6F +6F6F6F6F6F6F4949494949494949494949494444444444444444444040404040404040403C3C3C +3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C393939393939393939353535 +3535353535353434343434343434343131313131313131313131313030303030303030302D2D2D +2D2D2D2D2D2D303030303030303030323232323232323232323232323232323232323232313131 +3131313131313131313131313131312C2C2C2C2C2C2C2C2C282828282828282828292929292929 +2929292929292D2D2D2D2D2D2D2D2D313131313131313131363636363636363636363636363636 +3636363636363232323232323232323131313131313131312F2F2F2F2F2F2F2F2F2F2F2F2F2F2F +2F2F2F3232323232323232323232323A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E +3E3E3E3C3C3C3C3C3C3C3C3C393939393939393939393939353535353535353535313131313131 +3131313030303030303030303030303030303030303030302F2F2F2F2F2F2F2F2F2C2C2C2C2C2C +2C2C2C2828282828282828282929292929292929292C2C2C2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D +2D2D2D2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F313131313131313131 +3131313535353535353535353A3A3A3A3A3A3A3A3A373737373737373737323232323232323232 +323232313131313131313131343434343434343434373737373737373737404040404040404040 +4949494949494949494949495151515151515151515959595959595959596E6E6E6E6E6E6E6E6E +BDBDBDBDBDBDBDBDBDF8F8F8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9C9C9C9C9C9C9C9C9C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFAFAFAFAFAFAFAFAFAC4C4C4C4C4C4C4C4C46F6F6F6F6F6F6F6F6F494949494949 +4949494949494444444444444444444040404040404040403C3C3C3C3C3C3C3C3C3C3C3C3C3C3C +3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C393939393939393939353535353535353535343434343434 +3434343131313131313131313131313030303030303030302D2D2D2D2D2D2D2D2D303030303030 +303030323232323232323232323232323232323232323232313131313131313131313131313131 +3131312C2C2C2C2C2C2C2C2C2828282828282828282929292929292929292929292D2D2D2D2D2D +2D2D2D313131313131313131363636363636363636363636363636363636363636323232323232 +3232323131313131313131312F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F323232323232323232 +3232323A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C +393939393939393939393939353535353535353535313131313131313131303030303030303030 +3030303030303030303030302F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C282828282828282828 +2929292929292929292C2C2C2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F +2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F313131313131313131313131353535353535353535 +3A3A3A3A3A3A3A3A3A373737373737373737323232323232323232323232313131313131313131 +343434343434343434373737373737373737404040404040404040494949494949494949494949 +5151515151515151515959595959595959596E6E6E6E6E6E6E6E6EBDBDBDBDBDBDBDBDBDF8F8F8 +F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C9C9C9 +C9C9C9C9C9C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEEDEDEDEDEDED +EDEDED9D9D9D9D9D9D9D9D9D575757575757575757474747474747474747474747454545454545 +4545453F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C393939393939393939373737373737373737 +3737373535353535353535353232323232323232323131313131313131312D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F303030303030303030323232323232323232 +323232323232323232323232343434343434343434343434343434343434303030303030303030 +2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F303030303030303030313131313131313131 +353535353535353535393939393939393939393939353535353535353535313131313131313131 +2F2F2F2F2F2F2F2F2F3030303030303030303535353535353535353535353E3E3E3E3E3E3E3E3E +4141414141414141414040404040404040403C3C3C3C3C3C3C3C3C373737373737373737373737 +3535353535353535353434343434343434343030303030303030302D2D2D2D2D2D2D2D2D2D2D2D +2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B282828282828282828272727272727272727292929 +2929292929292929292B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D303030303030303030303030353535353535353535393939393939393939393939 +393939393939343434343434343434343434323232323232323232353535353535353535373737 +3737373737373B3B3B3B3B3B3B3B3B4242424242424242424242424D4D4D4D4D4D4D4D4D555555 +555555555555616161616161616161939393939393939393E5E5E5E5E5E5E5E5E5E5E5E5FEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8B9B9B9B9B9B9B9B9B9FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEEDEDEDEDEDEDEDEDED9D9D9D9D9D9D9D9D9D +5757575757575757574747474747474747474747474545454545454545453F3F3F3F3F3F3F3F3F +3C3C3C3C3C3C3C3C3C393939393939393939373737373737373737373737353535353535353535 +3232323232323232323131313131313131312D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2F2F2F2F2F2F2F2F2F303030303030303030323232323232323232323232323232323232323232 +3434343434343434343434343434343434343030303030303030302D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F2F2F2F303030303030303030313131313131313131353535353535353535393939 +3939393939393939393535353535353535353131313131313131312F2F2F2F2F2F2F2F2F303030 +3030303030303535353535353535353535353E3E3E3E3E3E3E3E3E414141414141414141404040 +4040404040403C3C3C3C3C3C3C3C3C373737373737373737373737353535353535353535343434 +3434343434343030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2B2B2B +2B2B2B2B2B2B2828282828282828282727272727272727272929292929292929292929292B2B2B +2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D303030303030 +303030303030353535353535353535393939393939393939393939393939393939343434343434 +3434343434343232323232323232323535353535353535353737373737373737373B3B3B3B3B3B +3B3B3B4242424242424242424242424D4D4D4D4D4D4D4D4D555555555555555555616161616161 +616161939393939393939393E5E5E5E5E5E5E5E5E5E5E5E5FEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF8F8F8F8F8F8F8F8F8B9B9B9B9B9B9B9B9B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEEDEDEDEDEDEDEDEDED9D9D9D9D9D9D9D9D9D575757575757575757474747 +4747474747474747474545454545454545453F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C393939 +393939393939373737373737373737373737353535353535353535323232323232323232313131 +3131313131312D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F303030 +303030303030323232323232323232323232323232323232323232343434343434343434343434 +3434343434343030303030303030302D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F303030 +303030303030313131313131313131353535353535353535393939393939393939393939353535 +3535353535353131313131313131312F2F2F2F2F2F2F2F2F303030303030303030353535353535 +3535353535353E3E3E3E3E3E3E3E3E4141414141414141414040404040404040403C3C3C3C3C3C +3C3C3C373737373737373737373737353535353535353535343434343434343434303030303030 +3030302D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B282828282828 +2828282727272727272727272929292929292929292929292B2B2B2B2B2B2B2B2B2F2F2F2F2F2F +2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D303030303030303030303030353535353535 +353535393939393939393939393939393939393939343434343434343434343434323232323232 +3232323535353535353535353737373737373737373B3B3B3B3B3B3B3B3B424242424242424242 +4242424D4D4D4D4D4D4D4D4D555555555555555555616161616161616161939393939393939393 +E5E5E5E5E5E5E5E5E5E5E5E5FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8 +B9B9B9B9B9B9B9B9B9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFACACACA +CACACACACACA7575757575757575754C4C4C4C4C4C4C4C4C464646464646464646464646404040 +4040404040403939393939393939393535353535353535353030303030303030302D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F3030303030303030302F2F2F2F2F2F +2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131343434343434343434353535353535 +353535323232323232323232323232323232323232323232313131313131313131303030303030 +3030303030303030303030303030303030303030303030302D2D2D2D2D2D2D2D2D2B2B2B2B2B2B +2B2B2B2D2D2D2D2D2D2D2D2D323232323232323232323232323232323232323232303030303030 +3030302F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F353535353535 +3535353A3A3A3A3A3A3A3A3A373737373737373737343434343434343434303030303030303030 +3030302F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B292929292929292929272727272727272727252525252525252525 +2727272727272727272727272B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F +2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D323232323232323232373737373737373737 +3A3A3A3A3A3A3A3A3A373737373737373737373737323232323232323232323232323232323232 +3535353535353535353939393939393939393E3E3E3E3E3E3E3E3E3E3E3E474747474747474747 +4C4C4C4C4C4C4C4C4C585858585858585858737373737373737373C3C3C3C3C3C3C3C3C3C3C3C3 +F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFACACACACACACACACACA757575757575 +7575754C4C4C4C4C4C4C4C4C464646464646464646464646404040404040404040393939393939 +3939393535353535353535353030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2F2F2F2F2F2F2F2F2F3030303030303030302F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F +2F2F2F313131313131313131343434343434343434353535353535353535323232323232323232 +323232323232323232323232313131313131313131303030303030303030303030303030303030 +3030303030303030303030302D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D +3232323232323232323232323232323232323232323030303030303030302F2F2F2F2F2F2F2F2F +2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F3535353535353535353A3A3A3A3A3A3A3A3A +3737373737373737373434343434343434343030303030303030303030302F2F2F2F2F2F2F2F2F +2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +292929292929292929272727272727272727252525252525252525272727272727272727272727 +2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D +2D2D2D2D2D2D2D2D2D3232323232323232323737373737373737373A3A3A3A3A3A3A3A3A373737 +373737373737373737323232323232323232323232323232323232353535353535353535393939 +3939393939393E3E3E3E3E3E3E3E3E3E3E3E4747474747474747474C4C4C4C4C4C4C4C4C585858 +585858585858737373737373737373C3C3C3C3C3C3C3C3C3C3C3C3F9F9F9F9F9F9F9F9F9FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFAFAFAFAFAFAFAFAFACACACACACACACACACA7575757575757575754C4C4C4C4C4C4C4C4C +464646464646464646464646404040404040404040393939393939393939353535353535353535 +3030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F +3030303030303030302F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131 +343434343434343434353535353535353535323232323232323232323232323232323232323232 +313131313131313131303030303030303030303030303030303030303030303030303030303030 +2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D323232323232323232323232 +3232323232323232323030303030303030302F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2F2F2F +2F2F2F2F2F2F2F2F2F3535353535353535353A3A3A3A3A3A3A3A3A373737373737373737343434 +3434343434343030303030303030303030302F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D +2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B292929292929292929272727 +2727272727272525252525252525252727272727272727272727272B2B2B2B2B2B2B2B2B2D2D2D +2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D323232 +3232323232323737373737373737373A3A3A3A3A3A3A3A3A373737373737373737373737323232 +3232323232323232323232323232323535353535353535353939393939393939393E3E3E3E3E3E +3E3E3E3E3E3E4747474747474747474C4C4C4C4C4C4C4C4C585858585858585858737373737373 +737373C3C3C3C3C3C3C3C3C3C3C3C3F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C3C3C3C3C3C3C3C3C3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEEDEDEDEDEDEDEDEDED +A3A3A3A3A3A3A3A3A35C5C5C5C5C5C5C5C5C474747474747474747414141414141414141414141 +3939393939393939393131313131313131312F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2B2B2B +2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F323232323232323232303030 +303030303030303030303030303030303030313131313131313131393939393939393939393939 +393939393939343434343434343434343434323232323232323232313131313131313131303030 +3030303030303131313131313131313232323232323232323232322F2F2F2F2F2F2F2F2F2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F303030 +3030303030303232323232323232323636363636363636363A3A3A3A3A3A3A3A3A3C3C3C3C3C3C +3C3C3C3C3C3C3737373737373737373232323232323232322D2D2D2D2D2D2D2D2D292929292929 +292929292929292929292929292929282828282828282828272727272727272727252525252525 +2525252828282828282828282828282B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F303030303030 +3030303030303030303030302F2F2F2F2F2F2F2F2F2F2F2F303030303030303030323232323232 +323232363636363636363636373737373737373737373737343434343434343434313131313131 +3131313434343434343434343939393939393939393C3C3C3C3C3C3C3C3C3C3C3C414141414141 +414141474747474747474747505050505050505050616161616161616161989898989898989898 +989898E9E9E9E9E9E9E9E9E9FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD2D2D2D2D2D2D2D2D2 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEEDEDEDEDEDEDEDEDEDA3A3A3A3A3A3A3A3A35C5C5C +5C5C5C5C5C5C474747474747474747414141414141414141414141393939393939393939313131 +3131313131312F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C +2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F323232323232323232303030303030303030303030303030 +303030303030313131313131313131393939393939393939393939393939393939343434343434 +343434343434323232323232323232313131313131313131303030303030303030313131313131 +3131313232323232323232323232322F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F +2F2F2F2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F303030303030303030323232323232 +3232323636363636363636363A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3C3C3C373737373737 +3737373232323232323232322D2D2D2D2D2D2D2D2D292929292929292929292929292929292929 +292929282828282828282828272727272727272727252525252525252525282828282828282828 +2828282B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F303030303030303030303030303030303030 +2F2F2F2F2F2F2F2F2F2F2F2F303030303030303030323232323232323232363636363636363636 +373737373737373737373737343434343434343434313131313131313131343434343434343434 +3939393939393939393C3C3C3C3C3C3C3C3C3C3C3C414141414141414141474747474747474747 +505050505050505050616161616161616161989898989898989898989898E9E9E9E9E9E9E9E9E9 +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD2D2D2D2D2D2D2D2D2FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFD +FDFDFDFDFDFDDCDCDCDCDCDCDCDCDC8282828282828282824E4E4E4E4E4E4E4E4E404040404040 +4040403737373737373737373737373030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C +2C2C2C2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C +2C2C2C303030303030303030323232323232323232323232323232323232323232323232323232 +323232323232323232323232313131313131313131323232323232323232313131313131313131 +3131312F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C282828282828282828 +2828282C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B +2929292929292929292929292B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D313131313131313131 +3A3A3A3A3A3A3A3A3A4141414141414141414141414242424242424242423C3C3C3C3C3C3C3C3C +3636363636363636363131313131313131313131312D2D2D2D2D2D2D2D2D292929292929292929 +2727272727272727272828282828282828282B2B2B2B2B2B2B2B2B2B2B2B303030303030303030 +353535353535353535373737373737373737363636363636363636363636363636363636363636 +343434343434343434313131313131313131323232323232323232343434343434343434343434 +3535353535353535353131313131313131313232323232323232323636363636363636363E3E3E +3E3E3E3E3E3E3E3E3E414141414141414141424242424242424242494949494949494949565656 +565656565656767676767676767676767676CACACACACACACACACAFAFAFAFAFAFAFAFAFAFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC +FCFCFCFCFCFCE4E4E4E4E4E4E4E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDDCDCDCDCDCDC +DCDCDC8282828282828282824E4E4E4E4E4E4E4E4E404040404040404040373737373737373737 +3737373030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C303030303030303030 +323232323232323232323232323232323232323232323232323232323232323232323232323232 +3131313131313131313232323232323232323131313131313131313131312F2F2F2F2F2F2F2F2F +2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2828282828282828282828282C2C2C2C2C2C2C2C2C +2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B292929292929292929292929 +2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D3131313131313131313A3A3A3A3A3A3A3A3A414141 +4141414141414141414242424242424242423C3C3C3C3C3C3C3C3C363636363636363636313131 +3131313131313131312D2D2D2D2D2D2D2D2D292929292929292929272727272727272727282828 +2828282828282B2B2B2B2B2B2B2B2B2B2B2B303030303030303030353535353535353535373737 +373737373737363636363636363636363636363636363636363636343434343434343434313131 +313131313131323232323232323232343434343434343434343434353535353535353535313131 +3131313131313232323232323232323636363636363636363E3E3E3E3E3E3E3E3E3E3E3E414141 +414141414141424242424242424242494949494949494949565656565656565656767676767676 +767676767676CACACACACACACACACAFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE4E4E4E4E4E4 +E4E4E4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDDCDCDCDCDCDCDCDCDC828282828282828282 +4E4E4E4E4E4E4E4E4E404040404040404040373737373737373737373737303030303030303030 +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C303030303030303030323232323232323232323232 +323232323232323232323232323232323232323232323232323232313131313131313131323232 +3232323232323131313131313131313131312F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2C2C2C +2C2C2C2C2C2C2828282828282828282828282C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2C2C2C +2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2929292929292929292929292B2B2B2B2B2B2B2B2B2D2D2D +2D2D2D2D2D2D3131313131313131313A3A3A3A3A3A3A3A3A414141414141414141414141424242 +4242424242423C3C3C3C3C3C3C3C3C3636363636363636363131313131313131313131312D2D2D +2D2D2D2D2D2D2929292929292929292727272727272727272828282828282828282B2B2B2B2B2B +2B2B2B2B2B2B303030303030303030353535353535353535373737373737373737363636363636 +363636363636363636363636363636343434343434343434313131313131313131323232323232 +323232343434343434343434343434353535353535353535313131313131313131323232323232 +3232323636363636363636363E3E3E3E3E3E3E3E3E3E3E3E414141414141414141424242424242 +424242494949494949494949565656565656565656767676767676767676767676CACACACACACA +CACACAFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE4E4E4E4E4E4E4E4E4FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF9F9F9 +F9F9F9F9F9F9F9F9F9BFBFBFBFBFBFBFBFBF686868686868686868424242424242424242373737 +3737373737373030303030303030303030302D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C2C2C2C2929292929292929292828282828282828282828282929292929292929292B2B2B +2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D292929 +2929292929292727272727272727272B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F2F2F2F303030 +3030303030303131313131313131313131313131313131313232323232323232322F2F2F2F2F2F +2F2F2F2F2F2F292929292929292929272727272727272727272727272727272727282828282828 +2828282828283131313131313131313535353535353535353434343434343434342D2D2D2D2D2D +2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D323232323232 +3232323434343434343434343737373737373737373737373C3C3C3C3C3C3C3C3C3B3B3B3B3B3B +3B3B3B3737373737373737373434343434343434343434342F2F2F2F2F2F2F2F2F2C2C2C2C2C2C +2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B303030303030303030303030373737373737 +373737404040404040404040464646464646464646464646464646464646444444444444444444 +4444443F3F3F3F3F3F3F3F3F3535353535353535353030303030303030302D2D2D2D2D2D2D2D2D +2D2D2D303030303030303030323232323232323232323232323232323232323232323232323232 +373737373737373737373737404040404040404040444444444444444444464646464646464646 +4F4F4F4F4F4F4F4F4F626262626262626262626262A0A0A0A0A0A0A0A0A0EDEDEDEDEDEDEDEDED +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FBFBFBFBFBFBFBFBFBD9D9D9D9D9D9D9D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF9F9F9F9F9F9F9F9F9F9F9F9BFBFBF +BFBFBFBFBFBF686868686868686868424242424242424242373737373737373737303030303030 +3030303030302D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C292929292929 +2929292828282828282828282828282929292929292929292B2B2B2B2B2B2B2B2B2D2D2D2D2D2D +2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D292929292929292929272727272727 +2727272B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F2F2F2F303030303030303030313131313131 +3131313131313131313131313232323232323232322F2F2F2F2F2F2F2F2F2F2F2F292929292929 +292929272727272727272727272727272727272727282828282828282828282828313131313131 +3131313535353535353535353434343434343434342D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D323232323232323232343434343434343434 +3737373737373737373737373C3C3C3C3C3C3C3C3C3B3B3B3B3B3B3B3B3B373737373737373737 +3434343434343434343434342F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B303030303030303030303030373737373737373737404040404040404040 +4646464646464646464646464646464646464444444444444444444444443F3F3F3F3F3F3F3F3F +3535353535353535353030303030303030302D2D2D2D2D2D2D2D2D2D2D2D303030303030303030 +323232323232323232323232323232323232323232323232323232373737373737373737373737 +4040404040404040404444444444444444444646464646464646464F4F4F4F4F4F4F4F4F626262 +626262626262626262A0A0A0A0A0A0A0A0A0EDEDEDEDEDEDEDEDEDFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD9D9D9 +D9D9D9D9D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEE8E9E8E8E9E8E8E9E8E8E9E8979797979797979797505050505050 +5050503B3B3B3B3B3B3B3B3B3434343434343434342F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F323232323232323232323232323232323232 +3232322F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2F2F2F2F2F2F2F2F2F3030303030303030303030302D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B +2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F3535353535353535353A3A3A3A3A3A3A3A3A +3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E393939393939393939393939393939393939393939 +3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A +3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A363636363636363636343434343434343434343434 +3131313131313131313131313131313131313030303030303030303232323232323232323C3C3C +3C3C3C3C3C3C3C3C3C4B4B4B4B4B4B4B4B4B565656565656565656616161616161616161636363 +6363636363635D5D5D5D5D5D5D5D5D5D5D5D565656565656565656454545454545454545363636 +3636363636362F2F2F2F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F353535 +3535353535353434343434343434343636363636363636363636363B3B3B3B3B3B3B3B3B414141 +4141414141414646464646464646464B4B4B4B4B4B4B4B4B545454545454545454545454777777 +777777777777CECECECECECECECECEFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C9C9C9C9C9C9C9C9C9FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +E8E9E8E8E9E8E8E9E8E8E9E89797979797979797975050505050505050503B3B3B3B3B3B3B3B3B +3434343434343434342F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2F2F2F2F2F2F2F2F2F3232323232323232323232323232323232323232322F2F2F2F2F2F2F2F2F +2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F303030 +3030303030303030302D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F +2F2F2F2F2F2F2F2F2F3535353535353535353A3A3A3A3A3A3A3A3A3F3F3F3F3F3F3F3F3F3E3E3E +3E3E3E3E3E3E3939393939393939393939393939393939393939393A3A3A3A3A3A3A3A3A3A3A3A +3A3A3A3A3A3A3939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3A3A3A +3A3A3A3A3A3A363636363636363636343434343434343434343434313131313131313131313131 +3131313131313030303030303030303232323232323232323C3C3C3C3C3C3C3C3C3C3C3C4B4B4B +4B4B4B4B4B4B5656565656565656566161616161616161616363636363636363635D5D5D5D5D5D +5D5D5D5D5D5D5656565656565656564545454545454545453636363636363636362F2F2F2F2F2F +2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F353535353535353535343434343434 +3434343636363636363636363636363B3B3B3B3B3B3B3B3B414141414141414141464646464646 +4646464B4B4B4B4B4B4B4B4B545454545454545454545454777777777777777777CECECECECECE +CECECEFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C9C9C9C9C9C9C9C9C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE8E9E8E8E9E8E8E9E8E8E9E8 +9797979797979797975050505050505050503B3B3B3B3B3B3B3B3B3434343434343434342F2F2F +2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F323232 +3232323232323232323232323232323232322F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F3030303030303030303030302D2D2D +2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F353535 +3535353535353A3A3A3A3A3A3A3A3A3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E393939393939 +3939393939393939393939393939393A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A393939393939 +3939393A3A3A3A3A3A3A3A3A3A3A3A3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A363636363636 +363636343434343434343434343434313131313131313131313131313131313131303030303030 +3030303232323232323232323C3C3C3C3C3C3C3C3C3C3C3C4B4B4B4B4B4B4B4B4B565656565656 +5656566161616161616161616363636363636363635D5D5D5D5D5D5D5D5D5D5D5D565656565656 +5656564545454545454545453636363636363636362F2F2F2F2F2F2F2F2F2F2F2F2C2C2C2C2C2C +2C2C2C2F2F2F2F2F2F2F2F2F353535353535353535343434343434343434363636363636363636 +3636363B3B3B3B3B3B3B3B3B4141414141414141414646464646464646464B4B4B4B4B4B4B4B4B +545454545454545454545454777777777777777777CECECECECECECECECEFAFAFAFAFAFAFAFAFA +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C9C9C9C9C9C9C9C9C9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF8F8F8F8F8F8F8F8F8C3C3C3C3C3C3C3C3C3C3C3C36C6C6C6C6C6C6C6C6C3F3F3F +3F3F3F3F3F3F3535353535353535353131313131313131312F2F2F2F2F2F2F2F2F2F2F2F303030 +3030303030303030303030303030303131313131313131313030303030303030302C2C2C2C2C2C +2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F3232323232323232323232323232323232322D2D2D2D2D2D +2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D +2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C2F2F2F2F2F2F2F2F2F323232323232323232323232353535353535353535343434343434 +343434343434343434343434303030303030303030303030323232323232323232363636363636 +3636363E3E3E3E3E3E3E3E3E444444444444444444404040404040404040404040404040404040 +4040404141414141414141413F3F3F3F3F3F3F3F3F3B3B3B3B3B3B3B3B3B393939393939393939 +393939363636363636363636343434343434343434313131313131313131303030303030303030 +303030313131313131313131313131313131313131363636363636363636404040404040404040 +5151515151515151515151516A6A6A6A6A6A6A6A6A777777777777777777818181818181818181 +8787878787878787877C7C7C7C7C7C7C7C7C7C7C7C6E6E6E6E6E6E6E6E6E5A5A5A5A5A5A5A5A5A +4141414141414141413232323232323232323232322C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D +3434343434343434343535353535353535353636363636363636363636363A3A3A3A3A3A3A3A3A +3F3F3F3F3F3F3F3F3F4646464646464646464C4C4C4C4C4C4C4C4C505050505050505050505050 +5D5D5D5D5D5D5D5D5D9D9D9D9D9D9D9D9D9DEDEDEDEDEDEDEDEDEDFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8 +F8F8F8C3C3C3C3C3C3C3C3C3C3C3C36C6C6C6C6C6C6C6C6C3F3F3F3F3F3F3F3F3F353535353535 +3535353131313131313131312F2F2F2F2F2F2F2F2F2F2F2F303030303030303030303030303030 +3030303131313131313131313030303030303030302C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F +2F2F2F3232323232323232323232323232323232322D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F +323232323232323232323232353535353535353535343434343434343434343434343434343434 +3030303030303030303030303232323232323232323636363636363636363E3E3E3E3E3E3E3E3E +444444444444444444404040404040404040404040404040404040404040414141414141414141 +3F3F3F3F3F3F3F3F3F3B3B3B3B3B3B3B3B3B393939393939393939393939363636363636363636 +343434343434343434313131313131313131303030303030303030303030313131313131313131 +313131313131313131363636363636363636404040404040404040515151515151515151515151 +6A6A6A6A6A6A6A6A6A7777777777777777778181818181818181818787878787878787877C7C7C +7C7C7C7C7C7C7C7C7C6E6E6E6E6E6E6E6E6E5A5A5A5A5A5A5A5A5A414141414141414141323232 +3232323232323232322C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D343434343434343434353535 +3535353535353636363636363636363636363A3A3A3A3A3A3A3A3A3F3F3F3F3F3F3F3F3F464646 +4646464646464C4C4C4C4C4C4C4C4C5050505050505050505050505D5D5D5D5D5D5D5D5D9D9D9D +9D9D9D9D9D9DEDEDEDEDEDEDEDEDEDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE7E7E7E7E7E7E7E7E7969696969696969696 +9696964D4D4D4D4D4D4D4D4D353535353535353535303030303030303030313131313131313131 +313131313131313131313131313131313131313131313131313131313131313131313131313131 +3030303030303030302F2F2F2F2F2F2F2F2F2F2F2F313131313131313131323232323232323232 +3030303030303030302B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C +2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C +2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D313131313131313131313131 +353535353535353535363636363636363636343434343434343434303030303030303030303030 +2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F343434343434343434373737373737373737373737 +3737373737373737373A3A3A3A3A3A3A3A3A3E3E3E3E3E3E3E3E3E3A3A3A3A3A3A3A3A3A353535 +353535353535323232323232323232323232323232323232323232313131313131313131303030 +3030303030302F2F2F2F2F2F2F2F2F2F2F2F303030303030303030363636363636363636454545 +4545454545455959595959595959597575757575757575757575759191919191919191919D9D9D +9D9D9D9D9D9DA2A2A2A2A2A2A2A2A2A6A6A6A6A6A6A6A6A69C9C9C9C9C9C9C9C9C9C9C9C888888 +8888888888887171717171717171715252525252525252523939393939393939393939392F2F2F +2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C313131313131313131363636363636363636363636363636 +3636363636363939393939393939393C3C3C3C3C3C3C3C3C424242424242424242474747474747 +4747474F4F4F4F4F4F4F4F4F4F4F4F565656565656565656747474747474747474CFCFCFCFCFCF +CFCFCFFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFD +FDFDFDEDEDEDEDEDEDEDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEE7E7E7E7E7E7E7E7E79696969696969696969696964D4D4D4D4D4D4D4D4D +353535353535353535303030303030303030313131313131313131313131313131313131313131 +3131313131313131313131313131313131313131313131313131313030303030303030302F2F2F +2F2F2F2F2F2F2F2F2F3131313131313131313232323232323232323030303030303030302B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2C2C2C +2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D313131313131313131313131353535353535353535363636 +3636363636363434343434343434343030303030303030303030302F2F2F2F2F2F2F2F2F2F2F2F +2F2F2F2F2F2F3434343434343434343737373737373737373737373737373737373737373A3A3A +3A3A3A3A3A3A3E3E3E3E3E3E3E3E3E3A3A3A3A3A3A3A3A3A353535353535353535323232323232 +3232323232323232323232323232323131313131313131313030303030303030302F2F2F2F2F2F +2F2F2F2F2F2F303030303030303030363636363636363636454545454545454545595959595959 +5959597575757575757575757575759191919191919191919D9D9D9D9D9D9D9D9DA2A2A2A2A2A2 +A2A2A2A6A6A6A6A6A6A6A6A69C9C9C9C9C9C9C9C9C9C9C9C888888888888888888717171717171 +7171715252525252525252523939393939393939393939392F2F2F2F2F2F2F2F2F2C2C2C2C2C2C +2C2C2C313131313131313131363636363636363636363636363636363636363636393939393939 +3939393C3C3C3C3C3C3C3C3C4242424242424242424747474747474747474F4F4F4F4F4F4F4F4F +4F4F4F565656565656565656747474747474747474CFCFCFCFCFCFCFCFCFFDFDFDFDFDFDFDFDFD +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDED +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE7E7E7 +E7E7E7E7E7E79696969696969696969696964D4D4D4D4D4D4D4D4D353535353535353535303030 +303030303030313131313131313131313131313131313131313131313131313131313131313131 +3131313131313131313131313131313030303030303030302F2F2F2F2F2F2F2F2F2F2F2F313131 +3131313131313232323232323232323030303030303030302B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D +2D2D2D313131313131313131313131353535353535353535363636363636363636343434343434 +3434343030303030303030303030302F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F343434343434 +3434343737373737373737373737373737373737373737373A3A3A3A3A3A3A3A3A3E3E3E3E3E3E +3E3E3E3A3A3A3A3A3A3A3A3A353535353535353535323232323232323232323232323232323232 +3232323131313131313131313030303030303030302F2F2F2F2F2F2F2F2F2F2F2F303030303030 +303030363636363636363636454545454545454545595959595959595959757575757575757575 +7575759191919191919191919D9D9D9D9D9D9D9D9DA2A2A2A2A2A2A2A2A2A6A6A6A6A6A6A6A6A6 +9C9C9C9C9C9C9C9C9C9C9C9C888888888888888888717171717171717171525252525252525252 +3939393939393939393939392F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C313131313131313131 +3636363636363636363636363636363636363636363939393939393939393C3C3C3C3C3C3C3C3C +4242424242424242424747474747474747474F4F4F4F4F4F4F4F4F4F4F4F565656565656565656 +747474747474747474CFCFCFCFCFCFCFCFCFFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBCBCBCBCBCBCBCBCBCB717171717171 +7171717171713E3E3E3E3E3E3E3E3E313131313131313131303030303030303030303030303030 +3030303131313131313131313131313131313131313131313030303030303030302D2D2D2D2D2D +2D2D2D2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131313131313131 +3131313030303030303030302F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C +2C2C2C2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B292929292929 +2929292B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F313131313131313131 +3131313030303030303030302D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B292929292929292929 +2929292929292929292929292929292929292929292C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +303030303030303030303030323232323232323232323232323232323232343434343434343434 +343434343434343434353535353535353535353535343434343434343434323232323232323232 +313131313131313131343434343434343434343434373737373737373737474747474747474747 +5E5E5E5E5E5E5E5E5E797979797979797979959595959595959595959595B4B4B4B4B4B4B4B4B4 +BABABABABABABABABAB9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B0B0B0B0B0B0B0B0B0B0B0B0 +A1A1A1A1A1A1A1A1A1878787878787878787676767676767676767464646464646464646464646 +3131313131313131312C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F363636363636363636393939 +3939393939393939393939393939393939393B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F424242 +4242424242424848484848484848484848484E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5EA9A9A9 +A9A9A9A9A9A9F4F4F4F4F4F4F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +FBFBFBFBFBFBDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFBFBFBFBFBFBFBFBFBCBCBCBCBCBCBCBCBCB7171717171717171717171713E3E3E3E3E3E +3E3E3E313131313131313131303030303030303030303030303030303030313131313131313131 +3131313131313131313131313030303030303030302D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C +2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131313131313131313131303030303030303030 +2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D +2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2929292929292929292B2B2B2B2B2B2B2B2B +2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F313131313131313131313131303030303030303030 +2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B292929292929292929292929292929292929292929 +2929292929292929292C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C303030303030303030303030 +323232323232323232323232323232323232343434343434343434343434343434343434353535 +353535353535353535343434343434343434323232323232323232313131313131313131343434 +3434343434343434343737373737373737374747474747474747475E5E5E5E5E5E5E5E5E797979 +797979797979959595959595959595959595B4B4B4B4B4B4B4B4B4BABABABABABABABABAB9B9B9 +B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B0B0B0B0B0B0B0B0B0B0B0B0A1A1A1A1A1A1A1A1A1878787 +8787878787876767676767676767674646464646464646464646463131313131313131312C2C2C +2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F363636363636363636393939393939393939393939393939 +3939393939393B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F424242424242424242484848484848 +4848484848484E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5EA9A9A9A9A9A9A9A9A9F4F4F4F4F4F4 +F4F4F4F4F4F4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDFDFDFDFDFDF +DFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFB +CBCBCBCBCBCBCBCBCB7171717171717171717171713E3E3E3E3E3E3E3E3E313131313131313131 +303030303030303030303030303030303030313131313131313131313131313131313131313131 +3030303030303030302D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F +3131313131313131313131313131313131313030303030303030302F2F2F2F2F2F2F2F2F2F2F2F +2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2B2B2B +2B2B2B2B2B2B2B2B2B2929292929292929292B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F +2F2F2F2F2F2F3131313131313131313131313030303030303030302D2D2D2D2D2D2D2D2D2B2B2B +2B2B2B2B2B2B2929292929292929292929292929292929292929292929292929292929292C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C303030303030303030303030323232323232323232323232 +323232323232343434343434343434343434343434343434353535353535353535353535343434 +343434343434323232323232323232313131313131313131343434343434343434343434373737 +3737373737374747474747474747475E5E5E5E5E5E5E5E5E797979797979797979959595959595 +959595959595B4B4B4B4B4B4B4B4B4BABABABABABABABABAB9B9B9B9B9B9B9B9B9B8B8B8B8B8B8 +B8B8B8B0B0B0B0B0B0B0B0B0B0B0B0A1A1A1A1A1A1A1A1A1878787878787878787676767676767 +6767674646464646464646464646463131313131313131312C2C2C2C2C2C2C2C2C2F2F2F2F2F2F +2F2F2F3636363636363636363939393939393939393939393939393939393939393B3B3B3B3B3B +3B3B3B3F3F3F3F3F3F3F3F3F4242424242424242424848484848484848484848484E4E4E4E4E4E +4E4E4E5E5E5E5E5E5E5E5E5EA9A9A9A9A9A9A9A9A9F4F4F4F4F4F4F4F4F4F4F4F4FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF4F4F4F4F4F4F4F4F4A8A8A8A8A8A8A8A8A8555555 +5555555555555555553636363636363636363131313131313131313030303030303030302D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D292929 +2929292929292828282828282828282B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2D2D2D +2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F3232323232323232323232322F2F2F2F2F2F2F2F2F2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C292929 +292929292929282828282828282828292929292929292929303030303030303030323232323232 +3232323232323131313131313131312C2C2C2C2C2C2C2C2C272727272727272727272727272727 +2727272727272828282828282828282929292929292929292C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F323232323232323232343434343434343434343434343434 +3434343737373737373737373C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3A3A3A3A3A3A +3A3A3A3939393939393939393B3B3B3B3B3B3B3B3B3B3B3B464646464646464646616161616161 +6161618080808080808080809B9B9B9B9B9B9B9B9BB0B0B0B0B0B0B0B0B0B0B0B0CACACACACACA +CACACACFCFCFCFCFCFCFCFCFCBCBCBCBCBCBCBCBCBC3C3C3C3C3C3C3C3C3BABABABABABABABABA +BABABAB0B1B0B0B1B0B0B1B09E9E9E9E9E9E9E9E9E7F7F7F7F7F7F7F7F7F595959595959595959 +5959593A3A3A3A3A3A3A3A3A2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C323232323232323232 +3737373737373737373737373C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F +424242424242424242464646464646464646464646484848484848484848525252525252525252 +848484848484848484DCDCDCDCDCDCDCDCDCDCDCDCFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FAFAFAFAFAFAFAFAFAD3D3D3D3D3D3D3D3D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEF4F4F4F4F4F4F4F4F4A8A8A8A8A8A8A8A8A8555555555555555555555555363636 +3636363636363131313131313131313030303030303030302D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D292929292929292929282828282828 +2828282B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F +2F2F2F3232323232323232323232322F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C292929292929292929282828282828 +282828292929292929292929303030303030303030323232323232323232323232313131313131 +3131312C2C2C2C2C2C2C2C2C272727272727272727272727272727272727272727282828282828 +2828282929292929292929292C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F +2F2F2F323232323232323232343434343434343434343434343434343434373737373737373737 +3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3A3A3A3A3A3A3A3A3A393939393939393939 +3B3B3B3B3B3B3B3B3B3B3B3B464646464646464646616161616161616161808080808080808080 +9B9B9B9B9B9B9B9B9BB0B0B0B0B0B0B0B0B0B0B0B0CACACACACACACACACACFCFCFCFCFCFCFCFCF +CBCBCBCBCBCBCBCBCBC3C3C3C3C3C3C3C3C3BABABABABABABABABABABABAB0B1B0B0B1B0B0B1B0 +9E9E9E9E9E9E9E9E9E7F7F7F7F7F7F7F7F7F5959595959595959595959593A3A3A3A3A3A3A3A3A +2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C323232323232323232373737373737373737373737 +3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F424242424242424242464646 +464646464646464646484848484848484848525252525252525252848484848484848484DCDCDC +DCDCDCDCDCDCDCDCDCFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD3D3D3 +D3D3D3D3D3D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE6E6E6E6E6E6 +E6E6E6888888888888888888424242424242424242424242353535353535353535323232323232 +3232322F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B292929292929292929282828282828282828252525252525252525252525252525252525 +2525252727272727272727272828282828282828282D2D2D2D2D2D2D2D2D313131313131313131 +3131313030303030303030302B2B2B2B2B2B2B2B2B2828282828282828282C2C2C2C2C2C2C2C2C +2D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B252525252525252525222222222222222222 +2828282828282828282D2D2D2D2D2D2D2D2D2D2D2D3030303030303030302F2F2F2F2F2F2F2F2F +2B2B2B2B2B2B2B2B2B2929292929292929292929292C2C2C2C2C2C2C2C2C303030303030303030 +303030303030303030313131313131313131353535353535353535353535393939393939393939 +3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F3F3F3F +3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F484848484848484848484848 +5D5D5D5D5D5D5D5D5D7E7E7E7E7E7E7E7E7E9F9F9F9F9F9F9F9F9FBABABABABABABABABACBCBCB +CBCBCBCBCBCBCBCBCBD5D5D5D5D5D5D5D5D5D7D7D7D7D7D7D7D7D7D3D3D3D3D3D3D3D3D3CBCBCB +CBCBCBCBCBCBC1C1C1C1C1C1C1C1C1C1C1C1B8B8B8B8B8B8B8B8B8ABABABABABABABABAB949494 +9494949494947474747474747474747474744E4E4E4E4E4E4E4E4E3232323232323232322C2C2C +2C2C2C2C2C2C3030303030303030303434343434343434343434343B3B3B3B3B3B3B3B3B3F3F3F +3F3F3F3F3F3F404040404040404040464646464646464646474747474747474747474747474747 +4747474747474F4F4F4F4F4F4F4F4F727272727272727272B8B8B8B8B8B8B8B8B8B8B8B8F0F0F0 +F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDEAEAEAEAEAEAEAEAEAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE6E6E6E6E6E6E6E6E6888888888888888888 +4242424242424242424242423535353535353535353232323232323232322F2F2F2F2F2F2F2F2F +2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B292929292929292929 +282828282828282828252525252525252525252525252525252525252525272727272727272727 +2828282828282828282D2D2D2D2D2D2D2D2D313131313131313131313131303030303030303030 +2B2B2B2B2B2B2B2B2B2828282828282828282C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D +2B2B2B2B2B2B2B2B2B2525252525252525252222222222222222222828282828282828282D2D2D +2D2D2D2D2D2D2D2D2D3030303030303030302F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B292929 +2929292929292929292C2C2C2C2C2C2C2C2C303030303030303030303030303030303030313131 +3131313131313535353535353535353535353939393939393939393E3E3E3E3E3E3E3E3E3F3F3F +3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3E3E3E +3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F4848484848484848484848485D5D5D5D5D5D5D5D5D7E7E7E +7E7E7E7E7E7E9F9F9F9F9F9F9F9F9FBABABABABABABABABACBCBCBCBCBCBCBCBCBCBCBCBD5D5D5 +D5D5D5D5D5D5D7D7D7D7D7D7D7D7D7D3D3D3D3D3D3D3D3D3CBCBCBCBCBCBCBCBCBC1C1C1C1C1C1 +C1C1C1C1C1C1B8B8B8B8B8B8B8B8B8ABABABABABABABABAB949494949494949494747474747474 +7474747474744E4E4E4E4E4E4E4E4E3232323232323232322C2C2C2C2C2C2C2C2C303030303030 +3030303434343434343434343434343B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F404040404040 +4040404646464646464646464747474747474747474747474747474747474747474F4F4F4F4F4F +4F4F4F727272727272727272B8B8B8B8B8B8B8B8B8B8B8B8F0F0F0F0F0F0F0F0F0FEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFDFDFDFDFDFDFDFDFDEAEAEAEAEAEAEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEE6E6E6E6E6E6E6E6E6888888888888888888424242424242424242424242 +3535353535353535353232323232323232322F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B292929292929292929282828282828282828252525 +2525252525252525252525252525252525252727272727272727272828282828282828282D2D2D +2D2D2D2D2D2D3131313131313131313131313030303030303030302B2B2B2B2B2B2B2B2B282828 +2828282828282C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B252525 +2525252525252222222222222222222828282828282828282D2D2D2D2D2D2D2D2D2D2D2D303030 +3030303030302F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2929292929292929292929292C2C2C +2C2C2C2C2C2C303030303030303030303030303030303030313131313131313131353535353535 +3535353535353939393939393939393E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E +3E3E3E3F3F3F3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F +3F3F3F4848484848484848484848485D5D5D5D5D5D5D5D5D7E7E7E7E7E7E7E7E7E9F9F9F9F9F9F +9F9F9FBABABABABABABABABACBCBCBCBCBCBCBCBCBCBCBCBD5D5D5D5D5D5D5D5D5D7D7D7D7D7D7 +D7D7D7D3D3D3D3D3D3D3D3D3CBCBCBCBCBCBCBCBCBC1C1C1C1C1C1C1C1C1C1C1C1B8B8B8B8B8B8 +B8B8B8ABABABABABABABABAB9494949494949494947474747474747474747474744E4E4E4E4E4E +4E4E4E3232323232323232322C2C2C2C2C2C2C2C2C303030303030303030343434343434343434 +3434343B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F404040404040404040464646464646464646 +4747474747474747474747474747474747474747474F4F4F4F4F4F4F4F4F727272727272727272 +B8B8B8B8B8B8B8B8B8B8B8B8F0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFD +EAEAEAEAEAEAEAEAEAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCCECECE +CECECECECECE6C6C6C6C6C6C6C6C6C3C3C3C3C3C3C3C3C3C3C3C3C353535353535353535303030 +303030303030292929292929292929282828282828282828282828282828282828282828272727 +272727272727282828282828282828272727272727272727252525252525252525252525252525 +2525252525252727272727272727272828282828282828282C2C2C2C2C2C2C2C2C2F2F2F2F2F2F +2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B292929292929292929292929292929 +292929292929292929292929292929272727272727272727242424242424242424212121212121 +2121212222222222222222222525252525252525252525252828282828282828282B2B2B2B2B2B +2B2B2B2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F +2F2F2F303030303030303030313131313131313131353535353535353535353535373737373737 +3737373F3F3F3F3F3F3F3F3F454545454545454545464646464646464646424242424242424242 +4242424242424242424242424444444444444444444C4C4C4C4C4C4C4C4C616161616161616161 +6161617C7C7C7C7C7C7C7C7C9F9F9F9F9F9F9F9F9FC1C1C1C1C1C1C1C1C1D3D3D3D3D3D3D3D3D3 +DADADADADADADADADADADADAD8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D5D5D5D5D5D5D5D5D5 +D0D0D0D0D0D0D0D0D0C6C6C6C6C6C6C6C6C6C6C6C6BABABABABABABABABAAFAFAFAFAFAFAFAFAF +A2A2A2A2A2A2A2A2A29191919191919191919191916C6C6C6C6C6C6C6C6C404040404040404040 +303030303030303030303030303030303030313131313131313131313131353535353535353535 +3B3B3B3B3B3B3B3B3B4141414141414141414747474747474747474B4B4B4B4B4B4B4B4B4B4B4B +4848484848484848484F4F4F4F4F4F4F4F4F737373737373737373AFAFAFAFAFAFAFAFAFAFAFAF +E6E6E6E6E6E6E6E6E6FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDEDEDEDEDEDEDEDEDEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCCECECECECECECECECE6C6C6C6C6C6C +6C6C6C3C3C3C3C3C3C3C3C3C3C3C3C353535353535353535303030303030303030292929292929 +292929282828282828282828282828282828282828282828272727272727272727282828282828 +282828272727272727272727252525252525252525252525252525252525252525272727272727 +2727272828282828282828282C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F +2F2F2F2B2B2B2B2B2B2B2B2B292929292929292929292929292929292929292929292929292929 +292929272727272727272727242424242424242424212121212121212121222222222222222222 +2525252525252525252525252828282828282828282B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C +2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F303030303030303030 +3131313131313131313535353535353535353535353737373737373737373F3F3F3F3F3F3F3F3F +454545454545454545464646464646464646424242424242424242424242424242424242424242 +4444444444444444444C4C4C4C4C4C4C4C4C6161616161616161616161617C7C7C7C7C7C7C7C7C +9F9F9F9F9F9F9F9F9FC1C1C1C1C1C1C1C1C1D3D3D3D3D3D3D3D3D3DADADADADADADADADADADADA +D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D5D5D5D5D5D5D5D5D5D0D0D0D0D0D0D0D0D0C6C6C6 +C6C6C6C6C6C6C6C6C6BABABABABABABABABAAFAFAFAFAFAFAFAFAFA2A2A2A2A2A2A2A2A2919191 +9191919191919191916C6C6C6C6C6C6C6C6C404040404040404040303030303030303030303030 +3030303030303131313131313131313131313535353535353535353B3B3B3B3B3B3B3B3B414141 +4141414141414747474747474747474B4B4B4B4B4B4B4B4B4B4B4B4848484848484848484F4F4F +4F4F4F4F4F4F737373737373737373AFAFAFAFAFAFAFAFAFAFAFAFE6E6E6E6E6E6E6E6E6FDFDFD +FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDEDEDEDEDEDEDEDEDEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF2F2F2F2F2F2F2F2F2ADADADADADADADADAD575757575757575757393939393939393939 +3939393434343434343434342D2D2D2D2D2D2D2D2D282828282828282828272727272727272727 +242424242424242424242424252525252525252525252525252525252525252525252525252525 +272727272727272727282828282828282828282828282828282828282828282828282828282828 +2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C +2B2B2B2B2B2B2B2B2B282828282828282828252525252525252525252525242424242424242424 +242424242424242424242424242424242424242424242424242424272727272727272727272727 +252525252525252525252525252525252525282828282828282828272727272727272727272727 +2525252525252525252828282828282828282929292929292929292C2C2C2C2C2C2C2C2C2D2D2D +2D2D2D2D2D2D2D2D2D3030303030303030303434343434343434343C3C3C3C3C3C3C3C3C454545 +454545454545494949494949494949494949525252525252525252626262626262626262777777 +777777777777919191919191919191919191ADADADADADADADADADCBCBCBCBCBCBCBCBCBDFDFDF +DFDFDFDFDFDFE2E2E2E2E2E2E2E2E2DFE0DFDFE0DFDFE0DFDFE0DFDBDBDBDBDBDBDBDBDBD9D9D9 +D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4CBCBCBCBCBCBCBCBCBCBCBCBBEBEBE +BEBEBEBEBEBEB3B3B3B3B3B3B3B3B3ACACACACACACACACACA4A4A4A4A4A4A4A4A4A4A4A48B8B8B +8B8B8B8B8B8B595959595959595959363636363636363636303030303030303030313131313131 +3131313131313030303030303030303636363636363636363F3F3F3F3F3F3F3F3F454545454545 +4545454848484848484848484848484545454545454545454D4D4D4D4D4D4D4D4D6E6E6E6E6E6E +6E6E6EA7A7A7A7A7A7A7A7A7A7A7A7E3E3E3E3E3E3E3E3E3F9F9F9F9F9F9F9F9F9FEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C5C5C5C5C5C5C5C5C5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2F2F2F2F2F2F2 +ADADADADADADADADAD575757575757575757393939393939393939393939343434343434343434 +2D2D2D2D2D2D2D2D2D282828282828282828272727272727272727242424242424242424242424 +252525252525252525252525252525252525252525252525252525272727272727272727282828 +2828282828282828282828282828282828282828282828282828282C2C2C2C2C2C2C2C2C2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B282828 +282828282828252525252525252525252525242424242424242424242424242424242424242424 +242424242424242424242424242424272727272727272727272727252525252525252525252525 +252525252525282828282828282828272727272727272727272727252525252525252525282828 +2828282828282929292929292929292C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D303030 +3030303030303434343434343434343C3C3C3C3C3C3C3C3C454545454545454545494949494949 +494949494949525252525252525252626262626262626262777777777777777777919191919191 +919191919191ADADADADADADADADADCBCBCBCBCBCBCBCBCBDFDFDFDFDFDFDFDFDFE2E2E2E2E2E2 +E2E2E2DFE0DFDFE0DFDFE0DFDFE0DFDBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9D7D7D7D7D7D7 +D7D7D7D4D4D4D4D4D4D4D4D4CBCBCBCBCBCBCBCBCBCBCBCBBEBEBEBEBEBEBEBEBEB3B3B3B3B3B3 +B3B3B3ACACACACACACACACACA4A4A4A4A4A4A4A4A4A4A4A48B8B8B8B8B8B8B8B8B595959595959 +595959363636363636363636303030303030303030313131313131313131313131303030303030 +3030303636363636363636363F3F3F3F3F3F3F3F3F454545454545454545484848484848484848 +4848484545454545454545454D4D4D4D4D4D4D4D4D6E6E6E6E6E6E6E6E6EA7A7A7A7A7A7A7A7A7 +A7A7A7E3E3E3E3E3E3E3E3E3F9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF2F2F2F2F2F2F2F2F2ADADADADADADADADAD575757 +5757575757573939393939393939393939393434343434343434342D2D2D2D2D2D2D2D2D282828 +282828282828272727272727272727242424242424242424242424252525252525252525252525 +252525252525252525252525252525272727272727272727282828282828282828282828282828 +2828282828282828282828282828282C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B282828282828282828252525252525 +252525252525242424242424242424242424242424242424242424242424242424242424242424 +242424272727272727272727272727252525252525252525252525252525252525282828282828 +282828272727272727272727272727252525252525252525282828282828282828292929292929 +2929292C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D303030303030303030343434343434 +3434343C3C3C3C3C3C3C3C3C454545454545454545494949494949494949494949525252525252 +525252626262626262626262777777777777777777919191919191919191919191ADADADADADAD +ADADADCBCBCBCBCBCBCBCBCBDFDFDFDFDFDFDFDFDFE2E2E2E2E2E2E2E2E2DFE0DFDFE0DFDFE0DF +DFE0DFDBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4 +CBCBCBCBCBCBCBCBCBCBCBCBBEBEBEBEBEBEBEBEBEB3B3B3B3B3B3B3B3B3ACACACACACACACACAC +A4A4A4A4A4A4A4A4A4A4A4A48B8B8B8B8B8B8B8B8B595959595959595959363636363636363636 +303030303030303030313131313131313131313131303030303030303030363636363636363636 +3F3F3F3F3F3F3F3F3F454545454545454545484848484848484848484848454545454545454545 +4D4D4D4D4D4D4D4D4D6E6E6E6E6E6E6E6E6EA7A7A7A7A7A7A7A7A7A7A7A7E3E3E3E3E3E3E3E3E3 +F9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFD +FDFDFDFDFDFDE0E0E0E0E0E0E0E0E08A8A8A8A8A8A8A8A8A484848484848484848363636363636 +3636363636363030303030303030302B2B2B2B2B2B2B2B2B282828282828282828252525252525 +252525242424242424242424242424242424242424242424242424242424242424252525252525 +252525282828282828282828282828282828282828282828272727272727272727292929292929 +2929292D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B292929292929 +292929272727272727272727252525252525252525242424242424242424242424242424242424 +242424252525252525252525252525252525252525282828282828282828292929292929292929 +2929292828282828282828282929292929292929292C2C2C2C2C2C2C2C2C292929292929292929 +2929292727272727272727272828282828282828282929292929292929292B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F313131313131313131393939393939393939 +4545454545454545455B5B5B5B5B5B5B5B5B5B5B5B787878787878787878919191919191919191 +A7A7A7A7A7A7A7A7A7BCBCBCBCBCBCBCBCBCBCBCBCD3D3D3D3D3D3D3D3D3DFE0DFDFE0DFDFE0DF +E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E0E0E0E0E0E0E0E0E0E0E0E0DEDEDEDEDEDEDEDEDE +DADADADADADADADADAD8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6CDCDCDCDCDCDCDCDCDCDCDCD +C1C1C1C1C1C1C1C1C1B8B8B8B8B8B8B8B8B8B2B2B2B2B2B2B2B2B2AEAEAEAEAEAEAEAEAEAEAEAE +9F9F9F9F9F9F9F9F9F767676767676767676424242424242424242313131313131313131323232 +3232323232323232322F2F2F2F2F2F2F2F2F303030303030303030393939393939393939404040 +4040404040404141414141414141414141414040404040404040404747474747474747475F605F +5F605F5F605F959595959595959595959595DBDBDBDBDBDBDBDBDBF4F4F4F4F4F4F4F4F4FDFDFD +FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +FBFBFBFBFBFBDADADADADADADADADAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDE0E0E0E0E0E0 +E0E0E08A8A8A8A8A8A8A8A8A484848484848484848363636363636363636363636303030303030 +3030302B2B2B2B2B2B2B2B2B282828282828282828252525252525252525242424242424242424 +242424242424242424242424242424242424242424252525252525252525282828282828282828 +2828282828282828282828282727272727272727272929292929292929292D2D2D2D2D2D2D2D2D +2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B292929292929292929272727272727272727 +252525252525252525242424242424242424242424242424242424242424252525252525252525 +252525252525252525282828282828282828292929292929292929292929282828282828282828 +2929292929292929292C2C2C2C2C2C2C2C2C292929292929292929292929272727272727272727 +2828282828282828282929292929292929292B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2F2F2F2F2F2F2F2F2F3131313131313131313939393939393939394545454545454545455B5B5B +5B5B5B5B5B5B5B5B5B787878787878787878919191919191919191A7A7A7A7A7A7A7A7A7BCBCBC +BCBCBCBCBCBCBCBCBCD3D3D3D3D3D3D3D3D3DFE0DFDFE0DFDFE0DFE5E5E5E5E5E5E5E5E5E4E4E4 +E4E4E4E4E4E4E0E0E0E0E0E0E0E0E0E0E0E0DEDEDEDEDEDEDEDEDEDADADADADADADADADAD8D8D8 +D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6CDCDCDCDCDCDCDCDCDCDCDCDC1C1C1C1C1C1C1C1C1B8B8B8 +B8B8B8B8B8B8B2B2B2B2B2B2B2B2B2AEAEAEAEAEAEAEAEAEAEAEAE9F9F9F9F9F9F9F9F9F767676 +7676767676764242424242424242423131313131313131313232323232323232323232322F2F2F +2F2F2F2F2F2F303030303030303030393939393939393939404040404040404040414141414141 +4141414141414040404040404040404747474747474747475F605F5F605F5F605F959595959595 +959595959595DBDBDBDBDBDBDBDBDBF4F4F4F4F4F4F4F4F4FDFDFDFDFDFDFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDADADADADADA +DADADAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDFDFDFDE0E0E0E0E0E0E0E0E08A8A8A8A8A8A8A8A8A +4848484848484848483636363636363636363636363030303030303030302B2B2B2B2B2B2B2B2B +282828282828282828252525252525252525242424242424242424242424242424242424242424 +242424242424242424252525252525252525282828282828282828282828282828282828282828 +2727272727272727272929292929292929292D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C +2B2B2B2B2B2B2B2B2B292929292929292929272727272727272727252525252525252525242424 +242424242424242424242424242424242424252525252525252525252525252525252525282828 +2828282828282929292929292929292929292828282828282828282929292929292929292C2C2C +2C2C2C2C2C2C292929292929292929292929272727272727272727282828282828282828292929 +2929292929292B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F313131 +3131313131313939393939393939394545454545454545455B5B5B5B5B5B5B5B5B5B5B5B787878 +787878787878919191919191919191A7A7A7A7A7A7A7A7A7BCBCBCBCBCBCBCBCBCBCBCBCD3D3D3 +D3D3D3D3D3D3DFE0DFDFE0DFDFE0DFE5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E0E0E0E0E0E0 +E0E0E0E0E0E0DEDEDEDEDEDEDEDEDEDADADADADADADADADAD8D8D8D8D8D8D8D8D8D6D6D6D6D6D6 +D6D6D6CDCDCDCDCDCDCDCDCDCDCDCDC1C1C1C1C1C1C1C1C1B8B8B8B8B8B8B8B8B8B2B2B2B2B2B2 +B2B2B2AEAEAEAEAEAEAEAEAEAEAEAE9F9F9F9F9F9F9F9F9F767676767676767676424242424242 +4242423131313131313131313232323232323232323232322F2F2F2F2F2F2F2F2F303030303030 +303030393939393939393939404040404040404040414141414141414141414141404040404040 +4040404747474747474747475F605F5F605F5F605F959595959595959595959595DBDBDBDBDBDB +DBDBDBF4F4F4F4F4F4F4F4F4FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDADADADADADADADADAFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFA +FAFAFAFAFAFAFAFAFAC5C5C5C5C5C5C5C5C56F6F6F6F6F6F6F6F6F404040404040404040323232 +3232323232323232322F2F2F2F2F2F2F2F2F282828282828282828272727272727272727252525 +252525252525272727272727272727272727272727272727272727252525252525252525252525 +252525252525252525252525252525252525252525252525252525242424242424242424252525 +252525252525282828282828282828292929292929292929292929282828282828282828272727 +272727272727252525252525252525252525252525252525272727272727272727272727282828 +2828282828282828282828282828282929292929292929292B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B3030303030303030303434343434343434342D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D303030303030 +3030303232323232323232323232323737373737373737373E3E3E3E3E3E3E3E3E464646464646 +4646465757575757575757577B7B7B7B7B7B7B7B7B7B7B7B9C9C9C9C9C9C9C9C9CB2B2B2B2B2B2 +B2B2B2C5C5C5C5C5C5C5C5C5D8D8D8D8D8D8D8D8D8D8D8D8E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DF +DFE0DFDBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9D6D6D6D6D6D6D6D6D6CDCDCDCDCDCDCDCDCD +CDCDCDC6C6C6C6C6C6C6C6C6BFBFBFBFBFBFBFBFBFB6B6B6B6B6B6B6B6B6B1B1B1B1B1B1B1B1B1 +B1B1B1ACACACACACACACACAC9191919191919191915B5B5B5B5B5B5B5B5B373737373737373737 +353535353535353535353535313131313131313131303030303030303030353535353535353535 +3B3B3B3B3B3B3B3B3B3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E454545454545454545 +5E5E5E5E5E5E5E5E5E8B8B8B8B8B8B8B8B8B8B8B8BCACACACACACACACACAF2F2F2F2F2F2F2F2F2 +FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9CCCCCCCCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAFAFAFAC5C5C5 +C5C5C5C5C5C56F6F6F6F6F6F6F6F6F4040404040404040403232323232323232323232322F2F2F +2F2F2F2F2F2F282828282828282828272727272727272727252525252525252525272727272727 +272727272727272727272727272727252525252525252525252525252525252525252525252525 +252525252525252525252525252525242424242424242424252525252525252525282828282828 +282828292929292929292929292929282828282828282828272727272727272727252525252525 +252525252525252525252525272727272727272727272727282828282828282828282828282828 +2828282929292929292929292B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B3030303030303030303434343434343434342D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D303030303030303030323232323232323232 +3232323737373737373737373E3E3E3E3E3E3E3E3E464646464646464646575757575757575757 +7B7B7B7B7B7B7B7B7B7B7B7B9C9C9C9C9C9C9C9C9CB2B2B2B2B2B2B2B2B2C5C5C5C5C5C5C5C5C5 +D8D8D8D8D8D8D8D8D8D8D8D8E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E3E3E3E3E3E3E3E3E3 +E2E2E2E2E2E2E2E2E2DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDBDBDBDBDBDBDBDBDB +D9D9D9D9D9D9D9D9D9D6D6D6D6D6D6D6D6D6CDCDCDCDCDCDCDCDCDCDCDCDC6C6C6C6C6C6C6C6C6 +BFBFBFBFBFBFBFBFBFB6B6B6B6B6B6B6B6B6B1B1B1B1B1B1B1B1B1B1B1B1ACACACACACACACACAC +9191919191919191915B5B5B5B5B5B5B5B5B373737373737373737353535353535353535353535 +3131313131313131313030303030303030303535353535353535353B3B3B3B3B3B3B3B3B3E3E3E +3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4545454545454545455E5E5E5E5E5E5E5E5E8B8B8B +8B8B8B8B8B8B8B8B8BCACACACACACACACACAF2F2F2F2F2F2F2F2F2FDFDFDFDFDFDFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CCCCCC +CCCCCCCCCCCCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEF3F3F3F3F3F3F3F3F3F3F3F3ACACACACACACACACAC5C5C5C5C5C5C +5C5C5C3A3A3A3A3A3A3A3A3A3131313131313131313131312C2C2C2C2C2C2C2C2C282828282828 +282828272727272727272727272727272727272727272727272727272727272727272727272727 +272727282828282828282828252525252525252525222222222222222222212121212121212121 +2121212222222222222222222727272727272727272B2B2B2B2B2B2B2B2B292929292929292929 +2929292828282828282828282828282828282828282B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F313131313131313131 +3030303030303030302C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F313131313131313131 +3232323232323232323636363636363636363A3A3A3A3A3A3A3A3A3A3A3A444444444444444444 +4D4D4D4D4D4D4D4D4D575757575757575757707070707070707070979797979797979797979797 +B8B8B8B8B8B8B8B8B8CBCBCBCBCBCBCBCBCBDCDCDCDCDCDCDCDCDCE9E9E9E9E9E9E9E9E9E9E9E9 +EEEEEEEEEEEEEEEEEEEBEBEBEBEBEBEBEBEBE4E4E4E4E4E4E4E4E4E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D6D6D5 +D6D6D5D6D6D5D0D0D0D0D0D0D0D0D0D0D0D0CBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5BBBBBB +BBBBBBBBBBBBB4B4B4B4B4B4B4B4B4B4B4B4B2B2B2B2B2B2B2B2B2A3A3A3A3A3A3A3A3A3767676 +767676767676444444444444444444363636363636363636363636363636363636363636353535 +3535353535353636363636363636363B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F3F3F3F3E3E3E +3E3E3E3E3E3E464646464646464646707070707070707070A6A6A6A6A6A6A6A6A6A6A6A6D9D9D9 +D9D9D9D9D9D9F8F8F8F8F8F8F8F8F8FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFACFCFCFCFCFCFCFCFCFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +F3F3F3F3F3F3F3F3F3F3F3F3ACACACACACACACACAC5C5C5C5C5C5C5C5C5C3A3A3A3A3A3A3A3A3A +3131313131313131313131312C2C2C2C2C2C2C2C2C282828282828282828272727272727272727 +272727272727272727272727272727272727272727272727272727272727282828282828282828 +252525252525252525222222222222222222212121212121212121212121222222222222222222 +2727272727272727272B2B2B2B2B2B2B2B2B292929292929292929292929282828282828282828 +2828282828282828282B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F3131313131313131313030303030303030302C2C2C +2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F313131313131313131323232323232323232363636 +3636363636363A3A3A3A3A3A3A3A3A3A3A3A4444444444444444444D4D4D4D4D4D4D4D4D575757 +575757575757707070707070707070979797979797979797979797B8B8B8B8B8B8B8B8B8CBCBCB +CBCBCBCBCBCBDCDCDCDCDCDCDCDCDCE9E9E9E9E9E9E9E9E9E9E9E9EEEEEEEEEEEEEEEEEEEBEBEB +EBEBEBEBEBEBE4E4E4E4E4E4E4E4E4E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1DDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D6D6D5D6D6D5D6D6D5D0D0D0D0D0D0 +D0D0D0D0D0D0CBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5BBBBBBBBBBBBBBBBBBB4B4B4B4B4B4 +B4B4B4B4B4B4B2B2B2B2B2B2B2B2B2A3A3A3A3A3A3A3A3A3767676767676767676444444444444 +444444363636363636363636363636363636363636363636353535353535353535363636363636 +3636363B3B3B3B3B3B3B3B3B3F3F3F3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E464646464646 +464646707070707070707070A6A6A6A6A6A6A6A6A6A6A6A6D9D9D9D9D9D9D9D9D9F8F8F8F8F8F8 +F8F8F8FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFAFAFAFAFAFAFAFAFACFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEF3F3F3F3F3F3F3F3F3F3F3F3 +ACACACACACACACACAC5C5C5C5C5C5C5C5C5C3A3A3A3A3A3A3A3A3A313131313131313131313131 +2C2C2C2C2C2C2C2C2C282828282828282828272727272727272727272727272727272727272727 +272727272727272727272727272727272727282828282828282828252525252525252525222222 +2222222222222121212121212121212121212222222222222222222727272727272727272B2B2B +2B2B2B2B2B2B2929292929292929292929292828282828282828282828282828282828282B2B2B +2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F3131313131313131313030303030303030302C2C2C2C2C2C2C2C2C2C2C2C2F2F2F +2F2F2F2F2F2F3131313131313131313232323232323232323636363636363636363A3A3A3A3A3A +3A3A3A3A3A3A4444444444444444444D4D4D4D4D4D4D4D4D575757575757575757707070707070 +707070979797979797979797979797B8B8B8B8B8B8B8B8B8CBCBCBCBCBCBCBCBCBDCDCDCDCDCDC +DCDCDCE9E9E9E9E9E9E9E9E9E9E9E9EEEEEEEEEEEEEEEEEEEBEBEBEBEBEBEBEBEBE4E4E4E4E4E4 +E4E4E4E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DDDDDDDDDDDD +DDDDDDD9D9D9D9D9D9D9D9D9D6D6D5D6D6D5D6D6D5D0D0D0D0D0D0D0D0D0D0D0D0CBCBCBCBCBCB +CBCBCBC5C5C5C5C5C5C5C5C5BBBBBBBBBBBBBBBBBBB4B4B4B4B4B4B4B4B4B4B4B4B2B2B2B2B2B2 +B2B2B2A3A3A3A3A3A3A3A3A3767676767676767676444444444444444444363636363636363636 +3636363636363636363636363535353535353535353636363636363636363B3B3B3B3B3B3B3B3B +3F3F3F3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E464646464646464646707070707070707070 +A6A6A6A6A6A6A6A6A6A6A6A6D9D9D9D9D9D9D9D9D9F8F8F8F8F8F8F8F8F8FEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFA +CFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFDFDFDFDFDFDFDFDFDE1E1E1E1E1E1E1E1E1E1E1E18E8E8E8E8E8E8E8E8E4F4F4F +4F4F4F4F4F4F3737373737373737373030303030303030303030302B2B2B2B2B2B2B2B2B282828 +282828282828282828282828282828252525252525252525252525252525252525252525272727 +272727272727282828282828282828252525252525252525222222222222222222212121212121 +212121212121222222222222222222252525252525252525282828282828282828272727272727 +2727272727272727272727272727272929292929292929292D2D2D2D2D2D2D2D2D313131313131 +3131313232323232323232323232323232323232323232323030303030303030302D2D2D2D2D2D +2D2D2D2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F343434343434 +3434343737373737373737373939393939393939393F3F3F3F3F3F3F3F3F3F3F3F4B4B4B4B4B4B +4B4B4B5757575757575757576A6A6A6A6A6A6A6A6A8B8B8B8B8B8B8B8B8BB1B1B1B1B1B1B1B1B1 +B1B1B1CECECECECECECECECEDEDEDEDEDEDEDEDEDEE8E8E8E8E8E8E8E8E8EDEDEDEDEDEDEDEDED +EDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE9E9E9E9E9E9E9E9E9E3E3E3E3E3E3E3E3E3 +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DEDEDEDEDEDEDEDEDEDADADADADADADADADA +D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D0D0D0D0D0D0D0D0D0C8C8C8C8C8C8C8C8C8 +BEBEBEBEBEBEBEBEBEB8B8B8B8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4ABABABABABABABABAB +8A8A8A8A8A8A8A8A8A515151515151515151373737373737373737373737373737373737373737 +3939393939393939393A3A3A3A3A3A3A3A3A3F3F3F3F3F3F3F3F3F444444444444444444444444 +4040404040404040404C4C4C4C4C4C4C4C4C8E8E8E8E8E8E8E8E8ED4D4D4D4D4D4D4D4D4D4D4D4 +F7F7F7F7F7F7F7F7F7FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFACFCFCFCFCFCFCFCFCFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFD +FDFDFDE1E1E1E1E1E1E1E1E1E1E1E18E8E8E8E8E8E8E8E8E4F4F4F4F4F4F4F4F4F373737373737 +3737373030303030303030303030302B2B2B2B2B2B2B2B2B282828282828282828282828282828 +282828252525252525252525252525252525252525252525272727272727272727282828282828 +282828252525252525252525222222222222222222212121212121212121212121222222222222 +222222252525252525252525282828282828282828272727272727272727272727272727272727 +2727272929292929292929292D2D2D2D2D2D2D2D2D313131313131313131323232323232323232 +3232323232323232323232323030303030303030302D2D2D2D2D2D2D2D2D2C2C2C2C2C2C2C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C2C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F343434343434343434373737373737373737 +3939393939393939393F3F3F3F3F3F3F3F3F3F3F3F4B4B4B4B4B4B4B4B4B575757575757575757 +6A6A6A6A6A6A6A6A6A8B8B8B8B8B8B8B8B8BB1B1B1B1B1B1B1B1B1B1B1B1CECECECECECECECECE +DEDEDEDEDEDEDEDEDEE8E8E8E8E8E8E8E8E8EDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEEEEEEE9E9E9E9E9E9E9E9E9E3E3E3E3E3E3E3E3E3E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1E1E1E1DEDEDEDEDEDEDEDEDEDADADADADADADADADAD6D6D6D6D6D6D6D6D6D5D5D5 +D5D5D5D5D5D5D5D5D5D0D0D0D0D0D0D0D0D0C8C8C8C8C8C8C8C8C8BEBEBEBEBEBEBEBEBEB8B8B8 +B8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4ABABABABABABABABAB8A8A8A8A8A8A8A8A8A515151 +5151515151513737373737373737373737373737373737373737373939393939393939393A3A3A +3A3A3A3A3A3A3F3F3F3F3F3F3F3F3F4444444444444444444444444040404040404040404C4C4C +4C4C4C4C4C4C8E8E8E8E8E8E8E8E8ED4D4D4D4D4D4D4D4D4D4D4D4F7F7F7F7F7F7F7F7F7FEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFAFAFAFAFAFAFAFAFACFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBCBCBCBCBCBCBCBCBCB +CBCBCB747474747474747474464646464646464646363636363636363636303030303030303030 +3030302B2B2B2B2B2B2B2B2B282828282828282828272727272727272727242424242424242424 +242424242424242424242424272727272727272727282828282828282828272727272727272727 +242424242424242424222222222222222222222222222222222222222222242424242424242424 +2525252525252525252525252525252525252525252828282828282828282B2B2B2B2B2B2B2B2B +2D2D2D2D2D2D2D2D2D303030303030303030313131313131313131313131303030303030303030 +3030303030303030302C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2929292929292929292828282828282828282C2C2C2C2C2C2C2C2C2C2C2C +3030303030303030303434343434343434343737373737373737373C3C3C3C3C3C3C3C3C464646 +4646464646464646465757575757575757576D6D6D6D6D6D6D6D6D8A8A8A8A8A8A8A8A8AADADAD +ADADADADADADCBCBCBCBCBCBCBCBCBCBCBCBDDDDDDDDDDDDDDDDDDE5E5E5E5E5E5E5E5E5E8E8E8 +E8E8E8E8E8E8EAEAEAEAEAEAEAEAEAEAEAEAECECECECECECECECECEDEDEDEDEDEDEDEDEDECECEC +ECECECECECECE5E5E5E5E5E5E5E5E5E3E3E3E3E3E3E3E3E3E3E3E3E1E1E1E1E1E1E1E1E1DFDFDF +DFDFDFDFDFDFDBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D6D6D6D2D2D2 +D2D2D2D2D2D2CBCBCBCBCBCBCBCBCBBFBFBFBFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B9B9B9B8B8B8 +B8B8B8B8B8B8B0B0B0B0B0B0B0B0B09696969696969696966262626262626262623C3C3C3C3C3C +3C3C3C3C3C3C3737373737373737373737373737373737373C3C3C3C3C3C3C3C3C414141414141 +414141474747474747474747474747444444444444444444545454545454545454ABABABABABAB +ABABABF4F4F4F4F4F4F4F4F4F4F4F4FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB +FBFBFBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBCBCBCBCBCBCBCBCBCBCBCBCB747474747474747474 +4646464646464646463636363636363636363030303030303030303030302B2B2B2B2B2B2B2B2B +282828282828282828272727272727272727242424242424242424242424242424242424242424 +272727272727272727282828282828282828272727272727272727242424242424242424222222 +222222222222222222222222222222222222242424242424242424252525252525252525252525 +2525252525252525252828282828282828282B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D303030 +3030303030303131313131313131313131313030303030303030303030303030303030302C2C2C +2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B292929 +2929292929292828282828282828282C2C2C2C2C2C2C2C2C2C2C2C303030303030303030343434 +3434343434343737373737373737373C3C3C3C3C3C3C3C3C464646464646464646464646575757 +5757575757576D6D6D6D6D6D6D6D6D8A8A8A8A8A8A8A8A8AADADADADADADADADADCBCBCBCBCBCB +CBCBCBCBCBCBDDDDDDDDDDDDDDDDDDE5E5E5E5E5E5E5E5E5E8E8E8E8E8E8E8E8E8EAEAEAEAEAEA +EAEAEAEAEAEAECECECECECECECECECEDEDEDEDEDEDEDEDEDECECECECECECECECECE5E5E5E5E5E5 +E5E5E5E3E3E3E3E3E3E3E3E3E3E3E3E1E1E1E1E1E1E1E1E1DFDFDFDFDFDFDFDFDFDBDBDBDBDBDB +DBDBDBD8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D6D6D6D2D2D2D2D2D2D2D2D2CBCBCBCBCBCB +CBCBCBBFBFBFBFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B0B0B0B0B0B0 +B0B0B09696969696969696966262626262626262623C3C3C3C3C3C3C3C3C3C3C3C373737373737 +3737373737373737373737373C3C3C3C3C3C3C3C3C414141414141414141474747474747474747 +474747444444444444444444545454545454545454ABABABABABABABABABF4F4F4F4F4F4F4F4F4 +F4F4F4FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDB +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +FBFBFBFBFBFBCBCBCBCBCBCBCBCBCBCBCBCB747474747474747474464646464646464646363636 +3636363636363030303030303030303030302B2B2B2B2B2B2B2B2B282828282828282828272727 +272727272727242424242424242424242424242424242424242424272727272727272727282828 +282828282828272727272727272727242424242424242424222222222222222222222222222222 +222222222222242424242424242424252525252525252525252525252525252525252525282828 +2828282828282B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D303030303030303030313131313131 +3131313131313030303030303030303030303030303030302C2C2C2C2C2C2C2C2C2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B292929292929292929282828282828 +2828282C2C2C2C2C2C2C2C2C2C2C2C303030303030303030343434343434343434373737373737 +3737373C3C3C3C3C3C3C3C3C4646464646464646464646465757575757575757576D6D6D6D6D6D +6D6D6D8A8A8A8A8A8A8A8A8AADADADADADADADADADCBCBCBCBCBCBCBCBCBCBCBCBDDDDDDDDDDDD +DDDDDDE5E5E5E5E5E5E5E5E5E8E8E8E8E8E8E8E8E8EAEAEAEAEAEAEAEAEAEAEAEAECECECECECEC +ECECECEDEDEDEDEDEDEDEDEDECECECECECECECECECE5E5E5E5E5E5E5E5E5E3E3E3E3E3E3E3E3E3 +E3E3E3E1E1E1E1E1E1E1E1E1DFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8 +D6D6D6D6D6D6D6D6D6D6D6D6D2D2D2D2D2D2D2D2D2CBCBCBCBCBCBCBCBCBBFBFBFBFBFBFBFBFBF +B9B9B9B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B0B0B0B0B0B0B0B0B0969696969696969696 +6262626262626262623C3C3C3C3C3C3C3C3C3C3C3C373737373737373737373737373737373737 +3C3C3C3C3C3C3C3C3C414141414141414141474747474747474747474747444444444444444444 +545454545454545454ABABABABABABABABABF4F4F4F4F4F4F4F4F4F4F4F4FEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6F6B8B8B8B8B8B8 +B8B8B8B8B8B86464646464646464644141414141414141413434343434343434342F2F2F2F2F2F +2F2F2F2F2F2F292929292929292929282828282828282828252525252525252525242424242424 +242424242424242424242424242424272727272727272727282828282828282828272727272727 +272727242424242424242424222222222222222222222222222222222222222222242424242424 +242424252525252525252525272727272727272727272727282828282828282828292929292929 +2929292B2B2B2B2B2B2B2B2B292929292929292929282828282828282828282828282828282828 +2828282C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B292929292929292929 +2929292929292929292929292929292929292929292B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F +2F2F2F3131313131313131313636363636363636363F3F3F3F3F3F3F3F3F4D4D4D4D4D4D4D4D4D +626262626262626262626262777777777777777777909090909090909090ADADADADADADADADAD +C7C7C7C7C7C7C7C7C7D9D9D9D9D9D9D9D9D9D9D9D9E0E0E0E0E0E0E0E0E0E3E3E3E3E3E3E3E3E3 +E4E4E4E4E4E4E4E4E4E8E8E8E8E8E8E8E8E8E8E8E8EBEBEBEBEBEBEBEBEBEDEDEDEDEDEDEDEDED +EBEBEBEBEBEBEBEBEBE8E9E8E8E9E8E8E9E8E5E5E5E5E5E5E5E5E5E5E5E5DFE0DFDFE0DFDFE0DF +DDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDADADADADADADADADAD8D8D8D8D8D8D8D8D8D8D8D8 +D2D2D2D2D2D2D2D2D2C9C9C9C9C9C9C9C9C9BFBFBFBFBFBFBFBFBFBBBBBBBBBBBBBBBBBBBBBBBB +BABABABABABABABABAB1B1B1B1B1B1B1B1B19E9E9E9E9E9E9E9E9E717171717171717171424242 +4242424242424242423939393939393939393A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C414141 +414141414141484848484848484848484848474747474747474747575757575757575757B7B7B7 +B7B7B7B7B7B7F9F9F9F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFA +FAFAFAFAFAFAD0D0D0D0D0D0D0D0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF6F6F6F6F6F6F6F6F6B8B8B8B8B8B8B8B8B8B8B8B8646464646464 +6464644141414141414141413434343434343434342F2F2F2F2F2F2F2F2F2F2F2F292929292929 +292929282828282828282828252525252525252525242424242424242424242424242424242424 +242424272727272727272727282828282828282828272727272727272727242424242424242424 +222222222222222222222222222222222222222222242424242424242424252525252525252525 +2727272727272727272727272828282828282828282929292929292929292B2B2B2B2B2B2B2B2B +2929292929292929292828282828282828282828282828282828282828282C2C2C2C2C2C2C2C2C +2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B292929292929292929292929292929292929292929 +2929292929292929292B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131 +3636363636363636363F3F3F3F3F3F3F3F3F4D4D4D4D4D4D4D4D4D626262626262626262626262 +777777777777777777909090909090909090ADADADADADADADADADC7C7C7C7C7C7C7C7C7D9D9D9 +D9D9D9D9D9D9D9D9D9E0E0E0E0E0E0E0E0E0E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E8E8E8 +E8E8E8E8E8E8E8E8E8EBEBEBEBEBEBEBEBEBEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBE8E9E8 +E8E9E8E8E9E8E5E5E5E5E5E5E5E5E5E5E5E5DFE0DFDFE0DFDFE0DFDDDDDDDDDDDDDDDDDDDCDCDC +DCDCDCDCDCDCDADADADADADADADADAD8D8D8D8D8D8D8D8D8D8D8D8D2D2D2D2D2D2D2D2D2C9C9C9 +C9C9C9C9C9C9BFBFBFBFBFBFBFBFBFBBBBBBBBBBBBBBBBBBBBBBBBBABABABABABABABABAB1B1B1 +B1B1B1B1B1B19E9E9E9E9E9E9E9E9E717171717171717171424242424242424242424242393939 +3939393939393A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C414141414141414141484848484848 +484848484848474747474747474747575757575757575757B7B7B7B7B7B7B7B7B7F9F9F9F9F9F9 +F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0 +D0D0D0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +EFEFEFEFEFEFEFEFEFA5A5A5A5A5A5A5A5A5A5A5A55B5B5B5B5B5B5B5B5B3E3E3E3E3E3E3E3E3E +3131313131313131312C2C2C2C2C2C2C2C2C2C2C2C282828282828282828272727272727272727 +252525252525252525242424242424242424252525252525252525252525252525252525252525 +272727272727272727252525252525252525242424242424242424222222222222222222222222 +222222222222222222252525252525252525272727272727272727272727272727272727272727 +252525252525252525272727272727272727292929292929292929292929292929292929282828 +282828282828282828282828282828282828292929292929292929282828282828282828292929 +2929292929292B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D303030 +303030303030323232323232323232323232373737373737373737444444444444444444585858 +5858585858587070707070707070708888888888888888888888889D9D9D9D9D9D9D9D9DB0B0B0 +B0B0B0B0B0B0C1C1C1C1C1C1C1C1C1D1D1D1D1D1D1D1D1D1DADADADADADADADADADADADADCDCDC +DCDCDCDCDCDCDFE0DFDFE0DFDFE0DFE3E3E3E3E3E3E3E3E3E6E6E6E6E6E6E6E6E6E6E6E6E9E9E9 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE7E7E7E7E7E7 +E7E7E7E7E7E7E0E0E0E0E0E0E0E0E0DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDCDCDCDCDCDC +DCDCDCD8D8D8D8D8D8D8D8D8D8D8D8D1D1D1D1D1D1D1D1D1C7C7C7C7C7C7C7C7C7C0C0C0C0C0C0 +C0C0C0BDBDBDBDBDBDBDBDBDBDBDBDBBBBBBBBBBBBBBBBBBB4B4B4B4B4B4B4B4B4A2A2A2A2A2A2 +A2A2A27A7A7A7A7A7A7A7A7A4848484848484848484848483B3B3B3B3B3B3B3B3B3A3A3A3A3A3A +3A3A3A3636363636363636363C3C3C3C3C3C3C3C3C444444444444444444444444474747474747 +474747555555555555555555AAAAAAAAAAAAAAAAAAF5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFA5A5A5 +A5A5A5A5A5A5A5A5A55B5B5B5B5B5B5B5B5B3E3E3E3E3E3E3E3E3E3131313131313131312C2C2C +2C2C2C2C2C2C2C2C2C282828282828282828272727272727272727252525252525252525242424 +242424242424252525252525252525252525252525252525252525272727272727272727252525 +252525252525242424242424242424222222222222222222222222222222222222222222252525 +252525252525272727272727272727272727272727272727272727252525252525252525272727 +272727272727292929292929292929292929292929292929282828282828282828282828282828 +2828282828282929292929292929292828282828282828282929292929292929292B2B2B2B2B2B +2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D303030303030303030323232323232 +323232323232373737373737373737444444444444444444585858585858585858707070707070 +7070708888888888888888888888889D9D9D9D9D9D9D9D9DB0B0B0B0B0B0B0B0B0C1C1C1C1C1C1 +C1C1C1D1D1D1D1D1D1D1D1D1DADADADADADADADADADADADADCDCDCDCDCDCDCDCDCDFE0DFDFE0DF +DFE0DFE3E3E3E3E3E3E3E3E3E6E6E6E6E6E6E6E6E6E6E6E6E9E9E9E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE7E7E7E7E7E7E7E7E7E7E7E7E0E0E0E0E0E0 +E0E0E0DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDCDCDCDCDCDCDCDCDCD8D8D8D8D8D8D8D8D8 +D8D8D8D1D1D1D1D1D1D1D1D1C7C7C7C7C7C7C7C7C7C0C0C0C0C0C0C0C0C0BDBDBDBDBDBDBDBDBD +BDBDBDBBBBBBBBBBBBBBBBBBB4B4B4B4B4B4B4B4B4A2A2A2A2A2A2A2A2A27A7A7A7A7A7A7A7A7A +4848484848484848484848483B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A363636363636363636 +3C3C3C3C3C3C3C3C3C444444444444444444444444474747474747474747555555555555555555 +AAAAAAAAAAAAAAAAAAF5F5F5F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFA5A5A5A5A5A5A5A5A5A5A5A55B5B5B +5B5B5B5B5B5B3E3E3E3E3E3E3E3E3E3131313131313131312C2C2C2C2C2C2C2C2C2C2C2C282828 +282828282828272727272727272727252525252525252525242424242424242424252525252525 +252525252525252525252525252525272727272727272727252525252525252525242424242424 +242424222222222222222222222222222222222222222222252525252525252525272727272727 +272727272727272727272727272727252525252525252525272727272727272727292929292929 +292929292929292929292929282828282828282828282828282828282828282828292929292929 +2929292828282828282828282929292929292929292B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C +2C2C2C2D2D2D2D2D2D2D2D2D303030303030303030323232323232323232323232373737373737 +373737444444444444444444585858585858585858707070707070707070888888888888888888 +8888889D9D9D9D9D9D9D9D9DB0B0B0B0B0B0B0B0B0C1C1C1C1C1C1C1C1C1D1D1D1D1D1D1D1D1D1 +DADADADADADADADADADADADADCDCDCDCDCDCDCDCDCDFE0DFDFE0DFDFE0DFE3E3E3E3E3E3E3E3E3 +E6E6E6E6E6E6E6E6E6E6E6E6E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +EAEAEAEAEAEAEAEAEAE7E7E7E7E7E7E7E7E7E7E7E7E0E0E0E0E0E0E0E0E0DEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDCDCDCDCDCDCDCDCDCD8D8D8D8D8D8D8D8D8D8D8D8D1D1D1D1D1D1D1D1D1 +C7C7C7C7C7C7C7C7C7C0C0C0C0C0C0C0C0C0BDBDBDBDBDBDBDBDBDBDBDBDBBBBBBBBBBBBBBBBBB +B4B4B4B4B4B4B4B4B4A2A2A2A2A2A2A2A2A27A7A7A7A7A7A7A7A7A484848484848484848484848 +3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3636363636363636363C3C3C3C3C3C3C3C3C444444 +444444444444444444474747474747474747555555555555555555AAAAAAAAAAAAAAAAAAF5F5F5 +F5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDB +DBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE +FEFEFEE7E7E7E7E7E7E7E7E79191919191919191919191915252525252525252523C3C3C3C3C3C +3C3C3C3030303030303030302B2B2B2B2B2B2B2B2B2B2B2B282828282828282828252525252525 +252525242424242424242424252525252525252525282828282828282828282828282828282828 +282828292929292929292929282828282828282828272727272727272727242424242424242424 +242424252525252525252525252525252525252525252525252525252525242424242424242424 +2424242424242424242424242525252525252525252828282828282828282B2B2B2B2B2B2B2B2B +2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C282828282828282828 +2B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131 +353535353535353535393939393939393939393939464646464646464646616161616161616161 +7D7D7D7D7D7D7D7D7D929292929292929292A6A6A6A6A6A6A6A6A6A6A6A6B2B2B2B2B2B2B2B2B2 +BEBEBEBEBEBEBEBEBECACACACACACACACACAD4D4D4D4D4D4D4D4D4DADADADADADADADADADADADA +DEDEDEDEDEDEDEDEDEE6E6E6E6E6E6E6E6E6EAEAEAEAEAEAEAEAEAEDEDEDEDEDEDEDEDEDEDEDED +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EAEAEA +EAEAEAEAEAEAEAEAEAE4E4E4E4E4E4E4E4E4E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDFDFDF +DFDFDFDFDFDFDBDBDBDBDBDBDBDBDBDBDBDBD1D1D1D1D1D1D1D1D1C7C7C7C7C7C7C7C7C7C1C1C1 +C1C1C1C1C1C1BDBDBDBDBDBDBDBDBDBDBDBDB9B9B9B9B9B9B9B9B9B6B6B6B6B6B6B6B6B6A6A6A6 +A6A6A6A6A6A68282828282828282824E4E4E4E4E4E4E4E4E4E4E4E3C3C3C3C3C3C3C3C3C3A3A3A +3A3A3A3A3A3A3131313131313131313636363636363636363E3E3E3E3E3E3E3E3E3E3E3E424242 +4242424242424E4E4E4E4E4E4E4E4E939393939393939393EDEDEDEDEDEDEDEDEDEDEDEDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE3E3E3E3E3E3E3E3E3FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE7E7E7E7E7E7E7E7E7 +9191919191919191919191915252525252525252523C3C3C3C3C3C3C3C3C303030303030303030 +2B2B2B2B2B2B2B2B2B2B2B2B282828282828282828252525252525252525242424242424242424 +252525252525252525282828282828282828282828282828282828282828292929292929292929 +282828282828282828272727272727272727242424242424242424242424252525252525252525 +252525252525252525252525252525252525242424242424242424242424242424242424242424 +2525252525252525252828282828282828282B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B +2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2828282828282828282B2B2B2B2B2B2B2B2B2F2F2F +2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131353535353535353535393939 +3939393939393939394646464646464646466161616161616161617D7D7D7D7D7D7D7D7D929292 +929292929292A6A6A6A6A6A6A6A6A6A6A6A6B2B2B2B2B2B2B2B2B2BEBEBEBEBEBEBEBEBECACACA +CACACACACACAD4D4D4D4D4D4D4D4D4DADADADADADADADADADADADADEDEDEDEDEDEDEDEDEE6E6E6 +E6E6E6E6E6E6EAEAEAEAEAEAEAEAEAEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EAEAEAEAEAEAEAEAEAEAEAEAE4E4E4 +E4E4E4E4E4E4E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDBDBDBDBDBDB +DBDBDBDBDBDBD1D1D1D1D1D1D1D1D1C7C7C7C7C7C7C7C7C7C1C1C1C1C1C1C1C1C1BDBDBDBDBDBD +BDBDBDBDBDBDB9B9B9B9B9B9B9B9B9B6B6B6B6B6B6B6B6B6A6A6A6A6A6A6A6A6A6828282828282 +8282824E4E4E4E4E4E4E4E4E4E4E4E3C3C3C3C3C3C3C3C3C3A3A3A3A3A3A3A3A3A313131313131 +3131313636363636363636363E3E3E3E3E3E3E3E3E3E3E3E4242424242424242424E4E4E4E4E4E +4E4E4E939393939393939393EDEDEDEDEDEDEDEDEDEDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFCFCFCFCFCFCFCFCFCE3E3E3E3E3E3E3E3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEE7E7E7E7E7E7E7E7E7919191919191919191919191 +5252525252525252523C3C3C3C3C3C3C3C3C3030303030303030302B2B2B2B2B2B2B2B2B2B2B2B +282828282828282828252525252525252525242424242424242424252525252525252525282828 +282828282828282828282828282828282828292929292929292929282828282828282828272727 +272727272727242424242424242424242424252525252525252525252525252525252525252525 +252525252525242424242424242424242424242424242424242424252525252525252525282828 +2828282828282B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C2C2C2C2828282828282828282B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F +2F2F2F2F2F2F313131313131313131353535353535353535393939393939393939393939464646 +4646464646466161616161616161617D7D7D7D7D7D7D7D7D929292929292929292A6A6A6A6A6A6 +A6A6A6A6A6A6B2B2B2B2B2B2B2B2B2BEBEBEBEBEBEBEBEBECACACACACACACACACAD4D4D4D4D4D4 +D4D4D4DADADADADADADADADADADADADEDEDEDEDEDEDEDEDEE6E6E6E6E6E6E6E6E6EAEAEAEAEAEA +EAEAEAEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEF0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0EAEAEAEAEAEAEAEAEAEAEAEAE4E4E4E4E4E4E4E4E4E1E1E1E1E1E1 +E1E1E1DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBDBDBDBD1D1D1D1D1D1 +D1D1D1C7C7C7C7C7C7C7C7C7C1C1C1C1C1C1C1C1C1BDBDBDBDBDBDBDBDBDBDBDBDB9B9B9B9B9B9 +B9B9B9B6B6B6B6B6B6B6B6B6A6A6A6A6A6A6A6A6A68282828282828282824E4E4E4E4E4E4E4E4E +4E4E4E3C3C3C3C3C3C3C3C3C3A3A3A3A3A3A3A3A3A313131313131313131363636363636363636 +3E3E3E3E3E3E3E3E3E3E3E3E4242424242424242424E4E4E4E4E4E4E4E4E939393939393939393 +EDEDEDEDEDEDEDEDEDEDEDEDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFC +E3E3E3E3E3E3E3E3E3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFD +FDFDFDFDFDFDD8D8D8D8D8D8D8D8D87C7C7C7C7C7C7C7C7C7C7C7C4B4B4B4B4B4B4B4B4B393939 +3939393939392F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2B2B2B282828282828282828242424 +2424242424242424242424242424242B2B2B2B2B2B2B2B2B323232323232323232323232353535 +3535353535353434343434343434343232323232323232322D2D2D2D2D2D2D2D2D2B2B2B2B2B2B +2B2B2B2B2B2B282828282828282828252525252525252525252525252525252525242424242424 +2424242424242222222222222222222424242424242424242727272727272727272B2B2B2B2B2B +2B2B2B2F2F2F2F2F2F2F2F2F2F2F2F3030303030303030302C2C2C2C2C2C2C2C2C292929292929 +2929292C2C2C2C2C2C2C2C2C313131313131313131313131353535353535353535373737373737 +3737373E3E3E3E3E3E3E3E3E494949494949494949494949666666666666666666858585858585 +8585859D9D9D9D9D9D9D9D9DAAAAAAAAAAAAAAAAAAB6B6B6B6B6B6B6B6B6B6B6B6BCBCBCBCBCBC +BCBCBCC2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCD5D5D5D5D5D5D5D5D5DBDBDBDBDBDBDBDBDB +DBDBDBE4E4E4E4E4E4E4E4E4EDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F6F6F6F6F6F6F6F6F6 +F6F6F6F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F6F6F6F6F6F6F6F6F6 +F0F0F0F0F0F0F0F0F0F0F0F0EAEAEAEAEAEAEAEAEAE6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2 +DFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBDBDBDBD4D4D4D4D4D4D4D4D4C9C9C9C9C9C9C9C9C9 +C3C3C3C3C3C3C3C3C3BEBEBEBEBEBEBEBEBEBEBEBEB8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3 +A7A7A7A7A7A7A7A7A7878787878787878787555555555555555555555555404040404040404040 +3C3C3C3C3C3C3C3C3C303030303030303030313131313131313131373737373737373737373737 +3E3E3E3E3E3E3E3E3E474747474747474747838383838383838383E6E6E6E6E6E6E6E6E6E6E6E6 +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDD8D8D8D8D8D8 +D8D8D87C7C7C7C7C7C7C7C7C7C7C7C4B4B4B4B4B4B4B4B4B3939393939393939392F2F2F2F2F2F +2F2F2F2B2B2B2B2B2B2B2B2B2B2B2B282828282828282828242424242424242424242424242424 +2424242B2B2B2B2B2B2B2B2B323232323232323232323232353535353535353535343434343434 +3434343232323232323232322D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B282828282828 +282828252525252525252525252525252525252525242424242424242424242424222222222222 +2222222424242424242424242727272727272727272B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F +2F2F2F3030303030303030302C2C2C2C2C2C2C2C2C2929292929292929292C2C2C2C2C2C2C2C2C +3131313131313131313131313535353535353535353737373737373737373E3E3E3E3E3E3E3E3E +4949494949494949494949496666666666666666668585858585858585859D9D9D9D9D9D9D9D9D +AAAAAAAAAAAAAAAAAAB6B6B6B6B6B6B6B6B6B6B6B6BCBCBCBCBCBCBCBCBCC2C2C2C2C2C2C2C2C2 +CCCCCCCCCCCCCCCCCCD5D5D5D5D5D5D5D5D5DBDBDBDBDBDBDBDBDBDBDBDBE4E4E4E4E4E4E4E4E4 +EDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F6F6F6F6F6F6F6F6F6F0F0F0F0F0F0F0F0F0F0F0F0 +EAEAEAEAEAEAEAEAEAE6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2DFDFDFDFDFDFDFDFDFDBDBDB +DBDBDBDBDBDBDBDBDBD4D4D4D4D4D4D4D4D4C9C9C9C9C9C9C9C9C9C3C3C3C3C3C3C3C3C3BEBEBE +BEBEBEBEBEBEBEBEBEB8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3A7A7A7A7A7A7A7A7A7878787 +8787878787875555555555555555555555554040404040404040403C3C3C3C3C3C3C3C3C303030 +3030303030303131313131313131313737373737373737373737373E3E3E3E3E3E3E3E3E474747 +474747474747838383838383838383E6E6E6E6E6E6E6E6E6E6E6E6FEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BFBFBFBFBFBFBFBFBF696969696969696969 +6969694545454545454545453737373737373737373131313131313131312D2D2D2D2D2D2D2D2D +2D2D2D282828282828282828242424242424242424272727272727272727373737373737373737 +4C4C4C4C4C4C4C4C4C4C4C4C505050505050505050474747474747474747404040404040404040 +3E3E3E3E3E3E3E3E3E3A3A3A3A3A3A3A3A3A3A3A3A323232323232323232292929292929292929 +272727272727272727242424242424242424242424242424242424242424272727272727272727 +2828282828282828282B2B2B2B2B2B2B2B2B313131313131313131313131313131313131313131 +2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B303030303030303030363636363636363636363636 +3E3E3E3E3E3E3E3E3E474747474747474747505050505050505050676767676767676767676767 +898989898989898989A2A2A2A2A2A2A2A2A2B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8BCBCBC +BCBCBCBCBCBCBCBCBCC0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5CCCCCCCCCCCCCCCCCCD5D5D5 +D5D5D5D5D5D5DEDEDEDEDEDEDEDEDEDEDEDEE8E9E8E8E9E8E8E9E8F1F1F1F1F1F1F1F1F1F5F5F5 +F5F5F5F5F5F5FAFAFAFAFAFAFAFAFAFAFAFAFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFAFAFAFAFAFAFAFAFAF4F4F4F4F4F4F4F4F4F4F4F4EDEDEDEDEDEDEDEDEDE8E8E8 +E8E8E8E8E8E8E4E4E4E4E4E4E4E4E4DFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBDBDBDBD6D6D5 +D6D6D5D6D6D5CFCFCFCFCFCFCFCFCFC6C6C6C6C6C6C6C6C6BFBFBFBFBFBFBFBFBFBFBFBFB8B8B8 +B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3A6A6A6A6A6A6A6A6A68A8A8A8A8A8A8A8A8A5A5A5A5A5A5A +5A5A5A5A5A5A4242424242424242423F3F3F3F3F3F3F3F3F313131313131313131303030303030 +3030303232323232323232323232323A3A3A3A3A3A3A3A3A424242424242424242767676767676 +767676DFE0DFDFE0DFDFE0DFDFE0DFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFA +FAFAFAD3D3D3D3D3D3D3D3D3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9BFBFBFBFBFBFBFBFBF696969696969696969696969454545454545454545 +3737373737373737373131313131313131312D2D2D2D2D2D2D2D2D2D2D2D282828282828282828 +2424242424242424242727272727272727273737373737373737374C4C4C4C4C4C4C4C4C4C4C4C +5050505050505050504747474747474747474040404040404040403E3E3E3E3E3E3E3E3E3A3A3A +3A3A3A3A3A3A3A3A3A323232323232323232292929292929292929272727272727272727242424 +2424242424242424242424242424242424242727272727272727272828282828282828282B2B2B +2B2B2B2B2B2B3131313131313131313131313131313131313131312C2C2C2C2C2C2C2C2C2B2B2B +2B2B2B2B2B2B3030303030303030303636363636363636363636363E3E3E3E3E3E3E3E3E474747 +474747474747505050505050505050676767676767676767676767898989898989898989A2A2A2 +A2A2A2A2A2A2B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBCBCBCC0C0C0 +C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5CCCCCCCCCCCCCCCCCCD5D5D5D5D5D5D5D5D5DEDEDEDEDEDE +DEDEDEDEDEDEE8E9E8E8E9E8E8E9E8F1F1F1F1F1F1F1F1F1F5F5F5F5F5F5F5F5F5FAFAFAFAFAFA +FAFAFAFAFAFAFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFAFAFAFAFAFA +FAFAFAF4F4F4F4F4F4F4F4F4F4F4F4EDEDEDEDEDEDEDEDEDE8E8E8E8E8E8E8E8E8E4E4E4E4E4E4 +E4E4E4DFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBDBDBDBD6D6D5D6D6D5D6D6D5CFCFCFCFCFCF +CFCFCFC6C6C6C6C6C6C6C6C6BFBFBFBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B3B3B3B3B3B3 +B3B3B3A6A6A6A6A6A6A6A6A68A8A8A8A8A8A8A8A8A5A5A5A5A5A5A5A5A5A5A5A5A424242424242 +4242423F3F3F3F3F3F3F3F3F313131313131313131303030303030303030323232323232323232 +3232323A3A3A3A3A3A3A3A3A424242424242424242767676767676767676DFE0DFDFE0DFDFE0DF +DFE0DFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD3D3D3D3D3D3D3D3D3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BFBFBF +BFBFBFBFBFBF696969696969696969696969454545454545454545373737373737373737313131 +3131313131312D2D2D2D2D2D2D2D2D2D2D2D282828282828282828242424242424242424272727 +2727272727273737373737373737374C4C4C4C4C4C4C4C4C4C4C4C505050505050505050474747 +4747474747474040404040404040403E3E3E3E3E3E3E3E3E3A3A3A3A3A3A3A3A3A3A3A3A323232 +323232323232292929292929292929272727272727272727242424242424242424242424242424 +2424242424242727272727272727272828282828282828282B2B2B2B2B2B2B2B2B313131313131 +3131313131313131313131313131312C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B303030303030 +3030303636363636363636363636363E3E3E3E3E3E3E3E3E474747474747474747505050505050 +505050676767676767676767676767898989898989898989A2A2A2A2A2A2A2A2A2B0B0B0B0B0B0 +B0B0B0B8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBCBCBCC0C0C0C0C0C0C0C0C0C5C5C5C5C5C5 +C5C5C5CCCCCCCCCCCCCCCCCCD5D5D5D5D5D5D5D5D5DEDEDEDEDEDEDEDEDEDEDEDEE8E9E8E8E9E8 +E8E9E8F1F1F1F1F1F1F1F1F1F5F5F5F5F5F5F5F5F5FAFAFAFAFAFAFAFAFAFAFAFAFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFAFAFAFAFAFAFAFAFAF4F4F4F4F4F4F4F4F4 +F4F4F4EDEDEDEDEDEDEDEDEDE8E8E8E8E8E8E8E8E8E4E4E4E4E4E4E4E4E4DFDFDFDFDFDFDFDFDF +DBDBDBDBDBDBDBDBDBDBDBDBD6D6D5D6D6D5D6D6D5CFCFCFCFCFCFCFCFCFC6C6C6C6C6C6C6C6C6 +BFBFBFBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3A6A6A6A6A6A6A6A6A6 +8A8A8A8A8A8A8A8A8A5A5A5A5A5A5A5A5A5A5A5A5A4242424242424242423F3F3F3F3F3F3F3F3F +3131313131313131313030303030303030303232323232323232323232323A3A3A3A3A3A3A3A3A +424242424242424242767676767676767676DFE0DFDFE0DFDFE0DFDFE0DFFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD3D3D3D3D3D3D3D3D3FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5F5F5F5F5F5F5F5F5A9A9A9A9A9A9A9A9A9565656565656 +5656565656563E3E3E3E3E3E3E3E3E3636363636363636363131313131313131312F2F2F2F2F2F +2F2F2F2F2F2F2929292929292929292424242424242424242B2B2B2B2B2B2B2B2B454545454545 +4545455D5D5D5D5D5D5D5D5D5D5D5D6666666666666666665F605F5F605F5F605F585858585858 +5858585959595959595959595858585858585858585858584B4B4B4B4B4B4B4B4B393939393939 +3939393131313131313131312B2B2B2B2B2B2B2B2B2B2B2B2828282828282828282C2C2C2C2C2C +2C2C2C2929292929292929292929292929292929292D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F3636363636363636363F3F3F3F3F3F3F3F3F +3F3F3F4D4D4D4D4D4D4D4D4D5B5B5B5B5B5B5B5B5B666666666666666666878787878787878787 +878787A6A6A6A6A6A6A6A6A6B7B7B7B7B7B7B7B7B7BCBCBCBCBCBCBCBCBCBEBEBEBEBEBEBEBEBE +C0C0C0C0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5CBCBCBCBCBCBCBCBCBD2D2D2D2D2D2D2D2D2 +DDDDDDDDDDDDDDDDDDE8E8E8E8E8E8E8E8E8E8E8E8F1F1F1F1F1F1F1F1F1F9F9F9F9F9F9F9F9F9 +FBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCF6F6F6F6F6F6F6F6F6F6F6F6EDEDEDEDEDEDEDEDED +E8E8E8E8E8E8E8E8E8E4E4E4E4E4E4E4E4E4DDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D9D9D9 +D6D6D5D6D6D5D6D6D5D1D1D1D1D1D1D1D1D1CBCBCBCBCBCBCBCBCBC3C3C3C3C3C3C3C3C3C3C3C3 +BBBBBBBBBBBBBBBBBBB2B2B2B2B2B2B2B2B2A4A4A4A4A4A4A4A4A48C8C8C8C8C8C8C8C8C5C5C5C +5C5C5C5C5C5C5C5C5C4242424242424242423E3E3E3E3E3E3E3E3E3030303030303030302C2C2C +2C2C2C2C2C2C303030303030303030303030393939393939393939404040404040404040707070 +707070707070DBDBDBDBDBDBDBDBDBDBDBDBFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +FBFBFBFBFBFBDBDBDBDBDBDBDBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF5F5F5F5F5F5F5F5F5A9A9A9A9A9A9A9A9A95656565656565656565656563E3E3E3E3E3E +3E3E3E3636363636363636363131313131313131312F2F2F2F2F2F2F2F2F2F2F2F292929292929 +2929292424242424242424242B2B2B2B2B2B2B2B2B4545454545454545455D5D5D5D5D5D5D5D5D +5D5D5D6666666666666666665F605F5F605F5F605F585858585858585858595959595959595959 +5858585858585858585858584B4B4B4B4B4B4B4B4B393939393939393939313131313131313131 +2B2B2B2B2B2B2B2B2B2B2B2B2828282828282828282C2C2C2C2C2C2C2C2C292929292929292929 +2929292929292929292D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B +2F2F2F2F2F2F2F2F2F3636363636363636363F3F3F3F3F3F3F3F3F3F3F3F4D4D4D4D4D4D4D4D4D +5B5B5B5B5B5B5B5B5B666666666666666666878787878787878787878787A6A6A6A6A6A6A6A6A6 +B7B7B7B7B7B7B7B7B7BCBCBCBCBCBCBCBCBCBEBEBEBEBEBEBEBEBEC0C0C0C0C0C0C0C0C0C0C0C0 +C5C5C5C5C5C5C5C5C5CBCBCBCBCBCBCBCBCBD2D2D2D2D2D2D2D2D2DDDDDDDDDDDDDDDDDDE8E8E8 +E8E8E8E8E8E8E8E8E8F1F1F1F1F1F1F1F1F1F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFDFDFD +FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFCFCFC +FCFCFCFCFCFCF6F6F6F6F6F6F6F6F6F6F6F6EDEDEDEDEDEDEDEDEDE8E8E8E8E8E8E8E8E8E4E4E4 +E4E4E4E4E4E4DDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D9D9D9D6D6D5D6D6D5D6D6D5D1D1D1 +D1D1D1D1D1D1CBCBCBCBCBCBCBCBCBC3C3C3C3C3C3C3C3C3C3C3C3BBBBBBBBBBBBBBBBBBB2B2B2 +B2B2B2B2B2B2A4A4A4A4A4A4A4A4A48C8C8C8C8C8C8C8C8C5C5C5C5C5C5C5C5C5C5C5C5C424242 +4242424242423E3E3E3E3E3E3E3E3E3030303030303030302C2C2C2C2C2C2C2C2C303030303030 +303030303030393939393939393939404040404040404040707070707070707070DBDBDBDBDBDB +DBDBDBDBDBDBFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBDBDBDBDBDBDB +DBDBDBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEEBEBEBEBEBEBEBEBEB +939393939393939393484848484848484848484848393939393939393939323232323232323232 +3131313131313131313131313131313131313131312B2B2B2B2B2B2B2B2B252525252525252525 +2F2F2F2F2F2F2F2F2F4B4B4B4B4B4B4B4B4B666666666666666666666666717171717171717171 +7171717171717171716D6D6D6D6D6D6D6D6D6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F +6767676767676767675858585858585858584E4E4E4E4E4E4E4E4E444444444444444444444444 +3737373737373737372F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3030303030303030303636363636363636363F3F3F +3F3F3F3F3F3F4E4E4E4E4E4E4E4E4E4E4E4E6262626262626262626C6C6C6C6C6C6C6C6C828282 +828282828282A6A6A6A6A6A6A6A6A6A6A6A6BABABABABABABABABAC5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9C9C9C9CDCDCDCDCDCDCDCDCDD5D5D5 +D5D5D5D5D5D5E1E1E1E1E1E1E1E1E1EAEAEAEAEAEAEAEAEAF1F1F1F1F1F1F1F1F1F1F1F1F5F5F5 +F5F5F5F5F5F5FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCF7F7F7F7F7F7 +F7F7F7F7F7F7EEEEEEEEEEEEEEEEEEE7E7E7E7E7E7E7E7E7E3E3E3E3E3E3E3E3E3DCDCDCDCDCDC +DCDCDCD9D9D9D9D9D9D9D9D9D9D9D9D6D6D6D6D6D6D6D6D6D2D2D2D2D2D2D2D2D2CCCCCCCCCCCC +CCCCCCC5C5C5C5C5C5C5C5C5C5C5C5BDBDBDBDBDBDBDBDBDB1B1B1B1B1B1B1B1B1A4A4A4A4A4A4 +A4A4A48F8F8F8F8F8F8F8F8F5F605F5F605F5F605F5F605F4242424242424242423B3B3B3B3B3B +3B3B3B2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B303030303030303030303030373737373737 +3737373F3F3F3F3F3F3F3F3F6D6D6D6D6D6D6D6D6DDADADADADADADADADADADADAFDFDFDFDFDFD +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD5D5D5D5D5D5D5D5D5FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEEBEBEBEBEBEBEBEBEB939393939393939393484848 +484848484848484848393939393939393939323232323232323232313131313131313131313131 +3131313131313131312B2B2B2B2B2B2B2B2B2525252525252525252F2F2F2F2F2F2F2F2F4B4B4B +4B4B4B4B4B4B6666666666666666666666667171717171717171717171717171717171716D6D6D +6D6D6D6D6D6D6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F676767676767676767585858 +5858585858584E4E4E4E4E4E4E4E4E4444444444444444444444443737373737373737372F2F2F +2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D +2D2D2D2D2D2D3030303030303030303636363636363636363F3F3F3F3F3F3F3F3F4E4E4E4E4E4E +4E4E4E4E4E4E6262626262626262626C6C6C6C6C6C6C6C6C828282828282828282A6A6A6A6A6A6 +A6A6A6A6A6A6BABABABABABABABABAC5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5 +C5C5C5C9C9C9C9C9C9C9C9C9C9C9C9CDCDCDCDCDCDCDCDCDD5D5D5D5D5D5D5D5D5E1E1E1E1E1E1 +E1E1E1EAEAEAEAEAEAEAEAEAF1F1F1F1F1F1F1F1F1F1F1F1F5F5F5F5F5F5F5F5F5FCFCFCFCFCFC +FCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCF7F7F7F7F7F7F7F7F7F7F7F7EEEEEEEEEEEE +EEEEEEE7E7E7E7E7E7E7E7E7E3E3E3E3E3E3E3E3E3DCDCDCDCDCDCDCDCDCD9D9D9D9D9D9D9D9D9 +D9D9D9D6D6D6D6D6D6D6D6D6D2D2D2D2D2D2D2D2D2CCCCCCCCCCCCCCCCCCC5C5C5C5C5C5C5C5C5 +C5C5C5BDBDBDBDBDBDBDBDBDB1B1B1B1B1B1B1B1B1A4A4A4A4A4A4A4A4A48F8F8F8F8F8F8F8F8F +5F605F5F605F5F605F5F605F4242424242424242423B3B3B3B3B3B3B3B3B2F2F2F2F2F2F2F2F2F +2B2B2B2B2B2B2B2B2B3030303030303030303030303737373737373737373F3F3F3F3F3F3F3F3F +6D6D6D6D6D6D6D6D6DDADADADADADADADADADADADAFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FAFAFAFAFAFAFAFAFAD5D5D5D5D5D5D5D5D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEEBEBEBEBEBEBEBEBEB939393939393939393484848484848484848484848393939 +3939393939393232323232323232323131313131313131313131313131313131313131312B2B2B +2B2B2B2B2B2B2525252525252525252F2F2F2F2F2F2F2F2F4B4B4B4B4B4B4B4B4B666666666666 +6666666666667171717171717171717171717171717171716D6D6D6D6D6D6D6D6D6F6F6F6F6F6F +6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6767676767676767675858585858585858584E4E4E4E4E4E +4E4E4E4444444444444444444444443737373737373737372F2F2F2F2F2F2F2F2F2F2F2F2F2F2F +2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D303030303030 +3030303636363636363636363F3F3F3F3F3F3F3F3F4E4E4E4E4E4E4E4E4E4E4E4E626262626262 +6262626C6C6C6C6C6C6C6C6C828282828282828282A6A6A6A6A6A6A6A6A6A6A6A6BABABABABABA +BABABAC5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9 +C9C9C9CDCDCDCDCDCDCDCDCDD5D5D5D5D5D5D5D5D5E1E1E1E1E1E1E1E1E1EAEAEAEAEAEAEAEAEA +F1F1F1F1F1F1F1F1F1F1F1F1F5F5F5F5F5F5F5F5F5FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +FCFCFCFCFCFCFCFCFCF7F7F7F7F7F7F7F7F7F7F7F7EEEEEEEEEEEEEEEEEEE7E7E7E7E7E7E7E7E7 +E3E3E3E3E3E3E3E3E3DCDCDCDCDCDCDCDCDCD9D9D9D9D9D9D9D9D9D9D9D9D6D6D6D6D6D6D6D6D6 +D2D2D2D2D2D2D2D2D2CCCCCCCCCCCCCCCCCCC5C5C5C5C5C5C5C5C5C5C5C5BDBDBDBDBDBDBDBDBD +B1B1B1B1B1B1B1B1B1A4A4A4A4A4A4A4A4A48F8F8F8F8F8F8F8F8F5F605F5F605F5F605F5F605F +4242424242424242423B3B3B3B3B3B3B3B3B2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B303030 +3030303030303030303737373737373737373F3F3F3F3F3F3F3F3F6D6D6D6D6D6D6D6D6DDADADA +DADADADADADADADADAFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD5D5D5 +D5D5D5D5D5D5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDDBDBDBDBDBDB +DBDBDB7D7D7D7D7D7D7D7D7D3E3E3E3E3E3E3E3E3E3E3E3E323232323232323232303030303030 +3030303030303030303030303232323232323232323232322B2B2B2B2B2B2B2B2B252525252525 +2525253131313131313131314E4E4E4E4E4E4E4E4E686868686868686868686868737373737373 +737373767676767676767676777777777777777777797979797979797979797979797979797979 +7979797676767676767676767272727272727272726B6B6B6B6B6B6B6B6B626262626262626262 +6262625151515151515151514444444444444444443F3F3F3F3F3F3F3F3F3B3B3B3B3B3B3B3B3B +3A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F444444444444444444 +4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6F6F6F6F6F6F6F6F6F878787878787878787 +A9A9A9A9A9A9A9A9A9BDBDBDBDBDBDBDBDBDBDBDBDC6C6C6C6C6C6C6C6C6CDCDCDCDCDCDCDCDCD +D1D1D1D1D1D1D1D1D1D6D6D5D6D6D5D6D6D5DBDBDBDBDBDBDBDBDBDBDBDBDEDEDEDEDEDEDEDEDE +E3E3E3E3E3E3E3E3E3EDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F3F3F3F3F3F3F3F3F3F3F3F3 +F8F8F8F8F8F8F8F8F8FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCF7F7F7 +F7F7F7F7F7F7F7F7F7F0F0F0F0F0F0F0F0F0EAEAEAEAEAEAEAEAEAE5E5E5E5E5E5E5E5E5DFDFDF +DFDFDFDFDFDFDBDBDBDBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9D5D5D5D5D5D5D5D5D5CECECE +CECECECECECEC7C7C7C7C7C7C7C7C7C7C7C7BFBFBFBFBFBFBFBFBFB3B3B3B3B3B3B3B3B3A7A7A7 +A7A7A7A7A7A79090909090909090905F605F5F605F5F605F5F605F4242424242424242423A3A3A +3A3A3A3A3A3A303030303030303030292929292929292929303030303030303030303030363636 +3636363636363E3E3E3E3E3E3E3E3E717171717171717171DEDEDEDEDEDEDEDEDEDEDEDEFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BFBFBFBFBFBFBFBFBFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDDBDBDBDBDBDBDBDBDB7D7D7D7D7D7D7D7D7D +3E3E3E3E3E3E3E3E3E3E3E3E323232323232323232303030303030303030303030303030303030 +3232323232323232323232322B2B2B2B2B2B2B2B2B252525252525252525313131313131313131 +4E4E4E4E4E4E4E4E4E686868686868686868686868737373737373737373767676767676767676 +777777777777777777797979797979797979797979797979797979797979767676767676767676 +7272727272727272726B6B6B6B6B6B6B6B6B626262626262626262626262515151515151515151 +4444444444444444443F3F3F3F3F3F3F3F3F3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3A3A3A +3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F4444444444444444444E4E4E4E4E4E4E4E4E5E5E5E +5E5E5E5E5E5E5E5E5E6F6F6F6F6F6F6F6F6F878787878787878787A9A9A9A9A9A9A9A9A9BDBDBD +BDBDBDBDBDBDBDBDBDC6C6C6C6C6C6C6C6C6CDCDCDCDCDCDCDCDCDD1D1D1D1D1D1D1D1D1D6D6D5 +D6D6D5D6D6D5DBDBDBDBDBDBDBDBDBDBDBDBDEDEDEDEDEDEDEDEDEE3E3E3E3E3E3E3E3E3EDEDED +EDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F3F3F3F3F3F3F3F3F3F3F3F3F8F8F8F8F8F8F8F8F8FDFDFD +FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFCF7F7F7F7F7F7F7F7F7F7F7F7F0F0F0 +F0F0F0F0F0F0EAEAEAEAEAEAEAEAEAE5E5E5E5E5E5E5E5E5DFDFDFDFDFDFDFDFDFDBDBDBDBDBDB +DBDBDBDBDBDBD9D9D9D9D9D9D9D9D9D5D5D5D5D5D5D5D5D5CECECECECECECECECEC7C7C7C7C7C7 +C7C7C7C7C7C7BFBFBFBFBFBFBFBFBFB3B3B3B3B3B3B3B3B3A7A7A7A7A7A7A7A7A7909090909090 +9090905F605F5F605F5F605F5F605F4242424242424242423A3A3A3A3A3A3A3A3A303030303030 +3030302929292929292929293030303030303030303030303636363636363636363E3E3E3E3E3E +3E3E3E717171717171717171DEDEDEDEDEDEDEDEDEDEDEDEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9BFBFBFBFBFBFBFBFBFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FDFDFDFDFDFDFDFDFDD6D6D5D6D6D5D6D6D57373737373737373733A3A3A3A3A3A3A3A3A3A3A3A +2F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D323232323232323232323232 +2C2C2C2C2C2C2C2C2C2727272727272727273030303030303030304C4C4C4C4C4C4C4C4C666666 +6666666666666666667272727272727272727676767676767676767979797979797979797C7C7C +7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F7C7C7C +7C7C7C7C7C7C7979797979797979797979796E6E6E6E6E6E6E6E6E646464646464646464616161 +6161616161615F605F5F605F5F605F5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5E5E5E +5E5E5E5E5E5E5F605F5F605F5F605F6767676767676767677575757575757575757575758D8D8D +8D8D8D8D8D8DADADADADADADADADADC3C3C3C3C3C3C3C3C3CCCCCCCCCCCCCCCCCCCCCCCCD4D4D4 +D4D4D4D4D4D4DCDCDCDCDCDCDCDCDCE4E4E4E4E4E4E4E4E4E8E9E8E8E9E8E8E9E8ECECECECECEC +ECECECECECECEBEBEBEBEBEBEBEBEBECECECECECECECECECF0F0F0F0F0F0F0F0F0F2F2F2F2F2F2 +F2F2F2F6F6F6F6F6F6F6F6F6F6F6F6FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9F9F9F9F2F2F2F2F2F2F2F2F2EEEEEEEEEEEE +EEEEEEE8E9E8E8E9E8E8E9E8E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDF +DFDFDFDBDBDBDBDBDBDBDBDBD4D4D4D4D4D4D4D4D4CACACACACACACACACACACACAC1C1C1C1C1C1 +C1C1C1B6B6B6B6B6B6B6B6B6AAAAAAAAAAAAAAAAAA949494949494949494626262626262626262 +6262624444444444444444443C3C3C3C3C3C3C3C3C303030303030303030292929292929292929 +3030303030303030303030303535353535353535353B3B3B3B3B3B3B3B3B6F6F6F6F6F6F6F6F6F +DBDBDBDBDBDBDBDBDBDBDBDBFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C4C4C4C4C4C4C4C4C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDD6D6D5 +D6D6D5D6D6D57373737373737373733A3A3A3A3A3A3A3A3A3A3A3A2F2F2F2F2F2F2F2F2F2C2C2C +2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D3232323232323232323232322C2C2C2C2C2C2C2C2C272727 +2727272727273030303030303030304C4C4C4C4C4C4C4C4C666666666666666666666666727272 +7272727272727676767676767676767979797979797979797C7C7C7C7C7C7C7C7C7C7C7C7C7C7C +7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F7C7C7C7C7C7C7C7C7C797979797979 +7979797979796E6E6E6E6E6E6E6E6E6464646464646464646161616161616161615F605F5F605F +5F605F5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5E5E5E5E5E5E5E5E5E5F605F5F605F +5F605F6767676767676767677575757575757575757575758D8D8D8D8D8D8D8D8DADADADADADAD +ADADADC3C3C3C3C3C3C3C3C3CCCCCCCCCCCCCCCCCCCCCCCCD4D4D4D4D4D4D4D4D4DCDCDCDCDCDC +DCDCDCE4E4E4E4E4E4E4E4E4E8E9E8E8E9E8E8E9E8ECECECECECECECECECECECECEBEBEBEBEBEB +EBEBEBECECECECECECECECECF0F0F0F0F0F0F0F0F0F2F2F2F2F2F2F2F2F2F6F6F6F6F6F6F6F6F6 +F6F6F6FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFD +F9F9F9F9F9F9F9F9F9F9F9F9F2F2F2F2F2F2F2F2F2EEEEEEEEEEEEEEEEEEE8E9E8E8E9E8E8E9E8 +E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDB +D4D4D4D4D4D4D4D4D4CACACACACACACACACACACACAC1C1C1C1C1C1C1C1C1B6B6B6B6B6B6B6B6B6 +AAAAAAAAAAAAAAAAAA949494949494949494626262626262626262626262444444444444444444 +3C3C3C3C3C3C3C3C3C303030303030303030292929292929292929303030303030303030303030 +3535353535353535353B3B3B3B3B3B3B3B3B6F6F6F6F6F6F6F6F6FDBDBDBDBDBDBDBDBDBDBDBDB +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C4C4C4C4C4C4C4C4C4FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDD6D6D5D6D6D5D6D6D5737373737373 +7373733A3A3A3A3A3A3A3A3A3A3A3A2F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D +2D2D2D3232323232323232323232322C2C2C2C2C2C2C2C2C272727272727272727303030303030 +3030304C4C4C4C4C4C4C4C4C666666666666666666666666727272727272727272767676767676 +7676767979797979797979797C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D +7D7D7D7F7F7F7F7F7F7F7F7F7C7C7C7C7C7C7C7C7C7979797979797979797979796E6E6E6E6E6E +6E6E6E6464646464646464646161616161616161615F605F5F605F5F605F5C5C5C5C5C5C5C5C5C +5C5C5C5C5C5C5C5C5C5C5C5C5E5E5E5E5E5E5E5E5E5F605F5F605F5F605F676767676767676767 +7575757575757575757575758D8D8D8D8D8D8D8D8DADADADADADADADADADC3C3C3C3C3C3C3C3C3 +CCCCCCCCCCCCCCCCCCCCCCCCD4D4D4D4D4D4D4D4D4DCDCDCDCDCDCDCDCDCE4E4E4E4E4E4E4E4E4 +E8E9E8E8E9E8E8E9E8ECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBECECECECECECECECEC +F0F0F0F0F0F0F0F0F0F2F2F2F2F2F2F2F2F2F6F6F6F6F6F6F6F6F6F6F6F6FCFCFCFCFCFCFCFCFC +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9F9F9F9 +F2F2F2F2F2F2F2F2F2EEEEEEEEEEEEEEEEEEE8E9E8E8E9E8E8E9E8E0E0E0E0E0E0E0E0E0DFE0DF +DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBD4D4D4D4D4D4D4D4D4CACACA +CACACACACACACACACAC1C1C1C1C1C1C1C1C1B6B6B6B6B6B6B6B6B6AAAAAAAAAAAAAAAAAA949494 +9494949494946262626262626262626262624444444444444444443C3C3C3C3C3C3C3C3C303030 +3030303030302929292929292929293030303030303030303030303535353535353535353B3B3B +3B3B3B3B3B3B6F6F6F6F6F6F6F6F6FDBDBDBDBDBDBDBDBDBDBDBDBFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C4C4C4C4C4C4C4C4C4FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFCFCFCFCFCFCFCFCFCD0D0D0D0D0D0D0D0D06C6C6C6C6C6C6C6C6C363636363636363636 +3636362C2C2C2C2C2C2C2C2C2929292929292929292B2B2B2B2B2B2B2B2B303030303030303030 +3030302D2D2D2D2D2D2D2D2D2828282828282828283030303030303030304B4B4B4B4B4B4B4B4B +6464646464646464646464647272727272727272727676767676767676767A7A7A7A7A7A7A7A7A +7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E808080808080808080828282828282828282 +8383838383838383838585858585858585858585858282828282828282827E7E7E7E7E7E7E7E7E +7F7F7F7F7F7F7F7F7F818181818181818181818181818181818181818181838383838383838383 +868686868686868686888888888888888888919191919191919191A3A3A3A3A3A3A3A3A3A3A3A3 +B8B8B8B8B8B8B8B8B8CBCBCBCBCBCBCBCBCBD6D6D5D6D6D5D6D6D5DDDDDDDDDDDDDDDDDDDDDDDD +E6E6E6E6E6E6E6E6E6EDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F3F3F3 +F3F3F3F3F3F3F3F3F3F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F4F4F4 +F4F4F4F4F4F4F8F8F8F8F8F8F8F8F8F8F8F8FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9F9F9F9F4F4F4F4F4F4F4F4F4EFEFEF +EFEFEFEFEFEFE8E8E8E8E8E8E8E8E8E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1DDDDDDDDDDDDDDDDDDD8D8D8D8D8D8D8D8D8D0D0D0D0D0D0D0D0D0D0D0D0C4C4C4 +C4C4C4C4C4C4B8B8B8B8B8B8B8B8B8AAAAAAAAAAAAAAAAAA9494949494949494945F605F5F605F +5F605F5F605F3F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C3030303030303030302B2B2B2B2B2B +2B2B2B2F2F2F2F2F2F2F2F2F2F2F2F3434343434343434343939393939393939396C6C6C6C6C6C +6C6C6CD8D8D8D8D8D8D8D8D8D8D8D8FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB +FBFBFBD9D9D9D9D9D9D9D9D9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFC +D0D0D0D0D0D0D0D0D06C6C6C6C6C6C6C6C6C3636363636363636363636362C2C2C2C2C2C2C2C2C +2929292929292929292B2B2B2B2B2B2B2B2B3030303030303030303030302D2D2D2D2D2D2D2D2D +2828282828282828283030303030303030304B4B4B4B4B4B4B4B4B646464646464646464646464 +7272727272727272727676767676767676767A7A7A7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D7E7E7E +7E7E7E7E7E7E7E7E7E808080808080808080828282828282828282838383838383838383858585 +8585858585858585858282828282828282827E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F818181 +818181818181818181818181818181818181838383838383838383868686868686868686888888 +888888888888919191919191919191A3A3A3A3A3A3A3A3A3A3A3A3B8B8B8B8B8B8B8B8B8CBCBCB +CBCBCBCBCBCBD6D6D5D6D6D5D6D6D5DDDDDDDDDDDDDDDDDDDDDDDDE6E6E6E6E6E6E6E6E6EDEDED +EDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F3F3F3F3F3F3F3F3F3F3F3F3F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F4F4F4F4F4F4F4F4F4F8F8F8F8F8F8 +F8F8F8F8F8F8FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDF9F9F9F9F9F9F9F9F9F9F9F9F4F4F4F4F4F4F4F4F4EFEFEFEFEFEFEFEFEFE8E8E8E8E8E8 +E8E8E8E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DDDDDDDDDDDD +DDDDDDD8D8D8D8D8D8D8D8D8D0D0D0D0D0D0D0D0D0D0D0D0C4C4C4C4C4C4C4C4C4B8B8B8B8B8B8 +B8B8B8AAAAAAAAAAAAAAAAAA9494949494949494945F605F5F605F5F605F5F605F3F3F3F3F3F3F +3F3F3F3C3C3C3C3C3C3C3C3C3030303030303030302B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F +2F2F2F3434343434343434343939393939393939396C6C6C6C6C6C6C6C6CD8D8D8D8D8D8D8D8D8 +D8D8D8FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD9D9D9D9D9D9D9D9D9 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCD0D0D0D0D0D0D0D0D06C6C6C +6C6C6C6C6C6C3636363636363636363636362C2C2C2C2C2C2C2C2C2929292929292929292B2B2B +2B2B2B2B2B2B3030303030303030303030302D2D2D2D2D2D2D2D2D282828282828282828303030 +3030303030304B4B4B4B4B4B4B4B4B646464646464646464646464727272727272727272767676 +7676767676767A7A7A7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E808080 +808080808080828282828282828282838383838383838383858585858585858585858585828282 +8282828282827E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F818181818181818181818181818181 +818181818181838383838383838383868686868686868686888888888888888888919191919191 +919191A3A3A3A3A3A3A3A3A3A3A3A3B8B8B8B8B8B8B8B8B8CBCBCBCBCBCBCBCBCBD6D6D5D6D6D5 +D6D6D5DDDDDDDDDDDDDDDDDDDDDDDDE6E6E6E6E6E6E6E6E6EDEDEDEDEDEDEDEDEDF1F1F1F1F1F1 +F1F1F1F2F2F2F2F2F2F2F2F2F3F3F3F3F3F3F3F3F3F3F3F3F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F2F2F2F2F2F2F2F2F2F4F4F4F4F4F4F4F4F4F8F8F8F8F8F8F8F8F8F8F8F8FDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE +FEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9 +F9F9F9F4F4F4F4F4F4F4F4F4EFEFEFEFEFEFEFEFEFE8E8E8E8E8E8E8E8E8E2E2E2E2E2E2E2E2E2 +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DDDDDDDDDDDDDDDDDDD8D8D8D8D8D8D8D8D8 +D0D0D0D0D0D0D0D0D0D0D0D0C4C4C4C4C4C4C4C4C4B8B8B8B8B8B8B8B8B8AAAAAAAAAAAAAAAAAA +9494949494949494945F605F5F605F5F605F5F605F3F3F3F3F3F3F3F3F3F3C3C3C3C3C3C3C3C3C +3030303030303030302B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F2F2F2F343434343434343434 +3939393939393939396C6C6C6C6C6C6C6C6CD8D8D8D8D8D8D8D8D8D8D8D8FDFDFDFDFDFDFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD9D9D9D9D9D9D9D9D9FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFBFBFBFBFBFBFBFBFBC5C5C5C5C5C5C5C5C55F605F5F605F5F605F323232323232 +3232323232322B2B2B2B2B2B2B2B2B2828282828282828282929292929292929292F2F2F2F2F2F +2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2929292929292929292F2F2F2F2F2F2F2F2F484848484848 +4848486363636363636363636363637272727272727272727777777777777777777C7C7C7C7C7C +7C7C7C7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F7F7F7F818181818181818181838383838383 +8383838686868686868686868888888888888888888888888A8A8A8A8A8A8A8A8A8B8B8B8B8B8B +8B8B8B8D8D8D8D8D8D8D8D8D9191919191919191919797979797979797979797979E9E9E9E9E9E +9E9E9EA3A3A3A3A3A3A3A3A3A9A9A9A9A9A9A9A9A9BABABABABABABABABACCCCCCCCCCCCCCCCCC +CCCCCCD6D6D6D6D6D6D6D6D6DFDFDFDFDFDFDFDFDFE4E4E4E4E4E4E4E4E4EBEBEBEBEBEBEBEBEB +EBEBEBF1F1F1F1F1F1F1F1F1F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F6F6F6F6F6F6F6F6F6 +F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDF6F6F6F6F6F6F6F6F6 +F7F7F7F7F7F7F7F7F7FBFBFBFBFBFBFBFBFBF9F9F9F9F9F9F9F9F9F9F9F9F5F5F5F5F5F5F5F5F5 +F0F0F0F0F0F0F0F0F0E8E8E8E8E8E8E8E8E8E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DF +E0E0E0E0E0E0E0E0E0DDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D2D2D2D2D2D2D2D2D2D2D2D2 +C7C7C7C7C7C7C7C7C7B9B9B9B9B9B9B9B9B9ABABABABABABABABAB9595959595959595955E5E5E +5E5E5E5E5E5E5E5E5E3B3B3B3B3B3B3B3B3B3737373737373737373030303030303030302D2D2D +2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F323232323232323232363636363636363636686868 +686868686868D6D6D5D6D6D5D6D6D5D6D6D5FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB +FBFBFBC5C5C5C5C5C5C5C5C55F605F5F605F5F605F3232323232323232323232322B2B2B2B2B2B +2B2B2B2828282828282828282929292929292929292F2F2F2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D +2D2D2D2929292929292929292F2F2F2F2F2F2F2F2F484848484848484848636363636363636363 +6363637272727272727272727777777777777777777C7C7C7C7C7C7C7C7C7E7E7E7E7E7E7E7E7E +7F7F7F7F7F7F7F7F7F7F7F7F818181818181818181838383838383838383868686868686868686 +8888888888888888888888888A8A8A8A8A8A8A8A8A8B8B8B8B8B8B8B8B8B8D8D8D8D8D8D8D8D8D +9191919191919191919797979797979797979797979E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3 +A9A9A9A9A9A9A9A9A9BABABABABABABABABACCCCCCCCCCCCCCCCCCCCCCCCD6D6D6D6D6D6D6D6D6 +DFDFDFDFDFDFDFDFDFE4E4E4E4E4E4E4E4E4EBEBEBEBEBEBEBEBEBEBEBEBF1F1F1F1F1F1F1F1F1 +F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F9F9F9 +F9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFDFDFDFDFDFDFDFDFDF6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7FBFBFB +FBFBFBFBFBFBF9F9F9F9F9F9F9F9F9F9F9F9F5F5F5F5F5F5F5F5F5F0F0F0F0F0F0F0F0F0E8E8E8 +E8E8E8E8E8E8E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFE0E0E0E0E0E0E0E0E0DDDDDD +DDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D2D2D2D2D2D2D2D2D2D2D2D2C7C7C7C7C7C7C7C7C7B9B9B9 +B9B9B9B9B9B9ABABABABABABABABAB9595959595959595955E5E5E5E5E5E5E5E5E5E5E5E3B3B3B +3B3B3B3B3B3B3737373737373737373030303030303030302D2D2D2D2D2D2D2D2D2F2F2F2F2F2F +2F2F2F2F2F2F323232323232323232363636363636363636686868686868686868D6D6D5D6D6D5 +D6D6D5D6D6D5FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7 +C7C7C7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAC0C0C0C0C0C0C0C0C0 +5A5A5A5A5A5A5A5A5A3131313131313131313131312C2C2C2C2C2C2C2C2C282828282828282828 +2828282828282828282D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B +2D2D2D2D2D2D2D2D2D4141414141414141415C5C5C5C5C5C5C5C5C5C5C5C707070707070707070 +7979797979797979797D7D7D7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F +8282828282828282828585858585858585858888888888888888888B8B8B8B8B8B8B8B8B8B8B8B +8D8D8D8D8D8D8D8D8D8F8F8F8F8F8F8F8F8F9393939393939393939B9B9B9B9B9B9B9B9BA3A3A3 +A3A3A3A3A3A3A3A3A3AAAAAAAAAAAAAAAAAAB1B1B1B1B1B1B1B1B1BCBCBCBCBCBCBCBCBCCCCCCC +CCCCCCCCCCCCDBDBDBDBDBDBDBDBDBDBDBDBE3E3E3E3E3E3E3E3E3E9E9E9E9E9E9E9E9E9EDEDED +EDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F1F1F1F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F7F7F7 +F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F8F8F8 +F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFCFCFCFCFCFCFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFD +FDFDFDFDFDFDF9F9F9F9F9F9F9F9F9F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F5F5F5F5F5F5 +F5F5F5F5F5F5F0F0F0F0F0F0F0F0F0EDEDEDEDEDEDEDEDEDE5E5E5E5E5E5E5E5E5DBDBDBDBDBDB +DBDBDBD7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4 +D4D4D4D0D0D0D0D0D0D0D0D0D0D0D0CACACACACACACACACABDBDBDBDBDBDBDBDBDAFAFAFAFAFAF +AFAFAF9A9A9A9A9A9A9A9A9A6565656565656565656565653C3C3C3C3C3C3C3C3C373737373737 +3737373131313131313131312D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F313131313131 +3131313434343434343434345A5A5A5A5A5A5A5A5AC6C6C6C6C6C6C6C6C6C6C6C6FCFCFCFCFCFC +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAC0C0C0C0C0C0C0C0C05A5A5A5A5A5A5A5A5A313131 +3131313131313131312C2C2C2C2C2C2C2C2C2828282828282828282828282828282828282D2D2D +2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D414141 +4141414141415C5C5C5C5C5C5C5C5C5C5C5C7070707070707070707979797979797979797D7D7D +7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F828282828282828282858585 +8585858585858888888888888888888B8B8B8B8B8B8B8B8B8B8B8B8D8D8D8D8D8D8D8D8D8F8F8F +8F8F8F8F8F8F9393939393939393939B9B9B9B9B9B9B9B9BA3A3A3A3A3A3A3A3A3A3A3A3AAAAAA +AAAAAAAAAAAAB1B1B1B1B1B1B1B1B1BCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCDBDBDBDBDBDB +DBDBDBDBDBDBE3E3E3E3E3E3E3E3E3E9E9E9E9E9E9E9E9E9EDEDEDEDEDEDEDEDEDF1F1F1F1F1F1 +F1F1F1F1F1F1F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6 +F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9 +F9F9F9F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F5F5F5F5F5F5F5F5F5F5F5F5F0F0F0F0F0F0 +F0F0F0EDEDEDEDEDEDEDEDEDE5E5E5E5E5E5E5E5E5DBDBDBDBDBDBDBDBDBD7D7D7D7D7D7D7D7D7 +D7D7D7D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0 +D0D0D0CACACACACACACACACABDBDBDBDBDBDBDBDBDAFAFAFAFAFAFAFAFAF9A9A9A9A9A9A9A9A9A +6565656565656565656565653C3C3C3C3C3C3C3C3C373737373737373737313131313131313131 +2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2F2F2F313131313131313131343434343434343434 +5A5A5A5A5A5A5A5A5AC6C6C6C6C6C6C6C6C6C6C6C6FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFA +FAFAFAFAFAFAC0C0C0C0C0C0C0C0C05A5A5A5A5A5A5A5A5A3131313131313131313131312C2C2C +2C2C2C2C2C2C2828282828282828282828282828282828282D2D2D2D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D4141414141414141415C5C5C5C5C5C +5C5C5C5C5C5C7070707070707070707979797979797979797D7D7D7D7D7D7D7D7D7F7F7F7F7F7F +7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F828282828282828282858585858585858585888888888888 +8888888B8B8B8B8B8B8B8B8B8B8B8B8D8D8D8D8D8D8D8D8D8F8F8F8F8F8F8F8F8F939393939393 +9393939B9B9B9B9B9B9B9B9BA3A3A3A3A3A3A3A3A3A3A3A3AAAAAAAAAAAAAAAAAAB1B1B1B1B1B1 +B1B1B1BCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCDBDBDBDBDBDBDBDBDBDBDBDBE3E3E3E3E3E3 +E3E3E3E9E9E9E9E9E9E9E9E9EDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F1F1F1F5F5F5F5F5F5 +F5F5F5F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5 +F5F5F5F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +FCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9F7F7F7F7F7F7F7F7F7 +F9F9F9F9F9F9F9F9F9F5F5F5F5F5F5F5F5F5F5F5F5F0F0F0F0F0F0F0F0F0EDEDEDEDEDEDEDEDED +E5E5E5E5E5E5E5E5E5DBDBDBDBDBDBDBDBDBD7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6 +D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0D0D0D0CACACACACACACACACA +BDBDBDBDBDBDBDBDBDAFAFAFAFAFAFAFAFAF9A9A9A9A9A9A9A9A9A656565656565656565656565 +3C3C3C3C3C3C3C3C3C3737373737373737373131313131313131312D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F2F2F2F3131313131313131313434343434343434345A5A5A5A5A5A5A5A5AC6C6C6 +C6C6C6C6C6C6C6C6C6FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6 +C6C6C6C6C6C6FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8B9B9B9B9B9B9 +B9B9B95555555555555555553131313131313131313131312C2C2C2C2C2C2C2C2C282828282828 +2828282727272727272727272C2C2C2C2C2C2C2C2C2C2C2C3131313131313131312C2C2C2C2C2C +2C2C2C2B2B2B2B2B2B2B2B2B3A3A3A3A3A3A3A3A3A5858585858585858585858586D6D6D6D6D6D +6D6D6D7878787878787878787D7D7D7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F808080808080808080 +8080808282828282828282828585858585858585858989898989898989898D8D8D8D8D8D8D8D8D +8D8D8D9191919191919191919494949494949494949B9B9B9B9B9B9B9B9BA2A2A2A2A2A2A2A2A2 +AAAAAAAAAAAAAAAAAAAAAAAAB1B1B1B1B1B1B1B1B1BABABABABABABABABAC4C4C4C4C4C4C4C4C4 +D1D1D1D1D1D1D1D1D1DDDDDDDDDDDDDDDDDDDDDDDDE7E7E7E7E7E7E7E7E7EDEDEDEDEDEDEDEDED +F1F1F1F1F1F1F1F1F1F3F3F3F3F3F3F3F3F3F3F3F3F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FAFAFAFAFAFAFAFAFAF6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F3F3F3F3F3F3F3F3F3EAEAEA +EAEAEAEAEAEAEAEAEAE1E1E1E1E1E1E1E1E1DCDCDCDCDCDCDCDCDCD0D0D0D0D0D0D0D0D0C5C5C5 +C5C5C5C5C5C5BDBDBDBDBDBDBDBDBDBDBDBDB8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8C0C0C0 +C0C0C0C0C0C0C9C9C9C9C9C9C9C9C9C9C9C9C7C7C7C7C7C7C7C7C7BEBEBEBEBEBEBEBEBEB1B1B1 +B1B1B1B1B1B19E9E9E9E9E9E9E9E9E6B6B6B6B6B6B6B6B6B6B6B6B3C3C3C3C3C3C3C3C3C363636 +3636363636363131313131313131312D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F3232323232323232324F4F4F4F4F4F4F4F4FB8B8B8B8B8B8B8B8B8B8B8B8FAFAFA +FAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBBFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF8F8F8F8F8F8F8F8F8B9B9B9B9B9B9B9B9B9555555555555555555 +3131313131313131313131312C2C2C2C2C2C2C2C2C282828282828282828272727272727272727 +2C2C2C2C2C2C2C2C2C2C2C2C3131313131313131312C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B +3A3A3A3A3A3A3A3A3A5858585858585858585858586D6D6D6D6D6D6D6D6D787878787878787878 +7D7D7D7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F808080808080808080808080828282828282828282 +8585858585858585858989898989898989898D8D8D8D8D8D8D8D8D8D8D8D919191919191919191 +9494949494949494949B9B9B9B9B9B9B9B9BA2A2A2A2A2A2A2A2A2AAAAAAAAAAAAAAAAAAAAAAAA +B1B1B1B1B1B1B1B1B1BABABABABABABABABAC4C4C4C4C4C4C4C4C4D1D1D1D1D1D1D1D1D1DDDDDD +DDDDDDDDDDDDDDDDDDE7E7E7E7E7E7E7E7E7EDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F3F3F3 +F3F3F3F3F3F3F3F3F3F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFAFAFAFAFAFAFAFAFAF6F6F6 +F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F3F3F3F3F3F3F3F3F3EAEAEAEAEAEAEAEAEAEAEAEAE1E1E1 +E1E1E1E1E1E1DCDCDCDCDCDCDCDCDCD0D0D0D0D0D0D0D0D0C5C5C5C5C5C5C5C5C5BDBDBDBDBDBD +BDBDBDBDBDBDB8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8C0C0C0C0C0C0C0C0C0C9C9C9C9C9C9 +C9C9C9C9C9C9C7C7C7C7C7C7C7C7C7BEBEBEBEBEBEBEBEBEB1B1B1B1B1B1B1B1B19E9E9E9E9E9E +9E9E9E6B6B6B6B6B6B6B6B6B6B6B6B3C3C3C3C3C3C3C3C3C363636363636363636313131313131 +3131312D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F323232323232 +3232324F4F4F4F4F4F4F4F4FB8B8B8B8B8B8B8B8B8B8B8B8FAFAFAFAFAFAFAFAFAFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +F3F3F3F3F3F3F3F3F3ABABABABABABABABAB4E4E4E4E4E4E4E4E4E2F2F2F2F2F2F2F2F2F2F2F2F +2828282828282828282727272727272727272727272727272727272C2C2C2C2C2C2C2C2C2C2C2C +313131313131313131292929292929292929252525252525252525353535353535353535545454 +5454545454545454546A6A6A6A6A6A6A6A6A7676767676767676767C7C7C7C7C7C7C7C7C7F7F7F +7F7F7F7F7F7F8282828282828282828282828282828282828282828686868686868686868B8B8B +8B8B8B8B8B8B9090909090909090909090909696969696969696969B9B9B9B9B9B9B9B9BA1A1A1 +A1A1A1A1A1A1A7A7A7A7A7A7A7A7A7AEAEAEAEAEAEAEAEAEAEAEAEB4B4B4B4B4B4B4B4B4BCBCBC +BCBCBCBCBCBCC5C5C5C5C5C5C5C5C5D0D0D0D0D0D0D0D0D0DADADADADADADADADADADADAE3E3E3 +E3E3E3E3E3E3E6E6E6E6E6E6E6E6E6ECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDF1F1F1 +F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F3F3F3F3F3F3 +F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6 +F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F8F8F8F8F8F8 +F8F8F8F5F5F5F5F5F5F5F5F5F5F5F5EEEEEEEEEEEEEEEEEEE9E9E9E9E9E9E9E9E9E5E5E5E5E5E5 +E5E5E5DBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBCBCBCBBDBDBDBDBDBDBDBDBDB0B1B0B0B1B0 +B0B1B0A1A1A1A1A1A1A1A1A19595959595959595958F8F8F8F8F8F8F8F8F8F8F8F888888888888 +888888898989898989898989949494949494949494A8A8A8A8A8A8A8A8A8A8A8A8B7B7B7B7B7B7 +B7B7B7B8B8B8B8B8B8B8B8B8B0B1B0B0B1B0B0B1B09E9E9E9E9E9E9E9E9E6D6D6D6D6D6D6D6D6D +6D6D6D3B3B3B3B3B3B3B3B3B3434343434343434343030303030303030302B2B2B2B2B2B2B2B2B +2929292929292929292929292C2C2C2C2C2C2C2C2C3030303030303030304C4C4C4C4C4C4C4C4C +B2B2B2B2B2B2B2B2B2B2B2B2F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C5C5C5C5C5C5C5C5C5FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF3F3F3F3F3F3F3F3F3ABABAB +ABABABABABAB4E4E4E4E4E4E4E4E4E2F2F2F2F2F2F2F2F2F2F2F2F282828282828282828272727 +2727272727272727272727272727272C2C2C2C2C2C2C2C2C2C2C2C313131313131313131292929 +2929292929292525252525252525253535353535353535355454545454545454545454546A6A6A +6A6A6A6A6A6A7676767676767676767C7C7C7C7C7C7C7C7C7F7F7F7F7F7F7F7F7F828282828282 +8282828282828282828282828282828686868686868686868B8B8B8B8B8B8B8B8B909090909090 +9090909090909696969696969696969B9B9B9B9B9B9B9B9BA1A1A1A1A1A1A1A1A1A7A7A7A7A7A7 +A7A7A7AEAEAEAEAEAEAEAEAEAEAEAEB4B4B4B4B4B4B4B4B4BCBCBCBCBCBCBCBCBCC5C5C5C5C5C5 +C5C5C5D0D0D0D0D0D0D0D0D0DADADADADADADADADADADADAE3E3E3E3E3E3E3E3E3E6E6E6E6E6E6 +E6E6E6ECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F2F2F2F2F2F2 +F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F3F3F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4 +F4F4F4F4F4F4F4F4F4F4F4F4F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F8F8F8F8F8F8F8F8F8F5F5F5F5F5F5F5F5F5 +F5F5F5EEEEEEEEEEEEEEEEEEE9E9E9E9E9E9E9E9E9E5E5E5E5E5E5E5E5E5DBDBDBDBDBDBDBDBDB +CBCBCBCBCBCBCBCBCBCBCBCBBDBDBDBDBDBDBDBDBDB0B1B0B0B1B0B0B1B0A1A1A1A1A1A1A1A1A1 +9595959595959595958F8F8F8F8F8F8F8F8F8F8F8F888888888888888888898989898989898989 +949494949494949494A8A8A8A8A8A8A8A8A8A8A8A8B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8 +B0B1B0B0B1B0B0B1B09E9E9E9E9E9E9E9E9E6D6D6D6D6D6D6D6D6D6D6D6D3B3B3B3B3B3B3B3B3B +3434343434343434343030303030303030302B2B2B2B2B2B2B2B2B292929292929292929292929 +2C2C2C2C2C2C2C2C2C3030303030303030304C4C4C4C4C4C4C4C4CB2B2B2B2B2B2B2B2B2B2B2B2 +F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5FEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF3F3F3F3F3F3F3F3F3ABABABABABABABABAB4E4E4E4E4E4E +4E4E4E2F2F2F2F2F2F2F2F2F2F2F2F282828282828282828272727272727272727272727272727 +2727272C2C2C2C2C2C2C2C2C2C2C2C313131313131313131292929292929292929252525252525 +2525253535353535353535355454545454545454545454546A6A6A6A6A6A6A6A6A767676767676 +7676767C7C7C7C7C7C7C7C7C7F7F7F7F7F7F7F7F7F828282828282828282828282828282828282 +8282828686868686868686868B8B8B8B8B8B8B8B8B909090909090909090909090969696969696 +9696969B9B9B9B9B9B9B9B9BA1A1A1A1A1A1A1A1A1A7A7A7A7A7A7A7A7A7AEAEAEAEAEAEAEAEAE +AEAEAEB4B4B4B4B4B4B4B4B4BCBCBCBCBCBCBCBCBCC5C5C5C5C5C5C5C5C5D0D0D0D0D0D0D0D0D0 +DADADADADADADADADADADADAE3E3E3E3E3E3E3E3E3E6E6E6E6E6E6E6E6E6ECECECECECECECECEC +EDEDEDEDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2 +F1F1F1F1F1F1F1F1F1F3F3F3F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4 +F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F8F8F8F8F8F8F8F8F8F5F5F5F5F5F5F5F5F5F5F5F5EEEEEEEEEEEEEEEEEE +E9E9E9E9E9E9E9E9E9E5E5E5E5E5E5E5E5E5DBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBCBCBCB +BDBDBDBDBDBDBDBDBDB0B1B0B0B1B0B0B1B0A1A1A1A1A1A1A1A1A19595959595959595958F8F8F +8F8F8F8F8F8F8F8F8F888888888888888888898989898989898989949494949494949494A8A8A8 +A8A8A8A8A8A8A8A8A8B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B0B1B0B0B1B0B0B1B09E9E9E +9E9E9E9E9E9E6D6D6D6D6D6D6D6D6D6D6D6D3B3B3B3B3B3B3B3B3B343434343434343434303030 +3030303030302B2B2B2B2B2B2B2B2B2929292929292929292929292C2C2C2C2C2C2C2C2C303030 +3030303030304C4C4C4C4C4C4C4C4CB2B2B2B2B2B2B2B2B2B2B2B2F9F9F9F9F9F9F9F9F9FFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5FDFDFDFDFDFDFDFDFDFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDF0F0F0F0F0F0F0F0F0A8A8A8A8A8A8A8A8A84E4E4E4E4E4E4E4E4E2F2F2F2F2F2F2F2F2F +2F2F2F2828282828282828282828282828282828282929292929292929292F2F2F2F2F2F2F2F2F +2F2F2F3232323232323232322B2B2B2B2B2B2B2B2B252525252525252525303030303030303030 +4D4D4D4D4D4D4D4D4D4D4D4D6767676767676767677676767676767676767D7D7D7D7D7D7D7D7D +8080808080808080808282828282828282828282828484848484848484848A8A8A8A8A8A8A8A8A +8F8F8F8F8F8F8F8F8F9595959595959595959595959C9C9C9C9C9C9C9C9CA0A0A0A0A0A0A0A0A0 +A5A5A5A5A5A5A5A5A5AAAAAAAAAAAAAAAAAAB0B1B0B0B1B0B0B1B0B0B1B0B5B5B5B5B5B5B5B5B5 +BBBBBBBBBBBBBBBBBBC2C2C2C2C2C2C2C2C2C9C9C9C9C9C9C9C9C9D0D0D0D0D0D0D0D0D0D0D0D0 +D8D8D8D8D8D8D8D8D8DCDCDCDCDCDCDCDCDCE1E1E1E1E1E1E1E1E1E4E4E4E4E4E4E4E4E4E4E4E4 +E7E7E7E7E7E7E7E7E7EBEBEBEBEBEBEBEBEBEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEFEFEF +EFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEECECECECECECECECECEDEDEDEDEDEDEDEDEDF0F0F0 +F0F0F0F0F0F0F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1EFEFEFEFEFEFEFEFEFEAEAEA +EAEAEAEAEAEAE4E4E4E4E4E4E4E4E4E4E4E4DFDFDFDFDFDFDFDFDFD6D6D6D6D6D6D6D6D6C4C4C4 +C4C4C4C4C4C4ACACACACACACACACAC9191919191919191919191917F7F7F7F7F7F7F7F7F767676 +7676767676766D6D6D6D6D6D6D6D6D6666666666666666666464646464646464646464645E5E5E +5E5E5E5E5E5E6161616161616161616666666666666666667575757575757575757575758B8B8B +8B8B8B8B8B8B9F9F9F9F9F9F9F9F9FA8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F747474747474 +7474747474743E3E3E3E3E3E3E3E3E3434343434343434342F2F2F2F2F2F2F2F2F2B2B2B2B2B2B +2B2B2B2929292929292929292929292C2C2C2C2C2C2C2C2C303030303030303030494949494949 +494949AFAFAFAFAFAFAFAFAFAFAFAFF9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C6C6C6C6C6C6C6C6C6FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF0F0F0F0F0F0F0F0F0 +A8A8A8A8A8A8A8A8A84E4E4E4E4E4E4E4E4E2F2F2F2F2F2F2F2F2F2F2F2F282828282828282828 +2828282828282828282929292929292929292F2F2F2F2F2F2F2F2F2F2F2F323232323232323232 +2B2B2B2B2B2B2B2B2B2525252525252525253030303030303030304D4D4D4D4D4D4D4D4D4D4D4D +6767676767676767677676767676767676767D7D7D7D7D7D7D7D7D808080808080808080828282 +8282828282828282828484848484848484848A8A8A8A8A8A8A8A8A8F8F8F8F8F8F8F8F8F959595 +9595959595959595959C9C9C9C9C9C9C9C9CA0A0A0A0A0A0A0A0A0A5A5A5A5A5A5A5A5A5AAAAAA +AAAAAAAAAAAAB0B1B0B0B1B0B0B1B0B0B1B0B5B5B5B5B5B5B5B5B5BBBBBBBBBBBBBBBBBBC2C2C2 +C2C2C2C2C2C2C9C9C9C9C9C9C9C9C9D0D0D0D0D0D0D0D0D0D0D0D0D8D8D8D8D8D8D8D8D8DCDCDC +DCDCDCDCDCDCE1E1E1E1E1E1E1E1E1E4E4E4E4E4E4E4E4E4E4E4E4E7E7E7E7E7E7E7E7E7EBEBEB +EBEBEBEBEBEBEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEFEFEFEFEFEFEFEFEFEFEFEFEEEEEE +EEEEEEEEEEEEECECECECECECECECECEDEDEDEDEDEDEDEDEDF0F0F0F0F0F0F0F0F0F2F2F2F2F2F2 +F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1EFEFEFEFEFEFEFEFEFEAEAEAEAEAEAEAEAEAE4E4E4E4E4E4 +E4E4E4E4E4E4DFDFDFDFDFDFDFDFDFD6D6D6D6D6D6D6D6D6C4C4C4C4C4C4C4C4C4ACACACACACAC +ACACAC9191919191919191919191917F7F7F7F7F7F7F7F7F7676767676767676766D6D6D6D6D6D +6D6D6D6666666666666666666464646464646464646464645E5E5E5E5E5E5E5E5E616161616161 +6161616666666666666666667575757575757575757575758B8B8B8B8B8B8B8B8B9F9F9F9F9F9F +9F9F9FA8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F7474747474747474747474743E3E3E3E3E3E +3E3E3E3434343434343434342F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B292929292929292929 +2929292C2C2C2C2C2C2C2C2C303030303030303030494949494949494949AFAFAFAFAFAFAFAFAF +AFAFAFF9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6 +FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFD +FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC +FCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA +FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBEFEFEFEFEFEFEFEFEFA9A9A9A9A9A9A9A9A9505050 +5050505050502F2F2F2F2F2F2F2F2F2F2F2F2828282828282828282828282828282828282B2B2B +2B2B2B2B2B2B3131313131313131313131313535353535353535352B2B2B2B2B2B2B2B2B242424 +2424242424242C2C2C2C2C2C2C2C2C474747474747474747474747646464646464646464737373 +7373737373737C7C7C7C7C7C7C7C7C818181818181818181838383838383838383838383858585 +8585858585858C8C8C8C8C8C8C8C8C9393939393939393939B9B9B9B9B9B9B9B9B9B9B9B9F9F9F +9F9F9F9F9F9FA3A3A3A3A3A3A3A3A3A7A7A7A7A7A7A7A7A7ADADADADADADADADADB1B1B1B1B1B1 +B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDC3C3C3C3C3C3 +C3C3C3C8C8C8C8C8C8C8C8C8C8C8C8CECECECECECECECECED0D0D0D0D0D0D0D0D0D5D5D5D5D5D5 +D5D5D5DADADADADADADADADADADADADDDDDDDDDDDDDDDDDDE2E2E2E2E2E2E2E2E2E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4 +E4E4E4E3E3E3E3E3E3E3E3E3E7E7E7E7E7E7E7E7E7EAEAEAEAEAEAEAEAEAEAEAEAE8E8E8E8E8E8 +E8E8E8E2E2E2E2E2E2E2E2E2DBDBDBDBDBDBDBDBDBD0D0D0D0D0D0D0D0D0D0D0D0C7C7C7C7C7C7 +C7C7C7B2B2B2B2B2B2B2B2B29191919191919191917575757575757575755B5B5B5B5B5B5B5B5B +5B5B5B5050505050505050504E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C +4C4C4C4C4C4C4C4C4C4C4C4C4B4B4B4B4B4B4B4B4B4C4C4C4C4C4C4C4C4C505050505050505050 +595959595959595959595959646464646464646464737373737373737373888888888888888888 +9595959595959595957A7A7A7A7A7A7A7A7A7A7A7A414141414141414141323232323232323232 +2D2D2D2D2D2D2D2D2D2828282828282828282828282828282828282828282B2B2B2B2B2B2B2B2B +2F2F2F2F2F2F2F2F2F464646464646464646A8A8A8A8A8A8A8A8A8A8A8A8F8F8F8F8F8F8F8F8F8 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3FCFCFCFCFCFCFCFCFCFDFDFD +FDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFDFDFD +FDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFBFB +FBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFBFB +FBFBFBFBFBFBEFEFEFEFEFEFEFEFEFA9A9A9A9A9A9A9A9A95050505050505050502F2F2F2F2F2F +2F2F2F2F2F2F2828282828282828282828282828282828282B2B2B2B2B2B2B2B2B313131313131 +3131313131313535353535353535352B2B2B2B2B2B2B2B2B2424242424242424242C2C2C2C2C2C +2C2C2C4747474747474747474747476464646464646464647373737373737373737C7C7C7C7C7C +7C7C7C8181818181818181818383838383838383838383838585858585858585858C8C8C8C8C8C +8C8C8C9393939393939393939B9B9B9B9B9B9B9B9B9B9B9B9F9F9F9F9F9F9F9F9FA3A3A3A3A3A3 +A3A3A3A7A7A7A7A7A7A7A7A7ADADADADADADADADADB1B1B1B1B1B1B1B1B1B1B1B1B5B5B5B5B5B5 +B5B5B5B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDC3C3C3C3C3C3C3C3C3C8C8C8C8C8C8C8C8C8 +C8C8C8CECECECECECECECECED0D0D0D0D0D0D0D0D0D5D5D5D5D5D5D5D5D5DADADADADADADADADA +DADADADDDDDDDDDDDDDDDDDDE2E2E2E2E2E2E2E2E2E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E9E9E9E9E9E9E9E9E9E9E9E9E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3 +E7E7E7E7E7E7E7E7E7EAEAEAEAEAEAEAEAEAEAEAEAE8E8E8E8E8E8E8E8E8E2E2E2E2E2E2E2E2E2 +DBDBDBDBDBDBDBDBDBD0D0D0D0D0D0D0D0D0D0D0D0C7C7C7C7C7C7C7C7C7B2B2B2B2B2B2B2B2B2 +9191919191919191917575757575757575755B5B5B5B5B5B5B5B5B5B5B5B505050505050505050 +4E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C +4B4B4B4B4B4B4B4B4B4C4C4C4C4C4C4C4C4C505050505050505050595959595959595959595959 +6464646464646464647373737373737373738888888888888888889595959595959595957A7A7A +7A7A7A7A7A7A7A7A7A4141414141414141413232323232323232322D2D2D2D2D2D2D2D2D282828 +2828282828282828282828282828282828282B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F464646 +464646464646A8A8A8A8A8A8A8A8A8A8A8A8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFCFCFC +FCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFCFCFC +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFAFAFAFAFAFA +FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBEFEFEFEFEFEF +EFEFEFA9A9A9A9A9A9A9A9A95050505050505050502F2F2F2F2F2F2F2F2F2F2F2F282828282828 +2828282828282828282828282B2B2B2B2B2B2B2B2B313131313131313131313131353535353535 +3535352B2B2B2B2B2B2B2B2B2424242424242424242C2C2C2C2C2C2C2C2C474747474747474747 +4747476464646464646464647373737373737373737C7C7C7C7C7C7C7C7C818181818181818181 +8383838383838383838383838585858585858585858C8C8C8C8C8C8C8C8C939393939393939393 +9B9B9B9B9B9B9B9B9B9B9B9B9F9F9F9F9F9F9F9F9FA3A3A3A3A3A3A3A3A3A7A7A7A7A7A7A7A7A7 +ADADADADADADADADADB1B1B1B1B1B1B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8 +BDBDBDBDBDBDBDBDBDC3C3C3C3C3C3C3C3C3C8C8C8C8C8C8C8C8C8C8C8C8CECECECECECECECECE +D0D0D0D0D0D0D0D0D0D5D5D5D5D5D5D5D5D5DADADADADADADADADADADADADDDDDDDDDDDDDDDDDD +E2E2E2E2E2E2E2E2E2E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E9E9E9E9E9E9E9E9E9E9E9E9 +E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E7E7E7E7E7E7E7E7E7EAEAEA +EAEAEAEAEAEAEAEAEAE8E8E8E8E8E8E8E8E8E2E2E2E2E2E2E2E2E2DBDBDBDBDBDBDBDBDBD0D0D0 +D0D0D0D0D0D0D0D0D0C7C7C7C7C7C7C7C7C7B2B2B2B2B2B2B2B2B2919191919191919191757575 +7575757575755B5B5B5B5B5B5B5B5B5B5B5B5050505050505050504E4E4E4E4E4E4E4E4E4C4C4C +4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4B4B4B4B4B4B4B4B4B4C4C4C +4C4C4C4C4C4C505050505050505050595959595959595959595959646464646464646464737373 +7373737373738888888888888888889595959595959595957A7A7A7A7A7A7A7A7A7A7A7A414141 +4141414141413232323232323232322D2D2D2D2D2D2D2D2D282828282828282828282828282828 +2828282828282B2B2B2B2B2B2B2B2B2F2F2F2F2F2F2F2F2F464646464646464646A8A8A8A8A8A8 +A8A8A8A8A8A8F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3 +C3C3C3F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7EAEAEAEAEAEAEAEAEAA6A6A6A6A6A6A6A6A6 +515151515151515151303030303030303030303030292929292929292929292929292929292929 +2D2D2D2D2D2D2D2D2D3131313131313131313131313232323232323232322B2B2B2B2B2B2B2B2B +2525252525252525252929292929292929294141414141414141414141415F605F5F605F5F605F +7070707070707070707979797979797979797F7F7F7F7F7F7F7F7F838383838383838383838383 +8686868686868686868C8C8C8C8C8C8C8C8C9696969696969696969E9E9E9E9E9E9E9E9E9E9E9E +A1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4A8A8A8A8A8A8A8A8A8ACACACACACACACACACAFAFAF +AFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8BCBCBC +BCBCBCBCBCBCBEBEBEBEBEBEBEBEBEBEBEBEC0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C5C5C5 +C5C5C5C5C5C5CDCDCDCDCDCDCDCDCDCDCDCDD3D3D3D3D3D3D3D3D3D6D6D6D6D6D6D6D6D6DDDDDD +DDDDDDDDDDDDDFE0DFDFE0DFDFE0DFE3E3E3E3E3E3E3E3E3E3E3E3E0E0E0E0E0E0E0E0E0DBDBDB +DBDBDBDBDBDBD9D9D9D9D9D9D9D9D9DCDCDCDCDCDCDCDCDCDFE0DFDFE0DFDFE0DFDFE0DFDBDBDB +DBDBDBDBDBDBD1D1D1D1D1D1D1D1D1C9C9C9C9C9C9C9C9C9BCBCBCBCBCBCBCBCBCBCBCBCA8A8A8 +A8A8A8A8A8A8888888888888888888676767676767676767525252525252525252454545454545 +4545454545453F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F454545454545 +4545454B4B4B4B4B4B4B4B4B4B4B4B4D4D4D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4E525252525252 +5252525656565656565656565656565A5A5A5A5A5A5A5A5A6161616161616161616D6D6D6D6D6D +6D6D6D8383838383838383837D7D7D7D7D7D7D7D7D7D7D7D464646464646464646313131313131 +3131312D2D2D2D2D2D2D2D2D2828282828282828282828282828282828282828282B2B2B2B2B2B +2B2B2B2D2D2D2D2D2D2D2D2D4141414141414141419E9E9E9E9E9E9E9E9E9E9E9EF5F5F5F5F5F5 +F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6 +F7F7F7F7F7F7F7F7F7EAEAEAEAEAEAEAEAEAA6A6A6A6A6A6A6A6A6515151515151515151303030 +3030303030303030302929292929292929292929292929292929292D2D2D2D2D2D2D2D2D313131 +3131313131313131313232323232323232322B2B2B2B2B2B2B2B2B252525252525252525292929 +2929292929294141414141414141414141415F605F5F605F5F605F707070707070707070797979 +7979797979797F7F7F7F7F7F7F7F7F8383838383838383838383838686868686868686868C8C8C +8C8C8C8C8C8C9696969696969696969E9E9E9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A4A4A4 +A4A4A4A4A4A4A8A8A8A8A8A8A8A8A8ACACACACACACACACACAFAFAFAFAFAFAFAFAFAFAFAFB0B1B0 +B0B1B0B0B1B0B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBEBEBEBEBEBE +BEBEBEBEBEBEC0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C5C5C5C5C5C5C5C5C5CDCDCDCDCDCD +CDCDCDCDCDCDD3D3D3D3D3D3D3D3D3D6D6D6D6D6D6D6D6D6DDDDDDDDDDDDDDDDDDDFE0DFDFE0DF +DFE0DFE3E3E3E3E3E3E3E3E3E3E3E3E0E0E0E0E0E0E0E0E0DBDBDBDBDBDBDBDBDBD9D9D9D9D9D9 +D9D9D9DCDCDCDCDCDCDCDCDCDFE0DFDFE0DFDFE0DFDFE0DFDBDBDBDBDBDBDBDBDBD1D1D1D1D1D1 +D1D1D1C9C9C9C9C9C9C9C9C9BCBCBCBCBCBCBCBCBCBCBCBCA8A8A8A8A8A8A8A8A8888888888888 +8888886767676767676767675252525252525252524545454545454545454545453F3F3F3F3F3F +3F3F3F3E3E3E3E3E3E3E3E3E3F3F3F3F3F3F3F3F3F4545454545454545454B4B4B4B4B4B4B4B4B +4B4B4B4D4D4D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4E525252525252525252565656565656565656 +5656565A5A5A5A5A5A5A5A5A6161616161616161616D6D6D6D6D6D6D6D6D838383838383838383 +7D7D7D7D7D7D7D7D7D7D7D7D4646464646464646463131313131313131312D2D2D2D2D2D2D2D2D +2828282828282828282828282828282828282828282B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D +4141414141414141419E9E9E9E9E9E9E9E9E9E9E9EF5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F7F7F7F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F6F6F6F6F6F6F6F6F6F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7EAEAEA +EAEAEAEAEAEAA6A6A6A6A6A6A6A6A6515151515151515151303030303030303030303030292929 +2929292929292929292929292929292D2D2D2D2D2D2D2D2D313131313131313131313131323232 +3232323232322B2B2B2B2B2B2B2B2B252525252525252525292929292929292929414141414141 +4141414141415F605F5F605F5F605F7070707070707070707979797979797979797F7F7F7F7F7F +7F7F7F8383838383838383838383838686868686868686868C8C8C8C8C8C8C8C8C969696969696 +9696969E9E9E9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4A8A8A8A8A8A8 +A8A8A8ACACACACACACACACACAFAFAFAFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0B4B4B4B4B4B4 +B4B4B4B8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBEBEBEBEBEBEBEBEBEBEBEBEC0C0C0C0C0C0 +C0C0C0C1C1C1C1C1C1C1C1C1C5C5C5C5C5C5C5C5C5CDCDCDCDCDCDCDCDCDCDCDCDD3D3D3D3D3D3 +D3D3D3D6D6D6D6D6D6D6D6D6DDDDDDDDDDDDDDDDDDDFE0DFDFE0DFDFE0DFE3E3E3E3E3E3E3E3E3 +E3E3E3E0E0E0E0E0E0E0E0E0DBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9DCDCDCDCDCDCDCDCDC +DFE0DFDFE0DFDFE0DFDFE0DFDBDBDBDBDBDBDBDBDBD1D1D1D1D1D1D1D1D1C9C9C9C9C9C9C9C9C9 +BCBCBCBCBCBCBCBCBCBCBCBCA8A8A8A8A8A8A8A8A8888888888888888888676767676767676767 +5252525252525252524545454545454545454545453F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E +3F3F3F3F3F3F3F3F3F4545454545454545454B4B4B4B4B4B4B4B4B4B4B4B4D4D4D4D4D4D4D4D4D +4E4E4E4E4E4E4E4E4E5252525252525252525656565656565656565656565A5A5A5A5A5A5A5A5A +6161616161616161616D6D6D6D6D6D6D6D6D8383838383838383837D7D7D7D7D7D7D7D7D7D7D7D +4646464646464646463131313131313131312D2D2D2D2D2D2D2D2D282828282828282828282828 +2828282828282828282B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D4141414141414141419E9E9E +9E9E9E9E9E9E9E9E9EF5F5F5F5F5F5F5F5F5FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7B4B4B4 +B4B4B4B4B4B4F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6 +F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4 +F4F4F4F4F4F4F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F3F3F3F3F3F3 +F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F1F1F1F1F1F1F1F1F1E2E2E2E2E2E2E2E2E2A1A1A1A1A1A1 +A1A1A1525252525252525252323232323232323232323232292929292929292929292929292929 +2929292C2C2C2C2C2C2C2C2C2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B +2B2B2B252525252525252525272727272727272727373737373737373737373737585858585858 +5858586D6D6D6D6D6D6D6D6D7777777777777777777E7E7E7E7E7E7E7E7E828282828282828282 +8282828787878787878787878D8D8D8D8D8D8D8D8D9595959595959595959D9D9D9D9D9D9D9D9D +9D9D9DA1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A5 +A7A7A7A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAADADADADADADADADADADADADADADADADADAD +ADADADADADADADADADAFAFAFAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B3B3B3B3B3B3B3B3B3 +B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDBDBDBDC4C4C4C4C4C4C4C4C4CBCBCBCBCBCBCBCBCB +D2D2D2D2D2D2D2D2D2D6D6D6D6D6D6D6D6D6D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8 +D3D3D3D3D3D3D3D3D3D0D0D0D0D0D0D0D0D0D3D3D3D3D3D3D3D3D3D5D5D5D5D5D5D5D5D5D5D5D5 +CFCFCFCFCFCFCFCFCFC5C5C5C5C5C5C5C5C5B9B9B9B9B9B9B9B9B9A3A3A3A3A3A3A3A3A3A3A3A3 +8686868686868686866969696969696969695454545454545454544646464646464646463C3C3C +3C3C3C3C3C3C3C3C3C3939393939393939393C3C3C3C3C3C3C3C3C4B4B4B4B4B4B4B4B4B5C5C5C +5C5C5C5C5C5C6767676767676767676767676D6D6D6D6D6D6D6D6D6F6F6F6F6F6F6F6F6F6E6E6E +6E6E6E6E6E6E6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6A6A6A6A6A6A6A6A6A686868 +6868686868687676767676767676767E7E7E7E7E7E7E7E7E7E7E7E4F4F4F4F4F4F4F4F4F313131 +3131313131312C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2929292929292929292929292B2B2B +2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C3A3A3A3A3A3A3A3A3A8D8D8D8D8D8D8D8D8D8D8D8DEFEFEF +EFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3F3F3F3 +F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3 +F3F3F3F1F1F1F1F1F1F1F1F1E2E2E2E2E2E2E2E2E2A1A1A1A1A1A1A1A1A1525252525252525252 +3232323232323232323232322929292929292929292929292929292929292C2C2C2C2C2C2C2C2C +2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B252525252525252525 +2727272727272727273737373737373737373737375858585858585858586D6D6D6D6D6D6D6D6D +7777777777777777777E7E7E7E7E7E7E7E7E828282828282828282828282878787878787878787 +8D8D8D8D8D8D8D8D8D9595959595959595959D9D9D9D9D9D9D9D9D9D9D9DA1A1A1A1A1A1A1A1A1 +A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A5A7A7A7A7A7A7A7A7A7A7A7A7 +AAAAAAAAAAAAAAAAAAADADADADADADADADADADADADADADADADADADADADADADADADADADADAFAFAF +AFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B3B3B3B3B3B3B3B3B3B8B8B8B8B8B8B8B8B8BDBDBD +BDBDBDBDBDBDBDBDBDC4C4C4C4C4C4C4C4C4CBCBCBCBCBCBCBCBCBD2D2D2D2D2D2D2D2D2D6D6D6 +D6D6D6D6D6D6D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D3D3D3D3D3D3D3D3D3D0D0D0 +D0D0D0D0D0D0D3D3D3D3D3D3D3D3D3D5D5D5D5D5D5D5D5D5D5D5D5CFCFCFCFCFCFCFCFCFC5C5C5 +C5C5C5C5C5C5B9B9B9B9B9B9B9B9B9A3A3A3A3A3A3A3A3A3A3A3A3868686868686868686696969 +6969696969695454545454545454544646464646464646463C3C3C3C3C3C3C3C3C3C3C3C393939 +3939393939393C3C3C3C3C3C3C3C3C4B4B4B4B4B4B4B4B4B5C5C5C5C5C5C5C5C5C676767676767 +6767676767676D6D6D6D6D6D6D6D6D6F6F6F6F6F6F6F6F6F6E6E6E6E6E6E6E6E6E6B6B6B6B6B6B +6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6A6A6A6A6A6A6A6A6A686868686868686868767676767676 +7676767E7E7E7E7E7E7E7E7E7E7E7E4F4F4F4F4F4F4F4F4F3131313131313131312C2C2C2C2C2C +2C2C2C2B2B2B2B2B2B2B2B2B2929292929292929292929292B2B2B2B2B2B2B2B2B2C2C2C2C2C2C +2C2C2C3A3A3A3A3A3A3A3A3A8D8D8D8D8D8D8D8D8D8D8D8DEFEFEFEFEFEFEFEFEFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4 +F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2 +F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEDEDEDEDEDEDEDEDED +D9D9D9D9D9D9D9D9D99C9C9C9C9C9C9C9C9C555555555555555555353535353535353535353535 +2C2C2C2C2C2C2C2C2C2929292929292929292B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C +2C2C2C2C2C2C2C2C2C292929292929292929252525252525252525272727272727272727313131 +3131313131313131315050505050505050506A6A6A6A6A6A6A6A6A7676767676767676767D7D7D +7D7D7D7D7D7D8181818181818181818181818888888888888888888F8F8F8F8F8F8F8F8F949494 +9494949494949A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B969696969696969696949494 +9494949494949292929292929292928F8F8F8F8F8F8F8F8F8F8F8F909090909090909090919191 +9191919191918E8E8E8E8E8E8E8E8E8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8D8D8D939393 +9393939393939E9E9E9E9E9E9E9E9EA5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A8A8A8B2B2B2 +B2B2B2B2B2B2BEBEBEBEBEBEBEBEBEC5C5C5C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9CDCDCDCDCDCD +CDCDCDCDCDCDD0D0D0D0D0D0D0D0D0CBCBCBCBCBCBCBCBCBCACACACACACACACACACBCBCBCBCBCB +CBCBCBCCCCCCCCCCCCCCCCCCCCCCCCC7C7C7C7C7C7C7C7C7BDBDBDBDBDBDBDBDBDAAAAAAAAAAAA +AAAAAA8A8A8A8A8A8A8A8A8A8A8A8A6B6B6B6B6B6B6B6B6B555555555555555555474747474747 +4747474141414141414141413E3E3E3E3E3E3E3E3E3E3E3E444444444444444444565656565656 +5656566E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E8888888888888888888888888E8E8E8E8E8E +8E8E8E8D8D8D8D8D8D8D8D8D8A8A8A8A8A8A8A8A8A878787878787878787878787828282828282 +8282827979797979797979797474747474747474747B7B7B7B7B7B7B7B7B838383838383838383 +8383835C5C5C5C5C5C5C5C5C3535353535353535352D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F +3030303030303030303030302D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F373737373737373737 +7B7B7B7B7B7B7B7B7B7B7B7BE4E4E4E4E4E4E4E4E4FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFA +D0D0D0D0D0D0D0D0D0F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4 +F4F4F4F4F4F4F4F4F4F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1 +F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEDEDEDEDEDEDEDEDEDD9D9D9D9D9D9D9D9D99C9C9C +9C9C9C9C9C9C5555555555555555553535353535353535353535352C2C2C2C2C2C2C2C2C292929 +2929292929292B2B2B2B2B2B2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C292929 +292929292929252525252525252525272727272727272727313131313131313131313131505050 +5050505050506A6A6A6A6A6A6A6A6A7676767676767676767D7D7D7D7D7D7D7D7D818181818181 +8181818181818888888888888888888F8F8F8F8F8F8F8F8F9494949494949494949A9A9A9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B969696969696969696949494949494949494929292929292 +9292928F8F8F8F8F8F8F8F8F8F8F8F9090909090909090909191919191919191918E8E8E8E8E8E +8E8E8E8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8D8D8D9393939393939393939E9E9E9E9E9E +9E9E9EA5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2BEBEBEBEBEBE +BEBEBEC5C5C5C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9CDCDCDCDCDCDCDCDCDCDCDCDD0D0D0D0D0D0 +D0D0D0CBCBCBCBCBCBCBCBCBCACACACACACACACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCC +CCCCCCC7C7C7C7C7C7C7C7C7BDBDBDBDBDBDBDBDBDAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8A +8A8A8A6B6B6B6B6B6B6B6B6B555555555555555555474747474747474747414141414141414141 +3E3E3E3E3E3E3E3E3E3E3E3E4444444444444444445656565656565656566E6E6E6E6E6E6E6E6E +7E7E7E7E7E7E7E7E7E8888888888888888888888888E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D +8A8A8A8A8A8A8A8A8A878787878787878787878787828282828282828282797979797979797979 +7474747474747474747B7B7B7B7B7B7B7B7B8383838383838383838383835C5C5C5C5C5C5C5C5C +3535353535353535352D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F303030303030303030303030 +2D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F3737373737373737377B7B7B7B7B7B7B7B7B7B7B7B +E4E4E4E4E4E4E4E4E4FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0F3F3F3 +F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F3F3F3 +F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F2F2F2 +F2F2F2F2F2F2F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEF +EFEFEFEFEFEFEDEDEDEDEDEDEDEDEDD9D9D9D9D9D9D9D9D99C9C9C9C9C9C9C9C9C555555555555 +5555553535353535353535353535352C2C2C2C2C2C2C2C2C2929292929292929292B2B2B2B2B2B +2B2B2B2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C292929292929292929252525252525 +2525252727272727272727273131313131313131313131315050505050505050506A6A6A6A6A6A +6A6A6A7676767676767676767D7D7D7D7D7D7D7D7D818181818181818181818181888888888888 +8888888F8F8F8F8F8F8F8F8F9494949494949494949A9A9A9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B +9B9B9B9696969696969696969494949494949494949292929292929292928F8F8F8F8F8F8F8F8F +8F8F8F9090909090909090909191919191919191918E8E8E8E8E8E8E8E8E8C8C8C8C8C8C8C8C8C +8D8D8D8D8D8D8D8D8D8D8D8D9393939393939393939E9E9E9E9E9E9E9E9EA5A5A5A5A5A5A5A5A5 +A8A8A8A8A8A8A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2BEBEBEBEBEBEBEBEBEC5C5C5C5C5C5C5C5C5 +C9C9C9C9C9C9C9C9C9CDCDCDCDCDCDCDCDCDCDCDCDD0D0D0D0D0D0D0D0D0CBCBCBCBCBCBCBCBCB +CACACACACACACACACACBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCC7C7C7C7C7C7C7C7C7 +BDBDBDBDBDBDBDBDBDAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8A8A8A8A6B6B6B6B6B6B6B6B6B +5555555555555555554747474747474747474141414141414141413E3E3E3E3E3E3E3E3E3E3E3E +4444444444444444445656565656565656566E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E888888 +8888888888888888888E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D8A8A8A8A8A8A8A8A8A878787 +8787878787878787878282828282828282827979797979797979797474747474747474747B7B7B +7B7B7B7B7B7B8383838383838383838383835C5C5C5C5C5C5C5C5C3535353535353535352D2D2D +2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F3030303030303030303030302D2D2D2D2D2D2D2D2D2F2F2F +2F2F2F2F2F2F3737373737373737377B7B7B7B7B7B7B7B7B7B7B7BE4E4E4E4E4E4E4E4E4FEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0F0F0F0F0F0F0F0F0F0F1F1F1F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEAEAEAEAEAEA +EAEAEAD6D6D5D6D6D5D6D6D59D9D9D9D9D9D9D9D9D575757575757575757353535353535353535 +3535352C2C2C2C2C2C2C2C2C292929292929292929292929292929292929292929292929292929 +292929282828282828282828272727272727272727252525252525252525242424242424242424 +2B2B2B2B2B2B2B2B2B2B2B2B464646464646464646656565656565656565747474747474747474 +7C7C7C7C7C7C7C7C7C8080808080808080808080808686868686868686868F8F8F8F8F8F8F8F8F +9393939393939393939191919191919191919191918989898989898989897C7C7C7C7C7C7C7C7C +7373737373737373736F6F6F6F6F6F6F6F6F6A6A6A6A6A6A6A6A6A6A6A6A696969696969696969 +6868686868686868686262626262626262625F605F5F605F5F605F646464646464646464646464 +6C6C6C6C6C6C6C6C6C7B7B7B7B7B7B7B7B7B8484848484848484848B8B8B8B8B8B8B8B8B8B8B8B +9A9A9A9A9A9A9A9A9AABABABABABABABABABB7B7B7B7B7B7B7B7B7BBBBBBBBBBBBBBBBBBC3C3C3 +C3C3C3C3C3C3C3C3C3C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9 +C9C9C9C9C9C9C8C8C8C8C8C8C8C8C8C8C8C8C0C0C0C0C0C0C0C0C0B2B2B2B2B2B2B2B2B29D9D9D +9D9D9D9D9D9D7C7C7C7C7C7C7C7C7C7C7C7C5F605F5F605F5F605F505050505050505050484848 +4848484848484545454545454545454B4B4B4B4B4B4B4B4B4B4B4B5959595959595959596B6B6B +6B6B6B6B6B6B7C7C7C7C7C7C7C7C7C8686868686868686868D8D8D8D8D8D8D8D8D8D8D8D949494 +9494949494949494949494949494949191919191919191918F8F8F8F8F8F8F8F8F8F8F8F8C8C8C +8C8C8C8C8C8C8686868686868686868383838383838383838B8B8B8B8B8B8B8B8B929292929292 +9292929292927070707070707070703A3A3A3A3A3A3A3A3A303030303030303030323232323232 +323232353535353535353535353535313131313131313131313131313131313131393939393939 +3939396B6B6B6B6B6B6B6B6B6B6B6BD7D7D7D7D7D7D7D7D7FDFDFDFDFDFDFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9CACACACACACACACACAF0F0F0F0F0F0F0F0F0F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1 +F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F1F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEAEAEAEAEAEAEAEAEAD6D6D5D6D6D5D6D6D5 +9D9D9D9D9D9D9D9D9D5757575757575757573535353535353535353535352C2C2C2C2C2C2C2C2C +292929292929292929292929292929292929292929292929292929292929282828282828282828 +2727272727272727272525252525252525252424242424242424242B2B2B2B2B2B2B2B2B2B2B2B +4646464646464646466565656565656565657474747474747474747C7C7C7C7C7C7C7C7C808080 +8080808080808080808686868686868686868F8F8F8F8F8F8F8F8F939393939393939393919191 +9191919191919191918989898989898989897C7C7C7C7C7C7C7C7C7373737373737373736F6F6F +6F6F6F6F6F6F6A6A6A6A6A6A6A6A6A6A6A6A696969696969696969686868686868686868626262 +6262626262625F605F5F605F5F605F6464646464646464646464646C6C6C6C6C6C6C6C6C7B7B7B +7B7B7B7B7B7B8484848484848484848B8B8B8B8B8B8B8B8B8B8B8B9A9A9A9A9A9A9A9A9AABABAB +ABABABABABABB7B7B7B7B7B7B7B7B7BBBBBBBBBBBBBBBBBBC3C3C3C3C3C3C3C3C3C3C3C3C8C8C8 +C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C9C9C9C9C9C9C9C9C9C8C8C8C8C8C8 +C8C8C8C8C8C8C0C0C0C0C0C0C0C0C0B2B2B2B2B2B2B2B2B29D9D9D9D9D9D9D9D9D7C7C7C7C7C7C +7C7C7C7C7C7C5F605F5F605F5F605F505050505050505050484848484848484848454545454545 +4545454B4B4B4B4B4B4B4B4B4B4B4B5959595959595959596B6B6B6B6B6B6B6B6B7C7C7C7C7C7C +7C7C7C8686868686868686868D8D8D8D8D8D8D8D8D8D8D8D949494949494949494949494949494 +9494949191919191919191918F8F8F8F8F8F8F8F8F8F8F8F8C8C8C8C8C8C8C8C8C868686868686 +8686868383838383838383838B8B8B8B8B8B8B8B8B929292929292929292929292707070707070 +7070703A3A3A3A3A3A3A3A3A303030303030303030323232323232323232353535353535353535 +3535353131313131313131313131313131313131313939393939393939396B6B6B6B6B6B6B6B6B +6B6B6BD7D7D7D7D7D7D7D7D7FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACA +EEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EBEBEBEBEBEBEBEBEBECECECECECECECECECEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9E9E9E9EAEAEA +EAEAEAEAEAEAEAEAEAE8E8E8E8E8E8E8E8E8D6D6D6D6D6D6D6D6D69E9E9E9E9E9E9E9E9E575757 +5757575757573434343434343434343434342C2C2C2C2C2C2C2C2C292929292929292929272727 +272727272727272727272727272727272727272727272727272727252525252525252525222222 +2222222222222121212121212121212525252525252525252525253E3E3E3E3E3E3E3E3E5F605F +5F605F5F605F7272727272727272727B7B7B7B7B7B7B7B7B808080808080808080808080858585 +8585858585858B8B8B8B8B8B8B8B8B8787878787878787877A7A7A7A7A7A7A7A7A7A7A7A6E6E6E +6E6E6E6E6E6E5F605F5F605F5F605F5252525252525252524E4E4E4E4E4E4E4E4E4C4C4C4C4C4C +4C4C4C4C4C4C494949494949494949464646464646464646414141414141414141424242424242 +4242424848484848484848484848484C4C4C4C4C4C4C4C4C5555555555555555555D5D5D5D5D5D +5D5D5D6868686868686868686868687B7B7B7B7B7B7B7B7B929292929292929292A4A4A4A4A4A4 +A4A4A4ADADADADADADADADADB8B8B8B8B8B8B8B8B8B8B8B8C2C2C2C2C2C2C2C2C2CACACACACACA +CACACACFCFCFCFCFCFCFCFCFCECECECECECECECECECACACACACACACACACACACACABFBFBFBFBFBF +BFBFBFACACACACACACACACAC939393939393939393787878787878787878787878626262626262 +6262625959595959595959595454545454545454544E4E4E4E4E4E4E4E4E525252525252525252 +5252525B5B5B5B5B5B5B5B5B686868686868686868757575757575757575787878787878787878 +777777777777777777777777828282828282828282878787878787878787898989898989898989 +8B8B8B8B8B8B8B8B8B8B8B8B8D8D8D8D8D8D8D8D8D8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D +9797979797979797979E9E9E9E9E9E9E9E9E9E9E9E7F7F7F7F7F7F7F7F7F404040404040404040 +2F2F2F2F2F2F2F2F2F343434343434343434373737373737373737373737363636363636363636 +3636363636363636363C3C3C3C3C3C3C3C3C656565656565656565656565CECECECECECECECECE +FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDEEEEEEEEEEEEEEEEEEEFEFEF +EFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBECECEC +ECECECECECECEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE8E8E8 +E8E8E8E8E8E8D6D6D6D6D6D6D6D6D69E9E9E9E9E9E9E9E9E575757575757575757343434343434 +3434343434342C2C2C2C2C2C2C2C2C292929292929292929272727272727272727272727272727 +272727272727272727272727272727252525252525252525222222222222222222212121212121 +2121212525252525252525252525253E3E3E3E3E3E3E3E3E5F605F5F605F5F605F727272727272 +7272727B7B7B7B7B7B7B7B7B8080808080808080808080808585858585858585858B8B8B8B8B8B +8B8B8B8787878787878787877A7A7A7A7A7A7A7A7A7A7A7A6E6E6E6E6E6E6E6E6E5F605F5F605F +5F605F5252525252525252524E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C4C4C4C494949494949 +494949464646464646464646414141414141414141424242424242424242484848484848484848 +4848484C4C4C4C4C4C4C4C4C5555555555555555555D5D5D5D5D5D5D5D5D686868686868686868 +6868687B7B7B7B7B7B7B7B7B929292929292929292A4A4A4A4A4A4A4A4A4ADADADADADADADADAD +B8B8B8B8B8B8B8B8B8B8B8B8C2C2C2C2C2C2C2C2C2CACACACACACACACACACFCFCFCFCFCFCFCFCF +CECECECECECECECECECACACACACACACACACACACACABFBFBFBFBFBFBFBFBFACACACACACACACACAC +939393939393939393787878787878787878787878626262626262626262595959595959595959 +5454545454545454544E4E4E4E4E4E4E4E4E5252525252525252525252525B5B5B5B5B5B5B5B5B +686868686868686868757575757575757575787878787878787878777777777777777777777777 +8282828282828282828787878787878787878989898989898989898B8B8B8B8B8B8B8B8B8B8B8B +8D8D8D8D8D8D8D8D8D8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D9797979797979797979E9E9E +9E9E9E9E9E9E9E9E9E7F7F7F7F7F7F7F7F7F4040404040404040402F2F2F2F2F2F2F2F2F343434 +3434343434343737373737373737373737373636363636363636363636363636363636363C3C3C +3C3C3C3C3C3C656565656565656565656565CECECECECECECECECEFDFDFDFDFDFDFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEEEEEEEEEEEE +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBECECECECECECECECECEBEBEBEBEBEB +EBEBEBE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE8E8E8E8E8E8E8E8E8D6D6D6D6D6D6 +D6D6D69E9E9E9E9E9E9E9E9E5757575757575757573434343434343434343434342C2C2C2C2C2C +2C2C2C292929292929292929272727272727272727272727272727272727272727272727272727 +272727252525252525252525222222222222222222212121212121212121252525252525252525 +2525253E3E3E3E3E3E3E3E3E5F605F5F605F5F605F7272727272727272727B7B7B7B7B7B7B7B7B +8080808080808080808080808585858585858585858B8B8B8B8B8B8B8B8B878787878787878787 +7A7A7A7A7A7A7A7A7A7A7A7A6E6E6E6E6E6E6E6E6E5F605F5F605F5F605F525252525252525252 +4E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C4C4C4C494949494949494949464646464646464646 +4141414141414141414242424242424242424848484848484848484848484C4C4C4C4C4C4C4C4C +5555555555555555555D5D5D5D5D5D5D5D5D6868686868686868686868687B7B7B7B7B7B7B7B7B +929292929292929292A4A4A4A4A4A4A4A4A4ADADADADADADADADADB8B8B8B8B8B8B8B8B8B8B8B8 +C2C2C2C2C2C2C2C2C2CACACACACACACACACACFCFCFCFCFCFCFCFCFCECECECECECECECECECACACA +CACACACACACACACACABFBFBFBFBFBFBFBFBFACACACACACACACACAC939393939393939393787878 +7878787878787878786262626262626262625959595959595959595454545454545454544E4E4E +4E4E4E4E4E4E5252525252525252525252525B5B5B5B5B5B5B5B5B686868686868686868757575 +757575757575787878787878787878777777777777777777777777828282828282828282878787 +8787878787878989898989898989898B8B8B8B8B8B8B8B8B8B8B8B8D8D8D8D8D8D8D8D8D8C8C8C +8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D9797979797979797979E9E9E9E9E9E9E9E9E9E9E9E7F7F7F +7F7F7F7F7F7F4040404040404040402F2F2F2F2F2F2F2F2F343434343434343434373737373737 +3737373737373636363636363636363636363636363636363C3C3C3C3C3C3C3C3C656565656565 +656565656565CECECECECECECECECEFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BDBDBDBDBDBD +BDBDBDEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECEC +ECECECEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E5E5E5E5E5E5E5E5E5D6D6D5D6D6D5D6D6D59F9F9F9F9F9F9F9F9F +5656565656565656563434343434343434343434342D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B +282828282828282828252525252525252525252525252525252525252525242424242424242424 +242424242424242424222222222222222222242424242424242424242424373737373737373737 +5C5C5C5C5C5C5C5C5C7272727272727272727C7C7C7C7C7C7C7C7C818181818181818181818181 +8383838383838383837E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E5D5D5D5D5D5D5D5D5D5D5D5D +5151515151515151514747474747474747474040404040404040403B3B3B3B3B3B3B3B3B393939 +393939393939393939373737373737373737343434343434343434323232323232323232353535 +3535353535353A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C444444 +4444444444444E4E4E4E4E4E4E4E4E4E4E4E6262626262626262627A7A7A7A7A7A7A7A7A909090 +909090909090A0A0A0A0A0A0A0A0A0B1B1B1B1B1B1B1B1B1B1B1B1C0C0C0C0C0C0C0C0C0CCCCCC +CCCCCCCCCCCCD7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7CFCFCFCFCFCFCFCFCFCFCFCFBFBFBF +BFBFBFBFBFBFABABABABABABABABAB9292929292929292927D7D7D7D7D7D7D7D7D7D7D7D6B6B6B +6B6B6B6B6B6B5D5D5D5D5D5D5D5D5D555555555555555555545454545454545454585858585858 +5858585858585C5C5C5C5C5C5C5C5C5F605F5F605F5F605F656565656565656565646464646464 +6464646565656565656565656565656E6E6E6E6E6E6E6E6E717171717171717171717171717171 +7171717C7C7C7C7C7C7C7C7C7C7C7C8888888888888888888C8C8C8C8C8C8C8C8C909090909090 +9090909B9B9B9B9B9B9B9B9BA3A3A3A3A3A3A3A3A3A3A3A38D8D8D8D8D8D8D8D8D4B4B4B4B4B4B +4B4B4B2F2F2F2F2F2F2F2F2F3232323232323232323939393939393939393939393B3B3B3B3B3B +3B3B3B3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C636363636363636363636363CBCBCBCBCBCB +CBCBCBFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7EEEEEEEEEEEEEEEEEE +EEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEE +EDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBECECECECECECECECECECECECEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECECECECEAEAEAEAEAEAEAEAEA +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E5E5E5E5E5E5E5E5E5D6D6D5D6D6D5D6D6D59F9F9F9F9F9F9F9F9F565656565656565656343434 +3434343434343434342D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B282828282828282828252525 +252525252525252525252525252525252525242424242424242424242424242424242424222222 +2222222222222424242424242424242424243737373737373737375C5C5C5C5C5C5C5C5C727272 +7272727272727C7C7C7C7C7C7C7C7C8181818181818181818181818383838383838383837E7E7E +7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E5D5D5D5D5D5D5D5D5D5D5D5D515151515151515151474747 +4747474747474040404040404040403B3B3B3B3B3B3B3B3B393939393939393939393939373737 +3737373737373434343434343434343232323232323232323535353535353535353A3A3A3A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C4444444444444444444E4E4E4E4E4E +4E4E4E4E4E4E6262626262626262627A7A7A7A7A7A7A7A7A909090909090909090A0A0A0A0A0A0 +A0A0A0B1B1B1B1B1B1B1B1B1B1B1B1C0C0C0C0C0C0C0C0C0CCCCCCCCCCCCCCCCCCD7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7CFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFABABABABABAB +ABABAB9292929292929292927D7D7D7D7D7D7D7D7D7D7D7D6B6B6B6B6B6B6B6B6B5D5D5D5D5D5D +5D5D5D5555555555555555555454545454545454545858585858585858585858585C5C5C5C5C5C +5C5C5C5F605F5F605F5F605F656565656565656565646464646464646464656565656565656565 +6565656E6E6E6E6E6E6E6E6E7171717171717171717171717171717171717C7C7C7C7C7C7C7C7C +7C7C7C8888888888888888888C8C8C8C8C8C8C8C8C9090909090909090909B9B9B9B9B9B9B9B9B +A3A3A3A3A3A3A3A3A3A3A3A38D8D8D8D8D8D8D8D8D4B4B4B4B4B4B4B4B4B2F2F2F2F2F2F2F2F2F +3232323232323232323939393939393939393939393B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A +3C3C3C3C3C3C3C3C3C636363636363636363636363CBCBCBCBCBCBCBCBCBFCFCFCFCFCFCFCFCFC +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8 +E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E5E5E5E5E5E5E5E5E5D6D6D5 +D6D6D5D6D6D59F9F9F9F9F9F9F9F9F5656565656565656563434343434343434343434342D2D2D +2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B282828282828282828252525252525252525252525252525 +252525252525242424242424242424242424242424242424222222222222222222242424242424 +2424242424243737373737373737375C5C5C5C5C5C5C5C5C7272727272727272727C7C7C7C7C7C +7C7C7C8181818181818181818181818383838383838383837E7E7E7E7E7E7E7E7E6E6E6E6E6E6E +6E6E6E5D5D5D5D5D5D5D5D5D5D5D5D515151515151515151474747474747474747404040404040 +4040403B3B3B3B3B3B3B3B3B393939393939393939393939373737373737373737343434343434 +3434343232323232323232323535353535353535353A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A +3A3A3A3C3C3C3C3C3C3C3C3C4444444444444444444E4E4E4E4E4E4E4E4E4E4E4E626262626262 +6262627A7A7A7A7A7A7A7A7A909090909090909090A0A0A0A0A0A0A0A0A0B1B1B1B1B1B1B1B1B1 +B1B1B1C0C0C0C0C0C0C0C0C0CCCCCCCCCCCCCCCCCCD7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +CFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFABABABABABABABABAB929292929292929292 +7D7D7D7D7D7D7D7D7D7D7D7D6B6B6B6B6B6B6B6B6B5D5D5D5D5D5D5D5D5D555555555555555555 +5454545454545454545858585858585858585858585C5C5C5C5C5C5C5C5C5F605F5F605F5F605F +6565656565656565656464646464646464646565656565656565656565656E6E6E6E6E6E6E6E6E +7171717171717171717171717171717171717C7C7C7C7C7C7C7C7C7C7C7C888888888888888888 +8C8C8C8C8C8C8C8C8C9090909090909090909B9B9B9B9B9B9B9B9BA3A3A3A3A3A3A3A3A3A3A3A3 +8D8D8D8D8D8D8D8D8D4B4B4B4B4B4B4B4B4B2F2F2F2F2F2F2F2F2F323232323232323232393939 +3939393939393939393B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C636363 +636363636363636363CBCBCBCBCBCBCBCBCBFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7 +C7C7C7C7C7C7EDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEBEBEBEBEBEB +EBEBEBEBEBEBE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2CFCFCFCFCFCFCFCFCF999999999999 +9999995454545454545454543636363636363636363636363030303030303030302C2C2C2C2C2C +2C2C2C292929292929292929272727272727272727272727252525252525252525242424242424 +242424222222222222222222212121212121212121212121212121212121212121313131313131 +3131315959595959595959597272727272727272727B7B7B7B7B7B7B7B7B7F7F7F7F7F7F7F7F7F +7F7F7F7C7C7C7C7C7C7C7C7C6A6A6A6A6A6A6A6A6A525252525252525252464646464646464646 +4646464040404040404040403A3A3A3A3A3A3A3A3A363636363636363636343434343434343434 +3434343434343434343434343232323232323232322F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D +313131313131313131353535353535353535353535363636363636363636393939393939393939 +3B3B3B3B3B3B3B3B3B444444444444444444444444555555555555555555696969696969696969 +7F7F7F7F7F7F7F7F7F929292929292929292A9A9A9A9A9A9A9A9A9A9A9A9C0C0C0C0C0C0C0C0C0 +D3D3D3D3D3D3D3D3D3DDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDED6D6D5D6D6D5D6D6D5D6D6D5 +C2C2C2C2C2C2C2C2C2ACACACACACACACACAC979797979797979797818181818181818181818181 +6B6B6B6B6B6B6B6B6B5C5C5C5C5C5C5C5C5C5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A555555 +5555555555555555554E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C5959595959595959594D4D4D +4D4D4D4D4D4D5858585858585858585858585D5D5D5D5D5D5D5D5D646464646464646464626262 +6262626262626767676767676767676767677B7B7B7B7B7B7B7B7B888888888888888888919191 +9191919191919D9D9D9D9D9D9D9D9DA6A6A6A6A6A6A6A6A6A6A6A6969696969696969696585858 +585858585858323232323232323232343434343434343434363636363636363636363636393939 +3939393939393939393939393939393A3A3A3A3A3A3A3A3A656565656565656565656565CDCDCD +CDCDCDCDCDCDFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD7D7D7D7D7D7D7D7D7EDEDEDEDEDED +EDEDEDEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECEDEDEDEDEDED +EDEDEDEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9 +E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8 +E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E2E2E2E2E2E2E2E2E2CFCFCFCFCFCFCFCFCF999999999999999999545454545454545454 +3636363636363636363636363030303030303030302C2C2C2C2C2C2C2C2C292929292929292929 +272727272727272727272727252525252525252525242424242424242424222222222222222222 +212121212121212121212121212121212121212121313131313131313131595959595959595959 +7272727272727272727B7B7B7B7B7B7B7B7B7F7F7F7F7F7F7F7F7F7F7F7F7C7C7C7C7C7C7C7C7C +6A6A6A6A6A6A6A6A6A525252525252525252464646464646464646464646404040404040404040 +3A3A3A3A3A3A3A3A3A363636363636363636343434343434343434343434343434343434343434 +3232323232323232322F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D313131313131313131353535 +3535353535353535353636363636363636363939393939393939393B3B3B3B3B3B3B3B3B444444 +4444444444444444445555555555555555556969696969696969697F7F7F7F7F7F7F7F7F929292 +929292929292A9A9A9A9A9A9A9A9A9A9A9A9C0C0C0C0C0C0C0C0C0D3D3D3D3D3D3D3D3D3DDDDDD +DDDDDDDDDDDDDEDEDEDEDEDEDEDEDED6D6D5D6D6D5D6D6D5D6D6D5C2C2C2C2C2C2C2C2C2ACACAC +ACACACACACAC9797979797979797978181818181818181818181816B6B6B6B6B6B6B6B6B5C5C5C +5C5C5C5C5C5C5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5555555555555555555555554E4E4E +4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C5959595959595959594D4D4D4D4D4D4D4D4D585858585858 +5858585858585D5D5D5D5D5D5D5D5D646464646464646464626262626262626262676767676767 +6767676767677B7B7B7B7B7B7B7B7B8888888888888888889191919191919191919D9D9D9D9D9D +9D9D9DA6A6A6A6A6A6A6A6A6A6A6A6969696969696969696585858585858585858323232323232 +323232343434343434343434363636363636363636363636393939393939393939393939393939 +3939393A3A3A3A3A3A3A3A3A656565656565656565656565CDCDCDCDCDCDCDCDCDFCFCFCFCFCFC +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFBFBFBFBFBFBFBFBFBD7D7D7D7D7D7D7D7D7EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAE8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E1E1E1E1E1E1E1E1E1 +CDCDCDCDCDCDCDCDCD959595959595959595505050505050505050343434343434343434343434 +2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B282828282828282828282828 +252525252525252525222222222222222222222222222222222222222222222222222222222222 +2222222222222222222D2D2D2D2D2D2D2D2D5555555555555555557272727272727272727B7B7B +7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7A7A7A6E6E6E6E6E6E6E6E6E565656565656565656424242 +4242424242423B3B3B3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3C3C3C +3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F4242424242424242424242424141414141414141413E3E3E +3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3C3C3C +3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E464646464646464646464646545454 +5454545454545F605F5F605F5F605F717171717171717171868686868686868686A1A1A1A1A1A1 +A1A1A1A1A1A1BFBFBFBFBFBFBFBFBFD8D8D8D8D8D8D8D8D8E6E6E6E6E6E6E6E6E6E9E9E9E9E9E9 +E9E9E9DFDFDFDFDFDFDFDFDFDFDFDFC5C5C5C5C5C5C5C5C5ADADADADADADADADAD989898989898 +9898988181818181818181818181816B6B6B6B6B6B6B6B6B636363636363636363626262626262 +6262625B5B5B5B5B5B5B5B5B5454545454545454545454545252525252525252524D4D4D4D4D4D +4D4D4D7A7A7A7A7A7A7A7A7A585858585858585858686868686868686868686868636363636363 +6363635555555555555555555858585858585858586161616161616161616161616E6E6E6E6E6E +6E6E6E8282828282828282829191919191919191919E9E9E9E9E9E9E9E9EA7A7A7A7A7A7A7A7A7 +A7A7A79F9F9F9F9F9F9F9F9F676767676767676767373737373737373737363636363636363636 +363636363636363636363636373737373737373737363636363636363636393939393939393939 +6F6F6F6F6F6F6F6F6F6F6F6FD6D6D6D6D6D6D6D6D6FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +CACACACACACACACACAEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEAEAEA +EAEAEAEAEAEAEAEAEAE8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E1E1E1E1E1E1E1E1E1CDCDCDCDCDCDCDCDCD959595 +9595959595955050505050505050503434343434343434343434342F2F2F2F2F2F2F2F2F2F2F2F +2F2F2F2F2F2F2B2B2B2B2B2B2B2B2B282828282828282828282828252525252525252525222222 +2222222222222222222222222222222222222222222222222222222222222222222222222D2D2D +2D2D2D2D2D2D5555555555555555557272727272727272727B7B7B7B7B7B7B7B7B7A7A7A7A7A7A +7A7A7A7A7A7A6E6E6E6E6E6E6E6E6E5656565656565656564242424242424242423B3B3B3B3B3B +3B3B3B3B3B3B3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F +3F3F3F4242424242424242424242424141414141414141413E3E3E3E3E3E3E3E3E3B3B3B3B3B3B +3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C +3C3C3C3E3E3E3E3E3E3E3E3E4646464646464646464646465454545454545454545F605F5F605F +5F605F717171717171717171868686868686868686A1A1A1A1A1A1A1A1A1A1A1A1BFBFBFBFBFBF +BFBFBFD8D8D8D8D8D8D8D8D8E6E6E6E6E6E6E6E6E6E9E9E9E9E9E9E9E9E9DFDFDFDFDFDFDFDFDF +DFDFDFC5C5C5C5C5C5C5C5C5ADADADADADADADADAD989898989898989898818181818181818181 +8181816B6B6B6B6B6B6B6B6B6363636363636363636262626262626262625B5B5B5B5B5B5B5B5B +5454545454545454545454545252525252525252524D4D4D4D4D4D4D4D4D7A7A7A7A7A7A7A7A7A +585858585858585858686868686868686868686868636363636363636363555555555555555555 +5858585858585858586161616161616161616161616E6E6E6E6E6E6E6E6E828282828282828282 +9191919191919191919E9E9E9E9E9E9E9E9EA7A7A7A7A7A7A7A7A7A7A7A79F9F9F9F9F9F9F9F9F +676767676767676767373737373737373737363636363636363636363636363636363636363636 +3737373737373737373636363636363636363939393939393939396F6F6F6F6F6F6F6F6F6F6F6F +D6D6D6D6D6D6D6D6D6FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACAEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAE8E9E8 +E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8 +E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E1E1E1E1E1E1E1E1E1CDCDCDCDCDCDCDCDCD959595959595959595505050505050 +5050503434343434343434343434342F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2F2B2B2B2B2B2B +2B2B2B282828282828282828282828252525252525252525222222222222222222222222222222 +2222222222222222222222222222222222222222222222222D2D2D2D2D2D2D2D2D555555555555 +5555557272727272727272727B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7A7A7A6E6E6E6E6E6E +6E6E6E5656565656565656564242424242424242423B3B3B3B3B3B3B3B3B3B3B3B3A3A3A3A3A3A +3A3A3A3A3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F424242424242424242 +4242424141414141414141413E3E3E3E3E3E3E3E3E3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B +3B3B3B3B3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3C3E3E3E3E3E3E3E3E3E +4646464646464646464646465454545454545454545F605F5F605F5F605F717171717171717171 +868686868686868686A1A1A1A1A1A1A1A1A1A1A1A1BFBFBFBFBFBFBFBFBFD8D8D8D8D8D8D8D8D8 +E6E6E6E6E6E6E6E6E6E9E9E9E9E9E9E9E9E9DFDFDFDFDFDFDFDFDFDFDFDFC5C5C5C5C5C5C5C5C5 +ADADADADADADADADAD9898989898989898988181818181818181818181816B6B6B6B6B6B6B6B6B +6363636363636363636262626262626262625B5B5B5B5B5B5B5B5B545454545454545454545454 +5252525252525252524D4D4D4D4D4D4D4D4D7A7A7A7A7A7A7A7A7A585858585858585858686868 +686868686868686868636363636363636363555555555555555555585858585858585858616161 +6161616161616161616E6E6E6E6E6E6E6E6E8282828282828282829191919191919191919E9E9E +9E9E9E9E9E9EA7A7A7A7A7A7A7A7A7A7A7A79F9F9F9F9F9F9F9F9F676767676767676767373737 +373737373737363636363636363636363636363636363636363636373737373737373737363636 +3636363636363939393939393939396F6F6F6F6F6F6F6F6F6F6F6FD6D6D6D6D6D6D6D6D6FDFDFD +FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACAECECECECECECECECECECECECECECEC +ECECECEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E0E0E0E0E0E0 +E0E0E0CBCBCBCBCBCBCBCBCB9090909090909090904F4F4F4F4F4F4F4F4F343434343434343434 +3434342D2D2D2D2D2D2D2D2D2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D292929292929292929 +292929252525252525252525222222222222222222222222222222222222222222222222222222 +2020202020202020202020202B2B2B2B2B2B2B2B2B525252525252525252727272727272727272 +7979797979797979796F6F6F6F6F6F6F6F6F6F6F6F5B5B5B5B5B5B5B5B5B494949494949494949 +4242424242424242424141414141414141414141414747474747474747474F4F4F4F4F4F4F4F4F +5656565656565656565C5C5C5C5C5C5C5C5C5E5E5E5E5E5E5E5E5E5E5E5E5A5A5A5A5A5A5A5A5A +5252525252525252524C4C4C4C4C4C4C4C4C4444444444444444443F3F3F3F3F3F3F3F3F3F3F3F +3E3E3E3E3E3E3E3E3E3C3C3C3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F474747474747474747474747 +5252525252525252525B5B5B5B5B5B5B5B5B6969696969696969697D7D7D7D7D7D7D7D7D9B9B9B +9B9B9B9B9B9B9B9B9BBFBFBFBFBFBFBFBFBFDEDEDEDEDEDEDEDEDEEDEDEDEDEDEDEDEDEDF5F5F5 +F5F5F5F5F5F5E5E5E5E5E5E5E5E5E5E5E5E5C7C7C7C7C7C7C7C7C7ADADADADADADADADAD999999 +9999999999998383838383838383838383837373737373737373736D6D6D6D6D6D6D6D6D6B6B6B +6B6B6B6B6B6B707070707070707070636363636363636363636363595959595959595959474747 +4747474747475F605F5F605F5F605F6161616161616161617F7F7F7F7F7F7F7F7F7F7F7F7C7C7C +7C7C7C7C7C7C6767676767676767675E5E5E5E5E5E5E5E5E686868686868686868686868727272 +7272727272728080808080808080809292929292929292929F9F9F9F9F9F9F9F9FA8A8A8A8A8A8 +A8A8A8A8A8A8A4A4A4A4A4A4A4A4A47777777777777777773F3F3F3F3F3F3F3F3F363636363636 +3636363636363636363636363636363636363636363636363939393939393939393E3E3E3E3E3E +3E3E3E848484848484848484848484E4E4E4E4E4E4E4E4E4FDFDFDFDFDFDFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB +FBFBFBD4D4D4D4D4D4D4D4D4ECECECECECECECECECECECECECECECECECECEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E0E0E0E0E0E0E0E0E0CBCBCBCBCBCBCBCBCB +9090909090909090904F4F4F4F4F4F4F4F4F3434343434343434343434342D2D2D2D2D2D2D2D2D +2F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D292929292929292929292929252525252525252525 +222222222222222222222222222222222222222222222222222222202020202020202020202020 +2B2B2B2B2B2B2B2B2B5252525252525252527272727272727272727979797979797979796F6F6F +6F6F6F6F6F6F6F6F6F5B5B5B5B5B5B5B5B5B494949494949494949424242424242424242414141 +4141414141414141414747474747474747474F4F4F4F4F4F4F4F4F5656565656565656565C5C5C +5C5C5C5C5C5C5E5E5E5E5E5E5E5E5E5E5E5E5A5A5A5A5A5A5A5A5A5252525252525252524C4C4C +4C4C4C4C4C4C4444444444444444443F3F3F3F3F3F3F3F3F3F3F3F3E3E3E3E3E3E3E3E3E3C3C3C +3C3C3C3C3C3C3F3F3F3F3F3F3F3F3F4747474747474747474747475252525252525252525B5B5B +5B5B5B5B5B5B6969696969696969697D7D7D7D7D7D7D7D7D9B9B9B9B9B9B9B9B9B9B9B9BBFBFBF +BFBFBFBFBFBFDEDEDEDEDEDEDEDEDEEDEDEDEDEDEDEDEDEDF5F5F5F5F5F5F5F5F5E5E5E5E5E5E5 +E5E5E5E5E5E5C7C7C7C7C7C7C7C7C7ADADADADADADADADAD999999999999999999838383838383 +8383838383837373737373737373736D6D6D6D6D6D6D6D6D6B6B6B6B6B6B6B6B6B707070707070 +7070706363636363636363636363635959595959595959594747474747474747475F605F5F605F +5F605F6161616161616161617F7F7F7F7F7F7F7F7F7F7F7F7C7C7C7C7C7C7C7C7C676767676767 +6767675E5E5E5E5E5E5E5E5E686868686868686868686868727272727272727272808080808080 +8080809292929292929292929F9F9F9F9F9F9F9F9FA8A8A8A8A8A8A8A8A8A8A8A8A4A4A4A4A4A4 +A4A4A47777777777777777773F3F3F3F3F3F3F3F3F363636363636363636363636363636363636 +3636363636363636363636363939393939393939393E3E3E3E3E3E3E3E3E848484848484848484 +848484E4E4E4E4E4E4E4E4E4FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD4D4D4D4D4D4D4D4D4 +ECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9 +E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E9E9E9 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2CBCBCBCBCBCBCBCBCB919191919191919191515151 +5151515151513434343434343434343434342C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2D2D2D +2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B242424242424242424202020202020202020212121 +2121212121212121212121212121212121212121212121212121212929292929292929294E4E4E +4E4E4E4E4E4E717171717171717171747474747474747474636363636363636363636363505050 +5050505050504848484848484848484747474747474747474E4E4E4E4E4E4E4E4E4E4E4E5B5B5B +5B5B5B5B5B5B6565656565656565656B6B6B6B6B6B6B6B6B6E6E6E6E6E6E6E6E6E6A6A6A6A6A6A +6A6A6A6A6A6A6262626262626262625858585858585858584F4F4F4F4F4F4F4F4F4B4B4B4B4B4B +4B4B4B4848484848484848484848484C4C4C4C4C4C4C4C4C484848484848484848444444444444 +4444444646464646464646464646464E4E4E4E4E4E4E4E4E5A5A5A5A5A5A5A5A5A676767676767 +676767787878787878787878929292929292929292929292B8B8B8B8B8B8B8B8B8DBDBDBDBDBDB +DBDBDBEDEDEDEDEDEDEDEDEDF6F6F6F6F6F6F6F6F6E5E5E5E5E5E5E5E5E5E5E5E5C8C8C8C8C8C8 +C8C8C8B0B1B0B0B1B0B0B1B09D9D9D9D9D9D9D9D9D8E8E8E8E8E8E8E8E8E8E8E8E848484848484 +8484847C7C7C7C7C7C7C7C7C808080808080808080919191919191919191797979797979797979 +7979796262626262626262625656565656565656565D5D5D5D5D5D5D5D5D707070707070707070 +949494949494949494949494949494949494949494828282828282828282797979797979797979 +7A7A7A7A7A7A7A7A7A7A7A7A808080808080808080888888888888888888959595959595959595 +A4A4A4A4A4A4A4A4A4ACACACACACACACACACACACACA8A8A8A8A8A8A8A8A8868686868686868686 +484848484848484848393939393939393939393939393939393939393939373737373737373737 +3B3B3B3B3B3B3B3B3B4848484848484848489B9B9B9B9B9B9B9B9B9B9B9BF0F0F0F0F0F0F0F0F0 +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE1E1E1E1E1E1E1E1E1ECECECECECECECECECEBEBEB +EBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9 +E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E2E2E2 +E2E2E2E2E2E2CBCBCBCBCBCBCBCBCB919191919191919191515151515151515151343434343434 +3434343434342C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B +2B2B2B2B2B2B242424242424242424202020202020202020212121212121212121212121212121 +2121212121212121212121212121212929292929292929294E4E4E4E4E4E4E4E4E717171717171 +717171747474747474747474636363636363636363636363505050505050505050484848484848 +4848484747474747474747474E4E4E4E4E4E4E4E4E4E4E4E5B5B5B5B5B5B5B5B5B656565656565 +6565656B6B6B6B6B6B6B6B6B6E6E6E6E6E6E6E6E6E6A6A6A6A6A6A6A6A6A6A6A6A626262626262 +6262625858585858585858584F4F4F4F4F4F4F4F4F4B4B4B4B4B4B4B4B4B484848484848484848 +4848484C4C4C4C4C4C4C4C4C484848484848484848444444444444444444464646464646464646 +4646464E4E4E4E4E4E4E4E4E5A5A5A5A5A5A5A5A5A676767676767676767787878787878787878 +929292929292929292929292B8B8B8B8B8B8B8B8B8DBDBDBDBDBDBDBDBDBEDEDEDEDEDEDEDEDED +F6F6F6F6F6F6F6F6F6E5E5E5E5E5E5E5E5E5E5E5E5C8C8C8C8C8C8C8C8C8B0B1B0B0B1B0B0B1B0 +9D9D9D9D9D9D9D9D9D8E8E8E8E8E8E8E8E8E8E8E8E8484848484848484847C7C7C7C7C7C7C7C7C +808080808080808080919191919191919191797979797979797979797979626262626262626262 +5656565656565656565D5D5D5D5D5D5D5D5D707070707070707070949494949494949494949494 +9494949494949494948282828282828282827979797979797979797A7A7A7A7A7A7A7A7A7A7A7A +808080808080808080888888888888888888959595959595959595A4A4A4A4A4A4A4A4A4ACACAC +ACACACACACACACACACA8A8A8A8A8A8A8A8A8868686868686868686484848484848484848393939 +3939393939393939393939393939393939393737373737373737373B3B3B3B3B3B3B3B3B484848 +4848484848489B9B9B9B9B9B9B9B9B9B9B9BF0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFC +FCFCFCFCFCFCE1E1E1E1E1E1E1E1E1ECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEA +EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8 +E8E9E8E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2CBCBCBCBCBCB +CBCBCB9191919191919191915151515151515151513434343434343434343434342C2C2C2C2C2C +2C2C2C2B2B2B2B2B2B2B2B2B2D2D2D2D2D2D2D2D2D2B2B2B2B2B2B2B2B2B2B2B2B242424242424 +242424202020202020202020212121212121212121212121212121212121212121212121212121 +2121212929292929292929294E4E4E4E4E4E4E4E4E717171717171717171747474747474747474 +636363636363636363636363505050505050505050484848484848484848474747474747474747 +4E4E4E4E4E4E4E4E4E4E4E4E5B5B5B5B5B5B5B5B5B6565656565656565656B6B6B6B6B6B6B6B6B +6E6E6E6E6E6E6E6E6E6A6A6A6A6A6A6A6A6A6A6A6A626262626262626262585858585858585858 +4F4F4F4F4F4F4F4F4F4B4B4B4B4B4B4B4B4B4848484848484848484848484C4C4C4C4C4C4C4C4C +4848484848484848484444444444444444444646464646464646464646464E4E4E4E4E4E4E4E4E +5A5A5A5A5A5A5A5A5A676767676767676767787878787878787878929292929292929292929292 +B8B8B8B8B8B8B8B8B8DBDBDBDBDBDBDBDBDBEDEDEDEDEDEDEDEDEDF6F6F6F6F6F6F6F6F6E5E5E5 +E5E5E5E5E5E5E5E5E5C8C8C8C8C8C8C8C8C8B0B1B0B0B1B0B0B1B09D9D9D9D9D9D9D9D9D8E8E8E +8E8E8E8E8E8E8E8E8E8484848484848484847C7C7C7C7C7C7C7C7C808080808080808080919191 +9191919191917979797979797979797979796262626262626262625656565656565656565D5D5D +5D5D5D5D5D5D707070707070707070949494949494949494949494949494949494949494828282 +8282828282827979797979797979797A7A7A7A7A7A7A7A7A7A7A7A808080808080808080888888 +888888888888959595959595959595A4A4A4A4A4A4A4A4A4ACACACACACACACACACACACACA8A8A8 +A8A8A8A8A8A8868686868686868686484848484848484848393939393939393939393939393939 +3939393939393737373737373737373B3B3B3B3B3B3B3B3B4848484848484848489B9B9B9B9B9B +9B9B9B9B9B9BF0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE1E1E1E1E1E1 +E1E1E1EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAE8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6 +E5E5E5E5E5E5E5E5E5E5E5E5E1E1E1E1E1E1E1E1E1CCCCCCCCCCCCCCCCCC959595959595959595 +5555555555555555553535353535353535353535352C2C2C2C2C2C2C2C2C292929292929292929 +292929292929292929292929292929292929292929252525252525252525212121212121212121 +212121212121212121212121212121212121212121212121212121212121292929292929292929 +4E4E4E4E4E4E4E4E4E7070707070707070706E6E6E6E6E6E6E6E6E5A5A5A5A5A5A5A5A5A5A5A5A +4F4F4F4F4F4F4F4F4F5151515151515151515757575757575757575E5E5E5E5E5E5E5E5E5E5E5E +6868686868686868686D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6767676767676767675A5A5A +5A5A5A5A5A5A5A5A5A5050505050505050504C4C4C4C4C4C4C4C4C444444444444444444494949 +4949494949494E4E4E4E4E4E4E4E4E4E4E4E585858585858585858595959595959595959565656 +5656565656564F4F4F4F4F4F4F4F4F4F4F4F5050505050505050505A5A5A5A5A5A5A5A5A676767 +6767676767677777777777777777778B8B8B8B8B8B8B8B8B8B8B8BACACACACACACACACACD3D3D3 +D3D3D3D3D3D3E8E9E8E8E9E8E8E9E8F0F0F0F0F0F0F0F0F0E1E1E1E1E1E1E1E1E1E1E1E1C6C6C6 +C6C6C6C6C6C6B4B4B4B4B4B4B4B4B4A4A4A4A4A4A4A4A4A4A0A0A0A0A0A0A0A0A0A0A0A09A9A9A +9A9A9A9A9A9A929292929292929292959595959595959595A1A1A1A1A1A1A1A1A1909090909090 +9090909090907676767676767676767070707070707070707979797979797979798C8C8C8C8C8C +8C8C8C9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F959595959595959595959595959595 +9595959999999999999999999999999A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AA0A0A0A0A0A0 +A0A0A0AEAEAEAEAEAEAEAEAEB2B2B2B2B2B2B2B2B2B2B2B2ADADADADADADADADAD909090909090 +909090515151515151515151464646464646464646464646464646464646464646404040404040 +4040403F3F3F3F3F3F3F3F3F5B5B5B5B5B5B5B5B5BB9B9B9B9B9B9B9B9B9B9B9B9F9F9F9F9F9F9 +F9F9F9FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7EBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE8E9E8E8E9E8E8E9E8 +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5 +E1E1E1E1E1E1E1E1E1CCCCCCCCCCCCCCCCCC959595959595959595555555555555555555353535 +3535353535353535352C2C2C2C2C2C2C2C2C292929292929292929292929292929292929292929 +292929292929292929252525252525252525212121212121212121212121212121212121212121 +2121212121212121212121212121212121212929292929292929294E4E4E4E4E4E4E4E4E707070 +7070707070706E6E6E6E6E6E6E6E6E5A5A5A5A5A5A5A5A5A5A5A5A4F4F4F4F4F4F4F4F4F515151 +5151515151515757575757575757575E5E5E5E5E5E5E5E5E5E5E5E6868686868686868686D6D6D +6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6767676767676767675A5A5A5A5A5A5A5A5A5A5A5A505050 +5050505050504C4C4C4C4C4C4C4C4C4444444444444444444949494949494949494E4E4E4E4E4E +4E4E4E4E4E4E5858585858585858585959595959595959595656565656565656564F4F4F4F4F4F +4F4F4F4F4F4F5050505050505050505A5A5A5A5A5A5A5A5A676767676767676767777777777777 +7777778B8B8B8B8B8B8B8B8B8B8B8BACACACACACACACACACD3D3D3D3D3D3D3D3D3E8E9E8E8E9E8 +E8E9E8F0F0F0F0F0F0F0F0F0E1E1E1E1E1E1E1E1E1E1E1E1C6C6C6C6C6C6C6C6C6B4B4B4B4B4B4 +B4B4B4A4A4A4A4A4A4A4A4A4A0A0A0A0A0A0A0A0A0A0A0A09A9A9A9A9A9A9A9A9A929292929292 +929292959595959595959595A1A1A1A1A1A1A1A1A1909090909090909090909090767676767676 +7676767070707070707070707979797979797979798C8C8C8C8C8C8C8C8C9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9F959595959595959595959595959595959595999999999999999999 +9999999A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AA0A0A0A0A0A0A0A0A0AEAEAEAEAEAEAEAEAE +B2B2B2B2B2B2B2B2B2B2B2B2ADADADADADADADADAD909090909090909090515151515151515151 +4646464646464646464646464646464646464646464040404040404040403F3F3F3F3F3F3F3F3F +5B5B5B5B5B5B5B5B5BB9B9B9B9B9B9B9B9B9B9B9B9F9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9EAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E9E9E9 +E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E7E7E7 +E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E0E0E0E0E0E0E0E0E0CDCDCD +CDCDCDCDCDCD9D9D9D9D9D9D9D9D9D5D5D5D5D5D5D5D5D5D3737373737373737373737372B2B2B +2B2B2B2B2B2B282828282828282828282828282828282828252525252525252525252525222222 +222222222222202020202020202020212121212121212121202020202020202020212121212121 +2121212121212929292929292929294F4F4F4F4F4F4F4F4F7070707070707070706D6D6D6D6D6D +6D6D6D5F605F5F605F5F605F5F605F5B5B5B5B5B5B5B5B5B5D5D5D5D5D5D5D5D5D636363636363 +6363636868686868686868686868686B6B6B6B6B6B6B6B6B6767676767676767675D5D5D5D5D5D +5D5D5D5555555555555555554848484848484848484848483B3B3B3B3B3B3B3B3B393939393939 +3939393535353535353535355656565656565656565F605F5F605F5F605F5F605F6C6C6C6C6C6C +6C6C6C6A6A6A6A6A6A6A6A6A5E5E5E5E5E5E5E5E5E6161616161616161616161615D5D5D5D5D5D +5D5D5D616161616161616161696969696969696969777777777777777777878787878787878787 +878787A6A6A6A6A6A6A6A6A6CDCDCDCDCDCDCDCDCDE5E5E5E5E5E5E5E5E5ECECECECECECECECEC +DEDEDEDEDEDEDEDEDEDEDEDEC5C5C5C5C5C5C5C5C5B6B6B6B6B6B6B6B6B6AAAAAAAAAAAAAAAAAA +AEAEAEAEAEAEAEAEAEAEAEAEA8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A19F9F9F9F9F9F9F9F9F +9E9E9E9E9E9E9E9E9E9797979797979797979797978D8D8D8D8D8D8D8D8D8B8B8B8B8B8B8B8B8B +939393939393939393A2A2A2A2A2A2A2A2A2A9A9A9A9A9A9A9A9A9A9A9A9ABABABABABABABABAB +AAAAAAAAAAAAAAAAAAACACACACACACACACACB0B1B0B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2 +B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B9B9B9B9B9B9B9B9B9BABABABABABABABABABABABA +B2B2B2B2B2B2B2B2B29696969696969696965B5B5B5B5B5B5B5B5B5757575757575757575E5E5E +5E5E5E5E5E5E5E5E5E5454545454545454544E4E4E4E4E4E4E4E4E818181818181818181DEDEDE +DEDEDEDEDEDEDEDEDEFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6 +C6C6C6C6C6C6EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAE8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5 +E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E0E0E0E0E0E0E0E0E0CDCDCDCDCDCDCDCDCD9D9D9D9D9D9D +9D9D9D5D5D5D5D5D5D5D5D5D3737373737373737373737372B2B2B2B2B2B2B2B2B282828282828 +282828282828282828282828252525252525252525252525222222222222222222202020202020 +202020212121212121212121202020202020202020212121212121212121212121292929292929 +2929294F4F4F4F4F4F4F4F4F7070707070707070706D6D6D6D6D6D6D6D6D5F605F5F605F5F605F +5F605F5B5B5B5B5B5B5B5B5B5D5D5D5D5D5D5D5D5D636363636363636363686868686868686868 +6868686B6B6B6B6B6B6B6B6B6767676767676767675D5D5D5D5D5D5D5D5D555555555555555555 +4848484848484848484848483B3B3B3B3B3B3B3B3B393939393939393939353535353535353535 +5656565656565656565F605F5F605F5F605F5F605F6C6C6C6C6C6C6C6C6C6A6A6A6A6A6A6A6A6A +5E5E5E5E5E5E5E5E5E6161616161616161616161615D5D5D5D5D5D5D5D5D616161616161616161 +696969696969696969777777777777777777878787878787878787878787A6A6A6A6A6A6A6A6A6 +CDCDCDCDCDCDCDCDCDE5E5E5E5E5E5E5E5E5ECECECECECECECECECDEDEDEDEDEDEDEDEDEDEDEDE +C5C5C5C5C5C5C5C5C5B6B6B6B6B6B6B6B6B6AAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAEAEAEAEAE +A8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A19F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E979797 +9797979797979797978D8D8D8D8D8D8D8D8D8B8B8B8B8B8B8B8B8B939393939393939393A2A2A2 +A2A2A2A2A2A2A9A9A9A9A9A9A9A9A9A9A9A9ABABABABABABABABABAAAAAAAAAAAAAAAAAAACACAC +ACACACACACACB0B1B0B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2B1B1B1B1B1B1B1B1B1B2B2B2 +B2B2B2B2B2B2B9B9B9B9B9B9B9B9B9BABABABABABABABABABABABAB2B2B2B2B2B2B2B2B2969696 +9696969696965B5B5B5B5B5B5B5B5B5757575757575757575E5E5E5E5E5E5E5E5E5E5E5E545454 +5454545454544E4E4E4E4E4E4E4E4E818181818181818181DEDEDEDEDEDEDEDEDEDEDEDEFDFDFD +FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6EAEAEAEAEAEA +EAEAEAE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4 +E4E4E4E0E0E0E0E0E0E0E0E0CDCDCDCDCDCDCDCDCD9D9D9D9D9D9D9D9D9D5D5D5D5D5D5D5D5D5D +3737373737373737373737372B2B2B2B2B2B2B2B2B282828282828282828282828282828282828 +252525252525252525252525222222222222222222202020202020202020212121212121212121 +2020202020202020202121212121212121212121212929292929292929294F4F4F4F4F4F4F4F4F +7070707070707070706D6D6D6D6D6D6D6D6D5F605F5F605F5F605F5F605F5B5B5B5B5B5B5B5B5B +5D5D5D5D5D5D5D5D5D6363636363636363636868686868686868686868686B6B6B6B6B6B6B6B6B +6767676767676767675D5D5D5D5D5D5D5D5D555555555555555555484848484848484848484848 +3B3B3B3B3B3B3B3B3B3939393939393939393535353535353535355656565656565656565F605F +5F605F5F605F5F605F6C6C6C6C6C6C6C6C6C6A6A6A6A6A6A6A6A6A5E5E5E5E5E5E5E5E5E616161 +6161616161616161615D5D5D5D5D5D5D5D5D616161616161616161696969696969696969777777 +777777777777878787878787878787878787A6A6A6A6A6A6A6A6A6CDCDCDCDCDCDCDCDCDE5E5E5 +E5E5E5E5E5E5ECECECECECECECECECDEDEDEDEDEDEDEDEDEDEDEDEC5C5C5C5C5C5C5C5C5B6B6B6 +B6B6B6B6B6B6AAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAEAEAEAEAEA8A8A8A8A8A8A8A8A8A1A1A1 +A1A1A1A1A1A19F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9797979797979797979797978D8D8D +8D8D8D8D8D8D8B8B8B8B8B8B8B8B8B939393939393939393A2A2A2A2A2A2A2A2A2A9A9A9A9A9A9 +A9A9A9A9A9A9ABABABABABABABABABAAAAAAAAAAAAAAAAAAACACACACACACACACACB0B1B0B0B1B0 +B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B9B9B9B9B9B9 +B9B9B9BABABABABABABABABABABABAB2B2B2B2B2B2B2B2B29696969696969696965B5B5B5B5B5B +5B5B5B5757575757575757575E5E5E5E5E5E5E5E5E5E5E5E5454545454545454544E4E4E4E4E4E +4E4E4E818181818181818181DEDEDEDEDEDEDEDEDEDEDEDEFDFDFDFDFDFDFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6EBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7 +E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3 +D6D6D5D6D6D5D6D6D5B2B2B2B2B2B2B2B2B27272727272727272723E3E3E3E3E3E3E3E3E3E3E3E +2B2B2B2B2B2B2B2B2B282828282828282828282828282828282828242424242424242424242424 +222222222222222222202020202020202020202020202020202020212121212121212121222222 +2222222222222222222929292929292929294F4F4F4F4F4F4F4F4F717171717171717171717171 +7171717171716B6B6B6B6B6B6B6B6B6B6B6B696969696969696969676767676767676767676767 +676767676767676767676767676767676767636363636363636363565656565656565656494949 +4949494949494646464646464646464040404040404040404040403B3B3B3B3B3B3B3B3B3B3B3B +3B3B3B3B3B3B3434343434343434344E4E4E4E4E4E4E4E4E686868686868686868686868949494 +9494949494949D9D9D9D9D9D9D9D9D7474747474747474746666666666666666666666666C6C6C +6C6C6C6C6C6C6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E757575757575757575848484848484 +848484848484A1A1A1A1A1A1A1A1A1C5C5C5C5C5C5C5C5C5DFE0DFDFE0DFDFE0DFE7E7E7E7E7E7 +E7E7E7DCDCDCDCDCDCDCDCDCDCDCDCC8C8C8C8C8C8C8C8C8B8B8B8B8B8B8B8B8B8ADADADADADAD +ADADADB0B1B0B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2AFAFAFAFAFAFAFAFAFA7A7A7A7A7A7 +A7A7A79F9F9F9F9F9F9F9F9F9898989898989898989898989595959595959595959A9A9A9A9A9A +9A9A9AA2A2A2A2A2A2A2A2A2B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8B8B8B8BABABABABABA +BABABAB8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBCBCBCBFBFBFBFBFBF +BFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C4C4C4C4C4C4C4C4C4C0C0C0C0C0C0C0C0C0 +C0C0C0B8B8B8B8B8B8B8B8B8A0A0A0A0A0A0A0A0A06D6D6D6D6D6D6D6D6D646464646464646464 +7171717171717171717171716A6A6A6A6A6A6A6A6A6C6C6C6C6C6C6C6C6CB0B1B0B0B1B0B0B1B0 +F3F3F3F3F3F3F3F3F3F3F3F3FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +BBBBBBBBBBBBBBBBBBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E7E7E7 +E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3D6D6D5D6D6D5D6D6D5B2B2B2 +B2B2B2B2B2B27272727272727272723E3E3E3E3E3E3E3E3E3E3E3E2B2B2B2B2B2B2B2B2B282828 +282828282828282828282828282828242424242424242424242424222222222222222222202020 +202020202020202020202020202020212121212121212121222222222222222222222222292929 +2929292929294F4F4F4F4F4F4F4F4F7171717171717171717171717171717171716B6B6B6B6B6B +6B6B6B6B6B6B696969696969696969676767676767676767676767676767676767676767676767 +676767676767636363636363636363565656565656565656494949494949494949464646464646 +4646464040404040404040404040403B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B343434343434 +3434344E4E4E4E4E4E4E4E4E6868686868686868686868689494949494949494949D9D9D9D9D9D +9D9D9D7474747474747474746666666666666666666666666C6C6C6C6C6C6C6C6C6E6E6E6E6E6E +6E6E6E6E6E6E6E6E6E6E6E6E757575757575757575848484848484848484848484A1A1A1A1A1A1 +A1A1A1C5C5C5C5C5C5C5C5C5DFE0DFDFE0DFDFE0DFE7E7E7E7E7E7E7E7E7DCDCDCDCDCDCDCDCDC +DCDCDCC8C8C8C8C8C8C8C8C8B8B8B8B8B8B8B8B8B8ADADADADADADADADADB0B1B0B0B1B0B0B1B0 +B0B1B0B2B2B2B2B2B2B2B2B2AFAFAFAFAFAFAFAFAFA7A7A7A7A7A7A7A7A79F9F9F9F9F9F9F9F9F +9898989898989898989898989595959595959595959A9A9A9A9A9A9A9A9AA2A2A2A2A2A2A2A2A2 +B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8B8B8B8BABABABABABABABABAB8B8B8B8B8B8B8B8B8 +B8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBCBCBCBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +C0C0C0C0C0C0C0C0C0C4C4C4C4C4C4C4C4C4C0C0C0C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8 +A0A0A0A0A0A0A0A0A06D6D6D6D6D6D6D6D6D646464646464646464717171717171717171717171 +6A6A6A6A6A6A6A6A6A6C6C6C6C6C6C6C6C6CB0B1B0B0B1B0B0B1B0F3F3F3F3F3F3F3F3F3F3F3F3 +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBBEBEBEB +EBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8 +E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3D6D6D5D6D6D5D6D6D5B2B2B2B2B2B2B2B2B2727272727272 +7272723E3E3E3E3E3E3E3E3E3E3E3E2B2B2B2B2B2B2B2B2B282828282828282828282828282828 +282828242424242424242424242424222222222222222222202020202020202020202020202020 +2020202121212121212121212222222222222222222222222929292929292929294F4F4F4F4F4F +4F4F4F7171717171717171717171717171717171716B6B6B6B6B6B6B6B6B6B6B6B696969696969 +696969676767676767676767676767676767676767676767676767676767676767636363636363 +636363565656565656565656494949494949494949464646464646464646404040404040404040 +4040403B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3434343434343434344E4E4E4E4E4E4E4E4E +6868686868686868686868689494949494949494949D9D9D9D9D9D9D9D9D747474747474747474 +6666666666666666666666666C6C6C6C6C6C6C6C6C6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E +757575757575757575848484848484848484848484A1A1A1A1A1A1A1A1A1C5C5C5C5C5C5C5C5C5 +DFE0DFDFE0DFDFE0DFE7E7E7E7E7E7E7E7E7DCDCDCDCDCDCDCDCDCDCDCDCC8C8C8C8C8C8C8C8C8 +B8B8B8B8B8B8B8B8B8ADADADADADADADADADB0B1B0B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2 +AFAFAFAFAFAFAFAFAFA7A7A7A7A7A7A7A7A79F9F9F9F9F9F9F9F9F989898989898989898989898 +9595959595959595959A9A9A9A9A9A9A9A9AA2A2A2A2A2A2A2A2A2B0B0B0B0B0B0B0B0B0B8B8B8 +B8B8B8B8B8B8B8B8B8BABABABABABABABABAB8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8BCBCBC +BCBCBCBCBCBCBCBCBCBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C4C4C4 +C4C4C4C4C4C4C0C0C0C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8A0A0A0A0A0A0A0A0A06D6D6D +6D6D6D6D6D6D6464646464646464647171717171717171717171716A6A6A6A6A6A6A6A6A6C6C6C +6C6C6C6C6C6CB0B1B0B0B1B0B0B1B0F3F3F3F3F3F3F3F3F3F3F3F3FFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8 +E8E8E8E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6 +E6E6E6E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4DEDEDEDEDEDEDEDEDEC9C9C9C9C9C9C9C9C98D8D8D8D8D8D8D8D8D494949494949494949 +4949492C2C2C2C2C2C2C2C2C272727272727272727252525252525252525242424242424242424 +2424242424242424242424242020202020202020201E1E1E1E1E1E1E1E1E212121212121212121 +222222222222222222222222292929292929292929505050505050505050747474747474747474 +7878787878787878787373737373737373737373736F6F6F6F6F6F6F6F6F6A6A6A6A6A6A6A6A6A +666666666666666666626262626262626262626262575757575757575757464646464646464646 +3F3F3F3F3F3F3F3F3F4242424242424242424C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C +4C4C4C4C4C4C4C4C4C464646464646464646515151515151515151707070707070707070707070 +A6A6A6A6A6A6A6A6A6B5B5B5B5B5B5B5B5B59292929292929292927B7B7B7B7B7B7B7B7B7B7B7B +7A7A7A7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C757575757575757575757575757575757575818181 +8181818181818181819C9C9C9C9C9C9C9C9CBCBCBCBCBCBCBCBCBCD6D6D5D6D6D5D6D6D5DFE0DF +DFE0DFDFE0DFD7D7D7D7D7D7D7D7D7D7D7D7C6C6C6C6C6C6C6C6C6B8B8B8B8B8B8B8B8B8ACACAC +ACACACACACACABABABABABABABABABABABABB0B0B0B0B0B0B0B0B0ADADADADADADADADADA3A3A3 +A3A3A3A3A3A39E9E9E9E9E9E9E9E9E9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9DA3A3A3 +A3A3A3A3A3A3AFAFAFAFAFAFAFAFAFBABABABABABABABABABFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFBABABABABABABABABAB8B8B8B8B8B8B8B8B8BFBFBFBFBFBFBFBFBFBFBFBFC7C7C7 +C7C7C7C7C7C7CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCACACACACACACACACAC3C3C3C3C3C3 +C3C3C3C3C3C3BBBBBBBBBBBBBBBBBBAAAAAAAAAAAAAAAAAA888888888888888888797979797979 +797979797979797979797979797979797979797979797979929292929292929292DDDDDDDDDDDD +DDDDDDFCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C5C5C5C5C5C5C5C5C5EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4DEDEDEDEDEDEDEDEDE +C9C9C9C9C9C9C9C9C98D8D8D8D8D8D8D8D8D4949494949494949494949492C2C2C2C2C2C2C2C2C +272727272727272727252525252525252525242424242424242424242424242424242424242424 +2020202020202020201E1E1E1E1E1E1E1E1E212121212121212121222222222222222222222222 +292929292929292929505050505050505050747474747474747474787878787878787878737373 +7373737373737373736F6F6F6F6F6F6F6F6F6A6A6A6A6A6A6A6A6A666666666666666666626262 +6262626262626262625757575757575757574646464646464646463F3F3F3F3F3F3F3F3F424242 +4242424242424C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C464646 +464646464646515151515151515151707070707070707070707070A6A6A6A6A6A6A6A6A6B5B5B5 +B5B5B5B5B5B59292929292929292927B7B7B7B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7C7C7C +7C7C7C7C7C7C7575757575757575757575757575757575758181818181818181818181819C9C9C +9C9C9C9C9C9CBCBCBCBCBCBCBCBCBCD6D6D5D6D6D5D6D6D5DFE0DFDFE0DFDFE0DFD7D7D7D7D7D7 +D7D7D7D7D7D7C6C6C6C6C6C6C6C6C6B8B8B8B8B8B8B8B8B8ACACACACACACACACACABABABABABAB +ABABABABABABB0B0B0B0B0B0B0B0B0ADADADADADADADADADA3A3A3A3A3A3A3A3A39E9E9E9E9E9E +9E9E9E9C9C9C9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9DA3A3A3A3A3A3A3A3A3AFAFAFAFAFAF +AFAFAFBABABABABABABABABABFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBABABABABABA +BABABAB8B8B8B8B8B8B8B8B8BFBFBFBFBFBFBFBFBFBFBFBFC7C7C7C7C7C7C7C7C7CBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCACACACACACACACACAC3C3C3C3C3C3C3C3C3C3C3C3BBBBBBBBBBBB +BBBBBBAAAAAAAAAAAAAAAAAA888888888888888888797979797979797979797979797979797979 +797979797979797979797979929292929292929292DDDDDDDDDDDDDDDDDDFCFCFCFCFCFCFCFCFC +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5 +EBEBEBEBEBEBEBEBEBECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEA +EBEBEBEBEBEBEBEBEBE8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5 +E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4E5E5E5 +E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4D7D7D7D7D7D7D7D7D7A6A6A6 +A6A6A6A6A6A6585858585858585858585858303030303030303030282828282828282828252525 +252525252525242424242424242424242424242424242424242424212121212121212121202020 +2020202020202121212121212121212222222222222222222222222B2B2B2B2B2B2B2B2B545454 +5454545454547676767676767676767B7B7B7B7B7B7B7B7B777777777777777777777777727272 +7272727272726969696969696969696565656565656565655C5C5C5C5C5C5C5C5C5C5C5C4D4D4D +4D4D4D4D4D4D424242424242424242414141414141414141505050505050505050636363636363 +6363636363636464646464646464646161616161616161616363636363636363636B6B6B6B6B6B +6B6B6B838383838383838383838383A1A1A1A1A1A1A1A1A1AFAFAFAFAFAFAFAFAFA4A4A4A4A4A4 +A4A4A49797979797979797979797979090909090909090908686868686868686867A7A7A7A7A7A +7A7A7A767676767676767676808080808080808080808080969696969696969696B3B3B3B3B3B3 +B3B3B3CECECECECECECECECEDADADADADADADADADAD5D5D5D5D5D5D5D5D5D5D5D5C3C3C3C3C3C3 +C3C3C3B8B8B8B8B8B8B8B8B8ADADADADADADADADADA7A7A7A7A7A7A7A7A7A7A7A7AAAAAAAAAAAA +AAAAAAABABABABABABABABABA2A2A2A2A2A2A2A2A29B9B9B9B9B9B9B9B9B989898989898989898 +9898989A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9FA8A8A8A8A8A8A8A8A8B0B0B0B0B0B0B0B0B0 +B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4BABABABABABABABABA +C7C7C7C7C7C7C7C7C7C7C7C7D0D0D0D0D0D0D0D0D0D4D4D4D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0 +CCCCCCCCCCCCCCCCCCC5C5C5C5C5C5C5C5C5C5C5C5BBBBBBBBBBBBBBBBBBB0B0B0B0B0B0B0B0B0 +A2A2A2A2A2A2A2A2A2979797979797979797888888888888888888888888898989898989898989 +B4B4B4B4B4B4B4B4B4F2F2F2F2F2F2F2F2F2FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6EBEBEBEBEBEBEBEBEBECECEC +ECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBE8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E7E7E7 +E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6 +E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4D7D7D7D7D7D7D7D7D7A6A6A6A6A6A6A6A6A6585858585858 +585858585858303030303030303030282828282828282828252525252525252525242424242424 +242424242424242424242424242424212121212121212121202020202020202020212121212121 +2121212222222222222222222222222B2B2B2B2B2B2B2B2B545454545454545454767676767676 +7676767B7B7B7B7B7B7B7B7B777777777777777777777777727272727272727272696969696969 +6969696565656565656565655C5C5C5C5C5C5C5C5C5C5C5C4D4D4D4D4D4D4D4D4D424242424242 +424242414141414141414141505050505050505050636363636363636363636363646464646464 +6464646161616161616161616363636363636363636B6B6B6B6B6B6B6B6B838383838383838383 +838383A1A1A1A1A1A1A1A1A1AFAFAFAFAFAFAFAFAFA4A4A4A4A4A4A4A4A4979797979797979797 +9797979090909090909090908686868686868686867A7A7A7A7A7A7A7A7A767676767676767676 +808080808080808080808080969696969696969696B3B3B3B3B3B3B3B3B3CECECECECECECECECE +DADADADADADADADADAD5D5D5D5D5D5D5D5D5D5D5D5C3C3C3C3C3C3C3C3C3B8B8B8B8B8B8B8B8B8 +ADADADADADADADADADA7A7A7A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAABABABABABABABABAB +A2A2A2A2A2A2A2A2A29B9B9B9B9B9B9B9B9B9898989898989898989898989A9A9A9A9A9A9A9A9A +9F9F9F9F9F9F9F9F9FA8A8A8A8A8A8A8A8A8B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4B4B4B4B4B4B4 +B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4BABABABABABABABABAC7C7C7C7C7C7C7C7C7C7C7C7 +D0D0D0D0D0D0D0D0D0D4D4D4D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0CCCCCCCCCCCCCCCCCCC5C5C5 +C5C5C5C5C5C5C5C5C5BBBBBBBBBBBBBBBBBBB0B0B0B0B0B0B0B0B0A2A2A2A2A2A2A2A2A2979797 +979797979797888888888888888888888888898989898989898989B4B4B4B4B4B4B4B4B4F2F2F2 +F2F2F2F2F2F2FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6EBEBEBEBEBEBEBEBEBECECECECECECECECECEBEBEBEBEBEB +EBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBE8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6 +E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4 +E4E4E4D7D7D7D7D7D7D7D7D7A6A6A6A6A6A6A6A6A6585858585858585858585858303030303030 +303030282828282828282828252525252525252525242424242424242424242424242424242424 +242424212121212121212121202020202020202020212121212121212121222222222222222222 +2222222B2B2B2B2B2B2B2B2B5454545454545454547676767676767676767B7B7B7B7B7B7B7B7B +777777777777777777777777727272727272727272696969696969696969656565656565656565 +5C5C5C5C5C5C5C5C5C5C5C5C4D4D4D4D4D4D4D4D4D424242424242424242414141414141414141 +505050505050505050636363636363636363636363646464646464646464616161616161616161 +6363636363636363636B6B6B6B6B6B6B6B6B838383838383838383838383A1A1A1A1A1A1A1A1A1 +AFAFAFAFAFAFAFAFAFA4A4A4A4A4A4A4A4A4979797979797979797979797909090909090909090 +8686868686868686867A7A7A7A7A7A7A7A7A767676767676767676808080808080808080808080 +969696969696969696B3B3B3B3B3B3B3B3B3CECECECECECECECECEDADADADADADADADADAD5D5D5 +D5D5D5D5D5D5D5D5D5C3C3C3C3C3C3C3C3C3B8B8B8B8B8B8B8B8B8ADADADADADADADADADA7A7A7 +A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAABABABABABABABABABA2A2A2A2A2A2A2A2A29B9B9B +9B9B9B9B9B9B9898989898989898989898989A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9FA8A8A8 +A8A8A8A8A8A8B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4 +B4B4B4B4B4B4BABABABABABABABABAC7C7C7C7C7C7C7C7C7C7C7C7D0D0D0D0D0D0D0D0D0D4D4D4 +D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0CCCCCCCCCCCCCCCCCCC5C5C5C5C5C5C5C5C5C5C5C5BBBBBB +BBBBBBBBBBBBB0B0B0B0B0B0B0B0B0A2A2A2A2A2A2A2A2A2979797979797979797888888888888 +888888888888898989898989898989B4B4B4B4B4B4B4B4B4F2F2F2F2F2F2F2F2F2FEFEFEFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6 +C6C6C6ECECECECECECECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEA +EAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6 +E6E6E6E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5DFE0DFDFE0DFDFE0DF +BABABABABABABABABA6D6D6D6D6D6D6D6D6D6D6D6D373737373737373737292929292929292929 +272727272727272727252525252525252525252525272727272727272727242424242424242424 +2222222222222222222222222222222222222222222222222222222222222C2C2C2C2C2C2C2C2C +5656565656565656567777777777777777777D7D7D7D7D7D7D7D7D7B7B7B7B7B7B7B7B7B7B7B7B +7575757575757575756A6A6A6A6A6A6A6A6A646464646464646464595959595959595959595959 +4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F4F565656565656565656656565656565656565757575 +7575757575757575757A7A7A7A7A7A7A7A7A7979797979797979797D7D7D7D7D7D7D7D7D818181 +8181818181818F8F8F8F8F8F8F8F8F8F8F8F9D9D9D9D9D9D9D9D9DA6A6A6A6A6A6A6A6A6A2A2A2 +A2A2A2A2A2A29D9D9D9D9D9D9D9D9D9D9D9D929292929292929292838383838383838383777777 +777777777777767676767676767676808080808080808080808080919191919191919191ACACAC +ACACACACACACCBCBCBCBCBCBCBCBCBD9D9D9D9D9D9D9D9D9D6D6D5D6D6D5D6D6D5D6D6D5C7C7C7 +C7C7C7C7C7C7BCBCBCBCBCBCBCBCBCB3B3B3B3B3B3B3B3B3ADADADADADADADADADADADADADADAD +ADADADADADADB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0A8A8A8A8A8A8A8A8A8A1A1A1A1A1A1 +A1A1A1A1A1A19D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9F9F9F9F9F9F9F9F9FA5A5A5A5A5A5 +A5A5A5ABABABABABABABABABABABABB2B2B2B2B2B2B2B2B2BCBCBCBCBCBCBCBCBCC8C8C8C8C8C8 +C8C8C8D2D2D2D2D2D2D2D2D2D2D2D2D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D4D4D4D4D4D4 +D4D4D4CFCFCFCFCFCFCFCFCFC6C6C6C6C6C6C6C6C6C6C6C6BCBCBCBCBCBCBCBCBCB1B1B1B1B1B1 +B1B1B1ACACACACACACACACACABABABABABABABABABA3A3A3A3A3A3A3A3A3A3A3A3A5A5A5A5A5A5 +A5A5A5CCCCCCCCCCCCCCCCCCF9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3ECECECECECECECECEC +ECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9 +E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7 +E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5DFE0DFDFE0DFDFE0DFBABABABABABABABABA6D6D6D +6D6D6D6D6D6D6D6D6D373737373737373737292929292929292929272727272727272727252525 +252525252525252525272727272727272727242424242424242424222222222222222222222222 +2222222222222222222222222222222222222C2C2C2C2C2C2C2C2C565656565656565656777777 +7777777777777D7D7D7D7D7D7D7D7D7B7B7B7B7B7B7B7B7B7B7B7B7575757575757575756A6A6A +6A6A6A6A6A6A6464646464646464645959595959595959595959594F4F4F4F4F4F4F4F4F4F4F4F +4F4F4F4F4F4F5656565656565656566565656565656565657575757575757575757575757A7A7A +7A7A7A7A7A7A7979797979797979797D7D7D7D7D7D7D7D7D8181818181818181818F8F8F8F8F8F +8F8F8F8F8F8F9D9D9D9D9D9D9D9D9DA6A6A6A6A6A6A6A6A6A2A2A2A2A2A2A2A2A29D9D9D9D9D9D +9D9D9D9D9D9D929292929292929292838383838383838383777777777777777777767676767676 +767676808080808080808080808080919191919191919191ACACACACACACACACACCBCBCBCBCBCB +CBCBCBD9D9D9D9D9D9D9D9D9D6D6D5D6D6D5D6D6D5D6D6D5C7C7C7C7C7C7C7C7C7BCBCBCBCBCBC +BCBCBCB3B3B3B3B3B3B3B3B3ADADADADADADADADADADADADADADADADADADADADADB0B0B0B0B0B0 +B0B0B0B0B0B0B0B0B0B0B0B0A8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A1A1A1A19D9D9D9D9D9D +9D9D9D9D9D9D9D9D9D9D9D9D9F9F9F9F9F9F9F9F9FA5A5A5A5A5A5A5A5A5ABABABABABABABABAB +ABABABB2B2B2B2B2B2B2B2B2BCBCBCBCBCBCBCBCBCC8C8C8C8C8C8C8C8C8D2D2D2D2D2D2D2D2D2 +D2D2D2D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4CFCFCFCFCFCFCFCFCF +C6C6C6C6C6C6C6C6C6C6C6C6BCBCBCBCBCBCBCBCBCB1B1B1B1B1B1B1B1B1ACACACACACACACACAC +ABABABABABABABABABA3A3A3A3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A5CCCCCCCCCCCCCCCCCC +F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3ECECECECECECECECECEDEDEDEDEDEDEDEDEDECECEC +ECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9E9E9E9EAEAEA +EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E8E8 +E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6 +E6E6E6E6E6E6E3E3E3E3E3E3E3E3E3CBCBCBCBCBCBCBCBCB878787878787878787878787444444 +4444444444442D2D2D2D2D2D2D2D2D2929292929292929292929292929292929292929292B2B2B +2B2B2B2B2B2B282828282828282828252525252525252525242424242424242424242424242424 +2424242424242D2D2D2D2D2D2D2D2D5656565656565656567878787878787878787E7E7E7E7E7E +7E7E7E7C7C7C7C7C7C7C7C7C7C7C7C7575757575757575756D6D6D6D6D6D6D6D6D636363636363 +6363635B5B5B5B5B5B5B5B5B5B5B5B5E5E5E5E5E5E5E5E5E6767676767676767676F6F6F6F6F6F +6F6F6F7777777777777777778080808080808080808080808787878787878787878D8D8D8D8D8D +8D8D8D9191919191919191919292929292929292929696969696969696969696969C9C9C9C9C9C +9C9C9C9C9C9C9C9C9C9C9C9C979797979797979797939393939393939393939393898989898989 +8989897B7B7B7B7B7B7B7B7B7575757575757575757777777777777777777F7F7F7F7F7F7F7F7F +7F7F7F8E8E8E8E8E8E8E8E8EA8A8A8A8A8A8A8A8A8CBCBCBCBCBCBCBCBCBDFE0DFDFE0DFDFE0DF +DBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8 +B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8 +B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4 +B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBC0C0C0C0C0C0C0C0C0C0C0C0C6C6C6C6C6C6C6C6C6 +CFCFCFCFCFCFCFCFCFD6D6D5D6D6D5D6D6D5DBDBDBDBDBDBDBDBDBDBDBDBDDDDDDDDDDDDDDDDDD +DADADADADADADADADAD6D6D5D6D6D5D6D6D5D1D1D1D1D1D1D1D1D1CBCBCBCBCBCBCBCBCBCBCBCB +C0C0C0C0C0C0C0C0C0B3B3B3B3B3B3B3B3B3ACACACACACACACACACB0B1B0B0B1B0B0B1B0B7B7B7 +B7B7B7B7B7B7B7B7B7BEBEBEBEBEBEBEBEBEDBDBDBDBDBDBDBDBDBFAFAFAFAFAFAFAFAFAFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7B4B4B4 +B4B4B4B4B4B4ECECECECECECECECECEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E3E3E3E3E3E3 +E3E3E3CBCBCBCBCBCBCBCBCB8787878787878787878787874444444444444444442D2D2D2D2D2D +2D2D2D2929292929292929292929292929292929292929292B2B2B2B2B2B2B2B2B282828282828 +2828282525252525252525252424242424242424242424242424242424242424242D2D2D2D2D2D +2D2D2D5656565656565656567878787878787878787E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C +7C7C7C7575757575757575756D6D6D6D6D6D6D6D6D6363636363636363635B5B5B5B5B5B5B5B5B +5B5B5B5E5E5E5E5E5E5E5E5E6767676767676767676F6F6F6F6F6F6F6F6F777777777777777777 +8080808080808080808080808787878787878787878D8D8D8D8D8D8D8D8D919191919191919191 +9292929292929292929696969696969696969696969C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C +9797979797979797979393939393939393939393938989898989898989897B7B7B7B7B7B7B7B7B +7575757575757575757777777777777777777F7F7F7F7F7F7F7F7F7F7F7F8E8E8E8E8E8E8E8E8E +A8A8A8A8A8A8A8A8A8CBCBCBCBCBCBCBCBCBDFE0DFDFE0DFDFE0DFDBDBDBDBDBDBDBDBDBDBDBDB +CBCBCBCBCBCBCBCBCBBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B4B4B4 +B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B8B8B8 +B8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8BBBBBB +BBBBBBBBBBBBC0C0C0C0C0C0C0C0C0C0C0C0C6C6C6C6C6C6C6C6C6CFCFCFCFCFCFCFCFCFD6D6D5 +D6D6D5D6D6D5DBDBDBDBDBDBDBDBDBDBDBDBDDDDDDDDDDDDDDDDDDDADADADADADADADADAD6D6D5 +D6D6D5D6D6D5D1D1D1D1D1D1D1D1D1CBCBCBCBCBCBCBCBCBCBCBCBC0C0C0C0C0C0C0C0C0B3B3B3 +B3B3B3B3B3B3ACACACACACACACACACB0B1B0B0B1B0B0B1B0B7B7B7B7B7B7B7B7B7B7B7B7BEBEBE +BEBEBEBEBEBEDBDBDBDBDBDBDBDBDBFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4ECECECECECEC +ECECECEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E3E3E3E3E3E3E3E3E3CBCBCBCBCBCBCBCBCB +8787878787878787878787874444444444444444442D2D2D2D2D2D2D2D2D292929292929292929 +2929292929292929292929292B2B2B2B2B2B2B2B2B282828282828282828252525252525252525 +2424242424242424242424242424242424242424242D2D2D2D2D2D2D2D2D565656565656565656 +7878787878787878787E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C7C7C7C757575757575757575 +6D6D6D6D6D6D6D6D6D6363636363636363635B5B5B5B5B5B5B5B5B5B5B5B5E5E5E5E5E5E5E5E5E +6767676767676767676F6F6F6F6F6F6F6F6F777777777777777777808080808080808080808080 +8787878787878787878D8D8D8D8D8D8D8D8D919191919191919191929292929292929292969696 +9696969696969696969C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C979797979797979797939393 +9393939393939393938989898989898989897B7B7B7B7B7B7B7B7B757575757575757575777777 +7777777777777F7F7F7F7F7F7F7F7F7F7F7F8E8E8E8E8E8E8E8E8EA8A8A8A8A8A8A8A8A8CBCBCB +CBCBCBCBCBCBDFE0DFDFE0DFDFE0DFDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBBFBFBF +BFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B5B5B5 +B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8B6B6B6 +B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBC0C0C0C0C0C0 +C0C0C0C0C0C0C6C6C6C6C6C6C6C6C6CFCFCFCFCFCFCFCFCFD6D6D5D6D6D5D6D6D5DBDBDBDBDBDB +DBDBDBDBDBDBDDDDDDDDDDDDDDDDDDDADADADADADADADADAD6D6D5D6D6D5D6D6D5D1D1D1D1D1D1 +D1D1D1CBCBCBCBCBCBCBCBCBCBCBCBC0C0C0C0C0C0C0C0C0B3B3B3B3B3B3B3B3B3ACACACACACAC +ACACACB0B1B0B0B1B0B0B1B0B7B7B7B7B7B7B7B7B7B7B7B7BEBEBEBEBEBEBEBEBEDBDBDBDBDBDB +DBDBDBFAFAFAFAFAFAFAFAFAFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF7F7F7F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7 +E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4D6D6D5D6D6D5D6D6D59C9C9C9C9C9C9C9C9C9C9C9C +4E4E4E4E4E4E4E4E4E3131313131313131312C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C +2B2B2B2B2B2B2B2B2B282828282828282828272727272727272727272727272727272727252525 +2525252525252525253030303030303030305757575757575757577777777777777777777E7E7E +7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7878787878787878787171717171717171716A6A6A +6A6A6A6A6A6A6969696969696969696969697171717171717171717777777777777777777D7D7D +7D7D7D7D7D7D8585858585858585858E8E8E8E8E8E8E8E8E8E8E8E9696969696969696969C9C9C +9C9C9C9C9C9C9E9E9E9E9E9E9E9E9E9B9B9B9B9B9B9B9B9B979797979797979797979797949494 +949494949494929292929292929292909090909090909090909090909090909090909090868686 +8686868686867B7B7B7B7B7B7B7B7B7878787878787878787A7A7A7A7A7A7A7A7A808080808080 +8080808080808B8B8B8B8B8B8B8B8BA5A5A5A5A5A5A5A5A5C7C7C7C7C7C7C7C7C7DFE0DFDFE0DF +DFE0DFE0E0E0E0E0E0E0E0E0E0E0E0CECECECECECECECECEC1C1C1C1C1C1C1C1C1BBBBBBBBBBBB +BBBBBBB8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9BDBDBDBDBDBDBDBDBDBFBFBFBFBFBF +BFBFBFBFBFBFBFBFBFBFBFBFC3C3C3C3C3C3C3C3C3C3C3C3C9C9C9C9C9C9C9C9C9CCCCCCCCCCCC +CCCCCCD0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D4D4D4D4D4D4 +D4D4D4D6D6D6D6D6D6D6D6D6D9D9D9D9D9D9D9D9D9DDDDDDDDDDDDDDDDDDDDDDDDDFDFDFDFDFDF +DFDFDFDBDBDBDBDBDBDBDBDBD6D6D6D6D6D6D6D6D6D3D3D3D3D3D3D3D3D3CCCCCCCCCCCCCCCCCC +CCCCCCC0C0C0C0C0C0C0C0C0B4B4B4B4B4B4B4B4B4AEAEAEAEAEAEAEAEAEB1B1B1B1B1B1B1B1B1 +B9B9B9B9B9B9B9B9B9B9B9B9C8C8C8C8C8C8C8C8C8DFE0DFDFE0DFDFE0DFF9F9F9F9F9F9F9F9F9 +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C1C1C1C1C1C1C1C1C1EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEA +EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9 +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E4E4E4 +E4E4E4E4E4E4D6D6D5D6D6D5D6D6D59C9C9C9C9C9C9C9C9C9C9C9C4E4E4E4E4E4E4E4E4E313131 +3131313131312C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B282828 +282828282828272727272727272727272727272727272727252525252525252525252525303030 +3030303030305757575757575757577777777777777777777E7E7E7E7E7E7E7E7E7E7E7E7E7E7E +7E7E7E7E7E7E7878787878787878787171717171717171716A6A6A6A6A6A6A6A6A696969696969 +6969696969697171717171717171717777777777777777777D7D7D7D7D7D7D7D7D858585858585 +8585858E8E8E8E8E8E8E8E8E8E8E8E9696969696969696969C9C9C9C9C9C9C9C9C9E9E9E9E9E9E +9E9E9E9B9B9B9B9B9B9B9B9B979797979797979797979797949494949494949494929292929292 +9292929090909090909090909090909090909090909090908686868686868686867B7B7B7B7B7B +7B7B7B7878787878787878787A7A7A7A7A7A7A7A7A8080808080808080808080808B8B8B8B8B8B +8B8B8BA5A5A5A5A5A5A5A5A5C7C7C7C7C7C7C7C7C7DFE0DFDFE0DFDFE0DFE0E0E0E0E0E0E0E0E0 +E0E0E0CECECECECECECECECEC1C1C1C1C1C1C1C1C1BBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8 +B8B8B8B9B9B9B9B9B9B9B9B9BDBDBDBDBDBDBDBDBDBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +C3C3C3C3C3C3C3C3C3C3C3C3C9C9C9C9C9C9C9C9C9CCCCCCCCCCCCCCCCCCD0D0D0D0D0D0D0D0D0 +D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D4D4D4D4D4D4D4D4D4D6D6D6D6D6D6D6D6D6 +D9D9D9D9D9D9D9D9D9DDDDDDDDDDDDDDDDDDDDDDDDDFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDB +D6D6D6D6D6D6D6D6D6D3D3D3D3D3D3D3D3D3CCCCCCCCCCCCCCCCCCCCCCCCC0C0C0C0C0C0C0C0C0 +B4B4B4B4B4B4B4B4B4AEAEAEAEAEAEAEAEAEB1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9B9B9B9 +C8C8C8C8C8C8C8C8C8DFE0DFDFE0DFDFE0DFF9F9F9F9F9F9F9F9F9FEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1EDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECEC +ECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4D9D9D9D9D9D9 +D9D9D9A6A6A6A6A6A6A6A6A6A6A6A65858585858585858583535353535353535352F2F2F2F2F2F +2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D292929292929292929282828282828282828292929292929 +292929282828282828282828282828282828282828282828303030303030303030545454545454 +5454547575757575757575757F7F7F7F7F7F7F7F7F8181818181818181818181817F7F7F7F7F7F +7F7F7F7B7B7B7B7B7B7B7B7B7979797979797979797C7C7C7C7C7C7C7C7C7C7C7C808080808080 +8080807E7E7E7E7E7E7E7E7E7D7D7D7D7D7D7D7D7D8282828282828282828A8A8A8A8A8A8A8A8A +8A8A8A9191919191919191919595959595959595959494949494949494948F8F8F8F8F8F8F8F8F +8C8C8C8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D909090909090909090959595959595959595 +9696969696969696969696968989898989898989898080808080808080807E7E7E7E7E7E7E7E7E +7E7E7E7E7E7E7E7E7E8383838383838383838383838D8D8D8D8D8D8D8D8DA4A4A4A4A4A4A4A4A4 +C0C0C0C0C0C0C0C0C0DADADADADADADADADAE4E4E4E4E4E4E4E4E4E4E4E4D6D6D6D6D6D6D6D6D6 +C7C7C7C7C7C7C7C7C7BFBFBFBFBFBFBFBFBFBABABABABABABABABABABABABBBBBBBBBBBBBBBBBB +C0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9CACACACACACACACACACACACA +CDCDCDCDCDCDCDCDCDD3D3D3D3D3D3D3D3D3D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5D6D6D5D5D5D5 +D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7DCDCDC +DCDCDCDCDCDCDCDCDCDFDFDFDFDFDFDFDFDFDCDCDCDCDCDCDCDCDCD7D7D7D7D7D7D7D7D7D4D4D4 +D4D4D4D4D4D4CCCCCCCCCCCCCCCCCCCCCCCCC0C0C0C0C0C0C0C0C0B6B6B6B6B6B6B6B6B6B5B5B5 +B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6B6B6B6C5C5C5C5C5C5C5C5C5DBDBDB +DBDBDBDBDBDBF2F2F2F2F2F2F2F2F2FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0EDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7 +E7E7E7E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4D9D9D9D9D9D9D9D9D9A6A6A6A6A6A6A6A6A6 +A6A6A65858585858585858583535353535353535352F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D +2D2D2D292929292929292929282828282828282828292929292929292929282828282828282828 +282828282828282828282828303030303030303030545454545454545454757575757575757575 +7F7F7F7F7F7F7F7F7F8181818181818181818181817F7F7F7F7F7F7F7F7F7B7B7B7B7B7B7B7B7B +7979797979797979797C7C7C7C7C7C7C7C7C7C7C7C8080808080808080807E7E7E7E7E7E7E7E7E +7D7D7D7D7D7D7D7D7D8282828282828282828A8A8A8A8A8A8A8A8A8A8A8A919191919191919191 +9595959595959595959494949494949494948F8F8F8F8F8F8F8F8F8C8C8C8C8C8C8C8C8C8C8C8C +8D8D8D8D8D8D8D8D8D909090909090909090959595959595959595969696969696969696969696 +8989898989898989898080808080808080807E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E838383 +8383838383838383838D8D8D8D8D8D8D8D8DA4A4A4A4A4A4A4A4A4C0C0C0C0C0C0C0C0C0DADADA +DADADADADADAE4E4E4E4E4E4E4E4E4E4E4E4D6D6D6D6D6D6D6D6D6C7C7C7C7C7C7C7C7C7BFBFBF +BFBFBFBFBFBFBABABABABABABABABABABABABBBBBBBBBBBBBBBBBBC0C0C0C0C0C0C0C0C0C5C5C5 +C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9CACACACACACACACACACACACACDCDCDCDCDCDCDCDCDD3D3D3 +D3D3D3D3D3D3D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D6D6D5 +D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7DCDCDCDCDCDCDCDCDCDCDCDCDFDFDF +DFDFDFDFDFDFDCDCDCDCDCDCDCDCDCD7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4CCCCCCCCCCCC +CCCCCCCCCCCCC0C0C0C0C0C0C0C0C0B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8 +B8B8B8B6B6B6B6B6B6B6B6B6B6B6B6C5C5C5C5C5C5C5C5C5DBDBDBDBDBDBDBDBDBF2F2F2F2F2F2 +F2F2F2FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFA +FAFAFAD0D0D0D0D0D0D0D0D0EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6 +E4E4E4E4E4E4E4E4E4D9D9D9D9D9D9D9D9D9A6A6A6A6A6A6A6A6A6A6A6A6585858585858585858 +3535353535353535352F2F2F2F2F2F2F2F2F2D2D2D2D2D2D2D2D2D2D2D2D292929292929292929 +282828282828282828292929292929292929282828282828282828282828282828282828282828 +3030303030303030305454545454545454547575757575757575757F7F7F7F7F7F7F7F7F818181 +8181818181818181817F7F7F7F7F7F7F7F7F7B7B7B7B7B7B7B7B7B7979797979797979797C7C7C +7C7C7C7C7C7C7C7C7C8080808080808080807E7E7E7E7E7E7E7E7E7D7D7D7D7D7D7D7D7D828282 +8282828282828A8A8A8A8A8A8A8A8A8A8A8A919191919191919191959595959595959595949494 +9494949494948F8F8F8F8F8F8F8F8F8C8C8C8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D909090 +909090909090959595959595959595969696969696969696969696898989898989898989808080 +8080808080807E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8383838383838383838383838D8D8D +8D8D8D8D8D8DA4A4A4A4A4A4A4A4A4C0C0C0C0C0C0C0C0C0DADADADADADADADADAE4E4E4E4E4E4 +E4E4E4E4E4E4D6D6D6D6D6D6D6D6D6C7C7C7C7C7C7C7C7C7BFBFBFBFBFBFBFBFBFBABABABABABA +BABABABABABABBBBBBBBBBBBBBBBBBC0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5C9C9C9C9C9C9 +C9C9C9CACACACACACACACACACACACACDCDCDCDCDCDCDCDCDD3D3D3D3D3D3D3D3D3D7D7D7D7D7D7 +D7D7D7D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6 +D6D6D6D7D7D7D7D7D7D7D7D7DCDCDCDCDCDCDCDCDCDCDCDCDFDFDFDFDFDFDFDFDFDCDCDCDCDCDC +DCDCDCD7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4CCCCCCCCCCCCCCCCCCCCCCCCC0C0C0C0C0C0 +C0C0C0B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6 +B6B6B6C5C5C5C5C5C5C5C5C5DBDBDBDBDBDBDBDBDBF2F2F2F2F2F2F2F2F2FEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0 +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E7E7E7 +E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4D8D8D8 +D8D8D8D8D8D8ACACACACACACACACACACACAC6565656565656565653A3A3A3A3A3A3A3A3A2F2F2F +2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B282828282828282828282828 +282828282828292929292929292929282828282828282828282828303030303030303030545454 +545454545454767676767676767676808080808080808080828282828282828282828282848484 +8484848484848686868686868686868A8A8A8A8A8A8A8A8A8B8B8B8B8B8B8B8B8B8B8B8B8A8A8A +8A8A8A8A8A8A8686868686868686868080808080808080807E7E7E7E7E7E7E7E7E808080808080 +808080808080848484848484848484878787878787878787888888888888888888888888888888 +8888888C8C8C8C8C8C8C8C8C8C8C8C9393939393939393939B9B9B9B9B9B9B9B9B9E9E9E9E9E9E +9E9E9E9999999999999999999999998D8D8D8D8D8D8D8D8D858585858585858585838383838383 +8383838181818181818181818585858585858585858585858F8F8F8F8F8F8F8F8FA3A3A3A3A3A3 +A3A3A3C3C3C3C3C3C3C3C3C3E0E0E0E0E0E0E0E0E0E9E9E9E9E9E9E9E9E9E9E9E9DCDCDCDCDCDC +DCDCDCCBCBCBCBCBCBCBCBCBC3C3C3C3C3C3C3C3C3BEBEBEBEBEBEBEBEBEBEBEBEBBBBBBBBBBBB +BBBBBBBCBCBCBCBCBCBCBCBCC3C3C3C3C3C3C3C3C3CECECECECECECECECED3D3D3D3D3D3D3D3D3 +D3D3D3D4D4D4D4D4D4D4D4D4D6D6D6D6D6D6D6D6D6D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDD +E0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1DEDEDEDEDEDEDEDEDED9D9D9D9D9D9D9D9D9 +D6D6D5D6D6D5D6D6D5CDCDCDCDCDCDCDCDCDCDCDCDC1C1C1C1C1C1C1C1C1B6B6B6B6B6B6B6B6B6 +B9B9B9B9B9B9B9B9B9C1C1C1C1C1C1C1C1C1B3B3B3B3B3B3B3B3B3B3B3B3BEBEBEBEBEBEBEBEBE +D4D4D4D4D4D4D4D4D4EEEEEEEEEEEEEEEEEEFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACAEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6 +E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4D8D8D8D8D8D8D8D8D8ACACACACACAC +ACACACACACAC6565656565656565653A3A3A3A3A3A3A3A3A2F2F2F2F2F2F2F2F2F2C2C2C2C2C2C +2C2C2C2C2C2C2B2B2B2B2B2B2B2B2B282828282828282828282828282828282828292929292929 +292929282828282828282828282828303030303030303030545454545454545454767676767676 +767676808080808080808080828282828282828282828282848484848484848484868686868686 +8686868A8A8A8A8A8A8A8A8A8B8B8B8B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A868686868686 +8686868080808080808080807E7E7E7E7E7E7E7E7E808080808080808080808080848484848484 +8484848787878787878787878888888888888888888888888888888888888C8C8C8C8C8C8C8C8C +8C8C8C9393939393939393939B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9E999999999999999999 +9999998D8D8D8D8D8D8D8D8D858585858585858585838383838383838383818181818181818181 +8585858585858585858585858F8F8F8F8F8F8F8F8FA3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3 +E0E0E0E0E0E0E0E0E0E9E9E9E9E9E9E9E9E9E9E9E9DCDCDCDCDCDCDCDCDCCBCBCBCBCBCBCBCBCB +C3C3C3C3C3C3C3C3C3BEBEBEBEBEBEBEBEBEBEBEBEBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBC +C3C3C3C3C3C3C3C3C3CECECECECECECECECED3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4 +D6D6D6D6D6D6D6D6D6D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9 +DADADADADADADADADADCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDE0E0E0E0E0E0E0E0E0E0E0E0 +E1E1E1E1E1E1E1E1E1DEDEDEDEDEDEDEDEDED9D9D9D9D9D9D9D9D9D6D6D5D6D6D5D6D6D5CDCDCD +CDCDCDCDCDCDCDCDCDC1C1C1C1C1C1C1C1C1B6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9C1C1C1 +C1C1C1C1C1C1B3B3B3B3B3B3B3B3B3B3B3B3BEBEBEBEBEBEBEBEBED4D4D4D4D4D4D4D4D4EEEEEE +EEEEEEEEEEEEFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9CACACACACACACACACAEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5 +E5E5E5E4E4E4E4E4E4E4E4E4D8D8D8D8D8D8D8D8D8ACACACACACACACACACACACAC656565656565 +6565653A3A3A3A3A3A3A3A3A2F2F2F2F2F2F2F2F2F2C2C2C2C2C2C2C2C2C2C2C2C2B2B2B2B2B2B +2B2B2B282828282828282828282828282828282828292929292929292929282828282828282828 +282828303030303030303030545454545454545454767676767676767676808080808080808080 +8282828282828282828282828484848484848484848686868686868686868A8A8A8A8A8A8A8A8A +8B8B8B8B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A868686868686868686808080808080808080 +7E7E7E7E7E7E7E7E7E808080808080808080808080848484848484848484878787878787878787 +8888888888888888888888888888888888888C8C8C8C8C8C8C8C8C8C8C8C939393939393939393 +9B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9E9999999999999999999999998D8D8D8D8D8D8D8D8D +858585858585858585838383838383838383818181818181818181858585858585858585858585 +8F8F8F8F8F8F8F8F8FA3A3A3A3A3A3A3A3A3C3C3C3C3C3C3C3C3C3E0E0E0E0E0E0E0E0E0E9E9E9 +E9E9E9E9E9E9E9E9E9DCDCDCDCDCDCDCDCDCCBCBCBCBCBCBCBCBCBC3C3C3C3C3C3C3C3C3BEBEBE +BEBEBEBEBEBEBEBEBEBBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCC3C3C3C3C3C3C3C3C3CECECE +CECECECECECED3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D6D6D6D6D6D6D6D6D6D9D9D9 +D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADCDCDC +DCDCDCDCDCDCDDDDDDDDDDDDDDDDDDE0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1DEDEDE +DEDEDEDEDEDED9D9D9D9D9D9D9D9D9D6D6D5D6D6D5D6D6D5CDCDCDCDCDCDCDCDCDCDCDCDC1C1C1 +C1C1C1C1C1C1B6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9C1C1C1C1C1C1C1C1C1B3B3B3B3B3B3 +B3B3B3B3B3B3BEBEBEBEBEBEBEBEBED4D4D4D4D4D4D4D4D4EEEEEEEEEEEEEEEEEEFDFDFDFDFDFD +FDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACA +CACACAEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE8E9E8E8E9E8E8E9E8 +E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2 +DBDBDBDBDBDBDBDBDBC1C1C1C1C1C1C1C1C1C1C1C1828282828282828282494949494949494949 +3030303030303030302B2B2B2B2B2B2B2B2B2B2B2B282828282828282828282828282828282828 +2828282828282828282929292929292929292929292929292929292929292F2F2F2F2F2F2F2F2F +525252525252525252767676767676767676818181818181818181848484848484848484848484 +8989898989898989898E8E8E8E8E8E8E8E8E939393939393939393959595959595959595959595 +9393939393939393939191919191919191918F8F8F8F8F8F8F8F8F8A8A8A8A8A8A8A8A8A8B8B8B +8B8B8B8B8B8B8B8B8B8F8F8F8F8F8F8F8F8F929292929292929292959595959595959595989898 +9898989898989D9D9D9D9D9D9D9D9D9D9D9DA2A2A2A2A2A2A2A2A2A4A4A4A4A4A4A4A4A4A2A2A2 +A2A2A2A2A2A29C9C9C9C9C9C9C9C9C9C9C9C9090909090909090908A8A8A8A8A8A8A8A8A858585 +8585858585858282828282828282828686868686868686868686868F8F8F8F8F8F8F8F8FA1A1A1 +A1A1A1A1A1A1C2C2C2C2C2C2C2C2C2E3E3E3E3E3E3E3E3E3EDEDEDEDEDEDEDEDEDEDEDEDDFDFDF +DFDFDFDFDFDFCACACACACACACACACAC3C3C3C3C3C3C3C3C3BFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFC2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCD7D7D7D7D7D7 +D7D7D7D7D7D7DDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDFE0DFDFE0DFDFE0DFE0E0E0E0E0E0 +E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E4E4E4E4E4E4E4E4E4E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E6E6E6E6E6E6E6E6E6E6E6E6E3E3E3E3E3E3E3E3E3DDDDDDDDDDDDDDDDDDD9D9D9D9D9D9 +D9D9D9D5D5D5D5D5D5D5D5D5CCCCCCCCCCCCCCCCCCCCCCCCC0C0C0C0C0C0C0C0C0B5B5B5B5B5B5 +B5B5B5BBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBB7B7B7B7B7B7B7B7B7B7B7B7B2B2B2B2B2B2 +B2B2B2CACACACACACACACACAECECECECECECECECECFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEB +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8 +E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2DBDBDBDBDBDBDBDBDBC1C1C1 +C1C1C1C1C1C1C1C1C18282828282828282824949494949494949493030303030303030302B2B2B +2B2B2B2B2B2B2B2B2B282828282828282828282828282828282828282828282828282828292929 +2929292929292929292929292929292929292F2F2F2F2F2F2F2F2F525252525252525252767676 +7676767676768181818181818181818484848484848484848484848989898989898989898E8E8E +8E8E8E8E8E8E939393939393939393959595959595959595959595939393939393939393919191 +9191919191918F8F8F8F8F8F8F8F8F8A8A8A8A8A8A8A8A8A8B8B8B8B8B8B8B8B8B8B8B8B8F8F8F +8F8F8F8F8F8F9292929292929292929595959595959595959898989898989898989D9D9D9D9D9D +9D9D9D9D9D9DA2A2A2A2A2A2A2A2A2A4A4A4A4A4A4A4A4A4A2A2A2A2A2A2A2A2A29C9C9C9C9C9C +9C9C9C9C9C9C9090909090909090908A8A8A8A8A8A8A8A8A858585858585858585828282828282 +8282828686868686868686868686868F8F8F8F8F8F8F8F8FA1A1A1A1A1A1A1A1A1C2C2C2C2C2C2 +C2C2C2E3E3E3E3E3E3E3E3E3EDEDEDEDEDEDEDEDEDEDEDEDDFDFDFDFDFDFDFDFDFCACACACACACA +CACACAC3C3C3C3C3C3C3C3C3BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +BFBFBFC2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCD7D7D7D7D7D7D7D7D7D7D7D7DDDDDDDDDDDD +DDDDDDDEDEDEDEDEDEDEDEDEDFE0DFDFE0DFDFE0DFE0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1 +E1E1E1E4E4E4E4E4E4E4E4E4E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6 +E6E6E6E3E3E3E3E3E3E3E3E3DDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D5D5D5D5D5D5D5D5D5 +CCCCCCCCCCCCCCCCCCCCCCCCC0C0C0C0C0C0C0C0C0B5B5B5B5B5B5B5B5B5BBBBBBBBBBBBBBBBBB +CBCBCBCBCBCBCBCBCBB7B7B7B7B7B7B7B7B7B7B7B7B2B2B2B2B2B2B2B2B2CACACACACACACACACA +ECECECECECECECECECFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEE +EEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBE9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7 +E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4DFE0DFDFE0DFDFE0DFD6D6D5D6D6D5D6D6D5D6D6D5A6A6A6 +A6A6A6A6A6A66363636363636363633939393939393939392B2B2B2B2B2B2B2B2B2B2B2B272727 +2727272727272828282828282828282929292929292929292C2C2C2C2C2C2C2C2C2D2D2D2D2D2D +2D2D2D2D2D2D313131313131313131525252525252525252777777777777777777808080808080 +8080808484848484848484848484848A8A8A8A8A8A8A8A8A919191919191919191989898989898 +9898989B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9FA3A3A3A3A3A3A3A3A3A7A7A7A7A7A7 +A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAAABABABABABAB +ABABABA9A9A9A9A9A9A9A9A9A6A6A6A6A6A6A6A6A6A2A2A2A2A2A2A2A2A2A2A2A2999999999999 +9999998E8E8E8E8E8E8E8E8E868686868686868686848484848484848484878787878787878787 +8787878D8D8D8D8D8D8D8D8D9E9E9E9E9E9E9E9E9EBFBFBFBFBFBFBFBFBFE3E3E3E3E3E3E3E3E3 +EFEFEFEFEFEFEFEFEFEFEFEFE3E3E3E3E3E3E3E3E3CFCFCFCFCFCFCFCFCFC3C3C3C3C3C3C3C3C3 +C0C0C0C0C0C0C0C0C0C0C0C0C4C4C4C4C4C4C4C4C4C7C7C7C7C7C7C7C7C7C9C9C9C9C9C9C9C9C9 +D0D0D0D0D0D0D0D0D0DADADADADADADADADADADADAE2E2E2E2E2E2E2E2E2E4E4E4E4E4E4E4E4E4 +E7E7E7E7E7E7E7E7E7E8E9E8E8E9E8E8E9E8EAEAEAEAEAEAEAEAEAEAEAEAF0F0F0F0F0F0F0F0F0 +F2F2F2F2F2F2F2F2F2F0F0F0F0F0F0F0F0F0EDEDEDEDEDEDEDEDEDEDEDEDE8E9E8E8E9E8E8E9E8 +E0E0E0E0E0E0E0E0E0D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0D0D0D0CACACACACACACACACACACACA +BFBFBFBFBFBFBFBFBFB5B5B5B5B5B5B5B5B5BDBDBDBDBDBDBDBDBDD2D2D2D2D2D2D2D2D2B9B9B9 +B9B9B9B9B9B9B9B9B9AEAEAEAEAEAEAEAEAEC6C6C6C6C6C6C6C6C6E8E8E8E8E8E8E8E8E8FDFDFD +FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7 +C7C7C7C7C7C7EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEDEDED +EDEDEDEDEDEDECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9 +E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4 +E4E4E4DFE0DFDFE0DFDFE0DFD6D6D5D6D6D5D6D6D5D6D6D5A6A6A6A6A6A6A6A6A6636363636363 +6363633939393939393939392B2B2B2B2B2B2B2B2B2B2B2B272727272727272727282828282828 +2828282929292929292929292C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D313131313131 +313131525252525252525252777777777777777777808080808080808080848484848484848484 +8484848A8A8A8A8A8A8A8A8A9191919191919191919898989898989898989B9B9B9B9B9B9B9B9B +9B9B9B9C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9F9F9F9F9F9F9F9F9F9F9F9FA3A3A3A3A3A3A3A3A3A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7 +A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAAABABABABABABABABABA9A9A9A9A9A9A9A9A9 +A6A6A6A6A6A6A6A6A6A2A2A2A2A2A2A2A2A2A2A2A29999999999999999998E8E8E8E8E8E8E8E8E +8686868686868686868484848484848484848787878787878787878787878D8D8D8D8D8D8D8D8D +9E9E9E9E9E9E9E9E9EBFBFBFBFBFBFBFBFBFE3E3E3E3E3E3E3E3E3EFEFEFEFEFEFEFEFEFEFEFEF +E3E3E3E3E3E3E3E3E3CFCFCFCFCFCFCFCFCFC3C3C3C3C3C3C3C3C3C0C0C0C0C0C0C0C0C0C0C0C0 +C4C4C4C4C4C4C4C4C4C7C7C7C7C7C7C7C7C7C9C9C9C9C9C9C9C9C9D0D0D0D0D0D0D0D0D0DADADA +DADADADADADADADADAE2E2E2E2E2E2E2E2E2E4E4E4E4E4E4E4E4E4E7E7E7E7E7E7E7E7E7E8E9E8 +E8E9E8E8E9E8EAEAEAEAEAEAEAEAEAEAEAEAF0F0F0F0F0F0F0F0F0F2F2F2F2F2F2F2F2F2F0F0F0 +F0F0F0F0F0F0EDEDEDEDEDEDEDEDEDEDEDEDE8E9E8E8E9E8E8E9E8E0E0E0E0E0E0E0E0E0D9D9D9 +D9D9D9D9D9D9D0D0D0D0D0D0D0D0D0CACACACACACACACACACACACABFBFBFBFBFBFBFBFBFB5B5B5 +B5B5B5B5B5B5BDBDBDBDBDBDBDBDBDD2D2D2D2D2D2D2D2D2B9B9B9B9B9B9B9B9B9B9B9B9AEAEAE +AEAEAEAEAEAEC6C6C6C6C6C6C6C6C6E8E8E8E8E8E8E8E8E8FDFDFDFDFDFDFDFDFDFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7EDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC +ECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECEC +ECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4DFE0DFDFE0DFDFE0DF +D6D6D5D6D6D5D6D6D5D6D6D5A6A6A6A6A6A6A6A6A6636363636363636363393939393939393939 +2B2B2B2B2B2B2B2B2B2B2B2B272727272727272727282828282828282828292929292929292929 +2C2C2C2C2C2C2C2C2C2D2D2D2D2D2D2D2D2D2D2D2D313131313131313131525252525252525252 +7777777777777777778080808080808080808484848484848484848484848A8A8A8A8A8A8A8A8A +9191919191919191919898989898989898989B9B9B9B9B9B9B9B9B9B9B9B9C9C9C9C9C9C9C9C9C +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9F9F9F +A3A3A3A3A3A3A3A3A3A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8AAAAAA +AAAAAAAAAAAAAAAAAAABABABABABABABABABA9A9A9A9A9A9A9A9A9A6A6A6A6A6A6A6A6A6A2A2A2 +A2A2A2A2A2A2A2A2A29999999999999999998E8E8E8E8E8E8E8E8E868686868686868686848484 +8484848484848787878787878787878787878D8D8D8D8D8D8D8D8D9E9E9E9E9E9E9E9E9EBFBFBF +BFBFBFBFBFBFE3E3E3E3E3E3E3E3E3EFEFEFEFEFEFEFEFEFEFEFEFE3E3E3E3E3E3E3E3E3CFCFCF +CFCFCFCFCFCFC3C3C3C3C3C3C3C3C3C0C0C0C0C0C0C0C0C0C0C0C0C4C4C4C4C4C4C4C4C4C7C7C7 +C7C7C7C7C7C7C9C9C9C9C9C9C9C9C9D0D0D0D0D0D0D0D0D0DADADADADADADADADADADADAE2E2E2 +E2E2E2E2E2E2E4E4E4E4E4E4E4E4E4E7E7E7E7E7E7E7E7E7E8E9E8E8E9E8E8E9E8EAEAEAEAEAEA +EAEAEAEAEAEAF0F0F0F0F0F0F0F0F0F2F2F2F2F2F2F2F2F2F0F0F0F0F0F0F0F0F0EDEDEDEDEDED +EDEDEDEDEDEDE8E9E8E8E9E8E8E9E8E0E0E0E0E0E0E0E0E0D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0 +D0D0D0CACACACACACACACACACACACABFBFBFBFBFBFBFBFBFB5B5B5B5B5B5B5B5B5BDBDBDBDBDBD +BDBDBDD2D2D2D2D2D2D2D2D2B9B9B9B9B9B9B9B9B9B9B9B9AEAEAEAEAEAEAEAEAEC6C6C6C6C6C6 +C6C6C6E8E8E8E8E8E8E8E8E8FDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7EDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEE +EFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDED +ECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEC +ECECECECECECECECECEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4DFDFDFDFDFDFDFDFDFDFDFDF +C2C2C2C2C2C2C2C2C28383838383838383834646464646464646462D2D2D2D2D2D2D2D2D2D2D2D +2727272727272727272828282828282828282B2B2B2B2B2B2B2B2B303030303030303030343434 +3434343434343434343B3B3B3B3B3B3B3B3B5A5A5A5A5A5A5A5A5A797979797979797979818181 +8181818181818484848484848484848484848B8B8B8B8B8B8B8B8B9393939393939393939A9A9A +9A9A9A9A9A9A9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A5A5A5 +A5A5A5A5A5A5A7A7A7A7A7A7A7A7A7A9A9A9A9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAEB0B1B0 +B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B0B1B0 +B0B1B0B0B1B0ADADADADADADADADADADADADADADADADADADADADADADADADADADADADADADA0A0A0 +A0A0A0A0A0A08F8F8F8F8F8F8F8F8F868686868686868686868686868686868686878787878787 +8787878787878B8B8B8B8B8B8B8B8B9E9E9E9E9E9E9E9E9EC2C2C2C2C2C2C2C2C2E3E3E3E3E3E3 +E3E3E3EDEDEDEDEDEDEDEDEDEDEDEDE4E4E4E4E4E4E4E4E4D4D4D4D4D4D4D4D4D4C5C5C5C5C5C5 +C5C5C5BFBFBFBFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5CACACACACACACACACACDCDCDCDCDCD +CDCDCDD4D4D4D4D4D4D4D4D4DDDDDDDDDDDDDDDDDDDDDDDDE6E6E6E6E6E6E6E6E6EAEAEAEAEAEA +EAEAEAEDEDEDEDEDEDEDEDEDF1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F6F6F6F6F6F6 +F6F6F6F9F9F9F9F9F9F9F9F9F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4F4F4F4F4F4F4EDEDEDEDEDED +EDEDEDE5E5E5E5E5E5E5E5E5DBDBDBDBDBDBDBDBDBD0D0D0D0D0D0D0D0D0C7C7C7C7C7C7C7C7C7 +C7C7C7BEBEBEBEBEBEBEBEBEB5B5B5B5B5B5B5B5B5BDBDBDBDBDBDBDBDBDCECECECECECECECECE +B3B3B3B3B3B3B3B3B3B3B3B3B0B1B0B0B1B0B0B1B0C6C6C6C6C6C6C6C6C6E4E4E4E4E4E4E4E4E4 +FDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFB +D7D7D7D7D7D7D7D7D7EDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEF +EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECECECECECECECEC +ECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEAEAEA +EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E5E5E5 +E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4DFDFDFDFDFDFDFDFDFDFDFDFC2C2C2C2C2C2C2C2C2838383 +8383838383834646464646464646462D2D2D2D2D2D2D2D2D2D2D2D272727272727272727282828 +2828282828282B2B2B2B2B2B2B2B2B3030303030303030303434343434343434343434343B3B3B +3B3B3B3B3B3B5A5A5A5A5A5A5A5A5A797979797979797979818181818181818181848484848484 +8484848484848B8B8B8B8B8B8B8B8B9393939393939393939A9A9A9A9A9A9A9A9A9D9D9D9D9D9D +9D9D9D9D9D9D9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A5A5A5A5A5A5A5A5A5A7A7A7A7A7A7 +A7A7A7A9A9A9A9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAEB0B1B0B0B1B0B0B1B0AFAFAFAFAFAF +AFAFAFB0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1B0B1B0B0B1B0B0B1B0ADADADADADAD +ADADADADADADADADADADADADADADADADADADADADADADADADA0A0A0A0A0A0A0A0A08F8F8F8F8F8F +8F8F8F8686868686868686868686868686868686868787878787878787878787878B8B8B8B8B8B +8B8B8B9E9E9E9E9E9E9E9E9EC2C2C2C2C2C2C2C2C2E3E3E3E3E3E3E3E3E3EDEDEDEDEDEDEDEDED +EDEDEDE4E4E4E4E4E4E4E4E4D4D4D4D4D4D4D4D4D4C5C5C5C5C5C5C5C5C5BFBFBFBFBFBFBFBFBF +BFBFBFC5C5C5C5C5C5C5C5C5CACACACACACACACACACDCDCDCDCDCDCDCDCDD4D4D4D4D4D4D4D4D4 +DDDDDDDDDDDDDDDDDDDDDDDDE6E6E6E6E6E6E6E6E6EAEAEAEAEAEAEAEAEAEDEDEDEDEDEDEDEDED +F1F1F1F1F1F1F1F1F1F2F2F2F2F2F2F2F2F2F2F2F2F6F6F6F6F6F6F6F6F6F9F9F9F9F9F9F9F9F9 +F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4F4F4F4F4F4F4EDEDEDEDEDEDEDEDEDE5E5E5E5E5E5E5E5E5 +DBDBDBDBDBDBDBDBDBD0D0D0D0D0D0D0D0D0C7C7C7C7C7C7C7C7C7C7C7C7BEBEBEBEBEBEBEBEBE +B5B5B5B5B5B5B5B5B5BDBDBDBDBDBDBDBDBDCECECECECECECECECEB3B3B3B3B3B3B3B3B3B3B3B3 +B0B1B0B0B1B0B0B1B0C6C6C6C6C6C6C6C6C6E4E4E4E4E4E4E4E4E4FDFDFDFDFDFDFDFDFDFDFDFD +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD7D7D7D7D7D7D7D7D7EFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEFEEEEEE +EEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5 +E5E5E5E3E3E3E3E3E3E3E3E3E3E3E3D5D5D5D5D5D5D5D5D5A8A8A8A8A8A8A8A8A85F605F5F605F +5F605F3434343434343434343434342828282828282828282828282828282828282F2F2F2F2F2F +2F2F2F3B3B3B3B3B3B3B3B3B4444444444444444444444444B4B4B4B4B4B4B4B4B616161616161 +6161617B7B7B7B7B7B7B7B7B8181818181818181818484848484848484848484848A8A8A8A8A8A +8A8A8A9090909090909090909A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9F9F9F9FA1A1A1A1A1A1 +A1A1A1A4A4A4A4A4A4A4A4A4A9A9A9A9A9A9A9A9A9ADADADADADADADADADB0B0B0B0B0B0B0B0B0 +B0B0B0B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B1B1B1B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3 +B6B6B6B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B9B9B9B9B9B9B9B9B9 +B8B8B8B8B8B8B8B8B8B8B8B8A5A5A5A5A5A5A5A5A5909090909090909090898989898989898989 +8888888888888888888888888888888888888888888A8A8A8A8A8A8A8A8A9E9E9E9E9E9E9E9E9E +BFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFE7E7E7E7E7E7E7E7E7E7E7E7E2E2E2E2E2E2E2E2E2 +D7D7D7D7D7D7D7D7D7C9C9C9C9C9C9C9C9C9BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +C2C2C2C2C2C2C2C2C2C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D6E6E6E6E6E6E6E6E6E6E6E6E6 +EEEEEEEEEEEEEEEEEEF2F2F2F2F2F2F2F2F2F5F5F5F5F5F5F5F5F5F8F8F8F8F8F8F8F8F8F9F9F9 +F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF9F9F9 +F9F9F9F9F9F9F9F9F9F0F0F0F0F0F0F0F0F0E8E8E8E8E8E8E8E8E8DEDEDEDEDEDEDEDEDED3D3D3 +D3D3D3D3D3D3C8C8C8C8C8C8C8C8C8C8C8C8BDBDBDBDBDBDBDBDBDB5B5B5B5B5B5B5B5B5BABABA +BABABABABABAC2C2C2C2C2C2C2C2C2AAAAAAAAAAAAAAAAAAAAAAAAB7B7B7B7B7B7B7B7B7C6C6C6 +C6C6C6C6C6C6E1E1E1E1E1E1E1E1E1FCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACAEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF +EFEFEFF0F0F0F0F0F0F0F0F0F0F0F0EFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEE +EEEEEEECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9 +E9E9E9E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E3E3E3E3E3E3E3E3E3 +E3E3E3D5D5D5D5D5D5D5D5D5A8A8A8A8A8A8A8A8A85F605F5F605F5F605F343434343434343434 +3434342828282828282828282828282828282828282F2F2F2F2F2F2F2F2F3B3B3B3B3B3B3B3B3B +4444444444444444444444444B4B4B4B4B4B4B4B4B6161616161616161617B7B7B7B7B7B7B7B7B +8181818181818181818484848484848484848484848A8A8A8A8A8A8A8A8A909090909090909090 +9A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9F9F9F9FA1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4 +A9A9A9A9A9A9A9A9A9ADADADADADADADADADB0B0B0B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4B4B4B4 +B4B4B4B4B4B4B4B4B4B1B1B1B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3B6B6B6B6B6B6B6B6B6B6B6B6 +B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8 +A5A5A5A5A5A5A5A5A5909090909090909090898989898989898989888888888888888888888888 +8888888888888888888A8A8A8A8A8A8A8A8A9E9E9E9E9E9E9E9E9EBFBFBFBFBFBFBFBFBFDFDFDF +DFDFDFDFDFDFE7E7E7E7E7E7E7E7E7E7E7E7E2E2E2E2E2E2E2E2E2D7D7D7D7D7D7D7D7D7C9C9C9 +C9C9C9C9C9C9BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFC2C2C2C2C2C2C2C2C2C6C6C6 +C6C6C6C6C6C6D6D6D6D6D6D6D6D6D6E6E6E6E6E6E6E6E6E6E6E6E6EEEEEEEEEEEEEEEEEEF2F2F2 +F2F2F2F2F2F2F5F5F5F5F5F5F5F5F5F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9FAFAFA +FAFAFAFAFAFAFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF9F9F9F9F9F9F9F9F9F9F9F9F0F0F0 +F0F0F0F0F0F0E8E8E8E8E8E8E8E8E8DEDEDEDEDEDEDEDEDED3D3D3D3D3D3D3D3D3C8C8C8C8C8C8 +C8C8C8C8C8C8BDBDBDBDBDBDBDBDBDB5B5B5B5B5B5B5B5B5BABABABABABABABABAC2C2C2C2C2C2 +C2C2C2AAAAAAAAAAAAAAAAAAAAAAAAB7B7B7B7B7B7B7B7B7C6C6C6C6C6C6C6C6C6E1E1E1E1E1E1 +E1E1E1FCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9CACACACACACACACACAEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFF0F0F0F0F0F0F0F0F0 +F0F0F0EFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEECECECECECECECECEC +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8 +E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E3E3E3E3E3E3E3E3E3E3E3E3D5D5D5D5D5D5D5D5D5 +A8A8A8A8A8A8A8A8A85F605F5F605F5F605F343434343434343434343434282828282828282828 +2828282828282828282F2F2F2F2F2F2F2F2F3B3B3B3B3B3B3B3B3B444444444444444444444444 +4B4B4B4B4B4B4B4B4B6161616161616161617B7B7B7B7B7B7B7B7B818181818181818181848484 +8484848484848484848A8A8A8A8A8A8A8A8A9090909090909090909A9A9A9A9A9A9A9A9A9F9F9F +9F9F9F9F9F9F9F9F9FA1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4A9A9A9A9A9A9A9A9A9ADADAD +ADADADADADADB0B0B0B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B1B1B1 +B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3B6B6B6B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5B5B5B5 +B5B5B5B5B5B5B9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8A5A5A5A5A5A5A5A5A5909090 +9090909090908989898989898989898888888888888888888888888888888888888888888A8A8A +8A8A8A8A8A8A9E9E9E9E9E9E9E9E9EBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFE7E7E7E7E7E7 +E7E7E7E7E7E7E2E2E2E2E2E2E2E2E2D7D7D7D7D7D7D7D7D7C9C9C9C9C9C9C9C9C9BFBFBFBFBFBF +BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFC2C2C2C2C2C2C2C2C2C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6 +D6D6D6E6E6E6E6E6E6E6E6E6E6E6E6EEEEEEEEEEEEEEEEEEF2F2F2F2F2F2F2F2F2F5F5F5F5F5F5 +F5F5F5F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFCFCFCFCFCFC +FCFCFCFCFCFCFCFCFCFCFCFCF9F9F9F9F9F9F9F9F9F9F9F9F0F0F0F0F0F0F0F0F0E8E8E8E8E8E8 +E8E8E8DEDEDEDEDEDEDEDEDED3D3D3D3D3D3D3D3D3C8C8C8C8C8C8C8C8C8C8C8C8BDBDBDBDBDBD +BDBDBDB5B5B5B5B5B5B5B5B5BABABABABABABABABAC2C2C2C2C2C2C2C2C2AAAAAAAAAAAAAAAAAA +AAAAAAB7B7B7B7B7B7B7B7B7C6C6C6C6C6C6C6C6C6E1E1E1E1E1E1E1E1E1FCFCFCFCFCFCFCFCFC +FCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACA +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +EEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECECECECECECECEC +ECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEB +EBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E7E7E7 +E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4E4E4E4DEDEDEDEDEDEDEDEDEC5C5C5C5C5C5C5C5C5838383 +8383838383834242424242424242424242422B2B2B2B2B2B2B2B2B292929292929292929363636 +3636363636364D4D4D4D4D4D4D4D4D5B5B5B5B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C676767 +6767676767677C7C7C7C7C7C7C7C7C818181818181818181838383838383838383838383878787 +8787878787879090909090909090909C9C9C9C9C9C9C9C9CA1A1A1A1A1A1A1A1A1A1A1A1A3A3A3 +A3A3A3A3A3A3A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEB2B2B2B2B2B2B2B2B2B6B6B6B6B6B6 +B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8 +B8B8B8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDC3C3C3C3C3C3 +C3C3C3BEBEBEBEBEBEBEBEBEBEBEBEA8A8A8A8A8A8A8A8A89191919191919191918B8B8B8B8B8B +8B8B8B8989898989898989898888888888888888888888888B8B8B8B8B8B8B8B8B9F9F9F9F9F9F +9F9F9FBFBFBFBFBFBFBFBFBFDBDBDBDBDBDBDBDBDBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 +E3E3E3DFDFDFDFDFDFDFDFDFD0D0D0D0D0D0D0D0D0C1C1C1C1C1C1C1C1C1C1C1C1BCBCBCBCBCBC +BCBCBCB9B9B9B9B9B9B9B9B9BBBBBBBBBBBBBBBBBBCFCFCFCFCFCFCFCFCFE6E6E6E6E6E6E6E6E6 +E6E6E6F1F1F1F1F1F1F1F1F1F9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FBFBFBFBFBFBFBFBFBFBFBFBF3F3F3F3F3F3F3F3F3E9E9E9E9E9E9E9E9E9DEDEDEDEDEDEDEDEDE +D5D5D5D5D5D5D5D5D5C8C8C8C8C8C8C8C8C8C8C8C8BCBCBCBCBCBCBCBCBCB3B3B3B3B3B3B3B3B3 +B6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9B2B2B2B2B2B2B2B2B2B2B2B2C5C5C5C5C5C5C5C5C5 +C9C9C9C9C9C9C9C9C9E1E1E1E1E1E1E1E1E1FCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD4D4D4D4D4D4D4D4D4F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EEEEEEEEEEEEEEEEEEEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEE +EEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECECECECECECECECECECEBEBEB +EBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBEAEAEA +EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4 +E4E4E4E4E4E4DEDEDEDEDEDEDEDEDEC5C5C5C5C5C5C5C5C5838383838383838383424242424242 +4242424242422B2B2B2B2B2B2B2B2B2929292929292929293636363636363636364D4D4D4D4D4D +4D4D4D5B5B5B5B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C6767676767676767677C7C7C7C7C7C +7C7C7C818181818181818181838383838383838383838383878787878787878787909090909090 +9090909C9C9C9C9C9C9C9C9CA1A1A1A1A1A1A1A1A1A1A1A1A3A3A3A3A3A3A3A3A3A8A8A8A8A8A8 +A8A8A8AEAEAEAEAEAEAEAEAEB2B2B2B2B2B2B2B2B2B6B6B6B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8 +B8B8B8B7B7B7B7B7B7B7B7B7B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBB +BBBBBBBBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDC3C3C3C3C3C3C3C3C3BEBEBEBEBEBEBEBEBE +BEBEBEA8A8A8A8A8A8A8A8A89191919191919191918B8B8B8B8B8B8B8B8B898989898989898989 +8888888888888888888888888B8B8B8B8B8B8B8B8B9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBF +DBDBDBDBDBDBDBDBDBE3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DFDFDFDFDFDFDFDFDF +D0D0D0D0D0D0D0D0D0C1C1C1C1C1C1C1C1C1C1C1C1BCBCBCBCBCBCBCBCBCB9B9B9B9B9B9B9B9B9 +BBBBBBBBBBBBBBBBBBCFCFCFCFCFCFCFCFCFE6E6E6E6E6E6E6E6E6E6E6E6F1F1F1F1F1F1F1F1F1 +F9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFBFBFBFBFBFBFBFBFB +F3F3F3F3F3F3F3F3F3E9E9E9E9E9E9E9E9E9DEDEDEDEDEDEDEDEDED5D5D5D5D5D5D5D5D5C8C8C8 +C8C8C8C8C8C8C8C8C8BCBCBCBCBCBCBCBCBCB3B3B3B3B3B3B3B3B3B6B6B6B6B6B6B6B6B6B9B9B9 +B9B9B9B9B9B9B2B2B2B2B2B2B2B2B2B2B2B2C5C5C5C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9E1E1E1 +E1E1E1E1E1E1FCFCFCFCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +FBFBFBFBFBFBD4D4D4D4D4D4D4D4D4F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 +F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0EEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEDEDEDEDEDED +EDEDEDECECECECECECECECECECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9 +E9E9E9E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E4E4E4E4E4E4E4E4E4E4E4E4DEDEDEDEDEDE +DEDEDEC5C5C5C5C5C5C5C5C58383838383838383834242424242424242424242422B2B2B2B2B2B +2B2B2B2929292929292929293636363636363636364D4D4D4D4D4D4D4D4D5B5B5B5B5B5B5B5B5B +5B5B5B5C5C5C5C5C5C5C5C5C6767676767676767677C7C7C7C7C7C7C7C7C818181818181818181 +8383838383838383838383838787878787878787879090909090909090909C9C9C9C9C9C9C9C9C +A1A1A1A1A1A1A1A1A1A1A1A1A3A3A3A3A3A3A3A3A3A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAE +B2B2B2B2B2B2B2B2B2B6B6B6B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7 +B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB +BDBDBDBDBDBDBDBDBDC3C3C3C3C3C3C3C3C3BEBEBEBEBEBEBEBEBEBEBEBEA8A8A8A8A8A8A8A8A8 +9191919191919191918B8B8B8B8B8B8B8B8B898989898989898989888888888888888888888888 +8B8B8B8B8B8B8B8B8B9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFDBDBDBDBDBDBDBDBDBE3E3E3 +E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3DFDFDFDFDFDFDFDFDFD0D0D0D0D0D0D0D0D0C1C1C1 +C1C1C1C1C1C1C1C1C1BCBCBCBCBCBCBCBCBCB9B9B9B9B9B9B9B9B9BBBBBBBBBBBBBBBBBBCFCFCF +CFCFCFCFCFCFE6E6E6E6E6E6E6E6E6E6E6E6F1F1F1F1F1F1F1F1F1F9F9F9F9F9F9F9F9F9FDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFBFBFBFBFBFBFBFBFBFBFBFBF3F3F3F3F3F3F3F3F3E9E9E9 +E9E9E9E9E9E9DEDEDEDEDEDEDEDEDED5D5D5D5D5D5D5D5D5C8C8C8C8C8C8C8C8C8C8C8C8BCBCBC +BCBCBCBCBCBCB3B3B3B3B3B3B3B3B3B6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9B2B2B2B2B2B2 +B2B2B2B2B2B2C5C5C5C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9E1E1E1E1E1E1E1E1E1FCFCFCFCFCFC +FCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD4D4D4D4D4D4 +D4D4D4EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEE +EEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECEC +ECECECECECECECECECECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2D6D6D5D6D6D5D6D6D5 +A8A8A8A8A8A8A8A8A85C5C5C5C5C5C5C5C5C5C5C5C3232323232323232322F2F2F2F2F2F2F2F2F +4444444444444444446262626262626262626C6C6C6C6C6C6C6C6C6C6C6C666666666666666666 +6B6B6B6B6B6B6B6B6B7D7D7D7D7D7D7D7D7D808080808080808080828282828282828282828282 +8787878787878787879090909090909090909B9B9B9B9B9B9B9B9BA0A0A0A0A0A0A0A0A0A0A0A0 +A3A3A3A3A3A3A3A3A3A8A8A8A8A8A8A8A8A8B0B0B0B0B0B0B0B0B0B3B3B3B3B3B3B3B3B3B9B9B9 +B9B9B9B9B9B9B9B9B9BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBFBFBFBFBFBFBFBFBFC0C0C0 +C0C0C0C0C0C0C2C2C2C2C2C2C2C2C2C2C2C2C1C1C1C1C1C1C1C1C1C3C3C3C3C3C3C3C3C3C5C5C5 +C5C5C5C5C5C5BFBFBFBFBFBFBFBFBFBFBFBFA8A8A8A8A8A8A8A8A89292929292929292928A8A8A +8A8A8A8A8A8A8686868686868686868686868686868686868686868E8E8E8E8E8E8E8E8EA3A3A3 +A3A3A3A3A3A3C2C2C2C2C2C2C2C2C2DDDDDDDDDDDDDDDDDDE4E4E4E4E4E4E4E4E4E4E4E4E5E5E5 +E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5DBDBDBDBDBDBDBDBDBCACACACACACACACACACACACABDBDBD +BDBDBDBDBDBDB6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5BEBEBEBEBEBEBEBEBED2D2D2D2D2D2 +D2D2D2D2D2D2E7E7E7E7E7E7E7E7E7F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFCFCFCFCFCFCFCFCFCFCFCFCF5F5F5F5F5F5F5F5F5EAEAEAEAEAEAEAEAEADFDFDFDFDFDF +DFDFDFD6D6D5D6D6D5D6D6D5C8C8C8C8C8C8C8C8C8C8C8C8BBBBBBBBBBBBBBBBBBB1B1B1B1B1B1 +B1B1B1B1B1B1B1B1B1B1B1B1B8B8B8B8B8B8B8B8B8C3C3C3C3C3C3C3C3C3C3C3C3D3D3D3D3D3D3 +D3D3D3D1D1D1D1D1D1D1D1D1E5E5E5E5E5E5E5E5E5FDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE1E1E1E1E1E1E1E1E1EFEFEFEFEFEFEFEFEF +EFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECECECECECECECECECEC +ECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E6E6E6 +E6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2D6D6D5D6D6D5D6D6D5A8A8A8A8A8A8A8A8A85C5C5C +5C5C5C5C5C5C5C5C5C3232323232323232322F2F2F2F2F2F2F2F2F444444444444444444626262 +6262626262626C6C6C6C6C6C6C6C6C6C6C6C6666666666666666666B6B6B6B6B6B6B6B6B7D7D7D +7D7D7D7D7D7D808080808080808080828282828282828282828282878787878787878787909090 +9090909090909B9B9B9B9B9B9B9B9BA0A0A0A0A0A0A0A0A0A0A0A0A3A3A3A3A3A3A3A3A3A8A8A8 +A8A8A8A8A8A8B0B0B0B0B0B0B0B0B0B3B3B3B3B3B3B3B3B3B9B9B9B9B9B9B9B9B9B9B9B9BCBCBC +BCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0C2C2C2C2C2C2 +C2C2C2C2C2C2C1C1C1C1C1C1C1C1C1C3C3C3C3C3C3C3C3C3C5C5C5C5C5C5C5C5C5BFBFBFBFBFBF +BFBFBFBFBFBFA8A8A8A8A8A8A8A8A89292929292929292928A8A8A8A8A8A8A8A8A868686868686 +8686868686868686868686868686868E8E8E8E8E8E8E8E8EA3A3A3A3A3A3A3A3A3C2C2C2C2C2C2 +C2C2C2DDDDDDDDDDDDDDDDDDE4E4E4E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5 +E5E5E5DBDBDBDBDBDBDBDBDBCACACACACACACACACACACACABDBDBDBDBDBDBDBDBDB6B6B6B6B6B6 +B6B6B6B5B5B5B5B5B5B5B5B5BEBEBEBEBEBEBEBEBED2D2D2D2D2D2D2D2D2D2D2D2E7E7E7E7E7E7 +E7E7E7F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFCFCFCFCFCFCFCFCFC +FCFCFCF5F5F5F5F5F5F5F5F5EAEAEAEAEAEAEAEAEADFDFDFDFDFDFDFDFDFD6D6D5D6D6D5D6D6D5 +C8C8C8C8C8C8C8C8C8C8C8C8BBBBBBBBBBBBBBBBBBB1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1 +B8B8B8B8B8B8B8B8B8C3C3C3C3C3C3C3C3C3C3C3C3D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1 +E5E5E5E5E5E5E5E5E5FDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FCFCFCFCFCFCFCFCFCE1E1E1E1E1E1E1E1E1EEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEEEEEE +EEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECECECECECEDEDEDEDEDEDEDEDEDECECEC +ECECECECECECECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E3E3E3 +E3E3E3E3E3E3DCDCDCDCDCDCDCDCDCC5C5C5C5C5C5C5C5C5808080808080808080808080414141 +414141414141363636363636363636565656565656565656707070707070707070727272727272 +7272727272726A6A6A6A6A6A6A6A6A6E6E6E6E6E6E6E6E6E7D7D7D7D7D7D7D7D7D7F7F7F7F7F7F +7F7F7F818181818181818181818181878787878787878787909090909090909090999999999999 +9999999F9F9F9F9F9F9F9F9F9F9F9FA2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8ADADADADADAD +ADADADB4B4B4B4B4B4B4B4B4BBBBBBBBBBBBBBBBBBBBBBBBBFBFBFBFBFBFBFBFBFC4C4C4C4C4C4 +C4C4C4C8C8C8C8C8C8C8C8C8CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC7C7C7C7C7C7 +C7C7C7C5C5C5C5C5C5C5C5C5CACACACACACACACACAC2C2C2C2C2C2C2C2C2C2C2C2A7A7A7A7A7A7 +A7A7A78F8F8F8F8F8F8F8F8F858585858585858585828282828282828282838383838383838383 +8383838F8F8F8F8F8F8F8F8FA8A8A8A8A8A8A8A8A8C9C9C9C9C9C9C9C9C9DFDFDFDFDFDFDFDFDF +E6E6E6E6E6E6E6E6E6E6E6E6E9E9E9E9E9E9E9E9E9EBEBEBEBEBEBEBEBEBE1E1E1E1E1E1E1E1E1 +D1D1D1D1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1C1B7B7B7B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4 +B1B1B1B1B1B1B1B1B1BEBEBEBEBEBEBEBEBEBEBEBED1D1D1D1D1D1D1D1D1E3E3E3E3E3E3E3E3E3 +F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDF6F6F6F6F6F6F6F6F6 +EBEBEBEBEBEBEBEBEBDFDFDFDFDFDFDFDFDFD4D4D4D4D4D4D4D4D4C7C7C7C7C7C7C7C7C7C7C7C7 +BABABABABABABABABAB0B1B0B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0BDBDBDBDBDBDBDBDBDCDCDCD +CDCDCDCDCDCDCDCDCDDADADADADADADADADAD7D7D7D7D7D7D7D7D7EBEBEBEBEBEBEBEBEBFDFDFD +FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7 +C7C7C7C7C7C7EEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEDEDED +EDEDEDEDEDEDECECECECECECECECECEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E3E3E3E3E3E3E3E3E3DCDCDCDCDCDC +DCDCDCC5C5C5C5C5C5C5C5C5808080808080808080808080414141414141414141363636363636 +3636365656565656565656567070707070707070707272727272727272727272726A6A6A6A6A6A +6A6A6A6E6E6E6E6E6E6E6E6E7D7D7D7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F818181818181818181 +8181818787878787878787879090909090909090909999999999999999999F9F9F9F9F9F9F9F9F +9F9F9FA2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8ADADADADADADADADADB4B4B4B4B4B4B4B4B4 +BBBBBBBBBBBBBBBBBBBBBBBBBFBFBFBFBFBFBFBFBFC4C4C4C4C4C4C4C4C4C8C8C8C8C8C8C8C8C8 +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC7C7C7C7C7C7C7C7C7C5C5C5C5C5C5C5C5C5 +CACACACACACACACACAC2C2C2C2C2C2C2C2C2C2C2C2A7A7A7A7A7A7A7A7A78F8F8F8F8F8F8F8F8F +8585858585858585858282828282828282828383838383838383838383838F8F8F8F8F8F8F8F8F +A8A8A8A8A8A8A8A8A8C9C9C9C9C9C9C9C9C9DFDFDFDFDFDFDFDFDFE6E6E6E6E6E6E6E6E6E6E6E6 +E9E9E9E9E9E9E9E9E9EBEBEBEBEBEBEBEBEBE1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1D1D1D1D1 +C1C1C1C1C1C1C1C1C1B7B7B7B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4B1B1B1B1B1B1B1B1B1BEBEBE +BEBEBEBEBEBEBEBEBED1D1D1D1D1D1D1D1D1E3E3E3E3E3E3E3E3E3F5F5F5F5F5F5F5F5F5FDFDFD +FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDF6F6F6F6F6F6F6F6F6EBEBEBEBEBEBEBEBEBDFDFDF +DFDFDFDFDFDFD4D4D4D4D4D4D4D4D4C7C7C7C7C7C7C7C7C7C7C7C7BABABABABABABABABAB0B1B0 +B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0BDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDADADA +DADADADADADAD7D7D7D7D7D7D7D7D7EBEBEBEBEBEBEBEBEBFDFDFDFDFDFDFDFDFDFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7EEEEEEEEEEEE +EEEEEEEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECEC +ECECECEDEDEDEDEDEDEDEDEDECECECECECECECECECECECECECECECECECECECECECEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECEC +ECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9 +E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6 +E5E5E5E5E5E5E5E5E5E5E5E5E3E3E3E3E3E3E3E3E3DCDCDCDCDCDCDCDCDCC5C5C5C5C5C5C5C5C5 +808080808080808080808080414141414141414141363636363636363636565656565656565656 +7070707070707070707272727272727272727272726A6A6A6A6A6A6A6A6A6E6E6E6E6E6E6E6E6E +7D7D7D7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F818181818181818181818181878787878787878787 +9090909090909090909999999999999999999F9F9F9F9F9F9F9F9F9F9F9FA2A2A2A2A2A2A2A2A2 +A8A8A8A8A8A8A8A8A8ADADADADADADADADADB4B4B4B4B4B4B4B4B4BBBBBBBBBBBBBBBBBBBBBBBB +BFBFBFBFBFBFBFBFBFC4C4C4C4C4C4C4C4C4C8C8C8C8C8C8C8C8C8CBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBC7C7C7C7C7C7C7C7C7C5C5C5C5C5C5C5C5C5CACACACACACACACACAC2C2C2 +C2C2C2C2C2C2C2C2C2A7A7A7A7A7A7A7A7A78F8F8F8F8F8F8F8F8F858585858585858585828282 +8282828282828383838383838383838383838F8F8F8F8F8F8F8F8FA8A8A8A8A8A8A8A8A8C9C9C9 +C9C9C9C9C9C9DFDFDFDFDFDFDFDFDFE6E6E6E6E6E6E6E6E6E6E6E6E9E9E9E9E9E9E9E9E9EBEBEB +EBEBEBEBEBEBE1E1E1E1E1E1E1E1E1D1D1D1D1D1D1D1D1D1D1D1D1C1C1C1C1C1C1C1C1C1B7B7B7 +B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4B1B1B1B1B1B1B1B1B1BEBEBEBEBEBEBEBEBEBEBEBED1D1D1 +D1D1D1D1D1D1E3E3E3E3E3E3E3E3E3F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFD +FDFDFDFDFDFDF6F6F6F6F6F6F6F6F6EBEBEBEBEBEBEBEBEBDFDFDFDFDFDFDFDFDFD4D4D4D4D4D4 +D4D4D4C7C7C7C7C7C7C7C7C7C7C7C7BABABABABABABABABAB0B1B0B0B1B0B0B1B0B0B0B0B0B0B0 +B0B0B0BDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDDADADADADADADADADAD7D7D7D7D7D7 +D7D7D7EBEBEBEBEBEBEBEBEBFDFDFDFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDECECECECECECECECECEDEDEDEDEDEDEDEDED +EBEBEBEBEBEBEBEBEBECECECECECECECECECECECECECECECECECECECECECECECECECECECECECEC +EDEDEDEDEDEDEDEDEDECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEA +E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8 +E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4 +E3E3E3E3E3E3E3E3E3DFDFDFDFDFDFDFDFDFD5D5D5D5D5D5D5D5D5A3A3A3A3A3A3A3A3A3A3A3A3 +585858585858585858404040404040404040636363636363636363757575757575757575727272 +7272727272727272726C6C6C6C6C6C6C6C6C7373737373737373737F7F7F7F7F7F7F7F7F7F7F7F +7F7F7F7F7F7F818181818181818181818181888888888888888888919191919191919191979797 +9797979797979D9D9D9D9D9D9D9D9D9D9D9DA2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8AEAEAE +AEAEAEAEAEAEB5B5B5B5B5B5B5B5B5BEBEBEBEBEBEBEBEBEBEBEBEC5C5C5C5C5C5C5C5C5CCCCCC +CCCCCCCCCCCCD1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0D0D0D0CECECE +CECECECECECECACACACACACACACACACBCBCBCBCBCBCBCBCBBCBCBCBCBCBCBCBCBCBCBCBC9E9E9E +9E9E9E9E9E9E878787878787878787818181818181818181818181818181818181848484848484 +848484848484909090909090909090ABABABABABABABABABCFCFCFCFCFCFCFCFCFE4E4E4E4E4E4 +E4E4E4ECECECECECECECECECECECECF2F2F2F2F2F2F2F2F2F5F5F5F5F5F5F5F5F5E9E9E9E9E9E9 +E9E9E9D5D5D5D5D5D5D5D5D5D5D5D5C4C4C4C4C4C4C4C4C4BBBBBBBBBBBBBBBBBBB8B8B8B8B8B8 +B8B8B8B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0BBBBBBBBBBBBBBBBBBCBCBCBCBCBCB +CBCBCBE3E3E3E3E3E3E3E3E3F2F2F2F2F2F2F2F2F2FBFBFBFBFBFBFBFBFBFBFBFBFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCF7F7F7F7F7F7 +F7F7F7ECECECECECECECECECDFDFDFDFDFDFDFDFDFD3D3D3D3D3D3D3D3D3C5C5C5C5C5C5C5C5C5 +C5C5C5B8B8B8B8B8B8B8B8B8B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0C5C5C5C5C5C5C5C5C5 +DADADADADADADADADADADADADBDBDBDBDBDBDBDBDBD6D6D5D6D6D5D6D6D5F0F0F0F0F0F0F0F0F0 +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C6C6C6C6C6C6C6C6C6EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEE +EDEDEDEDEDEDEDEDEDECECECECECECECECECEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBECECEC +ECECECECECECECECECECECECECECECECECECECECECECECECECECECEDEDEDEDEDEDEDEDEDECECEC +ECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9EAEAEA +EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7 +E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3DFDFDF +DFDFDFDFDFDFD5D5D5D5D5D5D5D5D5A3A3A3A3A3A3A3A3A3A3A3A3585858585858585858404040 +4040404040406363636363636363637575757575757575757272727272727272727272726C6C6C +6C6C6C6C6C6C7373737373737373737F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F818181818181 +8181818181818888888888888888889191919191919191919797979797979797979D9D9D9D9D9D +9D9D9D9D9D9DA2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEB5B5B5B5B5B5 +B5B5B5BEBEBEBEBEBEBEBEBEBEBEBEC5C5C5C5C5C5C5C5C5CCCCCCCCCCCCCCCCCCD1D1D1D1D1D1 +D1D1D1D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECACACACACACA +CACACACBCBCBCBCBCBCBCBCBBCBCBCBCBCBCBCBCBCBCBCBC9E9E9E9E9E9E9E9E9E878787878787 +878787818181818181818181818181818181818181848484848484848484848484909090909090 +909090ABABABABABABABABABCFCFCFCFCFCFCFCFCFE4E4E4E4E4E4E4E4E4ECECECECECECECECEC +ECECECF2F2F2F2F2F2F2F2F2F5F5F5F5F5F5F5F5F5E9E9E9E9E9E9E9E9E9D5D5D5D5D5D5D5D5D5 +D5D5D5C4C4C4C4C4C4C4C4C4BBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8B0B1B0B0B1B0B0B1B0 +B0B1B0B0B1B0B0B1B0B0B1B0BBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCBE3E3E3E3E3E3E3E3E3 +F2F2F2F2F2F2F2F2F2FBFBFBFBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCF7F7F7F7F7F7F7F7F7ECECECECECECECECEC +DFDFDFDFDFDFDFDFDFD3D3D3D3D3D3D3D3D3C5C5C5C5C5C5C5C5C5C5C5C5B8B8B8B8B8B8B8B8B8 +B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0C5C5C5C5C5C5C5C5C5DADADADADADADADADADADADA +DBDBDBDBDBDBDBDBDBD6D6D5D6D6D5D6D6D5F0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6ECECEC +ECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBECECECECECECECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8 +E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E1E1E1E1E1E1E1E1E1DFDFDFDFDFDFDFDFDFDBDBDBDBDBDB +DBDBDBBFBFBFBFBFBFBFBFBFBFBFBF7676767676767676764E4E4E4E4E4E4E4E4E696969696969 +6969697373737373737373736C6C6C6C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D797979797979 +797979818181818181818181818181818181818181818181818181818181818181878787878787 +8787879090909090909090909494949494949494949A9A9A9A9A9A9A9A9A9A9A9AA0A0A0A0A0A0 +A0A0A0A7A7A7A7A7A7A7A7A7AEAEAEAEAEAEAEAEAEB7B7B7B7B7B7B7B7B7C2C2C2C2C2C2C2C2C2 +C2C2C2CBCBCBCBCBCBCBCBCBD2D2D2D2D2D2D2D2D2D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D0D0D0D0D0D0D0D0D0C5C5C5C5C5C5C5C5C5 +ADADADADADADADADADADADAD9090909090909090907F7F7F7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D +818181818181818181868686868686868686868686909090909090909090A8A8A8A8A8A8A8A8A8 +CDCDCDCDCDCDCDCDCDE3E3E3E3E3E3E3E3E3E8E9E8E8E9E8E8E9E8E8E9E8F1F1F1F1F1F1F1F1F1 +F9F9F9F9F9F9F9F9F9E8E8E8E8E8E8E8E8E8CCCCCCCCCCCCCCCCCCCCCCCCBEBEBEBEBEBEBEBEBE +BABABABABABABABABABCBCBCBCBCBCBCBCBCB7B7B7B7B7B7B7B7B7ADADADADADADADADADADADAD +ADADADADADADADADADB7B7B7B7B7B7B7B7B7CBCBCBCBCBCBCBCBCBDDDDDDDDDDDDDDDDDDECECEC +ECECECECECECECECECF5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F8F8F8F8F8F8F8F8F8F9F9F9 +F9F9F9F9F9F9F9F9F9F3F3F3F3F3F3F3F3F3E8E8E8E8E8E8E8E8E8DCDCDCDCDCDCDCDCDCCFCFCF +CFCFCFCFCFCFC4C4C4C4C4C4C4C4C4C4C4C4B9B9B9B9B9B9B9B9B9B0B1B0B0B1B0B0B1B0B0B1B0 +B0B1B0B0B1B0C4C4C4C4C4C4C4C4C4D2D2D2D2D2D2D2D2D2D2D2D2CDCDCDCDCDCDCDCDCDD2D2D2 +D2D2D2D2D2D2F3F3F3F3F3F3F3F3F3FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBBECECECECECECECECECEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECEC +ECECECEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9 +E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8 +E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E1E1E1E1E1E1E1E1E1DFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBBFBFBFBFBFBFBFBFBF +BFBFBF7676767676767676764E4E4E4E4E4E4E4E4E696969696969696969737373737373737373 +6C6C6C6C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D797979797979797979818181818181818181 +818181818181818181818181818181818181818181878787878787878787909090909090909090 +9494949494949494949A9A9A9A9A9A9A9A9A9A9A9AA0A0A0A0A0A0A0A0A0A7A7A7A7A7A7A7A7A7 +AEAEAEAEAEAEAEAEAEB7B7B7B7B7B7B7B7B7C2C2C2C2C2C2C2C2C2C2C2C2CBCBCBCBCBCBCBCBCB +D2D2D2D2D2D2D2D2D2D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D5D6D6D5D6D6D5D0D0D0D0D0D0D0D0D0C5C5C5C5C5C5C5C5C5ADADADADADADADADADADADAD +9090909090909090907F7F7F7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D818181818181818181868686 +868686868686868686909090909090909090A8A8A8A8A8A8A8A8A8CDCDCDCDCDCDCDCDCDE3E3E3 +E3E3E3E3E3E3E8E9E8E8E9E8E8E9E8E8E9E8F1F1F1F1F1F1F1F1F1F9F9F9F9F9F9F9F9F9E8E8E8 +E8E8E8E8E8E8CCCCCCCCCCCCCCCCCCCCCCCCBEBEBEBEBEBEBEBEBEBABABABABABABABABABCBCBC +BCBCBCBCBCBCB7B7B7B7B7B7B7B7B7ADADADADADADADADADADADADADADADADADADADADADB7B7B7 +B7B7B7B7B7B7CBCBCBCBCBCBCBCBCBDDDDDDDDDDDDDDDDDDECECECECECECECECECECECECF5F5F5 +F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F3F3F3 +F3F3F3F3F3F3E8E8E8E8E8E8E8E8E8DCDCDCDCDCDCDCDCDCCFCFCFCFCFCFCFCFCFC4C4C4C4C4C4 +C4C4C4C4C4C4B9B9B9B9B9B9B9B9B9B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0C4C4C4C4C4C4 +C4C4C4D2D2D2D2D2D2D2D2D2D2D2D2CDCDCDCDCDCDCDCDCDD2D2D2D2D2D2D2D2D2F3F3F3F3F3F3 +F3F3F3FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9BBBBBBBBBBBBBBBBBBECECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECEBEBEBEBEBEBEBEBEB +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8 +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7 +E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E1E1E1E1E1E1E1E1E1 +DFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBBFBFBFBFBFBFBFBFBFBFBFBF767676767676767676 +4E4E4E4E4E4E4E4E4E6969696969696969697373737373737373736C6C6C6C6C6C6C6C6C6C6C6C +6D6D6D6D6D6D6D6D6D797979797979797979818181818181818181818181818181818181818181 +8181818181818181818787878787878787879090909090909090909494949494949494949A9A9A +9A9A9A9A9A9A9A9A9AA0A0A0A0A0A0A0A0A0A7A7A7A7A7A7A7A7A7AEAEAEAEAEAEAEAEAEB7B7B7 +B7B7B7B7B7B7C2C2C2C2C2C2C2C2C2C2C2C2CBCBCBCBCBCBCBCBCBD2D2D2D2D2D2D2D2D2D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D0D0D0 +D0D0D0D0D0D0C5C5C5C5C5C5C5C5C5ADADADADADADADADADADADAD9090909090909090907F7F7F +7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D818181818181818181868686868686868686868686909090 +909090909090A8A8A8A8A8A8A8A8A8CDCDCDCDCDCDCDCDCDE3E3E3E3E3E3E3E3E3E8E9E8E8E9E8 +E8E9E8E8E9E8F1F1F1F1F1F1F1F1F1F9F9F9F9F9F9F9F9F9E8E8E8E8E8E8E8E8E8CCCCCCCCCCCC +CCCCCCCCCCCCBEBEBEBEBEBEBEBEBEBABABABABABABABABABCBCBCBCBCBCBCBCBCB7B7B7B7B7B7 +B7B7B7ADADADADADADADADADADADADADADADADADADADADADB7B7B7B7B7B7B7B7B7CBCBCBCBCBCB +CBCBCBDDDDDDDDDDDDDDDDDDECECECECECECECECECECECECF5F5F5F5F5F5F5F5F5F6F6F6F6F6F6 +F6F6F6F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F3F3F3F3F3F3F3F3F3E8E8E8E8E8E8 +E8E8E8DCDCDCDCDCDCDCDCDCCFCFCFCFCFCFCFCFCFC4C4C4C4C4C4C4C4C4C4C4C4B9B9B9B9B9B9 +B9B9B9B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0C4C4C4C4C4C4C4C4C4D2D2D2D2D2D2D2D2D2 +D2D2D2CDCDCDCDCDCDCDCDCDD2D2D2D2D2D2D2D2D2F3F3F3F3F3F3F3F3F3FEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBB +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBECECECECECECECECECEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1DFDFDF +DFDFDFDFDFDFD0D0D0D0D0D0D0D0D0D0D0D09A9A9A9A9A9A9A9A9A6666666666666666666F6F6F +6F6F6F6F6F6F7171717171717171716A6A6A6A6A6A6A6A6A6A6A6A6F6F6F6F6F6F6F6F6F7E7E7E +7E7E7E7E7E7E818181818181818181828282828282828282838383838383838383838383888888 +8888888888888E8E8E8E8E8E8E8E8E9292929292929292929797979797979797979797979D9D9D +9D9D9D9D9D9DA4A4A4A4A4A4A4A4A4AFAFAFAFAFAFAFAFAFB9B9B9B9B9B9B9B9B9C5C5C5C5C5C5 +C5C5C5C5C5C5D0D0D0D0D0D0D0D0D0D7D7D7D7D7D7D7D7D7DBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADAD1D1D1D1D1D1D1D1D1BFBFBFBFBFBF +BFBFBF9C9C9C9C9C9C9C9C9C9C9C9C8181818181818181817979797979797979797C7C7C7C7C7C +7C7C7C8484848484848484848989898989898989898989898F8F8F8F8F8F8F8F8F9F9F9F9F9F9F +9F9F9FB9B9B9B9B9B9B9B9B9CDCDCDCDCDCDCDCDCDD6D6D5D6D6D5D6D6D5D6D6D5E0E0E0E0E0E0 +E0E0E0E8E9E8E8E9E8E8E9E8D6D6D5D6D6D5D6D6D5BCBCBCBCBCBCBCBCBCBCBCBCB0B1B0B0B1B0 +B0B1B0B4B4B4B4B4B4B4B4B4BABABABABABABABABAB8B8B8B8B8B8B8B8B8AEAEAEAEAEAEAEAEAE +AEAEAEA8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAB5B5B5B5B5B5B5B5B5C6C6C6C6C6C6C6C6C6 +D7D7D7D7D7D7D7D7D7D7D7D7E2E2E2E2E2E2E2E2E2E9E9E9E9E9E9E9E9E9EEEEEEEEEEEEEEEEEE +F1F1F1F1F1F1F1F1F1F1F1F1EBEBEBEBEBEBEBEBEBE0E0E0E0E0E0E0E0E0D7D7D7D7D7D7D7D7D7 +CBCBCBCBCBCBCBCBCBC0C0C0C0C0C0C0C0C0C0C0C0B9B9B9B9B9B9B9B9B9B0B1B0B0B1B0B0B1B0 +AFAFAFAFAFAFAFAFAFBBBBBBBBBBBBBBBBBBC5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5 +D9D9D9D9D9D9D9D9D9F8F8F8F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5EDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEEEEEEEEEEEEEEEEEEEEEEEEEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECEC +ECECECECECECEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEAEAEA +EAEAEAEAEAEAE8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8 +E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1DFDFDFDFDFDFDFDFDFD0D0D0D0D0D0 +D0D0D0D0D0D09A9A9A9A9A9A9A9A9A6666666666666666666F6F6F6F6F6F6F6F6F717171717171 +7171716A6A6A6A6A6A6A6A6A6A6A6A6F6F6F6F6F6F6F6F6F7E7E7E7E7E7E7E7E7E818181818181 +8181818282828282828282828383838383838383838383838888888888888888888E8E8E8E8E8E +8E8E8E9292929292929292929797979797979797979797979D9D9D9D9D9D9D9D9DA4A4A4A4A4A4 +A4A4A4AFAFAFAFAFAFAFAFAFB9B9B9B9B9B9B9B9B9C5C5C5C5C5C5C5C5C5C5C5C5D0D0D0D0D0D0 +D0D0D0D7D7D7D7D7D7D7D7D7DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDADADADADADADADADAD1D1D1D1D1D1D1D1D1BFBFBFBFBFBFBFBFBF9C9C9C9C9C9C9C9C9C +9C9C9C8181818181818181817979797979797979797C7C7C7C7C7C7C7C7C848484848484848484 +8989898989898989898989898F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9FB9B9B9B9B9B9B9B9B9 +CDCDCDCDCDCDCDCDCDD6D6D5D6D6D5D6D6D5D6D6D5E0E0E0E0E0E0E0E0E0E8E9E8E8E9E8E8E9E8 +D6D6D5D6D6D5D6D6D5BCBCBCBCBCBCBCBCBCBCBCBCB0B1B0B0B1B0B0B1B0B4B4B4B4B4B4B4B4B4 +BABABABABABABABABAB8B8B8B8B8B8B8B8B8AEAEAEAEAEAEAEAEAEAEAEAEA8A8A8A8A8A8A8A8A8 +AAAAAAAAAAAAAAAAAAB5B5B5B5B5B5B5B5B5C6C6C6C6C6C6C6C6C6D7D7D7D7D7D7D7D7D7D7D7D7 +E2E2E2E2E2E2E2E2E2E9E9E9E9E9E9E9E9E9EEEEEEEEEEEEEEEEEEF1F1F1F1F1F1F1F1F1F1F1F1 +EBEBEBEBEBEBEBEBEBE0E0E0E0E0E0E0E0E0D7D7D7D7D7D7D7D7D7CBCBCBCBCBCBCBCBCBC0C0C0 +C0C0C0C0C0C0C0C0C0B9B9B9B9B9B9B9B9B9B0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFBBBBBB +BBBBBBBBBBBBC5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5D9D9D9D9D9D9D9D9D9F8F8F8 +F8F8F8F8F8F8FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDED +EDEDEDEDEDEDECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEA +EAEAEAEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8 +E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6 +E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2 +E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0D9D9D9D9D9D9D9D9D9D9D9D9B9B9B9B9B9B9 +B9B9B9868686868686868686767676767676767676707070707070707070696969696969696969 +696969707070707070707070828282828282828282838383838383838383838383838383838383 +8484848484848484848484848989898989898989898D8D8D8D8D8D8D8D8D909090909090909090 +9494949494949494949494949A9A9A9A9A9A9A9A9AA1A1A1A1A1A1A1A1A1AEAEAEAEAEAEAEAEAE +BBBBBBBBBBBBBBBBBBC8C8C8C8C8C8C8C8C8C8C8C8D2D2D2D2D2D2D2D2D2D9D9D9D9D9D9D9D9D9 +DDDDDDDDDDDDDDDDDDDFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDDDDDDD7D7D7D7D7D7D7D7D7 +C9C9C9C9C9C9C9C9C9B0B0B0B0B0B0B0B0B08C8C8C8C8C8C8C8C8C8C8C8C797979797979797979 +7878787878787878787D7D7D7D7D7D7D7D7D858585858585858585888888888888888888888888 +8686868686868686868D8D8D8D8D8D8D8D8D9B9B9B9B9B9B9B9B9BACACACACACACACACACBBBBBB +BBBBBBBBBBBBBBBBBBC8C8C8C8C8C8C8C8C8CCCCCCCCCCCCCCCCCCBDBDBDBDBDBDBDBDBDA7A7A7 +A7A7A7A7A7A7A7A7A79E9E9E9E9E9E9E9E9EA6A6A6A6A6A6A6A6A6B0B0B0B0B0B0B0B0B0B0B1B0 +B0B1B0B0B1B0ABABABABABABABABABABABABAAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8A9A9A9 +A9A9A9A9A9A9B3B3B3B3B3B3B3B3B3C2C2C2C2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCD8D8D8 +D8D8D8D8D8D8E3E3E3E3E3E3E3E3E3E8E8E8E8E8E8E8E8E8E8E8E8E4E4E4E4E4E4E4E4E4DBDBDB +DBDBDBDBDBDBD2D2D2D2D2D2D2D2D2C6C6C6C6C6C6C6C6C6BCBCBCBCBCBCBCBCBCBCBCBCB8B8B8 +B8B8B8B8B8B8B0B1B0B0B1B0B0B1B0AEAEAEAEAEAEAEAEAEBCBCBCBCBCBCBCBCBCC9C9C9C9C9C9 +C9C9C9C9C9C9CACACACACACACACACAE1E1E1E1E1E1E1E1E1FCFCFCFCFCFCFCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6 +C6C6C6EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECEC +ECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEB +EBEBEBEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1 +E0E0E0E0E0E0E0E0E0D9D9D9D9D9D9D9D9D9D9D9D9B9B9B9B9B9B9B9B9B9868686868686868686 +767676767676767676707070707070707070696969696969696969696969707070707070707070 +828282828282828282838383838383838383838383838383838383848484848484848484848484 +8989898989898989898D8D8D8D8D8D8D8D8D909090909090909090949494949494949494949494 +9A9A9A9A9A9A9A9A9AA1A1A1A1A1A1A1A1A1AEAEAEAEAEAEAEAEAEBBBBBBBBBBBBBBBBBBC8C8C8 +C8C8C8C8C8C8C8C8C8D2D2D2D2D2D2D2D2D2D9D9D9D9D9D9D9D9D9DDDDDDDDDDDDDDDDDDDFDFDF +DFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDDDDDDD7D7D7D7D7D7D7D7D7C9C9C9C9C9C9C9C9C9B0B0B0 +B0B0B0B0B0B08C8C8C8C8C8C8C8C8C8C8C8C7979797979797979797878787878787878787D7D7D +7D7D7D7D7D7D8585858585858585858888888888888888888888888686868686868686868D8D8D +8D8D8D8D8D8D9B9B9B9B9B9B9B9B9BACACACACACACACACACBBBBBBBBBBBBBBBBBBBBBBBBC8C8C8 +C8C8C8C8C8C8CCCCCCCCCCCCCCCCCCBDBDBDBDBDBDBDBDBDA7A7A7A7A7A7A7A7A7A7A7A79E9E9E +9E9E9E9E9E9EA6A6A6A6A6A6A6A6A6B0B0B0B0B0B0B0B0B0B0B1B0B0B1B0B0B1B0ABABABABABAB +ABABABABABABAAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9B3B3B3B3B3B3 +B3B3B3C2C2C2C2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCD8D8D8D8D8D8D8D8D8E3E3E3E3E3E3 +E3E3E3E8E8E8E8E8E8E8E8E8E8E8E8E4E4E4E4E4E4E4E4E4DBDBDBDBDBDBDBDBDBD2D2D2D2D2D2 +D2D2D2C6C6C6C6C6C6C6C6C6BCBCBCBCBCBCBCBCBCBCBCBCB8B8B8B8B8B8B8B8B8B0B1B0B0B1B0 +B0B1B0AEAEAEAEAEAEAEAEAEBCBCBCBCBCBCBCBCBCC9C9C9C9C9C9C9C9C9C9C9C9CACACACACACA +CACACAE1E1E1E1E1E1E1E1E1FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6EDEDEDEDEDEDEDEDED +EDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDECECECECECECECECECEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEA +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3 +E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0D9D9D9 +D9D9D9D9D9D9D9D9D9B9B9B9B9B9B9B9B9B9868686868686868686767676767676767676707070 +707070707070696969696969696969696969707070707070707070828282828282828282838383 +8383838383838383838383838383838484848484848484848484848989898989898989898D8D8D +8D8D8D8D8D8D9090909090909090909494949494949494949494949A9A9A9A9A9A9A9A9AA1A1A1 +A1A1A1A1A1A1AEAEAEAEAEAEAEAEAEBBBBBBBBBBBBBBBBBBC8C8C8C8C8C8C8C8C8C8C8C8D2D2D2 +D2D2D2D2D2D2D9D9D9D9D9D9D9D9D9DDDDDDDDDDDDDDDDDDDFDFDFDFDFDFDFDFDFDDDDDDDDDDDD +DDDDDDDDDDDDD7D7D7D7D7D7D7D7D7C9C9C9C9C9C9C9C9C9B0B0B0B0B0B0B0B0B08C8C8C8C8C8C +8C8C8C8C8C8C7979797979797979797878787878787878787D7D7D7D7D7D7D7D7D858585858585 +8585858888888888888888888888888686868686868686868D8D8D8D8D8D8D8D8D9B9B9B9B9B9B +9B9B9BACACACACACACACACACBBBBBBBBBBBBBBBBBBBBBBBBC8C8C8C8C8C8C8C8C8CCCCCCCCCCCC +CCCCCCBDBDBDBDBDBDBDBDBDA7A7A7A7A7A7A7A7A7A7A7A79E9E9E9E9E9E9E9E9EA6A6A6A6A6A6 +A6A6A6B0B0B0B0B0B0B0B0B0B0B1B0B0B1B0B0B1B0ABABABABABABABABABABABABAAAAAAAAAAAA +AAAAAAA8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9B3B3B3B3B3B3B3B3B3C2C2C2C2C2C2C2C2C2 +C2C2C2CCCCCCCCCCCCCCCCCCD8D8D8D8D8D8D8D8D8E3E3E3E3E3E3E3E3E3E8E8E8E8E8E8E8E8E8 +E8E8E8E4E4E4E4E4E4E4E4E4DBDBDBDBDBDBDBDBDBD2D2D2D2D2D2D2D2D2C6C6C6C6C6C6C6C6C6 +BCBCBCBCBCBCBCBCBCBCBCBCB8B8B8B8B8B8B8B8B8B0B1B0B0B1B0B0B1B0AEAEAEAEAEAEAEAEAE +BCBCBCBCBCBCBCBCBCC9C9C9C9C9C9C9C9C9C9C9C9CACACACACACACACACAE1E1E1E1E1E1E1E1E1 +FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6ECECECECECECECECECECECECECECECECECECEBEBEB +EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7 +E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5 +E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1 +E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDDDDDDDDDDDDDDDDDDDDDDDDCCCCCC +CCCCCCCCCCCCA1A1A1A1A1A1A1A1A1818181818181818181747474747474747474696969696969 +6969696969696E6E6E6E6E6E6E6E6E818181818181818181858585858585858585848484848484 +8484848484848484848484848484848888888888888888888C8C8C8C8C8C8C8C8C8D8D8D8D8D8D +8D8D8D9090909090909090909090909797979797979797979F9F9F9F9F9F9F9F9FABABABABABAB +ABABABBBBBBBBBBBBBBBBBBBC8C8C8C8C8C8C8C8C8C8C8C8D5D5D5D5D5D5D5D5D5DBDBDBDBDBDB +DBDBDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0 +D0D0D0BDBDBDBDBDBDBDBDBD9E9E9E9E9E9E9E9E9E808080808080808080808080777777777777 +7777777878787878787878787E7E7E7E7E7E7E7E7E838383838383838383828282828282828282 +8282827B7B7B7B7B7B7B7B7B797979797979797979818181818181818181919191919191919191 +A1A1A1A1A1A1A1A1A1A1A1A1ADADADADADADADADADB0B1B0B0B1B0B0B1B0A7A7A7A7A7A7A7A7A7 +9494949494949494949494948989898989898989898C8C8C8C8C8C8C8C8C969696969696969696 +9C9C9C9C9C9C9C9C9CA5A5A5A5A5A5A5A5A5A5A5A5B0B1B0B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0 +A8A8A8A8A8A8A8A8A8A5A5A5A5A5A5A5A5A5ADADADADADADADADADADADADBBBBBBBBBBBBBBBBBB +CACACACACACACACACAD8D8D8D8D8D8D8D8D8DFDFDFDFDFDFDFDFDFDFDFDFDCDCDCDCDCDCDCDCDC +D5D5D5D5D5D5D5D5D5CDCDCDCDCDCDCDCDCDC2C2C2C2C2C2C2C2C2B8B8B8B8B8B8B8B8B8B8B8B8 +B5B5B5B5B5B5B5B5B5B1B1B1B1B1B1B1B1B1AFAFAFAFAFAFAFAFAFC0C0C0C0C0C0C0C0C0CECECE +CECECECECECECECECECECECECECECECECECEE9E9E9E9E9E9E9E9E9FDFDFDFDFDFDFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3 +C3C3C3C3C3C3ECECECECECECECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4 +E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0 +E0E0E0DFE0DFDFE0DFDFE0DFDDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCA1A1A1A1A1A1 +A1A1A18181818181818181817474747474747474746969696969696969696969696E6E6E6E6E6E +6E6E6E818181818181818181858585858585858585848484848484848484848484848484848484 +8484848888888888888888888C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D909090909090909090 +9090909797979797979797979F9F9F9F9F9F9F9F9FABABABABABABABABABBBBBBBBBBBBBBBBBBB +C8C8C8C8C8C8C8C8C8C8C8C8D5D5D5D5D5D5D5D5D5DBDBDBDBDBDBDBDBDBDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0D0D0D0BDBDBDBDBDBDBDBDBD +9E9E9E9E9E9E9E9E9E808080808080808080808080777777777777777777787878787878787878 +7E7E7E7E7E7E7E7E7E8383838383838383838282828282828282828282827B7B7B7B7B7B7B7B7B +797979797979797979818181818181818181919191919191919191A1A1A1A1A1A1A1A1A1A1A1A1 +ADADADADADADADADADB0B1B0B0B1B0B0B1B0A7A7A7A7A7A7A7A7A7949494949494949494949494 +8989898989898989898C8C8C8C8C8C8C8C8C9696969696969696969C9C9C9C9C9C9C9C9CA5A5A5 +A5A5A5A5A5A5A5A5A5B0B1B0B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0A8A8A8A8A8A8A8A8A8A5A5A5 +A5A5A5A5A5A5ADADADADADADADADADADADADBBBBBBBBBBBBBBBBBBCACACACACACACACACAD8D8D8 +D8D8D8D8D8D8DFDFDFDFDFDFDFDFDFDFDFDFDCDCDCDCDCDCDCDCDCD5D5D5D5D5D5D5D5D5CDCDCD +CDCDCDCDCDCDC2C2C2C2C2C2C2C2C2B8B8B8B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B1B1B1 +B1B1B1B1B1B1AFAFAFAFAFAFAFAFAFC0C0C0C0C0C0C0C0C0CECECECECECECECECECECECECECECE +CECECECECECEE9E9E9E9E9E9E9E9E9FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3ECECECECECEC +ECECECECECECECECECECECECEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEAEA +EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8 +E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3 +E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DF +DDDDDDDDDDDDDDDDDDDDDDDDCCCCCCCCCCCCCCCCCCA1A1A1A1A1A1A1A1A1818181818181818181 +7474747474747474746969696969696969696969696E6E6E6E6E6E6E6E6E818181818181818181 +858585858585858585848484848484848484848484848484848484848484888888888888888888 +8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D909090909090909090909090979797979797979797 +9F9F9F9F9F9F9F9F9FABABABABABABABABABBBBBBBBBBBBBBBBBBBC8C8C8C8C8C8C8C8C8C8C8C8 +D5D5D5D5D5D5D5D5D5DBDBDBDBDBDBDBDBDBDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD9D9D9 +D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0D0D0D0BDBDBDBDBDBDBDBDBD9E9E9E9E9E9E9E9E9E808080 +8080808080808080807777777777777777777878787878787878787E7E7E7E7E7E7E7E7E838383 +8383838383838282828282828282828282827B7B7B7B7B7B7B7B7B797979797979797979818181 +818181818181919191919191919191A1A1A1A1A1A1A1A1A1A1A1A1ADADADADADADADADADB0B1B0 +B0B1B0B0B1B0A7A7A7A7A7A7A7A7A79494949494949494949494948989898989898989898C8C8C +8C8C8C8C8C8C9696969696969696969C9C9C9C9C9C9C9C9CA5A5A5A5A5A5A5A5A5A5A5A5B0B1B0 +B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0A8A8A8A8A8A8A8A8A8A5A5A5A5A5A5A5A5A5ADADADADADAD +ADADADADADADBBBBBBBBBBBBBBBBBBCACACACACACACACACAD8D8D8D8D8D8D8D8D8DFDFDFDFDFDF +DFDFDFDFDFDFDCDCDCDCDCDCDCDCDCD5D5D5D5D5D5D5D5D5CDCDCDCDCDCDCDCDCDC2C2C2C2C2C2 +C2C2C2B8B8B8B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B1B1B1B1B1B1B1B1B1AFAFAFAFAFAF +AFAFAFC0C0C0C0C0C0C0C0C0CECECECECECECECECECECECECECECECECECECECECEE9E9E9E9E9E9 +E9E9E9FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEB +EAEAEAEAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E0E0E0E0E0E0E0E0E0E0E0E0 +DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDCDCDCDCDCDCDCDCDCDCDCDC +D3D3D3D3D3D3D3D3D3B3B3B3B3B3B3B3B3B38D8D8D8D8D8D8D8D8D7C7C7C7C7C7C7C7C7C6F6F6F +6F6F6F6F6F6F6F6F6F696969696969696969797979797979797979838383838383838383848484 +8484848484848585858585858585858585858686868686868686868989898989898989898A8A8A +8A8A8A8A8A8A8D8D8D8D8D8D8D8D8D8D8D8D9494949494949494949E9E9E9E9E9E9E9E9EAAAAAA +AAAAAAAAAAAABABABABABABABABABAC6C6C6C6C6C6C6C6C6C6C6C6D5D5D5D5D5D5D5D5D5DDDDDD +DDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDADADADADADADADADAD1D1D1D1D1D1D1D1D1D1D1D1C5C5C5 +C5C5C5C5C5C5ADADADADADADADADAD8C8C8C8C8C8C8C8C8C767676767676767676767676717171 +7171717171717474747474747474747979797979797979797B7B7B7B7B7B7B7B7B767676767676 +7676767676766D6D6D6D6D6D6D6D6D6A6A6A6A6A6A6A6A6A717171717171717171818181818181 +8181818D8D8D8D8D8D8D8D8D8D8D8D9191919191919191919494949494949494948F8F8F8F8F8F +8F8F8F7A7A7A7A7A7A7A7A7A7A7A7A6161616161616161615D5D5D5D5D5D5D5D5D6F6F6F6F6F6F +6F6F6F888888888888888888A7A7A7A7A7A7A7A7A7A7A7A7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7 +B7B7B7AAAAAAAAAAAAAAAAAAA2A2A2A2A2A2A2A2A2A4A4A4A4A4A4A4A4A4A4A4A4B0B0B0B0B0B0 +B0B0B0BFBFBFBFBFBFBFBFBFCDCDCDCDCDCDCDCDCDD5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5CFCFCFCFCFCFCFCFCFC7C7C7C7C7C7C7C7C7BEBEBEBEBEBEBEBEBEB4B4B4B4B4B4B4B4B4 +B4B4B4B1B1B1B1B1B1B1B1B1B0B0B0B0B0B0B0B0B0AEAEAEAEAEAEAEAEAEBCBCBCBCBCBCBCBCBC +C7C7C7C7C7C7C7C7C7C7C7C7D6D6D5D6D6D5D6D6D5F5F5F5F5F5F5F5F5F5FEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7 +B4B4B4B4B4B4B4B4B4EBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEAEAEAEAEAEAEAEAEAEAEAEA +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E5E5E5E5E5E5E5E5E5E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E2E2E2 +E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E0E0E0E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DF +DFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDCDCDCDCDCDCDCDCDCDCDCDCD3D3D3D3D3D3D3D3D3B3B3B3 +B3B3B3B3B3B38D8D8D8D8D8D8D8D8D7C7C7C7C7C7C7C7C7C6F6F6F6F6F6F6F6F6F6F6F6F696969 +696969696969797979797979797979838383838383838383848484848484848484858585858585 +8585858585858686868686868686868989898989898989898A8A8A8A8A8A8A8A8A8D8D8D8D8D8D +8D8D8D8D8D8D9494949494949494949E9E9E9E9E9E9E9E9EAAAAAAAAAAAAAAAAAABABABABABABA +BABABAC6C6C6C6C6C6C6C6C6C6C6C6D5D5D5D5D5D5D5D5D5DDDDDDDDDDDDDDDDDDDEDEDEDEDEDE +DEDEDEDADADADADADADADADAD1D1D1D1D1D1D1D1D1D1D1D1C5C5C5C5C5C5C5C5C5ADADADADADAD +ADADAD8C8C8C8C8C8C8C8C8C767676767676767676767676717171717171717171747474747474 +7474747979797979797979797B7B7B7B7B7B7B7B7B7676767676767676767676766D6D6D6D6D6D +6D6D6D6A6A6A6A6A6A6A6A6A7171717171717171718181818181818181818D8D8D8D8D8D8D8D8D +8D8D8D9191919191919191919494949494949494948F8F8F8F8F8F8F8F8F7A7A7A7A7A7A7A7A7A +7A7A7A6161616161616161615D5D5D5D5D5D5D5D5D6F6F6F6F6F6F6F6F6F888888888888888888 +A7A7A7A7A7A7A7A7A7A7A7A7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7AAAAAAAAAAAAAAAAAA +A2A2A2A2A2A2A2A2A2A4A4A4A4A4A4A4A4A4A4A4A4B0B0B0B0B0B0B0B0B0BFBFBFBFBFBFBFBFBF +CDCDCDCDCDCDCDCDCDD5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5CFCFCFCFCFCFCFCFCF +C7C7C7C7C7C7C7C7C7BEBEBEBEBEBEBEBEBEB4B4B4B4B4B4B4B4B4B4B4B4B1B1B1B1B1B1B1B1B1 +B0B0B0B0B0B0B0B0B0AEAEAEAEAEAEAEAEAEBCBCBCBCBCBCBCBCBCC7C7C7C7C7C7C7C7C7C7C7C7 +D6D6D5D6D6D5D6D6D5F5F5F5F5F5F5F5F5F5FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4E9E9E9 +E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8 +E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6 +E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3 +E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1DFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDDDDDDDDDDDD +DDDDDDDCDCDCDCDCDCDCDCDCDCDCDCD8D8D8D8D8D8D8D8D8C1C1C1C1C1C1C1C1C1999999999999 +9999998585858585858585857B7B7B7B7B7B7B7B7B7B7B7B707070707070707070757575757575 +7575757F7F7F7F7F7F7F7F7F838383838383838383858585858585858585858585868686868686 +8686868787878787878787878787878787878787878A8A8A8A8A8A8A8A8A8A8A8A909090909090 +9090909B9B9B9B9B9B9B9B9BA8A8A8A8A8A8A8A8A8B7B7B7B7B7B7B7B7B7C4C4C4C4C4C4C4C4C4 +C4C4C4D1D1D1D1D1D1D1D1D1DADADADADADADADADADDDDDDDDDDDDDDDDDDD8D8D8D8D8D8D8D8D8 +CCCCCCCCCCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBB9D9D9D9D9D9D9D9D9D7C7C7C7C7C7C7C7C7C +7070707070707070707070706F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F +6D6D6D6D6D6D6D6D6D6363636363636363636363635252525252525252524D4D4D4D4D4D4D4D4D +5A5A5A5A5A5A5A5A5A6F6F6F6F6F6F6F6F6F7C7C7C7C7C7C7C7C7C7C7C7C7F7F7F7F7F7F7F7F7F +7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B6A6A6A6A6A6A6A6A6A6A6A6A5F605F5F605F5F605F +6262626262626262626B6B6B6B6B6B6B6B6B8D8D8D8D8D8D8D8D8DAFAFAFAFAFAFAFAFAFAFAFAF +B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B2B2B2B2B2B2B2B2B2AAAAAAAAAAAAAAAAAAA7A7A7 +A7A7A7A7A7A7A7A7A7ADADADADADADADADADBBBBBBBBBBBBBBBBBBC7C7C7C7C7C7C7C7C7CDCDCD +CDCDCDCDCDCDCDCDCDCFCFCFCFCFCFCFCFCFCACACACACACACACACAC3C3C3C3C3C3C3C3C3BBBBBB +BBBBBBBBBBBBB2B2B2B2B2B2B2B2B2B2B2B2B0B0B0B0B0B0B0B0B0AEAEAEAEAEAEAEAEAEACACAC +ACACACACACACB3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3C3C3C3E4E4E4E4E4E4E4E4E4FCFCFC +FCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1E9E9E9E9E9E9E9E9E9EAEAEAEAEAEA +EAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7 +E7E7E7E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5 +E5E5E5E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DF +DFE0DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDC +DCDCDCD8D8D8D8D8D8D8D8D8C1C1C1C1C1C1C1C1C1999999999999999999858585858585858585 +7B7B7B7B7B7B7B7B7B7B7B7B7070707070707070707575757575757575757F7F7F7F7F7F7F7F7F +838383838383838383858585858585858585858585868686868686868686878787878787878787 +8787878787878787878A8A8A8A8A8A8A8A8A8A8A8A9090909090909090909B9B9B9B9B9B9B9B9B +A8A8A8A8A8A8A8A8A8B7B7B7B7B7B7B7B7B7C4C4C4C4C4C4C4C4C4C4C4C4D1D1D1D1D1D1D1D1D1 +DADADADADADADADADADDDDDDDDDDDDDDDDDDD8D8D8D8D8D8D8D8D8CCCCCCCCCCCCCCCCCCCCCCCC +BBBBBBBBBBBBBBBBBB9D9D9D9D9D9D9D9D9D7C7C7C7C7C7C7C7C7C707070707070707070707070 +6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6D6D6D6D6D6D6D6D6D636363 +6363636363636363635252525252525252524D4D4D4D4D4D4D4D4D5A5A5A5A5A5A5A5A5A6F6F6F +6F6F6F6F6F6F7C7C7C7C7C7C7C7C7C7C7C7C7F7F7F7F7F7F7F7F7F7E7E7E7E7E7E7E7E7E7B7B7B +7B7B7B7B7B7B6A6A6A6A6A6A6A6A6A6A6A6A5F605F5F605F5F605F6262626262626262626B6B6B +6B6B6B6B6B6B8D8D8D8D8D8D8D8D8DAFAFAFAFAFAFAFAFAFAFAFAFB8B8B8B8B8B8B8B8B8B9B9B9 +B9B9B9B9B9B9B2B2B2B2B2B2B2B2B2AAAAAAAAAAAAAAAAAAA7A7A7A7A7A7A7A7A7A7A7A7ADADAD +ADADADADADADBBBBBBBBBBBBBBBBBBC7C7C7C7C7C7C7C7C7CDCDCDCDCDCDCDCDCDCDCDCDCFCFCF +CFCFCFCFCFCFCACACACACACACACACAC3C3C3C3C3C3C3C3C3BBBBBBBBBBBBBBBBBBB2B2B2B2B2B2 +B2B2B2B2B2B2B0B0B0B0B0B0B0B0B0AEAEAEAEAEAEAEAEAEACACACACACACACACACB3B3B3B3B3B3 +B3B3B3C3C3C3C3C3C3C3C3C3C3C3C3E4E4E4E4E4E4E4E4E4FCFCFCFCFCFCFCFCFCFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C1C1C1C1C1C1C1C1C1E9E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9 +E9E9E9E9E9E9E9E9E9E9E9E9E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6 +E5E5E5E5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5 +E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDF +DFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCD8D8D8D8D8D8D8D8D8 +C1C1C1C1C1C1C1C1C19999999999999999998585858585858585857B7B7B7B7B7B7B7B7B7B7B7B +7070707070707070707575757575757575757F7F7F7F7F7F7F7F7F838383838383838383858585 +8585858585858585858686868686868686868787878787878787878787878787878787878A8A8A +8A8A8A8A8A8A8A8A8A9090909090909090909B9B9B9B9B9B9B9B9BA8A8A8A8A8A8A8A8A8B7B7B7 +B7B7B7B7B7B7C4C4C4C4C4C4C4C4C4C4C4C4D1D1D1D1D1D1D1D1D1DADADADADADADADADADDDDDD +DDDDDDDDDDDDD8D8D8D8D8D8D8D8D8CCCCCCCCCCCCCCCCCCCCCCCCBBBBBBBBBBBBBBBBBB9D9D9D +9D9D9D9D9D9D7C7C7C7C7C7C7C7C7C7070707070707070707070706F6F6F6F6F6F6F6F6F6F6F6F +6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6D6D6D6D6D6D6D6D6D636363636363636363636363525252 +5252525252524D4D4D4D4D4D4D4D4D5A5A5A5A5A5A5A5A5A6F6F6F6F6F6F6F6F6F7C7C7C7C7C7C +7C7C7C7C7C7C7F7F7F7F7F7F7F7F7F7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B6A6A6A6A6A6A +6A6A6A6A6A6A5F605F5F605F5F605F6262626262626262626B6B6B6B6B6B6B6B6B8D8D8D8D8D8D +8D8D8DAFAFAFAFAFAFAFAFAFAFAFAFB8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B2B2B2B2B2B2 +B2B2B2AAAAAAAAAAAAAAAAAAA7A7A7A7A7A7A7A7A7A7A7A7ADADADADADADADADADBBBBBBBBBBBB +BBBBBBC7C7C7C7C7C7C7C7C7CDCDCDCDCDCDCDCDCDCDCDCDCFCFCFCFCFCFCFCFCFCACACACACACA +CACACAC3C3C3C3C3C3C3C3C3BBBBBBBBBBBBBBBBBBB2B2B2B2B2B2B2B2B2B2B2B2B0B0B0B0B0B0 +B0B0B0AEAEAEAEAEAEAEAEAEACACACACACACACACACB3B3B3B3B3B3B3B3B3C3C3C3C3C3C3C3C3C3 +C3C3C3E4E4E4E4E4E4E4E4E4FCFCFCFCFCFCFCFCFCFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1 +E9E9E9E9E9E9E9E9E9E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8 +E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DFE0DF +DFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDC +DCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9C7C7C7C7C7C7C7C7C7A1A1A1 +A1A1A1A1A1A18989898989898989898484848484848484848484847E7E7E7E7E7E7E7E7E787878 +7878787878787B7B7B7B7B7B7B7B7B828282828282828282848484848484848484848484858585 +8585858585858686868686868686868585858585858585858686868686868686868686868D8D8D +8D8D8D8D8D8D979797979797979797A4A4A4A4A4A4A4A4A4B1B1B1B1B1B1B1B1B1BEBEBEBEBEBE +BEBEBEBEBEBEC9C9C9C9C9C9C9C9C9D1D1D1D1D1D1D1D1D1D5D5D5D5D5D5D5D5D5D0D0D0D0D0D0 +D0D0D0C4C4C4C4C4C4C4C4C4C4C4C4AFAFAFAFAFAFAFAFAF8B8B8B8B8B8B8B8B8B717171717171 +7171716D6D6D6D6D6D6D6D6D6D6D6D727272727272727272707070707070707070676767676767 +6767675E5E5E5E5E5E5E5E5E4D4D4D4D4D4D4D4D4D4D4D4D3B3B3B3B3B3B3B3B3B373737373737 +3737374747474747474747475D5D5D5D5D5D5D5D5D6C6C6C6C6C6C6C6C6C6C6C6C6F6F6F6F6F6F +6F6F6F7272727272727272727C7C7C7C7C7C7C7C7C848484848484848484848484909090909090 +9090908F8F8F8F8F8F8F8F8F8E8E8E8E8E8E8E8E8EA2A2A2A2A2A2A2A2A2B2B2B2B2B2B2B2B2B2 +B2B2B2B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B1B1B1B1B1B1B1B1B1 +AEAEAEAEAEAEAEAEAEAEAEAEB0B1B0B0B1B0B0B1B0BDBDBDBDBDBDBDBDBDC7C7C7C7C7C7C7C7C7 +CCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBC6C6C6C6C6C6C6C6C6C0C0C0C0C0C0C0C0C0 +B8B8B8B8B8B8B8B8B8B0B0B0B0B0B0B0B0B0B0B0B0B0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAF +AAAAAAAAAAAAAAAAAAB1B1B1B1B1B1B1B1B1D0D0D0D0D0D0D0D0D0D0D0D0F5F5F5F5F5F5F5F5F5 +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0E9E9E9E9E9E9E9E9E9E8E9E8 +E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E9E8E8E8E8E8E8E8E8E8E8E7E7E7 +E7E7E7E7E7E7E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6 +E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDB +DBDBDBDBDBDBD9D9D9D9D9D9D9D9D9C7C7C7C7C7C7C7C7C7A1A1A1A1A1A1A1A1A1898989898989 +8989898484848484848484848484847E7E7E7E7E7E7E7E7E7878787878787878787B7B7B7B7B7B +7B7B7B828282828282828282848484848484848484848484858585858585858585868686868686 +8686868585858585858585858686868686868686868686868D8D8D8D8D8D8D8D8D979797979797 +979797A4A4A4A4A4A4A4A4A4B1B1B1B1B1B1B1B1B1BEBEBEBEBEBEBEBEBEBEBEBEC9C9C9C9C9C9 +C9C9C9D1D1D1D1D1D1D1D1D1D5D5D5D5D5D5D5D5D5D0D0D0D0D0D0D0D0D0C4C4C4C4C4C4C4C4C4 +C4C4C4AFAFAFAFAFAFAFAFAF8B8B8B8B8B8B8B8B8B7171717171717171716D6D6D6D6D6D6D6D6D +6D6D6D7272727272727272727070707070707070706767676767676767675E5E5E5E5E5E5E5E5E +4D4D4D4D4D4D4D4D4D4D4D4D3B3B3B3B3B3B3B3B3B373737373737373737474747474747474747 +5D5D5D5D5D5D5D5D5D6C6C6C6C6C6C6C6C6C6C6C6C6F6F6F6F6F6F6F6F6F727272727272727272 +7C7C7C7C7C7C7C7C7C8484848484848484848484849090909090909090908F8F8F8F8F8F8F8F8F +8E8E8E8E8E8E8E8E8EA2A2A2A2A2A2A2A2A2B2B2B2B2B2B2B2B2B2B2B2B2B6B6B6B6B6B6B6B6B6 +B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B1B1B1B1B1B1B1B1B1AEAEAEAEAEAEAEAEAEAEAEAE +B0B1B0B0B1B0B0B1B0BDBDBDBDBDBDBDBDBDC7C7C7C7C7C7C7C7C7CCCCCCCCCCCCCCCCCCCCCCCC +CBCBCBCBCBCBCBCBCBC6C6C6C6C6C6C6C6C6C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8B0B0B0 +B0B0B0B0B0B0B0B0B0B0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFAAAAAAAAAAAAAAAAAAB1B1B1 +B1B1B1B1B1B1D0D0D0D0D0D0D0D0D0D0D0D0F5F5F5F5F5F5F5F5F5FEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFA +FAFAFAFAFAFAD0D0D0D0D0D0D0D0D0E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8 +E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5 +E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0 +E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0DFE0DFDFE0DF +DFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDDDDDDDDDDDD +DDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD8D8D8D8D8D8 +D8D8D8CECECECECECECECECEAEAEAEAEAEAEAEAEAE909090909090909090898989898989898989 +8989898888888888888888887D7D7D7D7D7D7D7D7D7A7A7A7A7A7A7A7A7A818181818181818181 +848484848484848484848484838383838383838383838383838383838383848484848484848484 +848484848484848484848484888888888888888888939393939393939393A1A1A1A1A1A1A1A1A1 +ACACACACACACACACACB5B5B5B5B5B5B5B5B5B5B5B5BEBEBEBEBEBEBEBEBEC6C6C6C6C6C6C6C6C6 +CACACACACACACACACAC5C5C5C5C5C5C5C5C5B9B9B9B9B9B9B9B9B9B9B9B9A0A0A0A0A0A0A0A0A0 +7D7D7D7D7D7D7D7D7D6B6B6B6B6B6B6B6B6B6C6C6C6C6C6C6C6C6C6C6C6C767676767676767676 +7777777777777777776A6A6A6A6A6A6A6A6A585858585858585858494949494949494949494949 +4C4C4C4C4C4C4C4C4C5151515151515151515555555555555555555C5C5C5C5C5C5C5C5C636363 +636363636363636363616161616161616161676767676767676767808080808080808080949494 +9494949494949494949E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9FA8A8A8 +A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAAB0B0B0B0B0B0B0B0B0B2B2B2B2B2B2B2B2B2B6B6B6 +B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6BFBFBF +BFBFBFBFBFBFC9C9C9C9C9C9C9C9C9CCCCCCCCCCCCCCCCCCCCCCCCC9C9C9C9C9C9C9C9C9C2C2C2 +C2C2C2C2C2C2BDBDBDBDBDBDBDBDBDB5B5B5B5B5B5B5B5B5AFAFAFAFAFAFAFAFAFAFAFAFB0B1B0 +B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFAAAAAAAAAAAAAAAAAAB9B9B9B9B9B9B9B9B9E8E8E8E8E8E8 +E8E8E8E8E8E8FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACA +CACACAE8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8 +E8E8E8E6E6E6E6E6E6E6E6E6E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5 +E5E5E5E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E2E2E2E2E2E2E2E2E2 +E2E2E2E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DF +DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDC +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8CECECECECECECECECE +AEAEAEAEAEAEAEAEAE909090909090909090898989898989898989898989888888888888888888 +7D7D7D7D7D7D7D7D7D7A7A7A7A7A7A7A7A7A818181818181818181848484848484848484848484 +838383838383838383838383838383838383848484848484848484848484848484848484848484 +888888888888888888939393939393939393A1A1A1A1A1A1A1A1A1ACACACACACACACACACB5B5B5 +B5B5B5B5B5B5B5B5B5BEBEBEBEBEBEBEBEBEC6C6C6C6C6C6C6C6C6CACACACACACACACACAC5C5C5 +C5C5C5C5C5C5B9B9B9B9B9B9B9B9B9B9B9B9A0A0A0A0A0A0A0A0A07D7D7D7D7D7D7D7D7D6B6B6B +6B6B6B6B6B6B6C6C6C6C6C6C6C6C6C6C6C6C7676767676767676767777777777777777776A6A6A +6A6A6A6A6A6A5858585858585858584949494949494949494949494C4C4C4C4C4C4C4C4C515151 +5151515151515555555555555555555C5C5C5C5C5C5C5C5C636363636363636363636363616161 +6161616161616767676767676767678080808080808080809494949494949494949494949E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9FA8A8A8A8A8A8A8A8A8AAAAAAAAAAAA +AAAAAAAAAAAAB0B0B0B0B0B0B0B0B0B2B2B2B2B2B2B2B2B2B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8 +B8B8B8B4B4B4B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6BFBFBFBFBFBFBFBFBFC9C9C9C9C9C9 +C9C9C9CCCCCCCCCCCCCCCCCCCCCCCCC9C9C9C9C9C9C9C9C9C2C2C2C2C2C2C2C2C2BDBDBDBDBDBD +BDBDBDB5B5B5B5B5B5B5B5B5AFAFAFAFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0AFAFAFAFAFAF +AFAFAFAAAAAAAAAAAAAAAAAAB9B9B9B9B9B9B9B9B9E8E8E8E8E8E8E8E8E8E8E8E8FDFDFDFDFDFD +FDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACAE8E9E8E8E9E8E8E9E8 +E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6 +E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5E5 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2E2 +E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDFDFDF +DFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8CECECECECECECECECEAEAEAEAEAEAEAEAEAE909090 +9090909090908989898989898989898989898888888888888888887D7D7D7D7D7D7D7D7D7A7A7A +7A7A7A7A7A7A818181818181818181848484848484848484848484838383838383838383838383 +838383838383848484848484848484848484848484848484848484888888888888888888939393 +939393939393A1A1A1A1A1A1A1A1A1ACACACACACACACACACB5B5B5B5B5B5B5B5B5B5B5B5BEBEBE +BEBEBEBEBEBEC6C6C6C6C6C6C6C6C6CACACACACACACACACAC5C5C5C5C5C5C5C5C5B9B9B9B9B9B9 +B9B9B9B9B9B9A0A0A0A0A0A0A0A0A07D7D7D7D7D7D7D7D7D6B6B6B6B6B6B6B6B6B6C6C6C6C6C6C +6C6C6C6C6C6C7676767676767676767777777777777777776A6A6A6A6A6A6A6A6A585858585858 +5858584949494949494949494949494C4C4C4C4C4C4C4C4C515151515151515151555555555555 +5555555C5C5C5C5C5C5C5C5C636363636363636363636363616161616161616161676767676767 +6767678080808080808080809494949494949494949494949E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9F9F9F9F9F9F9F9F9FA8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAAB0B0B0B0B0B0 +B0B0B0B2B2B2B2B2B2B2B2B2B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4 +B4B4B4B6B6B6B6B6B6B6B6B6BFBFBFBFBFBFBFBFBFC9C9C9C9C9C9C9C9C9CCCCCCCCCCCCCCCCCC +CCCCCCC9C9C9C9C9C9C9C9C9C2C2C2C2C2C2C2C2C2BDBDBDBDBDBDBDBDBDB5B5B5B5B5B5B5B5B5 +AFAFAFAFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFAAAAAAAAAAAAAAAAAA +B9B9B9B9B9B9B9B9B9E8E8E8E8E8E8E8E8E8E8E8E8FDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9CACACACACACACACACAE8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E8E8E8 +E8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E5E5E5 +E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E2E2E2 +E2E2E2E2E2E2E0E0E0E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0E1E1E1 +E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DF +DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDCDCDC +DCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD8D8D8 +D8D8D8D8D8D8D2D2D2D2D2D2D2D2D2BCBCBCBCBCBCBCBCBC9B9B9B9B9B9B9B9B9B8F8F8F8F8F8F +8F8F8F8F8F8F909090909090909090898989898989898989828282828282828282828282828282 +828282848484848484848484848484828282828282828282828282828282828282838383838383 +8383838282828282828282828282828585858585858585859090909090909090909C9C9C9C9C9C +9C9C9CA6A6A6A6A6A6A6A6A6ADADADADADADADADADADADADB6B6B6B6B6B6B6B6B6BFBFBFBFBFBF +BFBFBFC1C1C1C1C1C1C1C1C1BBBBBBBBBBBBBBBBBBAFAFAFAFAFAFAFAFAFAFAFAF919191919191 +9191917272727272727272726969696969696969696F6F6F6F6F6F6F6F6F6F6F6F7B7B7B7B7B7B +7B7B7B7D7D7D7D7D7D7D7D7D757575757575757575646464646464646464565656565656565656 +5656565D5D5D5D5D5D5D5D5D6666666666666666666363636363636363635D5D5D5D5D5D5D5D5D +5B5B5B5B5B5B5B5B5B5B5B5B5656565656565656565D5D5D5D5D5D5D5D5D787878787878787878 +8B8B8B8B8B8B8B8B8B8B8B8B9292929292929292929898989898989898989E9E9E9E9E9E9E9E9E +A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A9A9A9A9A9A9A9A9A9ADADADADADADADADAD +B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8 +C3C3C3C3C3C3C3C3C3CBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCC7C7C7C7C7C7C7C7C7 +BFBFBFBFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B3B3B3B3B3B3B3B3B3B0B0B0B0B0B0B0B0B0B0B0B0 +B0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFABABABABABABABABABBFBFBFBFBFBFBFBFBFF1F1F1 +F1F1F1F1F1F1F1F1F1FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BDBDBD +BDBDBDBDBDBDE8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E7E7E7 +E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E2E2E2E2E2E2E2E2E2E0E0E0E0E0E0 +E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0 +E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DF +DFE0DFDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD8D8D8D8D8D8D8D8D8D2D2D2D2D2D2 +D2D2D2BCBCBCBCBCBCBCBCBC9B9B9B9B9B9B9B9B9B8F8F8F8F8F8F8F8F8F8F8F8F909090909090 +909090898989898989898989828282828282828282828282828282828282848484848484848484 +848484828282828282828282828282828282828282838383838383838383828282828282828282 +8282828585858585858585859090909090909090909C9C9C9C9C9C9C9C9CA6A6A6A6A6A6A6A6A6 +ADADADADADADADADADADADADB6B6B6B6B6B6B6B6B6BFBFBFBFBFBFBFBFBFC1C1C1C1C1C1C1C1C1 +BBBBBBBBBBBBBBBBBBAFAFAFAFAFAFAFAFAFAFAFAF919191919191919191727272727272727272 +6969696969696969696F6F6F6F6F6F6F6F6F6F6F6F7B7B7B7B7B7B7B7B7B7D7D7D7D7D7D7D7D7D +7575757575757575756464646464646464645656565656565656565656565D5D5D5D5D5D5D5D5D +6666666666666666666363636363636363635D5D5D5D5D5D5D5D5D5B5B5B5B5B5B5B5B5B5B5B5B +5656565656565656565D5D5D5D5D5D5D5D5D7878787878787878788B8B8B8B8B8B8B8B8B8B8B8B +9292929292929292929898989898989898989E9E9E9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2A3A3A3 +A3A3A3A3A3A3A3A3A3A9A9A9A9A9A9A9A9A9ADADADADADADADADADB4B4B4B4B4B4B4B4B4B6B6B6 +B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8C3C3C3C3C3C3C3C3C3CBCBCB +CBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCC7C7C7C7C7C7C7C7C7BFBFBFBFBFBFBFBFBFB9B9B9 +B9B9B9B9B9B9B3B3B3B3B3B3B3B3B3B0B0B0B0B0B0B0B0B0B0B0B0B0B1B0B0B1B0B0B1B0AFAFAF +AFAFAFAFAFAFABABABABABABABABABBFBFBFBFBFBFBFBFBFF1F1F1F1F1F1F1F1F1F1F1F1FEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDE8E9E8E8E9E8 +E8E9E8E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3 +E3E3E3E3E3E3E3E3E3E3E3E3E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0E0E0E0DFE0DFDFE0DF +DFE0DFDFDFDFDFDFDFDFDFDFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDE +DEDEDEDFDFDFDFDFDFDFDFDFDFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDD +DCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADA +D9D9D9D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4C5C5C5C5C5C5C5C5C5 +A4A4A4A4A4A4A4A4A4929292929292929292929292949494949494949494929292929292929292 +8E8E8E8E8E8E8E8E8E868686868686868686848484848484848484848484818181818181818181 +818181818181818181818181818181818181808080808080808080808080838383838383838383 +8B8B8B8B8B8B8B8B8B969696969696969696A1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8A8A8A8 +AFAFAFAFAFAFAFAFAFB6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5A6A6A6 +A6A6A6A6A6A6A6A6A68686868686868686866D6D6D6D6D6D6D6D6D6B6B6B6B6B6B6B6B6B747474 +7474747474747474747C7C7C7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A7676767676767676766E6E6E +6E6E6E6E6E6E656565656565656565656565646464646464646464666666666666666666616161 +6161616161615959595959595959595454545454545454545454545555555555555555555F605F +5F605F5F605F7171717171717171718181818181818181818181818D8D8D8D8D8D8D8D8D959595 +9595959595959A9A9A9A9A9A9A9A9A9E9E9E9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2A2A2A2A8A8A8 +A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0 +B0B0B0B0B0B0B6B6B6B6B6B6B6B6B6BFBFBFBFBFBFBFBFBFC6C6C6C6C6C6C6C6C6CBCBCBCBCBCB +CBCBCBCBCBCBC7C7C7C7C7C7C7C7C7C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3 +B3B3B3B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B0B0B0B0B0B0B0B0B0A9A9A9A9A9A9 +A9A9A9BEBEBEBEBEBEBEBEBEF0F0F0F0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7 +E8E8E8E8E8E8E8E8E8E8E8E8E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 +E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDF +DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDF +DFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDC +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9 +D7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4C5C5C5C5C5C5C5C5C5A4A4A4A4A4A4A4A4A4929292 +9292929292929292929494949494949494949292929292929292928E8E8E8E8E8E8E8E8E868686 +868686868686848484848484848484848484818181818181818181818181818181818181818181 +8181818181818080808080808080808080808383838383838383838B8B8B8B8B8B8B8B8B969696 +969696969696A1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8A8A8A8AFAFAFAFAFAFAFAFAFB6B6B6 +B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5A6A6A6A6A6A6A6A6A6A6A6A6868686 +8686868686866D6D6D6D6D6D6D6D6D6B6B6B6B6B6B6B6B6B7474747474747474747474747C7C7C +7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A7676767676767676766E6E6E6E6E6E6E6E6E656565656565 +656565656565646464646464646464666666666666666666616161616161616161595959595959 +5959595454545454545454545454545555555555555555555F605F5F605F5F605F717171717171 +7171718181818181818181818181818D8D8D8D8D8D8D8D8D9595959595959595959A9A9A9A9A9A +9A9A9A9E9E9E9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9 +A9A9A9AEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B6B6B6B6B6B6 +B6B6B6BFBFBFBFBFBFBFBFBFC6C6C6C6C6C6C6C6C6CBCBCBCBCBCBCBCBCBCBCBCBC7C7C7C7C7C7 +C7C7C7C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1 +B1B1B1B2B2B2B2B2B2B2B2B2B0B0B0B0B0B0B0B0B0A9A9A9A9A9A9A9A9A9BEBEBEBEBEBEBEBEBE +F0F0F0F0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C7C7C7C7C7C7C7C7C7E8E9E8E8E9E8E8E9E8E7E7E7E7E7E7E7E7E7E8E8E8E8E8E8E8E8E8E8E8E8 +E6E6E6E6E6E6E6E6E6E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E1E1E1E1E1E1E1E1E1E0E0E0 +E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDFE0DFDFE0DFDFE0DFDFDFDF +DFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFE0DFDFE0DFDFE0DFDEDEDE +DEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D4D4D4 +D4D4D4D4D4D4C5C5C5C5C5C5C5C5C5A4A4A4A4A4A4A4A4A4929292929292929292929292949494 +9494949494949292929292929292928E8E8E8E8E8E8E8E8E868686868686868686848484848484 +848484848484818181818181818181818181818181818181818181818181818181808080808080 +8080808080808383838383838383838B8B8B8B8B8B8B8B8B969696969696969696A1A1A1A1A1A1 +A1A1A1A8A8A8A8A8A8A8A8A8A8A8A8AFAFAFAFAFAFAFAFAFB6B6B6B6B6B6B6B6B6B8B8B8B8B8B8 +B8B8B8B5B5B5B5B5B5B5B5B5A6A6A6A6A6A6A6A6A6A6A6A68686868686868686866D6D6D6D6D6D +6D6D6D6B6B6B6B6B6B6B6B6B7474747474747474747474747C7C7C7C7C7C7C7C7C7A7A7A7A7A7A +7A7A7A7676767676767676766E6E6E6E6E6E6E6E6E656565656565656565656565646464646464 +646464666666666666666666616161616161616161595959595959595959545454545454545454 +5454545555555555555555555F605F5F605F5F605F717171717171717171818181818181818181 +8181818D8D8D8D8D8D8D8D8D9595959595959595959A9A9A9A9A9A9A9A9A9E9E9E9E9E9E9E9E9E +A2A2A2A2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAE +AFAFAFAFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B6B6B6B6B6B6B6B6B6BFBFBFBFBFBFBFBFBF +C6C6C6C6C6C6C6C6C6CBCBCBCBCBCBCBCBCBCBCBCBC7C7C7C7C7C7C7C7C7C0C0C0C0C0C0C0C0C0 +B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2 +B0B0B0B0B0B0B0B0B0A9A9A9A9A9A9A9A9A9BEBEBEBEBEBEBEBEBEF0F0F0F0F0F0F0F0F0F0F0F0 +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4 +E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E2E2E2E2E2E2E2E2E2E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFDFDF +DFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDD +DDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDDDDDDDDDDDD +DDDDDDDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADA +DADADAD8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4C8C8C8C8C8C8 +C8C8C8A6A6A6A6A6A6A6A6A69090909090909090909090909090909090909090908E8E8E8E8E8E +8E8E8E8E8E8E8E8E8E8E8E8E858585858585858585848484848484848484848484818181818181 +8181817F7F7F7F7F7F7F7F7F7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E818181818181 +8181818686868686868686869090909090909090909B9B9B9B9B9B9B9B9BA2A2A2A2A2A2A2A2A2 +A2A2A2A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEB0B1B0B0B1B0B0B1B0AEAEAEAEAEAEAEAEAE +9E9E9E9E9E9E9E9E9E9E9E9E8181818181818181816F6F6F6F6F6F6F6F6F707070707070707070 +7878787878787878787878787A7A7A7A7A7A7A7A7A777777777777777777737373737373737373 +707070707070707070696969696969696969696969646464646464646464626262626262626262 +5F605F5F605F5F605F5E5E5E5E5E5E5E5E5E626262626262626262626262676767676767676767 +6E6E6E6E6E6E6E6E6E787878787878787878888888888888888888888888979797979797979797 +9D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3A3A3A3 +A4A4A4A4A4A4A4A4A4A6A6A6A6A6A6A6A6A6A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAABABAB +ABABABABABABABABABACACACACACACACACACB5B5B5B5B5B5B5B5B5BFBFBFBFBFBFBFBFBFC7C7C7 +C7C7C7C7C7C7C7C7C7C6C6C6C6C6C6C6C6C6BFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B4B4B4 +B4B4B4B4B4B4B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B0B0B0B0B0B0B0B0B0A8A8A8 +A8A8A8A8A8A8BBBBBBBBBBBBBBBBBBEEEEEEEEEEEEEEEEEEEEEEEEFDFDFDFDFDFDFDFDFDFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3 +E3E3E3E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E2E2E2E2E2E2 +E2E2E2E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDE +DEDEDEDFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADAD8D8D8D8D8D8D8D8D8 +D8D8D8D7D7D7D7D7D7D7D7D7D4D4D4D4D4D4D4D4D4C8C8C8C8C8C8C8C8C8A6A6A6A6A6A6A6A6A6 +9090909090909090909090909090909090909090908E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E +8585858585858585858484848484848484848484848181818181818181817F7F7F7F7F7F7F7F7F +7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E818181818181818181868686868686868686 +9090909090909090909B9B9B9B9B9B9B9B9BA2A2A2A2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8 +AEAEAEAEAEAEAEAEAEB0B1B0B0B1B0B0B1B0AEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E +8181818181818181816F6F6F6F6F6F6F6F6F707070707070707070787878787878787878787878 +7A7A7A7A7A7A7A7A7A777777777777777777737373737373737373707070707070707070696969 +6969696969696969696464646464646464646262626262626262625F605F5F605F5F605F5E5E5E +5E5E5E5E5E5E6262626262626262626262626767676767676767676E6E6E6E6E6E6E6E6E787878 +7878787878788888888888888888888888889797979797979797979D9D9D9D9D9D9D9D9D9C9C9C +9C9C9C9C9C9C9E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A6A6A6 +A6A6A6A6A6A6A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAABABABABABABABABABABABABACACAC +ACACACACACACB5B5B5B5B5B5B5B5B5BFBFBFBFBFBFBFBFBFC7C7C7C7C7C7C7C7C7C7C7C7C6C6C6 +C6C6C6C6C6C6BFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B3B3B3B3B3B3 +B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B0B0B0B0B0B0B0B0B0A8A8A8A8A8A8A8A8A8BBBBBBBBBBBB +BBBBBBEEEEEEEEEEEEEEEEEEEEEEEEFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFB +FBFBFBD7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7 +E7E7E7E5E5E5E5E5E5E5E5E5E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3E3 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E2E2E2E2E2E2E2E2E2E0E0E0E0E0E0E0E0E0 +DFE0DFDFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDFE0DFDFE0DFDFE0DF +DEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDADADADADADADADADAD8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7 +D4D4D4D4D4D4D4D4D4C8C8C8C8C8C8C8C8C8A6A6A6A6A6A6A6A6A6909090909090909090909090 +9090909090909090908E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E858585858585858585848484 +8484848484848484848181818181818181817F7F7F7F7F7F7F7F7F7E7E7E7E7E7E7E7E7E7E7E7E +7E7E7E7E7E7E7E7E7E8181818181818181818686868686868686869090909090909090909B9B9B +9B9B9B9B9B9BA2A2A2A2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEB0B1B0 +B0B1B0B0B1B0AEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9E9E9E8181818181818181816F6F6F +6F6F6F6F6F6F7070707070707070707878787878787878787878787A7A7A7A7A7A7A7A7A777777 +777777777777737373737373737373707070707070707070696969696969696969696969646464 +6464646464646262626262626262625F605F5F605F5F605F5E5E5E5E5E5E5E5E5E626262626262 +6262626262626767676767676767676E6E6E6E6E6E6E6E6E787878787878787878888888888888 +8888888888889797979797979797979D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9E9E9E9E9E9E +9E9E9EA3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A6A6A6A6A6A6A6A6A6A8A8A8A8A8A8 +A8A8A8AAAAAAAAAAAAAAAAAAABABABABABABABABABABABABACACACACACACACACACB5B5B5B5B5B5 +B5B5B5BFBFBFBFBFBFBFBFBFC7C7C7C7C7C7C7C7C7C7C7C7C6C6C6C6C6C6C6C6C6BFBFBFBFBFBF +BFBFBFB8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4 +B4B4B4B0B0B0B0B0B0B0B0B0A8A8A8A8A8A8A8A8A8BBBBBBBBBBBBBBBBBBEEEEEEEEEEEEEEEEEE +EEEEEEFDFDFDFDFDFDFDFDFDFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD7D7D7D7D7D7D7D7D7 +E6E6E6E6E6E6E6E6E6E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5 +E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDFDFDF +DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDC +DCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D3D3D3D3D3D3D3D3D3C7C7C7 +C7C7C7C7C7C79E9E9E9E9E9E9E9E9E8484848484848484848484848A8A8A8A8A8A8A8A8A8B8B8B +8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B848484848484848484828282828282828282828282818181 +8181818181817F7F7F7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7C7C7C7E7E7E +7E7E7E7E7E7E8383838383838383838C8C8C8C8C8C8C8C8C9595959595959595959E9E9E9E9E9E +9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA +AAAAAA9B9B9B9B9B9B9B9B9B9B9B9B818181818181818181737373737373737373777777777777 +7777777B7B7B7B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A767676767676767676707070707070 +7070706C6C6C6C6C6C6C6C6C696969696969696969696969666666666666666666646464646464 +6464646969696969696969697070707070707070707474747474747474747474747A7A7A7A7A7A +7A7A7A7E7E7E7E7E7E7E7E7E878787878787878787959595959595959595959595A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A09E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A3A3A3A3A3A3A3A3A3 +A3A3A3A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6 +A1A1A1A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2ACACACACACACACACACB8B8B8B8B8B8B8B8B8 +C2C2C2C2C2C2C2C2C2C2C2C2C4C4C4C4C4C4C4C4C4BEBEBEBEBEBEBEBEBEB8B8B8B8B8B8B8B8B8 +B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5ADADADADADADADADAD +A6A6A6A6A6A6A6A6A6BBBBBBBBBBBBBBBBBBEFEFEFEFEFEFEFEFEFEFEFEFFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACAE6E6E6E6E6E6E6E6E6E7E7E7 +E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E5E5E5E5E5E5E5E5E5E3E3E3E3E3E3E3E3E3E2E2E2 +E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDB +DBDBDBDBDBDBD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8 +D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D3D3D3D3D3D3D3D3D3C7C7C7C7C7C7C7C7C79E9E9E9E9E9E +9E9E9E8484848484848484848484848A8A8A8A8A8A8A8A8A8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B +8B8B8B8484848484848484848282828282828282828282828181818181818181817F7F7F7F7F7F +7F7F7F7D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7C7C7C7E7E7E7E7E7E7E7E7E838383838383 +8383838C8C8C8C8C8C8C8C8C9595959595959595959E9E9E9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1 +A1A1A1A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA9B9B9B9B9B9B9B9B9B +9B9B9B8181818181818181817373737373737373737777777777777777777B7B7B7B7B7B7B7B7B +7B7B7B7A7A7A7A7A7A7A7A7A7676767676767676767070707070707070706C6C6C6C6C6C6C6C6C +696969696969696969696969666666666666666666646464646464646464696969696969696969 +7070707070707070707474747474747474747474747A7A7A7A7A7A7A7A7A7E7E7E7E7E7E7E7E7E +878787878787878787959595959595959595959595A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3A3 +A4A4A4A4A4A4A4A4A4A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A1A1A1A1A1A1A1A1A1A1A1A1 +A2A2A2A2A2A2A2A2A2ACACACACACACACACACB8B8B8B8B8B8B8B8B8C2C2C2C2C2C2C2C2C2C2C2C2 +C4C4C4C4C4C4C4C4C4BEBEBEBEBEBEBEBEBEB8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B5B5B5 +B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5ADADADADADADADADADA6A6A6A6A6A6A6A6A6BBBBBB +BBBBBBBBBBBBEFEFEFEFEFEFEFEFEFEFEFEFFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9CACACACACACACACACAE4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E1E1E1E1E1E1E1E1E1DFE0DFDFE0DF +DFE0DFE1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DFE0DFDFE0DF +DFE0DFDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDE +DEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9D9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D5D5D5D5D5D5D5D5D5CACACACACACACACACAA0A0A0A0A0A0A0A0A0767676767676767676 +7676767E7E7E7E7E7E7E7E7E8A8A8A8A8A8A8A8A8A8C8C8C8C8C8C8C8C8C868686868686868686 +8383838383838383838383838181818181818181818080808080808080807E7E7E7E7E7E7E7E7E +7C7C7C7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D808080808080808080878787878787878787 +9090909090909090909999999999999999999999999D9D9D9D9D9D9D9D9DA1A1A1A1A1A1A1A1A1 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A59A9A9A9A9A9A9A9A9A9A9A9A868686868686868686 +7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7B7B7B7B7B7B7B7B7B +7676767676767676767171717171717171716E6E6E6E6E6E6E6E6E727272727272727272727272 +7171717171717171716F6F6F6F6F6F6F6F6F757575757575757575818181818181818181848484 +8484848484848484848B8B8B8B8B8B8B8B8B929292929292929292999999999999999999A1A1A1 +A1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8A6A6A6A6A6A6A6A6A6A2A2A2A2A2A2A2A2A2A7A7A7 +A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7A3A3A3A3A3A3A3A3A3A1A1A1 +A1A1A1A1A1A1A1A1A1A1A1A1A1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AA4A4A4 +A4A4A4A4A4A4B1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B7B7B7B7B7B7B7B7B7B6B6B6B6B6B6B6B6B6B6B6B6B4B4B4 +B4B4B4B4B4B4ABABABABABABABABABA3A3A3A3A3A3A3A3A3BABABABABABABABABAF0F0F0F0F0F0 +F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD4D4D4D4D4D4 +D4D4D4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E3E3E3E3E3E3E3E3E3E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFE1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDE +DEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDD +DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC +DBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D5D5D5D5D5D5D5D5D5 +CACACACACACACACACAA0A0A0A0A0A0A0A0A07676767676767676767676767E7E7E7E7E7E7E7E7E +8A8A8A8A8A8A8A8A8A8C8C8C8C8C8C8C8C8C868686868686868686838383838383838383838383 +8181818181818181818080808080808080807E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C7C7C7C +7D7D7D7D7D7D7D7D7D808080808080808080878787878787878787909090909090909090999999 +9999999999999999999D9D9D9D9D9D9D9D9DA1A1A1A1A1A1A1A1A1A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A5A5A5A59A9A9A9A9A9A9A9A9A9A9A9A8686868686868686867C7C7C7C7C7C7C7C7C7D7D7D +7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7B7B7B7B7B7B7B7B7B767676767676767676717171 +7171717171716E6E6E6E6E6E6E6E6E7272727272727272727272727171717171717171716F6F6F +6F6F6F6F6F6F7575757575757575758181818181818181818484848484848484848484848B8B8B +8B8B8B8B8B8B929292929292929292999999999999999999A1A1A1A1A1A1A1A1A1A1A1A1A8A8A8 +A8A8A8A8A8A8A6A6A6A6A6A6A6A6A6A2A2A2A2A2A2A2A2A2A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8 +A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7A3A3A3A3A3A3A3A3A3A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1 +A1A1A19A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AA4A4A4A4A4A4A4A4A4B1B1B1B1B1B1 +B1B1B1B9B9B9B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB9B9B9B9B9B9 +B9B9B9B7B7B7B7B7B7B7B7B7B6B6B6B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4ABABABABABAB +ABABABA3A3A3A3A3A3A3A3A3BABABABABABABABABAF0F0F0F0F0F0F0F0F0F0F0F0FEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD4D4D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3 +E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFE1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDADADA +DADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D5D5D5D5D5D5D5D5D5CACACACACACACACACAA0A0A0 +A0A0A0A0A0A07676767676767676767676767E7E7E7E7E7E7E7E7E8A8A8A8A8A8A8A8A8A8C8C8C +8C8C8C8C8C8C868686868686868686838383838383838383838383818181818181818181808080 +8080808080807E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D808080 +8080808080808787878787878787879090909090909090909999999999999999999999999D9D9D +9D9D9D9D9D9DA1A1A1A1A1A1A1A1A1A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A59A9A9A9A9A9A +9A9A9A9A9A9A8686868686868686867C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D +7D7D7D7D7D7D7B7B7B7B7B7B7B7B7B7676767676767676767171717171717171716E6E6E6E6E6E +6E6E6E7272727272727272727272727171717171717171716F6F6F6F6F6F6F6F6F757575757575 +7575758181818181818181818484848484848484848484848B8B8B8B8B8B8B8B8B929292929292 +929292999999999999999999A1A1A1A1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8A6A6A6A6A6A6 +A6A6A6A2A2A2A2A2A2A2A2A2A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A7A7A7A7A7A7 +A7A7A7A3A3A3A3A3A3A3A3A3A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A19A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9AA4A4A4A4A4A4A4A4A4B1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9 +B9B9B9BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B7B7B7B7B7B7B7B7B7 +B6B6B6B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4ABABABABABABABABABA3A3A3A3A3A3A3A3A3 +BABABABABABABABABAF0F0F0F0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FBFBFBFBFBFBFBFBFBD4D4D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1DFE0DF +DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDEDEDE +DEDEDEDEDEDEDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5CECECECECECECECECEB0B0B0B0B0B0B0B0B07A7A7A7A7A7A +7A7A7A7A7A7A707070707070707070848484848484848484898989898989898989858585858585 +8585858282828282828282828282828181818181818181817F7F7F7F7F7F7F7F7F7D7D7D7D7D7D +7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D818181818181 +8181818989898989898989899292929292929292929292929999999999999999999E9E9E9E9E9E +9E9E9EA0A0A0A0A0A0A0A0A0A1A1A1A1A1A1A1A1A19A9A9A9A9A9A9A9A9A9A9A9A8D8D8D8D8D8D +8D8D8D8585858585858585858181818181818181817E7E7E7E7E7E7E7E7E7E7E7E7C7C7C7C7C7C +7C7C7C7979797979797979797777777777777777777777777777777777777C7C7C7C7C7C7C7C7C +7C7C7C7C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B828282828282828282919191919191919191 +999999999999999999999999A4A4A4A4A4A4A4A4A4ADADADADADADADADADB0B0B0B0B0B0B0B0B0 +B1B1B1B1B1B1B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5B1B1B1B1B1B1B1B1B1ADADADADADADADADAD +B0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E +9A9A9A9A9A9A9A9A9A999999999999999999909090909090909090909090909090909090909090 +9C9C9C9C9C9C9C9C9CA8A8A8A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2B2B2B2BBBBBBBBBBBBBBBBBB +BEBEBEBEBEBEBEBEBEB9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B7B7B7 +B2B2B2B2B2B2B2B2B2A8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A1B8B8B8B8B8B8B8B8B8EEEEEE +EEEEEEEEEEEEEEEEEEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE1E1E1 +E1E1E1E1E1E1E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E3E3E3 +E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1DFE0DFDFE0DFDFE0DFDFE0DFDFE0DF +DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDEDEDEDEDEDEDEDEDEDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +D9D9D9D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5 +D5D5D5CECECECECECECECECEB0B0B0B0B0B0B0B0B07A7A7A7A7A7A7A7A7A7A7A7A707070707070 +707070848484848484848484898989898989898989858585858585858585828282828282828282 +8282828181818181818181817F7F7F7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D +7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D818181818181818181898989898989898989 +9292929292929292929292929999999999999999999E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0 +A1A1A1A1A1A1A1A1A19A9A9A9A9A9A9A9A9A9A9A9A8D8D8D8D8D8D8D8D8D858585858585858585 +8181818181818181817E7E7E7E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C797979797979797979 +7777777777777777777777777777777777777C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C +7B7B7B7B7B7B7B7B7B828282828282828282919191919191919191999999999999999999999999 +A4A4A4A4A4A4A4A4A4ADADADADADADADADADB0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B1B1B1 +B5B5B5B5B5B5B5B5B5B1B1B1B1B1B1B1B1B1ADADADADADADADADADB0B1B0B0B1B0B0B1B0AFAFAF +AFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E9A9A9A9A9A9A9A9A9A999999 +9999999999999090909090909090909090909090909090909090909C9C9C9C9C9C9C9C9CA8A8A8 +A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2B2B2B2BBBBBBBBBBBBBBBBBBBEBEBEBEBEBEBEBEBEB9B9B9 +B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B7B7B7B2B2B2B2B2B2B2B2B2A8A8A8 +A8A8A8A8A8A8A1A1A1A1A1A1A1A1A1B8B8B8B8B8B8B8B8B8EEEEEEEEEEEEEEEEEEEEEEEEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE1E1E1E1E1E1E1E1E1E3E3E3E3E3E3 +E3E3E3E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1 +E1E1E1E0E0E0E0E0E0E0E0E0DFDFDFDFDFDFDFDFDFDFE0DFDFE0DFDFE0DFDFE0DFDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADA +D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D2D2D2D2D2D2D2D2D2 +C3C3C3C3C3C3C3C3C39B9B9B9B9B9B9B9B9B9B9B9B787878787878787878787878787878787878 +8181818181818181818080808080808080807F7F7F7F7F7F7F7F7F7F7F7F808080808080808080 +7E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C +7B7B7B7B7B7B7B7B7B7E7E7E7E7E7E7E7E7E8484848484848484848F8F8F8F8F8F8F8F8F8F8F8F +9595959595959595959A9A9A9A9A9A9A9A9A9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D989898 +9898989898989898988F8F8F8F8F8F8F8F8F898989898989898989858585858585858585828282 +8282828282828282828080808080808080807F7F7F7F7F7F7F7F7F7E7E7E7E7E7E7E7E7E7F7F7F +7F7F7F7F7F7F838383838383838383838383848484848484848484868686868686868686909090 +909090909090A5A5A5A5A5A5A5A5A5B4B4B4B4B4B4B4B4B4B4B4B4BFBFBFBFBFBFBFBFBFC5C5C5 +C5C5C5C5C5C5C3C3C3C3C3C3C3C3C3C2C2C2C2C2C2C2C2C2C2C2C2C5C5C5C5C5C5C5C5C5C2C2C2 +C2C2C2C2C2C2BEBEBEBEBEBEBEBEBEBCBCBCBCBCBCBCBCBCB4B4B4B4B4B4B4B4B4B4B4B4AAAAAA +AAAAAAAAAAAA9F9F9F9F9F9F9F9F9F979797979797979797909090909090909090898989898989 +898989898989878787878787878787949494949494949494A1A1A1A1A1A1A1A1A1AFAFAFAFAFAF +AFAFAFAFAFAFBBBBBBBBBBBBBBBBBBBFBFBFBFBFBFBFBFBFBABABABABABABABABAB5B5B5B5B5B5 +B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B0B1B0B0B1B0B0B1B0A5A5A5A5A5A5A5A5A5A0A0A0A0A0A0 +A0A0A0BBBBBBBBBBBBBBBBBBF0F0F0F0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4 +E3E3E3E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0 +DFDFDFDFDFDFDFDFDFDFE0DFDFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D2D2D2D2D2D2D2D2D2C3C3C3C3C3C3C3C3C39B9B9B +9B9B9B9B9B9B9B9B9B787878787878787878787878787878787878818181818181818181808080 +8080808080807F7F7F7F7F7F7F7F7F7F7F7F8080808080808080807E7E7E7E7E7E7E7E7E7C7C7C +7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7E7E7E +7E7E7E7E7E7E8484848484848484848F8F8F8F8F8F8F8F8F8F8F8F9595959595959595959A9A9A +9A9A9A9A9A9A9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D9898989898989898989898988F8F8F +8F8F8F8F8F8F898989898989898989858585858585858585828282828282828282828282808080 +8080808080807F7F7F7F7F7F7F7F7F7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F838383838383 +838383838383848484848484848484868686868686868686909090909090909090A5A5A5A5A5A5 +A5A5A5B4B4B4B4B4B4B4B4B4B4B4B4BFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5C3C3C3C3C3C3 +C3C3C3C2C2C2C2C2C2C2C2C2C2C2C2C5C5C5C5C5C5C5C5C5C2C2C2C2C2C2C2C2C2BEBEBEBEBEBE +BEBEBEBCBCBCBCBCBCBCBCBCB4B4B4B4B4B4B4B4B4B4B4B4AAAAAAAAAAAAAAAAAA9F9F9F9F9F9F +9F9F9F979797979797979797909090909090909090898989898989898989898989878787878787 +878787949494949494949494A1A1A1A1A1A1A1A1A1AFAFAFAFAFAFAFAFAFAFAFAFBBBBBBBBBBBB +BBBBBBBFBFBFBFBFBFBFBFBFBABABABABABABABABAB5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6 +B6B6B6B0B1B0B0B1B0B0B1B0A5A5A5A5A5A5A5A5A5A0A0A0A0A0A0A0A0A0BBBBBBBBBBBBBBBBBB +F0F0F0F0F0F0F0F0F0F0F0F0FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C7C7C7C7C7C7C7C7C7E3E3E3E3E3E3E3E3E3E4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E3E3E3 +E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0DFDFDFDFDFDFDFDFDFDFE0DF +DFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCDCDC +DCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5 +D6D6D5D6D6D5D2D2D2D2D2D2D2D2D2C3C3C3C3C3C3C3C3C39B9B9B9B9B9B9B9B9B9B9B9B787878 +7878787878787878787878787878788181818181818181818080808080808080807F7F7F7F7F7F +7F7F7F7F7F7F8080808080808080807E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D +7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7E7E7E7E7E7E7E7E7E848484848484 +8484848F8F8F8F8F8F8F8F8F8F8F8F9595959595959595959A9A9A9A9A9A9A9A9A9C9C9C9C9C9C +9C9C9C9D9D9D9D9D9D9D9D9D9898989898989898989898988F8F8F8F8F8F8F8F8F898989898989 +8989898585858585858585858282828282828282828282828080808080808080807F7F7F7F7F7F +7F7F7F7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F838383838383838383838383848484848484 +848484868686868686868686909090909090909090A5A5A5A5A5A5A5A5A5B4B4B4B4B4B4B4B4B4 +B4B4B4BFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5C3C3C3C3C3C3C3C3C3C2C2C2C2C2C2C2C2C2 +C2C2C2C5C5C5C5C5C5C5C5C5C2C2C2C2C2C2C2C2C2BEBEBEBEBEBEBEBEBEBCBCBCBCBCBCBCBCBC +B4B4B4B4B4B4B4B4B4B4B4B4AAAAAAAAAAAAAAAAAA9F9F9F9F9F9F9F9F9F979797979797979797 +909090909090909090898989898989898989898989878787878787878787949494949494949494 +A1A1A1A1A1A1A1A1A1AFAFAFAFAFAFAFAFAFAFAFAFBBBBBBBBBBBBBBBBBBBFBFBFBFBFBFBFBFBF +BABABABABABABABABAB5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6B0B1B0B0B1B0B0B1B0 +A5A5A5A5A5A5A5A5A5A0A0A0A0A0A0A0A0A0BBBBBBBBBBBBBBBBBBF0F0F0F0F0F0F0F0F0F0F0F0 +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7E2E2E2 +E2E2E2E2E2E2E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E0E0E0E0E0E0E0E0E0E0E0E0 +E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADA +DADADAD9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3 +D3D3D3CECECECECECECECECEBCBCBCBCBCBCBCBCBCBCBCBC989898989898989898737373737373 +7373737171717171717171717474747474747474747777777777777777777777777E7E7E7E7E7E +7E7E7E7D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A7A7A7A7A7A +7A7A7A7A7A7A7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D8383838383838383838C8C8C8C8C8C8C8C8C +8C8C8C9494949494949494949999999999999999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D +9797979797979797979797979191919191919191918E8E8E8E8E8E8E8E8E898989898989898989 +8484848484848484848484848383838383838383838181818181818181817F7F7F7F7F7F7F7F7F +8181818181818181818686868686868686868686868C8C8C8C8C8C8C8C8C939393939393939393 +A0A0A0A0A0A0A0A0A0B3B3B3B3B3B3B3B3B3C2C2C2C2C2C2C2C2C2C2C2C2CBCBCBCBCBCBCBCBCB +CDCDCDCDCDCDCDCDCDCACACACACACACACACAC5C5C5C5C5C5C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1 +BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBBBBBBBBBBBBBBBBBBB3B3B3B3B3B3B3B3B3B3B3B3 +ACACACACACACACACACA1A1A1A1A1A1A1A1A1939393939393939393868686868686868686757575 +7575757575757575757878787878787878788F8F8F8F8F8F8F8F8FA0A0A0A0A0A0A0A0A0AFAFAF +AFAFAFAFAFAFAFAFAFBBBBBBBBBBBBBBBBBBBFBFBFBFBFBFBFBFBFBABABABABABABABABAB3B3B3 +B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B4B4B4ADADADADADADADADADA2A2A2A2A2A2A2A2A29F9F9F +9F9F9F9F9F9FBDBDBDBDBDBDBDBDBDF1F1F1F1F1F1F1F1F1F1F1F1FEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6E2E2E2E2E2E2E2E2E2E3E3E3E3E3E3 +E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0DFE0DFDFE0DF +DFE0DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9 +D9D9D9D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3CECECECECECECECECE +BCBCBCBCBCBCBCBCBCBCBCBC989898989898989898737373737373737373717171717171717171 +7474747474747474747777777777777777777777777E7E7E7E7E7E7E7E7E7D7D7D7D7D7D7D7D7D +7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A7A +7D7D7D7D7D7D7D7D7D8383838383838383838C8C8C8C8C8C8C8C8C8C8C8C949494949494949494 +9999999999999999999D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D979797979797979797979797 +9191919191919191918E8E8E8E8E8E8E8E8E898989898989898989848484848484848484848484 +8383838383838383838181818181818181817F7F7F7F7F7F7F7F7F818181818181818181868686 +8686868686868686868C8C8C8C8C8C8C8C8C939393939393939393A0A0A0A0A0A0A0A0A0B3B3B3 +B3B3B3B3B3B3C2C2C2C2C2C2C2C2C2C2C2C2CBCBCBCBCBCBCBCBCBCDCDCDCDCDCDCDCDCDCACACA +CACACACACACAC5C5C5C5C5C5C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1BEBEBEBEBEBEBEBEBEBEBEBE +BEBEBEBEBEBEBBBBBBBBBBBBBBBBBBB3B3B3B3B3B3B3B3B3B3B3B3ACACACACACACACACACA1A1A1 +A1A1A1A1A1A1939393939393939393868686868686868686757575757575757575757575787878 +7878787878788F8F8F8F8F8F8F8F8FA0A0A0A0A0A0A0A0A0AFAFAFAFAFAFAFAFAFAFAFAFBBBBBB +BBBBBBBBBBBBBFBFBFBFBFBFBFBFBFBABABABABABABABABAB3B3B3B3B3B3B3B3B3B4B4B4B4B4B4 +B4B4B4B4B4B4ADADADADADADADADADA2A2A2A2A2A2A2A2A29F9F9F9F9F9F9F9F9FBDBDBDBDBDBD +BDBDBDF1F1F1F1F1F1F1F1F1F1F1F1FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C6C6C6C6C6C6C6C6C6E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0 +E0E0E0E0E0E0E0E0E0E0E0E0DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDADADADADADADADADAD8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2CBCBCBCBCBCBCBCBCBCBCBCB +B0B0B0B0B0B0B0B0B0787878787878787878585858585858585858575757575757575757636363 +6363636363636363637979797979797979797C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B +7B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D828282 +8282828282828B8B8B8B8B8B8B8B8B8B8B8B9494949494949494949A9A9A9A9A9A9A9A9AA0A0A0 +A0A0A0A0A0A09E9E9E9E9E9E9E9E9E9292929292929292929292928E8E8E8E8E8E8E8E8E8B8B8B +8B8B8B8B8B8B8585858585858585858080808080808080808080807D7D7D7D7D7D7D7D7D7C7C7C +7C7C7C7C7C7C7E7E7E7E7E7E7E7E7E8282828282828282828C8C8C8C8C8C8C8C8C8C8C8C959595 +9595959595959E9E9E9E9E9E9E9E9EA6A6A6A6A6A6A6A6A6AEAEAEAEAEAEAEAEAEB7B7B7B7B7B7 +B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B3B3B3B3B3B3B3B3B3ABABABABABAB +ABABABABABABA4A4A4A4A4A4A4A4A4A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A19E9E9E9E9E9E +9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9A9A9A9A9A9A9A9A9A929292929292929292858585858585 +8585857272727272727272725F605F5F605F5F605F5F605F737373737373737373999999999999 +999999AAAAAAAAAAAAAAAAAAB2B2B2B2B2B2B2B2B2B2B2B2BDBDBDBDBDBDBDBDBDBFBFBFBFBFBF +BFBFBFBABABABABABABABABAB6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4B4B4B4ACACACACACAC +ACACACA2A2A2A2A2A2A2A2A29F9F9F9F9F9F9F9F9FC2C2C2C2C2C2C2C2C2F4F4F4F4F4F4F4F4F4 +F4F4F4FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBB +E2E2E2E2E2E2E2E2E2E1E1E1E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0 +DFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC +DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADA +DADADADADADAD8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6 +D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2CBCBCBCBCBCBCBCBCBCBCBCBB0B0B0B0B0B0B0B0B0787878 +787878787878585858585858585858575757575757575757636363636363636363636363797979 +7979797979797C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7A7A7A +7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D8282828282828282828B8B8B8B8B8B +8B8B8B8B8B8B9494949494949494949A9A9A9A9A9A9A9A9AA0A0A0A0A0A0A0A0A09E9E9E9E9E9E +9E9E9E9292929292929292929292928E8E8E8E8E8E8E8E8E8B8B8B8B8B8B8B8B8B858585858585 +8585858080808080808080808080807D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7E7E7E7E7E7E +7E7E7E8282828282828282828C8C8C8C8C8C8C8C8C8C8C8C9595959595959595959E9E9E9E9E9E +9E9E9EA6A6A6A6A6A6A6A6A6AEAEAEAEAEAEAEAEAEB7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8 +B8B8B8B7B7B7B7B7B7B7B7B7B3B3B3B3B3B3B3B3B3ABABABABABABABABABABABABA4A4A4A4A4A4 +A4A4A4A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A1A19E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D +9D9D9D9A9A9A9A9A9A9A9A9A929292929292929292858585858585858585727272727272727272 +5F605F5F605F5F605F5F605F737373737373737373999999999999999999AAAAAAAAAAAAAAAAAA +B2B2B2B2B2B2B2B2B2B2B2B2BDBDBDBDBDBDBDBDBDBFBFBFBFBFBFBFBFBFBABABABABABABABABA +B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4B4B4B4ACACACACACACACACACA2A2A2A2A2A2A2A2A2 +9F9F9F9F9F9F9F9F9FC2C2C2C2C2C2C2C2C2F4F4F4F4F4F4F4F4F4F4F4F4FEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBBE2E2E2E2E2E2E2E2E2E1E1E1 +E1E1E1E1E1E1E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0DFDFDFDFDFDFDFDFDFDFDFDF +DFDFDFDFDFDFDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDCDCDCDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDDDDDDD +DDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADAD8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5 +D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2 +D2D2D2CBCBCBCBCBCBCBCBCBCBCBCBB0B0B0B0B0B0B0B0B0787878787878787878585858585858 +5858585757575757575757576363636363636363636363637979797979797979797C7C7C7C7C7C +7C7C7C7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7C7C7C7C7C7C +7C7C7C7D7D7D7D7D7D7D7D7D8282828282828282828B8B8B8B8B8B8B8B8B8B8B8B949494949494 +9494949A9A9A9A9A9A9A9A9AA0A0A0A0A0A0A0A0A09E9E9E9E9E9E9E9E9E929292929292929292 +9292928E8E8E8E8E8E8E8E8E8B8B8B8B8B8B8B8B8B858585858585858585808080808080808080 +8080807D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7E7E7E7E7E7E7E7E7E828282828282828282 +8C8C8C8C8C8C8C8C8C8C8C8C9595959595959595959E9E9E9E9E9E9E9E9EA6A6A6A6A6A6A6A6A6 +AEAEAEAEAEAEAEAEAEB7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7 +B3B3B3B3B3B3B3B3B3ABABABABABABABABABABABABA4A4A4A4A4A4A4A4A4A1A1A1A1A1A1A1A1A1 +A1A1A1A1A1A1A1A1A19E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9A9A9A9A9A9A9A9A9A +9292929292929292928585858585858585857272727272727272725F605F5F605F5F605F5F605F +737373737373737373999999999999999999AAAAAAAAAAAAAAAAAAB2B2B2B2B2B2B2B2B2B2B2B2 +BDBDBDBDBDBDBDBDBDBFBFBFBFBFBFBFBFBFBABABABABABABABABAB6B6B6B6B6B6B6B6B6B4B4B4 +B4B4B4B4B4B4B4B4B4ACACACACACACACACACA2A2A2A2A2A2A2A2A29F9F9F9F9F9F9F9F9FC2C2C2 +C2C2C2C2C2C2F4F4F4F4F4F4F4F4F4F4F4F4FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9BBBBBBBBBBBBBBBBBBE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0 +E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0DEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDC +DCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5 +D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1CFCFCFCFCFCFCFCFCF +CFCFCFBCBCBCBCBCBCBCBCBC8B8B8B8B8B8B8B8B8B5454545454545454543A3A3A3A3A3A3A3A3A +4848484848484848484848487070707070707070707C7C7C7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A +7B7B7B7B7B7B7B7B7B7B7B7B7979797979797979797A7A7A7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C +808080808080808080898989898989898989898989919191919191919191989898989898989898 +A1A1A1A1A1A1A1A1A19D9D9D9D9D9D9D9D9D8F8F8F8F8F8F8F8F8F8F8F8F888888888888888888 +8383838383838383837C7C7C7C7C7C7C7C7C767676767676767676767676717171717171717171 +7474747474747474747C7C7C7C7C7C7C7C7C8383838383838383838E8E8E8E8E8E8E8E8E8E8E8E +989898989898989898999999999999999999979797979797979797949494949494949494959595 +959595959595959595919191919191919191919191919191919191919191919191919191909090 +9090909090909090909090909090909090909090909090909090908D8D8D8D8D8D8D8D8D848484 +8484848484847F7F7F7F7F7F7F7F7F7F7F7F7979797979797979797474747474747474746E6E6E +6E6E6E6E6E6E6A6A6A6A6A6A6A6A6A7171717171717171717171718B8B8B8B8B8B8B8B8BA9A9A9 +A9A9A9A9A9A9B6B6B6B6B6B6B6B6B6BBBBBBBBBBBBBBBBBBBBBBBBBFBFBFBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B2B2B2B2B2B2B2B2B2B2B2B2AAAAAA +AAAAAAAAAAAAA1A1A1A1A1A1A1A1A19F9F9F9F9F9F9F9F9FCBCBCBCBCBCBCBCBCBF9F9F9F9F9F9 +F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5 +C5C5C5E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0 +E0E0E0DEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDB +DBDBDBDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4 +D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1CFCFCFCFCFCFCFCFCFCFCFCFBCBCBCBCBCBCBCBCBC +8B8B8B8B8B8B8B8B8B5454545454545454543A3A3A3A3A3A3A3A3A484848484848484848484848 +7070707070707070707C7C7C7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A7B7B7B7B7B7B7B7B7B7B7B7B +7979797979797979797A7A7A7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C808080808080808080898989 +898989898989898989919191919191919191989898989898989898A1A1A1A1A1A1A1A1A19D9D9D +9D9D9D9D9D9D8F8F8F8F8F8F8F8F8F8F8F8F8888888888888888888383838383838383837C7C7C +7C7C7C7C7C7C7676767676767676767676767171717171717171717474747474747474747C7C7C +7C7C7C7C7C7C8383838383838383838E8E8E8E8E8E8E8E8E8E8E8E989898989898989898999999 +999999999999979797979797979797949494949494949494959595959595959595959595919191 +919191919191919191919191919191919191919191919191909090909090909090909090909090 +9090909090909090909090909090908D8D8D8D8D8D8D8D8D8484848484848484847F7F7F7F7F7F +7F7F7F7F7F7F7979797979797979797474747474747474746E6E6E6E6E6E6E6E6E6A6A6A6A6A6A +6A6A6A7171717171717171717171718B8B8B8B8B8B8B8B8BA9A9A9A9A9A9A9A9A9B6B6B6B6B6B6 +B6B6B6BBBBBBBBBBBBBBBBBBBBBBBBBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8 +B8B8B8B5B5B5B5B5B5B5B5B5B2B2B2B2B2B2B2B2B2B2B2B2AAAAAAAAAAAAAAAAAAA1A1A1A1A1A1 +A1A1A19F9F9F9F9F9F9F9F9FCBCBCBCBCBCBCBCBCBF9F9F9F9F9F9F9F9F9F9F9F9FFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5E0E0E0E0E0E0E0E0E0 +E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0DEDEDEDEDEDEDEDEDE +DDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDC +DCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5 +D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D1D1D1 +D1D1D1D1D1D1CFCFCFCFCFCFCFCFCFCFCFCFBCBCBCBCBCBCBCBCBC8B8B8B8B8B8B8B8B8B545454 +5454545454543A3A3A3A3A3A3A3A3A4848484848484848484848487070707070707070707C7C7C +7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A7B7B7B7B7B7B7B7B7B7B7B7B7979797979797979797A7A7A +7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C808080808080808080898989898989898989898989919191 +919191919191989898989898989898A1A1A1A1A1A1A1A1A19D9D9D9D9D9D9D9D9D8F8F8F8F8F8F +8F8F8F8F8F8F8888888888888888888383838383838383837C7C7C7C7C7C7C7C7C767676767676 +7676767676767171717171717171717474747474747474747C7C7C7C7C7C7C7C7C838383838383 +8383838E8E8E8E8E8E8E8E8E8E8E8E989898989898989898999999999999999999979797979797 +979797949494949494949494959595959595959595959595919191919191919191919191919191 +919191919191919191919191909090909090909090909090909090909090909090909090909090 +9090908D8D8D8D8D8D8D8D8D8484848484848484847F7F7F7F7F7F7F7F7F7F7F7F797979797979 +7979797474747474747474746E6E6E6E6E6E6E6E6E6A6A6A6A6A6A6A6A6A717171717171717171 +7171718B8B8B8B8B8B8B8B8BA9A9A9A9A9A9A9A9A9B6B6B6B6B6B6B6B6B6BBBBBBBBBBBBBBBBBB +BBBBBBBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5 +B2B2B2B2B2B2B2B2B2B2B2B2AAAAAAAAAAAAAAAAAAA1A1A1A1A1A1A1A1A19F9F9F9F9F9F9F9F9F +CBCBCBCBCBCBCBCBCBF9F9F9F9F9F9F9F9F9F9F9F9FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DF +DFE0DFDFE0DFDFE0DFDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDADADADADADADADADAD8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0 +D0D0D0D0D0D0C5C5C5C5C5C5C5C5C5A5A5A5A5A5A5A5A5A56C6C6C6C6C6C6C6C6C3E3E3E3E3E3E +3E3E3E4040404040404040404040406969696969696969697C7C7C7C7C7C7C7C7C7B7B7B7B7B7B +7B7B7B7979797979797979797979797979797979797979797A7A7A7A7A7A7A7A7A7C7C7C7C7C7C +7C7C7C828282828282828282898989898989898989898989909090909090909090949494949494 +9494949F9F9F9F9F9F9F9F9F9D9D9D9D9D9D9D9D9D8F8F8F8F8F8F8F8F8F8F8F8F858585858585 +8585857C7C7C7C7C7C7C7C7C7070707070707070706D6D6D6D6D6D6D6D6D6D6D6D6E6E6E6E6E6E +6E6E6E7373737373737373737D7D7D7D7D7D7D7D7D808080808080808080818181818181818181 +8181818181818181818181817E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D +7E7E7E7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B818181818181818181828282828282828282 +8383838383838383838383838585858585858585858585858585858585857F7F7F7F7F7F7F7F7F +777777777777777777747474747474747474747474707070707070707070727272727272727272 +757575757575757575838383838383838383999999999999999999999999A8A8A8A8A8A8A8A8A8 +B7B7B7B7B7B7B7B7B7BBBBBBBBBBBBBBBBBBC0C0C0C0C0C0C0C0C0C0C0C0C3C3C3C3C3C3C3C3C3 +BEBEBEBEBEBEBEBEBEB7B7B7B7B7B7B7B7B7B5B5B5B5B5B5B5B5B5B0B1B0B0B1B0B0B1B0B0B1B0 +A7A7A7A7A7A7A7A7A79E9E9E9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2D6D6D6D6D6D6D6D6D6FCFCFC +FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6 +C6C6C6C6C6C6E0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDFE0DFDEDEDE +DEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADA +DADADAD8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0C5C5C5C5C5C5 +C5C5C5A5A5A5A5A5A5A5A5A56C6C6C6C6C6C6C6C6C3E3E3E3E3E3E3E3E3E404040404040404040 +4040406969696969696969697C7C7C7C7C7C7C7C7C7B7B7B7B7B7B7B7B7B797979797979797979 +7979797979797979797979797A7A7A7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C828282828282828282 +8989898989898989898989899090909090909090909494949494949494949F9F9F9F9F9F9F9F9F +9D9D9D9D9D9D9D9D9D8F8F8F8F8F8F8F8F8F8F8F8F8585858585858585857C7C7C7C7C7C7C7C7C +7070707070707070706D6D6D6D6D6D6D6D6D6D6D6D6E6E6E6E6E6E6E6E6E737373737373737373 +7D7D7D7D7D7D7D7D7D808080808080808080818181818181818181818181818181818181818181 +7E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E +7B7B7B7B7B7B7B7B7B818181818181818181828282828282828282838383838383838383838383 +8585858585858585858585858585858585857F7F7F7F7F7F7F7F7F777777777777777777747474 +747474747474747474707070707070707070727272727272727272757575757575757575838383 +838383838383999999999999999999999999A8A8A8A8A8A8A8A8A8B7B7B7B7B7B7B7B7B7BBBBBB +BBBBBBBBBBBBC0C0C0C0C0C0C0C0C0C0C0C0C3C3C3C3C3C3C3C3C3BEBEBEBEBEBEBEBEBEB7B7B7 +B7B7B7B7B7B7B5B5B5B5B5B5B5B5B5B0B1B0B0B1B0B0B1B0B0B1B0A7A7A7A7A7A7A7A7A79E9E9E +9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2D6D6D6D6D6D6D6D6D6FCFCFCFCFCFCFCFCFCFCFCFCFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6DFE0DFDFE0DF +DFE0DFDFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9DADADADADADADADADADADADAD9D9D9D9D9D9 +D9D9D9DADADADADADADADADADBDBDBDBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9 +D9D9D9DADADADADADADADADADBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0C9C9C9C9C9C9C9C9C9BBBBBBBBBBBBBBBBBB +909090909090909090545454545454545454414141414141414141414141616161616161616161 +7979797979797979797B7B7B7B7B7B7B7B7B797979797979797979797979787878787878787878 +7878787878787878787B7B7B7B7B7B7B7B7B8282828282828282828A8A8A8A8A8A8A8A8A8A8A8A +9090909090909090909090909090909090909999999999999999999C9C9C9C9C9C9C9C9C949494 +9494949494949494948A8A8A8A8A8A8A8A8A7474747474747474745B5B5B5B5B5B5B5B5B5C5C5C +5C5C5C5C5C5C5C5C5C6666666666666666666C6C6C6C6C6C6C6C6C6F6F6F6F6F6F6F6F6F6C6C6C +6C6C6C6C6C6C6868686868686868686868686666666666666666666767676767676767676B6B6B +6B6B6B6B6B6B6E6E6E6E6E6E6E6E6E717171717171717171717171727272727272727272767676 +7676767676767777777777777777777777777777777777777777777C7C7C7C7C7C7C7C7C818181 +8181818181818181818181818181818585858585858585858B8B8B8B8B8B8B8B8B8B8B8B8C8C8C +8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E9F9F9F9F9F9F9F9F9FB4B4B4B4B4B4 +B4B4B4B4B4B4BEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBCBCBCBCBCBCBCBCBCBFBFBFBFBFBF +BFBFBFBFBFBFC0C0C0C0C0C0C0C0C0BABABABABABABABABAB6B6B6B6B6B6B6B6B6B4B4B4B4B4B4 +B4B4B4AEAEAEAEAEAEAEAEAEAEAEAEA2A2A2A2A2A2A2A2A29B9B9B9B9B9B9B9B9BA6A6A6A6A6A6 +A6A6A6DEDEDEDEDEDEDEDEDEFCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDF +DDDDDDDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +D9D9D9D9D9D9D9D9D9DADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9DADADADADADADADADA +DBDBDBDBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADA +DBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0C9C9C9C9C9C9C9C9C9BBBBBBBBBBBBBBBBBB909090909090909090545454 +5454545454544141414141414141414141416161616161616161617979797979797979797B7B7B +7B7B7B7B7B7B7979797979797979797979797878787878787878787878787878787878787B7B7B +7B7B7B7B7B7B8282828282828282828A8A8A8A8A8A8A8A8A8A8A8A909090909090909090909090 +9090909090909999999999999999999C9C9C9C9C9C9C9C9C9494949494949494949494948A8A8A +8A8A8A8A8A8A7474747474747474745B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C5C5C5C666666 +6666666666666C6C6C6C6C6C6C6C6C6F6F6F6F6F6F6F6F6F6C6C6C6C6C6C6C6C6C686868686868 +6868686868686666666666666666666767676767676767676B6B6B6B6B6B6B6B6B6E6E6E6E6E6E +6E6E6E717171717171717171717171727272727272727272767676767676767676777777777777 +7777777777777777777777777777777C7C7C7C7C7C7C7C7C818181818181818181818181818181 +8181818585858585858585858B8B8B8B8B8B8B8B8B8B8B8B8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C +8C8C8C8E8E8E8E8E8E8E8E8E9F9F9F9F9F9F9F9F9FB4B4B4B4B4B4B4B4B4B4B4B4BEBEBEBEBEBE +BEBEBEBFBFBFBFBFBFBFBFBFBCBCBCBCBCBCBCBCBCBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0 +C0C0C0BABABABABABABABABAB6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4AEAEAEAEAEAEAEAEAE +AEAEAEA2A2A2A2A2A2A2A2A29B9B9B9B9B9B9B9B9BA6A6A6A6A6A6A6A6A6DEDEDEDEDEDEDEDEDE +FCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C3C3C3C3C3C3C3C3C3DFE0DFDFE0DFDFE0DFDFDFDFDFDFDFDFDFDFDDDDDDDDDDDDDDDDDDDDDDDD +DCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBD9D9D9D9D9D9D9D9D9DADADA +DADADADADADADADADAD9D9D9D9D9D9D9D9D9DADADADADADADADADADBDBDBDBDBDBDBDBDBDADADA +DADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADADBDBDBDBDBDBDBDBDBD8D8D8 +D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3 +D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0C9C9C9 +C9C9C9C9C9C9BBBBBBBBBBBBBBBBBB909090909090909090545454545454545454414141414141 +4141414141416161616161616161617979797979797979797B7B7B7B7B7B7B7B7B797979797979 +7979797979797878787878787878787878787878787878787B7B7B7B7B7B7B7B7B828282828282 +8282828A8A8A8A8A8A8A8A8A8A8A8A909090909090909090909090909090909090999999999999 +9999999C9C9C9C9C9C9C9C9C9494949494949494949494948A8A8A8A8A8A8A8A8A747474747474 +7474745B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C5C5C5C6666666666666666666C6C6C6C6C6C +6C6C6C6F6F6F6F6F6F6F6F6F6C6C6C6C6C6C6C6C6C686868686868686868686868666666666666 +6666666767676767676767676B6B6B6B6B6B6B6B6B6E6E6E6E6E6E6E6E6E717171717171717171 +717171727272727272727272767676767676767676777777777777777777777777777777777777 +7777777C7C7C7C7C7C7C7C7C818181818181818181818181818181818181858585858585858585 +8B8B8B8B8B8B8B8B8B8B8B8B8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E +9F9F9F9F9F9F9F9F9FB4B4B4B4B4B4B4B4B4B4B4B4BEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBF +BCBCBCBCBCBCBCBCBCBFBFBFBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0BABABABABABABABABA +B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4AEAEAEAEAEAEAEAEAEAEAEAEA2A2A2A2A2A2A2A2A2 +9B9B9B9B9B9B9B9B9BA6A6A6A6A6A6A6A6A6DEDEDEDEDEDEDEDEDEFCFCFCFCFCFCFCFCFCFCFCFC +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3DEDEDE +DEDEDEDEDEDEDEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADADBDBDB +DBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADAD9D9D9D9D9D9D9D9D9D8D8D8D8D8D8 +D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6 +D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCBCBCBCBCBCBCBCBCBC8C8C8C8C8C8 +C8C8C8B1B1B1B1B1B1B1B1B17878787878787878785151515151515151515151515D5D5D5D5D5D +5D5D5D7777777777777777777A7A7A7A7A7A7A7A7A787878787878787878787878777777777777 +7777777777777777777777777C7C7C7C7C7C7C7C7C8282828282828282828C8C8C8C8C8C8C8C8C +8C8C8C9191919191919191918F8F8F8F8F8F8F8F8F9494949494949494949C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B9494949494949494947C7C7C7C7C7C7C7C7C565656565656565656 +494949494949494949494949525252525252525252585858585858585858595959595959595959 +5757575757575757575858585858585858585858585B5B5B5B5B5B5B5B5B626262626262626262 +6767676767676767676E6E6E6E6E6E6E6E6E7676767676767676767676767D7D7D7D7D7D7D7D7D +7F7F7F7F7F7F7F7F7F8484848484848484849090909090909090909090909A9A9A9A9A9A9A9A9A +A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A1 +9E9E9E9E9E9E9E9E9E9999999999999999999E9E9E9E9E9E9E9E9EB1B1B1B1B1B1B1B1B1C2C2C2 +C2C2C2C2C2C2C2C2C2C7C7C7C7C7C7C7C7C7C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8B9B9B9 +B9B9B9B9B9B9B9B9B9BBBBBBBBBBBBBBBBBBB6B6B6B6B6B6B6B6B6B3B3B3B3B3B3B3B3B3B1B1B1 +B1B1B1B1B1B1ACACACACACACACACACACACACA0A0A0A0A0A0A0A0A09A9A9A9A9A9A9A9A9AACACAC +ACACACACACACE6E6E6E6E6E6E6E6E6FCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF7F7F7F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4DEDEDEDEDEDEDEDEDEDEDEDEDEDEDE +DEDEDEDDDDDDDDDDDDDDDDDDDDDDDDDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDADADADADADA +DADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +D9D9D9DADADADADADADADADAD9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5 +D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFCFCFCFCBCBCBCBCBCBCBCBCBC8C8C8C8C8C8C8C8C8B1B1B1B1B1B1B1B1B1 +7878787878787878785151515151515151515151515D5D5D5D5D5D5D5D5D777777777777777777 +7A7A7A7A7A7A7A7A7A787878787878787878787878777777777777777777777777777777777777 +7C7C7C7C7C7C7C7C7C8282828282828282828C8C8C8C8C8C8C8C8C8C8C8C919191919191919191 +8F8F8F8F8F8F8F8F8F9494949494949494949C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B +9494949494949494947C7C7C7C7C7C7C7C7C565656565656565656494949494949494949494949 +525252525252525252585858585858585858595959595959595959575757575757575757585858 +5858585858585858585B5B5B5B5B5B5B5B5B6262626262626262626767676767676767676E6E6E +6E6E6E6E6E6E7676767676767676767676767D7D7D7D7D7D7D7D7D7F7F7F7F7F7F7F7F7F848484 +8484848484849090909090909090909090909A9A9A9A9A9A9A9A9AA1A1A1A1A1A1A1A1A1A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A1A1A19E9E9E9E9E9E9E9E9E999999 +9999999999999E9E9E9E9E9E9E9E9EB1B1B1B1B1B1B1B1B1C2C2C2C2C2C2C2C2C2C2C2C2C7C7C7 +C7C7C7C7C7C7C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BBBBBB +BBBBBBBBBBBBB6B6B6B6B6B6B6B6B6B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1ACACACACACAC +ACACACACACACA0A0A0A0A0A0A0A0A09A9A9A9A9A9A9A9A9AACACACACACACACACACE6E6E6E6E6E6 +E6E6E6FCFCFCFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7F7F7F7F7F7 +F7F7F7B4B4B4B4B4B4B4B4B4DEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADADADADADADADADBDBDBDBDBDBDBDBDB +DADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8 +D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2 +D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECE +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC5C5C5C5C5C5C5C5C5A5A5A5A5A5A5A5A5A57A7A7A +7A7A7A7A7A7A7A7A7A666666666666666666747474747474747474797979797979797979787878 +7878787878787878787676767676767676767575757575757575757B7B7B7B7B7B7B7B7B808080 +8080808080808B8B8B8B8B8B8B8B8B8B8B8B959595959595959595939393939393939393919191 +9191919191919A9A9A9A9A9A9A9A9AA0A0A0A0A0A0A0A0A0A0A0A0A2A2A2A2A2A2A2A2A2989898 +989898989898767676767676767676585858585858585858585858515151515151515151545454 +5454545454545858585858585858585C5C5C5C5C5C5C5C5C6161616161616161616161616C6C6C +6C6C6C6C6C6C7878787878787878788383838383838383838F8F8F8F8F8F8F8F8F9C9C9C9C9C9C +9C9C9C9C9C9CA5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8ACACACACACACACACACB3B3B3B3B3B3 +B3B3B3B3B3B3BCBCBCBCBCBCBCBCBCC1C1C1C1C1C1C1C1C1B8B8B8B8B8B8B8B8B8AAAAAAAAAAAA +AAAAAAA4A4A4A4A4A4A4A4A4A4A4A49E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0ADADADADADAD +ADADADBEBEBEBEBEBEBEBEBEC6C6C6C6C6C6C6C6C6C6C6C6C9C9C9C9C9C9C9C9C9BDBDBDBDBDBD +BDBDBDB0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1 +B1B1B1B2B2B2B2B2B2B2B2B2B0B1B0B0B1B0B0B1B0A8A8A8A8A8A8A8A8A8A8A8A89D9D9D9D9D9D +9D9D9D979797979797979797B7B7B7B7B7B7B7B7B7F1F1F1F1F1F1F1F1F1FDFDFDFDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1 +DEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DADADADADADADADADADADADADADADADADADADBDBDBDBDBDBDBDBDBDADADADADADADADADADADADA +D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +DADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8 +D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D6D6D5 +D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDC5C5C5C5C5C5C5C5C5A5A5A5A5A5A5A5A5A57A7A7A7A7A7A7A7A7A7A7A7A666666 +666666666666747474747474747474797979797979797979787878787878787878787878767676 +7676767676767575757575757575757B7B7B7B7B7B7B7B7B8080808080808080808B8B8B8B8B8B +8B8B8B8B8B8B9595959595959595959393939393939393939191919191919191919A9A9A9A9A9A +9A9A9AA0A0A0A0A0A0A0A0A0A0A0A0A2A2A2A2A2A2A2A2A2989898989898989898767676767676 +767676585858585858585858585858515151515151515151545454545454545454585858585858 +5858585C5C5C5C5C5C5C5C5C6161616161616161616161616C6C6C6C6C6C6C6C6C787878787878 +7878788383838383838383838F8F8F8F8F8F8F8F8F9C9C9C9C9C9C9C9C9C9C9C9CA5A5A5A5A5A5 +A5A5A5A8A8A8A8A8A8A8A8A8ACACACACACACACACACB3B3B3B3B3B3B3B3B3B3B3B3BCBCBCBCBCBC +BCBCBCC1C1C1C1C1C1C1C1C1B8B8B8B8B8B8B8B8B8AAAAAAAAAAAAAAAAAAA4A4A4A4A4A4A4A4A4 +A4A4A49E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0ADADADADADADADADADBEBEBEBEBEBEBEBEBE +C6C6C6C6C6C6C6C6C6C6C6C6C9C9C9C9C9C9C9C9C9BDBDBDBDBDBDBDBDBDB0B1B0B0B1B0B0B1B0 +B0B1B0B0B1B0B0B1B0B0B1B0B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2 +B0B1B0B0B1B0B0B1B0A8A8A8A8A8A8A8A8A8A8A8A89D9D9D9D9D9D9D9D9D979797979797979797 +B7B7B7B7B7B7B7B7B7F1F1F1F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1DEDEDEDEDEDEDEDEDEDDDDDD +DDDDDDDDDDDDDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADA +DADADADADADADBDBDBDBDBDBDBDBDBDADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D8D8D8 +D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9DADADADADADADADADAD9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9 +D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3 +D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0CECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC5C5C5C5C5C5 +C5C5C5A5A5A5A5A5A5A5A5A57A7A7A7A7A7A7A7A7A7A7A7A666666666666666666747474747474 +747474797979797979797979787878787878787878787878767676767676767676757575757575 +7575757B7B7B7B7B7B7B7B7B8080808080808080808B8B8B8B8B8B8B8B8B8B8B8B959595959595 +9595959393939393939393939191919191919191919A9A9A9A9A9A9A9A9AA0A0A0A0A0A0A0A0A0 +A0A0A0A2A2A2A2A2A2A2A2A2989898989898989898767676767676767676585858585858585858 +5858585151515151515151515454545454545454545858585858585858585C5C5C5C5C5C5C5C5C +6161616161616161616161616C6C6C6C6C6C6C6C6C787878787878787878838383838383838383 +8F8F8F8F8F8F8F8F8F9C9C9C9C9C9C9C9C9C9C9C9CA5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8 +ACACACACACACACACACB3B3B3B3B3B3B3B3B3B3B3B3BCBCBCBCBCBCBCBCBCC1C1C1C1C1C1C1C1C1 +B8B8B8B8B8B8B8B8B8AAAAAAAAAAAAAAAAAAA4A4A4A4A4A4A4A4A4A4A4A49E9E9E9E9E9E9E9E9E +A0A0A0A0A0A0A0A0A0ADADADADADADADADADBEBEBEBEBEBEBEBEBEC6C6C6C6C6C6C6C6C6C6C6C6 +C9C9C9C9C9C9C9C9C9BDBDBDBDBDBDBDBDBDB0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0 +B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1B2B2B2B2B2B2B2B2B2B0B1B0B0B1B0B0B1B0A8A8A8 +A8A8A8A8A8A8A8A8A89D9D9D9D9D9D9D9D9D979797979797979797B7B7B7B7B7B7B7B7B7F1F1F1 +F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1DCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDADADADADADADADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9DADADADADADA +DADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +D9D9D9D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7 +D7D7D7D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCECECECECECECECECECDCDCDCDCDCDCDCDCD +CDCDCDCECECECECECECECECECFCFCFCFCFCFCFCFCFCECECECECECECECECEC5C5C5C5C5C5C5C5C5 +A9A9A9A9A9A9A9A9A9A9A9A97D7D7D7D7D7D7D7D7D727272727272727272787878787878787878 +777777777777777777777777767676767676767676757575757575757575797979797979797979 +7F7F7F7F7F7F7F7F7F898989898989898989898989959595959595959595989898989898989898 +919191919191919191999999999999999999A4A4A4A4A4A4A4A4A4A4A4A4AAAAAAAAAAAAAAAAAA +ABABABABABABABABAB9C9C9C9C9C9C9C9C9C838383838383838383838383717171717171717171 +6969696969696969696D6D6D6D6D6D6D6D6D747474747474747474797979797979797979797979 +8383838383838383839090909090909090909D9D9D9D9D9D9D9D9DA8A8A8A8A8A8A8A8A8B1B1B1 +B1B1B1B1B1B1B1B1B1B7B7B7B7B7B7B7B7B7BCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBEBEBE +BEBEBEBEBEBEBEBEBECBCBCBCBCBCBCBCBCBD0D0D0D0D0D0D0D0D0BBBBBBBBBBBBBBBBBBA9A9A9 +A9A9A9A9A9A9A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0ADADADADADADADADADBBBBBB +BBBBBBBBBBBBC4C4C4C4C4C4C4C4C4C9C9C9C9C9C9C9C9C9C9C9C9C7C7C7C7C7C7C7C7C7B8B8B8 +B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEB0B1B0 +B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0ACACACACACACACACACA1A1A1A1A1A1A1A1A1A1A1A1989898 +989898989898979797979797979797C4C4C4C4C4C4C4C4C4F9F9F9F9F9F9F9F9F9FDFDFDFDFDFD +FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0 +D0D0D0DCDCDCDCDCDCDCDCDCDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADA +DADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9DADADADADADADADADAD9D9D9D9D9D9D9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8 +D7D7D7D7D7D7D7D7D7D7D7D7D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5D6D6D5 +D6D6D6D6D6D6D6D6D6D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECE +CFCFCFCFCFCFCFCFCFCECECECECECECECECEC5C5C5C5C5C5C5C5C5A9A9A9A9A9A9A9A9A9A9A9A9 +7D7D7D7D7D7D7D7D7D727272727272727272787878787878787878777777777777777777777777 +7676767676767676767575757575757575757979797979797979797F7F7F7F7F7F7F7F7F898989 +898989898989898989959595959595959595989898989898989898919191919191919191999999 +999999999999A4A4A4A4A4A4A4A4A4A4A4A4AAAAAAAAAAAAAAAAAAABABABABABABABABAB9C9C9C +9C9C9C9C9C9C8383838383838383838383837171717171717171716969696969696969696D6D6D +6D6D6D6D6D6D747474747474747474797979797979797979797979838383838383838383909090 +9090909090909D9D9D9D9D9D9D9D9DA8A8A8A8A8A8A8A8A8B1B1B1B1B1B1B1B1B1B1B1B1B7B7B7 +B7B7B7B7B7B7BCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBECBCBCB +CBCBCBCBCBCBD0D0D0D0D0D0D0D0D0BBBBBBBBBBBBBBBBBBA9A9A9A9A9A9A9A9A9A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0ADADADADADADADADADBBBBBBBBBBBBBBBBBBC4C4C4C4C4C4 +C4C4C4C9C9C9C9C9C9C9C9C9C9C9C9C7C7C7C7C7C7C7C7C7B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEB0B1B0B0B1B0B0B1B0B0B1B0B0B1B0 +B0B1B0ACACACACACACACACACA1A1A1A1A1A1A1A1A1A1A1A1989898989898989898979797979797 +979797C4C4C4C4C4C4C4C4C4F9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0DCDCDCDCDCDCDCDCDC +DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADADADADADADADADADADADADADADADADA +D9D9D9D9D9D9D9D9D9DADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9 +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7 +D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D1D1D1 +D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCECECE +CECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECFCFCFCFCFCFCFCFCFCECECE +CECECECECECEC5C5C5C5C5C5C5C5C5A9A9A9A9A9A9A9A9A9A9A9A97D7D7D7D7D7D7D7D7D727272 +727272727272787878787878787878777777777777777777777777767676767676767676757575 +7575757575757979797979797979797F7F7F7F7F7F7F7F7F898989898989898989898989959595 +959595959595989898989898989898919191919191919191999999999999999999A4A4A4A4A4A4 +A4A4A4A4A4A4AAAAAAAAAAAAAAAAAAABABABABABABABABAB9C9C9C9C9C9C9C9C9C838383838383 +8383838383837171717171717171716969696969696969696D6D6D6D6D6D6D6D6D747474747474 +7474747979797979797979797979798383838383838383839090909090909090909D9D9D9D9D9D +9D9D9DA8A8A8A8A8A8A8A8A8B1B1B1B1B1B1B1B1B1B1B1B1B7B7B7B7B7B7B7B7B7BCBCBCBCBCBC +BCBCBCBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBEBEBECBCBCBCBCBCBCBCBCBD0D0D0D0D0D0 +D0D0D0BBBBBBBBBBBBBBBBBBA9A9A9A9A9A9A9A9A9A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A0ADADADADADADADADADBBBBBBBBBBBBBBBBBBC4C4C4C4C4C4C4C4C4C9C9C9C9C9C9C9C9C9 +C9C9C9C7C7C7C7C7C7C7C7C7B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A8A8A8AEAEAEAEAEAEAEAEAEB0B1B0B0B1B0B0B1B0B0B1B0B0B1B0B0B1B0ACACACACACACACACAC +A1A1A1A1A1A1A1A1A1A1A1A1989898989898989898979797979797979797C4C4C4C4C4C4C4C4C4 +F9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBDADADADADADADADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9 +D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D6D6D6 +D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1 +D1D1D1C4C4C4C4C4C4C4C4C4C4C4C4919191919191919191737373737373737373767676767676 +7676767676767676767676767676767676767676767676767676767676767676767A7A7A7A7A7A +7A7A7A7D7D7D7D7D7D7D7D7D868686868686868686868686919191919191919191999999999999 +999999949494949494949494979797979797979797A3A3A3A3A3A3A3A3A3A3A3A3A9A9A9A9A9A9 +A9A9A9AEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFA4A4A4A4A4A4A4A4A4A4A4A4969696969696 +9696968585858585858585857D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E +7E7E7E8484848484848484848E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9EA9A9A9A9A9A9A9A9A9 +B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9BEBEBEBEBEBEBEBEBE +BFBFBFBFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5C2C2C2C2C2C2C2C2C2B1B1B1B1B1B1B1B1B1 +A8A8A8A8A8A8A8A8A8A6A6A6A6A6A6A6A6A6A6A6A6ADADADADADADADADADBCBCBCBCBCBCBCBCBC +C2C2C2C2C2C2C2C2C2C3C3C3C3C3C3C3C3C3C7C7C7C7C7C7C7C7C7C7C7C7C4C4C4C4C4C4C4C4C4 +B7B7B7B7B7B7B7B7B7A6A6A6A6A6A6A6A6A6A1A1A1A1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8 +ACACACACACACACACACACACACACACACACACACA8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E9E9E9E +939393939393939393999999999999999999D0D0D0D0D0D0D0D0D0FBFBFBFBFBFBFBFBFBFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACA +CACACACACACADBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDADADA +DADADADADADADADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5 +D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D3D3D3D3D3D3D3D3D3D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCF +CFCFCFCECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECFCFCFCFCFCF +CFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1C4C4C4C4C4C4C4C4C4 +C4C4C4919191919191919191737373737373737373767676767676767676767676767676767676 +7676767676767676767676767676767676767676767A7A7A7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D +868686868686868686868686919191919191919191999999999999999999949494949494949494 +979797979797979797A3A3A3A3A3A3A3A3A3A3A3A3A9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAE +AFAFAFAFAFAFAFAFAFA4A4A4A4A4A4A4A4A4A4A4A4969696969696969696858585858585858585 +7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E848484848484848484 +8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9EA9A9A9A9A9A9A9A9A9B0B0B0B0B0B0B0B0B0B0B0B0 +B1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9BEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBFBFBF +C5C5C5C5C5C5C5C5C5C2C2C2C2C2C2C2C2C2B1B1B1B1B1B1B1B1B1A8A8A8A8A8A8A8A8A8A6A6A6 +A6A6A6A6A6A6A6A6A6ADADADADADADADADADBCBCBCBCBCBCBCBCBCC2C2C2C2C2C2C2C2C2C3C3C3 +C3C3C3C3C3C3C7C7C7C7C7C7C7C7C7C7C7C7C4C4C4C4C4C4C4C4C4B7B7B7B7B7B7B7B7B7A6A6A6 +A6A6A6A6A6A6A1A1A1A1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8ACACACACACACACACACACACAC +ACACACACACACA8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E9E9E9E939393939393939393999999 +999999999999D0D0D0D0D0D0D0D0D0FBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACADBDBDBDBDBDB +DBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2 +D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCD +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECED0D0D0D0D0D0D0D0D0 +D1D1D1D1D1D1D1D1D1D4D4D4D4D4D4D4D4D4CBCBCBCBCBCBCBCBCBCBCBCB999999999999999999 +737373737373737373747474747474747474757575757575757575757575747474747474747474 +7777777777777777777979797979797979797C7C7C7C7C7C7C7C7C848484848484848484848484 +8E8E8E8E8E8E8E8E8E9696969696969696969696969696969696969494949494949494949D9D9D +9D9D9D9D9D9D9D9D9DA4A4A4A4A4A4A4A4A4ABABABABABABABABABB1B1B1B1B1B1B1B1B1AFAFAF +AFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A8969696969696969696868686868686868686808080 +8080808080807E7E7E7E7E7E7E7E7E7E7E7E808080808080808080848484848484848484909090 +9090909090909C9C9C9C9C9C9C9C9CA3A3A3A3A3A3A3A3A3A3A3A3A6A6A6A6A6A6A6A6A6ADADAD +ADADADADADADB6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABAB8B8B8 +B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7B7B7B7BCBCBC +BCBCBCBCBCBCC1C1C1C1C1C1C1C1C1C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1 +C1C1C1C1C1C1BEBEBEBEBEBEBEBEBEB2B2B2B2B2B2B2B2B29F9F9F9F9F9F9F9F9F9C9C9C9C9C9C +9C9C9C9C9C9CA5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAA6A6A6A6A6A6 +A6A6A69A9A9A9A9A9A9A9A9A9A9A9A8D8D8D8D8D8D8D8D8D9F9F9F9F9F9F9F9F9FE1E1E1E1E1E1 +E1E1E1FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDDBDBDBDBDBDBDBDBDBDADADADADADADADADA +D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1 +D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECED0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D4D4D4 +D4D4D4D4D4D4CBCBCBCBCBCBCBCBCBCBCBCB999999999999999999737373737373737373747474 +747474747474757575757575757575757575747474747474747474777777777777777777797979 +7979797979797C7C7C7C7C7C7C7C7C8484848484848484848484848E8E8E8E8E8E8E8E8E969696 +9696969696969696969696969696969494949494949494949D9D9D9D9D9D9D9D9D9D9D9DA4A4A4 +A4A4A4A4A4A4ABABABABABABABABABB1B1B1B1B1B1B1B1B1AFAFAFAFAFAFAFAFAFAFAFAFA8A8A8 +A8A8A8A8A8A89696969696969696968686868686868686868080808080808080807E7E7E7E7E7E +7E7E7E7E7E7E8080808080808080808484848484848484849090909090909090909C9C9C9C9C9C +9C9C9CA3A3A3A3A3A3A3A3A3A3A3A3A6A6A6A6A6A6A6A6A6ADADADADADADADADADB6B6B6B6B6B6 +B6B6B6B9B9B9B9B9B9B9B9B9B9B9B9BABABABABABABABABAB8B8B8B8B8B8B8B8B8B3B3B3B3B3B3 +B3B3B3B4B4B4B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7B7B7B7BCBCBCBCBCBCBCBCBCC1C1C1C1C1C1 +C1C1C1C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1BEBEBEBEBEBE +BEBEBEB2B2B2B2B2B2B2B2B29F9F9F9F9F9F9F9F9F9C9C9C9C9C9C9C9C9C9C9C9CA5A5A5A5A5A5 +A5A5A5A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAA6A6A6A6A6A6A6A6A69A9A9A9A9A9A9A9A9A +9A9A9A8D8D8D8D8D8D8D8D8D9F9F9F9F9F9F9F9F9FE1E1E1E1E1E1E1E1E1FCFCFCFCFCFCFCFCFC +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +BDBDBDBDBDBDBDBDBDDBDBDBDBDBDBDBDBDBDADADADADADADADADAD9D9D9D9D9D9D9D9D9D9D9D9 +D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6 +D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D5D5D5 +D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3 +D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0CFCFCF +CFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECED0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D4D4D4D4D4D4D4D4D4CBCBCBCBCBCB +CBCBCBCBCBCB999999999999999999737373737373737373747474747474747474757575757575 +7575757575757474747474747474747777777777777777777979797979797979797C7C7C7C7C7C +7C7C7C8484848484848484848484848E8E8E8E8E8E8E8E8E969696969696969696969696969696 +9696969494949494949494949D9D9D9D9D9D9D9D9D9D9D9DA4A4A4A4A4A4A4A4A4ABABABABABAB +ABABABB1B1B1B1B1B1B1B1B1AFAFAFAFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A8969696969696 +9696968686868686868686868080808080808080807E7E7E7E7E7E7E7E7E7E7E7E808080808080 +8080808484848484848484849090909090909090909C9C9C9C9C9C9C9C9CA3A3A3A3A3A3A3A3A3 +A3A3A3A6A6A6A6A6A6A6A6A6ADADADADADADADADADB6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9 +B9B9B9BABABABABABABABABAB8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4 +B7B7B7B7B7B7B7B7B7B7B7B7BCBCBCBCBCBCBCBCBCC1C1C1C1C1C1C1C1C1C0C0C0C0C0C0C0C0C0 +C0C0C0C0C0C0C0C0C0C1C1C1C1C1C1C1C1C1C1C1C1BEBEBEBEBEBEBEBEBEB2B2B2B2B2B2B2B2B2 +9F9F9F9F9F9F9F9F9F9C9C9C9C9C9C9C9C9C9C9C9CA5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8 +AAAAAAAAAAAAAAAAAAA6A6A6A6A6A6A6A6A69A9A9A9A9A9A9A9A9A9A9A9A8D8D8D8D8D8D8D8D8D +9F9F9F9F9F9F9F9F9FE1E1E1E1E1E1E1E1E1FCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDD9D9D9 +D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D3D3D3D3D3D3 +D3D3D3D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1 +D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECDCDCDCDCDCD +CDCDCDCECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0 +D0D0D0D2D2D2D2D2D2D2D2D2D4D4D4D4D4D4D4D4D4CDCDCDCDCDCDCDCDCDCDCDCD9D9D9D9D9D9D +9D9D9D747474747474747474757575757575757575757575757575757575757575757575757575 +7575757575757575757575757979797979797979797D7D7D7D7D7D7D7D7D818181818181818181 +818181898989898989898989909090909090909090969696969696969696959595959595959595 +9797979797979797979797979C9C9C9C9C9C9C9C9CA3A3A3A3A3A3A3A3A3AAAAAAAAAAAAAAAAAA +AEAEAEAEAEAEAEAEAEAEAEAEAAAAAAAAAAAAAAAAAA9E9E9E9E9E9E9E9E9E919191919191919191 +8C8C8C8C8C8C8C8C8C8A8A8A8A8A8A8A8A8A8A8A8A888888888888888888878787878787878787 +8D8D8D8D8D8D8D8D8D9696969696969696969E9E9E9E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3 +A8A8A8A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8B8B8B8BABABABABABABABABA +BBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBCBCBC +BCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0BFBFBF +BFBFBFBFBFBFBFBFBFB7B7B7B7B7B7B7B7B7ACACACACACACACACAC9B9B9B9B9B9B9B9B9B989898 +989898989898989898A1A1A1A1A1A1A1A1A1A6A6A6A6A6A6A6A6A6A9A9A9A9A9A9A9A9A9A5A5A5 +A5A5A5A5A5A59696969696969696969696968D8D8D8D8D8D8D8D8DB0B0B0B0B0B0B0B0B0EDEDED +EDEDEDEDEDEDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1 +D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECE +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D2D2D2D2D2D2D2D2D2 +D4D4D4D4D4D4D4D4D4CDCDCDCDCDCDCDCDCDCDCDCD9D9D9D9D9D9D9D9D9D747474747474747474 +757575757575757575757575757575757575757575757575757575757575757575757575757575 +7979797979797979797D7D7D7D7D7D7D7D7D818181818181818181818181898989898989898989 +909090909090909090969696969696969696959595959595959595979797979797979797979797 +9C9C9C9C9C9C9C9C9CA3A3A3A3A3A3A3A3A3AAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAEAEAEAEAE +AAAAAAAAAAAAAAAAAA9E9E9E9E9E9E9E9E9E9191919191919191918C8C8C8C8C8C8C8C8C8A8A8A +8A8A8A8A8A8A8A8A8A8888888888888888888787878787878787878D8D8D8D8D8D8D8D8D969696 +9696969696969E9E9E9E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3A8A8A8A8A8A8A8A8A8B2B2B2 +B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8B8B8B8BABABABABABABABABABBBBBBBBBBBBBBBBBBBDBDBD +BDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBDBDBD +BDBDBDBDBDBDBFBFBFBFBFBFBFBFBFC0C0C0C0C0C0C0C0C0BFBFBFBFBFBFBFBFBFBFBFBFB7B7B7 +B7B7B7B7B7B7ACACACACACACACACAC9B9B9B9B9B9B9B9B9B989898989898989898989898A1A1A1 +A1A1A1A1A1A1A6A6A6A6A6A6A6A6A6A9A9A9A9A9A9A9A9A9A5A5A5A5A5A5A5A5A5969696969696 +9696969696968D8D8D8D8D8D8D8D8DB0B0B0B0B0B0B0B0B0EDEDEDEDEDEDEDEDEDFDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C7C7C7C7C7C7C7C7C7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCECECECECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECECECE +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5BEBEBE +BEBEBEBEBEBEBEBEBE969696969696969696717171717171717171757575757575757575757575 +7575757575757575757575757575757575757575757575757575757777777777777777777A7A7A +7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D7D7D7D8383838383838383838A8A8A8A8A8A8A8A8A909090 +909090909090939393939393939393959595959595959595959595959595959595959595989898 +9898989898989E9E9E9E9E9E9E9E9EA4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A49D9D9D +9D9D9D9D9D9D969696969696969696939393939393939393949494949494949494949494949494 +9494949494949595959595959595959A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9FA5A5A5A5A5A5 +A5A5A5A5A5A5A9A9A9A9A9A9A9A9A9ACACACACACACACACACB0B1B0B0B1B0B0B1B0B3B3B3B3B3B3 +B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5B3B3B3B3B3B3 +B3B3B3B1B1B1B1B1B1B1B1B1B1B1B1B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8BABABABABABA +BABABABDBDBDBDBDBDBDBDBDBBBBBBBBBBBBBBBBBBBBBBBBB1B1B1B1B1B1B1B1B1A6A6A6A6A6A6 +A6A6A6999999999999999999989898989898989898989898A0A0A0A0A0A0A0A0A0A4A4A4A4A4A4 +A4A4A4A7A7A7A7A7A7A7A7A7A2A2A2A2A2A2A2A2A2959595959595959595959595929292929292 +929292C4C4C4C4C4C4C4C4C4F6F6F6F6F6F6F6F6F6FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD7D7D7D7D7D7D7D7D7 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7 +D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3 +D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECE +CECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5BEBEBEBEBEBEBEBEBEBEBEBE969696 +969696969696717171717171717171757575757575757575757575757575757575757575757575 +7575757575757575757575757575757777777777777777777A7A7A7A7A7A7A7A7A7D7D7D7D7D7D +7D7D7D7D7D7D8383838383838383838A8A8A8A8A8A8A8A8A909090909090909090939393939393 +9393939595959595959595959595959595959595959595959898989898989898989E9E9E9E9E9E +9E9E9EA4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A49D9D9D9D9D9D9D9D9D969696969696 +969696939393939393939393949494949494949494949494949494949494949494959595959595 +9595959A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9FA5A5A5A5A5A5A5A5A5A5A5A5A9A9A9A9A9A9 +A9A9A9ACACACACACACACACACB0B1B0B0B1B0B0B1B0B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4 +B4B4B4B6B6B6B6B6B6B6B6B6B5B5B5B5B5B5B5B5B5B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1 +B1B1B1B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8BABABABABABABABABABDBDBDBDBDBDBDBDBD +BBBBBBBBBBBBBBBBBBBBBBBBB1B1B1B1B1B1B1B1B1A6A6A6A6A6A6A6A6A6999999999999999999 +989898989898989898989898A0A0A0A0A0A0A0A0A0A4A4A4A4A4A4A4A4A4A7A7A7A7A7A7A7A7A7 +A2A2A2A2A2A2A2A2A2959595959595959595959595929292929292929292C4C4C4C4C4C4C4C4C4 +F6F6F6F6F6F6F6F6F6FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D7D7D7 +D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1 +D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECDCDCDCDCDCD +CDCDCDCECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCBCBCBCBCBCB +CBCBCBC5C5C5C5C5C5C5C5C5BEBEBEBEBEBEBEBEBEBEBEBE969696969696969696717171717171 +717171757575757575757575757575757575757575757575757575757575757575757575757575 +7575757777777777777777777A7A7A7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D7D7D7D838383838383 +8383838A8A8A8A8A8A8A8A8A909090909090909090939393939393939393959595959595959595 +9595959595959595959595959898989898989898989E9E9E9E9E9E9E9E9EA4A4A4A4A4A4A4A4A4 +A4A4A4A4A4A4A4A4A4A4A4A49D9D9D9D9D9D9D9D9D969696969696969696939393939393939393 +9494949494949494949494949494949494949494949595959595959595959A9A9A9A9A9A9A9A9A +9F9F9F9F9F9F9F9F9FA5A5A5A5A5A5A5A5A5A5A5A5A9A9A9A9A9A9A9A9A9ACACACACACACACACAC +B0B1B0B0B1B0B0B1B0B3B3B3B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6 +B5B5B5B5B5B5B5B5B5B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1B1B1B1B4B4B4B4B4B4B4B4B4 +B8B8B8B8B8B8B8B8B8BABABABABABABABABABDBDBDBDBDBDBDBDBDBBBBBBBBBBBBBBBBBBBBBBBB +B1B1B1B1B1B1B1B1B1A6A6A6A6A6A6A6A6A6999999999999999999989898989898989898989898 +A0A0A0A0A0A0A0A0A0A4A4A4A4A4A4A4A4A4A7A7A7A7A7A7A7A7A7A2A2A2A2A2A2A2A2A2959595 +959595959595959595929292929292929292C4C4C4C4C4C4C4C4C4F6F6F6F6F6F6F6F6F6FDFDFD +FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFB +FBFBFBFBFBFBD7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D9D9D9D9D9D9D9D9D9D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7 +D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D4D4D4D4D4D4D4D4D4D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCF +CFCFCFCECECECECECECECECECECECECECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCBCBCBCBCBCBCBCBCBB3B3B3B3B3B3B3B3B3959595959595959595 +8383838383838383838383836C6C6C6C6C6C6C6C6C626262626262626262727272727272727272 +757575757575757575757575747474747474747474757575757575757575757575757575757575 +7676767676767676767B7B7B7B7B7B7B7B7B7B7B7B7E7E7E7E7E7E7E7E7E848484848484848484 +8A8A8A8A8A8A8A8A8A8F8F8F8F8F8F8F8F8F919191919191919191919191909090909090909090 +9292929292929292929898989898989898989C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B +969696969696969696949494949494949494959595959595959595949494949494949494949494 +9696969696969696969797979797979797979797979797979797979B9B9B9B9B9B9B9B9B9F9F9F +9F9F9F9F9F9F9F9F9FA1A1A1A1A1A1A1A1A19C9C9C9C9C9C9C9C9C949494949494949494909090 +9090909090909090909696969696969696969E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F +9F9F9F9F9F9FA5A5A5A5A5A5A5A5A5A5A5A5B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8B8B8B8 +B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B5B5B5ABABABABABABABABABA0A0A0 +A0A0A0A0A0A0969696969696969696999999999999999999999999A2A2A2A2A2A2A2A2A2A5A5A5 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A59E9E9E9E9E9E9E9E9E9393939393939393939393939E9E9E +9E9E9E9E9E9EDBDBDBDBDBDBDBDBDBF9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFEFEFEFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACA +CACACAD7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D9D9D9D9D9D9D9D9D9 +D9D9D9D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6 +D6D6D6D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4 +D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCECECECECECECECECE +CECECECECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CBCBCBCBCBCBCBCBCBB3B3B3B3B3B3B3B3B3959595959595959595838383838383838383838383 +6C6C6C6C6C6C6C6C6C626262626262626262727272727272727272757575757575757575757575 +7474747474747474747575757575757575757575757575757575757676767676767676767B7B7B +7B7B7B7B7B7B7B7B7B7E7E7E7E7E7E7E7E7E8484848484848484848A8A8A8A8A8A8A8A8A8F8F8F +8F8F8F8F8F8F919191919191919191919191909090909090909090929292929292929292989898 +9898989898989C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B969696969696969696949494 +949494949494959595959595959595949494949494949494949494969696969696969696979797 +9797979797979797979797979797979B9B9B9B9B9B9B9B9B9F9F9F9F9F9F9F9F9F9F9F9FA1A1A1 +A1A1A1A1A1A19C9C9C9C9C9C9C9C9C949494949494949494909090909090909090909090969696 +9696969696969E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9FA5A5A5A5A5A5 +A5A5A5A5A5A5B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8 +B8B8B8B5B5B5B5B5B5B5B5B5B5B5B5ABABABABABABABABABA0A0A0A0A0A0A0A0A0969696969696 +969696999999999999999999999999A2A2A2A2A2A2A2A2A2A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5 +A5A5A59E9E9E9E9E9E9E9E9E9393939393939393939393939E9E9E9E9E9E9E9E9EDBDBDBDBDBDB +DBDBDBF9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9CACACACACACACACACAD7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D4D4D4D4D4D4D4D4D4D1D1D1D1D1D1D1D1D1D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCECECE +CECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0C2C2C2C2C2C2C2C2C29A9A9A +9A9A9A9A9A9A666666666666666666484848484848484848484848404040404040404040555555 +555555555555717171717171717171757575757575757575757575727272727272727272737373 +7373737373737474747474747474747676767676767676767979797979797979797979797C7C7C +7C7C7C7C7C7C8181818181818181818585858585858585858B8B8B8B8B8B8B8B8B8D8D8D8D8D8D +8D8D8D8D8D8D8888888888888888888C8C8C8C8C8C8C8C8C949494949494949494969696969696 +9696969696969090909090909090908F8F8F8F8F8F8F8F8F909090909090909090939393939393 +9393939090909090909090909090909090909090909090908D8D8D8D8D8D8D8D8D888888888888 +888888888888888888888888888888888888888888888888878787878787878787808080808080 +8080807373737373737373737171717171717171717171717D7D7D7D7D7D7D7D7D898989898989 +8989898D8D8D8D8D8D8D8D8D959595959595959595A3A3A3A3A3A3A3A3A3A3A3A3B2B2B2B2B2B2 +B2B2B2BABABABABABABABABAB7B7B7B7B7B7B7B7B7B5B5B5B5B5B5B5B5B5B0B0B0B0B0B0B0B0B0 +B0B0B0A8A8A8A8A8A8A8A8A8A0A0A0A0A0A0A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9AA3A3A3A3A3A3A3A3A3A8A8A8A8A8A8A8A8A8A4A4A4A4A4A4A4A4A49B9B9B9B9B9B9B9B9B +939393939393939393939393B7B7B7B7B7B7B7B7B7F0F0F0F0F0F0F0F0F0FDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FBFBFBFBFBFBFBFBFBD4D4D4D4D4D4D4D4D4D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8 +D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5 +D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D4D4D4D4D4D4D4D4D4D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECE +CECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECFCFCFCFCFCF +CFCFCFCFCFCFD0D0D0D0D0D0D0D0D0C2C2C2C2C2C2C2C2C29A9A9A9A9A9A9A9A9A666666666666 +666666484848484848484848484848404040404040404040555555555555555555717171717171 +717171757575757575757575757575727272727272727272737373737373737373747474747474 +7474747676767676767676767979797979797979797979797C7C7C7C7C7C7C7C7C818181818181 +8181818585858585858585858B8B8B8B8B8B8B8B8B8D8D8D8D8D8D8D8D8D8D8D8D888888888888 +8888888C8C8C8C8C8C8C8C8C949494949494949494969696969696969696969696909090909090 +9090908F8F8F8F8F8F8F8F8F909090909090909090939393939393939393909090909090909090 +9090909090909090909090908D8D8D8D8D8D8D8D8D888888888888888888888888888888888888 +888888888888888888888888878787878787878787808080808080808080737373737373737373 +7171717171717171717171717D7D7D7D7D7D7D7D7D8989898989898989898D8D8D8D8D8D8D8D8D +959595959595959595A3A3A3A3A3A3A3A3A3A3A3A3B2B2B2B2B2B2B2B2B2BABABABABABABABABA +B7B7B7B7B7B7B7B7B7B5B5B5B5B5B5B5B5B5B0B0B0B0B0B0B0B0B0B0B0B0A8A8A8A8A8A8A8A8A8 +A0A0A0A0A0A0A0A0A09A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AA3A3A3A3A3A3A3A3A3 +A8A8A8A8A8A8A8A8A8A4A4A4A4A4A4A4A4A49B9B9B9B9B9B9B9B9B939393939393939393939393 +B7B7B7B7B7B7B7B7B7F0F0F0F0F0F0F0F0F0FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFE +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD4D4D4 +D4D4D4D4D4D4D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8 +D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5 +D5D5D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D4D4D4D4D4D4 +D4D4D4D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECECECECE +CECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0 +D0D0D0C2C2C2C2C2C2C2C2C29A9A9A9A9A9A9A9A9A666666666666666666484848484848484848 +484848404040404040404040555555555555555555717171717171717171757575757575757575 +757575727272727272727272737373737373737373747474747474747474767676767676767676 +7979797979797979797979797C7C7C7C7C7C7C7C7C818181818181818181858585858585858585 +8B8B8B8B8B8B8B8B8B8D8D8D8D8D8D8D8D8D8D8D8D8888888888888888888C8C8C8C8C8C8C8C8C +9494949494949494949696969696969696969696969090909090909090908F8F8F8F8F8F8F8F8F +909090909090909090939393939393939393909090909090909090909090909090909090909090 +8D8D8D8D8D8D8D8D8D888888888888888888888888888888888888888888888888888888888888 +878787878787878787808080808080808080737373737373737373717171717171717171717171 +7D7D7D7D7D7D7D7D7D8989898989898989898D8D8D8D8D8D8D8D8D959595959595959595A3A3A3 +A3A3A3A3A3A3A3A3A3B2B2B2B2B2B2B2B2B2BABABABABABABABABAB7B7B7B7B7B7B7B7B7B5B5B5 +B5B5B5B5B5B5B0B0B0B0B0B0B0B0B0B0B0B0A8A8A8A8A8A8A8A8A8A0A0A0A0A0A0A0A0A09A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9AA3A3A3A3A3A3A3A3A3A8A8A8A8A8A8A8A8A8A4A4A4 +A4A4A4A4A4A49B9B9B9B9B9B9B9B9B939393939393939393939393B7B7B7B7B7B7B7B7B7F0F0F0 +F0F0F0F0F0F0FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFBFBFBFBFBFBFBFBFBD4D4D4D4D4D4D4D4D4D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6 +D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCD +CECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFC0C0C0C0C0C0C0C0C0 +A2A2A2A2A2A2A2A2A2767676767676767676454545454545454545454545353535353535353535 +4F4F4F4F4F4F4F4F4F707070707070707070787878787878787878787878737373737373737373 +737373737373737373747474747474747474767676767676767676777777777777777777777777 +7A7A7A7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C808080808080808080868686868686868686888888 +8888888888888888888383838383838383838484848484848484848A8A8A8A8A8A8A8A8A8E8E8E +8E8E8E8E8E8E8E8E8E8B8B8B8B8B8B8B8B8B8989898989898989898989898989898989898B8B8B +8B8B8B8B8B8B8C8C8C8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8787878787878787877F7F7F +7F7F7F7F7F7F7B7B7B7B7B7B7B7B7B7979797979797979797979797B7B7B7B7B7B7B7B7B7B7B7B +7B7B7B7B7B7B7777777777777777777676767676767676767676767D7D7D7D7D7D7D7D7D888888 +8888888888888F8F8F8F8F8F8F8F8F999999999999999999A8A8A8A8A8A8A8A8A8A8A8A8B5B5B5 +B5B5B5B5B5B5B9B9B9B9B9B9B9B9B9B5B5B5B5B5B5B5B5B5B0B0B0B0B0B0B0B0B0A9A9A9A9A9A9 +A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A5A5A5A5A5A5A5A5A59E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9EA6A6A6A6A6A6A6A6A6A9A9A9A9A9A9A9A9A9A1A1A1A1A1A1A1A1A1979797979797 +9797979A9A9A9A9A9A9A9A9A9A9A9AD4D4D4D4D4D4D4D4D4FAFAFAFAFAFAFAFAFAFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFCFCFCFCFCFCFCFCFCE1E1E1E1E1E1E1E1E1D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CECECECECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECED0D0D0 +D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFC0C0C0C0C0C0C0C0C0A2A2A2A2A2A2A2A2A2767676 +7676767676764545454545454545454545453535353535353535354F4F4F4F4F4F4F4F4F707070 +707070707070787878787878787878787878737373737373737373737373737373737373747474 +7474747474747676767676767676767777777777777777777777777A7A7A7A7A7A7A7A7A7C7C7C +7C7C7C7C7C7C808080808080808080868686868686868686888888888888888888888888838383 +8383838383838484848484848484848A8A8A8A8A8A8A8A8A8E8E8E8E8E8E8E8E8E8E8E8E8B8B8B +8B8B8B8B8B8B8989898989898989898989898989898989898B8B8B8B8B8B8B8B8B8C8C8C8C8C8C +8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8787878787878787877F7F7F7F7F7F7F7F7F7B7B7B7B7B7B +7B7B7B7979797979797979797979797B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B777777777777 +7777777676767676767676767676767D7D7D7D7D7D7D7D7D8888888888888888888F8F8F8F8F8F +8F8F8F999999999999999999A8A8A8A8A8A8A8A8A8A8A8A8B5B5B5B5B5B5B5B5B5B9B9B9B9B9B9 +B9B9B9B5B5B5B5B5B5B5B5B5B0B0B0B0B0B0B0B0B0A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9 +A9A9A9A5A5A5A5A5A5A5A5A59E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EA6A6A6A6A6A6 +A6A6A6A9A9A9A9A9A9A9A9A9A1A1A1A1A1A1A1A1A19797979797979797979A9A9A9A9A9A9A9A9A +9A9A9AD4D4D4D4D4D4D4D4D4FAFAFAFAFAFAFAFAFAFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFC +E1E1E1E1E1E1E1E1E1D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D7D7D7 +D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D5D5D5D5D5D5D5D5D4D4D4 +D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3 +D3D3D3D3D3D3D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECE +CECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0CFCFCF +CFCFCFCFCFCFC0C0C0C0C0C0C0C0C0A2A2A2A2A2A2A2A2A2767676767676767676454545454545 +4545454545453535353535353535354F4F4F4F4F4F4F4F4F707070707070707070787878787878 +787878787878737373737373737373737373737373737373747474747474747474767676767676 +7676767777777777777777777777777A7A7A7A7A7A7A7A7A7C7C7C7C7C7C7C7C7C808080808080 +808080868686868686868686888888888888888888888888838383838383838383848484848484 +8484848A8A8A8A8A8A8A8A8A8E8E8E8E8E8E8E8E8E8E8E8E8B8B8B8B8B8B8B8B8B898989898989 +8989898989898989898989898B8B8B8B8B8B8B8B8B8C8C8C8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D +8D8D8D8787878787878787877F7F7F7F7F7F7F7F7F7B7B7B7B7B7B7B7B7B797979797979797979 +7979797B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B777777777777777777767676767676767676 +7676767D7D7D7D7D7D7D7D7D8888888888888888888F8F8F8F8F8F8F8F8F999999999999999999 +A8A8A8A8A8A8A8A8A8A8A8A8B5B5B5B5B5B5B5B5B5B9B9B9B9B9B9B9B9B9B5B5B5B5B5B5B5B5B5 +B0B0B0B0B0B0B0B0B0A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A5A5A5A5A5A5A5A5A5 +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EA6A6A6A6A6A6A6A6A6A9A9A9A9A9A9A9A9A9 +A1A1A1A1A1A1A1A1A19797979797979797979A9A9A9A9A9A9A9A9A9A9A9AD4D4D4D4D4D4D4D4D4 +FAFAFAFAFAFAFAFAFAFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFCFCFCFCFCFCFCFCFCE1E1E1E1E1E1E1E1E1D7D7D7 +D7D7D7D7D7D7D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0 +D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFC4C4C4C4C4C4 +C4C4C4B1B1B1B1B1B1B1B1B19A9A9A9A9A9A9A9A9A6161616161616161616161613A3A3A3A3A3A +3A3A3A4D4D4D4D4D4D4D4D4D6F6F6F6F6F6F6F6F6F7B7B7B7B7B7B7B7B7B7B7B7B767676767676 +767676727272727272727272737373737373737373747474747474747474757575757575757575 +7575757878787878787878787979797979797979797B7B7B7B7B7B7B7B7B7F7F7F7F7F7F7F7F7F +8282828282828282828282827E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C808080808080808080 +868686868686868686868686858585858585858585858585858585858585868686868686868686 +8888888888888888888989898989898989898989898B8B8B8B8B8B8B8B8B898989898989898989 +8282828282828282827E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F +808080808080808080818181818181818181808080808080808080808080868686868686868686 +909090909090909090979797979797979797A3A3A3A3A3A3A3A3A3AFAFAFAFAFAFAFAFAFAFAFAF +B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3AFAFAFAFAFAFAFAFAFA8A8A8 +A8A8A8A8A8A8A8A8A8ABABABABABABABABABA8A8A8A8A8A8A8A8A8A2A2A2A2A2A2A2A2A2A3A3A3 +A3A3A3A3A3A3A3A3A3A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A0A0A0A0A0A0A0A0A0969696 +969696969696A9A9A9A9A9A9A9A9A9A9A9A9E8E8E8E8E8E8E8E8E8FCFCFCFCFCFCFCFCFCFDFDFD +FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7D8D8D8D8D8D8 +D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5 +D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0CFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECE +D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFC4C4C4C4C4C4C4C4C4B1B1B1B1B1B1B1B1B1 +9A9A9A9A9A9A9A9A9A6161616161616161616161613A3A3A3A3A3A3A3A3A4D4D4D4D4D4D4D4D4D +6F6F6F6F6F6F6F6F6F7B7B7B7B7B7B7B7B7B7B7B7B767676767676767676727272727272727272 +737373737373737373747474747474747474757575757575757575757575787878787878787878 +7979797979797979797B7B7B7B7B7B7B7B7B7F7F7F7F7F7F7F7F7F828282828282828282828282 +7E7E7E7E7E7E7E7E7E7C7C7C7C7C7C7C7C7C808080808080808080868686868686868686868686 +858585858585858585858585858585858585868686868686868686888888888888888888898989 +8989898989898989898B8B8B8B8B8B8B8B8B8989898989898989898282828282828282827E7E7E +7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F808080808080808080818181 +818181818181808080808080808080808080868686868686868686909090909090909090979797 +979797979797A3A3A3A3A3A3A3A3A3AFAFAFAFAFAFAFAFAFAFAFAFB7B7B7B7B7B7B7B7B7B8B8B8 +B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3AFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A8A8A8A8ABABAB +ABABABABABABA8A8A8A8A8A8A8A8A8A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A3A8A8A8 +A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9A0A0A0A0A0A0A0A0A0969696969696969696A9A9A9A9A9A9 +A9A9A9A9A9A9E8E8E8E8E8E8E8E8E8FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4 +D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECE +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFC6C6C6C6C6C6C6C6C6B6B6B6B6B6B6B6B6B6ACACACACACACACACAC808080 +8080808080808080804949494949494949494C4C4C4C4C4C4C4C4C6C6C6C6C6C6C6C6C6C7B7B7B +7B7B7B7B7B7B7B7B7B797979797979797979727272727272727272727272727272727272737373 +737373737373757575757575757575757575777777777777777777777777777777777777797979 +7979797979797A7A7A7A7A7A7A7A7A7E7E7E7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B777777 +7777777777777979797979797979797E7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F818181 +8181818181818383838383838383838888888888888888888A8A8A8A8A8A8A8A8A8A8A8A8C8C8C +8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E898989898989898989868686868686868686858585858585 +858585858585838383838383838383818181818181818181858585858585858585878787878787 +8787878787878F8F8F8F8F8F8F8F8F999999999999999999A1A1A1A1A1A1A1A1A1ACACACACACAC +ACACACB8B8B8B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8B5B5B5B5B5B5 +B5B5B5B3B3B3B3B3B3B3B3B3B0B0B0B0B0B0B0B0B0B0B0B0AEAEAEAEAEAEAEAEAEAAAAAAAAAAAA +AAAAAAA8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8A8A8A8A8A8 +A8A8A89E9E9E9E9E9E9E9E9E959595959595959595B5B5B5B5B5B5B5B5B5B5B5B5F0F0F0F0F0F0 +F0F0F0FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6 +D7D7D7D7D7D7D7D7D7D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7 +D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3 +D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0D0D0 +D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFC6C6C6 +C6C6C6C6C6C6B6B6B6B6B6B6B6B6B6ACACACACACACACACAC808080808080808080808080494949 +4949494949494C4C4C4C4C4C4C4C4C6C6C6C6C6C6C6C6C6C7B7B7B7B7B7B7B7B7B7B7B7B797979 +797979797979727272727272727272727272727272727272737373737373737373757575757575 +7575757575757777777777777777777777777777777777777979797979797979797A7A7A7A7A7A +7A7A7A7E7E7E7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B777777777777777777797979797979 +7979797E7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F818181818181818181838383838383 +8383838888888888888888888A8A8A8A8A8A8A8A8A8A8A8A8C8C8C8C8C8C8C8C8C8E8E8E8E8E8E +8E8E8E898989898989898989868686868686868686858585858585858585858585838383838383 +8383838181818181818181818585858585858585858787878787878787878787878F8F8F8F8F8F +8F8F8F999999999999999999A1A1A1A1A1A1A1A1A1ACACACACACACACACACB8B8B8B8B8B8B8B8B8 +B8B8B8BBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B3B3B3B3B3B3B3B3B3 +B0B0B0B0B0B0B0B0B0B0B0B0AEAEAEAEAEAEAEAEAEAAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8 +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E +959595959595959595B5B5B5B5B5B5B5B5B5B5B5B5F0F0F0F0F0F0F0F0F0FDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6D7D7D7D7D7D7D7D7D7D9D9D9 +D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5 +D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5 +D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 +D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0CFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0CECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECE +CECECED0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFC6C6C6C6C6C6C6C6C6B6B6B6B6B6B6 +B6B6B6ACACACACACACACACAC8080808080808080808080804949494949494949494C4C4C4C4C4C +4C4C4C6C6C6C6C6C6C6C6C6C7B7B7B7B7B7B7B7B7B7B7B7B797979797979797979727272727272 +727272727272727272727272737373737373737373757575757575757575757575777777777777 +7777777777777777777777777979797979797979797A7A7A7A7A7A7A7A7A7E7E7E7E7E7E7E7E7E +7E7E7E7B7B7B7B7B7B7B7B7B7777777777777777777979797979797979797E7E7E7E7E7E7E7E7E +7E7E7E7F7F7F7F7F7F7F7F7F818181818181818181838383838383838383888888888888888888 +8A8A8A8A8A8A8A8A8A8A8A8A8C8C8C8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E898989898989898989 +868686868686868686858585858585858585858585838383838383838383818181818181818181 +8585858585858585858787878787878787878787878F8F8F8F8F8F8F8F8F999999999999999999 +A1A1A1A1A1A1A1A1A1ACACACACACACACACACB8B8B8B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBB +B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B3B3B3B3B3B3B3B3B3B0B0B0B0B0B0B0B0B0B0B0B0 +AEAEAEAEAEAEAEAEAEAAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAA +AAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E959595959595959595B5B5B5 +B5B5B5B5B5B5B5B5B5F0F0F0F0F0F0F0F0F0FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9 +F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3 +D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECED0D0D0D0D0D0D0D0D0 +D0D0D0CFCFCFCFCFCFCFCFCFC6C6C6C6C6C6C6C6C6B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3 +9B9B9B9B9B9B9B9B9B9B9B9B666666666666666666515151515151515151686868686868686868 +7979797979797979797979797B7B7B7B7B7B7B7B7B747474747474747474707070707070707070 +717171717171717171737373737373737373737373757575757575757575767676767676767676 +7878787878787878787979797979797979797B7B7B7B7B7B7B7B7B7B7B7B787878787878787878 +747474747474747474737373737373737373757575757575757575757575777777777777777777 +7D7D7D7D7D7D7D7D7D8181818181818181818585858585858585858A8A8A8A8A8A8A8A8A8A8A8A +8F8F8F8F8F8F8F8F8F9090909090909090908B8B8B8B8B8B8B8B8B888888888888888888898989 +8989898989898989898888888888888888888A8A8A8A8A8A8A8A8A8F8F8F8F8F8F8F8F8F979797 +979797979797979797A2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8B0B0B0B0B0B0B0B0B0B9B9B9 +B9B9B9B9B9B9C0C0C0C0C0C0C0C0C0C0C0C0BFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEBEBEBE +BEBEBEBEBEBEBCBCBCBCBCBCBCBCBCB7B7B7B7B7B7B7B7B7B7B7B7B0B0B0B0B0B0B0B0B0AEAEAE +AEAEAEAEAEAEADADADADADADADADADADADADADADADADADADADADADAAAAAAAAAAAAAAAAAAA4A4A4 +A4A4A4A4A4A4999999999999999999929292929292929292BABABABABABABABABABABABAF1F1F1 +F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBB +BBBBBBD6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCD +CECECECECECECECECECECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCF +C6C6C6C6C6C6C6C6C6B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B39B9B9B9B9B9B9B9B9B9B9B9B +666666666666666666515151515151515151686868686868686868797979797979797979797979 +7B7B7B7B7B7B7B7B7B747474747474747474707070707070707070717171717171717171737373 +737373737373737373757575757575757575767676767676767676787878787878787878797979 +7979797979797B7B7B7B7B7B7B7B7B7B7B7B787878787878787878747474747474747474737373 +7373737373737575757575757575757575757777777777777777777D7D7D7D7D7D7D7D7D818181 +8181818181818585858585858585858A8A8A8A8A8A8A8A8A8A8A8A8F8F8F8F8F8F8F8F8F909090 +9090909090908B8B8B8B8B8B8B8B8B888888888888888888898989898989898989898989888888 +8888888888888A8A8A8A8A8A8A8A8A8F8F8F8F8F8F8F8F8F979797979797979797979797A2A2A2 +A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8B0B0B0B0B0B0B0B0B0B9B9B9B9B9B9B9B9B9C0C0C0C0C0C0 +C0C0C0C0C0C0BFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBCBCBCBCBCBC +BCBCBCB7B7B7B7B7B7B7B7B7B7B7B7B0B0B0B0B0B0B0B0B0AEAEAEAEAEAEAEAEAEADADADADADAD +ADADADADADADADADADADADADADADADAAAAAAAAAAAAAAAAAAA4A4A4A4A4A4A4A4A4999999999999 +999999929292929292929292BABABABABABABABABABABABAF1F1F1F1F1F1F1F1F1FDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9BBBBBBBBBBBBBBBBBBD6D6D5D6D6D5D6D6D5 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5 +D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2 +D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 +D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2CFCFCFCFCFCFCFCFCFCECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECEC6C6C6C6C6C6C6C6C6B9B9B9 +B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4ADADADADADADADADADADADAD8A8A8A8A8A8A8A8A8A646464 +6464646464646565656565656565657676767676767676767676767C7C7C7C7C7C7C7C7C757575 +7575757575756F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F707070707070707070707070727272 +7272727272727575757575757575757878787878787878787A7A7A7A7A7A7A7A7A7B7B7B7B7B7B +7B7B7B7B7B7B7878787878787878787373737373737373736E6E6E6E6E6E6E6E6E6D6D6D6D6D6D +6D6D6D6D6D6D7474747474747474747C7C7C7C7C7C7C7C7C808080808080808080838383838383 +838383888888888888888888888888909090909090909090949494949494949494909090909090 +9090908F8F8F8F8F8F8F8F8F929292929292929292929292909090909090909090999999999999 +999999A3A3A3A3A3A3A3A3A3ABABABABABABABABABABABABB4B4B4B4B4B4B4B4B4B7B7B7B7B7B7 +B7B7B7C0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5 +C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C3C3C3C3C3C3C3C3C3B9B9B9B9B9B9B9B9B9 +B9B9B9B3B3B3B3B3B3B3B3B3B2B2B2B2B2B2B2B2B2AFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A8 +A8A8A8A3A3A3A3A3A3A3A3A39E9E9E9E9E9E9E9E9E959595959595959595949494949494949494 +BCBCBCBCBCBCBCBCBCBCBCBCF1F1F1F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +F9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4 +D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D2D2D2 +D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2CFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0 +D0D0D0D0D0D0CECECECECECECECECEC6C6C6C6C6C6C6C6C6B9B9B9B9B9B9B9B9B9B4B4B4B4B4B4 +B4B4B4ADADADADADADADADADADADAD8A8A8A8A8A8A8A8A8A646464646464646464656565656565 +6565657676767676767676767676767C7C7C7C7C7C7C7C7C7575757575757575756F6F6F6F6F6F +6F6F6F6F6F6F6F6F6F6F6F6F707070707070707070707070727272727272727272757575757575 +7575757878787878787878787A7A7A7A7A7A7A7A7A7B7B7B7B7B7B7B7B7B7B7B7B787878787878 +7878787373737373737373736E6E6E6E6E6E6E6E6E6D6D6D6D6D6D6D6D6D6D6D6D747474747474 +7474747C7C7C7C7C7C7C7C7C808080808080808080838383838383838383888888888888888888 +8888889090909090909090909494949494949494949090909090909090908F8F8F8F8F8F8F8F8F +929292929292929292929292909090909090909090999999999999999999A3A3A3A3A3A3A3A3A3 +ABABABABABABABABABABABABB4B4B4B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7C0C0C0C0C0C0C0C0C0 +C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5 +C6C6C6C6C6C6C6C6C6C3C3C3C3C3C3C3C3C3B9B9B9B9B9B9B9B9B9B9B9B9B3B3B3B3B3B3B3B3B3 +B2B2B2B2B2B2B2B2B2AFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A8A8A8A8A3A3A3A3A3A3A3A3A3 +9E9E9E9E9E9E9E9E9E959595959595959595949494949494949494BCBCBCBCBCBCBCBCBCBCBCBC +F1F1F1F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5 +C5C5C5C5C5C5D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3 +D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1 +D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2CFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0CECECECECECE +CECECEC6C6C6C6C6C6C6C6C6B9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4ADADADADADADADADAD +ADADAD8A8A8A8A8A8A8A8A8A646464646464646464656565656565656565767676767676767676 +7676767C7C7C7C7C7C7C7C7C7575757575757575756F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F +707070707070707070707070727272727272727272757575757575757575787878787878787878 +7A7A7A7A7A7A7A7A7A7B7B7B7B7B7B7B7B7B7B7B7B787878787878787878737373737373737373 +6E6E6E6E6E6E6E6E6E6D6D6D6D6D6D6D6D6D6D6D6D7474747474747474747C7C7C7C7C7C7C7C7C +808080808080808080838383838383838383888888888888888888888888909090909090909090 +9494949494949494949090909090909090908F8F8F8F8F8F8F8F8F929292929292929292929292 +909090909090909090999999999999999999A3A3A3A3A3A3A3A3A3ABABABABABABABABABABABAB +B4B4B4B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7C0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5C6C6C6 +C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6C3C3C3 +C3C3C3C3C3C3B9B9B9B9B9B9B9B9B9B9B9B9B3B3B3B3B3B3B3B3B3B2B2B2B2B2B2B2B2B2AFAFAF +AFAFAFAFAFAFA8A8A8A8A8A8A8A8A8A8A8A8A3A3A3A3A3A3A3A3A39E9E9E9E9E9E9E9E9E959595 +959595959595949494949494949494BCBCBCBCBCBCBCBCBCBCBCBCF1F1F1F1F1F1F1F1F1FDFDFD +FDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C5C5C5C5C5C5C5C5C5D6D6D6D6D6D6 +D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1 +D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0 +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDC5C5C5C5C5C5C5C5C5 +BCBCBCBCBCBCBCBCBCB5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6A4A4A4A4A4A4A4A4A4 +8383838383838383836A6A6A6A6A6A6A6A6A707070707070707070707070797979797979797979 +7777777777777777777070707070707070706E6E6E6E6E6E6E6E6E707070707070707070707070 +7070707070707070707474747474747474747878787878787878787B7B7B7B7B7B7B7B7B7C7C7C +7C7C7C7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A7575757575757575756F6F6F6F6F6F6F6F6F6E6E6E +6E6E6E6E6E6E6E6E6E7575757575757575757D7D7D7D7D7D7D7D7D828282828282828282848484 +8484848484848888888888888888888888889090909090909090909797979797979797979A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9E9E9E9E9E9E9E9E9E9E9E9E9A9A9A9A9A9A9A9A9A9F9F9F +9F9F9F9F9F9FABABABABABABABABABB0B1B0B0B1B0B0B1B0B0B1B0B6B6B6B6B6B6B6B6B6BDBDBD +BDBDBDBDBDBDC7C7C7C7C7C7C7C7C7CBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5C5C5C5C4C4C4 +C4C4C4C4C4C4C8C8C8C8C8C8C8C8C8CACACACACACACACACAC5C5C5C5C5C5C5C5C5BEBEBEBEBEBE +BEBEBEBEBEBEBBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8AEAEAEAEAEAEAEAEAEA4A4A4A4A4A4 +A4A4A4A4A4A49E9E9E9E9E9E9E9E9E989898989898989898919191919191919191969696969696 +969696BBBBBBBBBBBBBBBBBBBBBBBBF1F1F1F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7 +D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D7D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1 +D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0 +CECECECECECECECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDC5C5C5C5C5C5C5C5C5BCBCBCBCBCBCBCBCBCB5B5B5 +B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6A4A4A4A4A4A4A4A4A48383838383838383836A6A6A +6A6A6A6A6A6A707070707070707070707070797979797979797979777777777777777777707070 +7070707070706E6E6E6E6E6E6E6E6E707070707070707070707070707070707070707070747474 +7474747474747878787878787878787B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C7C7C7C7A7A7A +7A7A7A7A7A7A7575757575757575756F6F6F6F6F6F6F6F6F6E6E6E6E6E6E6E6E6E6E6E6E757575 +7575757575757D7D7D7D7D7D7D7D7D828282828282828282848484848484848484888888888888 +8888888888889090909090909090909797979797979797979A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9A9A9A9E9E9E9E9E9E9E9E9E9E9E9E9A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9FABABABABABAB +ABABABB0B1B0B0B1B0B0B1B0B0B1B0B6B6B6B6B6B6B6B6B6BDBDBDBDBDBDBDBDBDC7C7C7C7C7C7 +C7C7C7CBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C4C8C8C8C8C8C8 +C8C8C8CACACACACACACACACAC5C5C5C5C5C5C5C5C5BEBEBEBEBEBEBEBEBEBEBEBEBBBBBBBBBBBB +BBBBBBB8B8B8B8B8B8B8B8B8AEAEAEAEAEAEAEAEAEA4A4A4A4A4A4A4A4A4A4A4A49E9E9E9E9E9E +9E9E9E989898989898989898919191919191919191969696969696969696BBBBBBBBBBBBBBBBBB +BBBBBBF1F1F1F1F1F1F1F1F1FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9 +C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7 +D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4 +D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3 +D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECECECECECECECECECECECFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CDCDCD +CDCDCDCDCDCDC3C3C3C3C3C3C3C3C3BDBDBDBDBDBDBDBDBDB7B7B7B7B7B7B7B7B7B8B8B8B8B8B8 +B8B8B8B8B8B8B2B2B2B2B2B2B2B2B2A2A2A2A2A2A2A2A2A28282828282828282826E6E6E6E6E6E +6E6E6E6E6E6E7474747474747474747777777777777777776F6F6F6F6F6F6F6F6F6D6D6D6D6D6D +6D6D6D717171717171717171717171727272727272727272737373737373737373777777777777 +7777777A7A7A7A7A7A7A7A7A7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C787878787878 +7878787272727272727272727070707070707070707070707676767676767676767C7C7C7C7C7C +7C7C7C7F7F7F7F7F7F7F7F7F828282828282828282898989898989898989898989909090909090 +9090909595959595959595959B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A6A6A6A6A6A6A6A6A6ACACACACACACACACACB0B0B0B0B0B0B0B0B0 +B0B0B0B8B8B8B8B8B8B8B8B8BFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5C8C8C8C8C8C8C8C8C8 +C5C5C5C5C5C5C5C5C5C5C5C5C3C3C3C3C3C3C3C3C3C8C8C8C8C8C8C8C8C8CACACACACACACACACA +C5C5C5C5C5C5C5C5C5BFBFBFBFBFBFBFBFBFBFBFBFBABABABABABABABABAB3B3B3B3B3B3B3B3B3 +A9A9A9A9A9A9A9A9A99F9F9F9F9F9F9F9F9F9F9F9F989898989898989898929292929292929292 +909090909090909090959595959595959595B7B7B7B7B7B7B7B7B7B7B7B7F0F0F0F0F0F0F0F0F0 +FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D1D1D1 +D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0 +D0D0D0CECECECECECECECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CDCDCDCDCDCDCDCDCDC3C3C3C3C3C3 +C3C3C3BDBDBDBDBDBDBDBDBDB7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B2B2B2B2B2B2 +B2B2B2A2A2A2A2A2A2A2A2A28282828282828282826E6E6E6E6E6E6E6E6E6E6E6E747474747474 +7474747777777777777777776F6F6F6F6F6F6F6F6F6D6D6D6D6D6D6D6D6D717171717171717171 +7171717272727272727272727373737373737373737777777777777777777A7A7A7A7A7A7A7A7A +7B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C787878787878787878727272727272727272 +7070707070707070707070707676767676767676767C7C7C7C7C7C7C7C7C7F7F7F7F7F7F7F7F7F +828282828282828282898989898989898989898989909090909090909090959595959595959595 +9B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2 +A6A6A6A6A6A6A6A6A6ACACACACACACACACACB0B0B0B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8 +BFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5C8C8C8C8C8C8C8C8C8C5C5C5C5C5C5C5C5C5C5C5C5 +C3C3C3C3C3C3C3C3C3C8C8C8C8C8C8C8C8C8CACACACACACACACACAC5C5C5C5C5C5C5C5C5BFBFBF +BFBFBFBFBFBFBFBFBFBABABABABABABABABAB3B3B3B3B3B3B3B3B3A9A9A9A9A9A9A9A9A99F9F9F +9F9F9F9F9F9F9F9F9F989898989898989898929292929292929292909090909090909090959595 +959595959595B7B7B7B7B7B7B7B7B7B7B7B7F0F0F0F0F0F0F0F0F0FDFDFDFDFDFDFDFDFDFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFF9F9F9F9F9F9F9F9F9C3C3C3C3C3C3C3C3C3D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D7D7D7D7D7D7D7D7D7D7D7D7D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5 +D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1 +D1D1D1D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0CECECECECECECECECE +CECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CDCDCDCDCDCDCDCDCDC3C3C3C3C3C3C3C3C3BDBDBDBDBDBDBDBDBD +B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B2B2B2B2B2B2B2B2B2A2A2A2A2A2A2A2A2A2 +8282828282828282826E6E6E6E6E6E6E6E6E6E6E6E747474747474747474777777777777777777 +6F6F6F6F6F6F6F6F6F6D6D6D6D6D6D6D6D6D717171717171717171717171727272727272727272 +7373737373737373737777777777777777777A7A7A7A7A7A7A7A7A7B7B7B7B7B7B7B7B7B7B7B7B +7C7C7C7C7C7C7C7C7C787878787878787878727272727272727272707070707070707070707070 +7676767676767676767C7C7C7C7C7C7C7C7C7F7F7F7F7F7F7F7F7F828282828282828282898989 +8989898989898989899090909090909090909595959595959595959B9B9B9B9B9B9B9B9B9E9E9E +9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A6A6A6A6A6A6A6A6A6ACACAC +ACACACACACACB0B0B0B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8BFBFBFBFBFBFBFBFBFC5C5C5 +C5C5C5C5C5C5C8C8C8C8C8C8C8C8C8C5C5C5C5C5C5C5C5C5C5C5C5C3C3C3C3C3C3C3C3C3C8C8C8 +C8C8C8C8C8C8CACACACACACACACACAC5C5C5C5C5C5C5C5C5BFBFBFBFBFBFBFBFBFBFBFBFBABABA +BABABABABABAB3B3B3B3B3B3B3B3B3A9A9A9A9A9A9A9A9A99F9F9F9F9F9F9F9F9F9F9F9F989898 +989898989898929292929292929292909090909090909090959595959595959595B7B7B7B7B7B7 +B7B7B7B7B7B7F0F0F0F0F0F0F0F0F0FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF9F9F9F9F9F9 +F9F9F9C3C3C3C3C3C3C3C3C3D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6 +D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 +D4D4D4D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1 +D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECECDCDCDCDCDCDCDCDCD +CECECECECECECECECECFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECDCDCDCDCDCDCDCDCD +CECECECECECECECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CBCBCBCBCBCBCBCBCBC0C0C0C0C0C0C0C0C0BCBCBCBCBCBCBCBCBCB8B8B8B8B8B8B8B8B8B6B6B6 +B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B0B1B0B0B1B0B0B1B0A1A1A1A1A1A1A1A1A1797979 +7979797979797979796C6C6C6C6C6C6C6C6C7272727272727272726E6E6E6E6E6E6E6E6E6B6B6B +6B6B6B6B6B6B6D6D6D6D6D6D6D6D6D6D6D6D707070707070707070737373737373737373767676 +7676767676767878787878787878787878787878787878787878787B7B7B7B7B7B7B7B7B7A7A7A +7A7A7A7A7A7A7575757575757575757474747474747474747474747979797979797979797B7B7B +7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C8080808080808080808A8A8A8A8A8A8A8A8A8A8A8A909090 +9090909090909797979797979797979A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9BA0A0A0A0A0A0 +A0A0A0A0A0A0A7A7A7A7A7A7A7A7A7AEAEAEAEAEAEAEAEAEB2B2B2B2B2B2B2B2B2B5B5B5B5B5B5 +B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDC1C1C1C1C1C1C1C1C1C4C4C4C4C4C4 +C4C4C4C2C2C2C2C2C2C2C2C2C2C2C2C1C1C1C1C1C1C1C1C1C4C4C4C4C4C4C4C4C4C7C7C7C7C7C7 +C7C7C7C2C2C2C2C2C2C2C2C2BABABABABABABABABABABABAB6B6B6B6B6B6B6B6B6AEAEAEAEAEAE +AEAEAEA3A3A3A3A3A3A3A3A3999999999999999999999999909090909090909090909090909090 +909090959595959595959595989898989898989898B4B4B4B4B4B4B4B4B4B4B4B4E8E9E8E8E9E8 +E8E9E8FBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF7F7F7F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4 +D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4 +D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0 +D0D0D0D0D0D0CECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECFCFCF +CFCFCFCFCFCFCECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECFCFCF +CFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CBCBCBCBCBCBCBCBCBC0C0C0 +C0C0C0C0C0C0BCBCBCBCBCBCBCBCBCB8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6B6B6B6B8B8B8 +B8B8B8B8B8B8B0B1B0B0B1B0B0B1B0A1A1A1A1A1A1A1A1A17979797979797979797979796C6C6C +6C6C6C6C6C6C7272727272727272726E6E6E6E6E6E6E6E6E6B6B6B6B6B6B6B6B6B6D6D6D6D6D6D +6D6D6D6D6D6D707070707070707070737373737373737373767676767676767676787878787878 +7878787878787878787878787878787B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A757575757575 +7575757474747474747474747474747979797979797979797B7B7B7B7B7B7B7B7B7C7C7C7C7C7C +7C7C7C8080808080808080808A8A8A8A8A8A8A8A8A8A8A8A909090909090909090979797979797 +9797979A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9BA0A0A0A0A0A0A0A0A0A0A0A0A7A7A7A7A7A7 +A7A7A7AEAEAEAEAEAEAEAEAEB2B2B2B2B2B2B2B2B2B5B5B5B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8 +B8B8B8BDBDBDBDBDBDBDBDBDC1C1C1C1C1C1C1C1C1C4C4C4C4C4C4C4C4C4C2C2C2C2C2C2C2C2C2 +C2C2C2C1C1C1C1C1C1C1C1C1C4C4C4C4C4C4C4C4C4C7C7C7C7C7C7C7C7C7C2C2C2C2C2C2C2C2C2 +BABABABABABABABABABABABAB6B6B6B6B6B6B6B6B6AEAEAEAEAEAEAEAEAEA3A3A3A3A3A3A3A3A3 +999999999999999999999999909090909090909090909090909090909090959595959595959595 +989898989898989898B4B4B4B4B4B4B4B4B4B4B4B4E8E9E8E8E9E8E8E9E8FBFBFBFBFBFBFBFBFB +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEF7F7F7F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4D6D6D5D6D6D5D6D6D5D6D6D6 +D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3 +D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D4D4D4D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0CECECECECECE +CECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECFCFCFCFCFCFCFCFCFCECECECECECE +CECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CBCBCBCBCBCBCBCBCBC0C0C0C0C0C0C0C0C0BCBCBCBCBCBC +BCBCBCB8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B0B1B0B0B1B0 +B0B1B0A1A1A1A1A1A1A1A1A17979797979797979797979796C6C6C6C6C6C6C6C6C727272727272 +7272726E6E6E6E6E6E6E6E6E6B6B6B6B6B6B6B6B6B6D6D6D6D6D6D6D6D6D6D6D6D707070707070 +707070737373737373737373767676767676767676787878787878787878787878787878787878 +7878787B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A757575757575757575747474747474747474 +7474747979797979797979797B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C808080808080808080 +8A8A8A8A8A8A8A8A8A8A8A8A9090909090909090909797979797979797979A9A9A9A9A9A9A9A9A +9B9B9B9B9B9B9B9B9BA0A0A0A0A0A0A0A0A0A0A0A0A7A7A7A7A7A7A7A7A7AEAEAEAEAEAEAEAEAE +B2B2B2B2B2B2B2B2B2B5B5B5B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBD +C1C1C1C1C1C1C1C1C1C4C4C4C4C4C4C4C4C4C2C2C2C2C2C2C2C2C2C2C2C2C1C1C1C1C1C1C1C1C1 +C4C4C4C4C4C4C4C4C4C7C7C7C7C7C7C7C7C7C2C2C2C2C2C2C2C2C2BABABABABABABABABABABABA +B6B6B6B6B6B6B6B6B6AEAEAEAEAEAEAEAEAEA3A3A3A3A3A3A3A3A3999999999999999999999999 +909090909090909090909090909090909090959595959595959595989898989898989898B4B4B4 +B4B4B4B4B4B4B4B4B4E8E9E8E8E9E8E8E9E8FBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF7F7F7 +F7F7F7F7F7F7B4B4B4B4B4B4B4B4B4D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5 +D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3 +D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2 +D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 +D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECECCCCCCCCCCCC +CCCCCCCECECECECECECECECECFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECDCDCDCDCDCD +CDCDCDCECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECE +CECECEC7C7C7C7C7C7C7C7C7BFBFBFBFBFBFBFBFBFBBBBBBBBBBBBBBBBBBB9B9B9B9B9B9B9B9B9 +B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B2B2B2B2B2B2B2B2B2 +9696969696969696969696966E6E6E6E6E6E6E6E6E6A6A6A6A6A6A6A6A6A6C6C6C6C6C6C6C6C6C +6A6A6A6A6A6A6A6A6A6969696969696969696969696E6E6E6E6E6E6E6E6E727272727272727272 +7474747474747474747777777777777777777878787878787878787878787B7B7B7B7B7B7B7B7B +7A7A7A7A7A7A7A7A7A7878787878787878787878787878787878787878787C7C7C7C7C7C7C7C7C +7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E8383838383838383838C8C8C8C8C8C8C8C8C8C8C8C +9393939393939393939B9B9B9B9B9B9B9B9B9898989898989898989898989898989898989E9E9E +9E9E9E9E9E9E9E9E9EA8A8A8A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2B7B7B7B7B7B7B7B7B7B8B8B8 +B8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFC2C2C2 +C2C2C2C2C2C2BFBFBFBFBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBFBFBF +BFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B1B1B1B1B1B1B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3ACACAC +ACACACACACAC9E9E9E9E9E9E9E9E9E9191919191919191919191918E8E8E8E8E8E8E8E8E929292 +929292929292969696969696969696969696969696969696A7A7A7A7A7A7A7A7A7A7A7A7D0D0D0 +D0D0D0D0D0D0EEEEEEEEEEEEEEEEEEFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1 +C1C1C1D6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D5D6D6D5D6D6D5D6D6D5D5D5D5D5D5D5 +D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 +D3D3D3D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3 +D3D3D3D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1D1 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECECCCCCCCCCCCCCCCCCCCECECECECECECECECE +CFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCECECECECECECECECE +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CECECECECECECECECECECECEC7C7C7C7C7C7C7C7C7 +BFBFBFBFBFBFBFBFBFBBBBBBBBBBBBBBBBBBB9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B8B8B8 +B8B8B8B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B2B2B2B2B2B2B2B2B2969696969696969696969696 +6E6E6E6E6E6E6E6E6E6A6A6A6A6A6A6A6A6A6C6C6C6C6C6C6C6C6C6A6A6A6A6A6A6A6A6A696969 +6969696969696969696E6E6E6E6E6E6E6E6E727272727272727272747474747474747474777777 +7777777777777878787878787878787878787B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A787878 +7878787878787878787878787878787878787C7C7C7C7C7C7C7C7C7D7D7D7D7D7D7D7D7D7E7E7E +7E7E7E7E7E7E8383838383838383838C8C8C8C8C8C8C8C8C8C8C8C9393939393939393939B9B9B +9B9B9B9B9B9B9898989898989898989898989898989898989E9E9E9E9E9E9E9E9E9E9E9EA8A8A8 +A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8B6B6B6 +B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFC2C2C2C2C2C2C2C2C2BFBFBFBFBFBF +BFBFBFBFBFBFBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8 +B8B8B8B1B1B1B1B1B1B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3ACACACACACACACACAC9E9E9E9E9E9E +9E9E9E9191919191919191919191918E8E8E8E8E8E8E8E8E929292929292929292969696969696 +969696969696969696969696A7A7A7A7A7A7A7A7A7A7A7A7D0D0D0D0D0D0D0D0D0EEEEEEEEEEEE +EEEEEEFCFCFCFCFCFCFCFCFCFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEF9F9F9F9F9F9F9F9F9C1C1C1C1C1C1C1C1C1D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3 +D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCCCCCCCCCCCCCCCCCCCECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECDCDCDCDCDCDCDCDCDCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECE +CECECECECECECCCCCCCCCCCCCCCCCCCCCCCCC3C3C3C3C3C3C3C3C3BDBDBDBDBDBDBDBDBDBBBBBB +BBBBBBBBBBBBB9B9B9B9B9B9B9B9B9BBBBBBBBBBBBBBBBBBBBBBBBB9B9B9B9B9B9B9B9B9B8B8B8 +B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B1B1B1B1B1B1B1B1B1B1B1B1888888888888888888666666 +666666666666676767676767676767696969696969696969676767676767676767676767686868 +6868686868686E6E6E6E6E6E6E6E6E7373737373737373737878787878787878787B7B7B7B7B7B +7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A777777777777777777777777777777 +7777777777777B7B7B7B7B7B7B7B7B808080808080808080808080808080808080848484848484 +8484848A8A8A8A8A8A8A8A8A8A8A8A929292929292929292989898989898989898959595959595 +9595959595959595959595959C9C9C9C9C9C9C9C9C9C9C9CA4A4A4A4A4A4A4A4A4AFAFAFAFAFAF +AFAFAFB1B1B1B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3B3B3B3B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2 +B2B2B2B7B7B7B7B7B7B7B7B7BABABABABABABABABAB5B5B5B5B5B5B5B5B5B5B5B5B2B2B2B2B2B2 +B2B2B2B2B2B2B2B2B2B2B2B2B4B4B4B4B4B4B4B4B4ABABABABABABABABABAAAAAAAAAAAAAAAAAA +AAAAAAACACACACACACACACACA4A4A4A4A4A4A4A4A49595959595959595958B8B8B8B8B8B8B8B8B +8B8B8B8C8C8C8C8C8C8C8C8C929292929292929292949494949494949494939393939393939393 +959595959595959595959595A2A2A2A2A2A2A2A2A2C4C4C4C4C4C4C4C4C4E8E9E8E8E9E8E8E9E8 +FBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFD +FAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2 +D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCCCCCC +CCCCCCCCCCCCCECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECDCDCD +CDCDCDCDCDCDCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECCCCCCCCCCCC +CCCCCCCCCCCCC3C3C3C3C3C3C3C3C3BDBDBDBDBDBDBDBDBDBBBBBBBBBBBBBBBBBBB9B9B9B9B9B9 +B9B9B9BBBBBBBBBBBBBBBBBBBBBBBBB9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5 +B5B5B5B1B1B1B1B1B1B1B1B1B1B1B1888888888888888888666666666666666666676767676767 +6767676969696969696969696767676767676767676767676868686868686868686E6E6E6E6E6E +6E6E6E7373737373737373737878787878787878787B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7C7C +7C7C7C7A7A7A7A7A7A7A7A7A7777777777777777777777777777777777777777777B7B7B7B7B7B +7B7B7B8080808080808080808080808080808080808484848484848484848A8A8A8A8A8A8A8A8A +8A8A8A929292929292929292989898989898989898959595959595959595959595959595959595 +9C9C9C9C9C9C9C9C9C9C9C9CA4A4A4A4A4A4A4A4A4AFAFAFAFAFAFAFAFAFB1B1B1B1B1B1B1B1B1 +B3B3B3B3B3B3B3B3B3B3B3B3B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2B7B7B7B7B7B7B7B7B7 +BABABABABABABABABAB5B5B5B5B5B5B5B5B5B5B5B5B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2 +B4B4B4B4B4B4B4B4B4ABABABABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAACACACACACACACACAC +A4A4A4A4A4A4A4A4A49595959595959595958B8B8B8B8B8B8B8B8B8B8B8B8C8C8C8C8C8C8C8C8C +929292929292929292949494949494949494939393939393939393959595959595959595959595 +A2A2A2A2A2A2A2A2A2C4C4C4C4C4C4C4C4C4E8E9E8E8E9E8E8E9E8FBFBFBFBFBFBFBFBFBFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFAFAFAFAFAFAFAFAFAD0D0D0 +D0D0D0D0D0D0D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3 +D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCCCCCCCCCCCCCCCCCCCECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECCCCCCCCCCCCCCCCCCCCCCCCC3C3C3C3C3C3 +C3C3C3BDBDBDBDBDBDBDBDBDBBBBBBBBBBBBBBBBBBB9B9B9B9B9B9B9B9B9BBBBBBBBBBBBBBBBBB +BBBBBBB9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B1B1B1B1B1B1B1B1B1 +B1B1B1888888888888888888666666666666666666676767676767676767696969696969696969 +6767676767676767676767676868686868686868686E6E6E6E6E6E6E6E6E737373737373737373 +7878787878787878787B7B7B7B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C7A7A7A7A7A7A7A7A7A +7777777777777777777777777777777777777777777B7B7B7B7B7B7B7B7B808080808080808080 +8080808080808080808484848484848484848A8A8A8A8A8A8A8A8A8A8A8A929292929292929292 +9898989898989898989595959595959595959595959595959595959C9C9C9C9C9C9C9C9C9C9C9C +A4A4A4A4A4A4A4A4A4AFAFAFAFAFAFAFAFAFB1B1B1B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3B3B3B3 +B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2B7B7B7B7B7B7B7B7B7BABABABABABABABABAB5B5B5 +B5B5B5B5B5B5B5B5B5B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B2B4B4B4B4B4B4B4B4B4ABABAB +ABABABABABABAAAAAAAAAAAAAAAAAAAAAAAAACACACACACACACACACA4A4A4A4A4A4A4A4A4959595 +9595959595958B8B8B8B8B8B8B8B8B8B8B8B8C8C8C8C8C8C8C8C8C929292929292929292949494 +949494949494939393939393939393959595959595959595959595A2A2A2A2A2A2A2A2A2C4C4C4 +C4C4C4C4C4C4E8E9E8E8E9E8E8E9E8FBFBFBFBFBFBFBFBFBFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFAFAFAFAFAFAFAFAFAD0D0D0D0D0D0D0D0D0D4D4D4D4D4D4 +D4D4D4D5D5D5D5D5D5D5D5D5D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3 +D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCF +CDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCC9C9C9C9C9C9C9C9C9 +C4C4C4C4C4C4C4C4C4C2C2C2C2C2C2C2C2C2C2C2C2BDBDBDBDBDBDBDBDBDB9B9B9B9B9B9B9B9B9 +BABABABABABABABABAB9B9B9B9B9B9B9B9B9BDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBE +B8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8 +777777777777777777616161616161616161646464646464646464666666666666666666666666 +6363636363636363636868686868686868686F6F6F6F6F6F6F6F6F767676767676767676797979 +797979797979797979797979797979797979787878787878787878767676767676767676757575 +7575757575757575757A7A7A7A7A7A7A7A7A808080808080808080828282828282828282858585 +8585858585858A8A8A8A8A8A8A8A8A8A8A8A909090909090909090919191919191919191939393 +939393939393949494949494949494949494949494949494949494979797979797979797A3A3A3 +A3A3A3A3A3A3A9A9A9A9A9A9A9A9A9ABABABABABABABABABABABABACACACACACACACACACAFAFAF +AFAFAFAFAFAFB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0ABABABABABABABABABABABABABABAB +ABABABABABABABABABABABABABABABA8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A1A4A4A4A4A4A4 +A4A4A4A4A4A4A1A1A1A1A1A1A1A1A19797979797979797978C8C8C8C8C8C8C8C8C888888888888 +8888888888888F8F8F8F8F8F8F8F8F939393939393939393939393939393939393919191919191 +9191918C8C8C8C8C8C8C8C8C8C8C8C888888888888888888989898989898989898BEBEBEBEBEBE +BEBEBEE7E7E7E7E7E7E7E7E7FBFBFBFBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEF9F9F9F9F9F9F9F9F9CACACACACACACACACAD4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5 +D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCDCDCD +CCCCCCCCCCCCCCCCCCCECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCC9C9C9C9C9C9C9C9C9C4C4C4C4C4C4C4C4C4C2C2C2 +C2C2C2C2C2C2C2C2C2BDBDBDBDBDBDBDBDBDB9B9B9B9B9B9B9B9B9BABABABABABABABABAB9B9B9 +B9B9B9B9B9B9BDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEB8B8B8B8B8B8B8B8B8B6B6B6 +B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8777777777777777777616161 +616161616161646464646464646464666666666666666666666666636363636363636363686868 +6868686868686F6F6F6F6F6F6F6F6F767676767676767676797979797979797979797979797979 +7979797979797878787878787878787676767676767676767575757575757575757575757A7A7A +7A7A7A7A7A7A8080808080808080808282828282828282828585858585858585858A8A8A8A8A8A +8A8A8A8A8A8A909090909090909090919191919191919191939393939393939393949494949494 +949494949494949494949494949494979797979797979797A3A3A3A3A3A3A3A3A3A9A9A9A9A9A9 +A9A9A9ABABABABABABABABABABABABACACACACACACACACACAFAFAFAFAFAFAFAFAFB0B0B0B0B0B0 +B0B0B0B0B0B0B0B0B0B0B0B0ABABABABABABABABABABABABABABABABABABABABABABABABABABAB +ABABABA8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4A4A4A4A1A1A1A1A1A1 +A1A1A19797979797979797978C8C8C8C8C8C8C8C8C8888888888888888888888888F8F8F8F8F8F +8F8F8F9393939393939393939393939393939393939191919191919191918C8C8C8C8C8C8C8C8C +8C8C8C888888888888888888989898989898989898BEBEBEBEBEBEBEBEBEE7E7E7E7E7E7E7E7E7 +FBFBFBFBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEF9F9F9F9F9F9F9F9F9 +CACACACACACACACACAD3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2 +D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCECECECECECECECECECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC7C7C7C7C7C7C7C7C7BFBFBF +BFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B2B2B2B2B2B2B2B2B2ADADADADADADADADADADADADB0B0B0 +B0B0B0B0B0B0B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9 +B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFBABABABABABABABABAB8B8B8B8B8B8B8B8B8B5B5B5B5B5B5 +B5B5B5B5B5B5B8B8B8B8B8B8B8B8B89D9D9D9D9D9D9D9D9D6D6D6D6D6D6D6D6D6D5E5E5E5E5E5E +5E5E5E6262626262626262626262626262626262626262625F605F5F605F5F605F656565656565 +6565656F6F6F6F6F6F6F6F6F757575757575757575757575767676767676767676757575757575 +7575757474747474747474747575757575757575757575757878787878787878787D7D7D7D7D7D +7D7D7D8080808080808080808383838383838383838787878787878787878787878C8C8C8C8C8C +8C8C8C8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8F8F8F8F8F8F8F8F8F +8F8F8F9191919191919191919B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A6A6A6A6A6A6A6A6A6 +A4A4A4A4A4A4A4A4A4A4A4A4A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A29E9E9E9E9E9E9E9E9E +9898989898989898989999999999999999999999999494949494949494948C8C8C8C8C8C8C8C8C +848484848484848484898989898989898989898989919191919191919191939393939393939393 +9292929292929292928F8F8F8F8F8F8F8F8F848484848484848484848484757575757575757575 +808080808080808080979797979797979797B9B9B9B9B9B9B9B9B9DFE0DFDFE0DFDFE0DFDFE0DF +F6F6F6F6F6F6F6F6F6FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDD3D3D3 +D3D3D3D3D3D3D3D3D3D3D3D3D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D1D1D1 +D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECE +CECECECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDC7C7C7C7C7C7C7C7C7BFBFBFBFBFBFBFBFBFB8B8B8B8B8B8 +B8B8B8B2B2B2B2B2B2B2B2B2ADADADADADADADADADADADADB0B0B0B0B0B0B0B0B0B6B6B6B6B6B6 +B6B6B6B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BFBFBFBFBFBF +BFBFBFBABABABABABABABABAB8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8 +B8B8B89D9D9D9D9D9D9D9D9D6D6D6D6D6D6D6D6D6D5E5E5E5E5E5E5E5E5E626262626262626262 +6262626262626262626262625F605F5F605F5F605F6565656565656565656F6F6F6F6F6F6F6F6F +757575757575757575757575767676767676767676757575757575757575747474747474747474 +7575757575757575757575757878787878787878787D7D7D7D7D7D7D7D7D808080808080808080 +8383838383838383838787878787878787878787878C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D +8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8F8F8F8F8F8F8F8F8F8F8F8F919191919191919191 +9B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +A3A3A3A3A3A3A3A3A3A4A4A4A4A4A4A4A4A4A6A6A6A6A6A6A6A6A6A4A4A4A4A4A4A4A4A4A4A4A4 +A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A29E9E9E9E9E9E9E9E9E989898989898989898999999 +9999999999999999999494949494949494948C8C8C8C8C8C8C8C8C848484848484848484898989 +8989898989898989899191919191919191919393939393939393939292929292929292928F8F8F +8F8F8F8F8F8F848484848484848484848484757575757575757575808080808080808080979797 +979797979797B9B9B9B9B9B9B9B9B9DFE0DFDFE0DFDFE0DFDFE0DFF6F6F6F6F6F6F6F6F6FDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDF9F9F9F9F9F9F9F9F9BDBDBDBDBDBDBDBDBDD3D3D3D3D3D3D3D3D3D3D3D3D3D3D3 +D3D3D3D2D2D2D2D2D2D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDC7C7C7C7C7C7C7C7C7BFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B2B2B2B2B2B2B2B2B2 +ADADADADADADADADADADADADB0B0B0B0B0B0B0B0B0B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8 +B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFBABABABABABABABABA +B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B5B5B5B8B8B8B8B8B8B8B8B89D9D9D9D9D9D9D9D9D +6D6D6D6D6D6D6D6D6D5E5E5E5E5E5E5E5E5E626262626262626262626262626262626262626262 +5F605F5F605F5F605F6565656565656565656F6F6F6F6F6F6F6F6F757575757575757575757575 +767676767676767676757575757575757575747474747474747474757575757575757575757575 +7878787878787878787D7D7D7D7D7D7D7D7D808080808080808080838383838383838383878787 +8787878787878787878C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D +8D8D8D8D8D8D8F8F8F8F8F8F8F8F8F8F8F8F9191919191919191919B9B9B9B9B9B9B9B9B9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3A4A4A4 +A4A4A4A4A4A4A6A6A6A6A6A6A6A6A6A4A4A4A4A4A4A4A4A4A4A4A4A2A2A2A2A2A2A2A2A2A2A2A2 +A2A2A2A2A2A29E9E9E9E9E9E9E9E9E989898989898989898999999999999999999999999949494 +9494949494948C8C8C8C8C8C8C8C8C848484848484848484898989898989898989898989919191 +9191919191919393939393939393939292929292929292928F8F8F8F8F8F8F8F8F848484848484 +848484848484757575757575757575808080808080808080979797979797979797B9B9B9B9B9B9 +B9B9B9DFE0DFDFE0DFDFE0DFDFE0DFF6F6F6F6F6F6F6F6F6FDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9 +F9F9F9BDBDBDBDBDBDBDBDBDD2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1 +D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCECECECECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCBCBCBCBCBCBCBCBCBCBCBCBBFBFBFBFBFBFBFBFBF +AFAFAFAFAFAFAFAFAFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5A5A5A5A5A5A5A5A5A5A5A5 +A2A2A2A2A2A2A2A2A2B2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8BBBBBB +BBBBBBBBBBBBBBBBBBBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B7B7B7 +B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B5B5B5B5B5B5B5B5B58F8F8F8F8F8F8F8F8F666666 +6666666666665C5C5C5C5C5C5C5C5C5C5C5C6161616161616161615C5C5C5C5C5C5C5C5C5C5C5C +5C5C5C5C5C5C6565656565656565656F6F6F6F6F6F6F6F6F6F6F6F737373737373737373757575 +7575757575757575757575757575757575757575757575757575757777777777777777777B7B7B +7B7B7B7B7B7B7F7F7F7F7F7F7F7F7F818181818181818181828282828282828282828282848484 +848484848484858585858585858585828282828282828282828282828282828282898989898989 +898989898989909090909090909090969696969696969696989898989898989898989898989898 +9898989898989090909090909090909494949494949494949898989898989898989D9D9D9D9D9D +9D9D9D9C9C9C9C9C9C9C9C9C9C9C9C9797979797979797979090909090909090908D8D8D8D8D8D +8D8D8D8D8D8D8D8D8D8D8D8D8C8C8C8C8C8C8C8C8C8C8C8C898989898989898989818181818181 +8181818383838383838383838C8C8C8C8C8C8C8C8C8C8C8C909090909090909090939393939393 +9393939292929292929292928C8C8C8C8C8C8C8C8C7E7E7E7E7E7E7E7E7E7E7E7E686868686868 +6868686E6E6E6E6E6E6E6E6E7F7F7F7F7F7F7F7F7F959595959595959595B2B2B2B2B2B2B2B2B2 +B2B2B2D6D6D6D6D6D6D6D6D6EFEFEFEFEFEFEFEFEFF9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFF +FEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7 +D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECE +CECECECECECECECECED0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCBCBCBCBCBCBCBCBCBCBCBCBBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFAAAAAA +AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5A5A5A5A5A5A5A5A5A5A5A5A2A2A2A2A2A2A2A2A2B2B2B2 +B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBBBBBBBBEBEBE +BEBEBEBEBEBEBFBFBFBFBFBFBFBFBFB8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7 +B7B7B7B7B7B7B5B5B5B5B5B5B5B5B58F8F8F8F8F8F8F8F8F6666666666666666665C5C5C5C5C5C +5C5C5C5C5C5C6161616161616161615C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C656565656565 +6565656F6F6F6F6F6F6F6F6F6F6F6F737373737373737373757575757575757575757575757575 +7575757575757575757575757575757777777777777777777B7B7B7B7B7B7B7B7B7F7F7F7F7F7F +7F7F7F818181818181818181828282828282828282828282848484848484848484858585858585 +858585828282828282828282828282828282828282898989898989898989898989909090909090 +909090969696969696969696989898989898989898989898989898989898989898909090909090 +9090909494949494949494949898989898989898989D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C +9C9C9C9797979797979797979090909090909090908D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D +8C8C8C8C8C8C8C8C8C8C8C8C898989898989898989818181818181818181838383838383838383 +8C8C8C8C8C8C8C8C8C8C8C8C909090909090909090939393939393939393929292929292929292 +8C8C8C8C8C8C8C8C8C7E7E7E7E7E7E7E7E7E7E7E7E6868686868686868686E6E6E6E6E6E6E6E6E +7F7F7F7F7F7F7F7F7F959595959595959595B2B2B2B2B2B2B2B2B2B2B2B2D6D6D6D6D6D6D6D6D6 +EFEFEFEFEFEFEFEFEFF9F9F9F9F9F9F9F9F9FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFEFEFE +FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFF +FFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7D2D2D2D2D2D2D2D2D2D1D1D1 +D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCF +CFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECE +CECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC8C8C8C8C8C8 +C8C8C8C8C8C8BABABABABABABABABAAAAAAAAAAAAAAAAAAAABABABABABABABABABAFAFAFAFAFAF +AFAFAFA8A8A8A8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9FACACACACACACACACACB6B6B6B6B6B6 +B6B6B6B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDC0C0C0C0C0C0 +C0C0C0BEBEBEBEBEBEBEBEBEB9B9B9B9B9B9B9B9B9B9B9B9B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6 +B6B6B6AEAEAEAEAEAEAEAEAE8989898989898989896767676767676767676767675E5E5E5E5E5E +5E5E5E5D5D5D5D5D5D5D5D5D5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B656565656565656565 +6565656E6E6E6E6E6E6E6E6E757575757575757575767676767676767676757575757575757575 +7575757777777777777777777B7B7B7B7B7B7B7B7B7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E +7E7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F8181818181818181817F7F7F7F7F7F7F7F7F +7D7D7D7D7D7D7D7D7D8181818181818181818181818989898989898989898F8F8F8F8F8F8F8F8F +9191919191919191919292929292929292929292928C8C8C8C8C8C8C8C8C8A8A8A8A8A8A8A8A8A +8C8C8C8C8C8C8C8C8C8F8F8F8F8F8F8F8F8F8D8D8D8D8D8D8D8D8D8D8D8D8A8A8A8A8A8A8A8A8A +8585858585858585858383838383838383838181818181818181817E7E7E7E7E7E7E7E7E7E7E7E +7B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C8686868686868686868E8E8E8E8E8E8E8E8E8E8E8E +9191919191919191919292929292929292929090909090909090908B8B8B8B8B8B8B8B8B7D7D7D +7D7D7D7D7D7D7D7D7D6565656565656565656262626262626262626A6A6A6A6A6A6A6A6A797979 +7979797979798F8F8F8F8F8F8F8F8F8F8F8FA8A8A8A8A8A8A8A8A8C1C1C1C1C1C1C1C1C1E4E4E4 +E4E4E4E4E4E4FAFAFAFAFAFAFAFAFAFAFAFAFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFE +FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFAFAFA +FAFAFAFAFAFAD7D7D7D7D7D7D7D7D7D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFD0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0CFCFCFCFCFCFCFCFCFCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC8C8C8C8C8C8C8C8C8C8C8C8BABABABABABA +BABABAAAAAAAAAAAAAAAAAAAABABABABABABABABABAFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A8 +A8A8A89F9F9F9F9F9F9F9F9FACACACACACACACACACB6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8 +BBBBBBBBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDC0C0C0C0C0C0C0C0C0BEBEBEBEBEBEBEBEBE +B9B9B9B9B9B9B9B9B9B9B9B9B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6AEAEAEAEAEAEAEAEAE +8989898989898989896767676767676767676767675E5E5E5E5E5E5E5E5E5D5D5D5D5D5D5D5D5D +5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B5B6565656565656565656565656E6E6E6E6E6E6E6E6E +757575757575757575767676767676767676757575757575757575757575777777777777777777 +7B7B7B7B7B7B7B7B7B7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E +7F7F7F7F7F7F7F7F7F8181818181818181817F7F7F7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D818181 +8181818181818181818989898989898989898F8F8F8F8F8F8F8F8F919191919191919191929292 +9292929292929292928C8C8C8C8C8C8C8C8C8A8A8A8A8A8A8A8A8A8C8C8C8C8C8C8C8C8C8F8F8F +8F8F8F8F8F8F8D8D8D8D8D8D8D8D8D8D8D8D8A8A8A8A8A8A8A8A8A858585858585858585838383 +8383838383838181818181818181817E7E7E7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B7C7C7C +7C7C7C7C7C7C8686868686868686868E8E8E8E8E8E8E8E8E8E8E8E919191919191919191929292 +9292929292929090909090909090908B8B8B8B8B8B8B8B8B7D7D7D7D7D7D7D7D7D7D7D7D656565 +6565656565656262626262626262626A6A6A6A6A6A6A6A6A7979797979797979798F8F8F8F8F8F +8F8F8F8F8F8FA8A8A8A8A8A8A8A8A8C1C1C1C1C1C1C1C1C1E4E4E4E4E4E4E4E4E4FAFAFAFAFAFA +FAFAFAFAFAFAFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFAFAFAFAFAFAFAFAFAD7D7D7D7D7D7 +D7D7D7D2D2D2D2D2D2D2D2D2D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCF +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCC8C8C8C8C8C8C8C8C8C8C8C8BABABABABABABABABAAAAAAAAAAAAAAAAAAA +ABABABABABABABABABAFAFAFAFAFAFAFAFAFA8A8A8A8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F +ACACACACACACACACACB6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBBBBBBB +BDBDBDBDBDBDBDBDBDC0C0C0C0C0C0C0C0C0BEBEBEBEBEBEBEBEBEB9B9B9B9B9B9B9B9B9B9B9B9 +B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6AEAEAEAEAEAEAEAEAE898989898989898989676767 +6767676767676767675E5E5E5E5E5E5E5E5E5D5D5D5D5D5D5D5D5D5B5B5B5B5B5B5B5B5B5B5B5B +5B5B5B5B5B5B6565656565656565656565656E6E6E6E6E6E6E6E6E757575757575757575767676 +7676767676767575757575757575757575757777777777777777777B7B7B7B7B7B7B7B7B7D7D7D +7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F818181 +8181818181817F7F7F7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D818181818181818181818181898989 +8989898989898F8F8F8F8F8F8F8F8F9191919191919191919292929292929292929292928C8C8C +8C8C8C8C8C8C8A8A8A8A8A8A8A8A8A8C8C8C8C8C8C8C8C8C8F8F8F8F8F8F8F8F8F8D8D8D8D8D8D +8D8D8D8D8D8D8A8A8A8A8A8A8A8A8A858585858585858585838383838383838383818181818181 +8181817E7E7E7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C868686868686 +8686868E8E8E8E8E8E8E8E8E8E8E8E919191919191919191929292929292929292909090909090 +9090908B8B8B8B8B8B8B8B8B7D7D7D7D7D7D7D7D7D7D7D7D656565656565656565626262626262 +6262626A6A6A6A6A6A6A6A6A7979797979797979798F8F8F8F8F8F8F8F8F8F8F8FA8A8A8A8A8A8 +A8A8A8C1C1C1C1C1C1C1C1C1E4E4E4E4E4E4E4E4E4FAFAFAFAFAFAFAFAFAFAFAFAFDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FFFFFFFFFFFFFFFFFFFFFFFFFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFAFAFAFAFAFAFAFAFAD7D7D7D7D7D7D7D7D7D1D1D1D1D1D1D1D1D1 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCF +CECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECE +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC6C6C6 +C6C6C6C6C6C6C6C6C6B8B8B8B8B8B8B8B8B8ACACACACACACACACACADADADADADADADADADADADAD +ADADADADADADAAAAAAAAAAAAAAAAAAAAAAAAA2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A9A9A9 +A9A9A9A9A9A9B1B1B1B1B1B1B1B1B1B7B7B7B7B7B7B7B7B7B7B7B7BEBEBEBEBEBEBEBEBEBEBEBE +BEBEBEBEBEBEC3C3C3C3C3C3C3C3C3BBBBBBBBBBBBBBBBBBBBBBBBB9B9B9B9B9B9B9B9B9B4B4B4 +B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6AAAAAAAAAAAAAAAAAA8787878787878787878787876B6B6B +6B6B6B6B6B6B5E5E5E5E5E5E5E5E5E5C5C5C5C5C5C5C5C5C595959595959595959595959595959 +5959595959596262626262626262626C6C6C6C6C6C6C6C6C727272727272727272737373737373 +737373737373757575757575757575767676767676767676777777777777777777767676767676 +7676767878787878787878787878787B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A797979797979 +7979797A7A7A7A7A7A7A7A7A7979797979797979797979797A7A7A7A7A7A7A7A7A7D7D7D7D7D7D +7D7D7D848484848484848484888888888888888888888888858585858585858585828282828282 +828282828282828282828282818181818181818181808080808080808080808080808080808080 +8080807D7D7D7D7D7D7D7D7D7A7A7A7A7A7A7A7A7A767676767676767676737373737373737373 +7373737474747474747474748080808080808080808B8B8B8B8B8B8B8B8B8F8F8F8F8F8F8F8F8F +8F8F8F9292929292929292929090909090909090908E8E8E8E8E8E8E8E8E8C8C8C8C8C8C8C8C8C +7F7F7F7F7F7F7F7F7F7F7F7F6666666666666666665F605F5F605F5F605F626262626262626262 +676767676767676767747474747474747474747474868686868686868686A0A0A0A0A0A0A0A0A0 +D3D3D3D3D3D3D3D3D3F7F7F7F7F7F7F7F7F7F7F7F7FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +F9F9F9F9F9F9F9F9F9CACACACACACACACACAD1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCECECECECECECECECECFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCECECECECECECECECECBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC6C6C6C6C6C6C6C6C6C6C6C6B8B8B8 +B8B8B8B8B8B8ACACACACACACACACACADADADADADADADADADADADADADADADADADADAAAAAAAAAAAA +AAAAAAAAAAAAA2A2A2A2A2A2A2A2A2A1A1A1A1A1A1A1A1A1A9A9A9A9A9A9A9A9A9B1B1B1B1B1B1 +B1B1B1B7B7B7B7B7B7B7B7B7B7B7B7BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEC3C3C3C3C3C3 +C3C3C3BBBBBBBBBBBBBBBBBBBBBBBBB9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6 +B6B6B6AAAAAAAAAAAAAAAAAA8787878787878787878787876B6B6B6B6B6B6B6B6B5E5E5E5E5E5E +5E5E5E5C5C5C5C5C5C5C5C5C595959595959595959595959595959595959595959626262626262 +6262626C6C6C6C6C6C6C6C6C727272727272727272737373737373737373737373757575757575 +757575767676767676767676777777777777777777767676767676767676787878787878787878 +7878787B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7979797979797979797A7A7A7A7A7A7A7A7A +7979797979797979797979797A7A7A7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D848484848484848484 +888888888888888888888888858585858585858585828282828282828282828282828282828282 +8181818181818181818080808080808080808080808080808080808080807D7D7D7D7D7D7D7D7D +7A7A7A7A7A7A7A7A7A767676767676767676737373737373737373737373747474747474747474 +8080808080808080808B8B8B8B8B8B8B8B8B8F8F8F8F8F8F8F8F8F8F8F8F929292929292929292 +9090909090909090908E8E8E8E8E8E8E8E8E8C8C8C8C8C8C8C8C8C7F7F7F7F7F7F7F7F7F7F7F7F +6666666666666666665F605F5F605F5F605F626262626262626262676767676767676767747474 +747474747474747474868686868686868686A0A0A0A0A0A0A0A0A0D3D3D3D3D3D3D3D3D3F7F7F7 +F7F7F7F7F7F7F7F7F7FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9CACACA +CACACACACACAD1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECE +CECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECE +CECECECBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCC6C6C6C6C6C6C6C6C6C6C6C6B8B8B8B8B8B8B8B8B8ACACACACACAC +ACACACADADADADADADADADADADADADADADADADADADAAAAAAAAAAAAAAAAAAAAAAAAA2A2A2A2A2A2 +A2A2A2A1A1A1A1A1A1A1A1A1A9A9A9A9A9A9A9A9A9B1B1B1B1B1B1B1B1B1B7B7B7B7B7B7B7B7B7 +B7B7B7BEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEC3C3C3C3C3C3C3C3C3BBBBBBBBBBBBBBBBBB +BBBBBBB9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6AAAAAAAAAAAAAAAAAA +8787878787878787878787876B6B6B6B6B6B6B6B6B5E5E5E5E5E5E5E5E5E5C5C5C5C5C5C5C5C5C +5959595959595959595959595959595959595959596262626262626262626C6C6C6C6C6C6C6C6C +727272727272727272737373737373737373737373757575757575757575767676767676767676 +7777777777777777777676767676767676767878787878787878787878787B7B7B7B7B7B7B7B7B +7A7A7A7A7A7A7A7A7A7979797979797979797A7A7A7A7A7A7A7A7A797979797979797979797979 +7A7A7A7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D848484848484848484888888888888888888888888 +858585858585858585828282828282828282828282828282828282818181818181818181808080 +8080808080808080808080808080808080807D7D7D7D7D7D7D7D7D7A7A7A7A7A7A7A7A7A767676 +7676767676767373737373737373737373737474747474747474748080808080808080808B8B8B +8B8B8B8B8B8B8F8F8F8F8F8F8F8F8F8F8F8F9292929292929292929090909090909090908E8E8E +8E8E8E8E8E8E8C8C8C8C8C8C8C8C8C7F7F7F7F7F7F7F7F7F7F7F7F6666666666666666665F605F +5F605F5F605F626262626262626262676767676767676767747474747474747474747474868686 +868686868686A0A0A0A0A0A0A0A0A0D3D3D3D3D3D3D3D3D3F7F7F7F7F7F7F7F7F7F7F7F7FDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9CACACACACACACACACAD1D1D1D1D1D1 +D1D1D1D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCF +CFCFCFCECECECECECECECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCF +CFCFCFCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECBCBCBCBCBCBCBCBCB +CCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCB +C2C2C2C2C2C2C2C2C2C2C2C2B5B5B5B5B5B5B5B5B5ABABABABABABABABABACACACACACACACACAC +AEAEAEAEAEAEAEAEAEAAAAAAAAAAAAAAAAAAAAAAAAA1A1A1A1A1A1A1A1A19B9B9B9B9B9B9B9B9B +9D9D9D9D9D9D9D9D9DA7A7A7A7A7A7A7A7A7B5B5B5B5B5B5B5B5B5B5B5B5BBBBBBBBBBBBBBBBBB +BEBEBEBEBEBEBEBEBEC1C1C1C1C1C1C1C1C1C3C3C3C3C3C3C3C3C3C3C3C3BBBBBBBBBBBBBBBBBB +BCBCBCBCBCBCBCBCBCB4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6A8A8A8A8A8A8A8A8A8A8A8A8 +8D8D8D8D8D8D8D8D8D7676767676767676766464646464646464645A5A5A5A5A5A5A5A5A565656 +5656565656565656565656565656565656565D5D5D5D5D5D5D5D5D6767676767676767676F6F6F +6F6F6F6F6F6F6F6F6F7171717171717171716E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6F6F6F +6F6F6F6F6F6F737373737373737373737373757575757575757575727272727272727272707070 +707070707070737373737373737373767676767676767676767676737373737373737373707070 +7070707070707979797979797979797E7E7E7E7E7E7E7E7E7E7E7E7D7D7D7D7D7D7D7D7D7A7A7A +7A7A7A7A7A7A777777777777777777767676767676767676777777777777777777777777767676 +7676767676767373737373737373737171717171717171716C6C6C6C6C6C6C6C6C6D6D6D6D6D6D +6D6D6D6D6D6D7B7B7B7B7B7B7B7B7B888888888888888888909090909090909090919191919191 +9191919191919191919191919191918E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D8C8C8C8C8C8C +8C8C8C878787878787878787878787787878787878787878696969696969696969626262626262 +626262626262626262626262696969696969696969696969757575757575757575A5A5A5A5A5A5 +A5A5A5DBDBDBDBDBDBDBDBDBF5F5F5F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFAFAFAFAFAFAFAFAFAD4D4D4D4D4D4D4D4D4D1D1D1D1D1D1D1D1D1D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCECECECECECECECECE +CFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCC +CDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBC2C2C2C2C2C2C2C2C2C2C2C2 +B5B5B5B5B5B5B5B5B5ABABABABABABABABABACACACACACACACACACAEAEAEAEAEAEAEAEAEAAAAAA +AAAAAAAAAAAAAAAAAAA1A1A1A1A1A1A1A1A19B9B9B9B9B9B9B9B9B9D9D9D9D9D9D9D9D9DA7A7A7 +A7A7A7A7A7A7B5B5B5B5B5B5B5B5B5B5B5B5BBBBBBBBBBBBBBBBBBBEBEBEBEBEBEBEBEBEC1C1C1 +C1C1C1C1C1C1C3C3C3C3C3C3C3C3C3C3C3C3BBBBBBBBBBBBBBBBBBBCBCBCBCBCBCBCBCBCB4B4B4 +B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6A8A8A8A8A8A8A8A8A8A8A8A88D8D8D8D8D8D8D8D8D767676 +7676767676766464646464646464645A5A5A5A5A5A5A5A5A565656565656565656565656565656 +5656565656565D5D5D5D5D5D5D5D5D6767676767676767676F6F6F6F6F6F6F6F6F6F6F6F717171 +7171717171716E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6E6F6F6F6F6F6F6F6F6F737373737373 +737373737373757575757575757575727272727272727272707070707070707070737373737373 +737373767676767676767676767676737373737373737373707070707070707070797979797979 +7979797E7E7E7E7E7E7E7E7E7E7E7E7D7D7D7D7D7D7D7D7D7A7A7A7A7A7A7A7A7A777777777777 +777777767676767676767676777777777777777777777777767676767676767676737373737373 +7373737171717171717171716C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D6D6D6D7B7B7B7B7B7B +7B7B7B888888888888888888909090909090909090919191919191919191919191919191919191 +9191918E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D8C8C8C8C8C8C8C8C8C878787878787878787 +878787787878787878787878696969696969696969626262626262626262626262626262626262 +696969696969696969696969757575757575757575A5A5A5A5A5A5A5A5A5DBDBDBDBDBDBDBDBDB +F5F5F5F5F5F5F5F5F5F5F5F5FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFAFAFAFAFAFAFAFAFA +D4D4D4D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECE +CECECECECECECECECECFCFCFCFCFCFCFCFCFCECECECECECECECECECFCFCFCFCFCFCFCFCFD0D0D0 +D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCECECE +CECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCECECE +CECECECECECECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBC8C8C8C8C8C8C8C8C8BCBCBCBCBCBCBCBCBCBCBCBCB0B1B0B0B1B0B0B1B0AAAAAA +AAAAAAAAAAAAAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFABABABABABABABABABABABABA1A1A1 +A1A1A1A1A1A19A9A9A9A9A9A9A9A9A989898989898989898999999999999999999B1B1B1B1B1B1 +B1B1B1B1B1B1B8B8B8B8B8B8B8B8B8BEBEBEBEBEBEBEBEBEBDBDBDBDBDBDBDBDBDC5C5C5C5C5C5 +C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1BDBDBDBDBDBDBDBDBDBABABABABABABABABAB2B2B2B2B2B2 +B2B2B2B8B8B8B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8929292929292929292808080808080 +808080666666666666666666575757575757575757575757545454545454545454545454545454 +5454545858585858585858586464646464646464646464646B6B6B6B6B6B6B6B6B6B6B6B6B6B6B +6B6B6B6B6B6B6B6B6B6B6B6B6C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D6D6D6D6E6E6E6E6E6E +6E6E6E6C6C6C6C6C6C6C6C6C6B6B6B6B6B6B6B6B6B6E6E6E6E6E6E6E6E6E727272727272727272 +7272726F6F6F6F6F6F6F6F6F6B6B6B6B6B6B6B6B6B707070707070707070717171717171717171 +7171717070707070707070706F6F6F6F6F6F6F6F6F6E6E6E6E6E6E6E6E6E6B6B6B6B6B6B6B6B6B +6C6C6C6C6C6C6C6C6C6C6C6C6B6B6B6B6B6B6B6B6B6A6A6A6A6A6A6A6A6A676767676767676767 +6767676767676767677474747474747474747474748484848484848484848C8C8C8C8C8C8C8C8C +9090909090909090909292929292929292929292929191919191919191918F8F8F8F8F8F8F8F8F +8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8B8B8B8B8B8B8B8B8B8B8B8B878787878787878787 +838383838383838383707070707070707070646464646464646464666666666666666666666666 +777777777777777777B1B1B1B1B1B1B1B1B1E5E5E5E5E5E5E5E5E5F1F1F1F1F1F1F1F1F1F1F1F1 +FBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFE +FEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFBFBFBFBFBFBFBFBFBE0E0E0E0E0E0E0E0E0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECFCFCF +CFCFCFCFCFCFCECECECECECECECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0CFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCECECECECECECECECECDCDCDCDCDCD +CDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCECECECECECECECECECCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC8C8C8C8C8C8 +C8C8C8BCBCBCBCBCBCBCBCBCBCBCBCB0B1B0B0B1B0B0B1B0AAAAAAAAAAAAAAAAAAAFAFAFAFAFAF +AFAFAFAFAFAFAFAFAFAFAFAFABABABABABABABABABABABABA1A1A1A1A1A1A1A1A19A9A9A9A9A9A +9A9A9A989898989898989898999999999999999999B1B1B1B1B1B1B1B1B1B1B1B1B8B8B8B8B8B8 +B8B8B8BEBEBEBEBEBEBEBEBEBDBDBDBDBDBDBDBDBDC5C5C5C5C5C5C5C5C5C5C5C5C1C1C1C1C1C1 +C1C1C1BDBDBDBDBDBDBDBDBDBABABABABABABABABAB2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8 +B8B8B8A8A8A8A8A8A8A8A8A8929292929292929292808080808080808080666666666666666666 +575757575757575757575757545454545454545454545454545454545454585858585858585858 +6464646464646464646464646B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B +6C6C6C6C6C6C6C6C6C6D6D6D6D6D6D6D6D6D6D6D6D6E6E6E6E6E6E6E6E6E6C6C6C6C6C6C6C6C6C +6B6B6B6B6B6B6B6B6B6E6E6E6E6E6E6E6E6E7272727272727272727272726F6F6F6F6F6F6F6F6F +6B6B6B6B6B6B6B6B6B707070707070707070717171717171717171717171707070707070707070 +6F6F6F6F6F6F6F6F6F6E6E6E6E6E6E6E6E6E6B6B6B6B6B6B6B6B6B6C6C6C6C6C6C6C6C6C6C6C6C +6B6B6B6B6B6B6B6B6B6A6A6A6A6A6A6A6A6A676767676767676767676767676767676767747474 +7474747474747474748484848484848484848C8C8C8C8C8C8C8C8C909090909090909090929292 +9292929292929292929191919191919191918F8F8F8F8F8F8F8F8F8D8D8D8D8D8D8D8D8D8D8D8D +8D8D8D8D8D8D8B8B8B8B8B8B8B8B8B8B8B8B878787878787878787838383838383838383707070 +707070707070646464646464646464666666666666666666666666777777777777777777B1B1B1 +B1B1B1B1B1B1E5E5E5E5E5E5E5E5E5F1F1F1F1F1F1F1F1F1F1F1F1FBFBFBFBFBFBFBFBFBFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFE +FEFEFEFEFEFEFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFBFBFBFBFBFBFBFBFBE0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCECECECECECE +CECECECFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCDCDCDCDCDCDCDCDCDCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCC +CCCCCCCDCDCDCDCDCDCDCDCDCECECECECECECECECECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC8C8C8C8C8C8C8C8C8BCBCBCBCBCBCBCBCBC +BCBCBCB0B1B0B0B1B0B0B1B0AAAAAAAAAAAAAAAAAAAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF +ABABABABABABABABABABABABA1A1A1A1A1A1A1A1A19A9A9A9A9A9A9A9A9A989898989898989898 +999999999999999999B1B1B1B1B1B1B1B1B1B1B1B1B8B8B8B8B8B8B8B8B8BEBEBEBEBEBEBEBEBE +BDBDBDBDBDBDBDBDBDC5C5C5C5C5C5C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1BDBDBDBDBDBDBDBDBD +BABABABABABABABABAB2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8 +929292929292929292808080808080808080666666666666666666575757575757575757575757 +545454545454545454545454545454545454585858585858585858646464646464646464646464 +6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6B6C6C6C6C6C6C6C6C6C6D6D6D +6D6D6D6D6D6D6D6D6D6E6E6E6E6E6E6E6E6E6C6C6C6C6C6C6C6C6C6B6B6B6B6B6B6B6B6B6E6E6E +6E6E6E6E6E6E7272727272727272727272726F6F6F6F6F6F6F6F6F6B6B6B6B6B6B6B6B6B707070 +7070707070707171717171717171717171717070707070707070706F6F6F6F6F6F6F6F6F6E6E6E +6E6E6E6E6E6E6B6B6B6B6B6B6B6B6B6C6C6C6C6C6C6C6C6C6C6C6C6B6B6B6B6B6B6B6B6B6A6A6A +6A6A6A6A6A6A676767676767676767676767676767676767747474747474747474747474848484 +8484848484848C8C8C8C8C8C8C8C8C909090909090909090929292929292929292929292919191 +9191919191918F8F8F8F8F8F8F8F8F8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8B8B8B8B8B8B +8B8B8B8B8B8B878787878787878787838383838383838383707070707070707070646464646464 +646464666666666666666666666666777777777777777777B1B1B1B1B1B1B1B1B1E5E5E5E5E5E5 +E5E5E5F1F1F1F1F1F1F1F1F1F1F1F1FBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFEFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFBFBFBFBFBFB +FBFBFBE0E0E0E0E0E0E0E0E0CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECE +CECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECECECECECECE +CFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCD +CCCCCCCCCCCCCCCCCCCECECECECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCB +C7C7C7C7C7C7C7C7C7C2C2C2C2C2C2C2C2C2B7B7B7B7B7B7B7B7B7B7B7B7B0B0B0B0B0B0B0B0B0 +ACACACACACACACACACA9A9A9A9A9A9A9A9A9A8A8A8A8A8A8A8A8A8ADADADADADADADADADADADAD +9C9C9C9C9C9C9C9C9C939393939393939393989898989898989898959595959595959595A3A3A3 +A3A3A3A3A3A3A3A3A3B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDBFBFBF +BFBFBFBFBFBFBFBFBFC6C6C6C6C6C6C6C6C6BCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDB8B8B8 +B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7A4A4A4A4A4A4A4A4A4989898 +9898989898988686868686868686866464646464646464646464645151515151515151514F4F4F +4F4F4F4F4F4F5151515151515151515555555555555555555555555C5C5C5C5C5C5C5C5C646464 +646464646464686868686868686868696969696969696969676767676767676767676767676767 +676767676767666666666666666666656565656565656565666666666666666666686868686868 +6868686868686767676767676767676868686868686868686B6B6B6B6B6B6B6B6B6A6A6A6A6A6A +6A6A6A6A6A6A686868686868686868676767676767676767676767676767676767666666666666 +6666666363636363636363636363635F605F5F605F5F605F5E5E5E5E5E5E5E5E5E636363636363 +6363637070707070707070708080808080808080808080808787878787878787878B8B8B8B8B8B +8B8B8B8F8F8F8F8F8F8F8F8F9090909090909090909090909090909090909090908E8E8E8E8E8E +8E8E8E8E8E8E8E8E8E8E8E8E8C8C8C8C8C8C8C8C8C8585858585858585858585857E7E7E7E7E7E +7E7E7E9090909090909090908484848484848484846D6D6D6D6D6D6D6D6D646464646464646464 +646464787878787878787878B1B1B1B1B1B1B1B1B1EAEAEAEAEAEAEAEAEAF1F1F1F1F1F1F1F1F1 +F1F1F1F9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7 +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECE +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECECECECE +CFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCF +CECECECECECECECECECFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCECECE +CECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBC7C7C7C7C7C7C7C7C7C2C2C2 +C2C2C2C2C2C2B7B7B7B7B7B7B7B7B7B7B7B7B0B0B0B0B0B0B0B0B0ACACACACACACACACACA9A9A9 +A9A9A9A9A9A9A8A8A8A8A8A8A8A8A8ADADADADADADADADADADADAD9C9C9C9C9C9C9C9C9C939393 +939393939393989898989898989898959595959595959595A3A3A3A3A3A3A3A3A3A3A3A3B6B6B6 +B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDBFBFBFBFBFBFBFBFBFBFBFBFC6C6C6 +C6C6C6C6C6C6BCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDB8B8B8B8B8B8B8B8B8B4B4B4B4B4B4 +B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7A4A4A4A4A4A4A4A4A4989898989898989898868686868686 +8686866464646464646464646464645151515151515151514F4F4F4F4F4F4F4F4F515151515151 +5151515555555555555555555555555C5C5C5C5C5C5C5C5C646464646464646464686868686868 +686868696969696969696969676767676767676767676767676767676767676767666666666666 +666666656565656565656565666666666666666666686868686868686868686868676767676767 +6767676868686868686868686B6B6B6B6B6B6B6B6B6A6A6A6A6A6A6A6A6A6A6A6A686868686868 +686868676767676767676767676767676767676767666666666666666666636363636363636363 +6363635F605F5F605F5F605F5E5E5E5E5E5E5E5E5E636363636363636363707070707070707070 +8080808080808080808080808787878787878787878B8B8B8B8B8B8B8B8B8F8F8F8F8F8F8F8F8F +9090909090909090909090909090909090909090908E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E +8C8C8C8C8C8C8C8C8C8585858585858585858585857E7E7E7E7E7E7E7E7E909090909090909090 +8484848484848484846D6D6D6D6D6D6D6D6D646464646464646464646464787878787878787878 +B1B1B1B1B1B1B1B1B1EAEAEAEAEAEAEAEAEAF1F1F1F1F1F1F1F1F1F1F1F1F9F9F9F9F9F9F9F9F9 +FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9C7C7C7C7C7C7C7C7C7CFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCFCFCFCECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBC6C6C6C6C6C6C6C6C6C1C1C1C1C1C1C1C1C1BDBDBDBDBDBDBDBDBDB2B2B2B2B2B2 +B2B2B2B2B2B2AEAEAEAEAEAEAEAEAEAAAAAAAAAAAAAAAAAA9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1 +A1A1A1A6A6A6A6A6A6A6A6A6A6A6A69595959595959595959898989898989898989E9E9E9E9E9E +9E9E9E9B9B9B9B9B9B9B9B9B949494949494949494949494A9A9A9A9A9A9A9A9A9B4B4B4B4B4B4 +B4B4B4B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDBDBDBDC0C0C0C0C0C0C0C0C0C3C3C3C3C3C3 +C3C3C3B8B8B8B8B8B8B8B8B8BEBEBEBEBEBEBEBEBEB7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7 +B7B7B7B7B7B7B7B7B7B7B7B7A2A2A2A2A2A2A2A2A29B9B9B9B9B9B9B9B9B888888888888888888 +8888886262626262626262624E4E4E4E4E4E4E4E4E505050505050505050515151515151515151 +5151515252525252525252525757575757575757575F605F5F605F5F605F646464646464646464 +646464646464646464646464616161616161616161616161616161616161616161616161616161 +6262626262626262626262626262626262626262625E5E5E5E5E5E5E5E5E636363636363636363 +6666666666666666666565656565656565656565655F605F5F605F5F605F5D5D5D5D5D5D5D5D5D +5B5B5B5B5B5B5B5B5B595959595959595959565656565656565656565656575757575757575757 +5F605F5F605F5F605F717171717171717171818181818181818181888888888888888888888888 +8989898989898989898989898989898989898C8C8C8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E8E8E8E +9191919191919191919090909090909090908E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D848484 +8484848484848484847878787878787878788484848484848484847F7F7F7F7F7F7F7F7F6F6F6F +6F6F6F6F6F6F676767676767676767676767787878787878787878A9A9A9A9A9A9A9A9A9E8E8E8 +E8E8E8E8E8E8F5F5F5F5F5F5F5F5F5F5F5F5F9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFCFCFCFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9 +F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECFCFCFCFCFCF +CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC6C6C6C6C6C6 +C6C6C6C1C1C1C1C1C1C1C1C1BDBDBDBDBDBDBDBDBDB2B2B2B2B2B2B2B2B2B2B2B2AEAEAEAEAEAE +AEAEAEAAAAAAAAAAAAAAAAAA9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A6A6A6A6A6A6A6A6A6 +A6A6A69595959595959595959898989898989898989E9E9E9E9E9E9E9E9E9B9B9B9B9B9B9B9B9B +949494949494949494949494A9A9A9A9A9A9A9A9A9B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8 +BDBDBDBDBDBDBDBDBDBDBDBDC0C0C0C0C0C0C0C0C0C3C3C3C3C3C3C3C3C3B8B8B8B8B8B8B8B8B8 +BEBEBEBEBEBEBEBEBEB7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7 +A2A2A2A2A2A2A2A2A29B9B9B9B9B9B9B9B9B888888888888888888888888626262626262626262 +4E4E4E4E4E4E4E4E4E505050505050505050515151515151515151515151525252525252525252 +5757575757575757575F605F5F605F5F605F646464646464646464646464646464646464646464 +616161616161616161616161616161616161616161616161616161626262626262626262626262 +6262626262626262625E5E5E5E5E5E5E5E5E636363636363636363666666666666666666656565 +6565656565656565655F605F5F605F5F605F5D5D5D5D5D5D5D5D5D5B5B5B5B5B5B5B5B5B595959 +5959595959595656565656565656565656565757575757575757575F605F5F605F5F605F717171 +717171717171818181818181818181888888888888888888888888898989898989898989898989 +8989898989898C8C8C8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E8E8E8E919191919191919191909090 +9090909090908E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D848484848484848484848484787878 +7878787878788484848484848484847F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F676767676767 +676767676767787878787878787878A9A9A9A9A9A9A9A9A9E8E8E8E8E8E8E8E8E8F5F5F5F5F5F5 +F5F5F5F5F5F5F9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6 +C6C6C6CFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECE +CECECECECECECECECECECECECECECECECECECECECECFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCF +CFCFCFCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CECECECECECECECECECECECECECECECECECECECECECECECECECECECECECECCCCCCCCCCCCCCCCCC +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC6C6C6C6C6C6C6C6C6C1C1C1C1C1C1C1C1C1 +BDBDBDBDBDBDBDBDBDB2B2B2B2B2B2B2B2B2B2B2B2AEAEAEAEAEAEAEAEAEAAAAAAAAAAAAAAAAAA +9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A6A6A6A6A6A6A6A6A6A6A6A6959595959595959595 +9898989898989898989E9E9E9E9E9E9E9E9E9B9B9B9B9B9B9B9B9B949494949494949494949494 +A9A9A9A9A9A9A9A9A9B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDBDBDBD +C0C0C0C0C0C0C0C0C0C3C3C3C3C3C3C3C3C3B8B8B8B8B8B8B8B8B8BEBEBEBEBEBEBEBEBEB7B7B7 +B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7A2A2A2A2A2A2A2A2A29B9B9B +9B9B9B9B9B9B8888888888888888888888886262626262626262624E4E4E4E4E4E4E4E4E505050 +5050505050505151515151515151515151515252525252525252525757575757575757575F605F +5F605F5F605F646464646464646464646464646464646464646464616161616161616161616161 +6161616161616161616161616161616262626262626262626262626262626262626262625E5E5E +5E5E5E5E5E5E6363636363636363636666666666666666666565656565656565656565655F605F +5F605F5F605F5D5D5D5D5D5D5D5D5D5B5B5B5B5B5B5B5B5B595959595959595959565656565656 +5656565656565757575757575757575F605F5F605F5F605F717171717171717171818181818181 +8181818888888888888888888888888989898989898989898989898989898989898C8C8C8C8C8C +8C8C8C8E8E8E8E8E8E8E8E8E8E8E8E9191919191919191919090909090909090908E8E8E8E8E8E +8E8E8E8D8D8D8D8D8D8D8D8D848484848484848484848484787878787878787878848484848484 +8484847F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F676767676767676767676767787878787878 +787878A9A9A9A9A9A9A9A9A9E8E8E8E8E8E8E8E8E8F5F5F5F5F5F5F5F5F5F5F5F5F9F9F9F9F9F9 +F9F9F9FCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFDFD +FDFDFDFDFDFDFDFDFDFDFDFDF9F9F9F9F9F9F9F9F9C6C6C6C6C6C6C6C6C6CECECECECECECECECE +CDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECCCCCCCCCCCCCCCCCC +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1C5C5C5 +C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C4BFBFBFBFBFBFBFBFBFB4B4B4B4B4B4B4B4B4AEAEAE +AEAEAEAEAEAEAEAEAEB1B1B1B1B1B1B1B1B1A7A7A7A7A7A7A7A7A79C9C9C9C9C9C9C9C9CA3A3A3 +A3A3A3A3A3A39E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9DA4A4A4A4A4A4A4A4A49D9D9D +9D9D9D9D9D9D909090909090909090898989898989898989898989929292929292929292ADADAD +ADADADADADADB0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9BFBFBF +BFBFBFBFBFBFBCBCBCBCBCBCBCBCBCB8B8B8B8B8B8B8B8B8BFBFBFBFBFBFBFBFBFBFBFBFB3B3B3 +B3B3B3B3B3B3B9B9B9B9B9B9B9B9B9B1B1B1B1B1B1B1B1B19F9F9F9F9F9F9F9F9F9E9E9E9E9E9E +9E9E9E9E9E9E8787878787878787875C5C5C5C5C5C5C5C5C4949494949494949494D4D4D4D4D4D +4D4D4D4D4D4D4F4F4F4F4F4F4F4F4F4E4E4E4E4E4E4E4E4E515151515151515151575757575757 +5757575A5A5A5A5A5A5A5A5A5A5A5A5B5B5B5B5B5B5B5B5B5A5A5A5A5A5A5A5A5A5B5B5B5B5B5B +5B5B5B5C5C5C5C5C5C5C5C5C595959595959595959595959575757575757575757575757575757 +575757585858585858585858565656565656565656565656525252525252525252505050505050 +5050504D4D4D4D4D4D4D4D4D4C4C4C4C4C4C4C4C4C525252525252525252525252636363636363 +6363637373737373737373737E7E7E7E7E7E7E7E7E858585858585858585888888888888888888 +8888888989898989898989898888888888888888888C8C8C8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E +8E8E8E9090909090909090908F8F8F8F8F8F8F8F8F9090909090909090908E8E8E8E8E8E8E8E8E +8484848484848484848484847979797979797979797B7B7B7B7B7B7B7B7B6E6E6E6E6E6E6E6E6E +6767676767676767676C6C6C6C6C6C6C6C6C6C6C6C787878787878787878A1A1A1A1A1A1A1A1A1 +E0E0E0E0E0E0E0E0E0F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFCFCFC +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFD +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFC +F6F6F6F6F6F6F6F6F6BBBBBBBBBBBBBBBBBBCECECECECECECECECECDCDCDCDCDCDCDCDCDCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCD +CDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCECECECECECECECECECECECECCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBC5C5C5C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1C5C5C5C5C5C5C5C5C5C5C5C5C4C4C4 +C4C4C4C4C4C4BFBFBFBFBFBFBFBFBFB4B4B4B4B4B4B4B4B4AEAEAEAEAEAEAEAEAEAEAEAEB1B1B1 +B1B1B1B1B1B1A7A7A7A7A7A7A7A7A79C9C9C9C9C9C9C9C9CA3A3A3A3A3A3A3A3A39E9E9E9E9E9E +9E9E9E9E9E9E9D9D9D9D9D9D9D9D9DA4A4A4A4A4A4A4A4A49D9D9D9D9D9D9D9D9D909090909090 +909090898989898989898989898989929292929292929292ADADADADADADADADADB0B0B0B0B0B0 +B0B0B0B8B8B8B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFBCBCBCBCBCBC +BCBCBCB8B8B8B8B8B8B8B8B8BFBFBFBFBFBFBFBFBFBFBFBFB3B3B3B3B3B3B3B3B3B9B9B9B9B9B9 +B9B9B9B1B1B1B1B1B1B1B1B19F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E878787878787 +8787875C5C5C5C5C5C5C5C5C4949494949494949494D4D4D4D4D4D4D4D4D4D4D4D4F4F4F4F4F4F +4F4F4F4E4E4E4E4E4E4E4E4E5151515151515151515757575757575757575A5A5A5A5A5A5A5A5A +5A5A5A5B5B5B5B5B5B5B5B5B5A5A5A5A5A5A5A5A5A5B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C +595959595959595959595959575757575757575757575757575757575757585858585858585858 +5656565656565656565656565252525252525252525050505050505050504D4D4D4D4D4D4D4D4D +4C4C4C4C4C4C4C4C4C525252525252525252525252636363636363636363737373737373737373 +7E7E7E7E7E7E7E7E7E858585858585858585888888888888888888888888898989898989898989 +8888888888888888888C8C8C8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E8E8E8E909090909090909090 +8F8F8F8F8F8F8F8F8F9090909090909090908E8E8E8E8E8E8E8E8E848484848484848484848484 +7979797979797979797B7B7B7B7B7B7B7B7B6E6E6E6E6E6E6E6E6E6767676767676767676C6C6C +6C6C6C6C6C6C6C6C6C787878787878787878A1A1A1A1A1A1A1A1A1E0E0E0E0E0E0E0E0E0F7F7F7 +F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9FCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFC +FCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCF6F6F6F6F6F6F6F6F6BBBBBB +BBBBBBBBBBBBCECECECECECECECECECDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCCCCCCCCCCCC +CCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECE +CECECECECECECCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC5C5C5C5C5C5 +C5C5C5C1C1C1C1C1C1C1C1C1C5C5C5C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C4BFBFBFBFBFBF +BFBFBFB4B4B4B4B4B4B4B4B4AEAEAEAEAEAEAEAEAEAEAEAEB1B1B1B1B1B1B1B1B1A7A7A7A7A7A7 +A7A7A79C9C9C9C9C9C9C9C9CA3A3A3A3A3A3A3A3A39E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D +9D9D9DA4A4A4A4A4A4A4A4A49D9D9D9D9D9D9D9D9D909090909090909090898989898989898989 +898989929292929292929292ADADADADADADADADADB0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8 +B8B8B8B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFBCBCBCBCBCBCBCBCBCB8B8B8B8B8B8B8B8B8 +BFBFBFBFBFBFBFBFBFBFBFBFB3B3B3B3B3B3B3B3B3B9B9B9B9B9B9B9B9B9B1B1B1B1B1B1B1B1B1 +9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E8787878787878787875C5C5C5C5C5C5C5C5C +4949494949494949494D4D4D4D4D4D4D4D4D4D4D4D4F4F4F4F4F4F4F4F4F4E4E4E4E4E4E4E4E4E +5151515151515151515757575757575757575A5A5A5A5A5A5A5A5A5A5A5A5B5B5B5B5B5B5B5B5B +5A5A5A5A5A5A5A5A5A5B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C595959595959595959595959 +575757575757575757575757575757575757585858585858585858565656565656565656565656 +5252525252525252525050505050505050504D4D4D4D4D4D4D4D4D4C4C4C4C4C4C4C4C4C525252 +5252525252525252526363636363636363637373737373737373737E7E7E7E7E7E7E7E7E858585 +8585858585858888888888888888888888888989898989898989898888888888888888888C8C8C +8C8C8C8C8C8C8E8E8E8E8E8E8E8E8E8E8E8E9090909090909090908F8F8F8F8F8F8F8F8F909090 +9090909090908E8E8E8E8E8E8E8E8E8484848484848484848484847979797979797979797B7B7B +7B7B7B7B7B7B6E6E6E6E6E6E6E6E6E6767676767676767676C6C6C6C6C6C6C6C6C6C6C6C787878 +787878787878A1A1A1A1A1A1A1A1A1E0E0E0E0E0E0E0E0E0F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9 +F9F9F9F9F9F9FCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFC +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFC +FCFCFCFDFDFDFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFDFDFDFDFDFD +FDFDFDFCFCFCFCFCFCFCFCFCFCFCFCF6F6F6F6F6F6F6F6F6BBBBBBBBBBBBBBBBBBCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECECECECECCCCCCCCCCCC +CCCCCCCBCBCBCBCBCBCBCBCBCACACACACACACACACACBCBCBCBCBCBCBCBCBC6C6C6C6C6C6C6C6C6 +C6C6C6C4C4C4C4C4C4C4C4C4BFBFBFBFBFBFBFBFBFA7A7A7A7A7A7A7A7A79E9E9E9E9E9E9E9E9E +B4B4B4B4B4B4B4B4B4B4B4B4BFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEB5B5B5B5B5B5B5B5B5 +B6B6B6B6B6B6B6B6B6B6B6B6B7B7B7B7B7B7B7B7B7A5A5A5A5A5A5A5A5A5A7A7A7A7A7A7A7A7A7 +A8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E9E9E9EA8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9 +9696969696969696968F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8A8A8A8A8A8A8A8A8A +9C9C9C9C9C9C9C9C9CACACACACACACACACACB0B1B0B0B1B0B0B1B0B0B1B0B8B8B8B8B8B8B8B8B8 +B6B6B6B6B6B6B6B6B6BDBDBDBDBDBDBDBDBDB6B6B6B6B6B6B6B6B6BABABABABABABABABABABABA +BABABABABABABABABAB2B2B2B2B2B2B2B2B2B9B9B9B9B9B9B9B9B9AEAEAEAEAEAEAEAEAEA2A2A2 +A2A2A2A2A2A2A2A2A2A0A0A0A0A0A0A0A0A0828282828282828282575757575757575757444444 +4444444444444444444747474747474747474C4C4C4C4C4C4C4C4C4D4D4D4D4D4D4D4D4D4C4C4C +4C4C4C4C4C4C4F4F4F4F4F4F4F4F4F4F4F4F515151515151515151525252525252525252525252 +5252525252525454545454545454545050505050505050505050504E4E4E4E4E4E4E4E4E4C4C4C +4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C494949494949494949494949484848484848484848474747 +474747474747474747474747474747515151515151515151656565656565656565656565777777 +7777777777777F7F7F7F7F7F7F7F7F848484848484848484858585858585858585878787878787 +8787878787878888888888888888888989898989898989898C8C8C8C8C8C8C8C8C8D8D8D8D8D8D +8D8D8D8D8D8D8E8E8E8E8E8E8E8E8E8F8F8F8F8F8F8F8F8F9090909090909090908E8E8E8E8E8E +8E8E8E8282828282828282828282827171717171717171716F6F6F6F6F6F6F6F6F686868686868 +6868686666666666666666667070707070707070707070707A7A7A7A7A7A7A7A7A9F9F9F9F9F9F +9F9F9FD8D8D8D8D8D8D8D8D8F5F5F5F5F5F5F5F5F5F5F5F5F8F8F8F8F8F8F8F8F8FCFCFCFCFCFC +FCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFA +FAFAFAFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFC +FCFCFCF6F6F6F6F6F6F6F6F6C5C5C5C5C5C5C5C5C5CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CECECECECECECECECECECECECECECECECECECECECECCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCB +CACACACACACACACACACBCBCBCBCBCBCBCBCBC6C6C6C6C6C6C6C6C6C6C6C6C4C4C4C4C4C4C4C4C4 +BFBFBFBFBFBFBFBFBFA7A7A7A7A7A7A7A7A79E9E9E9E9E9E9E9E9EB4B4B4B4B4B4B4B4B4B4B4B4 +BFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEB5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6B6B6B6 +B7B7B7B7B7B7B7B7B7A5A5A5A5A5A5A5A5A5A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A89E9E9E +9E9E9E9E9E9E9E9E9EA8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A99696969696969696968F8F8F +8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8A8A8A8A8A8A8A8A8A9C9C9C9C9C9C9C9C9CACACAC +ACACACACACACB0B1B0B0B1B0B0B1B0B0B1B0B8B8B8B8B8B8B8B8B8B6B6B6B6B6B6B6B6B6BDBDBD +BDBDBDBDBDBDB6B6B6B6B6B6B6B6B6BABABABABABABABABABABABABABABABABABABABABAB2B2B2 +B2B2B2B2B2B2B9B9B9B9B9B9B9B9B9AEAEAEAEAEAEAEAEAEA2A2A2A2A2A2A2A2A2A2A2A2A0A0A0 +A0A0A0A0A0A0828282828282828282575757575757575757444444444444444444444444474747 +4747474747474C4C4C4C4C4C4C4C4C4D4D4D4D4D4D4D4D4D4C4C4C4C4C4C4C4C4C4F4F4F4F4F4F +4F4F4F4F4F4F515151515151515151525252525252525252525252525252525252545454545454 +5454545050505050505050505050504E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C +4C4C4C494949494949494949494949484848484848484848474747474747474747474747474747 +4747475151515151515151516565656565656565656565657777777777777777777F7F7F7F7F7F +7F7F7F848484848484848484858585858585858585878787878787878787878787888888888888 +8888888989898989898989898C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8D8D8D8E8E8E8E8E8E +8E8E8E8F8F8F8F8F8F8F8F8F9090909090909090908E8E8E8E8E8E8E8E8E828282828282828282 +8282827171717171717171716F6F6F6F6F6F6F6F6F686868686868686868666666666666666666 +7070707070707070707070707A7A7A7A7A7A7A7A7A9F9F9F9F9F9F9F9F9FD8D8D8D8D8D8D8D8D8 +F5F5F5F5F5F5F5F5F5F5F5F5F8F8F8F8F8F8F8F8F8FCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFB +FCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFDFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCFCFCF6F6F6F6F6F6F6F6F6 +C5C5C5C5C5C5C5C5C5CDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCECECECECECECECECECDCDCD +CDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCFCFCFCFCFCFCFCFCFCECECE +CECECECECECECECECECCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBC9C9C9 +C9C9C9C9C9C9BEBEBEBEBEBEBEBEBEBEBEBEBABABABABABABABABAAEAEAEAEAEAEAEAEAE868686 +868686868686838383838383838383A7A7A7A7A7A7A7A7A7A7A7A7C2C2C2C2C2C2C2C2C2CCCCCC +CCCCCCCCCCCCC1C1C1C1C1C1C1C1C1B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B0B1B0 +B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFABABABABABABABABABA8A8A8A8A8A8A8A8A8A8A8A8AEAEAE +AEAEAEAEAEAEA8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9EA4A4A4A4A4A4A4A4A4A1A1A1A1A1A1 +A1A1A1A1A1A18F8F8F8F8F8F8F8F8F898989898989898989A2A2A2A2A2A2A2A2A2B0B0B0B0B0B0 +B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8 +B8B8B8B1B1B1B1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9B6B6B6B6B6B6B6B6B6B2B2B2B2B2B2 +B2B2B2BABABABABABABABABAACACACACACACACACACACACACA4A4A4A4A4A4A4A4A49E9E9E9E9E9E +9E9E9E7777777777777777774F4F4F4F4F4F4F4F4F4F4F4F414141414141414141474747474747 +4747474E4E4E4E4E4E4E4E4E4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4C4C4C4C4C4C +4C4C4C4C4C4C4C4C4C4C4C4C4B4B4B4B4B4B4B4B4B494949494949494949464646464646464646 +464646444444444444444444454545454545454545444444444444444444444444444444444444 +4444444242424242424242424545454545454545454E4E4E4E4E4E4E4E4E616161616161616161 +757575757575757575757575818181818181818181848484848484848484868686868686868686 +8686868686868686868787878787878787878787878888888888888888888C8C8C8C8C8C8C8C8C +8D8D8D8D8D8D8D8D8D8E8E8E8E8E8E8E8E8E8E8E8E909090909090909090909090909090909090 +9090909090909090908D8D8D8D8D8D8D8D8D808080808080808080808080646464646464646464 +5D5D5D5D5D5D5D5D5D6262626262626262626A6A6A6A6A6A6A6A6A757575757575757575757575 +7E7E7E7E7E7E7E7E7EA4A4A4A4A4A4A4A4A4D3D3D3D3D3D3D3D3D3F2F2F2F2F2F2F2F2F2F2F2F2 +F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFA +FAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFC +FCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBF7F7F7F7F7F7F7F7F7C5C5C5C5C5C5C5C5C5CDCDCD +CDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCCCCCC +CCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCCCCCC +CCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBC9C9C9C9C9C9C9C9C9BEBEBEBEBEBE +BEBEBEBEBEBEBABABABABABABABABAAEAEAEAEAEAEAEAEAE868686868686868686838383838383 +838383A7A7A7A7A7A7A7A7A7A7A7A7C2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCC1C1C1C1C1C1 +C1C1C1B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B0B1B0B0B1B0B0B1B0AFAFAFAFAFAF +AFAFAFABABABABABABABABABA8A8A8A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEA8A8A8A8A8A8 +A8A8A89E9E9E9E9E9E9E9E9EA4A4A4A4A4A4A4A4A4A1A1A1A1A1A1A1A1A1A1A1A18F8F8F8F8F8F +8F8F8F898989898989898989A2A2A2A2A2A2A2A2A2B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1 +B1B1B1B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8B1B1B1B1B1B1B1B1B1 +B1B1B1B9B9B9B9B9B9B9B9B9B6B6B6B6B6B6B6B6B6B2B2B2B2B2B2B2B2B2BABABABABABABABABA +ACACACACACACACACACACACACA4A4A4A4A4A4A4A4A49E9E9E9E9E9E9E9E9E777777777777777777 +4F4F4F4F4F4F4F4F4F4F4F4F4141414141414141414747474747474747474E4E4E4E4E4E4E4E4E +4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4D4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C +4B4B4B4B4B4B4B4B4B494949494949494949464646464646464646464646444444444444444444 +454545454545454545444444444444444444444444444444444444444444424242424242424242 +4545454545454545454E4E4E4E4E4E4E4E4E616161616161616161757575757575757575757575 +818181818181818181848484848484848484868686868686868686868686868686868686878787 +8787878787878787878888888888888888888C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8E8E8E +8E8E8E8E8E8E8E8E8E9090909090909090909090909090909090909090909090909090908D8D8D +8D8D8D8D8D8D8080808080808080808080806464646464646464645D5D5D5D5D5D5D5D5D626262 +6262626262626A6A6A6A6A6A6A6A6A7575757575757575757575757E7E7E7E7E7E7E7E7EA4A4A4 +A4A4A4A4A4A4D3D3D3D3D3D3D3D3D3F2F2F2F2F2F2F2F2F2F2F2F2F9F9F9F9F9F9F9F9F9FBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFBFBFBFBFBFB +FBFBFBFBFBFBF7F7F7F7F7F7F7F7F7C5C5C5C5C5C5C5C5C5CDCDCDCDCDCDCDCDCDCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCBCBCBCBCBCB +CBCBCBCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCDCDCDCDCDCD +CDCDCDCFCFCFCFCFCFCFCFCFCECECECECECECECECECECECECCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCBCBCBCBCBCBCBCBCBC9C9C9C9C9C9C9C9C9BEBEBEBEBEBEBEBEBEBEBEBEBABABABABABA +BABABAAEAEAEAEAEAEAEAEAE868686868686868686838383838383838383A7A7A7A7A7A7A7A7A7 +A7A7A7C2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCC1C1C1C1C1C1C1C1C1B9B9B9B9B9B9B9B9B9 +B9B9B9B9B9B9B9B9B9B9B9B9B0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFABABABABABABABABAB +A8A8A8A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEA8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E +A4A4A4A4A4A4A4A4A4A1A1A1A1A1A1A1A1A1A1A1A18F8F8F8F8F8F8F8F8F898989898989898989 +A2A2A2A2A2A2A2A2A2B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B4B4B4B4B4B4B4B4B4 +B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8B1B1B1B1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9 +B6B6B6B6B6B6B6B6B6B2B2B2B2B2B2B2B2B2BABABABABABABABABAACACACACACACACACACACACAC +A4A4A4A4A4A4A4A4A49E9E9E9E9E9E9E9E9E7777777777777777774F4F4F4F4F4F4F4F4F4F4F4F +4141414141414141414747474747474747474E4E4E4E4E4E4E4E4E4D4D4D4D4D4D4D4D4D4D4D4D +4D4D4D4D4D4D4D4D4D4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4C4B4B4B4B4B4B4B4B4B494949 +494949494949464646464646464646464646444444444444444444454545454545454545444444 +4444444444444444444444444444444444444242424242424242424545454545454545454E4E4E +4E4E4E4E4E4E616161616161616161757575757575757575757575818181818181818181848484 +848484848484868686868686868686868686868686868686878787878787878787878787888888 +8888888888888C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8E8E8E8E8E8E8E8E8E8E8E8E909090 +9090909090909090909090909090909090909090909090908D8D8D8D8D8D8D8D8D808080808080 +8080808080806464646464646464645D5D5D5D5D5D5D5D5D6262626262626262626A6A6A6A6A6A +6A6A6A7575757575757575757575757E7E7E7E7E7E7E7E7EA4A4A4A4A4A4A4A4A4D3D3D3D3D3D3 +D3D3D3F2F2F2F2F2F2F2F2F2F2F2F2F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFBFBFBFBFBFBFBFBFBFBFBFBF7F7F7F7F7F7 +F7F7F7C5C5C5C5C5C5C5C5C5CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCB +CBCBCBCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCC +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECE +CDCDCDCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCDCDCDCDCDCDCDCDCD +CBCBCBCBCBCBCBCBCBC6C6C6C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7B1B1B1B1B1B1B1B1B1 +919191919191919191A2A2A2A2A2A2A2A2A2BFBFBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFCF +D1D1D1D1D1D1D1D1D1C0C0C0C0C0C0C0C0C0B7B7B7B7B7B7B7B7B7B7B7B7BFBFBFBFBFBFBFBFBF +BABABABABABABABABAB0B0B0B0B0B0B0B0B0ACACACACACACACACACB2B2B2B2B2B2B2B2B2B2B2B2 +ACACACACACACACACACAAAAAAAAAAAAAAAAAAAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA4A4A4 +A4A4A4A4A4A4A4A4A49191919191919191918D8D8D8D8D8D8D8D8D929292929292929292ABABAB +ABABABABABABABABABAEAEAEAEAEAEAEAEAEB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0AFAFAF +AFAFAFAFAFAFB1B1B1B1B1B1B1B1B1B1B1B1AEAEAEAEAEAEAEAEAEB6B6B6B6B6B6B6B6B6B2B2B2 +B2B2B2B2B2B2B4B4B4B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7A5A5A5 +A5A5A5A5A5A59898989898989898986F6F6F6F6F6F6F6F6F6F6F6F4E4E4E4E4E4E4E4E4E3E3E3E +3E3E3E3E3E3E4141414141414141414B4B4B4B4B4B4B4B4B505050505050505050505050505050 +5050505050505050505050505050504D4D4D4D4D4D4D4D4D494949494949494949444444444444 +4444444444444040404040404040403F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F +3F3F3F3F3F3F4444444444444444444E4E4E4E4E4E4E4E4E5D5D5D5D5D5D5D5D5D6F6F6F6F6F6F +6F6F6F7C7C7C7C7C7C7C7C7C7C7C7C848484848484848484858585858585858585858585858585 +8585858484848484848484848787878787878787878787878989898989898989898F8F8F8F8F8F +8F8F8F9090909090909090909393939393939393939393939393939393939393938E8E8E8E8E8E +8E8E8E8D8D8D8D8D8D8D8D8D8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E575757575757 +5757575151515151515151515F605F5F605F5F605F6D6D6D6D6D6D6D6D6D777777777777777777 +7777777E7E7E7E7E7E7E7E7EA5A5A5A5A5A5A5A5A5D8D8D8D8D8D8D8D8D8EFEFEFEFEFEFEFEFEF +EFEFEFF9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFA +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFA +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBF6F6F6F6F6F6F6F6F6C1C1C1C1C1C1C1C1C1 +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCDCDCDCDCDCDCDCDCD +CCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECDCDCDCDCDCDCDCDCDCDCDCD +CCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCDCDCDCDCDCDCDCDCDCBCBCBCBCBCBCBCBCBC6C6C6 +C6C6C6C6C6C6C6C6C6C7C7C7C7C7C7C7C7C7B1B1B1B1B1B1B1B1B1919191919191919191A2A2A2 +A2A2A2A2A2A2BFBFBFBFBFBFBFBFBFBFBFBFCFCFCFCFCFCFCFCFCFD1D1D1D1D1D1D1D1D1C0C0C0 +C0C0C0C0C0C0B7B7B7B7B7B7B7B7B7B7B7B7BFBFBFBFBFBFBFBFBFBABABABABABABABABAB0B0B0 +B0B0B0B0B0B0ACACACACACACACACACB2B2B2B2B2B2B2B2B2B2B2B2ACACACACACACACACACAAAAAA +AAAAAAAAAAAAAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA4A4A4A4A4A4A4A4A4A4A4A4919191 +9191919191918D8D8D8D8D8D8D8D8D929292929292929292ABABABABABABABABABABABABAEAEAE +AEAEAEAEAEAEB0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0AFAFAFAFAFAFAFAFAFB1B1B1B1B1B1 +B1B1B1B1B1B1AEAEAEAEAEAEAEAEAEB6B6B6B6B6B6B6B6B6B2B2B2B2B2B2B2B2B2B4B4B4B4B4B4 +B4B4B4B7B7B7B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7A5A5A5A5A5A5A5A5A5989898989898 +9898986F6F6F6F6F6F6F6F6F6F6F6F4E4E4E4E4E4E4E4E4E3E3E3E3E3E3E3E3E3E414141414141 +4141414B4B4B4B4B4B4B4B4B505050505050505050505050505050505050505050505050505050 +5050504D4D4D4D4D4D4D4D4D494949494949494949444444444444444444444444404040404040 +4040403F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F444444444444 +4444444E4E4E4E4E4E4E4E4E5D5D5D5D5D5D5D5D5D6F6F6F6F6F6F6F6F6F7C7C7C7C7C7C7C7C7C +7C7C7C848484848484848484858585858585858585858585858585858585848484848484848484 +8787878787878787878787878989898989898989898F8F8F8F8F8F8F8F8F909090909090909090 +9393939393939393939393939393939393939393938E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D +8E8E8E8E8E8E8E8E8E7E7E7E7E7E7E7E7E7E7E7E7E575757575757575757515151515151515151 +5F605F5F605F5F605F6D6D6D6D6D6D6D6D6D7777777777777777777777777E7E7E7E7E7E7E7E7E +A5A5A5A5A5A5A5A5A5D8D8D8D8D8D8D8D8D8EFEFEFEFEFEFEFEFEFEFEFEFF9F9F9F9F9F9F9F9F9 +FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBF9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFBFBFB +FBFBFBFBFBFBFBFBFBF6F6F6F6F6F6F6F6F6C1C1C1C1C1C1C1C1C1CBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCFCFCF +CFCFCFCFCFCFC7C7C7C7C7C7C7C7C7BDBDBDBDBDBDBDBDBDC9C9C9C9C9C9C9C9C9C9C9C9D6D6D5 +D6D6D5D6D6D5C9C9C9C9C9C9C9C9C9B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8 +B8B8B8B8B8B8C5C5C5C5C5C5C5C5C5CBCBCBCBCBCBCBCBCBC8C8C8C8C8C8C8C8C8C6C6C6C6C6C6 +C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5BFBFBFBFBFBFBFBFBFB4B4B4B4B4B4B4B4B4B0B1B0B0B1B0 +B0B1B0B0B0B0B0B0B0B0B0B0B0B0B0A6A6A6A6A6A6A6A6A6ADADADADADADADADADB5B5B5B5B5B5 +B5B5B5ACACACACACACACACACA5A5A5A5A5A5A5A5A5A5A5A5A1A1A1A1A1A1A1A1A1A4A4A4A4A4A4 +A4A4A4979797979797979797979797979797979797979797A5A5A5A5A5A5A5A5A5A7A7A7A7A7A7 +A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8ABABABABABABABABABABABABADADADADADAD +ADADADABABABABABABABABABB2B2B2B2B2B2B2B2B2AFAFAFAFAFAFAFAFAFB2B2B2B2B2B2B2B2B2 +B2B2B2B1B1B1B1B1B1B1B1B1A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5919191919191919191 +9191916C6C6C6C6C6C6C6C6C4D4D4D4D4D4D4D4D4D3C3C3C3C3C3C3C3C3C414141414141414141 +4C4C4C4C4C4C4C4C4C4C4C4C505050505050505050515151515151515151515151515151515151 +5050505050505050504E4E4E4E4E4E4E4E4E4E4E4E484848484848484848444444444444444444 +4242424242424242424545454545454545454545454F4F4F4F4F4F4F4F4F5E5E5E5E5E5E5E5E5E +6E6E6E6E6E6E6E6E6E7878787878787878787E7E7E7E7E7E7E7E7E7E7E7E838383838383838383 +818181818181818181818181818181818181828282828282828282848484848484848484848484 +8A8A8A8A8A8A8A8A8A909090909090909090949494949494949494989898989898989898989898 +9595959595959595958F8F8F8F8F8F8F8F8F8D8D8D8D8D8D8D8D8D8F8F8F8F8F8F8F8F8F7C7C7C +7C7C7C7C7C7C7C7C7C4E4E4E4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C626262626262626262727272 +727272727272797979797979797979797979808080808080808080ADADADADADADADADADE4E4E4 +E4E4E4E4E4E4EFEFEFEFEFEFEFEFEFEFEFEFF7F7F7F7F7F7F7F7F7FAFAFAFAFAFAFAFAFAFBFBFB +FBFBFBFBFBFBFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFBFBFBF4F4F4 +F4F4F4F4F4F4B2B2B2B2B2B2B2B2B2CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCFCFCFCFCFCFCFCFCFC7C7C7C7C7C7 +C7C7C7BDBDBDBDBDBDBDBDBDC9C9C9C9C9C9C9C9C9C9C9C9D6D6D5D6D6D5D6D6D5C9C9C9C9C9C9 +C9C9C9B8B8B8B8B8B8B8B8B8B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8C5C5C5C5C5C5 +C5C5C5CBCBCBCBCBCBCBCBCBC8C8C8C8C8C8C8C8C8C6C6C6C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5 +C5C5C5BFBFBFBFBFBFBFBFBFB4B4B4B4B4B4B4B4B4B0B1B0B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0 +B0B0B0A6A6A6A6A6A6A6A6A6ADADADADADADADADADB5B5B5B5B5B5B5B5B5ACACACACACACACACAC +A5A5A5A5A5A5A5A5A5A5A5A5A1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4979797979797979797 +979797979797979797979797A5A5A5A5A5A5A5A5A5A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8ABABABABABABABABABABABABADADADADADADADADADABABABABABABABABAB +B2B2B2B2B2B2B2B2B2AFAFAFAFAFAFAFAFAFB2B2B2B2B2B2B2B2B2B2B2B2B1B1B1B1B1B1B1B1B1 +A4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A59191919191919191919191916C6C6C6C6C6C6C6C6C +4D4D4D4D4D4D4D4D4D3C3C3C3C3C3C3C3C3C4141414141414141414C4C4C4C4C4C4C4C4C4C4C4C +5050505050505050505151515151515151515151515151515151515050505050505050504E4E4E +4E4E4E4E4E4E4E4E4E484848484848484848444444444444444444424242424242424242454545 +4545454545454545454F4F4F4F4F4F4F4F4F5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E787878 +7878787878787E7E7E7E7E7E7E7E7E7E7E7E838383838383838383818181818181818181818181 +8181818181818282828282828282828484848484848484848484848A8A8A8A8A8A8A8A8A909090 +9090909090909494949494949494949898989898989898989898989595959595959595958F8F8F +8F8F8F8F8F8F8D8D8D8D8D8D8D8D8D8F8F8F8F8F8F8F8F8F7C7C7C7C7C7C7C7C7C7C7C7C4E4E4E +4E4E4E4E4E4E4C4C4C4C4C4C4C4C4C626262626262626262727272727272727272797979797979 +797979797979808080808080808080ADADADADADADADADADE4E4E4E4E4E4E4E4E4EFEFEFEFEFEF +EFEFEFEFEFEFF7F7F7F7F7F7F7F7F7FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFAFAFAFAFAFA +FAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFA +FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFBFBFBF4F4F4F4F4F4F4F4F4B2B2B2B2B2B2 +B2B2B2CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCDCD +CDCDCDCDCDCDCDCDCDCDCDCDCFCFCFCFCFCFCFCFCFC7C7C7C7C7C7C7C7C7BDBDBDBDBDBDBDBDBD +C9C9C9C9C9C9C9C9C9C9C9C9D6D6D5D6D6D5D6D6D5C9C9C9C9C9C9C9C9C9B8B8B8B8B8B8B8B8B8 +B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B8B8B8C5C5C5C5C5C5C5C5C5CBCBCBCBCBCBCBCBCB +C8C8C8C8C8C8C8C8C8C6C6C6C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5BFBFBFBFBFBFBFBFBF +B4B4B4B4B4B4B4B4B4B0B1B0B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0B0B0B0A6A6A6A6A6A6A6A6A6 +ADADADADADADADADADB5B5B5B5B5B5B5B5B5ACACACACACACACACACA5A5A5A5A5A5A5A5A5A5A5A5 +A1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4979797979797979797979797979797979797979797 +A5A5A5A5A5A5A5A5A5A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8ABABAB +ABABABABABABABABABADADADADADADADADADABABABABABABABABABB2B2B2B2B2B2B2B2B2AFAFAF +AFAFAFAFAFAFB2B2B2B2B2B2B2B2B2B2B2B2B1B1B1B1B1B1B1B1B1A4A4A4A4A4A4A4A4A4A5A5A5 +A5A5A5A5A5A59191919191919191919191916C6C6C6C6C6C6C6C6C4D4D4D4D4D4D4D4D4D3C3C3C +3C3C3C3C3C3C4141414141414141414C4C4C4C4C4C4C4C4C4C4C4C505050505050505050515151 +5151515151515151515151515151515050505050505050504E4E4E4E4E4E4E4E4E4E4E4E484848 +4848484848484444444444444444444242424242424242424545454545454545454545454F4F4F +4F4F4F4F4F4F5E5E5E5E5E5E5E5E5E6E6E6E6E6E6E6E6E6E7878787878787878787E7E7E7E7E7E +7E7E7E7E7E7E838383838383838383818181818181818181818181818181818181828282828282 +8282828484848484848484848484848A8A8A8A8A8A8A8A8A909090909090909090949494949494 +9494949898989898989898989898989595959595959595958F8F8F8F8F8F8F8F8F8D8D8D8D8D8D +8D8D8D8F8F8F8F8F8F8F8F8F7C7C7C7C7C7C7C7C7C7C7C7C4E4E4E4E4E4E4E4E4E4C4C4C4C4C4C +4C4C4C626262626262626262727272727272727272797979797979797979797979808080808080 +808080ADADADADADADADADADE4E4E4E4E4E4E4E4E4EFEFEFEFEFEFEFEFEFEFEFEFF7F7F7F7F7F7 +F7F7F7FAFAFAFAFAFAFAFAFAFBFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFA +FAFAFAFAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFA +FBFBFBFBFBFBFBFBFBFBFBFBF4F4F4F4F4F4F4F4F4B2B2B2B2B2B2B2B2B2CCCCCCCCCCCCCCCCCC +CACACACACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBD0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFAEAEAEAEAEAEAEAEAE9D9D9D9D9D9D9D9D9DBABABABABABABABABABABABA +CDCDCDCDCDCDCDCDCDC7C7C7C7C7C7C7C7C7BCBCBCBCBCBCBCBCBCA0A0A0A0A0A0A0A0A07C7C7C +7C7C7C7C7C7C7C7C7C9E9E9E9E9E9E9E9E9ECDCDCDCDCDCDCDCDCDD5D5D5D5D5D5D5D5D5D2D2D2 +D2D2D2D2D2D2D2D2D2C6C6C6C6C6C6C6C6C6C0C0C0C0C0C0C0C0C0BFBFBFBFBFBFBFBFBFBABABA +BABABABABABAA9A9A9A9A9A9A9A9A9A9A9A9A2A2A2A2A2A2A2A2A2ACACACACACACACACACA8A8A8 +A8A8A8A8A8A8A3A3A3A3A3A3A3A3A3AFAFAFAFAFAFAFAFAFAFAFAFB3B3B3B3B3B3B3B3B3ADADAD +ADADADADADAD9797979797979797978888888888888888888888888F8F8F8F8F8F8F8F8FA0A0A0 +A0A0A0A0A0A09E9E9E9E9E9E9E9E9EA4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A8A8A8 +A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9AFAFAFAFAFAFAFAFAFAAAAAAAAAAAA +AAAAAAAAAAAAB0B0B0B0B0B0B0B0B0ABABABABABABABABABA5A5A5A5A5A5A5A5A5A8A8A8A8A8A8 +A8A8A8A8A8A88E8E8E8E8E8E8E8E8E6D6D6D6D6D6D6D6D6D5151515151515151513B3B3B3B3B3B +3B3B3B4040404040404040404040404C4C4C4C4C4C4C4C4C515151515151515151525252525252 +5252525252525252525252525252525252525252525252525050505050505050504E4E4E4E4E4E +4E4E4E4D4D4D4D4D4D4D4D4D5555555555555555555555555F605F5F605F5F605F6E6E6E6E6E6E +6E6E6E7A7A7A7A7A7A7A7A7A7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F +7F7F7F7C7C7C7C7C7C7C7C7C7E7E7E7E7E7E7E7E7E808080808080808080828282828282828282 +8282828C8C8C8C8C8C8C8C8C949494949494949494989898989898989898949494949494949494 +9494948F8F8F8F8F8F8F8F8F8E8E8E8E8E8E8E8E8E8F8F8F8F8F8F8F8F8F909090909090909090 +7C7C7C7C7C7C7C7C7C7C7C7C4C4C4C4C4C4C4C4C4C484848484848484848636363636363636363 +757575757575757575797979797979797979797979888888888888888888B3B3B3B3B3B3B3B3B3 +ECECECECECECECECECF2F2F2F2F2F2F2F2F2F2F2F2F5F5F5F5F5F5F5F5F5F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F4F4F4F4F4F4F4F4F4BFBFBFBFBFBFBFBFBFCCCCCCCCCCCCCCCCCCCACACACACACACACACACBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCC +CCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBD0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFAEAEAE +AEAEAEAEAEAE9D9D9D9D9D9D9D9D9DBABABABABABABABABABABABACDCDCDCDCDCDCDCDCDC7C7C7 +C7C7C7C7C7C7BCBCBCBCBCBCBCBCBCA0A0A0A0A0A0A0A0A07C7C7C7C7C7C7C7C7C7C7C7C9E9E9E +9E9E9E9E9E9ECDCDCDCDCDCDCDCDCDD5D5D5D5D5D5D5D5D5D2D2D2D2D2D2D2D2D2D2D2D2C6C6C6 +C6C6C6C6C6C6C0C0C0C0C0C0C0C0C0BFBFBFBFBFBFBFBFBFBABABABABABABABABAA9A9A9A9A9A9 +A9A9A9A9A9A9A2A2A2A2A2A2A2A2A2ACACACACACACACACACA8A8A8A8A8A8A8A8A8A3A3A3A3A3A3 +A3A3A3AFAFAFAFAFAFAFAFAFAFAFAFB3B3B3B3B3B3B3B3B3ADADADADADADADADAD979797979797 +9797978888888888888888888888888F8F8F8F8F8F8F8F8FA0A0A0A0A0A0A0A0A09E9E9E9E9E9E +9E9E9EA4A4A4A4A4A4A4A4A4A5A5A5A5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A8A8A8A9A9A9A9A9A9A9A9A9AFAFAFAFAFAFAFAFAFAAAAAAAAAAAAAAAAAAAAAAAAB0B0B0B0B0B0 +B0B0B0ABABABABABABABABABA5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A8A8A88E8E8E8E8E8E +8E8E8E6D6D6D6D6D6D6D6D6D5151515151515151513B3B3B3B3B3B3B3B3B404040404040404040 +4040404C4C4C4C4C4C4C4C4C515151515151515151525252525252525252525252525252525252 +5252525252525252525252525050505050505050504E4E4E4E4E4E4E4E4E4D4D4D4D4D4D4D4D4D +5555555555555555555555555F605F5F605F5F605F6E6E6E6E6E6E6E6E6E7A7A7A7A7A7A7A7A7A +7D7D7D7D7D7D7D7D7D7E7E7E7E7E7E7E7E7E7E7E7E7F7F7F7F7F7F7F7F7F7C7C7C7C7C7C7C7C7C +7E7E7E7E7E7E7E7E7E8080808080808080808282828282828282828282828C8C8C8C8C8C8C8C8C +9494949494949494949898989898989898989494949494949494949494948F8F8F8F8F8F8F8F8F +8E8E8E8E8E8E8E8E8E8F8F8F8F8F8F8F8F8F9090909090909090907C7C7C7C7C7C7C7C7C7C7C7C +4C4C4C4C4C4C4C4C4C484848484848484848636363636363636363757575757575757575797979 +797979797979797979888888888888888888B3B3B3B3B3B3B3B3B3ECECECECECECECECECF2F2F2 +F2F2F2F2F2F2F2F2F2F5F5F5F5F5F5F5F5F5F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9FAFAFA +FAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9FAFAFAFAFAFAFAFAFAF9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F4F4F4F4F4F4F4F4F4BFBFBF +BFBFBFBFBFBFCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCB +CBCBCBCBCBCBCACACACACACACACACAC6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C2C2C2C2C2C2 +C2C2C2C2C2C2D0D0D0D0D0D0D0D0D0CBCBCBCBCBCBCBCBCBA1A1A1A1A1A1A1A1A1A6A6A6A6A6A6 +A6A6A6C3C3C3C3C3C3C3C3C3C3C3C3C8C8C8C8C8C8C8C8C8C7C7C7C7C7C7C7C7C7BBBBBBBBBBBB +BBBBBB9494949494949494945D5D5D5D5D5D5D5D5D5D5D5D838383838383838383CCCCCCCCCCCC +CCCCCCDFDFDFDFDFDFDFDFDFD6D6D5D6D6D5D6D6D5D6D6D5C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8 +C8C8C8CACACACACACACACACAB9B9B9B9B9B9B9B9B9A4A4A4A4A4A4A4A4A4A4A4A4A9A9A9A9A9A9 +A9A9A9B0B1B0B0B1B0B0B1B0A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8B5B5B5B5B5B5B5B5B5 +B5B5B5B4B4B4B4B4B4B4B4B4A6A6A6A6A6A6A6A6A69A9A9A9A9A9A9A9A9A969696969696969696 +9696968D8D8D8D8D8D8D8D8D9191919191919191919999999999999999999B9B9B9B9B9B9B9B9B +A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8 +A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAAAAAAAA9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAE +A8A8A8A8A8A8A8A8A8ADADADADADADADADADADADADA9A9A9A9A9A9A9A9A9888888888888888888 +6969696969696969694444444444444444443535353535353535353535353E3E3E3E3E3E3E3E3E +4949494949494949494F4F4F4F4F4F4F4F4F545454545454545454545454545454545454545454 +5555555555555555555757575757575757575B5B5B5B5B5B5B5B5B666666666666666666666666 +707070707070707070797979797979797979808080808080808080808080808080808080808080 +8080808080808080807E7E7E7E7E7E7E7E7E7D7D7D7D7D7D7D7D7D808080808080808080818181 +8181818181818383838383838383838383839090909090909090909999999999999999999C9C9C +9C9C9C9C9C9C9393939393939393939393938E8E8E8E8E8E8E8E8E8F8F8F8F8F8F8F8F8F919191 +9191919191919191919191919191917E7E7E7E7E7E7E7E7E7E7E7E4D4D4D4D4D4D4D4D4D474747 +4747474747476565656565656565657979797979797979797E7E7E7E7E7E7E7E7E7E7E7E969696 +969696969696BABABABABABABABABAEBEBEBEBEBEBEBEBEBF5F5F5F5F5F5F5F5F5F5F5F5F1F1F1 +F1F1F1F1F1F1F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F5F5F5F5F5F5F5F5F5CECECECECECECECECECBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCACACACACACA +CACACAC6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C5C2C2C2C2C2C2C2C2C2C2C2C2D0D0D0D0D0D0 +D0D0D0CBCBCBCBCBCBCBCBCBA1A1A1A1A1A1A1A1A1A6A6A6A6A6A6A6A6A6C3C3C3C3C3C3C3C3C3 +C3C3C3C8C8C8C8C8C8C8C8C8C7C7C7C7C7C7C7C7C7BBBBBBBBBBBBBBBBBB949494949494949494 +5D5D5D5D5D5D5D5D5D5D5D5D838383838383838383CCCCCCCCCCCCCCCCCCDFDFDFDFDFDFDFDFDF +D6D6D5D6D6D5D6D6D5D6D6D5C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8CACACACACACACACACA +B9B9B9B9B9B9B9B9B9A4A4A4A4A4A4A4A4A4A4A4A4A9A9A9A9A9A9A9A9A9B0B1B0B0B1B0B0B1B0 +A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8B5B5B5B5B5B5B5B5B5B5B5B5B4B4B4B4B4B4B4B4B4 +A6A6A6A6A6A6A6A6A69A9A9A9A9A9A9A9A9A9696969696969696969696968D8D8D8D8D8D8D8D8D +9191919191919191919999999999999999999B9B9B9B9B9B9B9B9BA0A0A0A0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A0A5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7AAAAAA +AAAAAAAAAAAAAAAAAAA9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAEA8A8A8A8A8A8A8A8A8ADADAD +ADADADADADADADADADA9A9A9A9A9A9A9A9A9888888888888888888696969696969696969444444 +4444444444443535353535353535353535353E3E3E3E3E3E3E3E3E4949494949494949494F4F4F +4F4F4F4F4F4F545454545454545454545454545454545454545454555555555555555555575757 +5757575757575B5B5B5B5B5B5B5B5B666666666666666666666666707070707070707070797979 +7979797979798080808080808080808080808080808080808080808080808080808080807E7E7E +7E7E7E7E7E7E7D7D7D7D7D7D7D7D7D808080808080808080818181818181818181838383838383 +8383838383839090909090909090909999999999999999999C9C9C9C9C9C9C9C9C939393939393 +9393939393938E8E8E8E8E8E8E8E8E8F8F8F8F8F8F8F8F8F919191919191919191919191919191 +9191917E7E7E7E7E7E7E7E7E7E7E7E4D4D4D4D4D4D4D4D4D474747474747474747656565656565 +6565657979797979797979797E7E7E7E7E7E7E7E7E7E7E7E969696969696969696BABABABABABA +BABABAEBEBEBEBEBEBEBEBEBF5F5F5F5F5F5F5F5F5F5F5F5F1F1F1F1F1F1F1F1F1F7F7F7F7F7F7 +F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F8F8F8F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8 +F8F8F8F5F5F5F5F5F5F5F5F5CECECECECECECECECECBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CCCCCCCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCACACACACACACACACAC6C6C6C6C6C6C6C6C6 +C5C5C5C5C5C5C5C5C5C2C2C2C2C2C2C2C2C2C2C2C2D0D0D0D0D0D0D0D0D0CBCBCBCBCBCBCBCBCB +A1A1A1A1A1A1A1A1A1A6A6A6A6A6A6A6A6A6C3C3C3C3C3C3C3C3C3C3C3C3C8C8C8C8C8C8C8C8C8 +C7C7C7C7C7C7C7C7C7BBBBBBBBBBBBBBBBBB9494949494949494945D5D5D5D5D5D5D5D5D5D5D5D +838383838383838383CCCCCCCCCCCCCCCCCCDFDFDFDFDFDFDFDFDFD6D6D5D6D6D5D6D6D5D6D6D5 +C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8CACACACACACACACACAB9B9B9B9B9B9B9B9B9A4A4A4 +A4A4A4A4A4A4A4A4A4A9A9A9A9A9A9A9A9A9B0B1B0B0B1B0B0B1B0A8A8A8A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8B5B5B5B5B5B5B5B5B5B5B5B5B4B4B4B4B4B4B4B4B4A6A6A6A6A6A6A6A6A69A9A9A +9A9A9A9A9A9A9696969696969696969696968D8D8D8D8D8D8D8D8D919191919191919191999999 +9999999999999B9B9B9B9B9B9B9B9BA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A5A5A5 +A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAAAAAAAA9A9A9 +A9A9A9A9A9A9AEAEAEAEAEAEAEAEAEA8A8A8A8A8A8A8A8A8ADADADADADADADADADADADADA9A9A9 +A9A9A9A9A9A9888888888888888888696969696969696969444444444444444444353535353535 +3535353535353E3E3E3E3E3E3E3E3E4949494949494949494F4F4F4F4F4F4F4F4F545454545454 +5454545454545454545454545454545555555555555555555757575757575757575B5B5B5B5B5B +5B5B5B666666666666666666666666707070707070707070797979797979797979808080808080 +8080808080808080808080808080808080808080808080807E7E7E7E7E7E7E7E7E7D7D7D7D7D7D +7D7D7D808080808080808080818181818181818181838383838383838383838383909090909090 +9090909999999999999999999C9C9C9C9C9C9C9C9C9393939393939393939393938E8E8E8E8E8E +8E8E8E8F8F8F8F8F8F8F8F8F9191919191919191919191919191919191917E7E7E7E7E7E7E7E7E +7E7E7E4D4D4D4D4D4D4D4D4D474747474747474747656565656565656565797979797979797979 +7E7E7E7E7E7E7E7E7E7E7E7E969696969696969696BABABABABABABABABAEBEBEBEBEBEBEBEBEB +F5F5F5F5F5F5F5F5F5F5F5F5F1F1F1F1F1F1F1F1F1F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F8F8F8F5F5F5F5F5F5F5F5F5 +CECECECECECECECECECBCBCBCBCBCBCBCBCBCACACACACACACACACACBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5B6B6B6B6B6B6B6B6B6AEAEAEAEAEAEAEAEAEBCBCBC +BCBCBCBCBCBCBCBCBCD6D6D6D6D6D6D6D6D6D8D8D8D8D8D8D8D8D8C3C3C3C3C3C3C3C3C3B7B7B7 +B7B7B7B7B7B7B0B0B0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0CDCDCDCDCDCDCDCDCDC9C9C9 +C9C9C9C9C9C9979797979797979797676767676767676767676767919191919191919191CACACA +CACACACACACADFDFDFDFDFDFDFDFDFDCDCDCDCDCDCDCDCDCDCDCDCD3D3D3D3D3D3D3D3D3C5C5C5 +C5C5C5C5C5C5BEBEBEBEBEBEBEBEBEAFAFAFAFAFAFAFAFAFA3A3A3A3A3A3A3A3A3A3A3A3ABABAB +ABABABABABABACACACACACACACACACA7A7A7A7A7A7A7A7A7B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4 +B4B4B4B4B4B4ADADADADADADADADADA8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7A1A1A1A1A1A1 +A1A1A1A1A1A1999999999999999999888888888888888888878787878787878787949494949494 +9494949696969696969696969696969999999999999999999B9B9B9B9B9B9B9B9BA3A3A3A3A3A3 +A3A3A3A5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A8A8A8ACACACACACACACACACABABABABABAB +ABABABAFAFAFAFAFAFAFAFAFABABABABABABABABABABABABB2B2B2B2B2B2B2B2B29A9A9A9A9A9A +9A9A9A686868686868686868424242424242424242313131313131313131313131313131313131 +3131313B3B3B3B3B3B3B3B3B474747474747474747525252525252525252565656565656565656 +5656565858585858585858585D5D5D5D5D5D5D5D5D6464646464646464646E6E6E6E6E6E6E6E6E +6E6E6E7777777777777777777E7E7E7E7E7E7E7E7E8282828282828282827F7F7F7F7F7F7F7F7F +7E7E7E7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A818181818181818181 +8484848484848484848787878787878787878787879292929292929292929C9C9C9C9C9C9C9C9C +9E9E9E9E9E9E9E9E9E999999999999999999999999939393939393939393919191919191919191 +9393939393939393939393939393939393938080808080808080808080804F4F4F4F4F4F4F4F4F +4646464646464646466666666666666666667A7A7A7A7A7A7A7A7A868686868686868686868686 +A3A3A3A3A3A3A3A3A3C6C6C6C6C6C6C6C6C6E7E7E7E7E7E7E7E7E7F3F3F3F3F3F3F3F3F3F3F3F3 +E4E4E4E4E4E4E4E4E4EDEDEDEDEDEDEDEDEDF7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9 +F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F8F8F8 +F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4F4F4F4C8C8C8C8C8C8C8C8C8CBCBCB +CBCBCBCBCBCBCACACACACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC5C5C5 +C5C5C5C5C5C5B6B6B6B6B6B6B6B6B6AEAEAEAEAEAEAEAEAEBCBCBCBCBCBCBCBCBCBCBCBCD6D6D6 +D6D6D6D6D6D6D8D8D8D8D8D8D8D8D8C3C3C3C3C3C3C3C3C3B7B7B7B7B7B7B7B7B7B0B0B0B0B0B0 +B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0CDCDCDCDCDCDCDCDCDC9C9C9C9C9C9C9C9C9979797979797 +979797676767676767676767676767919191919191919191CACACACACACACACACADFDFDFDFDFDF +DFDFDFDCDCDCDCDCDCDCDCDCDCDCDCD3D3D3D3D3D3D3D3D3C5C5C5C5C5C5C5C5C5BEBEBEBEBEBE +BEBEBEAFAFAFAFAFAFAFAFAFA3A3A3A3A3A3A3A3A3A3A3A3ABABABABABABABABABACACACACACAC +ACACACA7A7A7A7A7A7A7A7A7B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4B4B4B4B4B4B4ADADADADADAD +ADADADA8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7A1A1A1A1A1A1A1A1A1A1A1A1999999999999 +999999888888888888888888878787878787878787949494949494949494969696969696969696 +9696969999999999999999999B9B9B9B9B9B9B9B9BA3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A5 +A8A8A8A8A8A8A8A8A8A8A8A8ACACACACACACACACACABABABABABABABABABAFAFAFAFAFAFAFAFAF +ABABABABABABABABABABABABB2B2B2B2B2B2B2B2B29A9A9A9A9A9A9A9A9A686868686868686868 +4242424242424242423131313131313131313131313131313131313131313B3B3B3B3B3B3B3B3B +474747474747474747525252525252525252565656565656565656565656585858585858585858 +5D5D5D5D5D5D5D5D5D6464646464646464646E6E6E6E6E6E6E6E6E6E6E6E777777777777777777 +7E7E7E7E7E7E7E7E7E8282828282828282827F7F7F7F7F7F7F7F7F7E7E7E7E7E7E7E7E7E7E7E7E +7B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A818181818181818181848484848484848484878787 +8787878787878787879292929292929292929C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9E999999 +999999999999999999939393939393939393919191919191919191939393939393939393939393 +9393939393938080808080808080808080804F4F4F4F4F4F4F4F4F464646464646464646666666 +6666666666667A7A7A7A7A7A7A7A7A868686868686868686868686A3A3A3A3A3A3A3A3A3C6C6C6 +C6C6C6C6C6C6E7E7E7E7E7E7E7E7E7F3F3F3F3F3F3F3F3F3F3F3F3E4E4E4E4E4E4E4E4E4EDEDED +EDEDEDEDEDEDF7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7 +F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9 +F9F9F9F9F9F9F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7 +F7F7F7F7F7F7F4F4F4F4F4F4F4F4F4C8C8C8C8C8C8C8C8C8CBCBCBCBCBCBCBCBCBCACACACACACA +CACACACBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCCCCCCCCCCCC +CCCCCCCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5B6B6B6B6B6B6 +B6B6B6AEAEAEAEAEAEAEAEAEBCBCBCBCBCBCBCBCBCBCBCBCD6D6D6D6D6D6D6D6D6D8D8D8D8D8D8 +D8D8D8C3C3C3C3C3C3C3C3C3B7B7B7B7B7B7B7B7B7B0B0B0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0 +C0C0C0CDCDCDCDCDCDCDCDCDC9C9C9C9C9C9C9C9C9979797979797979797676767676767676767 +676767919191919191919191CACACACACACACACACADFDFDFDFDFDFDFDFDFDCDCDCDCDCDCDCDCDC +DCDCDCD3D3D3D3D3D3D3D3D3C5C5C5C5C5C5C5C5C5BEBEBEBEBEBEBEBEBEAFAFAFAFAFAFAFAFAF +A3A3A3A3A3A3A3A3A3A3A3A3ABABABABABABABABABACACACACACACACACACA7A7A7A7A7A7A7A7A7 +B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4B4B4B4B4B4B4ADADADADADADADADADA8A8A8A8A8A8A8A8A8 +A7A7A7A7A7A7A7A7A7A1A1A1A1A1A1A1A1A1A1A1A1999999999999999999888888888888888888 +878787878787878787949494949494949494969696969696969696969696999999999999999999 +9B9B9B9B9B9B9B9B9BA3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A8A8A8 +ACACACACACACACACACABABABABABABABABABAFAFAFAFAFAFAFAFAFABABABABABABABABABABABAB +B2B2B2B2B2B2B2B2B29A9A9A9A9A9A9A9A9A686868686868686868424242424242424242313131 +3131313131313131313131313131313131313B3B3B3B3B3B3B3B3B474747474747474747525252 +5252525252525656565656565656565656565858585858585858585D5D5D5D5D5D5D5D5D646464 +6464646464646E6E6E6E6E6E6E6E6E6E6E6E7777777777777777777E7E7E7E7E7E7E7E7E828282 +8282828282827F7F7F7F7F7F7F7F7F7E7E7E7E7E7E7E7E7E7E7E7E7B7B7B7B7B7B7B7B7B7A7A7A +7A7A7A7A7A7A818181818181818181848484848484848484878787878787878787878787929292 +9292929292929C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9E999999999999999999999999939393 +939393939393919191919191919191939393939393939393939393939393939393808080808080 +8080808080804F4F4F4F4F4F4F4F4F4646464646464646466666666666666666667A7A7A7A7A7A +7A7A7A868686868686868686868686A3A3A3A3A3A3A3A3A3C6C6C6C6C6C6C6C6C6E7E7E7E7E7E7 +E7E7E7F3F3F3F3F3F3F3F3F3F3F3F3E4E4E4E4E4E4E4E4E4EDEDEDEDEDEDEDEDEDF7F7F7F7F7F7 +F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 +F7F7F7F7F7F7F7F7F7F7F7F7F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F8F8F8F8F8F8 +F8F8F8F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F4F4F4F4F4F4 +F4F4F4C8C8C8C8C8C8C8C8C8CACACACACACACACACACACACACACACACACACACACACACACACACACACA +CACACACBCBCBCBCBCBCBCBCBCDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCB +CECECECECECECECECECECECEC2C2C2C2C2C2C2C2C2A6A6A6A6A6A6A6A6A69C9C9C9C9C9C9C9C9C +BBBBBBBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDBE4E4E4E4E4E4E4E4E4DADADADADADADADADA +A9A9A9A9A9A9A9A9A9848484848484848484848484B0B1B0B0B1B0B0B1B0DEDEDEDEDEDEDEDEDE +E1E1E1E1E1E1E1E1E1B3B3B3B3B3B3B3B3B3828282828282828282828282A8A8A8A8A8A8A8A8A8 +C7C7C7C7C7C7C7C7C7CDCDCDCDCDCDCDCDCDD1D1D1D1D1D1D1D1D1D1D1D1CCCCCCCCCCCCCCCCCC +B7B7B7B7B7B7B7B7B7B1B1B1B1B1B1B1B1B1B4B4B4B4B4B4B4B4B4B0B1B0B0B1B0B0B1B0B0B1B0 +B0B0B0B0B0B0B0B0B0A7A7A7A7A7A7A7A7A79E9E9E9E9E9E9E9E9EA7A7A7A7A7A7A7A7A7A8A8A8 +A8A8A8A8A8A8A8A8A8A5A5A5A5A5A5A5A5A5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0A0A0 +A0A0A0A0A0A0A0A0A09292929292929292928383838383838383837C7C7C7C7C7C7C7C7C858585 +858585858585919191919191919191919191909090909090909090929292929292929292989898 +989898989898A2A2A2A2A2A2A2A2A2A7A7A7A7A7A7A7A7A7A7A7A7ABABABABABABABABABADADAD +ADADADADADADAFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0B0B1B0ADADADADADADADADAD9B9B9B +9B9B9B9B9B9B5A5A5A5A5A5A5A5A5A3C3C3C3C3C3C3C3C3C373737373737373737373737363636 +3636363636363636363636363636363C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C585858585858 +5858585858586161616161616161616565656565656565656868686868686868686F6F6F6F6F6F +6F6F6F6F6F6F7878787878787878787E7E7E7E7E7E7E7E7E8080808080808080807B7B7B7B7B7B +7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7979797979797979797A7A7A7A7A7A7A7A7A838383838383 +8383838888888888888888889090909090909090909090909898989898989898989C9C9C9C9C9C +9C9C9C9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B9B9B9B999999999999999999939393939393 +9393939696969696969696969595959595959595958080808080808080808080804E4E4E4E4E4E +4E4E4E424242424242424242666666666666666666828282828282828282949494949494949494 +949494AAAAAAAAAAAAAAAAAACACACACACACACACACADADADADADADADADADAEDEDEDEDEDEDEDEDED +EDEDEDDBDBDBDBDBDBDBDBDBD3D3D3D3D3D3D3D3D3EAEAEAEAEAEAEAEAEAF5F5F5F5F5F5F5F5F5 +F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6 +F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7 +F7F7F7F7F7F7F7F7F7F8F8F8F8F8F8F8F8F8F8F8F8F3F3F3F3F3F3F3F3F3BBBBBBBBBBBBBBBBBB +CACACACACACACACACACACACACACACACACACACACACACACACACACACACACACACBCBCBCBCBCBCBCBCB +CDCDCDCDCDCDCDCDCDCCCCCCCCCCCCCCCCCCCBCBCBCBCBCBCBCBCBCECECECECECECECECECECECE +C2C2C2C2C2C2C2C2C2A6A6A6A6A6A6A6A6A69C9C9C9C9C9C9C9C9CBBBBBBBBBBBBBBBBBBBBBBBB +DBDBDBDBDBDBDBDBDBE4E4E4E4E4E4E4E4E4DADADADADADADADADAA9A9A9A9A9A9A9A9A9848484 +848484848484848484B0B1B0B0B1B0B0B1B0DEDEDEDEDEDEDEDEDEE1E1E1E1E1E1E1E1E1B3B3B3 +B3B3B3B3B3B3828282828282828282828282A8A8A8A8A8A8A8A8A8C7C7C7C7C7C7C7C7C7CDCDCD +CDCDCDCDCDCDD1D1D1D1D1D1D1D1D1D1D1D1CCCCCCCCCCCCCCCCCCB7B7B7B7B7B7B7B7B7B1B1B1 +B1B1B1B1B1B1B4B4B4B4B4B4B4B4B4B0B1B0B0B1B0B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0A7A7A7 +A7A7A7A7A7A79E9E9E9E9E9E9E9E9EA7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8A8A8A8A5A5A5 +A5A5A5A5A5A5AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0A0A0A0A0A0A0A0A0A0A0A0929292 +9292929292928383838383838383837C7C7C7C7C7C7C7C7C858585858585858585919191919191 +919191919191909090909090909090929292929292929292989898989898989898A2A2A2A2A2A2 +A2A2A2A7A7A7A7A7A7A7A7A7A7A7A7ABABABABABABABABABADADADADADADADADADAFAFAFAFAFAF +AFAFAFB0B1B0B0B1B0B0B1B0B0B1B0ADADADADADADADADAD9B9B9B9B9B9B9B9B9B5A5A5A5A5A5A +5A5A5A3C3C3C3C3C3C3C3C3C373737373737373737373737363636363636363636363636363636 +3636363C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4C585858585858585858585858616161616161 +6161616565656565656565656868686868686868686F6F6F6F6F6F6F6F6F6F6F6F787878787878 +7878787E7E7E7E7E7E7E7E7E8080808080808080807B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B +7B7B7B7979797979797979797A7A7A7A7A7A7A7A7A838383838383838383888888888888888888 +9090909090909090909090909898989898989898989C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C +9B9B9B9B9B9B9B9B9B9B9B9B999999999999999999939393939393939393969696969696969696 +9595959595959595958080808080808080808080804E4E4E4E4E4E4E4E4E424242424242424242 +666666666666666666828282828282828282949494949494949494949494AAAAAAAAAAAAAAAAAA +CACACACACACACACACADADADADADADADADADAEDEDEDEDEDEDEDEDEDEDEDEDDBDBDBDBDBDBDBDBDB +D3D3D3D3D3D3D3D3D3EAEAEAEAEAEAEAEAEAF5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F8F8F8F8F8F8F8F8F8F8F8F8 +F8F8F8F8F8F8F8F8F8F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F8F8F8 +F8F8F8F8F8F8F8F8F8F3F3F3F3F3F3F3F3F3BBBBBBBBBBBBBBBBBBC9C9C9C9C9C9C9C9C9CACACA +CACACACACACACACACACACACACACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCFCFCF +CFCFCFCFCFCFD6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6CBCBCBCBCBCBCBCBCBB5B5B5 +B5B5B5B5B5B5AFAFAFAFAFAFAFAFAFC3C3C3C3C3C3C3C3C3C3C3C3D7D7D7D7D7D7D7D7D7E1E1E1 +E1E1E1E1E1E1D3D3D3D3D3D3D3D3D39B9B9B9B9B9B9B9B9B717171717171717171717171A6A6A6 +A6A6A6A6A6A6DEDEDEDEDEDEDEDEDEEAEAEAEAEAEAEAEAEADDDDDDDDDDDDDDDDDDBABABABABABA +BABABABABABAC5C5C5C5C5C5C5C5C5D6D6D5D6D6D5D6D6D5CBCBCBCBCBCBCBCBCBB7B7B7B7B7B7 +B7B7B7B7B7B7B1B1B1B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5BBBBBBBBBBBBBBBBBBC4C4C4C4C4C4 +C4C4C4C7C7C7C7C7C7C7C7C7C7C7C7BDBDBDBDBDBDBDBDBDAAAAAAAAAAAAAAAAAAA6A6A6A6A6A6 +A6A6A6A1A1A1A1A1A1A1A1A19C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9CA8A8A8A8A8A8 +A8A8A8A7A7A7A7A7A7A7A7A79797979797979797979797978D8D8D8D8D8D8D8D8D888888888888 +8888888888888888888888887C7C7C7C7C7C7C7C7C8080808080808080808080808C8C8C8C8C8C +8C8C8C919191919191919191929292929292929292999999999999999999A5A5A5A5A5A5A5A5A5 +A5A5A5A8A8A8A8A8A8A8A8A8ADADADADADADADADADAFAFAFAFAFAFAFAFAFB2B2B2B2B2B2B2B2B2 +B2B2B2A8A8A8A8A8A8A8A8A88484848484848484844B4B4B4B4B4B4B4B4B3C3C3C3C3C3C3C3C3C +4646464646464646464646465757575757575757575252525252525252524B4B4B4B4B4B4B4B4B +4F4F4F4F4F4F4F4F4F5959595959595959595959596565656565656565656A6A6A6A6A6A6A6A6A +6A6A6A6A6A6A6A6A6A6C6C6C6C6C6C6C6C6C6C6C6C737373737373737373797979797979797979 +7B7B7B7B7B7B7B7B7B787878787878787878787878787878787878787878787878787878787878 +7D7D7D7D7D7D7D7D7D8686868686868686868E8E8E8E8E8E8E8E8E979797979797979797979797 +9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9D9D9D9D9D9D9D9D9D9D9D9D +9A9A9A9A9A9A9A9A9A9696969696969696969999999999999999999696969696969696967D7D7D +7D7D7D7D7D7D7D7D7D4B4B4B4B4B4B4B4B4B464646464646464646707070707070707070949494 +949494949494A5A5A5A5A5A5A5A5A5A5A5A5A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A6A6A6 +A6A6A6A6A6A6D0D0D0D0D0D0D0D0D0D0D0D0C6C6C6C6C6C6C6C6C6A8A8A8A8A8A8A8A8A8CBCBCB +CBCBCBCBCBCBE8E8E8E8E8E8E8E8E8F1F1F1F1F1F1F1F1F1F1F1F1F3F3F3F3F3F3F3F3F3F4F4F4 +F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F3F3F3 +F3F3F3F3F3F3C5C5C5C5C5C5C5C5C5C9C9C9C9C9C9C9C9C9CACACACACACACACACACACACACACACA +CACACACACACACBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCFCFCFCFCFCFCFCFCFD6D6D5D6D6D5 +D6D6D5D6D6D6D6D6D6D6D6D6D6D6D6CBCBCBCBCBCBCBCBCBB5B5B5B5B5B5B5B5B5AFAFAFAFAFAF +AFAFAFC3C3C3C3C3C3C3C3C3C3C3C3D7D7D7D7D7D7D7D7D7E1E1E1E1E1E1E1E1E1D3D3D3D3D3D3 +D3D3D39B9B9B9B9B9B9B9B9B717171717171717171717171A6A6A6A6A6A6A6A6A6DEDEDEDEDEDE +DEDEDEEAEAEAEAEAEAEAEAEADDDDDDDDDDDDDDDDDDBABABABABABABABABABABABAC5C5C5C5C5C5 +C5C5C5D6D6D5D6D6D5D6D6D5CBCBCBCBCBCBCBCBCBB7B7B7B7B7B7B7B7B7B7B7B7B1B1B1B1B1B1 +B1B1B1B5B5B5B5B5B5B5B5B5BBBBBBBBBBBBBBBBBBC4C4C4C4C4C4C4C4C4C7C7C7C7C7C7C7C7C7 +C7C7C7BDBDBDBDBDBDBDBDBDAAAAAAAAAAAAAAAAAAA6A6A6A6A6A6A6A6A6A1A1A1A1A1A1A1A1A1 +9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9CA8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7 +9797979797979797979797978D8D8D8D8D8D8D8D8D888888888888888888888888888888888888 +7C7C7C7C7C7C7C7C7C8080808080808080808080808C8C8C8C8C8C8C8C8C919191919191919191 +929292929292929292999999999999999999A5A5A5A5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8 +ADADADADADADADADADAFAFAFAFAFAFAFAFAFB2B2B2B2B2B2B2B2B2B2B2B2A8A8A8A8A8A8A8A8A8 +8484848484848484844B4B4B4B4B4B4B4B4B3C3C3C3C3C3C3C3C3C464646464646464646464646 +5757575757575757575252525252525252524B4B4B4B4B4B4B4B4B4F4F4F4F4F4F4F4F4F595959 +5959595959595959596565656565656565656A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6C6C6C +6C6C6C6C6C6C6C6C6C7373737373737373737979797979797979797B7B7B7B7B7B7B7B7B787878 +7878787878787878787878787878787878787878787878787878787D7D7D7D7D7D7D7D7D868686 +8686868686868E8E8E8E8E8E8E8E8E9797979797979797979797979B9B9B9B9B9B9B9B9B9B9B9B +9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9D9D9D9D9D9D9D9D9D9D9D9D9A9A9A9A9A9A9A9A9A969696 +9696969696969999999999999999999696969696969696967D7D7D7D7D7D7D7D7D7D7D7D4B4B4B +4B4B4B4B4B4B464646464646464646707070707070707070949494949494949494A5A5A5A5A5A5 +A5A5A5A5A5A5A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A6A6A6A6A6A6A6A6A6D0D0D0D0D0D0 +D0D0D0D0D0D0C6C6C6C6C6C6C6C6C6A8A8A8A8A8A8A8A8A8CBCBCBCBCBCBCBCBCBE8E8E8E8E8E8 +E8E8E8F1F1F1F1F1F1F1F1F1F1F1F1F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5 +F5F5F5F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6 +F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F3F3F3F3F3F3F3F3F3C5C5C5C5C5C5 +C5C5C5C9C9C9C9C9C9C9C9C9CACACACACACACACACACACACACACACACACACACACACACBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCFCFCFCFCFCFCFCFCFD6D6D5D6D6D5D6D6D5D6D6D6D6D6D6D6D6D6 +D6D6D6CBCBCBCBCBCBCBCBCBB5B5B5B5B5B5B5B5B5AFAFAFAFAFAFAFAFAFC3C3C3C3C3C3C3C3C3 +C3C3C3D7D7D7D7D7D7D7D7D7E1E1E1E1E1E1E1E1E1D3D3D3D3D3D3D3D3D39B9B9B9B9B9B9B9B9B +717171717171717171717171A6A6A6A6A6A6A6A6A6DEDEDEDEDEDEDEDEDEEAEAEAEAEAEAEAEAEA +DDDDDDDDDDDDDDDDDDBABABABABABABABABABABABAC5C5C5C5C5C5C5C5C5D6D6D5D6D6D5D6D6D5 +CBCBCBCBCBCBCBCBCBB7B7B7B7B7B7B7B7B7B7B7B7B1B1B1B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5 +BBBBBBBBBBBBBBBBBBC4C4C4C4C4C4C4C4C4C7C7C7C7C7C7C7C7C7C7C7C7BDBDBDBDBDBDBDBDBD +AAAAAAAAAAAAAAAAAAA6A6A6A6A6A6A6A6A6A1A1A1A1A1A1A1A1A19C9C9C9C9C9C9C9C9C9C9C9C +9C9C9C9C9C9C9C9C9CA8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7979797979797979797979797 +8D8D8D8D8D8D8D8D8D8888888888888888888888888888888888887C7C7C7C7C7C7C7C7C808080 +8080808080808080808C8C8C8C8C8C8C8C8C919191919191919191929292929292929292999999 +999999999999A5A5A5A5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8ADADADADADADADADADAFAFAF +AFAFAFAFAFAFB2B2B2B2B2B2B2B2B2B2B2B2A8A8A8A8A8A8A8A8A88484848484848484844B4B4B +4B4B4B4B4B4B3C3C3C3C3C3C3C3C3C464646464646464646464646575757575757575757525252 +5252525252524B4B4B4B4B4B4B4B4B4F4F4F4F4F4F4F4F4F595959595959595959595959656565 +6565656565656A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6A6C6C6C6C6C6C6C6C6C6C6C6C737373 +7373737373737979797979797979797B7B7B7B7B7B7B7B7B787878787878787878787878787878 +7878787878787878787878787878787D7D7D7D7D7D7D7D7D8686868686868686868E8E8E8E8E8E +8E8E8E9797979797979797979797979B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A +9A9A9A9D9D9D9D9D9D9D9D9D9D9D9D9A9A9A9A9A9A9A9A9A969696969696969696999999999999 +9999999696969696969696967D7D7D7D7D7D7D7D7D7D7D7D4B4B4B4B4B4B4B4B4B464646464646 +464646707070707070707070949494949494949494A5A5A5A5A5A5A5A5A5A5A5A5A2A2A2A2A2A2 +A2A2A2A2A2A2A2A2A2A2A2A2A6A6A6A6A6A6A6A6A6D0D0D0D0D0D0D0D0D0D0D0D0C6C6C6C6C6C6 +C6C6C6A8A8A8A8A8A8A8A8A8CBCBCBCBCBCBCBCBCBE8E8E8E8E8E8E8E8E8F1F1F1F1F1F1F1F1F1 +F1F1F1F3F3F3F3F3F3F3F3F3F4F4F4F4F4F4F4F4F4F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6 +F6F6F6F6F6F6F6F6F6F6F6F6F3F3F3F3F3F3F3F3F3C5C5C5C5C5C5C5C5C5CBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBBFBFBFBFBFBFBFBFBFB7B7B7B7B7B7B7B7B7 +CACACACACACACACACADEDEDEDEDEDEDEDEDED7D7D7D7D7D7D7D7D7D7D7D7CECECECECECECECECE +B8B8B8B8B8B8B8B8B89696969696969696969D9D9D9D9D9D9D9D9D9D9D9DCBCBCBCBCBCBCBCBCB +DBDBDBDBDBDBDBDBDBBEBEBEBEBEBEBEBEBE8A8A8A8A8A8A8A8A8A7D7D7D7D7D7D7D7D7D7D7D7D +ACACACACACACACACACCFCFCFCFCFCFCFCFCFDFDFDFDFDFDFDFDFDFE9E9E9E9E9E9E9E9E9D3D3D3 +D3D3D3D3D3D3D3D3D3D6D6D6D6D6D6D6D6D6E4E4E4E4E4E4E4E4E4C9C9C9C9C9C9C9C9C98B8B8B +8B8B8B8B8B8B8B8B8B757575757575757575A7A7A7A7A7A7A7A7A7C5C5C5C5C5C5C5C5C5CBCBCB +CBCBCBCBCBCBD0D0D0D0D0D0D0D0D0D0D0D0C2C2C2C2C2C2C2C2C2B5B5B5B5B5B5B5B5B5B6B6B6 +B6B6B6B6B6B6A5A5A5A5A5A5A5A5A59494949494949494949494949D9D9D9D9D9D9D9D9DA8A8A8 +A8A8A8A8A8A8A5A5A5A5A5A5A5A5A59999999999999999999999999C9C9C9C9C9C9C9C9C999999 +9999999999998D8D8D8D8D8D8D8D8D7C7C7C7C7C7C7C7C7C7979797979797979797979797E7E7E +7E7E7E7E7E7E9090909090909090909292929292929292929696969696969696969F9F9F9F9F9F +9F9F9F9F9F9FA7A7A7A7A7A7A7A7A7A9A9A9A9A9A9A9A9A9ADADADADADADADADADAFAFAFAFAFAF +AFAFAFAFAFAFA8A8A8A8A8A8A8A8A8767676767676767676494949494949494949464646464646 +4646465858585858585858585858587D7D7D7D7D7D7D7D7D898989898989898989878787878787 +8787877E7E7E7E7E7E7E7E7E6B6B6B6B6B6B6B6B6B6B6B6B6969696969696969696C6C6C6C6C6C +6C6C6C6969696969696969696767676767676767676767676868686868686868686D6D6D6D6D6D +6D6D6D717171717171717171727272727272727272757575757575757575757575797979797979 +7979798181818181818181818D8D8D8D8D8D8D8D8D9696969696969696969D9D9D9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9E9E9E9C9C9C9C9C9C9C9C9C9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B979797979797979797 +7D7D7D7D7D7D7D7D7D7D7D7D4C4C4C4C4C4C4C4C4C5050505050505050507F7F7F7F7F7F7F7F7F +9E9E9E9E9E9E9E9E9EAAAAAAAAAAAAAAAAAAAAAAAA8989898989898989895E5E5E5E5E5E5E5E5E +5F605F5F605F5F605F8A8A8A8A8A8A8A8A8A8A8A8A9C9C9C9C9C9C9C9C9C8A8A8A8A8A8A8A8A8A +B5B5B5B5B5B5B5B5B5D5D5D5D5D5D5D5D5D5E4E4E4E4E4E4E4E4E4E4E4E4EEEEEEEEEEEEEEEEEE +F3F3F3F3F3F3F3F3F3F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5 +F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6 +F5F5F5F5F5F5F5F5F5D6D6D5D6D6D5D6D6D5CBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCBCB +CBCBCBCBCBCBCBCBCBBFBFBFBFBFBFBFBFBFB7B7B7B7B7B7B7B7B7CACACACACACACACACADEDEDE +DEDEDEDEDEDED7D7D7D7D7D7D7D7D7D7D7D7CECECECECECECECECEB8B8B8B8B8B8B8B8B8969696 +9696969696969D9D9D9D9D9D9D9D9D9D9D9DCBCBCBCBCBCBCBCBCBDBDBDBDBDBDBDBDBDBBEBEBE +BEBEBEBEBEBE8A8A8A8A8A8A8A8A8A7D7D7D7D7D7D7D7D7D7D7D7DACACACACACACACACACCFCFCF +CFCFCFCFCFCFDFDFDFDFDFDFDFDFDFE9E9E9E9E9E9E9E9E9D3D3D3D3D3D3D3D3D3D3D3D3D6D6D6 +D6D6D6D6D6D6E4E4E4E4E4E4E4E4E4C9C9C9C9C9C9C9C9C98B8B8B8B8B8B8B8B8B8B8B8B757575 +757575757575A7A7A7A7A7A7A7A7A7C5C5C5C5C5C5C5C5C5CBCBCBCBCBCBCBCBCBD0D0D0D0D0D0 +D0D0D0D0D0D0C2C2C2C2C2C2C2C2C2B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6A5A5A5A5A5A5 +A5A5A59494949494949494949494949D9D9D9D9D9D9D9D9DA8A8A8A8A8A8A8A8A8A5A5A5A5A5A5 +A5A5A59999999999999999999999999C9C9C9C9C9C9C9C9C9999999999999999998D8D8D8D8D8D +8D8D8D7C7C7C7C7C7C7C7C7C7979797979797979797979797E7E7E7E7E7E7E7E7E909090909090 +9090909292929292929292929696969696969696969F9F9F9F9F9F9F9F9F9F9F9FA7A7A7A7A7A7 +A7A7A7A9A9A9A9A9A9A9A9A9ADADADADADADADADADAFAFAFAFAFAFAFAFAFAFAFAFA8A8A8A8A8A8 +A8A8A8767676767676767676494949494949494949464646464646464646585858585858585858 +5858587D7D7D7D7D7D7D7D7D8989898989898989898787878787878787877E7E7E7E7E7E7E7E7E +6B6B6B6B6B6B6B6B6B6B6B6B6969696969696969696C6C6C6C6C6C6C6C6C696969696969696969 +6767676767676767676767676868686868686868686D6D6D6D6D6D6D6D6D717171717171717171 +727272727272727272757575757575757575757575797979797979797979818181818181818181 +8D8D8D8D8D8D8D8D8D9696969696969696969D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9C9C9C9C9C9C9C9C9C +9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9797979797979797977D7D7D7D7D7D7D7D7D7D7D7D +4C4C4C4C4C4C4C4C4C5050505050505050507F7F7F7F7F7F7F7F7F9E9E9E9E9E9E9E9E9EAAAAAA +AAAAAAAAAAAAAAAAAA8989898989898989895E5E5E5E5E5E5E5E5E5F605F5F605F5F605F8A8A8A +8A8A8A8A8A8A8A8A8A9C9C9C9C9C9C9C9C9C8A8A8A8A8A8A8A8A8AB5B5B5B5B5B5B5B5B5D5D5D5 +D5D5D5D5D5D5E4E4E4E4E4E4E4E4E4E4E4E4EEEEEEEEEEEEEEEEEEF3F3F3F3F3F3F3F3F3F5F5F5 +F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5D6D6D5 +D6D6D5D6D6D5CECECECECECECECECED2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0D0D0D0B9B9B9 +B9B9B9B9B9B9AFAFAFAFAFAFAFAFAFC0C0C0C0C0C0C0C0C0D2D2D2D2D2D2D2D2D2D9D9D9D9D9D9 +D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7B8B8B8B8B8B8B8B8B88484848484848484848E8E8E8E8E8E +8E8E8E8E8E8ECECECECECECECECECEDFDFDFDFDFDFDFDFDFC8C8C8C8C8C8C8C8C8A8A8A8A8A8A8 +A8A8A89F9F9F9F9F9F9F9F9F9F9F9FB9B9B9B9B9B9B9B9B9C0C0C0C0C0C0C0C0C0C7C7C7C7C7C7 +C7C7C7CACACACACACACACACACACACACACACACACACACACACADDDDDDDDDDDDDDDDDDE3E3E3E3E3E3 +E3E3E3BABABABABABABABABA787878787878787878787878676767676767676767A2A2A2A2A2A2 +A2A2A2CCCCCCCCCCCCCCCCCCD0D0D0D0D0D0D0D0D0CDCDCDCDCDCDCDCDCDCDCDCDC5C5C5C5C5C5 +C5C5C5BABABABABABABABABAB2B2B2B2B2B2B2B2B29F9F9F9F9F9F9F9F9F959595959595959595 +9595959E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0A2A2A2A2A2A2A2A2A2ADADADADADADADADAD +ADADADB2B2B2B2B2B2B2B2B2A2A2A2A2A2A2A2A2A28B8B8B8B8B8B8B8B8B858585858585858585 +898989898989898989898989818181818181818181818181818181818181878787878787878787 +9090909090909090909D9D9D9D9D9D9D9D9D9D9D9DA1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAAA4A4A4A4A4A4A4A4A4767676767676767676 +4C4C4C4C4C4C4C4C4C505050505050505050717171717171717171717171A5A5A5A5A5A5A5A5A5 +BFBFBFBFBFBFBFBFBFC6C6C6C6C6C6C6C6C6BABABABABABABABABA9F9F9F9F9F9F9F9F9F9F9F9F +848484848484848484707070707070707070686868686868686868656565656565656565656565 +6262626262626262626565656565656565656B6B6B6B6B6B6B6B6B6F6F6F6F6F6F6F6F6F767676 +7676767676767676768080808080808080808C8C8C8C8C8C8C8C8C9696969696969696969D9D9D +9D9D9D9D9D9DA0A0A0A0A0A0A0A0A0A0A0A0A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A2A2A2 +A2A2A2A2A2A2A0A0A0A0A0A0A0A0A0A0A0A09D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9D9D9D +9D9D9D9D9D9D959595959595959595767676767676767676767676505050505050505050646464 +646464646464888888888888888888A5A5A5A5A5A5A5A5A5ABABABABABABABABABABABAB777777 +7777777777774545454545454545454848484848484848486A6A6A6A6A6A6A6A6A6A6A6A969696 +969696969696A1A1A1A1A1A1A1A1A1C0C0C0C0C0C0C0C0C0CBCBCBCBCBCBCBCBCBCFCFCFCFCFCF +CFCFCFCFCFCFDCDCDCDCDCDCDCDCDCEAEAEAEAEAEAEAEAEAEFEFEFEFEFEFEFEFEFF5F5F5F5F5F5 +F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F3F3F3F3F3F3F3F3F3C8C8C8C8C8C8C8C8C8CECECECECECE +CECECED2D2D2D2D2D2D2D2D2D0D0D0D0D0D0D0D0D0D0D0D0B9B9B9B9B9B9B9B9B9AFAFAFAFAFAF +AFAFAFC0C0C0C0C0C0C0C0C0D2D2D2D2D2D2D2D2D2D9D9D9D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7 +D7D7D7B8B8B8B8B8B8B8B8B88484848484848484848E8E8E8E8E8E8E8E8E8E8E8ECECECECECECE +CECECEDFDFDFDFDFDFDFDFDFC8C8C8C8C8C8C8C8C8A8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F +9F9F9FB9B9B9B9B9B9B9B9B9C0C0C0C0C0C0C0C0C0C7C7C7C7C7C7C7C7C7CACACACACACACACACA +CACACACACACACACACACACACADDDDDDDDDDDDDDDDDDE3E3E3E3E3E3E3E3E3BABABABABABABABABA +787878787878787878787878676767676767676767A2A2A2A2A2A2A2A2A2CCCCCCCCCCCCCCCCCC +D0D0D0D0D0D0D0D0D0CDCDCDCDCDCDCDCDCDCDCDCDC5C5C5C5C5C5C5C5C5BABABABABABABABABA +B2B2B2B2B2B2B2B2B29F9F9F9F9F9F9F9F9F9595959595959595959595959E9E9E9E9E9E9E9E9E +A0A0A0A0A0A0A0A0A0A2A2A2A2A2A2A2A2A2ADADADADADADADADADADADADB2B2B2B2B2B2B2B2B2 +A2A2A2A2A2A2A2A2A28B8B8B8B8B8B8B8B8B858585858585858585898989898989898989898989 +8181818181818181818181818181818181818787878787878787879090909090909090909D9D9D +9D9D9D9D9D9D9D9D9DA1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8AAAAAA +AAAAAAAAAAAAAAAAAAA4A4A4A4A4A4A4A4A47676767676767676764C4C4C4C4C4C4C4C4C505050 +505050505050717171717171717171717171A5A5A5A5A5A5A5A5A5BFBFBFBFBFBFBFBFBFC6C6C6 +C6C6C6C6C6C6BABABABABABABABABA9F9F9F9F9F9F9F9F9F9F9F9F848484848484848484707070 +707070707070686868686868686868656565656565656565656565626262626262626262656565 +6565656565656B6B6B6B6B6B6B6B6B6F6F6F6F6F6F6F6F6F767676767676767676767676808080 +8080808080808C8C8C8C8C8C8C8C8C9696969696969696969D9D9D9D9D9D9D9D9DA0A0A0A0A0A0 +A0A0A0A0A0A0A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A0A0A0A0A0A0 +A0A0A0A0A0A09D9D9D9D9D9D9D9D9D9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D959595959595 +959595767676767676767676767676505050505050505050646464646464646464888888888888 +888888A5A5A5A5A5A5A5A5A5ABABABABABABABABABABABAB777777777777777777454545454545 +4545454848484848484848486A6A6A6A6A6A6A6A6A6A6A6A969696969696969696A1A1A1A1A1A1 +A1A1A1C0C0C0C0C0C0C0C0C0CBCBCBCBCBCBCBCBCBCFCFCFCFCFCFCFCFCFCFCFCFDCDCDCDCDCDC +DCDCDCEAEAEAEAEAEAEAEAEAEFEFEFEFEFEFEFEFEFF5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6 +F6F6F6F7F7F7F7F7F7F7F7F7F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6 +F6F6F6F3F3F3F3F3F3F3F3F3C8C8C8C8C8C8C8C8C8CECECECECECECECECED2D2D2D2D2D2D2D2D2 +D0D0D0D0D0D0D0D0D0D0D0D0B9B9B9B9B9B9B9B9B9AFAFAFAFAFAFAFAFAFC0C0C0C0C0C0C0C0C0 +D2D2D2D2D2D2D2D2D2D9D9D9D9D9D9D9D9D9D9D9D9D7D7D7D7D7D7D7D7D7B8B8B8B8B8B8B8B8B8 +8484848484848484848E8E8E8E8E8E8E8E8E8E8E8ECECECECECECECECECEDFDFDFDFDFDFDFDFDF +C8C8C8C8C8C8C8C8C8A8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F9F9F9FB9B9B9B9B9B9B9B9B9 +C0C0C0C0C0C0C0C0C0C7C7C7C7C7C7C7C7C7CACACACACACACACACACACACACACACACACACACACACA +DDDDDDDDDDDDDDDDDDE3E3E3E3E3E3E3E3E3BABABABABABABABABA787878787878787878787878 +676767676767676767A2A2A2A2A2A2A2A2A2CCCCCCCCCCCCCCCCCCD0D0D0D0D0D0D0D0D0CDCDCD +CDCDCDCDCDCDCDCDCDC5C5C5C5C5C5C5C5C5BABABABABABABABABAB2B2B2B2B2B2B2B2B29F9F9F +9F9F9F9F9F9F9595959595959595959595959E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0A2A2A2 +A2A2A2A2A2A2ADADADADADADADADADADADADB2B2B2B2B2B2B2B2B2A2A2A2A2A2A2A2A2A28B8B8B +8B8B8B8B8B8B858585858585858585898989898989898989898989818181818181818181818181 +8181818181818787878787878787879090909090909090909D9D9D9D9D9D9D9D9D9D9D9DA1A1A1 +A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAAA4A4A4 +A4A4A4A4A4A47676767676767676764C4C4C4C4C4C4C4C4C505050505050505050717171717171 +717171717171A5A5A5A5A5A5A5A5A5BFBFBFBFBFBFBFBFBFC6C6C6C6C6C6C6C6C6BABABABABABA +BABABA9F9F9F9F9F9F9F9F9F9F9F9F848484848484848484707070707070707070686868686868 +6868686565656565656565656565656262626262626262626565656565656565656B6B6B6B6B6B +6B6B6B6F6F6F6F6F6F6F6F6F7676767676767676767676768080808080808080808C8C8C8C8C8C +8C8C8C9696969696969696969D9D9D9D9D9D9D9D9DA0A0A0A0A0A0A0A0A0A0A0A0A2A2A2A2A2A2 +A2A2A2A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2A0A0A0A0A0A0A0A0A0A0A0A09D9D9D9D9D9D +9D9D9D9C9C9C9C9C9C9C9C9C9D9D9D9D9D9D9D9D9D959595959595959595767676767676767676 +767676505050505050505050646464646464646464888888888888888888A5A5A5A5A5A5A5A5A5 +ABABABABABABABABABABABAB777777777777777777454545454545454545484848484848484848 +6A6A6A6A6A6A6A6A6A6A6A6A969696969696969696A1A1A1A1A1A1A1A1A1C0C0C0C0C0C0C0C0C0 +CBCBCBCBCBCBCBCBCBCFCFCFCFCFCFCFCFCFCFCFCFDCDCDCDCDCDCDCDCDCEAEAEAEAEAEAEAEAEA +EFEFEFEFEFEFEFEFEFF5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F7F7F7F7F7F7F7F7F7 +F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F3F3F3F3F3F3F3F3F3 +C8C8C8C8C8C8C8C8C8D3D3D3D3D3D3D3D3D3DBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8D8D8D8 +C4C4C4C4C4C4C4C4C4A8A8A8A8A8A8A8A8A8929292929292929292B1B1B1B1B1B1B1B1B1DDDDDD +DDDDDDDDDDDDDDDDDDE7E7E7E7E7E7E7E7E7CECECECECECECECECEA1A1A1A1A1A1A1A1A1AFAFAF +AFAFAFAFAFAFAFAFAFD4D4D4D4D4D4D4D4D4DEDEDEDEDEDEDEDEDED2D2D2D2D2D2D2D2D2CDCDCD +CDCDCDCDCDCDC9C9C9C9C9C9C9C9C9C9C9C9C8C8C8C8C8C8C8C8C8BBBBBBBBBBBBBBBBBBA7A7A7 +A7A7A7A7A7A78B8B8B8B8B8B8B8B8BA8A8A8A8A8A8A8A8A8A8A8A8DADADADADADADADADAE8E8E8 +E8E8E8E8E8E8B2B2B2B2B2B2B2B2B2707070707070707070707070868686868686868686BCBCBC +BCBCBCBCBCBCCFCFCFCFCFCFCFCFCFD7D7D7D7D7D7D7D7D7D1D1D1D1D1D1D1D1D1D1D1D1C7C7C7 +C7C7C7C7C7C7B8B8B8B8B8B8B8B8B8A4A4A4A4A4A4A4A4A49A9A9A9A9A9A9A9A9A999999999999 +999999999999979797979797979797949494949494949494A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0 +B0B0B0B0B0B0B1B1B1B1B1B1B1B1B19D9D9D9D9D9D9D9D9D9090909090909090908E8E8E8E8E8E +8E8E8E8686868686868686868686867E7E7E7E7E7E7E7E7E767676767676767676717171717171 +7171718484848484848484849393939393939393939393939B9B9B9B9B9B9B9B9B9E9E9E9E9E9E +9E9E9EA2A2A2A2A2A2A2A2A2A4A4A4A4A4A4A4A4A4A4A4A49D9D9D9D9D9D9D9D9D787878787878 +7878785454545454545454545E5E5E5E5E5E5E5E5E858585858585858585858585B4B4B4B4B4B4 +B4B4B4CCCCCCCCCCCCCCCCCCE0E0E0E0E0E0E0E0E0E4E4E4E4E4E4E4E4E4D3D3D3D3D3D3D3D3D3 +D3D3D3B8B8B8B8B8B8B8B8B8828282828282828282696969696969696969656565656565656565 +6565656464646464646464646767676767676767676E6E6E6E6E6E6E6E6E777777777777777777 +8080808080808080808080808A8A8A8A8A8A8A8A8A9292929292929292929A9A9A9A9A9A9A9A9A +A1A1A1A1A1A1A1A1A1A6A6A6A6A6A6A6A6A6A6A6A6A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A6A6A6A6A6A6A6A6A6A3A3A3A3A3A3A3A3A3A3A3A39E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D +9E9E9E9E9E9E9E9E9E9292929292929292926D6D6D6D6D6D6D6D6D6D6D6D5C5C5C5C5C5C5C5C5C +7676767676767676768F8F8F8F8F8F8F8F8FB3B3B3B3B3B3B3B3B3ACACACACACACACACACACACAC +6F6F6F6F6F6F6F6F6F4747474747474747474F4F4F4F4F4F4F4F4F707070707070707070707070 +9C9C9C9C9C9C9C9C9CB1B1B1B1B1B1B1B1B1CACACACACACACACACAC3C3C3C3C3C3C3C3C3AEAEAE +AEAEAEAEAEAEAEAEAEBCBCBCBCBCBCBCBCBCD4D4D4D4D4D4D4D4D4DBDBDBDBDBDBDBDBDBEDEDED +EDEDEDEDEDEDF5F5F5F5F5F5F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F5F5F5 +F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5D2D2D2D2D2D2D2D2D2D3D3D3 +D3D3D3D3D3D3DBDBDBDBDBDBDBDBDBD8D8D8D8D8D8D8D8D8D8D8D8C4C4C4C4C4C4C4C4C4A8A8A8 +A8A8A8A8A8A8929292929292929292B1B1B1B1B1B1B1B1B1DDDDDDDDDDDDDDDDDDDDDDDDE7E7E7 +E7E7E7E7E7E7CECECECECECECECECEA1A1A1A1A1A1A1A1A1AFAFAFAFAFAFAFAFAFAFAFAFD4D4D4 +D4D4D4D4D4D4DEDEDEDEDEDEDEDEDED2D2D2D2D2D2D2D2D2CDCDCDCDCDCDCDCDCDC9C9C9C9C9C9 +C9C9C9C9C9C9C8C8C8C8C8C8C8C8C8BBBBBBBBBBBBBBBBBBA7A7A7A7A7A7A7A7A78B8B8B8B8B8B +8B8B8BA8A8A8A8A8A8A8A8A8A8A8A8DADADADADADADADADAE8E8E8E8E8E8E8E8E8B2B2B2B2B2B2 +B2B2B2707070707070707070707070868686868686868686BCBCBCBCBCBCBCBCBCCFCFCFCFCFCF +CFCFCFD7D7D7D7D7D7D7D7D7D1D1D1D1D1D1D1D1D1D1D1D1C7C7C7C7C7C7C7C7C7B8B8B8B8B8B8 +B8B8B8A4A4A4A4A4A4A4A4A49A9A9A9A9A9A9A9A9A999999999999999999999999979797979797 +979797949494949494949494A0A0A0A0A0A0A0A0A0B0B0B0B0B0B0B0B0B0B0B0B0B1B1B1B1B1B1 +B1B1B19D9D9D9D9D9D9D9D9D9090909090909090908E8E8E8E8E8E8E8E8E868686868686868686 +8686867E7E7E7E7E7E7E7E7E767676767676767676717171717171717171848484848484848484 +9393939393939393939393939B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9EA2A2A2A2A2A2A2A2A2 +A4A4A4A4A4A4A4A4A4A4A4A49D9D9D9D9D9D9D9D9D787878787878787878545454545454545454 +5E5E5E5E5E5E5E5E5E858585858585858585858585B4B4B4B4B4B4B4B4B4CCCCCCCCCCCCCCCCCC +E0E0E0E0E0E0E0E0E0E4E4E4E4E4E4E4E4E4D3D3D3D3D3D3D3D3D3D3D3D3B8B8B8B8B8B8B8B8B8 +828282828282828282696969696969696969656565656565656565656565646464646464646464 +6767676767676767676E6E6E6E6E6E6E6E6E777777777777777777808080808080808080808080 +8A8A8A8A8A8A8A8A8A9292929292929292929A9A9A9A9A9A9A9A9AA1A1A1A1A1A1A1A1A1A6A6A6 +A6A6A6A6A6A6A6A6A6A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A6A6A6A6A6A6A6A6A6A3A3A3 +A3A3A3A3A3A3A3A3A39E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E929292 +9292929292926D6D6D6D6D6D6D6D6D6D6D6D5C5C5C5C5C5C5C5C5C7676767676767676768F8F8F +8F8F8F8F8F8FB3B3B3B3B3B3B3B3B3ACACACACACACACACACACACAC6F6F6F6F6F6F6F6F6F474747 +4747474747474F4F4F4F4F4F4F4F4F7070707070707070707070709C9C9C9C9C9C9C9C9CB1B1B1 +B1B1B1B1B1B1CACACACACACACACACAC3C3C3C3C3C3C3C3C3AEAEAEAEAEAEAEAEAEAEAEAEBCBCBC +BCBCBCBCBCBCD4D4D4D4D4D4D4D4D4DBDBDBDBDBDBDBDBDBEDEDEDEDEDEDEDEDEDF5F5F5F5F5F5 +F5F5F5F5F5F5F7F7F7F7F7F7F7F7F7F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6 +F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5D2D2D2D2D2D2D2D2D2D7D7D7D7D7D7D7D7D7DFDFDFDFDFDF +DFDFDFD7D7D7D7D7D7D7D7D7D7D7D7C2C2C2C2C2C2C2C2C2949494949494949494848484848484 +848484B3B3B3B3B3B3B3B3B3DBDBDBDBDBDBDBDBDBDBDBDBE1E1E1E1E1E1E1E1E1E1E1E1E1E1E1 +E1E1E1D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0 +D0D0D0B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9D0D0D0D0D0D0D0D0D0D0D0D0D2D2D2D2D2D2 +D2D2D2BFBFBFBFBFBFBFBFBF9393939393939393936969696969696969698F8F8F8F8F8F8F8F8F +8F8F8FC9C9C9C9C9C9C9C9C9E3E3E3E3E3E3E3E3E3D1D1D1D1D1D1D1D1D19B9B9B9B9B9B9B9B9B +9B9B9BAEAEAEAEAEAEAEAEAED6D6D6D6D6D6D6D6D6DADADADADADADADADADEDEDEDEDEDEDEDEDE +DBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBAEAEAEAEAEAEAEAEAE9F9F9F9F9F9F9F9F9F +A9A9A9A9A9A9A9A9A9A5A5A5A5A5A5A5A5A5A5A5A5999999999999999999919191919191919191 +9F9F9F9F9F9F9F9F9FAAAAAAAAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A89B9B9B9B9B9B9B9B9B +9D9D9D9D9D9D9D9D9D979797979797979797858585858585858585858585777777777777777777 +7676767676767676767676767676767676768181818181818181818B8B8B8B8B8B8B8B8B8B8B8B +8E8E8E8E8E8E8E8E8E9595959595959595959C9C9C9C9C9C9C9C9CA2A2A2A2A2A2A2A2A2A2A2A2 +A0A0A0A0A0A0A0A0A0868686868686868686595959595959595959656565656565656565949494 +949494949494949494BABABABABABABABABAC2C2C2C2C2C2C2C2C2C4C4C4C4C4C4C4C4C4D6D6D6 +D6D6D6D6D6D6D9D9D9D9D9D9D9D9D9D9D9D9CECECECECECECECECEA5A5A5A5A5A5A5A5A57B7B7B +7B7B7B7B7B7B6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D7373737373737373737A7A7A +7A7A7A7A7A7A8383838383838383838989898989898989898989898F8F8F8F8F8F8F8F8F979797 +9797979797979E9E9E9E9E9E9E9E9EA6A6A6A6A6A6A6A6A6ABABABABABABABABABABABABADADAD +ADADADADADADAAAAAAAAAAAAAAAAAAA7A7A7A7A7A7A7A7A7A2A2A2A2A2A2A2A2A2A2A2A29F9F9F +9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E898989898989898989696969696969 +696969696969787878787878787878939393939393939393AAAAAAAAAAAAAAAAAACCCCCCCCCCCC +CCCCCCB2B2B2B2B2B2B2B2B2B2B2B27272727272727272725959595959595959596F6F6F6F6F6F +6F6F6F949494949494949494949494A5A5A5A5A5A5A5A5A5AFAFAFAFAFAFAFAFAFC1C1C1C1C1C1 +C1C1C1B3B3B3B3B3B3B3B3B39E9E9E9E9E9E9E9E9E9E9E9EAFAFAFAFAFAFAFAFAFCCCCCCCCCCCC +CCCCCCD0D0D0D0D0D0D0D0D0DDDDDDDDDDDDDDDDDDF0F0F0F0F0F0F0F0F0F0F0F0F5F5F5F5F5F5 +F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5 +F5F5F5DFE0DFDFE0DFDFE0DFD7D7D7D7D7D7D7D7D7DFDFDFDFDFDFDFDFDFD7D7D7D7D7D7D7D7D7 +D7D7D7C2C2C2C2C2C2C2C2C2949494949494949494848484848484848484B3B3B3B3B3B3B3B3B3 +DBDBDBDBDBDBDBDBDBDBDBDBE1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1D4D4D4D4D4D4D4D4D4 +D3D3D3D3D3D3D3D3D3D3D3D3D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0D0D0D0B8B8B8B8B8B8B8B8B8 +B9B9B9B9B9B9B9B9B9D0D0D0D0D0D0D0D0D0D0D0D0D2D2D2D2D2D2D2D2D2BFBFBFBFBFBFBFBFBF +9393939393939393936969696969696969698F8F8F8F8F8F8F8F8F8F8F8FC9C9C9C9C9C9C9C9C9 +E3E3E3E3E3E3E3E3E3D1D1D1D1D1D1D1D1D19B9B9B9B9B9B9B9B9B9B9B9BAEAEAEAEAEAEAEAEAE +D6D6D6D6D6D6D6D6D6DADADADADADADADADADEDEDEDEDEDEDEDEDEDBDBDBDBDBDBDBDBDBDBDBDB +CBCBCBCBCBCBCBCBCBAEAEAEAEAEAEAEAEAE9F9F9F9F9F9F9F9F9FA9A9A9A9A9A9A9A9A9A5A5A5 +A5A5A5A5A5A5A5A5A59999999999999999999191919191919191919F9F9F9F9F9F9F9F9FAAAAAA +AAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A89B9B9B9B9B9B9B9B9B9D9D9D9D9D9D9D9D9D979797 +979797979797858585858585858585858585777777777777777777767676767676767676767676 +7676767676768181818181818181818B8B8B8B8B8B8B8B8B8B8B8B8E8E8E8E8E8E8E8E8E959595 +9595959595959C9C9C9C9C9C9C9C9CA2A2A2A2A2A2A2A2A2A2A2A2A0A0A0A0A0A0A0A0A0868686 +868686868686595959595959595959656565656565656565949494949494949494949494BABABA +BABABABABABAC2C2C2C2C2C2C2C2C2C4C4C4C4C4C4C4C4C4D6D6D6D6D6D6D6D6D6D9D9D9D9D9D9 +D9D9D9D9D9D9CECECECECECECECECEA5A5A5A5A5A5A5A5A57B7B7B7B7B7B7B7B7B6D6D6D6D6D6D +6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D7373737373737373737A7A7A7A7A7A7A7A7A838383838383 +8383838989898989898989898989898F8F8F8F8F8F8F8F8F9797979797979797979E9E9E9E9E9E +9E9E9EA6A6A6A6A6A6A6A6A6ABABABABABABABABABABABABADADADADADADADADADAAAAAAAAAAAA +AAAAAAA7A7A7A7A7A7A7A7A7A2A2A2A2A2A2A2A2A2A2A2A29F9F9F9F9F9F9F9F9F9E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E898989898989898989696969696969696969696969787878787878 +787878939393939393939393AAAAAAAAAAAAAAAAAACCCCCCCCCCCCCCCCCCB2B2B2B2B2B2B2B2B2 +B2B2B27272727272727272725959595959595959596F6F6F6F6F6F6F6F6F949494949494949494 +949494A5A5A5A5A5A5A5A5A5AFAFAFAFAFAFAFAFAFC1C1C1C1C1C1C1C1C1B3B3B3B3B3B3B3B3B3 +9E9E9E9E9E9E9E9E9E9E9E9EAFAFAFAFAFAFAFAFAFCCCCCCCCCCCCCCCCCCD0D0D0D0D0D0D0D0D0 +DDDDDDDDDDDDDDDDDDF0F0F0F0F0F0F0F0F0F0F0F0F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5 +F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5DFE0DFDFE0DFDFE0DF +D7D7D7D7D7D7D7D7D7DFDFDFDFDFDFDFDFDFD7D7D7D7D7D7D7D7D7D7D7D7C2C2C2C2C2C2C2C2C2 +949494949494949494848484848484848484B3B3B3B3B3B3B3B3B3DBDBDBDBDBDBDBDBDBDBDBDB +E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1D4D4D4D4D4D4D4D4D4D3D3D3D3D3D3D3D3D3D3D3D3 +D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0D0D0D0B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9D0D0D0 +D0D0D0D0D0D0D0D0D0D2D2D2D2D2D2D2D2D2BFBFBFBFBFBFBFBFBF939393939393939393696969 +6969696969698F8F8F8F8F8F8F8F8F8F8F8FC9C9C9C9C9C9C9C9C9E3E3E3E3E3E3E3E3E3D1D1D1 +D1D1D1D1D1D19B9B9B9B9B9B9B9B9B9B9B9BAEAEAEAEAEAEAEAEAED6D6D6D6D6D6D6D6D6DADADA +DADADADADADADEDEDEDEDEDEDEDEDEDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBAEAEAE +AEAEAEAEAEAE9F9F9F9F9F9F9F9F9FA9A9A9A9A9A9A9A9A9A5A5A5A5A5A5A5A5A5A5A5A5999999 +9999999999999191919191919191919F9F9F9F9F9F9F9F9FAAAAAAAAAAAAAAAAAAAAAAAAA8A8A8 +A8A8A8A8A8A89B9B9B9B9B9B9B9B9B9D9D9D9D9D9D9D9D9D979797979797979797858585858585 +858585858585777777777777777777767676767676767676767676767676767676818181818181 +8181818B8B8B8B8B8B8B8B8B8B8B8B8E8E8E8E8E8E8E8E8E9595959595959595959C9C9C9C9C9C +9C9C9CA2A2A2A2A2A2A2A2A2A2A2A2A0A0A0A0A0A0A0A0A0868686868686868686595959595959 +595959656565656565656565949494949494949494949494BABABABABABABABABAC2C2C2C2C2C2 +C2C2C2C4C4C4C4C4C4C4C4C4D6D6D6D6D6D6D6D6D6D9D9D9D9D9D9D9D9D9D9D9D9CECECECECECE +CECECEA5A5A5A5A5A5A5A5A57B7B7B7B7B7B7B7B7B6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D6D +6D6D6D7373737373737373737A7A7A7A7A7A7A7A7A838383838383838383898989898989898989 +8989898F8F8F8F8F8F8F8F8F9797979797979797979E9E9E9E9E9E9E9E9EA6A6A6A6A6A6A6A6A6 +ABABABABABABABABABABABABADADADADADADADADADAAAAAAAAAAAAAAAAAAA7A7A7A7A7A7A7A7A7 +A2A2A2A2A2A2A2A2A2A2A2A29F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +898989898989898989696969696969696969696969787878787878787878939393939393939393 +AAAAAAAAAAAAAAAAAACCCCCCCCCCCCCCCCCCB2B2B2B2B2B2B2B2B2B2B2B2727272727272727272 +5959595959595959596F6F6F6F6F6F6F6F6F949494949494949494949494A5A5A5A5A5A5A5A5A5 +AFAFAFAFAFAFAFAFAFC1C1C1C1C1C1C1C1C1B3B3B3B3B3B3B3B3B39E9E9E9E9E9E9E9E9E9E9E9E +AFAFAFAFAFAFAFAFAFCCCCCCCCCCCCCCCCCCD0D0D0D0D0D0D0D0D0DDDDDDDDDDDDDDDDDDF0F0F0 +F0F0F0F0F0F0F0F0F0F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F5F6F6F6F6F6F6F6F6F6F6F6F6 +F6F6F6F6F6F6F6F6F6F5F5F5F5F5F5F5F5F5DFE0DFDFE0DFDFE0DFCBCBCBCBCBCBCBCBCBDFE0DF +DFE0DFDFE0DFDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCBCBCBCBA9A9A9A9A9A9A9A9A9B0B0B0 +B0B0B0B0B0B0D6D6D5D6D6D5D6D6D5D2D2D2D2D2D2D2D2D2D2D2D2C0C0C0C0C0C0C0C0C0C3C3C3 +C3C3C3C3C3C3D3D3D3D3D3D3D3D3D3DADADADADADADADADADADADAD5D5D5D5D5D5D5D5D5BBBBBB +BBBBBBBBBBBB8B8B8B8B8B8B8B8B8B838383838383838383BBBBBBBBBBBBBBBBBBBBBBBBD2D2D2 +D2D2D2D2D2D2C3C3C3C3C3C3C3C3C38A8A8A8A8A8A8A8A8A777777777777777777AAAAAAAAAAAA +AAAAAAAAAAAACBCBCBCBCBCBCBCBCBD9D9D9D9D9D9D9D9D9E0E0E0E0E0E0E0E0E0D5D5D5D5D5D5 +D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0E3E3E3E3E3E3 +E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2DADADADADADADADADABDBDBDBDBDBDBDBDBDB0B0B0B0B0B0 +B0B0B0BDBDBDBDBDBDBDBDBDB4B4B4B4B4B4B4B4B4B4B4B4A3A3A3A3A3A3A3A3A39A9A9A9A9A9A +9A9A9A9F9F9F9F9F9F9F9F9FA5A5A5A5A5A5A5A5A5A5A5A59F9F9F9F9F9F9F9F9F9D9D9D9D9D9D +9D9D9DA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0909090909090909090909090898989898989 +8989898E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D848484848484848484 +8484848181818181818181818A8A8A8A8A8A8A8A8A9696969696969696969E9E9E9E9E9E9E9E9E +9E9E9EA4A4A4A4A4A4A4A4A4919191919191919191646464646464646464636363636363636363 +979797979797979797979797BBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDB8B8B8B8B8B8B8B8B8 +CECECECECECECECECEE4E4E4E4E4E4E4E4E4E4E4E4ECECECECECECECECECD3D3D3D3D3D3D3D3D3 +9F9F9F9F9F9F9F9F9F7C7C7C7C7C7C7C7C7C7C7C7C7777777777777777777A7A7A7A7A7A7A7A7A +8080808080808080808585858585858585858A8A8A8A8A8A8A8A8A8A8A8A919191919191919191 +9A9A9A9A9A9A9A9A9AA2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEAEAEAE +B0B0B0B0B0B0B0B0B0ADADADADADADADADADA8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A1A1A1A1 +9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9D9D9D9D9D9D9D9D9D8B8B8B8B8B8B8B8B8B8F8F8F +8F8F8F8F8F8F8F8F8FB4B4B4B4B4B4B4B4B4CACACACACACACACACAD6D6D6D6D6D6D6D6D6E0E0E0 +E0E0E0E0E0E0AEAEAEAEAEAEAEAEAEAEAEAE7878787878787878787B7B7B7B7B7B7B7B7B989898 +989898989898B6B6B6B6B6B6B6B6B6B6B6B6BBBBBBBBBBBBBBBBBBB3B3B3B3B3B3B3B3B3A9A9A9 +A9A9A9A9A9A9919191919191919191949494949494949494949494BBBBBBBBBBBBBBBBBBD0D0D0 +D0D0D0D0D0D0C5C5C5C5C5C5C5C5C5BFBFBFBFBFBFBFBFBFDCDCDCDCDCDCDCDCDCDCDCDCECECEC +ECECECECECECECECECECECECECECECEEEEEEEEEEEEEEEEEEF3F3F3F3F3F3F3F3F3F3F3F3F2F2F2 +F2F2F2F2F2F2C5C5C5C5C5C5C5C5C5CBCBCBCBCBCBCBCBCBDFE0DFDFE0DFDFE0DFDBDBDBDBDBDB +DBDBDBDBDBDBCBCBCBCBCBCBCBCBCBA9A9A9A9A9A9A9A9A9B0B0B0B0B0B0B0B0B0D6D6D5D6D6D5 +D6D6D5D2D2D2D2D2D2D2D2D2D2D2D2C0C0C0C0C0C0C0C0C0C3C3C3C3C3C3C3C3C3D3D3D3D3D3D3 +D3D3D3DADADADADADADADADADADADAD5D5D5D5D5D5D5D5D5BBBBBBBBBBBBBBBBBB8B8B8B8B8B8B +8B8B8B838383838383838383BBBBBBBBBBBBBBBBBBBBBBBBD2D2D2D2D2D2D2D2D2C3C3C3C3C3C3 +C3C3C38A8A8A8A8A8A8A8A8A777777777777777777AAAAAAAAAAAAAAAAAAAAAAAACBCBCBCBCBCB +CBCBCBD9D9D9D9D9D9D9D9D9E0E0E0E0E0E0E0E0E0D5D5D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5 +D6D6D5D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2 +E2E2E2DADADADADADADADADABDBDBDBDBDBDBDBDBDB0B0B0B0B0B0B0B0B0BDBDBDBDBDBDBDBDBD +B4B4B4B4B4B4B4B4B4B4B4B4A3A3A3A3A3A3A3A3A39A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9F +A5A5A5A5A5A5A5A5A5A5A5A59F9F9F9F9F9F9F9F9F9D9D9D9D9D9D9D9D9DA0A0A0A0A0A0A0A0A0 +A0A0A0A0A0A0A0A0A09090909090909090909090908989898989898989898E8E8E8E8E8E8E8E8E +8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D8D848484848484848484848484818181818181818181 +8A8A8A8A8A8A8A8A8A9696969696969696969E9E9E9E9E9E9E9E9E9E9E9EA4A4A4A4A4A4A4A4A4 +919191919191919191646464646464646464636363636363636363979797979797979797979797 +BBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDB8B8B8B8B8B8B8B8B8CECECECECECECECECEE4E4E4 +E4E4E4E4E4E4E4E4E4ECECECECECECECECECD3D3D3D3D3D3D3D3D39F9F9F9F9F9F9F9F9F7C7C7C +7C7C7C7C7C7C7C7C7C7777777777777777777A7A7A7A7A7A7A7A7A808080808080808080858585 +8585858585858A8A8A8A8A8A8A8A8A8A8A8A9191919191919191919A9A9A9A9A9A9A9A9AA2A2A2 +A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEAEAEAEB0B0B0B0B0B0B0B0B0ADADAD +ADADADADADADA8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A1A1A1A19F9F9F9F9F9F9F9F9F9F9F9F +9F9F9F9F9F9F9D9D9D9D9D9D9D9D9D8B8B8B8B8B8B8B8B8B8F8F8F8F8F8F8F8F8F8F8F8FB4B4B4 +B4B4B4B4B4B4CACACACACACACACACAD6D6D6D6D6D6D6D6D6E0E0E0E0E0E0E0E0E0AEAEAEAEAEAE +AEAEAEAEAEAE7878787878787878787B7B7B7B7B7B7B7B7B989898989898989898B6B6B6B6B6B6 +B6B6B6B6B6B6BBBBBBBBBBBBBBBBBBB3B3B3B3B3B3B3B3B3A9A9A9A9A9A9A9A9A9919191919191 +919191949494949494949494949494BBBBBBBBBBBBBBBBBBD0D0D0D0D0D0D0D0D0C5C5C5C5C5C5 +C5C5C5BFBFBFBFBFBFBFBFBFDCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECEC +ECECECEEEEEEEEEEEEEEEEEEF3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2C5C5C5C5C5C5 +C5C5C5CBCBCBCBCBCBCBCBCBDFE0DFDFE0DFDFE0DFDBDBDBDBDBDBDBDBDBDBDBDBCBCBCBCBCBCB +CBCBCBA9A9A9A9A9A9A9A9A9B0B0B0B0B0B0B0B0B0D6D6D5D6D6D5D6D6D5D2D2D2D2D2D2D2D2D2 +D2D2D2C0C0C0C0C0C0C0C0C0C3C3C3C3C3C3C3C3C3D3D3D3D3D3D3D3D3D3DADADADADADADADADA +DADADAD5D5D5D5D5D5D5D5D5BBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8B838383838383838383 +BBBBBBBBBBBBBBBBBBBBBBBBD2D2D2D2D2D2D2D2D2C3C3C3C3C3C3C3C3C38A8A8A8A8A8A8A8A8A +777777777777777777AAAAAAAAAAAAAAAAAAAAAAAACBCBCBCBCBCBCBCBCBD9D9D9D9D9D9D9D9D9 +E0E0E0E0E0E0E0E0E0D5D5D5D5D5D5D5D5D5D5D5D5D6D6D5D6D6D5D6D6D5D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0D0D0D0E3E3E3E3E3E3E3E3E3E2E2E2E2E2E2E2E2E2E2E2E2DADADADADADADADADA +BDBDBDBDBDBDBDBDBDB0B0B0B0B0B0B0B0B0BDBDBDBDBDBDBDBDBDB4B4B4B4B4B4B4B4B4B4B4B4 +A3A3A3A3A3A3A3A3A39A9A9A9A9A9A9A9A9A9F9F9F9F9F9F9F9F9FA5A5A5A5A5A5A5A5A5A5A5A5 +9F9F9F9F9F9F9F9F9F9D9D9D9D9D9D9D9D9DA0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0909090 +9090909090909090908989898989898989898E8E8E8E8E8E8E8E8E8D8D8D8D8D8D8D8D8D8D8D8D +8D8D8D8D8D8D8484848484848484848484848181818181818181818A8A8A8A8A8A8A8A8A969696 +9696969696969E9E9E9E9E9E9E9E9E9E9E9EA4A4A4A4A4A4A4A4A4919191919191919191646464 +646464646464636363636363636363979797979797979797979797BBBBBBBBBBBBBBBBBBBDBDBD +BDBDBDBDBDBDB8B8B8B8B8B8B8B8B8CECECECECECECECECEE4E4E4E4E4E4E4E4E4E4E4E4ECECEC +ECECECECECECD3D3D3D3D3D3D3D3D39F9F9F9F9F9F9F9F9F7C7C7C7C7C7C7C7C7C7C7C7C777777 +7777777777777A7A7A7A7A7A7A7A7A8080808080808080808585858585858585858A8A8A8A8A8A +8A8A8A8A8A8A9191919191919191919A9A9A9A9A9A9A9A9AA2A2A2A2A2A2A2A2A2A8A8A8A8A8A8 +A8A8A8AEAEAEAEAEAEAEAEAEAEAEAEB0B0B0B0B0B0B0B0B0ADADADADADADADADADA8A8A8A8A8A8 +A8A8A8A1A1A1A1A1A1A1A1A1A1A1A19F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9F9D9D9D9D9D9D +9D9D9D8B8B8B8B8B8B8B8B8B8F8F8F8F8F8F8F8F8F8F8F8FB4B4B4B4B4B4B4B4B4CACACACACACA +CACACAD6D6D6D6D6D6D6D6D6E0E0E0E0E0E0E0E0E0AEAEAEAEAEAEAEAEAEAEAEAE787878787878 +7878787B7B7B7B7B7B7B7B7B989898989898989898B6B6B6B6B6B6B6B6B6B6B6B6BBBBBBBBBBBB +BBBBBBB3B3B3B3B3B3B3B3B3A9A9A9A9A9A9A9A9A9919191919191919191949494949494949494 +949494BBBBBBBBBBBBBBBBBBD0D0D0D0D0D0D0D0D0C5C5C5C5C5C5C5C5C5BFBFBFBFBFBFBFBFBF +DCDCDCDCDCDCDCDCDCDCDCDCECECECECECECECECECECECECECECECECECECEEEEEEEEEEEEEEEEEE +F3F3F3F3F3F3F3F3F3F3F3F3F2F2F2F2F2F2F2F2F2C5C5C5C5C5C5C5C5C5ACACACACACACACACAC +DEDEDEDEDEDEDEDEDEE6E6E6E6E6E6E6E6E6E6E6E6D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9 +E3E3E3E3E3E3E3E3E3E8E9E8E8E9E8E8E9E8CECECECECECECECECECECECE989898989898989898 +7B7B7B7B7B7B7B7B7BA8A8A8A8A8A8A8A8A8D4D4D4D4D4D4D4D4D4D4D4D4D7D7D7D7D7D7D7D7D7 +A8A8A8A8A8A8A8A8A8717171717171717171707070707070707070AEAEAEAEAEAEAEAEAEAEAEAE +D4D4D4D4D4D4D4D4D4D5D5D5D5D5D5D5D5D5A2A2A2A2A2A2A2A2A2949494949494949494CBCBCB +CBCBCBCBCBCBCBCBCBD7D7D7D7D7D7D7D7D7D0D0D0D0D0D0D0D0D0DBDBDBDBDBDBDBDBDBECECEC +ECECECECECECECECECDADADADADADADADADAACACACACACACACACACA8A8A8A8A8A8A8A8A8D5D5D5 +D5D5D5D5D5D5E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4CCCCCCCCCCCCCCCCCCAFAFAF +AFAFAFAFAFAFAEAEAEAEAEAEAEAEAEA8A8A8A8A8A8A8A8A8A8A8A8A3A3A3A3A3A3A3A3A3989898 +9898989898989999999999999999999D9D9D9D9D9D9D9D9D9D9D9D9999999999999999999E9E9E +9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A0A0A0A0A0A0A0A0A09595959595959595959595959E9E9E +9E9E9E9E9E9EA2A2A2A2A2A2A2A2A29F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9E9E9E9E9797979797979797979393939393939393939292929292929292929C9C9C9C9C9C +9C9C9C9C9C9CA3A3A3A3A3A3A3A3A39D9D9D9D9D9D9D9D9D7272727272727272725C5C5C5C5C5C +5C5C5C8C8C8C8C8C8C8C8C8C8C8C8CB4B4B4B4B4B4B4B4B4AFAFAFAFAFAFAFAFAFA4A4A4A4A4A4 +A4A4A4BABABABABABABABABAD1D1D1D1D1D1D1D1D1D1D1D1DFDFDFDFDFDFDFDFDFDBDBDBDBDBDB +DBDBDBB6B6B6B6B6B6B6B6B68787878787878787878787877B7B7B7B7B7B7B7B7B7A7A7A7A7A7A +7A7A7A7F7F7F7F7F7F7F7F7F828282828282828282888888888888888888888888949494949494 +9494949F9F9F9F9F9F9F9F9FA7A7A7A7A7A7A7A7A7ADADADADADADADADADB0B1B0B0B1B0B0B1B0 +B0B1B0B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1A8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F +9F9F9F9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4B1B1B1B1B1B1B1B1B1 +CECECECECECECECECECECECEE6E6E6E6E6E6E6E6E6F2F2F2F2F2F2F2F2F2EDEDEDEDEDEDEDEDED +D2D2D2D2D2D2D2D2D29A9A9A9A9A9A9A9A9A9A9A9A888888888888888888A2A2A2A2A2A2A2A2A2 +B8B8B8B8B8B8B8B8B8C2C2C2C2C2C2C2C2C2C2C2C2CACACACACACACACACABCBCBCBCBCBCBCBCBC +9B9B9B9B9B9B9B9B9B7676767676767676768B8B8B8B8B8B8B8B8B8B8B8BBDBDBDBDBDBDBDBDBD +CACACACACACACACACAB4B4B4B4B4B4B4B4B49D9D9D9D9D9D9D9D9DBABABABABABABABABABABABA +D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7DCDCDCDCDCDCDCDCDCE8E9E8E8E9E8E8E9E8E8E9E8 +EEEEEEEEEEEEEEEEEEC3C3C3C3C3C3C3C3C3ACACACACACACACACACDEDEDEDEDEDEDEDEDEE6E6E6 +E6E6E6E6E6E6E6E6E6D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9D9E3E3E3E3E3E3E3E3E3E8E9E8 +E8E9E8E8E9E8CECECECECECECECECECECECE9898989898989898987B7B7B7B7B7B7B7B7BA8A8A8 +A8A8A8A8A8A8D4D4D4D4D4D4D4D4D4D4D4D4D7D7D7D7D7D7D7D7D7A8A8A8A8A8A8A8A8A8717171 +717171717171707070707070707070AEAEAEAEAEAEAEAEAEAEAEAED4D4D4D4D4D4D4D4D4D5D5D5 +D5D5D5D5D5D5A2A2A2A2A2A2A2A2A2949494949494949494CBCBCBCBCBCBCBCBCBCBCBCBD7D7D7 +D7D7D7D7D7D7D0D0D0D0D0D0D0D0D0DBDBDBDBDBDBDBDBDBECECECECECECECECECECECECDADADA +DADADADADADAACACACACACACACACACA8A8A8A8A8A8A8A8A8D5D5D5D5D5D5D5D5D5E4E4E4E4E4E4 +E4E4E4E4E4E4E4E4E4E4E4E4E4E4E4CCCCCCCCCCCCCCCCCCAFAFAFAFAFAFAFAFAFAEAEAEAEAEAE +AEAEAEA8A8A8A8A8A8A8A8A8A8A8A8A3A3A3A3A3A3A3A3A3989898989898989898999999999999 +9999999D9D9D9D9D9D9D9D9D9D9D9D9999999999999999999E9E9E9E9E9E9E9E9EA1A1A1A1A1A1 +A1A1A1A0A0A0A0A0A0A0A0A09595959595959595959595959E9E9E9E9E9E9E9E9EA2A2A2A2A2A2 +A2A2A29F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E979797979797 +9797979393939393939393939292929292929292929C9C9C9C9C9C9C9C9C9C9C9CA3A3A3A3A3A3 +A3A3A39D9D9D9D9D9D9D9D9D7272727272727272725C5C5C5C5C5C5C5C5C8C8C8C8C8C8C8C8C8C +8C8C8CB4B4B4B4B4B4B4B4B4AFAFAFAFAFAFAFAFAFA4A4A4A4A4A4A4A4A4BABABABABABABABABA +D1D1D1D1D1D1D1D1D1D1D1D1DFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBB6B6B6B6B6B6B6B6B6 +8787878787878787878787877B7B7B7B7B7B7B7B7B7A7A7A7A7A7A7A7A7A7F7F7F7F7F7F7F7F7F +8282828282828282828888888888888888888888889494949494949494949F9F9F9F9F9F9F9F9F +A7A7A7A7A7A7A7A7A7ADADADADADADADADADB0B1B0B0B1B0B0B1B0B0B1B0B3B3B3B3B3B3B3B3B3 +B1B1B1B1B1B1B1B1B1A8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E +A1A1A1A1A1A1A1A1A1A4A4A4A4A4A4A4A4A4B1B1B1B1B1B1B1B1B1CECECECECECECECECECECECE +E6E6E6E6E6E6E6E6E6F2F2F2F2F2F2F2F2F2EDEDEDEDEDEDEDEDEDD2D2D2D2D2D2D2D2D29A9A9A +9A9A9A9A9A9A9A9A9A888888888888888888A2A2A2A2A2A2A2A2A2B8B8B8B8B8B8B8B8B8C2C2C2 +C2C2C2C2C2C2C2C2C2CACACACACACACACACABCBCBCBCBCBCBCBCBC9B9B9B9B9B9B9B9B9B767676 +7676767676768B8B8B8B8B8B8B8B8B8B8B8BBDBDBDBDBDBDBDBDBDCACACACACACACACACAB4B4B4 +B4B4B4B4B4B49D9D9D9D9D9D9D9D9DBABABABABABABABABABABABAD8D8D8D8D8D8D8D8D8D7D7D7 +D7D7D7D7D7D7DCDCDCDCDCDCDCDCDCE8E9E8E8E9E8E8E9E8E8E9E8EEEEEEEEEEEEEEEEEEC3C3C3 +C3C3C3C3C3C3BABABABABABABABABAD5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5BDBDBD +BDBDBDBDBDBDCACACACACACACACACAE8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9CACACACACACA +CACACACACACA8686868686868686866868686868686868689E9E9E9E9E9E9E9E9ED1D1D1D1D1D1 +D1D1D1D1D1D1D6D6D6D6D6D6D6D6D6B0B0B0B0B0B0B0B0B0868686868686868686969696969696 +969696C0C0C0C0C0C0C0C0C0C0C0C0DEDEDEDEDEDEDEDEDEE1E1E1E1E1E1E1E1E1D2D2D2D2D2D2 +D2D2D2CFCFCFCFCFCFCFCFCFD6D6D6D6D6D6D6D6D6D6D6D6CCCCCCCCCCCCCCCCCCCDCDCDCDCDCD +CDCDCDE4E4E4E4E4E4E4E4E4EDEDEDEDEDEDEDEDEDEDEDEDC1C1C1C1C1C1C1C1C17C7C7C7C7C7C +7C7C7C808080808080808080CBCBCBCBCBCBCBCBCBE9E9E9E9E9E9E9E9E9E9E9E9DFDFDFDFDFDF +DFDFDFB6B6B6B6B6B6B6B6B68A8A8A8A8A8A8A8A8A868686868686868686999999999999999999 +999999A8A8A8A8A8A8A8A8A89C9C9C9C9C9C9C9C9C959595959595959595979797979797979797 +9797979E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F999999999999999999 +9A9A9A9A9A9A9A9A9A9A9A9AA8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F989898989898989898 +A2A2A2A2A2A2A2A2A2B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4 +A2A2A2A2A2A2A2A2A2989898989898989898989898A3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A5 +7F7F7F7F7F7F7F7F7F5656565656565656566C6C6C6C6C6C6C6C6C6C6C6C9A9A9A9A9A9A9A9A9A +A4A4A4A4A4A4A4A4A49B9B9B9B9B9B9B9B9BA1A1A1A1A1A1A1A1A1AAAAAAAAAAAAAAAAAAAAAAAA +BBBBBBBBBBBBBBBBBBD2D2D2D2D2D2D2D2D2CBCBCBCBCBCBCBCBCB959595959595959595959595 +7F7F7F7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D808080808080808080818181818181818181878787 +878787878787878787949494949494949494A3A3A3A3A3A3A3A3A3ADADADADADADADADADB4B4B4 +B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3A8A8A8 +A8A8A8A8A8A89E9E9E9E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0ADADADADADADADADADB8B8B8 +B8B8B8B8B8B8D7D7D7D7D7D7D7D7D7EEEEEEEEEEEEEEEEEEEEEEEEF5F5F5F5F5F5F5F5F5EDEDED +EDEDEDEDEDEDD6D6D5D6D6D5D6D6D5A7A7A7A7A7A7A7A7A7909090909090909090909090A2A2A2 +A2A2A2A2A2A2B2B2B2B2B2B2B2B2B2BEBEBEBEBEBEBEBEBEC4C4C4C4C4C4C4C4C4C4C4C4C9C9C9 +C9C9C9C9C9C9C1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B19A9A9A9A9A9A9A9A9AACACACACACAC +ACACACACACACCACACACACACACACACAC4C4C4C4C4C4C4C4C4ACACACACACACACACACA2A2A2A2A2A2 +A2A2A2AFAFAFAFAFAFAFAFAFAFAFAFC6C6C6C6C6C6C6C6C6C9C9C9C9C9C9C9C9C9C2C2C2C2C2C2 +C2C2C2C6C6C6C6C6C6C6C6C6C6C6C6D9D9D9D9D9D9D9D9D9B4B4B4B4B4B4B4B4B4BABABABABABA +BABABAD5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5D5BDBDBDBDBDBDBDBDBDCACACACACACA +CACACAE8E9E8E8E9E8E8E9E8E9E9E9E9E9E9E9E9E9CACACACACACACACACACACACA868686868686 +8686866868686868686868689E9E9E9E9E9E9E9E9ED1D1D1D1D1D1D1D1D1D1D1D1D6D6D6D6D6D6 +D6D6D6B0B0B0B0B0B0B0B0B0868686868686868686969696969696969696C0C0C0C0C0C0C0C0C0 +C0C0C0DEDEDEDEDEDEDEDEDEE1E1E1E1E1E1E1E1E1D2D2D2D2D2D2D2D2D2CFCFCFCFCFCFCFCFCF +D6D6D6D6D6D6D6D6D6D6D6D6CCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDE4E4E4E4E4E4E4E4E4 +EDEDEDEDEDEDEDEDEDEDEDEDC1C1C1C1C1C1C1C1C17C7C7C7C7C7C7C7C7C808080808080808080 +CBCBCBCBCBCBCBCBCBE9E9E9E9E9E9E9E9E9E9E9E9DFDFDFDFDFDFDFDFDFB6B6B6B6B6B6B6B6B6 +8A8A8A8A8A8A8A8A8A868686868686868686999999999999999999999999A8A8A8A8A8A8A8A8A8 +9C9C9C9C9C9C9C9C9C9595959595959595959797979797979797979797979E9E9E9E9E9E9E9E9E +A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9999999999999999999A9A9A9A9A9A9A9A9A9A9A9A +A8A8A8A8A8A8A8A8A89F9F9F9F9F9F9F9F9F989898989898989898A2A2A2A2A2A2A2A2A2B7B7B7 +B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4A2A2A2A2A2A2A2A2A2989898 +989898989898989898A3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A57F7F7F7F7F7F7F7F7F565656 +5656565656566C6C6C6C6C6C6C6C6C6C6C6C9A9A9A9A9A9A9A9A9AA4A4A4A4A4A4A4A4A49B9B9B +9B9B9B9B9B9BA1A1A1A1A1A1A1A1A1AAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBD2D2D2 +D2D2D2D2D2D2CBCBCBCBCBCBCBCBCB9595959595959595959595957F7F7F7F7F7F7F7F7F7D7D7D +7D7D7D7D7D7D808080808080808080818181818181818181878787878787878787878787949494 +949494949494A3A3A3A3A3A3A3A3A3ADADADADADADADADADB4B4B4B4B4B4B4B4B4B7B7B7B7B7B7 +B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3A8A8A8A8A8A8A8A8A89E9E9E9E9E9E +9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0ADADADADADADADADADB8B8B8B8B8B8B8B8B8D7D7D7D7D7D7 +D7D7D7EEEEEEEEEEEEEEEEEEEEEEEEF5F5F5F5F5F5F5F5F5EDEDEDEDEDEDEDEDEDD6D6D5D6D6D5 +D6D6D5A7A7A7A7A7A7A7A7A7909090909090909090909090A2A2A2A2A2A2A2A2A2B2B2B2B2B2B2 +B2B2B2BEBEBEBEBEBEBEBEBEC4C4C4C4C4C4C4C4C4C4C4C4C9C9C9C9C9C9C9C9C9C1C1C1C1C1C1 +C1C1C1B1B1B1B1B1B1B1B1B19A9A9A9A9A9A9A9A9AACACACACACACACACACACACACCACACACACACA +CACACAC4C4C4C4C4C4C4C4C4ACACACACACACACACACA2A2A2A2A2A2A2A2A2AFAFAFAFAFAFAFAFAF +AFAFAFC6C6C6C6C6C6C6C6C6C9C9C9C9C9C9C9C9C9C2C2C2C2C2C2C2C2C2C6C6C6C6C6C6C6C6C6 +C6C6C6D9D9D9D9D9D9D9D9D9B4B4B4B4B4B4B4B4B4BABABABABABABABABAD5D5D5D5D5D5D5D5D5 +D5D5D5D5D5D5D5D5D5D5D5D5BDBDBDBDBDBDBDBDBDCACACACACACACACACAE8E9E8E8E9E8E8E9E8 +E9E9E9E9E9E9E9E9E9CACACACACACACACACACACACA868686868686868686686868686868686868 +9E9E9E9E9E9E9E9E9ED1D1D1D1D1D1D1D1D1D1D1D1D6D6D6D6D6D6D6D6D6B0B0B0B0B0B0B0B0B0 +868686868686868686969696969696969696C0C0C0C0C0C0C0C0C0C0C0C0DEDEDEDEDEDEDEDEDE +E1E1E1E1E1E1E1E1E1D2D2D2D2D2D2D2D2D2CFCFCFCFCFCFCFCFCFD6D6D6D6D6D6D6D6D6D6D6D6 +CCCCCCCCCCCCCCCCCCCDCDCDCDCDCDCDCDCDE4E4E4E4E4E4E4E4E4EDEDEDEDEDEDEDEDEDEDEDED +C1C1C1C1C1C1C1C1C17C7C7C7C7C7C7C7C7C808080808080808080CBCBCBCBCBCBCBCBCBE9E9E9 +E9E9E9E9E9E9E9E9E9DFDFDFDFDFDFDFDFDFB6B6B6B6B6B6B6B6B68A8A8A8A8A8A8A8A8A868686 +868686868686999999999999999999999999A8A8A8A8A8A8A8A8A89C9C9C9C9C9C9C9C9C959595 +9595959595959797979797979797979797979E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A09F9F9F +9F9F9F9F9F9F9999999999999999999A9A9A9A9A9A9A9A9A9A9A9AA8A8A8A8A8A8A8A8A89F9F9F +9F9F9F9F9F9F989898989898989898A2A2A2A2A2A2A2A2A2B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7 +B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4A2A2A2A2A2A2A2A2A2989898989898989898989898A3A3A3 +A3A3A3A3A3A3A5A5A5A5A5A5A5A5A57F7F7F7F7F7F7F7F7F5656565656565656566C6C6C6C6C6C +6C6C6C6C6C6C9A9A9A9A9A9A9A9A9AA4A4A4A4A4A4A4A4A49B9B9B9B9B9B9B9B9BA1A1A1A1A1A1 +A1A1A1AAAAAAAAAAAAAAAAAAAAAAAABBBBBBBBBBBBBBBBBBD2D2D2D2D2D2D2D2D2CBCBCBCBCBCB +CBCBCB9595959595959595959595957F7F7F7F7F7F7F7F7F7D7D7D7D7D7D7D7D7D808080808080 +808080818181818181818181878787878787878787878787949494949494949494A3A3A3A3A3A3 +A3A3A3ADADADADADADADADADB4B4B4B4B4B4B4B4B4B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8 +B8B8B8B3B3B3B3B3B3B3B3B3A8A8A8A8A8A8A8A8A89E9E9E9E9E9E9E9E9E9E9E9EA0A0A0A0A0A0 +A0A0A0ADADADADADADADADADB8B8B8B8B8B8B8B8B8D7D7D7D7D7D7D7D7D7EEEEEEEEEEEEEEEEEE +EEEEEEF5F5F5F5F5F5F5F5F5EDEDEDEDEDEDEDEDEDD6D6D5D6D6D5D6D6D5A7A7A7A7A7A7A7A7A7 +909090909090909090909090A2A2A2A2A2A2A2A2A2B2B2B2B2B2B2B2B2B2BEBEBEBEBEBEBEBEBE +C4C4C4C4C4C4C4C4C4C4C4C4C9C9C9C9C9C9C9C9C9C1C1C1C1C1C1C1C1C1B1B1B1B1B1B1B1B1B1 +9A9A9A9A9A9A9A9A9AACACACACACACACACACACACACCACACACACACACACACAC4C4C4C4C4C4C4C4C4 +ACACACACACACACACACA2A2A2A2A2A2A2A2A2AFAFAFAFAFAFAFAFAFAFAFAFC6C6C6C6C6C6C6C6C6 +C9C9C9C9C9C9C9C9C9C2C2C2C2C2C2C2C2C2C6C6C6C6C6C6C6C6C6C6C6C6D9D9D9D9D9D9D9D9D9 +B4B4B4B4B4B4B4B4B4D1D1D1D1D1D1D1D1D1CECECECECECECECECEADADADADADADADADADADADAD +838383838383838383A3A3A3A3A3A3A3A3A3D6D6D6D6D6D6D6D6D6E0E0E0E0E0E0E0E0E0D0D0D0 +D0D0D0D0D0D0D0D0D09A9A9A9A9A9A9A9A9A919191919191919191BDBDBDBDBDBDBDBDBDD6D6D5 +D6D6D5D6D6D5D6D6D5D9D9D9D9D9D9D9D9D9D0D0D0D0D0D0D0D0D0C2C2C2C2C2C2C2C2C2C5C5C5 +C5C5C5C5C5C5D3D3D3D3D3D3D3D3D3D3D3D3DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDFDFDF +DFDFDFDFDFDFE0E0E0E0E0E0E0E0E0B8B8B8B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8CACACA +CACACACACACAE5E5E5E5E5E5E5E5E5E3E3E3E3E3E3E3E3E3E3E3E3ACACACACACACACACAC646464 +6464646464646B6B6B6B6B6B6B6B6BB8B8B8B8B8B8B8B8B8E4E4E4E4E4E4E4E4E4E4E4E4DADADA +DADADADADADAA9A9A9A9A9A9A9A9A97474747474747474747878787878787878789E9E9E9E9E9E +9E9E9E9E9E9EB5B5B5B5B5B5B5B5B5B3B3B3B3B3B3B3B3B3A7A7A7A7A7A7A7A7A79B9B9B9B9B9B +9B9B9B9B9B9BA1A1A1A1A1A1A1A1A19D9D9D9D9D9D9D9D9D999999999999999999919191919191 +9191919A9A9A9A9A9A9A9A9A9A9A9AA5A5A5A5A5A5A5A5A5989898989898989898999999999999 +999999A7A7A7A7A7A7A7A7A7B4B4B4B4B4B4B4B4B4B4B4B4B9B9B9B9B9B9B9B9B9C5C5C5C5C5C5 +C5C5C5C3C3C3C3C3C3C3C3C3B0B1B0B0B1B0B0B1B0B0B1B0AAAAAAAAAAAAAAAAAAAEAEAEAEAEAE +AEAEAE898989898989898989565656565656565656656565656565656565656565949494949494 +949494ABABABABABABABABABACACACACACACACACACABABABABABABABABABABABABABABABABABAB +ABABABB5B5B5B5B5B5B5B5B5CDCDCDCDCDCDCDCDCDC7C7C7C7C7C7C7C7C7969696969696969696 +969696828282828282828282818181818181818181818181818181818181838383838383838383 +8A8A8A8A8A8A8A8A8A8A8A8A959595959595959595A2A2A2A2A2A2A2A2A2AFAFAFAFAFAFAFAFAF +B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4B4B4B4B4B4B4B4B4 +ACACACACACACACACACAAAAAAAAAAAAAAAAAAAAAAAAB9B9B9B9B9B9B9B9B9CBCBCBCBCBCBCBCBCB +D2D2D2D2D2D2D2D2D2EBEBEBEBEBEBEBEBEBECECECECECECECECECECECECDEDEDEDEDEDEDEDEDE +B4B4B4B4B4B4B4B4B49090909090909090908E8E8E8E8E8E8E8E8E989898989898989898989898 +AEAEAEAEAEAEAEAEAEB9B9B9B9B9B9B9B9B9BBBBBBBBBBBBBBBBBBC1C1C1C1C1C1C1C1C1C1C1C1 +C1C1C1C1C1C1C1C1C1BABABABABABABABABABABABABABABABABABAB7B7B7B7B7B7B7B7B7C7C7C7 +C7C7C7C7C7C7C7C7C7D1D1D1D1D1D1D1D1D1B3B3B3B3B3B3B3B3B38E8E8E8E8E8E8E8E8EA1A1A1 +A1A1A1A1A1A1B6B6B6B6B6B6B6B6B6B6B6B6BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAAAAAA +AAAAAAAAAAAA9E9E9E9E9E9E9E9E9E9E9E9EBBBBBBBBBBBBBBBBBBB7B7B7B7B7B7B7B7B7D1D1D1 +D1D1D1D1D1D1CECECECECECECECECEADADADADADADADADADADADAD838383838383838383A3A3A3 +A3A3A3A3A3A3D6D6D6D6D6D6D6D6D6E0E0E0E0E0E0E0E0E0D0D0D0D0D0D0D0D0D0D0D0D09A9A9A +9A9A9A9A9A9A919191919191919191BDBDBDBDBDBDBDBDBDD6D6D5D6D6D5D6D6D5D6D6D5D9D9D9 +D9D9D9D9D9D9D0D0D0D0D0D0D0D0D0C2C2C2C2C2C2C2C2C2C5C5C5C5C5C5C5C5C5D3D3D3D3D3D3 +D3D3D3D3D3D3DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDFDFDFDFDFDFDFDFDFE0E0E0E0E0E0 +E0E0E0B8B8B8B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8CACACACACACACACACAE5E5E5E5E5E5 +E5E5E5E3E3E3E3E3E3E3E3E3E3E3E3ACACACACACACACACAC6464646464646464646B6B6B6B6B6B +6B6B6BB8B8B8B8B8B8B8B8B8E4E4E4E4E4E4E4E4E4E4E4E4DADADADADADADADADAA9A9A9A9A9A9 +A9A9A97474747474747474747878787878787878789E9E9E9E9E9E9E9E9E9E9E9EB5B5B5B5B5B5 +B5B5B5B3B3B3B3B3B3B3B3B3A7A7A7A7A7A7A7A7A79B9B9B9B9B9B9B9B9B9B9B9BA1A1A1A1A1A1 +A1A1A19D9D9D9D9D9D9D9D9D9999999999999999999191919191919191919A9A9A9A9A9A9A9A9A +9A9A9AA5A5A5A5A5A5A5A5A5989898989898989898999999999999999999A7A7A7A7A7A7A7A7A7 +B4B4B4B4B4B4B4B4B4B4B4B4B9B9B9B9B9B9B9B9B9C5C5C5C5C5C5C5C5C5C3C3C3C3C3C3C3C3C3 +B0B1B0B0B1B0B0B1B0B0B1B0AAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAEAE898989898989898989 +565656565656565656656565656565656565656565949494949494949494ABABABABABABABABAB +ACACACACACACACACACABABABABABABABABABABABABABABABABABABABABABB5B5B5B5B5B5B5B5B5 +CDCDCDCDCDCDCDCDCDC7C7C7C7C7C7C7C7C7969696969696969696969696828282828282828282 +8181818181818181818181818181818181818383838383838383838A8A8A8A8A8A8A8A8A8A8A8A +959595959595959595A2A2A2A2A2A2A2A2A2AFAFAFAFAFAFAFAFAFB8B8B8B8B8B8B8B8B8BBBBBB +BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4B4B4B4B4B4B4B4B4ACACACACACACACACACAAAAAA +AAAAAAAAAAAAAAAAAAB9B9B9B9B9B9B9B9B9CBCBCBCBCBCBCBCBCBD2D2D2D2D2D2D2D2D2EBEBEB +EBEBEBEBEBEBECECECECECECECECECECECECDEDEDEDEDEDEDEDEDEB4B4B4B4B4B4B4B4B4909090 +9090909090908E8E8E8E8E8E8E8E8E989898989898989898989898AEAEAEAEAEAEAEAEAEB9B9B9 +B9B9B9B9B9B9BBBBBBBBBBBBBBBBBBC1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1C1BABABA +BABABABABABABABABABABABABABABAB7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C7C7C7C7D1D1D1 +D1D1D1D1D1D1B3B3B3B3B3B3B3B3B38E8E8E8E8E8E8E8E8EA1A1A1A1A1A1A1A1A1B6B6B6B6B6B6 +B6B6B6B6B6B6BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFAAAAAAAAAAAAAAAAAA9E9E9E9E9E9E +9E9E9E9E9E9EBBBBBBBBBBBBBBBBBBB7B7B7B7B7B7B7B7B7D6D6D5D6D6D5D6D6D5C1C1C1C1C1C1 +C1C1C1929292929292929292929292868686868686868686B7B7B7B7B7B7B7B7B7D4D4D4D4D4D4 +D4D4D4D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7C5C5C5C5C5C5C5C5C5C3C3C3C3C3C3 +C3C3C3D1D1D1D1D1D1D1D1D1D8D8D8D8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7 +D7D7D7D1D1D1D1D1D1D1D1D1C3C3C3C3C3C3C3C3C3BDBDBDBDBDBDBDBDBDBDBDBDCBCBCBCBCBCB +CBCBCBDADADADADADADADADAE6E6E6E6E6E6E6E6E6DBDBDBDBDBDBDBDBDB909090909090909090 +909090777777777777777777B6B6B6B6B6B6B6B6B6E1E1E1E1E1E1E1E1E1D8D8D8D8D8D8D8D8D8 +D8D8D89292929292929292925D5D5D5D5D5D5D5D5D7E7E7E7E7E7E7E7E7EBFBFBFBFBFBFBFBFBF +E6E6E6E6E6E6E6E6E6E6E6E6DBDBDBDBDBDBDBDBDBBABABABABABABABABA9E9E9E9E9E9E9E9E9E +A8A8A8A8A8A8A8A8A8C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2B8B8B8B8B8B8B8B8B8 +A8A8A8A8A8A8A8A8A8A3A3A3A3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A59A9A9A9A9A9A9A9A9A +9393939393939393939696969696969696969C9C9C9C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9E +9090909090909090909F9F9F9F9F9F9F9F9FB0B0B0B0B0B0B0B0B0B0B1B0B0B1B0B0B1B0B0B1B0 +B2B2B2B2B2B2B2B2B2C9C9C9C9C9C9C9C9C9D6D6D6D6D6D6D6D6D6CFCFCFCFCFCFCFCFCFCFCFCF +C4C4C4C4C4C4C4C4C4B2B2B2B2B2B2B2B2B2909090909090909090616161616161616161616161 +6161616161616161618B8B8B8B8B8B8B8B8BAEAEAEAEAEAEAEAEAEB9B9B9B9B9B9B9B9B9B4B4B4 +B4B4B4B4B4B4A8A8A8A8A8A8A8A8A8A8A8A8A2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8ADADAD +ADADADADADAD909090909090909090909090848484848484848484838383838383838383848484 +8484848484848787878787878787878B8B8B8B8B8B8B8B8B8B8B8B9393939393939393939F9F9F +9F9F9F9F9F9FADADADADADADADADADB8B8B8B8B8B8B8B8B8BEBEBEBEBEBEBEBEBEBEBEBEBFBFBF +BFBFBFBFBFBFBDBDBDBDBDBDBDBDBDC3C3C3C3C3C3C3C3C3D0D0D0D0D0D0D0D0D0D0D0D0DBDBDB +DBDBDBDBDBDBDDDDDDDDDDDDDDDDDDD2D2D2D2D2D2D2D2D2D4D4D4D4D4D4D4D4D4B1B1B1B1B1B1 +B1B1B1B1B1B18989898989898989896A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A979797979797 +9797979B9B9B9B9B9B9B9B9B9B9B9BAAAAAAAAAAAAAAAAAAB8B8B8B8B8B8B8B8B8BABABABABABA +BABABABBBBBBBBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8ADADADADADADADADADA9A9A9A9A9A9 +A9A9A99E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAEC5C5C5C5C5C5C5C5C5B0B0B0B0B0B0 +B0B0B0909090909090909090ABABABABABABABABABBDBDBDBDBDBDBDBDBDBDBDBDB8B8B8B8B8B8 +B8B8B8ABABABABABABABABABACACACACACACACACACB5B5B5B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5 +C5C5C5B8B8B8B8B8B8B8B8B8D6D6D5D6D6D5D6D6D5C1C1C1C1C1C1C1C1C1929292929292929292 +929292868686868686868686B7B7B7B7B7B7B7B7B7D4D4D4D4D4D4D4D4D4D8D8D8D8D8D8D8D8D8 +D7D7D7D7D7D7D7D7D7D7D7D7C5C5C5C5C5C5C5C5C5C3C3C3C3C3C3C3C3C3D1D1D1D1D1D1D1D1D1 +D8D8D8D8D8D8D8D8D8D8D8D8D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D1D1D1D1D1D1D1D1D1 +C3C3C3C3C3C3C3C3C3BDBDBDBDBDBDBDBDBDBDBDBDCBCBCBCBCBCBCBCBCBDADADADADADADADADA +E6E6E6E6E6E6E6E6E6DBDBDBDBDBDBDBDBDB909090909090909090909090777777777777777777 +B6B6B6B6B6B6B6B6B6E1E1E1E1E1E1E1E1E1D8D8D8D8D8D8D8D8D8D8D8D8929292929292929292 +5D5D5D5D5D5D5D5D5D7E7E7E7E7E7E7E7E7EBFBFBFBFBFBFBFBFBFE6E6E6E6E6E6E6E6E6E6E6E6 +DBDBDBDBDBDBDBDBDBBABABABABABABABABA9E9E9E9E9E9E9E9E9EA8A8A8A8A8A8A8A8A8C2C2C2 +C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8A3A3A3 +A3A3A3A3A3A3A3A3A3A5A5A5A5A5A5A5A5A59A9A9A9A9A9A9A9A9A939393939393939393969696 +9696969696969C9C9C9C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9E9090909090909090909F9F9F +9F9F9F9F9F9FB0B0B0B0B0B0B0B0B0B0B1B0B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2C9C9C9 +C9C9C9C9C9C9D6D6D6D6D6D6D6D6D6CFCFCFCFCFCFCFCFCFCFCFCFC4C4C4C4C4C4C4C4C4B2B2B2 +B2B2B2B2B2B29090909090909090906161616161616161616161616161616161616161618B8B8B +8B8B8B8B8B8BAEAEAEAEAEAEAEAEAEB9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4A8A8A8A8A8A8 +A8A8A8A8A8A8A2A2A2A2A2A2A2A2A2A8A8A8A8A8A8A8A8A8ADADADADADADADADAD909090909090 +909090909090848484848484848484838383838383838383848484848484848484878787878787 +8787878B8B8B8B8B8B8B8B8B8B8B8B9393939393939393939F9F9F9F9F9F9F9F9FADADADADADAD +ADADADB8B8B8B8B8B8B8B8B8BEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBDBDBDBDBDBD +BDBDBDC3C3C3C3C3C3C3C3C3D0D0D0D0D0D0D0D0D0D0D0D0DBDBDBDBDBDBDBDBDBDDDDDDDDDDDD +DDDDDDD2D2D2D2D2D2D2D2D2D4D4D4D4D4D4D4D4D4B1B1B1B1B1B1B1B1B1B1B1B1898989898989 +8989896A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7A9797979797979797979B9B9B9B9B9B9B9B9B +9B9B9BAAAAAAAAAAAAAAAAAAB8B8B8B8B8B8B8B8B8BABABABABABABABABABBBBBBBBBBBBBBBBBB +BBBBBBB8B8B8B8B8B8B8B8B8ADADADADADADADADADA9A9A9A9A9A9A9A9A99E9E9E9E9E9E9E9E9E +AEAEAEAEAEAEAEAEAEAEAEAEC5C5C5C5C5C5C5C5C5B0B0B0B0B0B0B0B0B0909090909090909090 +ABABABABABABABABABBDBDBDBDBDBDBDBDBDBDBDBDB8B8B8B8B8B8B8B8B8ABABABABABABABABAB +ACACACACACACACACACB5B5B5B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C5B8B8B8B8B8B8B8B8B8 +D6D6D5D6D6D5D6D6D5C1C1C1C1C1C1C1C1C1929292929292929292929292868686868686868686 +B7B7B7B7B7B7B7B7B7D4D4D4D4D4D4D4D4D4D8D8D8D8D8D8D8D8D8D7D7D7D7D7D7D7D7D7D7D7D7 +C5C5C5C5C5C5C5C5C5C3C3C3C3C3C3C3C3C3D1D1D1D1D1D1D1D1D1D8D8D8D8D8D8D8D8D8D8D8D8 +D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7D1D1D1D1D1D1D1D1D1C3C3C3C3C3C3C3C3C3BDBDBD +BDBDBDBDBDBDBDBDBDCBCBCBCBCBCBCBCBCBDADADADADADADADADAE6E6E6E6E6E6E6E6E6DBDBDB +DBDBDBDBDBDB909090909090909090909090777777777777777777B6B6B6B6B6B6B6B6B6E1E1E1 +E1E1E1E1E1E1D8D8D8D8D8D8D8D8D8D8D8D89292929292929292925D5D5D5D5D5D5D5D5D7E7E7E +7E7E7E7E7E7EBFBFBFBFBFBFBFBFBFE6E6E6E6E6E6E6E6E6E6E6E6DBDBDBDBDBDBDBDBDBBABABA +BABABABABABA9E9E9E9E9E9E9E9E9EA8A8A8A8A8A8A8A8A8C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2 +C2C2C2C2C2C2B8B8B8B8B8B8B8B8B8A8A8A8A8A8A8A8A8A8A3A3A3A3A3A3A3A3A3A3A3A3A5A5A5 +A5A5A5A5A5A59A9A9A9A9A9A9A9A9A9393939393939393939696969696969696969C9C9C9C9C9C +9C9C9C9C9C9C9E9E9E9E9E9E9E9E9E9090909090909090909F9F9F9F9F9F9F9F9FB0B0B0B0B0B0 +B0B0B0B0B1B0B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2C9C9C9C9C9C9C9C9C9D6D6D6D6D6D6 +D6D6D6CFCFCFCFCFCFCFCFCFCFCFCFC4C4C4C4C4C4C4C4C4B2B2B2B2B2B2B2B2B2909090909090 +9090906161616161616161616161616161616161616161618B8B8B8B8B8B8B8B8BAEAEAEAEAEAE +AEAEAEB9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4A8A8A8A8A8A8A8A8A8A8A8A8A2A2A2A2A2A2 +A2A2A2A8A8A8A8A8A8A8A8A8ADADADADADADADADAD909090909090909090909090848484848484 +8484848383838383838383838484848484848484848787878787878787878B8B8B8B8B8B8B8B8B +8B8B8B9393939393939393939F9F9F9F9F9F9F9F9FADADADADADADADADADB8B8B8B8B8B8B8B8B8 +BEBEBEBEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFBDBDBDBDBDBDBDBDBDC3C3C3C3C3C3C3C3C3 +D0D0D0D0D0D0D0D0D0D0D0D0DBDBDBDBDBDBDBDBDBDDDDDDDDDDDDDDDDDDD2D2D2D2D2D2D2D2D2 +D4D4D4D4D4D4D4D4D4B1B1B1B1B1B1B1B1B1B1B1B18989898989898989896A6A6A6A6A6A6A6A6A +7A7A7A7A7A7A7A7A7A9797979797979797979B9B9B9B9B9B9B9B9B9B9B9BAAAAAAAAAAAAAAAAAA +B8B8B8B8B8B8B8B8B8BABABABABABABABABABBBBBBBBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8 +ADADADADADADADADADA9A9A9A9A9A9A9A9A99E9E9E9E9E9E9E9E9EAEAEAEAEAEAEAEAEAEAEAEAE +C5C5C5C5C5C5C5C5C5B0B0B0B0B0B0B0B0B0909090909090909090ABABABABABABABABABBDBDBD +BDBDBDBDBDBDBDBDBDB8B8B8B8B8B8B8B8B8ABABABABABABABABABACACACACACACACACACB5B5B5 +B5B5B5B5B5B5B5B5B5C5C5C5C5C5C5C5C5C5B8B8B8B8B8B8B8B8B8E1E1E1E1E1E1E1E1E1CACACA +CACACACACACAA1A1A1A1A1A1A1A1A1A1A1A19E9E9E9E9E9E9E9E9EC5C5C5C5C5C5C5C5C5D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0DDDDDDDDDDDDDDDDDDDDDDDDD0D0D0D0D0D0D0D0D0C0C0C0 +C0C0C0C0C0C0B7B7B7B7B7B7B7B7B7C1C1C1C1C1C1C1C1C1C1C1C1D5D5D5D5D5D5D5D5D5D0D0D0 +D0D0D0D0D0D0BEBEBEBEBEBEBEBEBE9393939393939393937D7D7D7D7D7D7D7D7D7D7D7DA8A8A8 +A8A8A8A8A8A8D8D8D8D8D8D8D8D8D8E0E0E0E0E0E0E0E0E0C4C4C4C4C4C4C4C4C4828282828282 +8282828282826D6D6D6D6D6D6D6D6DAEAEAEAEAEAEAEAEAEE0E0E0E0E0E0E0E0E0CFCFCFCFCFCF +CFCFCFCFCFCF969696969696969696676767676767676767979797979797979797D5D5D5D5D5D5 +D5D5D5E8E9E8E8E9E8E8E9E8E8E9E8DEDEDEDEDEDEDEDEDEC6C6C6C6C6C6C6C6C6CCCCCCCCCCCC +CCCCCCE0E0E0E0E0E0E0E0E0E6E6E6E6E6E6E6E6E6E6E6E6D1D1D1D1D1D1D1D1D1B7B7B7B7B7B7 +B7B7B7B0B1B0B0B1B0B0B1B0B3B3B3B3B3B3B3B3B3B3B3B3B0B0B0B0B0B0B0B0B0A1A1A1A1A1A1 +A1A1A19A9A9A9A9A9A9A9A9A9696969696969696969999999999999999999999999A9A9A9A9A9A +9A9A9A8F8F8F8F8F8F8F8F8F9A9A9A9A9A9A9A9A9AADADADADADADADADADB3B3B3B3B3B3B3B3B3 +B3B3B3B1B1B1B1B1B1B1B1B1BEBEBEBEBEBEBEBEBED1D1D1D1D1D1D1D1D1D5D5D5D5D5D5D5D5D5 +D5D5D5CBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5B7B7B7B7B7B7B7B7B7939393939393939393 +757575757575757575757575707070707070707070797979797979797979797979797979797979 +7878787878787878787B7B7B7B7B7B7B7B7B7B7B7B818181818181818181898989898989898989 +9696969696969696968D8D8D8D8D8D8D8D8D8D8D8D898989898989898989878787878787878787 +8686868686868686868787878787878787878B8B8B8B8B8B8B8B8B8B8B8B939393939393939393 +9C9C9C9C9C9C9C9C9CA9A9A9A9A9A9A9A9A9B6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9B9B9B9 +AFAFAFAFAFAFAFAFAF9A9A9A9A9A9A9A9A9A9999999999999999999E9E9E9E9E9E9E9E9E9E9E9E +9B9B9B9B9B9B9B9B9B9999999999999999999090909090909090908E8E8E8E8E8E8E8E8E727272 +7272727272727272724F4F4F4F4F4F4F4F4F6868686868686868688A8A8A8A8A8A8A8A8A939393 +939393939393A3A3A3A3A3A3A3A3A3A3A3A3B0B1B0B0B1B0B0B1B0B6B6B6B6B6B6B6B6B6B1B1B1 +B1B1B1B1B1B1B6B6B6B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4A2A2A2A2A2A2A2A2A28E8E8E +8E8E8E8E8E8E797979797979797979898989898989898989898989B9B9B9B9B9B9B9B9B9BFBFBF +BFBFBFBFBFBFB1B1B1B1B1B1B1B1B1C0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5C5C5C5A6A6A6 +A6A6A6A6A6A68787878787878787879F9F9F9F9F9F9F9F9FC3C3C3C3C3C3C3C3C3C3C3C3D0D0D0 +D0D0D0D0D0D0B4B4B4B4B4B4B4B4B4E1E1E1E1E1E1E1E1E1CACACACACACACACACAA1A1A1A1A1A1 +A1A1A1A1A1A19E9E9E9E9E9E9E9E9EC5C5C5C5C5C5C5C5C5D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0DDDDDDDDDDDDDDDDDDDDDDDDD0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C0B7B7B7B7B7B7 +B7B7B7C1C1C1C1C1C1C1C1C1C1C1C1D5D5D5D5D5D5D5D5D5D0D0D0D0D0D0D0D0D0BEBEBEBEBEBE +BEBEBE9393939393939393937D7D7D7D7D7D7D7D7D7D7D7DA8A8A8A8A8A8A8A8A8D8D8D8D8D8D8 +D8D8D8E0E0E0E0E0E0E0E0E0C4C4C4C4C4C4C4C4C48282828282828282828282826D6D6D6D6D6D +6D6D6DAEAEAEAEAEAEAEAEAEE0E0E0E0E0E0E0E0E0CFCFCFCFCFCFCFCFCFCFCFCF969696969696 +969696676767676767676767979797979797979797D5D5D5D5D5D5D5D5D5E8E9E8E8E9E8E8E9E8 +E8E9E8DEDEDEDEDEDEDEDEDEC6C6C6C6C6C6C6C6C6CCCCCCCCCCCCCCCCCCE0E0E0E0E0E0E0E0E0 +E6E6E6E6E6E6E6E6E6E6E6E6D1D1D1D1D1D1D1D1D1B7B7B7B7B7B7B7B7B7B0B1B0B0B1B0B0B1B0 +B3B3B3B3B3B3B3B3B3B3B3B3B0B0B0B0B0B0B0B0B0A1A1A1A1A1A1A1A1A19A9A9A9A9A9A9A9A9A +9696969696969696969999999999999999999999999A9A9A9A9A9A9A9A9A8F8F8F8F8F8F8F8F8F +9A9A9A9A9A9A9A9A9AADADADADADADADADADB3B3B3B3B3B3B3B3B3B3B3B3B1B1B1B1B1B1B1B1B1 +BEBEBEBEBEBEBEBEBED1D1D1D1D1D1D1D1D1D5D5D5D5D5D5D5D5D5D5D5D5CBCBCBCBCBCBCBCBCB +C5C5C5C5C5C5C5C5C5B7B7B7B7B7B7B7B7B7939393939393939393757575757575757575757575 +7070707070707070707979797979797979797979797979797979797878787878787878787B7B7B +7B7B7B7B7B7B7B7B7B8181818181818181818989898989898989899696969696969696968D8D8D +8D8D8D8D8D8D8D8D8D898989898989898989878787878787878787868686868686868686878787 +8787878787878B8B8B8B8B8B8B8B8B8B8B8B9393939393939393939C9C9C9C9C9C9C9C9CA9A9A9 +A9A9A9A9A9A9B6B6B6B6B6B6B6B6B6B9B9B9B9B9B9B9B9B9B9B9B9AFAFAFAFAFAFAFAFAF9A9A9A +9A9A9A9A9A9A9999999999999999999E9E9E9E9E9E9E9E9E9E9E9E9B9B9B9B9B9B9B9B9B999999 +9999999999999090909090909090908E8E8E8E8E8E8E8E8E7272727272727272727272724F4F4F +4F4F4F4F4F4F6868686868686868688A8A8A8A8A8A8A8A8A939393939393939393A3A3A3A3A3A3 +A3A3A3A3A3A3B0B1B0B0B1B0B0B1B0B6B6B6B6B6B6B6B6B6B1B1B1B1B1B1B1B1B1B6B6B6B6B6B6 +B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4A2A2A2A2A2A2A2A2A28E8E8E8E8E8E8E8E8E797979797979 +797979898989898989898989898989B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFB1B1B1B1B1B1 +B1B1B1C0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5C5C5C5A6A6A6A6A6A6A6A6A6878787878787 +8787879F9F9F9F9F9F9F9F9FC3C3C3C3C3C3C3C3C3C3C3C3D0D0D0D0D0D0D0D0D0B4B4B4B4B4B4 +B4B4B4EDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDC0C0C0C0C0C0 +C0C0C0BBBBBBBBBBBBBBBBBBC1C1C1C1C1C1C1C1C1CECECECECECECECECEDEDEDEDEDEDEDEDEDE +DEDEDED5D5D5D5D5D5D5D5D5B4B4B4B4B4B4B4B4B4838383838383838383999999999999999999 +999999D1D1D1D1D1D1D1D1D1D5D5D5D5D5D5D5D5D5C1C1C1C1C1C1C1C1C1828282828282828282 +6C6C6C6C6C6C6C6C6C6C6C6CA3A3A3A3A3A3A3A3A3D8D8D8D8D8D8D8D8D8D2D2D2D2D2D2D2D2D2 +ACACACACACACACACAC7B7B7B7B7B7B7B7B7B7B7B7B929292929292929292C5C5C5C5C5C5C5C5C5 +E2E2E2E2E2E2E2E2E2D6D6D6D6D6D6D6D6D6D6D6D6AEAEAEAEAEAEAEAEAE949494949494949494 +AEAEAEAEAEAEAEAEAED5D5D5D5D5D5D5D5D5DBDBDBDBDBDBDBDBDBDBDBDBD6D6D5D6D6D5D6D6D5 +C6C6C6C6C6C6C6C6C6D4D4D4D4D4D4D4D4D4EDEDEDEDEDEDEDEDEDE7E7E7E7E7E7E7E7E7E7E7E7 +D4D4D4D4D4D4D4D4D4C1C1C1C1C1C1C1C1C1B5B5B5B5B5B5B5B5B5C6C6C6C6C6C6C6C6C6C6C6C6 +C1C1C1C1C1C1C1C1C1AEAEAEAEAEAEAEAEAEA7A7A7A7A7A7A7A7A79A9A9A9A9A9A9A9A9A9E9E9E +9E9E9E9E9E9E9E9E9E9C9C9C9C9C9C9C9C9C939393939393939393989898989898989898A0A0A0 +A0A0A0A0A0A0ADADADADADADADADADADADADB5B5B5B5B5B5B5B5B5BEBEBEBEBEBEBEBEBECDCDCD +CDCDCDCDCDCDCFCFCFCFCFCFCFCFCFCFCFCFBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECE +CECECECECECEC2C2C2C2C2C2C2C2C2A7A7A7A7A7A7A7A7A7A7A7A79898989898989898988B8B8B +8B8B8B8B8B8B7979797979797979796868686868686868686A6A6A6A6A6A6A6A6A6A6A6A6C6C6C +6C6C6C6C6C6C6E6E6E6E6E6E6E6E6E737373737373737373797979797979797979797979868686 +8686868686868989898989898989898787878787878787878989898989898989898E8E8E8E8E8E +8E8E8E8E8E8E9393939393939393939797979797979797979F9F9F9F9F9F9F9F9FB0B1B0B0B1B0 +B0B1B0A2A2A2A2A2A2A2A2A2A2A2A27B7B7B7B7B7B7B7B7B5E5E5E5E5E5E5E5E5E575757575757 +575757555555555555555555555555545454545454545454585858585858585858636363636363 +6363637676767676767676766464646464646464646464645151515151515151517C7C7C7C7C7C +7C7C7C9B9B9B9B9B9B9B9B9BA3A3A3A3A3A3A3A3A3B2B2B2B2B2B2B2B2B2B2B2B2B8B8B8B8B8B8 +B8B8B8B3B3B3B3B3B3B3B3B3ACACACACACACACACACB5B5B5B5B5B5B5B5B5B5B5B5B4B4B4B4B4B4 +B4B4B4A8A8A8A8A8A8A8A8A89797979797979797978B8B8B8B8B8B8B8B8BA0A0A0A0A0A0A0A0A0 +A0A0A0C1C1C1C1C1C1C1C1C1C5C5C5C5C5C5C5C5C5B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8 +CACACACACACACACACACACACAB0B1B0B0B1B0B0B1B09B9B9B9B9B9B9B9B9BACACACACACACACACAC +C6C6C6C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C59F9F9F9F9F9F9F9F9FEDEDEDEDEDEDEDEDED +DDDDDDDDDDDDDDDDDDCDCDCDCDCDCDCDCDCDCDCDCDC0C0C0C0C0C0C0C0C0BBBBBBBBBBBBBBBBBB +C1C1C1C1C1C1C1C1C1CECECECECECECECECEDEDEDEDEDEDEDEDEDEDEDEDED5D5D5D5D5D5D5D5D5 +B4B4B4B4B4B4B4B4B4838383838383838383999999999999999999999999D1D1D1D1D1D1D1D1D1 +D5D5D5D5D5D5D5D5D5C1C1C1C1C1C1C1C1C18282828282828282826C6C6C6C6C6C6C6C6C6C6C6C +A3A3A3A3A3A3A3A3A3D8D8D8D8D8D8D8D8D8D2D2D2D2D2D2D2D2D2ACACACACACACACACAC7B7B7B +7B7B7B7B7B7B7B7B7B929292929292929292C5C5C5C5C5C5C5C5C5E2E2E2E2E2E2E2E2E2D6D6D6 +D6D6D6D6D6D6D6D6D6AEAEAEAEAEAEAEAEAE949494949494949494AEAEAEAEAEAEAEAEAED5D5D5 +D5D5D5D5D5D5DBDBDBDBDBDBDBDBDBDBDBDBD6D6D5D6D6D5D6D6D5C6C6C6C6C6C6C6C6C6D4D4D4 +D4D4D4D4D4D4EDEDEDEDEDEDEDEDEDE7E7E7E7E7E7E7E7E7E7E7E7D4D4D4D4D4D4D4D4D4C1C1C1 +C1C1C1C1C1C1B5B5B5B5B5B5B5B5B5C6C6C6C6C6C6C6C6C6C6C6C6C1C1C1C1C1C1C1C1C1AEAEAE +AEAEAEAEAEAEA7A7A7A7A7A7A7A7A79A9A9A9A9A9A9A9A9A9E9E9E9E9E9E9E9E9E9E9E9E9C9C9C +9C9C9C9C9C9C939393939393939393989898989898989898A0A0A0A0A0A0A0A0A0ADADADADADAD +ADADADADADADB5B5B5B5B5B5B5B5B5BEBEBEBEBEBEBEBEBECDCDCDCDCDCDCDCDCDCFCFCFCFCFCF +CFCFCFCFCFCFBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECEC2C2C2C2C2C2 +C2C2C2A7A7A7A7A7A7A7A7A7A7A7A79898989898989898988B8B8B8B8B8B8B8B8B797979797979 +7979796868686868686868686A6A6A6A6A6A6A6A6A6A6A6A6C6C6C6C6C6C6C6C6C6E6E6E6E6E6E +6E6E6E737373737373737373797979797979797979797979868686868686868686898989898989 +8989898787878787878787878989898989898989898E8E8E8E8E8E8E8E8E8E8E8E939393939393 +9393939797979797979797979F9F9F9F9F9F9F9F9FB0B1B0B0B1B0B0B1B0A2A2A2A2A2A2A2A2A2 +A2A2A27B7B7B7B7B7B7B7B7B5E5E5E5E5E5E5E5E5E575757575757575757555555555555555555 +555555545454545454545454585858585858585858636363636363636363767676767676767676 +6464646464646464646464645151515151515151517C7C7C7C7C7C7C7C7C9B9B9B9B9B9B9B9B9B +A3A3A3A3A3A3A3A3A3B2B2B2B2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3 +ACACACACACACACACACB5B5B5B5B5B5B5B5B5B5B5B5B4B4B4B4B4B4B4B4B4A8A8A8A8A8A8A8A8A8 +9797979797979797978B8B8B8B8B8B8B8B8BA0A0A0A0A0A0A0A0A0A0A0A0C1C1C1C1C1C1C1C1C1 +C5C5C5C5C5C5C5C5C5B0B0B0B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8CACACACACACACACACACACACA +B0B1B0B0B1B0B0B1B09B9B9B9B9B9B9B9B9BACACACACACACACACACC6C6C6C6C6C6C6C6C6C6C6C6 +C5C5C5C5C5C5C5C5C59F9F9F9F9F9F9F9F9FEDEDEDEDEDEDEDEDEDDDDDDDDDDDDDDDDDDDCDCDCD +CDCDCDCDCDCDCDCDCDC0C0C0C0C0C0C0C0C0BBBBBBBBBBBBBBBBBBC1C1C1C1C1C1C1C1C1CECECE +CECECECECECEDEDEDEDEDEDEDEDEDEDEDEDED5D5D5D5D5D5D5D5D5B4B4B4B4B4B4B4B4B4838383 +838383838383999999999999999999999999D1D1D1D1D1D1D1D1D1D5D5D5D5D5D5D5D5D5C1C1C1 +C1C1C1C1C1C18282828282828282826C6C6C6C6C6C6C6C6C6C6C6CA3A3A3A3A3A3A3A3A3D8D8D8 +D8D8D8D8D8D8D2D2D2D2D2D2D2D2D2ACACACACACACACACAC7B7B7B7B7B7B7B7B7B7B7B7B929292 +929292929292C5C5C5C5C5C5C5C5C5E2E2E2E2E2E2E2E2E2D6D6D6D6D6D6D6D6D6D6D6D6AEAEAE +AEAEAEAEAEAE949494949494949494AEAEAEAEAEAEAEAEAED5D5D5D5D5D5D5D5D5DBDBDBDBDBDB +DBDBDBDBDBDBD6D6D5D6D6D5D6D6D5C6C6C6C6C6C6C6C6C6D4D4D4D4D4D4D4D4D4EDEDEDEDEDED +EDEDEDE7E7E7E7E7E7E7E7E7E7E7E7D4D4D4D4D4D4D4D4D4C1C1C1C1C1C1C1C1C1B5B5B5B5B5B5 +B5B5B5C6C6C6C6C6C6C6C6C6C6C6C6C1C1C1C1C1C1C1C1C1AEAEAEAEAEAEAEAEAEA7A7A7A7A7A7 +A7A7A79A9A9A9A9A9A9A9A9A9E9E9E9E9E9E9E9E9E9E9E9E9C9C9C9C9C9C9C9C9C939393939393 +939393989898989898989898A0A0A0A0A0A0A0A0A0ADADADADADADADADADADADADB5B5B5B5B5B5 +B5B5B5BEBEBEBEBEBEBEBEBECDCDCDCDCDCDCDCDCDCFCFCFCFCFCFCFCFCFCFCFCFBEBEBEBEBEBE +BEBEBEBEBEBEBEBEBEBEBEBECECECECECECECECECEC2C2C2C2C2C2C2C2C2A7A7A7A7A7A7A7A7A7 +A7A7A79898989898989898988B8B8B8B8B8B8B8B8B797979797979797979686868686868686868 +6A6A6A6A6A6A6A6A6A6A6A6A6C6C6C6C6C6C6C6C6C6E6E6E6E6E6E6E6E6E737373737373737373 +797979797979797979797979868686868686868686898989898989898989878787878787878787 +8989898989898989898E8E8E8E8E8E8E8E8E8E8E8E939393939393939393979797979797979797 +9F9F9F9F9F9F9F9F9FB0B1B0B0B1B0B0B1B0A2A2A2A2A2A2A2A2A2A2A2A27B7B7B7B7B7B7B7B7B +5E5E5E5E5E5E5E5E5E575757575757575757555555555555555555555555545454545454545454 +585858585858585858636363636363636363767676767676767676646464646464646464646464 +5151515151515151517C7C7C7C7C7C7C7C7C9B9B9B9B9B9B9B9B9BA3A3A3A3A3A3A3A3A3B2B2B2 +B2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3ACACACACACACACACACB5B5B5 +B5B5B5B5B5B5B5B5B5B4B4B4B4B4B4B4B4B4A8A8A8A8A8A8A8A8A89797979797979797978B8B8B +8B8B8B8B8B8BA0A0A0A0A0A0A0A0A0A0A0A0C1C1C1C1C1C1C1C1C1C5C5C5C5C5C5C5C5C5B0B0B0 +B0B0B0B0B0B0B8B8B8B8B8B8B8B8B8CACACACACACACACACACACACAB0B1B0B0B1B0B0B1B09B9B9B +9B9B9B9B9B9BACACACACACACACACACC6C6C6C6C6C6C6C6C6C6C6C6C5C5C5C5C5C5C5C5C59F9F9F +9F9F9F9F9F9FE5E5E5E5E5E5E5E5E5E0E0E0E0E0E0E0E0E0D1D1D1D1D1D1D1D1D1D1D1D1B0B0B0 +B0B0B0B0B0B08282828282828282828A8A8A8A8A8A8A8A8ABCBCBCBCBCBCBCBCBCD6D6D5D6D6D5 +D6D6D5D6D6D5C8C8C8C8C8C8C8C8C89797979797979797977272727272727272729C9C9C9C9C9C +9C9C9C9C9C9CD8D8D8D8D8D8D8D8D8DBDBDBDBDBDBDBDBDBD3D3D3D3D3D3D3D3D3A1A1A1A1A1A1 +A1A1A1939393939393939393939393C1C1C1C1C1C1C1C1C1DFE0DFDFE0DFDFE0DFD5D5D5D5D5D5 +D5D5D5C5C5C5C5C5C5C5C5C5AAAAAAAAAAAAAAAAAAAAAAAAB4B4B4B4B4B4B4B4B4D3D3D3D3D3D3 +D3D3D3DFE0DFDFE0DFDFE0DFDCDCDCDCDCDCDCDCDCDCDCDCBEBEBEBEBEBEBEBEBEB2B2B2B2B2B2 +B2B2B2BABABABABABABABABABFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEBEBEBEB0B0B0B0B0B0 +B0B0B08C8C8C8C8C8C8C8C8CA2A2A2A2A2A2A2A2A2DBDBDBDBDBDBDBDBDBE3E3E3E3E3E3E3E3E3 +E3E3E3CECECECECECECECECEBDBDBDBDBDBDBDBDBD9C9C9C9C9C9C9C9C9CA0A0A0A0A0A0A0A0A0 +A0A0A0B4B4B4B4B4B4B4B4B4BCBCBCBCBCBCBCBCBCBABABABABABABABABAA8A8A8A8A8A8A8A8A8 +AAAAAAAAAAAAAAAAAAAAAAAA9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B +9E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3A3A3A3A6A6A6A6A6A6A6A6A6B0B1B0B0B1B0B0B1B0 +BBBBBBBBBBBBBBBBBBBABABABABABABABABABABABAAAAAAAAAAAAAAAAAAAADADADADADADADADAD +C9C9C9C9C9C9C9C9C9CBCBCBCBCBCBCBCBCBC4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5 +B9B9B9B9B9B9B9B9B9AEAEAEAEAEAEAEAEAE9E9E9E9E9E9E9E9E9E959595959595959595959595 +8989898989898989897D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C797979797979797979797979 +8787878787878787879292929292929292928D8D8D8D8D8D8D8D8D8A8A8A8A8A8A8A8A8A8C8C8C +8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D888888888888888888969696969696969696AFAFAF +AFAFAFAFAFAFABABABABABABABABABABABAB8D8D8D8D8D8D8D8D8D676767676767676767545454 +5454545454544D4D4D4D4D4D4D4D4D4D4D4D5050505050505050506161616161616161617C7C7C +7C7C7C7C7C7C8484848484848484846C6C6C6C6C6C6C6C6C6C6C6C787878787878787878919191 +919191919191A5A5A5A5A5A5A5A5A5B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3 +B3B3B3B3B3B3ADADADADADADADADADAEAEAEAEAEAEAEAEAEB9B9B9B9B9B9B9B9B9B9B9B9B5B5B5 +B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6BDBDBDBDBDBDBDBDBDB7B7B7B7B7B7B7B7B7BEBEBEBEBEBE +BEBEBEBEBEBEC7C7C7C7C7C7C7C7C7BDBDBDBDBDBDBDBDBD929292929292929292969696969696 +969696BFBFBFBFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEB4B4B4B4B4B4B4B4B4B8B8B8B8B8B8 +B8B8B8C8C8C8C8C8C8C8C8C8C8C8C8C3C3C3C3C3C3C3C3C3ABABABABABABABABABE5E5E5E5E5E5 +E5E5E5E0E0E0E0E0E0E0E0E0D1D1D1D1D1D1D1D1D1D1D1D1B0B0B0B0B0B0B0B0B0828282828282 +8282828A8A8A8A8A8A8A8A8ABCBCBCBCBCBCBCBCBCD6D6D5D6D6D5D6D6D5D6D6D5C8C8C8C8C8C8 +C8C8C89797979797979797977272727272727272729C9C9C9C9C9C9C9C9C9C9C9CD8D8D8D8D8D8 +D8D8D8DBDBDBDBDBDBDBDBDBD3D3D3D3D3D3D3D3D3A1A1A1A1A1A1A1A1A1939393939393939393 +939393C1C1C1C1C1C1C1C1C1DFE0DFDFE0DFDFE0DFD5D5D5D5D5D5D5D5D5C5C5C5C5C5C5C5C5C5 +AAAAAAAAAAAAAAAAAAAAAAAAB4B4B4B4B4B4B4B4B4D3D3D3D3D3D3D3D3D3DFE0DFDFE0DFDFE0DF +DCDCDCDCDCDCDCDCDCDCDCDCBEBEBEBEBEBEBEBEBEB2B2B2B2B2B2B2B2B2BABABABABABABABABA +BFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBEBEBEBEB0B0B0B0B0B0B0B0B08C8C8C8C8C8C8C8C8C +A2A2A2A2A2A2A2A2A2DBDBDBDBDBDBDBDBDBE3E3E3E3E3E3E3E3E3E3E3E3CECECECECECECECECE +BDBDBDBDBDBDBDBDBD9C9C9C9C9C9C9C9C9CA0A0A0A0A0A0A0A0A0A0A0A0B4B4B4B4B4B4B4B4B4 +BCBCBCBCBCBCBCBCBCBABABABABABABABABAA8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAA +9B9B9B9B9B9B9B9B9B9A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9EA3A3A3 +A3A3A3A3A3A3A3A3A3A6A6A6A6A6A6A6A6A6B0B1B0B0B1B0B0B1B0BBBBBBBBBBBBBBBBBBBABABA +BABABABABABABABABAAAAAAAAAAAAAAAAAAAADADADADADADADADADC9C9C9C9C9C9C9C9C9CBCBCB +CBCBCBCBCBCBC4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5B9B9B9B9B9B9B9B9B9AEAEAE +AEAEAEAEAEAE9E9E9E9E9E9E9E9E9E9595959595959595959595958989898989898989897D7D7D +7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C797979797979797979797979878787878787878787929292 +9292929292928D8D8D8D8D8D8D8D8D8A8A8A8A8A8A8A8A8A8C8C8C8C8C8C8C8C8C8C8C8C8D8D8D +8D8D8D8D8D8D888888888888888888969696969696969696AFAFAFAFAFAFAFAFAFABABABABABAB +ABABABABABAB8D8D8D8D8D8D8D8D8D6767676767676767675454545454545454544D4D4D4D4D4D +4D4D4D4D4D4D5050505050505050506161616161616161617C7C7C7C7C7C7C7C7C848484848484 +8484846C6C6C6C6C6C6C6C6C6C6C6C787878787878787878919191919191919191A5A5A5A5A5A5 +A5A5A5B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3ADADADADADAD +ADADADAEAEAEAEAEAEAEAEAEB9B9B9B9B9B9B9B9B9B9B9B9B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6 +B6B6B6BDBDBDBDBDBDBDBDBDB7B7B7B7B7B7B7B7B7BEBEBEBEBEBEBEBEBEBEBEBEC7C7C7C7C7C7 +C7C7C7BDBDBDBDBDBDBDBDBD929292929292929292969696969696969696BFBFBFBFBFBFBFBFBF +BFBFBFBEBEBEBEBEBEBEBEBEB4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8C8C8C8C8C8C8C8C8C8 +C8C8C8C3C3C3C3C3C3C3C3C3ABABABABABABABABABE5E5E5E5E5E5E5E5E5E0E0E0E0E0E0E0E0E0 +D1D1D1D1D1D1D1D1D1D1D1D1B0B0B0B0B0B0B0B0B08282828282828282828A8A8A8A8A8A8A8A8A +BCBCBCBCBCBCBCBCBCD6D6D5D6D6D5D6D6D5D6D6D5C8C8C8C8C8C8C8C8C8979797979797979797 +7272727272727272729C9C9C9C9C9C9C9C9C9C9C9CD8D8D8D8D8D8D8D8D8DBDBDBDBDBDBDBDBDB +D3D3D3D3D3D3D3D3D3A1A1A1A1A1A1A1A1A1939393939393939393939393C1C1C1C1C1C1C1C1C1 +DFE0DFDFE0DFDFE0DFD5D5D5D5D5D5D5D5D5C5C5C5C5C5C5C5C5C5AAAAAAAAAAAAAAAAAAAAAAAA +B4B4B4B4B4B4B4B4B4D3D3D3D3D3D3D3D3D3DFE0DFDFE0DFDFE0DFDCDCDCDCDCDCDCDCDCDCDCDC +BEBEBEBEBEBEBEBEBEB2B2B2B2B2B2B2B2B2BABABABABABABABABABFBFBFBFBFBFBFBFBFBEBEBE +BEBEBEBEBEBEBEBEBEB0B0B0B0B0B0B0B0B08C8C8C8C8C8C8C8C8CA2A2A2A2A2A2A2A2A2DBDBDB +DBDBDBDBDBDBE3E3E3E3E3E3E3E3E3E3E3E3CECECECECECECECECEBDBDBDBDBDBDBDBDBD9C9C9C +9C9C9C9C9C9CA0A0A0A0A0A0A0A0A0A0A0A0B4B4B4B4B4B4B4B4B4BCBCBCBCBCBCBCBCBCBABABA +BABABABABABAA8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAAAAAAA9B9B9B9B9B9B9B9B9B9A9A9A +9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9EA3A3A3A3A3A3A3A3A3A3A3A3A6A6A6 +A6A6A6A6A6A6B0B1B0B0B1B0B0B1B0BBBBBBBBBBBBBBBBBBBABABABABABABABABABABABAAAAAAA +AAAAAAAAAAAAADADADADADADADADADC9C9C9C9C9C9C9C9C9CBCBCBCBCBCBCBCBCBC4C4C4C4C4C4 +C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5B9B9B9B9B9B9B9B9B9AEAEAEAEAEAEAEAEAE9E9E9E9E9E9E +9E9E9E9595959595959595959595958989898989898989897D7D7D7D7D7D7D7D7D7C7C7C7C7C7C +7C7C7C7979797979797979797979798787878787878787879292929292929292928D8D8D8D8D8D +8D8D8D8A8A8A8A8A8A8A8A8A8C8C8C8C8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D888888888888 +888888969696969696969696AFAFAFAFAFAFAFAFAFABABABABABABABABABABABAB8D8D8D8D8D8D +8D8D8D6767676767676767675454545454545454544D4D4D4D4D4D4D4D4D4D4D4D505050505050 +5050506161616161616161617C7C7C7C7C7C7C7C7C8484848484848484846C6C6C6C6C6C6C6C6C +6C6C6C787878787878787878919191919191919191A5A5A5A5A5A5A5A5A5B0B1B0B0B1B0B0B1B0 +B2B2B2B2B2B2B2B2B2B2B2B2B3B3B3B3B3B3B3B3B3ADADADADADADADADADAEAEAEAEAEAEAEAEAE +B9B9B9B9B9B9B9B9B9B9B9B9B5B5B5B5B5B5B5B5B5B6B6B6B6B6B6B6B6B6BDBDBDBDBDBDBDBDBD +B7B7B7B7B7B7B7B7B7BEBEBEBEBEBEBEBEBEBEBEBEC7C7C7C7C7C7C7C7C7BDBDBDBDBDBDBDBDBD +929292929292929292969696969696969696BFBFBFBFBFBFBFBFBFBFBFBFBEBEBEBEBEBEBEBEBE +B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8C8C8C8C8C8C8C8C8C8C8C8C8C3C3C3C3C3C3C3C3C3 +ABABABABABABABABABD6D6D5D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5C0C0C0C0C0C0C0C0C0C0C0C0 +8E8E8E8E8E8E8E8E8E6161616161616161617B7B7B7B7B7B7B7B7BBABABABABABABABABAD0D0D0 +D0D0D0D0D0D0D0D0D0CCCCCCCCCCCCCCCCCCA1A1A1A1A1A1A1A1A1909090909090909090C1C1C1 +C1C1C1C1C1C1C1C1C1DFDFDFDFDFDFDFDFDFDBDBDBDBDBDBDBDBDBD2D2D2D2D2D2D2D2D2CBCBCB +CBCBCBCBCBCBC1C1C1C1C1C1C1C1C1C1C1C1CDCDCDCDCDCDCDCDCDD3D3D3D3D3D3D3D3D3C4C4C4 +C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5CBCBCBCBCBCBCBCBCBCBCBCBD6D6D6D6D6D6D6D6D6D8D8D8 +D8D8D8D8D8D8D2D2D2D2D2D2D2D2D2CACACACACACACACACACACACAB3B3B3B3B3B3B3B3B3B7B7B7 +B7B7B7B7B7B7C5C5C5C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1B2B2B2B2B2B2B2B2B2B2B2B2959595 +959595959595616161616161616161757575757575757575C8C8C8C8C8C8C8C8C8E1E1E1E1E1E1 +E1E1E1E1E1E1D3D3D3D3D3D3D3D3D3A9A9A9A9A9A9A9A9A9707070707070707070676767676767 +6767676767679A9A9A9A9A9A9A9A9AC0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5B6B6B6B6B6B6 +B6B6B6A9A9A9A9A9A9A9A9A9A9A9A9A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A29F9F9F9F9F9F +9F9F9F9B9B9B9B9B9B9B9B9B9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E +9E9E9EA0A0A0A0A0A0A0A0A0A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8ABABABABABAB +ABABABB7B7B7B7B7B7B7B7B7C3C3C3C3C3C3C3C3C3C5C5C5C5C5C5C5C5C5C5C5C5BFBFBFBFBFBF +BFBFBFC5C5C5C5C5C5C5C5C5C8C8C8C8C8C8C8C8C8CFCFCFCFCFCFCFCFCFC7C7C7C7C7C7C7C7C7 +C7C7C7BABABABABABABABABAB0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFACACACACACACACACAC +ACACACB4B4B4B4B4B4B4B4B4B3B3B3B3B3B3B3B3B39B9B9B9B9B9B9B9B9B909090909090909090 +8C8C8C8C8C8C8C8C8C8C8C8C8383838383838383837E7E7E7E7E7E7E7E7E9F9F9F9F9F9F9F9F9F +B0B1B0B0B1B0B0B1B0C1C1C1C1C1C1C1C1C1C1C1C1B6B6B6B6B6B6B6B6B68F8F8F8F8F8F8F8F8F +6767676767676767675D5D5D5D5D5D5D5D5D5D5D5D6B6B6B6B6B6B6B6B6B888888888888888888 +999999999999999999939393939393939393999999999999999999999999B2B2B2B2B2B2B2B2B2 +BDBDBDBDBDBDBDBDBDB8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBB3B3B3B3B3B3B3B3B3B3B3B3 +ADADADADADADADADADABABABABABABABABABB1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9B9B9B9 +A8A8A8A8A8A8A8A8A8A1A1A1A1A1A1A1A1A1BDBDBDBDBDBDBDBDBDC9C9C9C9C9C9C9C9C9C9C9C9 +C9C9C9C9C9C9C9C9C9C3C3C3C3C3C3C3C3C3B7B7B7B7B7B7B7B7B7909090909090909090989898 +989898989898BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFA3A3A3A3A3A3A3A3A39B9B9B +9B9B9B9B9B9BBCBCBCBCBCBCBCBCBCBCBCBCC5C5C5C5C5C5C5C5C5BDBDBDBDBDBDBDBDBDD6D6D5 +D6D6D5D6D6D5D6D6D5D6D6D5D6D6D5C0C0C0C0C0C0C0C0C0C0C0C08E8E8E8E8E8E8E8E8E616161 +6161616161617B7B7B7B7B7B7B7B7BBABABABABABABABABAD0D0D0D0D0D0D0D0D0D0D0D0CCCCCC +CCCCCCCCCCCCA1A1A1A1A1A1A1A1A1909090909090909090C1C1C1C1C1C1C1C1C1C1C1C1DFDFDF +DFDFDFDFDFDFDBDBDBDBDBDBDBDBDBD2D2D2D2D2D2D2D2D2CBCBCBCBCBCBCBCBCBC1C1C1C1C1C1 +C1C1C1C1C1C1CDCDCDCDCDCDCDCDCDD3D3D3D3D3D3D3D3D3C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5 +C5C5C5CBCBCBCBCBCBCBCBCBCBCBCBD6D6D6D6D6D6D6D6D6D8D8D8D8D8D8D8D8D8D2D2D2D2D2D2 +D2D2D2CACACACACACACACACACACACAB3B3B3B3B3B3B3B3B3B7B7B7B7B7B7B7B7B7C5C5C5C5C5C5 +C5C5C5C1C1C1C1C1C1C1C1C1B2B2B2B2B2B2B2B2B2B2B2B2959595959595959595616161616161 +616161757575757575757575C8C8C8C8C8C8C8C8C8E1E1E1E1E1E1E1E1E1E1E1E1D3D3D3D3D3D3 +D3D3D3A9A9A9A9A9A9A9A9A97070707070707070706767676767676767676767679A9A9A9A9A9A +9A9A9AC0C0C0C0C0C0C0C0C0C5C5C5C5C5C5C5C5C5B6B6B6B6B6B6B6B6B6A9A9A9A9A9A9A9A9A9 +A9A9A9A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A2A29F9F9F9F9F9F9F9F9F9B9B9B9B9B9B9B9B9B +9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0 +A7A7A7A7A7A7A7A7A7A7A7A7A8A8A8A8A8A8A8A8A8ABABABABABABABABABB7B7B7B7B7B7B7B7B7 +C3C3C3C3C3C3C3C3C3C5C5C5C5C5C5C5C5C5C5C5C5BFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5 +C8C8C8C8C8C8C8C8C8CFCFCFCFCFCFCFCFCFC7C7C7C7C7C7C7C7C7C7C7C7BABABABABABABABABA +B0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFACACACACACACACACACACACACB4B4B4B4B4B4B4B4B4 +B3B3B3B3B3B3B3B3B39B9B9B9B9B9B9B9B9B9090909090909090908C8C8C8C8C8C8C8C8C8C8C8C +8383838383838383837E7E7E7E7E7E7E7E7E9F9F9F9F9F9F9F9F9FB0B1B0B0B1B0B0B1B0C1C1C1 +C1C1C1C1C1C1C1C1C1B6B6B6B6B6B6B6B6B68F8F8F8F8F8F8F8F8F6767676767676767675D5D5D +5D5D5D5D5D5D5D5D5D6B6B6B6B6B6B6B6B6B888888888888888888999999999999999999939393 +939393939393999999999999999999999999B2B2B2B2B2B2B2B2B2BDBDBDBDBDBDBDBDBDB8B8B8 +B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBB3B3B3B3B3B3B3B3B3B3B3B3ADADADADADADADADADABABAB +ABABABABABABB1B1B1B1B1B1B1B1B1B9B9B9B9B9B9B9B9B9B9B9B9A8A8A8A8A8A8A8A8A8A1A1A1 +A1A1A1A1A1A1BDBDBDBDBDBDBDBDBDC9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C9C3C3C3 +C3C3C3C3C3C3B7B7B7B7B7B7B7B7B7909090909090909090989898989898989898BFBFBFBFBFBF +BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFA3A3A3A3A3A3A3A3A39B9B9B9B9B9B9B9B9BBCBCBCBCBCBC +BCBCBCBCBCBCC5C5C5C5C5C5C5C5C5BDBDBDBDBDBDBDBDBDBFBFBFBFBFBFBFBFBFC9C9C9C9C9C9 +C9C9C9BBBBBBBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8B7D7D7D7D7D7D7D7D7DA6A6A6A6A6A6 +A6A6A6C9C9C9C9C9C9C9C9C9CBCBCBCBCBCBCBCBCBCBCBCBC4C4C4C4C4C4C4C4C4C8C8C8C8C8C8 +C8C8C8CECECECECECECECECEE1E1E1E1E1E1E1E1E1E1E1E1D9D9D9D9D9D9D9D9D9CDCDCDCDCDCD +CDCDCDC6C6C6C6C6C6C6C6C6CDCDCDCDCDCDCDCDCDD6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7 +D7D7D7CECECECECECECECECEABABABABABABABABAB9E9E9E9E9E9E9E9E9EB7B7B7B7B7B7B7B7B7 +B7B7B7DBDBDBDBDBDBDBDBDBE9E9E9E9E9E9E9E9E9D6D6D5D6D6D5D6D6D5A8A8A8A8A8A8A8A8A8 +A8A8A87E7E7E7E7E7E7E7E7E999999999999999999C7C7C7C7C7C7C7C7C7C5C5C5C5C5C5C5C5C5 +B2B2B2B2B2B2B2B2B2B2B2B28888888888888888885A5A5A5A5A5A5A5A5A717171717171717171 +BCBCBCBCBCBCBCBCBCDDDDDDDDDDDDDDDDDDDDDDDDE1E1E1E1E1E1E1E1E1BDBDBDBDBDBDBDBDBD +888888888888888888818181818181818181818181B2B2B2B2B2B2B2B2B2C7C7C7C7C7C7C7C7C7 +C4C4C4C4C4C4C4C4C4B6B6B6B6B6B6B6B6B6B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1 +A5A5A5A5A5A5A5A5A59E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E +9D9D9D9D9D9D9D9D9D9B9B9B9B9B9B9B9B9B9999999999999999999C9C9C9C9C9C9C9C9C9C9C9C +AAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7BBBBBBBBBBBBBBBBBBC0C0C0 +C0C0C0C0C0C0C0C0C0B4B4B4B4B4B4B4B4B4B9B9B9B9B9B9B9B9B9C0C0C0C0C0C0C0C0C0CACACA +CACACACACACAD1D1D1D1D1D1D1D1D1D1D1D1CBCBCBCBCBCBCBCBCBC1C1C1C1C1C1C1C1C1BFBFBF +BFBFBFBFBFBFC5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1B3B3B3 +B3B3B3B3B3B3AFAFAFAFAFAFAFAFAFA7A7A7A7A7A7A7A7A7A7A7A79B9B9B9B9B9B9B9B9B9F9F9F +9F9F9F9F9F9FB7B7B7B7B7B7B7B7B7BDBDBDBDBDBDBDBDBDCACACACACACACACACACACACABFBFBF +BFBFBFBFBFBFA8A8A8A8A8A8A8A8A89292929292929292928F8F8F8F8F8F8F8F8F8F8F8F959595 +959595959595A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAEB0B0B0B0B0B0B0B0B0B9B9B9B9B9B9 +B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFC4C4C4C4C4C4C4C4C4BABABABABABABABABAAEAEAEAEAEAE +AEAEAEACACACACACACACACACACACACA8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8B2B2B2B2B2B2 +B2B2B2AFAFAFAFAFAFAFAFAFAFAFAF818181818181818181727272727272727272AEAEAEAEAEAE +AEAEAED3D3D3D3D3D3D3D3D3CDCDCDCDCDCDCDCDCDCDCDCDB0B1B0B0B1B0B0B1B0ABABABABABAB +ABABABB2B2B2B2B2B2B2B2B2BABABABABABABABABACFCFCFCFCFCFCFCFCFCFCFCFC7C7C7C7C7C7 +C7C7C78F8F8F8F8F8F8F8F8F838383838383838383B6B6B6B6B6B6B6B6B6B6B6B6C8C8C8C8C8C8 +C8C8C8B8B8B8B8B8B8B8B8B8BFBFBFBFBFBFBFBFBFC9C9C9C9C9C9C9C9C9BBBBBBBBBBBBBBBBBB +BBBBBB8B8B8B8B8B8B8B8B8B7D7D7D7D7D7D7D7D7DA6A6A6A6A6A6A6A6A6C9C9C9C9C9C9C9C9C9 +CBCBCBCBCBCBCBCBCBCBCBCBC4C4C4C4C4C4C4C4C4C8C8C8C8C8C8C8C8C8CECECECECECECECECE +E1E1E1E1E1E1E1E1E1E1E1E1D9D9D9D9D9D9D9D9D9CDCDCDCDCDCDCDCDCDC6C6C6C6C6C6C6C6C6 +CDCDCDCDCDCDCDCDCDD6D6D6D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7CECECECECECECECECE +ABABABABABABABABAB9E9E9E9E9E9E9E9E9EB7B7B7B7B7B7B7B7B7B7B7B7DBDBDBDBDBDBDBDBDB +E9E9E9E9E9E9E9E9E9D6D6D5D6D6D5D6D6D5A8A8A8A8A8A8A8A8A8A8A8A87E7E7E7E7E7E7E7E7E +999999999999999999C7C7C7C7C7C7C7C7C7C5C5C5C5C5C5C5C5C5B2B2B2B2B2B2B2B2B2B2B2B2 +8888888888888888885A5A5A5A5A5A5A5A5A717171717171717171BCBCBCBCBCBCBCBCBCDDDDDD +DDDDDDDDDDDDDDDDDDE1E1E1E1E1E1E1E1E1BDBDBDBDBDBDBDBDBD888888888888888888818181 +818181818181818181B2B2B2B2B2B2B2B2B2C7C7C7C7C7C7C7C7C7C4C4C4C4C4C4C4C4C4B6B6B6 +B6B6B6B6B6B6B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A5A5A5A5A5A5A5A5A59E9E9E +9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9B9B9B +9B9B9B9B9B9B9999999999999999999C9C9C9C9C9C9C9C9C9C9C9CAAAAAAAAAAAAAAAAAAA8A8A8 +A8A8A8A8A8A8A7A7A7A7A7A7A7A7A7BBBBBBBBBBBBBBBBBBC0C0C0C0C0C0C0C0C0C0C0C0B4B4B4 +B4B4B4B4B4B4B9B9B9B9B9B9B9B9B9C0C0C0C0C0C0C0C0C0CACACACACACACACACAD1D1D1D1D1D1 +D1D1D1D1D1D1CBCBCBCBCBCBCBCBCBC1C1C1C1C1C1C1C1C1BFBFBFBFBFBFBFBFBFC5C5C5C5C5C5 +C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C1C1C1C1C1C1C1C1C1B3B3B3B3B3B3B3B3B3AFAFAFAFAFAF +AFAFAFA7A7A7A7A7A7A7A7A7A7A7A79B9B9B9B9B9B9B9B9B9F9F9F9F9F9F9F9F9FB7B7B7B7B7B7 +B7B7B7BDBDBDBDBDBDBDBDBDCACACACACACACACACACACACABFBFBFBFBFBFBFBFBFA8A8A8A8A8A8 +A8A8A89292929292929292928F8F8F8F8F8F8F8F8F8F8F8F959595959595959595A8A8A8A8A8A8 +A8A8A8AEAEAEAEAEAEAEAEAEB0B0B0B0B0B0B0B0B0B9B9B9B9B9B9B9B9B9B9B9B9BFBFBFBFBFBF +BFBFBFC4C4C4C4C4C4C4C4C4BABABABABABABABABAAEAEAEAEAEAEAEAEAEACACACACACACACACAC +ACACACA8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2AFAFAFAFAFAFAFAFAF +AFAFAF818181818181818181727272727272727272AEAEAEAEAEAEAEAEAED3D3D3D3D3D3D3D3D3 +CDCDCDCDCDCDCDCDCDCDCDCDB0B1B0B0B1B0B0B1B0ABABABABABABABABABB2B2B2B2B2B2B2B2B2 +BABABABABABABABABACFCFCFCFCFCFCFCFCFCFCFCFC7C7C7C7C7C7C7C7C78F8F8F8F8F8F8F8F8F +838383838383838383B6B6B6B6B6B6B6B6B6B6B6B6C8C8C8C8C8C8C8C8C8B8B8B8B8B8B8B8B8B8 +BFBFBFBFBFBFBFBFBFC9C9C9C9C9C9C9C9C9BBBBBBBBBBBBBBBBBBBBBBBB8B8B8B8B8B8B8B8B8B +7D7D7D7D7D7D7D7D7DA6A6A6A6A6A6A6A6A6C9C9C9C9C9C9C9C9C9CBCBCBCBCBCBCBCBCBCBCBCB +C4C4C4C4C4C4C4C4C4C8C8C8C8C8C8C8C8C8CECECECECECECECECEE1E1E1E1E1E1E1E1E1E1E1E1 +D9D9D9D9D9D9D9D9D9CDCDCDCDCDCDCDCDCDC6C6C6C6C6C6C6C6C6CDCDCDCDCDCDCDCDCDD6D6D6 +D6D6D6D6D6D6D6D6D6D7D7D7D7D7D7D7D7D7CECECECECECECECECEABABABABABABABABAB9E9E9E +9E9E9E9E9E9EB7B7B7B7B7B7B7B7B7B7B7B7DBDBDBDBDBDBDBDBDBE9E9E9E9E9E9E9E9E9D6D6D5 +D6D6D5D6D6D5A8A8A8A8A8A8A8A8A8A8A8A87E7E7E7E7E7E7E7E7E999999999999999999C7C7C7 +C7C7C7C7C7C7C5C5C5C5C5C5C5C5C5B2B2B2B2B2B2B2B2B2B2B2B28888888888888888885A5A5A +5A5A5A5A5A5A717171717171717171BCBCBCBCBCBCBCBCBCDDDDDDDDDDDDDDDDDDDDDDDDE1E1E1 +E1E1E1E1E1E1BDBDBDBDBDBDBDBDBD888888888888888888818181818181818181818181B2B2B2 +B2B2B2B2B2B2C7C7C7C7C7C7C7C7C7C4C4C4C4C4C4C4C4C4B6B6B6B6B6B6B6B6B6B1B1B1B1B1B1 +B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1A5A5A5A5A5A5A5A5A59E9E9E9E9E9E9E9E9E9D9D9D9D9D9D +9D9D9D9E9E9E9E9E9E9E9E9E9E9E9E9D9D9D9D9D9D9D9D9D9B9B9B9B9B9B9B9B9B999999999999 +9999999C9C9C9C9C9C9C9C9C9C9C9CAAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8A7A7A7A7A7A7 +A7A7A7BBBBBBBBBBBBBBBBBBC0C0C0C0C0C0C0C0C0C0C0C0B4B4B4B4B4B4B4B4B4B9B9B9B9B9B9 +B9B9B9C0C0C0C0C0C0C0C0C0CACACACACACACACACAD1D1D1D1D1D1D1D1D1D1D1D1CBCBCBCBCBCB +CBCBCBC1C1C1C1C1C1C1C1C1BFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5 +C5C5C5C1C1C1C1C1C1C1C1C1B3B3B3B3B3B3B3B3B3AFAFAFAFAFAFAFAFAFA7A7A7A7A7A7A7A7A7 +A7A7A79B9B9B9B9B9B9B9B9B9F9F9F9F9F9F9F9F9FB7B7B7B7B7B7B7B7B7BDBDBDBDBDBDBDBDBD +CACACACACACACACACACACACABFBFBFBFBFBFBFBFBFA8A8A8A8A8A8A8A8A8929292929292929292 +8F8F8F8F8F8F8F8F8F8F8F8F959595959595959595A8A8A8A8A8A8A8A8A8AEAEAEAEAEAEAEAEAE +B0B0B0B0B0B0B0B0B0B9B9B9B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFC4C4C4C4C4C4C4C4C4 +BABABABABABABABABAAEAEAEAEAEAEAEAEAEACACACACACACACACACACACACA8A8A8A8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2AFAFAFAFAFAFAFAFAFAFAFAF818181818181818181 +727272727272727272AEAEAEAEAEAEAEAEAED3D3D3D3D3D3D3D3D3CDCDCDCDCDCDCDCDCDCDCDCD +B0B1B0B0B1B0B0B1B0ABABABABABABABABABB2B2B2B2B2B2B2B2B2BABABABABABABABABACFCFCF +CFCFCFCFCFCFCFCFCFC7C7C7C7C7C7C7C7C78F8F8F8F8F8F8F8F8F838383838383838383B6B6B6 +B6B6B6B6B6B6B6B6B6C8C8C8C8C8C8C8C8C8B8B8B8B8B8B8B8B8B8C7C7C7C7C7C7C7C7C7C5C5C5 +C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5BABABABABABABABABABDBDBDBDBDBDBDBDBDD2D2D2 +D2D2D2D2D2D2D3D3D3D3D3D3D3D3D3C5C5C5C5C5C5C5C5C5C5C5C5B3B3B3B3B3B3B3B3B3B9B9B9 +B9B9B9B9B9B9D7D7D7D7D7D7D7D7D7EDEDEDEDEDEDEDEDEDEDEDEDD0D0D0D0D0D0D0D0D0B8B8B8 +B8B8B8B8B8B8A1A1A1A1A1A1A1A1A1A6A6A6A6A6A6A6A6A6CBCBCBCBCBCBCBCBCBCBCBCBD5D5D5 +D5D5D5D5D5D5BFBFBFBFBFBFBFBFBF9595959595959595956969696969696969698B8B8B8B8B8B +8B8B8B8B8B8BD0D0D0D0D0D0D0D0D0E4E4E4E4E4E4E4E4E4D2D2D2D2D2D2D2D2D2979797979797 +9797979797975E5E5E5E5E5E5E5E5E7E7E7E7E7E7E7E7E7EBEBEBEBEBEBEBEBEBEC5C5C5C5C5C5 +C5C5C5C3C3C3C3C3C3C3C3C3C3C3C38C8C8C8C8C8C8C8C8C636363636363636363909090909090 +909090BEBEBEBEBEBEBEBEBED1D1D1D1D1D1D1D1D1D1D1D1E4E4E4E4E4E4E4E4E4D0D0D0D0D0D0 +D0D0D0C3C3C3C3C3C3C3C3C3C1C1C1C1C1C1C1C1C1C1C1C1D5D5D5D5D5D5D5D5D5DCDCDCDCDCDC +DCDCDCD6D6D6D6D6D6D6D6D6C8C8C8C8C8C8C8C8C8C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5 +C5C5C5B1B1B1B1B1B1B1B1B1A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5999999999999999999 +9999999C9C9C9C9C9C9C9C9CA6A6A6A6A6A6A6A6A69B9B9B9B9B9B9B9B9B949494949494949494 +949494A6A6A6A6A6A6A6A6A6A5A5A5A5A5A5A5A5A5A1A1A1A1A1A1A1A1A1AEAEAEAEAEAEAEAEAE +B4B4B4B4B4B4B4B4B4B4B4B4A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A9A9A9A9A9A9A9A9A9 +B8B8B8B8B8B8B8B8B8C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2BCBCBCBCBCBCBCBCBC +BABABABABABABABABAC8C8C8C8C8C8C8C8C8C8C8C8C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C4 +C3C3C3C3C3C3C3C3C3CCCCCCCCCCCCCCCCCCCACACACACACACACACACACACACBCBCBCBCBCBCBCBCB +CECECECECECECECECECDCDCDCDCDCDCDCDCDC9C9C9C9C9C9C9C9C9CECECECECECECECECECECECE +CACACACACACACACACABEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFC3C3C3C3C3C3C3C3C3C3C3C3 +B9B9B9B9B9B9B9B9B9BFBFBFBFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4B6B6B6 +B6B6B6B6B6B6B6B6B6B0B1B0B0B1B0B0B1B0B1B1B1B1B1B1B1B1B1AAAAAAAAAAAAAAAAAAA1A1A1 +A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8B3B3B3 +B3B3B3B3B3B3A0A0A0A0A0A0A0A0A0A0A0A06D6D6D6D6D6D6D6D6D7B7B7B7B7B7B7B7B7BB7B7B7 +B7B7B7B7B7B7D9D9D9D9D9D9D9D9D9C5C5C5C5C5C5C5C5C5C5C5C58E8E8E8E8E8E8E8E8E888888 +888888888888BABABABABABABABABAC1C1C1C1C1C1C1C1C1CECECECECECECECECECECECECCCCCC +CCCCCCCCCCCCA3A3A3A3A3A3A3A3A3A7A7A7A7A7A7A7A7A7C5C5C5C5C5C5C5C5C5C5C5C5CECECE +CECECECECECEACACACACACACACACACC7C7C7C7C7C7C7C7C7C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5 +C5C5C5C5C5C5BABABABABABABABABABDBDBDBDBDBDBDBDBDD2D2D2D2D2D2D2D2D2D3D3D3D3D3D3 +D3D3D3C5C5C5C5C5C5C5C5C5C5C5C5B3B3B3B3B3B3B3B3B3B9B9B9B9B9B9B9B9B9D7D7D7D7D7D7 +D7D7D7EDEDEDEDEDEDEDEDEDEDEDEDD0D0D0D0D0D0D0D0D0B8B8B8B8B8B8B8B8B8A1A1A1A1A1A1 +A1A1A1A6A6A6A6A6A6A6A6A6CBCBCBCBCBCBCBCBCBCBCBCBD5D5D5D5D5D5D5D5D5BFBFBFBFBFBF +BFBFBF9595959595959595956969696969696969698B8B8B8B8B8B8B8B8B8B8B8BD0D0D0D0D0D0 +D0D0D0E4E4E4E4E4E4E4E4E4D2D2D2D2D2D2D2D2D29797979797979797979797975E5E5E5E5E5E +5E5E5E7E7E7E7E7E7E7E7E7EBEBEBEBEBEBEBEBEBEC5C5C5C5C5C5C5C5C5C3C3C3C3C3C3C3C3C3 +C3C3C38C8C8C8C8C8C8C8C8C636363636363636363909090909090909090BEBEBEBEBEBEBEBEBE +D1D1D1D1D1D1D1D1D1D1D1D1E4E4E4E4E4E4E4E4E4D0D0D0D0D0D0D0D0D0C3C3C3C3C3C3C3C3C3 +C1C1C1C1C1C1C1C1C1C1C1C1D5D5D5D5D5D5D5D5D5DCDCDCDCDCDCDCDCDCD6D6D6D6D6D6D6D6D6 +C8C8C8C8C8C8C8C8C8C4C4C4C4C4C4C4C4C4C4C4C4C5C5C5C5C5C5C5C5C5B1B1B1B1B1B1B1B1B1 +A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A5A59999999999999999999999999C9C9C9C9C9C9C9C9C +A6A6A6A6A6A6A6A6A69B9B9B9B9B9B9B9B9B949494949494949494949494A6A6A6A6A6A6A6A6A6 +A5A5A5A5A5A5A5A5A5A1A1A1A1A1A1A1A1A1AEAEAEAEAEAEAEAEAEB4B4B4B4B4B4B4B4B4B4B4B4 +A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A9A9A9A9A9A9A9A9A9B8B8B8B8B8B8B8B8B8C2C2C2 +C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2C2BCBCBCBCBCBCBCBCBCBABABABABABABABABAC8C8C8 +C8C8C8C8C8C8C8C8C8C5C5C5C5C5C5C5C5C5C4C4C4C4C4C4C4C4C4C3C3C3C3C3C3C3C3C3CCCCCC +CCCCCCCCCCCCCACACACACACACACACACACACACBCBCBCBCBCBCBCBCBCECECECECECECECECECDCDCD +CDCDCDCDCDCDC9C9C9C9C9C9C9C9C9CECECECECECECECECECECECECACACACACACACACACABEBEBE +BEBEBEBEBEBEBFBFBFBFBFBFBFBFBFC3C3C3C3C3C3C3C3C3C3C3C3B9B9B9B9B9B9B9B9B9BFBFBF +BFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6B6B6B6B0B1B0 +B0B1B0B0B1B0B1B1B1B1B1B1B1B1B1AAAAAAAAAAAAAAAAAAA1A1A1A1A1A1A1A1A1A8A8A8A8A8A8 +A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAA8A8A8A8A8A8A8A8A8B3B3B3B3B3B3B3B3B3A0A0A0A0A0A0 +A0A0A0A0A0A06D6D6D6D6D6D6D6D6D7B7B7B7B7B7B7B7B7BB7B7B7B7B7B7B7B7B7D9D9D9D9D9D9 +D9D9D9C5C5C5C5C5C5C5C5C5C5C5C58E8E8E8E8E8E8E8E8E888888888888888888BABABABABABA +BABABAC1C1C1C1C1C1C1C1C1CECECECECECECECECECECECECCCCCCCCCCCCCCCCCCA3A3A3A3A3A3 +A3A3A3A7A7A7A7A7A7A7A7A7C5C5C5C5C5C5C5C5C5C5C5C5CECECECECECECECECEACACACACACAC +ACACACCECECECECECECECECEC7C7C7C7C7C7C7C7C7C5C5C5C5C5C5C5C5C5C5C5C5C7C7C7C7C7C7 +C7C7C7D3D3D3D3D3D3D3D3D3DEDEDEDEDEDEDEDEDED6D6D6D6D6D6D6D6D6B8B8B8B8B8B8B8B8B8 +B8B8B88A8A8A8A8A8A8A8A8A858585858585858585BABABABABABABABABAE8E9E8E8E9E8E8E9E8 +E8E9E8D7D7D7D7D7D7D7D7D7ACACACACACACACACAC7B7B7B7B7B7B7B7B7B747474747474747474 +B3B3B3B3B3B3B3B3B3B3B3B3D6D6D6D6D6D6D6D6D6C5C5C5C5C5C5C5C5C58C8C8C8C8C8C8C8C8C +5A5A5A5A5A5A5A5A5A7B7B7B7B7B7B7B7B7B7B7B7BC6C6C6C6C6C6C6C6C6DBDBDBDBDBDBDBDBDB +D2D2D2D2D2D2D2D2D29C9C9C9C9C9C9C9C9C9C9C9C6E6E6E6E6E6E6E6E6E929292929292929292 +BDBDBDBDBDBDBDBDBDC1C1C1C1C1C1C1C1C1D0D0D0D0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C0 +9C9C9C9C9C9C9C9C9CADADADADADADADADADC3C3C3C3C3C3C3C3C3CFCFCFCFCFCFCFCFCFCFCFCF +DFE0DFDFE0DFDFE0DFD6D6D6D6D6D6D6D6D6DADADADADADADADADADFE0DFDFE0DFDFE0DFDFE0DF +CACACACACACACACACAC8C8C8C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8D5D5D5D5D5D5D5D5D5D2D2D2 +D2D2D2D2D2D2D2D2D2C8C8C8C8C8C8C8C8C8B2B2B2B2B2B2B2B2B2A9A9A9A9A9A9A9A9A9AFAFAF +AFAFAFAFAFAFA0A0A0A0A0A0A0A0A0A0A0A0A4A4A4A4A4A4A4A4A4B0B0B0B0B0B0B0B0B0A2A2A2 +A2A2A2A2A2A29898989898989898989898989A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B +9B9B9B9B9B9B9B9B9B9B9B9B9B9B9BA8A8A8A8A8A8A8A8A8A8A8A89C9C9C9C9C9C9C9C9C939393 +9393939393939E9E9E9E9E9E9E9E9EAFAFAFAFAFAFAFAFAFB8B8B8B8B8B8B8B8B8B8B8B8B3B3B3 +B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B2B2B2B2B2B2B2B2B2BEBEBEBEBEBEBEBEBEBEBEBEC3C3C3 +C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4BABABABABABABABABAC5C5C5C5C5C5C5C5C5C8C8C8C8C8C8 +C8C8C8C8C8C8CDCDCDCDCDCDCDCDCDD2D2D2D2D2D2D2D2D2CECECECECECECECECECACACACACACA +CACACACDCDCDCDCDCDCDCDCDCDCDCDD3D3D3D3D3D3D3D3D3CDCDCDCDCDCDCDCDCDD1D1D1D1D1D1 +D1D1D1D5D5D5D5D5D5D5D5D5D5D5D5C3C3C3C3C3C3C3C3C3BFBFBFBFBFBFBFBFBFBABABABABABA +BABABAACACACACACACACACACA7A7A7A7A7A7A7A7A7A7A7A7A3A3A3A3A3A3A3A3A39F9F9F9F9F9F +9F9F9F9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A9A9A9A9A9A9A9A9A9A9A9A9AEAEAEAEAEAE +AEAEAEAFAFAFAFAFAFAFAFAFB2B2B2B2B2B2B2B2B2959595959595959595959595787878787878 +787878999999999999999999C1C1C1C1C1C1C1C1C1DADADADADADADADADAC0C0C0C0C0C0C0C0C0 +C0C0C08C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8CBDBDBDBDBDBDBDBDBDBFBFBFBFBFBFBFBFBF +BBBBBBBBBBBBBBBBBBBBBBBBC5C5C5C5C5C5C5C5C5CCCCCCCCCCCCCCCCCCD0D0D0D0D0D0D0D0D0 +CFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0B8B8B8B8B8B8B8B8B8CECECECECECECECECE +C7C7C7C7C7C7C7C7C7C5C5C5C5C5C5C5C5C5C5C5C5C7C7C7C7C7C7C7C7C7D3D3D3D3D3D3D3D3D3 +DEDEDEDEDEDEDEDEDED6D6D6D6D6D6D6D6D6B8B8B8B8B8B8B8B8B8B8B8B88A8A8A8A8A8A8A8A8A +858585858585858585BABABABABABABABABAE8E9E8E8E9E8E8E9E8E8E9E8D7D7D7D7D7D7D7D7D7 +ACACACACACACACACAC7B7B7B7B7B7B7B7B7B747474747474747474B3B3B3B3B3B3B3B3B3B3B3B3 +D6D6D6D6D6D6D6D6D6C5C5C5C5C5C5C5C5C58C8C8C8C8C8C8C8C8C5A5A5A5A5A5A5A5A5A7B7B7B +7B7B7B7B7B7B7B7B7BC6C6C6C6C6C6C6C6C6DBDBDBDBDBDBDBDBDBD2D2D2D2D2D2D2D2D29C9C9C +9C9C9C9C9C9C9C9C9C6E6E6E6E6E6E6E6E6E929292929292929292BDBDBDBDBDBDBDBDBDC1C1C1 +C1C1C1C1C1C1D0D0D0D0D0D0D0D0D0D0D0D0C0C0C0C0C0C0C0C0C09C9C9C9C9C9C9C9C9CADADAD +ADADADADADADC3C3C3C3C3C3C3C3C3CFCFCFCFCFCFCFCFCFCFCFCFDFE0DFDFE0DFDFE0DFD6D6D6 +D6D6D6D6D6D6DADADADADADADADADADFE0DFDFE0DFDFE0DFDFE0DFCACACACACACACACACAC8C8C8 +C8C8C8C8C8C8D8D8D8D8D8D8D8D8D8D5D5D5D5D5D5D5D5D5D2D2D2D2D2D2D2D2D2D2D2D2C8C8C8 +C8C8C8C8C8C8B2B2B2B2B2B2B2B2B2A9A9A9A9A9A9A9A9A9AFAFAFAFAFAFAFAFAFA0A0A0A0A0A0 +A0A0A0A0A0A0A4A4A4A4A4A4A4A4A4B0B0B0B0B0B0B0B0B0A2A2A2A2A2A2A2A2A2989898989898 +9898989898989A9A9A9A9A9A9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B +9B9B9BA8A8A8A8A8A8A8A8A8A8A8A89C9C9C9C9C9C9C9C9C9393939393939393939E9E9E9E9E9E +9E9E9EAFAFAFAFAFAFAFAFAFB8B8B8B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4 +B4B4B4B2B2B2B2B2B2B2B2B2BEBEBEBEBEBEBEBEBEBEBEBEC3C3C3C3C3C3C3C3C3C4C4C4C4C4C4 +C4C4C4BABABABABABABABABAC5C5C5C5C5C5C5C5C5C8C8C8C8C8C8C8C8C8C8C8C8CDCDCDCDCDCD +CDCDCDD2D2D2D2D2D2D2D2D2CECECECECECECECECECACACACACACACACACACDCDCDCDCDCDCDCDCD +CDCDCDD3D3D3D3D3D3D3D3D3CDCDCDCDCDCDCDCDCDD1D1D1D1D1D1D1D1D1D5D5D5D5D5D5D5D5D5 +D5D5D5C3C3C3C3C3C3C3C3C3BFBFBFBFBFBFBFBFBFBABABABABABABABABAACACACACACACACACAC +A7A7A7A7A7A7A7A7A7A7A7A7A3A3A3A3A3A3A3A3A39F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E +A1A1A1A1A1A1A1A1A1A9A9A9A9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAF +B2B2B2B2B2B2B2B2B2959595959595959595959595787878787878787878999999999999999999 +C1C1C1C1C1C1C1C1C1DADADADADADADADADAC0C0C0C0C0C0C0C0C0C0C0C08C8C8C8C8C8C8C8C8C +8C8C8C8C8C8C8C8C8CBDBDBDBDBDBDBDBDBDBFBFBFBFBFBFBFBFBFBBBBBBBBBBBBBBBBBBBBBBBB +C5C5C5C5C5C5C5C5C5CCCCCCCCCCCCCCCCCCD0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCF +D0D0D0D0D0D0D0D0D0B8B8B8B8B8B8B8B8B8CECECECECECECECECEC7C7C7C7C7C7C7C7C7C5C5C5 +C5C5C5C5C5C5C5C5C5C7C7C7C7C7C7C7C7C7D3D3D3D3D3D3D3D3D3DEDEDEDEDEDEDEDEDED6D6D6 +D6D6D6D6D6D6B8B8B8B8B8B8B8B8B8B8B8B88A8A8A8A8A8A8A8A8A858585858585858585BABABA +BABABABABABAE8E9E8E8E9E8E8E9E8E8E9E8D7D7D7D7D7D7D7D7D7ACACACACACACACACAC7B7B7B +7B7B7B7B7B7B747474747474747474B3B3B3B3B3B3B3B3B3B3B3B3D6D6D6D6D6D6D6D6D6C5C5C5 +C5C5C5C5C5C58C8C8C8C8C8C8C8C8C5A5A5A5A5A5A5A5A5A7B7B7B7B7B7B7B7B7B7B7B7BC6C6C6 +C6C6C6C6C6C6DBDBDBDBDBDBDBDBDBD2D2D2D2D2D2D2D2D29C9C9C9C9C9C9C9C9C9C9C9C6E6E6E +6E6E6E6E6E6E929292929292929292BDBDBDBDBDBDBDBDBDC1C1C1C1C1C1C1C1C1D0D0D0D0D0D0 +D0D0D0D0D0D0C0C0C0C0C0C0C0C0C09C9C9C9C9C9C9C9C9CADADADADADADADADADC3C3C3C3C3C3 +C3C3C3CFCFCFCFCFCFCFCFCFCFCFCFDFE0DFDFE0DFDFE0DFD6D6D6D6D6D6D6D6D6DADADADADADA +DADADADFE0DFDFE0DFDFE0DFDFE0DFCACACACACACACACACAC8C8C8C8C8C8C8C8C8D8D8D8D8D8D8 +D8D8D8D5D5D5D5D5D5D5D5D5D2D2D2D2D2D2D2D2D2D2D2D2C8C8C8C8C8C8C8C8C8B2B2B2B2B2B2 +B2B2B2A9A9A9A9A9A9A9A9A9AFAFAFAFAFAFAFAFAFA0A0A0A0A0A0A0A0A0A0A0A0A4A4A4A4A4A4 +A4A4A4B0B0B0B0B0B0B0B0B0A2A2A2A2A2A2A2A2A29898989898989898989898989A9A9A9A9A9A +9A9A9A9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9BA8A8A8A8A8A8A8A8A8 +A8A8A89C9C9C9C9C9C9C9C9C9393939393939393939E9E9E9E9E9E9E9E9EAFAFAFAFAFAFAFAFAF +B8B8B8B8B8B8B8B8B8B8B8B8B3B3B3B3B3B3B3B3B3B4B4B4B4B4B4B4B4B4B2B2B2B2B2B2B2B2B2 +BEBEBEBEBEBEBEBEBEBEBEBEC3C3C3C3C3C3C3C3C3C4C4C4C4C4C4C4C4C4BABABABABABABABABA +C5C5C5C5C5C5C5C5C5C8C8C8C8C8C8C8C8C8C8C8C8CDCDCDCDCDCDCDCDCDD2D2D2D2D2D2D2D2D2 +CECECECECECECECECECACACACACACACACACACDCDCDCDCDCDCDCDCDCDCDCDD3D3D3D3D3D3D3D3D3 +CDCDCDCDCDCDCDCDCDD1D1D1D1D1D1D1D1D1D5D5D5D5D5D5D5D5D5D5D5D5C3C3C3C3C3C3C3C3C3 +BFBFBFBFBFBFBFBFBFBABABABABABABABABAACACACACACACACACACA7A7A7A7A7A7A7A7A7A7A7A7 +A3A3A3A3A3A3A3A3A39F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1A9A9A9 +A9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAEAFAFAFAFAFAFAFAFAFB2B2B2B2B2B2B2B2B2959595 +959595959595959595787878787878787878999999999999999999C1C1C1C1C1C1C1C1C1DADADA +DADADADADADAC0C0C0C0C0C0C0C0C0C0C0C08C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8C8CBDBDBD +BDBDBDBDBDBDBFBFBFBFBFBFBFBFBFBBBBBBBBBBBBBBBBBBBBBBBBC5C5C5C5C5C5C5C5C5CCCCCC +CCCCCCCCCCCCD0D0D0D0D0D0D0D0D0CFCFCFCFCFCFCFCFCFCFCFCFD0D0D0D0D0D0D0D0D0B8B8B8 +B8B8B8B8B8B8D4D4D4D4D4D4D4D4D4C5C5C5C5C5C5C5C5C5A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2 +A2A2A2A2A2A2C6C6C6C6C6C6C6C6C6DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBB0B1B0B0B1B0 +B0B1B0B0B1B06F6F6F6F6F6F6F6F6F626262626262626262A8A8A8A8A8A8A8A8A8E2E2E2E2E2E2 +E2E2E2E2E2E2E4E4E4E4E4E4E4E4E4A9A9A9A9A9A9A9A9A96E6E6E6E6E6E6E6E6E7D7D7D7D7D7D +7D7D7DBBBBBBBBBBBBBBBBBBBBBBBBE0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFA8A8A8A8A8A8 +A8A8A8737373737373737373969696969696969696969696CCCCCCCCCCCCCCCCCCDDDDDDDDDDDD +DDDDDDD6D6D6D6D6D6D6D6D6C4C4C4C4C4C4C4C4C4C4C4C4A1A1A1A1A1A1A1A1A1AFAFAFAFAFAF +AFAFAFCBCBCBCBCBCBCBCBCBCFCFCFCFCFCFCFCFCFCCCCCCCCCCCCCCCCCCCCCCCCCECECECECECE +CECECEC9C9C9C9C9C9C9C9C9C6C6C6C6C6C6C6C6C6CCCCCCCCCCCCCCCCCCDFDFDFDFDFDFDFDFDF +DFDFDFE8E8E8E8E8E8E8E8E8E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2DBDBDBDBDBDBDBDBDB +DBDBDBACACACACACACACACAC9A9A9A9A9A9A9A9A9ABDBDBDBDBDBDBDBDBDD3D3D3D3D3D3D3D3D3 +D7D7D7D7D7D7D7D7D7D7D7D7C3C3C3C3C3C3C3C3C3B2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8 +BEBEBEBEBEBEBEBEBEB6B6B6B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBD +ADADADADADADADADAD9A9A9A9A9A9A9A9A9A9A9A9A939393939393939393969696969696969696 +9A9A9A9A9A9A9A9A9A9898989898989898989B9B9B9B9B9B9B9B9B9B9B9B979797979797979797 +959595959595959595A1A1A1A1A1A1A1A1A1A7A7A7A7A7A7A7A7A7B0B1B0B0B1B0B0B1B0B0B1B0 +ACACACACACACACACACA8A8A8A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAB0B1B0B0B1B0B0B1B0B0B1B0 +BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B7B7B7 +B7B7B7B7B7B7B7B7B7BFBFBFBFBFBFBFBFBFC7C7C7C7C7C7C7C7C7C3C3C3C3C3C3C3C3C3B7B7B7 +B7B7B7B7B7B7C7C7C7C7C7C7C7C7C7C7C7C7CECECECECECECECECEC2C2C2C2C2C2C2C2C2CCCCCC +CCCCCCCCCCCCD2D2D2D2D2D2D2D2D2D2D2D2BEBEBEBEBEBEBEBEBEB3B3B3B3B3B3B3B3B3AFAFAF +AFAFAFAFAFAFA5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A69F9F9F9F9F9F9F9F9F979797 +9797979797979E9E9E9E9E9E9E9E9EA5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6B0B0B0 +B0B0B0B0B0B0B4B4B4B4B4B4B4B4B4B2B2B2B2B2B2B2B2B29B9B9B9B9B9B9B9B9B9B9B9B919191 +919191919191A2A2A2A2A2A2A2A2A2B8B8B8B8B8B8B8B8B8D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7 +C7C7C7C7C7C7B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2C6C6C6C6C6C6C6C6C6BDBDBDBDBDBD +BDBDBD9898989898989898989898989C9C9C9C9C9C9C9C9CCCCCCCCCCCCCCCCCCCD1D1D1D1D1D1 +D1D1D1BEBEBEBEBEBEBEBEBEBEBEBEB5B5B5B5B5B5B5B5B5C0C0C0C0C0C0C0C0C0D4D4D4D4D4D4 +D4D4D4C5C5C5C5C5C5C5C5C5A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2C6C6C6C6C6C6 +C6C6C6DBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBDBB0B1B0B0B1B0B0B1B0B0B1B06F6F6F6F6F6F +6F6F6F626262626262626262A8A8A8A8A8A8A8A8A8E2E2E2E2E2E2E2E2E2E2E2E2E4E4E4E4E4E4 +E4E4E4A9A9A9A9A9A9A9A9A96E6E6E6E6E6E6E6E6E7D7D7D7D7D7D7D7D7DBBBBBBBBBBBBBBBBBB +BBBBBBE0E0E0E0E0E0E0E0E0DFE0DFDFE0DFDFE0DFA8A8A8A8A8A8A8A8A8737373737373737373 +969696969696969696969696CCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDD6D6D6D6D6D6D6D6D6 +C4C4C4C4C4C4C4C4C4C4C4C4A1A1A1A1A1A1A1A1A1AFAFAFAFAFAFAFAFAFCBCBCBCBCBCBCBCBCB +CFCFCFCFCFCFCFCFCFCCCCCCCCCCCCCCCCCCCCCCCCCECECECECECECECECEC9C9C9C9C9C9C9C9C9 +C6C6C6C6C6C6C6C6C6CCCCCCCCCCCCCCCCCCDFDFDFDFDFDFDFDFDFDFDFDFE8E8E8E8E8E8E8E8E8 +E1E1E1E1E1E1E1E1E1E2E2E2E2E2E2E2E2E2DBDBDBDBDBDBDBDBDBDBDBDBACACACACACACACACAC +9A9A9A9A9A9A9A9A9ABDBDBDBDBDBDBDBDBDD3D3D3D3D3D3D3D3D3D7D7D7D7D7D7D7D7D7D7D7D7 +C3C3C3C3C3C3C3C3C3B2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8BEBEBEBEBEBEBEBEBEB6B6B6 +B6B6B6B6B6B6B6B6B6B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDADADADADADADADADAD9A9A9A +9A9A9A9A9A9A9A9A9A9393939393939393939696969696969696969A9A9A9A9A9A9A9A9A989898 +9898989898989B9B9B9B9B9B9B9B9B9B9B9B979797979797979797959595959595959595A1A1A1 +A1A1A1A1A1A1A7A7A7A7A7A7A7A7A7B0B1B0B0B1B0B0B1B0B0B1B0ACACACACACACACACACA8A8A8 +A8A8A8A8A8A8AAAAAAAAAAAAAAAAAAB0B1B0B0B1B0B0B1B0B0B1B0BBBBBBBBBBBBBBBBBBBBBBBB +BBBBBBBBBBBBB0B0B0B0B0B0B0B0B0B1B1B1B1B1B1B1B1B1B7B7B7B7B7B7B7B7B7B7B7B7BFBFBF +BFBFBFBFBFBFC7C7C7C7C7C7C7C7C7C3C3C3C3C3C3C3C3C3B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7 +C7C7C7C7C7C7CECECECECECECECECEC2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCD2D2D2D2D2D2 +D2D2D2D2D2D2BEBEBEBEBEBEBEBEBEB3B3B3B3B3B3B3B3B3AFAFAFAFAFAFAFAFAFA5A5A5A5A5A5 +A5A5A5A6A6A6A6A6A6A6A6A6A6A6A69F9F9F9F9F9F9F9F9F9797979797979797979E9E9E9E9E9E +9E9E9EA5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6A6A6A6B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4 +B4B4B4B2B2B2B2B2B2B2B2B29B9B9B9B9B9B9B9B9B9B9B9B919191919191919191A2A2A2A2A2A2 +A2A2A2B8B8B8B8B8B8B8B8B8D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7C7C7C7B0B1B0B0B1B0 +B0B1B0B2B2B2B2B2B2B2B2B2C6C6C6C6C6C6C6C6C6BDBDBDBDBDBDBDBDBD989898989898989898 +9898989C9C9C9C9C9C9C9C9CCCCCCCCCCCCCCCCCCCD1D1D1D1D1D1D1D1D1BEBEBEBEBEBEBEBEBE +BEBEBEB5B5B5B5B5B5B5B5B5C0C0C0C0C0C0C0C0C0D4D4D4D4D4D4D4D4D4C5C5C5C5C5C5C5C5C5 +A3A3A3A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2C6C6C6C6C6C6C6C6C6DBDBDBDBDBDBDBDBDB +DBDBDBDBDBDBDBDBDBB0B1B0B0B1B0B0B1B0B0B1B06F6F6F6F6F6F6F6F6F626262626262626262 +A8A8A8A8A8A8A8A8A8E2E2E2E2E2E2E2E2E2E2E2E2E4E4E4E4E4E4E4E4E4A9A9A9A9A9A9A9A9A9 +6E6E6E6E6E6E6E6E6E7D7D7D7D7D7D7D7D7DBBBBBBBBBBBBBBBBBBBBBBBBE0E0E0E0E0E0E0E0E0 +DFE0DFDFE0DFDFE0DFA8A8A8A8A8A8A8A8A8737373737373737373969696969696969696969696 +CCCCCCCCCCCCCCCCCCDDDDDDDDDDDDDDDDDDD6D6D6D6D6D6D6D6D6C4C4C4C4C4C4C4C4C4C4C4C4 +A1A1A1A1A1A1A1A1A1AFAFAFAFAFAFAFAFAFCBCBCBCBCBCBCBCBCBCFCFCFCFCFCFCFCFCFCCCCCC +CCCCCCCCCCCCCCCCCCCECECECECECECECECEC9C9C9C9C9C9C9C9C9C6C6C6C6C6C6C6C6C6CCCCCC +CCCCCCCCCCCCDFDFDFDFDFDFDFDFDFDFDFDFE8E8E8E8E8E8E8E8E8E1E1E1E1E1E1E1E1E1E2E2E2 +E2E2E2E2E2E2DBDBDBDBDBDBDBDBDBDBDBDBACACACACACACACACAC9A9A9A9A9A9A9A9A9ABDBDBD +BDBDBDBDBDBDD3D3D3D3D3D3D3D3D3D7D7D7D7D7D7D7D7D7D7D7D7C3C3C3C3C3C3C3C3C3B2B2B2 +B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8BEBEBEBEBEBEBEBEBEB6B6B6B6B6B6B6B6B6B6B6B6B8B8B8 +B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDADADADADADADADADAD9A9A9A9A9A9A9A9A9A9A9A9A939393 +9393939393939696969696969696969A9A9A9A9A9A9A9A9A9898989898989898989B9B9B9B9B9B +9B9B9B9B9B9B979797979797979797959595959595959595A1A1A1A1A1A1A1A1A1A7A7A7A7A7A7 +A7A7A7B0B1B0B0B1B0B0B1B0B0B1B0ACACACACACACACACACA8A8A8A8A8A8A8A8A8AAAAAAAAAAAA +AAAAAAB0B1B0B0B1B0B0B1B0B0B1B0BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB0B0B0B0B0B0 +B0B0B0B1B1B1B1B1B1B1B1B1B7B7B7B7B7B7B7B7B7B7B7B7BFBFBFBFBFBFBFBFBFC7C7C7C7C7C7 +C7C7C7C3C3C3C3C3C3C3C3C3B7B7B7B7B7B7B7B7B7C7C7C7C7C7C7C7C7C7C7C7C7CECECECECECE +CECECEC2C2C2C2C2C2C2C2C2CCCCCCCCCCCCCCCCCCD2D2D2D2D2D2D2D2D2D2D2D2BEBEBEBEBEBE +BEBEBEB3B3B3B3B3B3B3B3B3AFAFAFAFAFAFAFAFAFA5A5A5A5A5A5A5A5A5A6A6A6A6A6A6A6A6A6 +A6A6A69F9F9F9F9F9F9F9F9F9797979797979797979E9E9E9E9E9E9E9E9EA5A5A5A5A5A5A5A5A5 +A6A6A6A6A6A6A6A6A6A6A6A6B0B0B0B0B0B0B0B0B0B4B4B4B4B4B4B4B4B4B2B2B2B2B2B2B2B2B2 +9B9B9B9B9B9B9B9B9B9B9B9B919191919191919191A2A2A2A2A2A2A2A2A2B8B8B8B8B8B8B8B8B8 +D7D7D7D7D7D7D7D7D7C7C7C7C7C7C7C7C7C7C7C7C7B0B1B0B0B1B0B0B1B0B2B2B2B2B2B2B2B2B2 +C6C6C6C6C6C6C6C6C6BDBDBDBDBDBDBDBDBD9898989898989898989898989C9C9C9C9C9C9C9C9C +CCCCCCCCCCCCCCCCCCD1D1D1D1D1D1D1D1D1BEBEBEBEBEBEBEBEBEBEBEBEB5B5B5B5B5B5B5B5B5 +C0C0C0C0C0C0C0C0C0DBDBDBDBDBDBDBDBDBBDBDBDBDBDBDBDBDBD797979797979797979797979 +6E6E6E6E6E6E6E6E6EB3B3B3B3B3B3B3B3B3D6D6D5D6D6D5D6D6D5DADADADADADADADADAA6A6A6 +A6A6A6A6A6A6A6A6A66C6C6C6C6C6C6C6C6C7E7E7E7E7E7E7E7E7EB6B6B6B6B6B6B6B6B6DBDBDB +DBDBDBDBDBDBDBDBDBE9E9E9E9E9E9E9E9E9C2C2C2C2C2C2C2C2C28E8E8E8E8E8E8E8E8EA7A7A7 +A7A7A7A7A7A7DADADADADADADADADADADADAEEEEEEEEEEEEEEEEEEE8E8E8E8E8E8E8E8E8CBCBCB +CBCBCBCBCBCBABABABABABABABABABB8B8B8B8B8B8B8B8B8B8B8B8D6D6D6D6D6D6D6D6D6DDDDDD +DDDDDDDDDDDDD6D6D5D6D6D5D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5C4C4C4C4C4C4C4C4C4BDBDBD +BDBDBDBDBDBDCBCBCBCBCBCBCBCBCBE0E0E0E0E0E0E0E0E0D6D6D6D6D6D6D6D6D6D6D6D6C5C5C5 +C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5B9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4CECECECECECE +CECECECECECEE5E5E5E5E5E5E5E5E5E2E2E2E2E2E2E2E2E2DDDDDDDDDDDDDDDDDDCBCBCBCBCBCB +CBCBCBCBCBCB8686868686868686865B5B5B5B5B5B5B5B5B8C8C8C8C8C8C8C8C8CCFCFCFCFCFCF +CFCFCFE3E3E3E3E3E3E3E3E3E3E3E3CDCDCDCDCDCDCDCDCDB0B0B0B0B0B0B0B0B0B0B1B0B0B1B0 +B0B1B0BFBFBFBFBFBFBFBFBFC5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6BDBDBDBDBDBD +BDBDBDB0B0B0B0B0B0B0B0B09E9E9E9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1AAAAAAAAAAAA +AAAAAAB0B0B0B0B0B0B0B0B0A7A7A7A7A7A7A7A7A79C9C9C9C9C9C9C9C9C9C9C9C9A9A9A9A9A9A +9A9A9A9797979797979797979C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0 +A0A0A09D9D9D9D9D9D9D9D9D9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1AAAAAAAAAAAAAAAAAA +AAAAAAAEAEAEAEAEAEAEAEAEA2A2A2A2A2A2A2A2A2AEAEAEAEAEAEAEAEAEB8B8B8B8B8B8B8B8B8 +BCBCBCBCBCBCBCBCBCBCBCBCC1C1C1C1C1C1C1C1C1C9C9C9C9C9C9C9C9C9BFBFBFBFBFBFBFBFBF +B0B1B0B0B1B0B0B1B0C2C2C2C2C2C2C2C2C2C2C2C2C4C4C4C4C4C4C4C4C4B0B1B0B0B1B0B0B1B0 +C1C1C1C1C1C1C1C1C1C7C7C7C7C7C7C7C7C7C7C7C7B3B3B3B3B3B3B3B3B3A8A8A8A8A8A8A8A8A8 +A6A6A6A6A6A6A6A6A6A5A5A5A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A8A8A89B9B9B9B9B9B9B9B9B +9898989898989898989F9F9F9F9F9F9F9F9FA6A6A6A6A6A6A6A6A6A8A8A8A8A8A8A8A8A8A8A8A8 +B2B2B2B2B2B2B2B2B2B8B8B8B8B8B8B8B8B8B1B1B1B1B1B1B1B1B1A0A0A0A0A0A0A0A0A0A0A0A0 +8A8A8A8A8A8A8A8A8A7F7F7F7F7F7F7F7F7FA1A1A1A1A1A1A1A1A1CDCDCDCDCDCDCDCDCDC3C3C3 +C3C3C3C3C3C3C3C3C3B7B7B7B7B7B7B7B7B7BEBEBEBEBEBEBEBEBECBCBCBCBCBCBCBCBCBBEBEBE +BEBEBEBEBEBE8C8C8C8C8C8C8C8C8C8C8C8C949494949494949494C7C7C7C7C7C7C7C7C7C8C8C8 +C8C8C8C8C8C8A6A6A6A6A6A6A6A6A6A6A6A68383838383838383839E9E9E9E9E9E9E9E9EDBDBDB +DBDBDBDBDBDBBDBDBDBDBDBDBDBDBD7979797979797979797979796E6E6E6E6E6E6E6E6EB3B3B3 +B3B3B3B3B3B3D6D6D5D6D6D5D6D6D5DADADADADADADADADAA6A6A6A6A6A6A6A6A6A6A6A66C6C6C +6C6C6C6C6C6C7E7E7E7E7E7E7E7E7EB6B6B6B6B6B6B6B6B6DBDBDBDBDBDBDBDBDBDBDBDBE9E9E9 +E9E9E9E9E9E9C2C2C2C2C2C2C2C2C28E8E8E8E8E8E8E8E8EA7A7A7A7A7A7A7A7A7DADADADADADA +DADADADADADAEEEEEEEEEEEEEEEEEEE8E8E8E8E8E8E8E8E8CBCBCBCBCBCBCBCBCBABABABABABAB +ABABABB8B8B8B8B8B8B8B8B8B8B8B8D6D6D6D6D6D6D6D6D6DDDDDDDDDDDDDDDDDDD6D6D5D6D6D5 +D6D6D5D5D5D5D5D5D5D5D5D5D5D5D5C4C4C4C4C4C4C4C4C4BDBDBDBDBDBDBDBDBDCBCBCBCBCBCB +CBCBCBE0E0E0E0E0E0E0E0E0D6D6D6D6D6D6D6D6D6D6D6D6C5C5C5C5C5C5C5C5C5C5C5C5C5C5C5 +C5C5C5B9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4CECECECECECECECECECECECEE5E5E5E5E5E5 +E5E5E5E2E2E2E2E2E2E2E2E2DDDDDDDDDDDDDDDDDDCBCBCBCBCBCBCBCBCBCBCBCB868686868686 +8686865B5B5B5B5B5B5B5B5B8C8C8C8C8C8C8C8C8CCFCFCFCFCFCFCFCFCFE3E3E3E3E3E3E3E3E3 +E3E3E3CDCDCDCDCDCDCDCDCDB0B0B0B0B0B0B0B0B0B0B1B0B0B1B0B0B1B0BFBFBFBFBFBFBFBFBF +C5C5C5C5C5C5C5C5C5C5C5C5C6C6C6C6C6C6C6C6C6BDBDBDBDBDBDBDBDBDB0B0B0B0B0B0B0B0B0 +9E9E9E9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1AAAAAAAAAAAAAAAAAAB0B0B0B0B0B0B0B0B0 +A7A7A7A7A7A7A7A7A79C9C9C9C9C9C9C9C9C9C9C9C9A9A9A9A9A9A9A9A9A979797979797979797 +9C9C9C9C9C9C9C9C9C9E9E9E9E9E9E9E9E9EA0A0A0A0A0A0A0A0A0A0A0A09D9D9D9D9D9D9D9D9D +9E9E9E9E9E9E9E9E9EA1A1A1A1A1A1A1A1A1AAAAAAAAAAAAAAAAAAAAAAAAAEAEAEAEAEAEAEAEAE +A2A2A2A2A2A2A2A2A2AEAEAEAEAEAEAEAEAEB8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBCBCBC +C1C1C1C1C1C1C1C1C1C9C9C9C9C9C9C9C9C9BFBFBFBFBFBFBFBFBFB0B1B0B0B1B0B0B1B0C2C2C2 +C2C2C2C2C2C2C2C2C2C4C4C4C4C4C4C4C4C4B0B1B0B0B1B0B0B1B0C1C1C1C1C1C1C1C1C1C7C7C7 +C7C7C7C7C7C7C7C7C7B3B3B3B3B3B3B3B3B3A8A8A8A8A8A8A8A8A8A6A6A6A6A6A6A6A6A6A5A5A5 +A5A5A5A5A5A5A8A8A8A8A8A8A8A8A8A8A8A89B9B9B9B9B9B9B9B9B9898989898989898989F9F9F +9F9F9F9F9F9FA6A6A6A6A6A6A6A6A6A8A8A8A8A8A8A8A8A8A8A8A8B2B2B2B2B2B2B2B2B2B8B8B8 +B8B8B8B8B8B8B1B1B1B1B1B1B1B1B1A0A0A0A0A0A0A0A0A0A0A0A08A8A8A8A8A8A8A8A8A7F7F7F +7F7F7F7F7F7FA1A1A1A1A1A1A1A1A1CDCDCDCDCDCDCDCDCDC3C3C3C3C3C3C3C3C3C3C3C3B7B7B7 +B7B7B7B7B7B7BEBEBEBEBEBEBEBEBECBCBCBCBCBCBCBCBCBBEBEBEBEBEBEBEBEBE8C8C8C8C8C8C +8C8C8C8C8C8C949494949494949494C7C7C7C7C7C7C7C7C7C8C8C8C8C8C8C8C8C8A6A6A6A6A6A6 +A6A6A6A6A6A68383838383838383839E9E9E9E9E9E9E9E9ED0D0D0D0D0D0D0D0D0A7A7A7A7A7A7 +A7A7A7707070707070707070707070737373737373737373B1B1B1B1B1B1B1B1B1D9D9D9D9D9D9 +D9D9D9E1E1E1E1E1E1E1E1E1C1C1C1C1C1C1C1C1C1C1C1C1979797979797979797B4B4B4B4B4B4 +B4B4B4DBDBDBDBDBDBDBDBDBE2E2E2E2E2E2E2E2E2E2E2E2E4E4E4E4E4E4E4E4E4DCDCDCDCDCDC +DCDCDCCBCBCBCBCBCBCBCBCBD2D2D2D2D2D2D2D2D2E6E6E6E6E6E6E6E6E6E6E6E6EDEDEDEDEDED +EDEDEDE9E9E9E9E9E9E9E9E9DADADADADADADADADAC8C8C8C8C8C8C8C8C8BFBFBFBFBFBFBFBFBF +BFBFBFD0D0D0D0D0D0D0D0D0D9D9D9D9D9D9D9D9D9D4D4D4D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0 +D0D0D0C7C7C7C7C7C7C7C7C7B3B3B3B3B3B3B3B3B3AEAEAEAEAEAEAEAEAED3D3D3D3D3D3D3D3D3 +D0D0D0D0D0D0D0D0D0D0D0D0C8C8C8C8C8C8C8C8C8C0C0C0C0C0C0C0C0C09A9A9A9A9A9A9A9A9A +717171717171717171848484848484848484848484C2C2C2C2C2C2C2C2C2DEDEDEDEDEDEDEDEDE +D6D6D5D6D6D5D6D6D5A8A8A8A8A8A8A8A8A8A8A8A86B6B6B6B6B6B6B6B6B4E4E4E4E4E4E4E4E4E +7C7C7C7C7C7C7C7C7CD0D0D0D0D0D0D0D0D0E9E9E9E9E9E9E9E9E9E9E9E9D3D3D3D3D3D3D3D3D3 +A0A0A0A0A0A0A0A0A08686868686868686869D9D9D9D9D9D9D9D9DB9B9B9B9B9B9B9B9B9B9B9B9 +C7C7C7C7C7C7C7C7C7C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8ADADADADADADADADADADADAD +AEAEAEAEAEAEAEAEAEB4B4B4B4B4B4B4B4B4B9B9B9B9B9B9B9B9B9B0B0B0B0B0B0B0B0B0ACACAC +ACACACACACACACACACA2A2A2A2A2A2A2A2A29E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F +9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E9191919191919191919B9B9B9B9B9B9B9B9BA4A4A4 +A4A4A4A4A4A4AAAAAAAAAAAAAAAAAAAAAAAAA6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7B8B8B8 +B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4B4B4B4BBBBBBBBBBBBBBBBBBBEBEBE +BEBEBEBEBEBEB5B5B5B5B5B5B5B5B5B3B3B3B3B3B3B3B3B3B7B7B7B7B7B7B7B7B7B7B7B7B4B4B4 +B4B4B4B4B4B4AAAAAAAAAAAAAAAAAAB2B2B2B2B2B2B2B2B2B7B7B7B7B7B7B7B7B7B7B7B7AEAEAE +AEAEAEAEAEAEA8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3 +A3A3A3A3A3A39B9B9B9B9B9B9B9B9BA2A2A2A2A2A2A2A2A2A6A6A6A6A6A6A6A6A6ABABABABABAB +ABABABB1B1B1B1B1B1B1B1B1B1B1B1BABABABABABABABABABFBFBFBFBFBFBFBFBFAFAFAFAFAFAF +AFAFAF9191919191919191919191916F6F6F6F6F6F6F6F6F6A6A6A6A6A6A6A6A6A9E9E9E9E9E9E +9E9E9EC5C5C5C5C5C5C5C5C5B4B4B4B4B4B4B4B4B4B4B4B49191919191919191919A9A9A9A9A9A +9A9A9AC6C6C6C6C6C6C6C6C6CCCCCCCCCCCCCCCCCCB0B0B0B0B0B0B0B0B0B0B0B0BEBEBEBEBEBE +BEBEBEDDDDDDDDDDDDDDDDDDD5D5D5D5D5D5D5D5D5A7A7A7A7A7A7A7A7A7A7A7A77D7D7D7D7D7D +7D7D7DA8A8A8A8A8A8A8A8A8D0D0D0D0D0D0D0D0D0A7A7A7A7A7A7A7A7A7707070707070707070 +707070737373737373737373B1B1B1B1B1B1B1B1B1D9D9D9D9D9D9D9D9D9E1E1E1E1E1E1E1E1E1 +C1C1C1C1C1C1C1C1C1C1C1C1979797979797979797B4B4B4B4B4B4B4B4B4DBDBDBDBDBDBDBDBDB +E2E2E2E2E2E2E2E2E2E2E2E2E4E4E4E4E4E4E4E4E4DCDCDCDCDCDCDCDCDCCBCBCBCBCBCBCBCBCB +D2D2D2D2D2D2D2D2D2E6E6E6E6E6E6E6E6E6E6E6E6EDEDEDEDEDEDEDEDEDE9E9E9E9E9E9E9E9E9 +DADADADADADADADADAC8C8C8C8C8C8C8C8C8BFBFBFBFBFBFBFBFBFBFBFBFD0D0D0D0D0D0D0D0D0 +D9D9D9D9D9D9D9D9D9D4D4D4D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0D0D0D0C7C7C7C7C7C7C7C7C7 +B3B3B3B3B3B3B3B3B3AEAEAEAEAEAEAEAEAED3D3D3D3D3D3D3D3D3D0D0D0D0D0D0D0D0D0D0D0D0 +C8C8C8C8C8C8C8C8C8C0C0C0C0C0C0C0C0C09A9A9A9A9A9A9A9A9A717171717171717171848484 +848484848484848484C2C2C2C2C2C2C2C2C2DEDEDEDEDEDEDEDEDED6D6D5D6D6D5D6D6D5A8A8A8 +A8A8A8A8A8A8A8A8A86B6B6B6B6B6B6B6B6B4E4E4E4E4E4E4E4E4E7C7C7C7C7C7C7C7C7CD0D0D0 +D0D0D0D0D0D0E9E9E9E9E9E9E9E9E9E9E9E9D3D3D3D3D3D3D3D3D3A0A0A0A0A0A0A0A0A0868686 +8686868686869D9D9D9D9D9D9D9D9DB9B9B9B9B9B9B9B9B9B9B9B9C7C7C7C7C7C7C7C7C7C0C0C0 +C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8ADADADADADADADADADADADADAEAEAEAEAEAEAEAEAEB4B4B4 +B4B4B4B4B4B4B9B9B9B9B9B9B9B9B9B0B0B0B0B0B0B0B0B0ACACACACACACACACACACACACA2A2A2 +A2A2A2A2A2A29E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E +9E9E9E9E9E9E9191919191919191919B9B9B9B9B9B9B9B9BA4A4A4A4A4A4A4A4A4AAAAAAAAAAAA +AAAAAAAAAAAAA6A6A6A6A6A6A6A6A6A7A7A7A7A7A7A7A7A7B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9 +B9B9B9B4B4B4B4B4B4B4B4B4B4B4B4BBBBBBBBBBBBBBBBBBBEBEBEBEBEBEBEBEBEB5B5B5B5B5B5 +B5B5B5B3B3B3B3B3B3B3B3B3B7B7B7B7B7B7B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4AAAAAAAAAAAA +AAAAAAB2B2B2B2B2B2B2B2B2B7B7B7B7B7B7B7B7B7B7B7B7AEAEAEAEAEAEAEAEAEA8A8A8A8A8A8 +A8A8A8A8A8A8A8A8A8A8A8A8A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A39B9B9B9B9B9B +9B9B9BA2A2A2A2A2A2A2A2A2A6A6A6A6A6A6A6A6A6ABABABABABABABABABB1B1B1B1B1B1B1B1B1 +B1B1B1BABABABABABABABABABFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAF919191919191919191 +9191916F6F6F6F6F6F6F6F6F6A6A6A6A6A6A6A6A6A9E9E9E9E9E9E9E9E9EC5C5C5C5C5C5C5C5C5 +B4B4B4B4B4B4B4B4B4B4B4B49191919191919191919A9A9A9A9A9A9A9A9AC6C6C6C6C6C6C6C6C6 +CCCCCCCCCCCCCCCCCCB0B0B0B0B0B0B0B0B0B0B0B0BEBEBEBEBEBEBEBEBEDDDDDDDDDDDDDDDDDD +D5D5D5D5D5D5D5D5D5A7A7A7A7A7A7A7A7A7A7A7A77D7D7D7D7D7D7D7D7DA8A8A8A8A8A8A8A8A8 +D0D0D0D0D0D0D0D0D0A7A7A7A7A7A7A7A7A7707070707070707070707070737373737373737373 +B1B1B1B1B1B1B1B1B1D9D9D9D9D9D9D9D9D9E1E1E1E1E1E1E1E1E1C1C1C1C1C1C1C1C1C1C1C1C1 +979797979797979797B4B4B4B4B4B4B4B4B4DBDBDBDBDBDBDBDBDBE2E2E2E2E2E2E2E2E2E2E2E2 +E4E4E4E4E4E4E4E4E4DCDCDCDCDCDCDCDCDCCBCBCBCBCBCBCBCBCBD2D2D2D2D2D2D2D2D2E6E6E6 +E6E6E6E6E6E6E6E6E6EDEDEDEDEDEDEDEDEDE9E9E9E9E9E9E9E9E9DADADADADADADADADAC8C8C8 +C8C8C8C8C8C8BFBFBFBFBFBFBFBFBFBFBFBFD0D0D0D0D0D0D0D0D0D9D9D9D9D9D9D9D9D9D4D4D4 +D4D4D4D4D4D4D0D0D0D0D0D0D0D0D0D0D0D0C7C7C7C7C7C7C7C7C7B3B3B3B3B3B3B3B3B3AEAEAE +AEAEAEAEAEAED3D3D3D3D3D3D3D3D3D0D0D0D0D0D0D0D0D0D0D0D0C8C8C8C8C8C8C8C8C8C0C0C0 +C0C0C0C0C0C09A9A9A9A9A9A9A9A9A717171717171717171848484848484848484848484C2C2C2 +C2C2C2C2C2C2DEDEDEDEDEDEDEDEDED6D6D5D6D6D5D6D6D5A8A8A8A8A8A8A8A8A8A8A8A86B6B6B +6B6B6B6B6B6B4E4E4E4E4E4E4E4E4E7C7C7C7C7C7C7C7C7CD0D0D0D0D0D0D0D0D0E9E9E9E9E9E9 +E9E9E9E9E9E9D3D3D3D3D3D3D3D3D3A0A0A0A0A0A0A0A0A08686868686868686869D9D9D9D9D9D +9D9D9DB9B9B9B9B9B9B9B9B9B9B9B9C7C7C7C7C7C7C7C7C7C0C0C0C0C0C0C0C0C0B8B8B8B8B8B8 +B8B8B8ADADADADADADADADADADADADAEAEAEAEAEAEAEAEAEB4B4B4B4B4B4B4B4B4B9B9B9B9B9B9 +B9B9B9B0B0B0B0B0B0B0B0B0ACACACACACACACACACACACACA2A2A2A2A2A2A2A2A29E9E9E9E9E9E +9E9E9E9E9E9E9E9E9E9E9E9E9F9F9F9F9F9F9F9F9F9E9E9E9E9E9E9E9E9E9E9E9E919191919191 +9191919B9B9B9B9B9B9B9B9BA4A4A4A4A4A4A4A4A4AAAAAAAAAAAAAAAAAAAAAAAAA6A6A6A6A6A6 +A6A6A6A7A7A7A7A7A7A7A7A7B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B4B4B4B4B4B4B4B4B4 +B4B4B4BBBBBBBBBBBBBBBBBBBEBEBEBEBEBEBEBEBEB5B5B5B5B5B5B5B5B5B3B3B3B3B3B3B3B3B3 +B7B7B7B7B7B7B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4AAAAAAAAAAAAAAAAAAB2B2B2B2B2B2B2B2B2 +B7B7B7B7B7B7B7B7B7B7B7B7AEAEAEAEAEAEAEAEAEA8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8A8 +A2A2A2A2A2A2A2A2A2A3A3A3A3A3A3A3A3A3A3A3A39B9B9B9B9B9B9B9B9BA2A2A2A2A2A2A2A2A2 +A6A6A6A6A6A6A6A6A6ABABABABABABABABABB1B1B1B1B1B1B1B1B1B1B1B1BABABABABABABABABA +BFBFBFBFBFBFBFBFBFAFAFAFAFAFAFAFAFAF9191919191919191919191916F6F6F6F6F6F6F6F6F +6A6A6A6A6A6A6A6A6A9E9E9E9E9E9E9E9E9EC5C5C5C5C5C5C5C5C5B4B4B4B4B4B4B4B4B4B4B4B4 +9191919191919191919A9A9A9A9A9A9A9A9AC6C6C6C6C6C6C6C6C6CCCCCCCCCCCCCCCCCCB0B0B0 +B0B0B0B0B0B0B0B0B0BEBEBEBEBEBEBEBEBEDDDDDDDDDDDDDDDDDDD5D5D5D5D5D5D5D5D5A7A7A7 +A7A7A7A7A7A7A7A7A77D7D7D7D7D7D7D7D7DA8A8A8A8A8A8A8A8A8E2E2E2E2E2E2E2E2E2BABABA +BABABABABABA8E8E8E8E8E8E8E8E8E8E8E8E9E9E9E9E9E9E9E9E9EC9C9C9C9C9C9C9C9C9E0E0E0 +E0E0E0E0E0E0E8E8E8E8E8E8E8E8E8D7D7D7D7D7D7D7D7D7D7D7D7CECECECECECECECECED6D6D5 +D6D6D5D6D6D5E7E7E7E7E7E7E7E7E7E8E9E8E8E9E8E8E9E8E8E9E8E1E1E1E1E1E1E1E1E1DBDBDB +DBDBDBDBDBDBD1D1D1D1D1D1D1D1D1C2C2C2C2C2C2C2C2C2C5C5C5C5C5C5C5C5C5C5C5C5D6D6D6 +D6D6D6D6D6D6E7E7E7E7E7E7E7E7E7DADADADADADADADADAC3C3C3C3C3C3C3C3C39A9A9A9A9A9A +9A9A9A9A9A9A989898989898989898C1C1C1C1C1C1C1C1C1DADADADADADADADADACBCBCBCBCBCB +CBCBCBCBCBCBBBBBBBBBBBBBBBBBBB979797979797979797787878787878787878AAAAAAAAAAAA +AAAAAACECECECECECECECECECECECED7D7D7D7D7D7D7D7D7C4C4C4C4C4C4C4C4C48E8E8E8E8E8E +8E8E8E5A5A5A5A5A5A5A5A5A626262626262626262626262AAAAAAAAAAAAAAAAAAD8D8D8D8D8D8 +D8D8D8D5D5D5D5D5D5D5D5D5A2A2A2A2A2A2A2A2A2A2A2A26B6B6B6B6B6B6B6B6B727272727272 +727272969696969696969696CFCFCFCFCFCFCFCFCFE0E0E0E0E0E0E0E0E0E0E0E0D6D6D5D6D6D5 +D6D6D5C0C0C0C0C0C0C0C0C0A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2BDBDBDBDBDBDBDBDBD +BDBDBDD0D0D0D0D0D0D0D0D0CBCBCBCBCBCBCBCBCBBEBEBEBEBEBEBEBEBEB7B7B7B7B7B7B7B7B7 +B7B7B7B4B4B4B4B4B4B4B4B4B5B5B5B5B5B5B5B5B5B7B7B7B7B7B7B7B7B7B3B3B3B3B3B3B3B3B3 +BCBCBCBCBCBCBCBCBCBCBCBCB2B2B2B2B2B2B2B2B2A7A7A7A7A7A7A7A7A7A1A1A1A1A1A1A1A1A1 +ABABABABABABABABABACACACACACACACACACACACACA3A3A3A3A3A3A3A3A3AAAAAAAAAAAAAAAAAA +ABABABABABABABABABAEAEAEAEAEAEAEAEAEAEAEAEA6A6A6A6A6A6A6A6A6AFAFAFAFAFAFAFAFAF +BBBBBBBBBBBBBBBBBBB7B7B7B7B7B7B7B7B7A3A3A3A3A3A3A3A3A3A3A3A3AEAEAEAEAEAEAEAEAE +B1B1B1B1B1B1B1B1B1ACACACACACACACACACB0B0B0B0B0B0B0B0B0B2B2B2B2B2B2B2B2B2B2B2B2 +AEAEAEAEAEAEAEAEAEA9A9A9A9A9A9A9A9A9ADADADADADADADADADAAAAAAAAAAAAAAAAAAAAAAAA +B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0B0A7A7A7A7A7A7A7A7A79D9D9D9D9D9D9D9D9D989898 +989898989898989898999999999999999999A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAB3B3B3 +B3B3B3B3B3B3B8B8B8B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDB0B0B0 +B0B0B0B0B0B08888888888888888888888887272727272727272729B9B9B9B9B9B9B9B9BBDBDBD +BDBDBDBDBDBDC9C9C9C9C9C9C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9767676767676767676858585 +858585858585C4C4C4C4C4C4C4C4C4D2D2D2D2D2D2D2D2D2BFBFBFBFBFBFBFBFBFBFBFBFCACACA +CACACACACACAE6E6E6E6E6E6E6E6E6E2E2E2E2E2E2E2E2E2C7C7C7C7C7C7C7C7C7C7C7C7B3B3B3 +B3B3B3B3B3B3C7C7C7C7C7C7C7C7C7E2E2E2E2E2E2E2E2E2BABABABABABABABABA8E8E8E8E8E8E +8E8E8E8E8E8E9E9E9E9E9E9E9E9E9EC9C9C9C9C9C9C9C9C9E0E0E0E0E0E0E0E0E0E8E8E8E8E8E8 +E8E8E8D7D7D7D7D7D7D7D7D7D7D7D7CECECECECECECECECED6D6D5D6D6D5D6D6D5E7E7E7E7E7E7 +E7E7E7E8E9E8E8E9E8E8E9E8E8E9E8E1E1E1E1E1E1E1E1E1DBDBDBDBDBDBDBDBDBD1D1D1D1D1D1 +D1D1D1C2C2C2C2C2C2C2C2C2C5C5C5C5C5C5C5C5C5C5C5C5D6D6D6D6D6D6D6D6D6E7E7E7E7E7E7 +E7E7E7DADADADADADADADADAC3C3C3C3C3C3C3C3C39A9A9A9A9A9A9A9A9A9A9A9A989898989898 +989898C1C1C1C1C1C1C1C1C1DADADADADADADADADACBCBCBCBCBCBCBCBCBCBCBCBBBBBBBBBBBBB +BBBBBB979797979797979797787878787878787878AAAAAAAAAAAAAAAAAACECECECECECECECECE +CECECED7D7D7D7D7D7D7D7D7C4C4C4C4C4C4C4C4C48E8E8E8E8E8E8E8E8E5A5A5A5A5A5A5A5A5A +626262626262626262626262AAAAAAAAAAAAAAAAAAD8D8D8D8D8D8D8D8D8D5D5D5D5D5D5D5D5D5 +A2A2A2A2A2A2A2A2A2A2A2A26B6B6B6B6B6B6B6B6B727272727272727272969696969696969696 +CFCFCFCFCFCFCFCFCFE0E0E0E0E0E0E0E0E0E0E0E0D6D6D5D6D6D5D6D6D5C0C0C0C0C0C0C0C0C0 +A1A1A1A1A1A1A1A1A1A2A2A2A2A2A2A2A2A2BDBDBDBDBDBDBDBDBDBDBDBDD0D0D0D0D0D0D0D0D0 +CBCBCBCBCBCBCBCBCBBEBEBEBEBEBEBEBEBEB7B7B7B7B7B7B7B7B7B7B7B7B4B4B4B4B4B4B4B4B4 +B5B5B5B5B5B5B5B5B5B7B7B7B7B7B7B7B7B7B3B3B3B3B3B3B3B3B3BCBCBCBCBCBCBCBCBCBCBCBC +B2B2B2B2B2B2B2B2B2A7A7A7A7A7A7A7A7A7A1A1A1A1A1A1A1A1A1ABABABABABABABABABACACAC +ACACACACACACACACACA3A3A3A3A3A3A3A3A3AAAAAAAAAAAAAAAAAAABABABABABABABABABAEAEAE +AEAEAEAEAEAEAEAEAEA6A6A6A6A6A6A6A6A6AFAFAFAFAFAFAFAFAFBBBBBBBBBBBBBBBBBBB7B7B7 +B7B7B7B7B7B7A3A3A3A3A3A3A3A3A3A3A3A3AEAEAEAEAEAEAEAEAEB1B1B1B1B1B1B1B1B1ACACAC +ACACACACACACB0B0B0B0B0B0B0B0B0B2B2B2B2B2B2B2B2B2B2B2B2AEAEAEAEAEAEAEAEAEA9A9A9 +A9A9A9A9A9A9ADADADADADADADADADAAAAAAAAAAAAAAAAAAAAAAAAB0B0B0B0B0B0B0B0B0B0B0B0 +B0B0B0B0B0B0A7A7A7A7A7A7A7A7A79D9D9D9D9D9D9D9D9D989898989898989898989898999999 +999999999999A7A7A7A7A7A7A7A7A7AAAAAAAAAAAAAAAAAAB3B3B3B3B3B3B3B3B3B8B8B8B8B8B8 +B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBBDBDBDBDBDBDBDBDBDB0B0B0B0B0B0B0B0B0888888888888 +8888888888887272727272727272729B9B9B9B9B9B9B9B9BBDBDBDBDBDBDBDBDBDC9C9C9C9C9C9 +C9C9C9A9A9A9A9A9A9A9A9A9A9A9A9767676767676767676858585858585858585C4C4C4C4C4C4 +C4C4C4D2D2D2D2D2D2D2D2D2BFBFBFBFBFBFBFBFBFBFBFBFCACACACACACACACACAE6E6E6E6E6E6 +E6E6E6E2E2E2E2E2E2E2E2E2C7C7C7C7C7C7C7C7C7C7C7C7B3B3B3B3B3B3B3B3B3C7C7C7C7C7C7 +C7C7C7F1F1F1F1F1F1F1F1F1E4E4E4E4E4E4E4E4E4C0C0C0C0C0C0C0C0C0C0C0C0B1B1B1B1B1B1 +B1B1B1C4C4C4C4C4C4C4C4C4D8D8D8D8D8D8D8D8D8EDEDEDEDEDEDEDEDEDE5E5E5E5E5E5E5E5E5 +E5E5E5D9D9D9D9D9D9D9D9D9C6C6C6C6C6C6C6C6C6B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBD +BDBDBDD0D0D0D0D0D0D0D0D0D8D8D8D8D8D8D8D8D8CCCCCCCCCCCCCCCCCC9A9A9A9A9A9A9A9A9A +7979797979797979797979799E9E9E9E9E9E9E9E9ED3D3D3D3D3D3D3D3D3CACACACACACACACACA +B4B4B4B4B4B4B4B4B48686868686868686868686865F605F5F605F5F605F939393939393939393 +CBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5C5C5C5A6A6A6A6A6A6A6A6A67A7A7A7A7A7A7A7A7A +636363636363636363939393939393939393CFCFCFCFCFCFCFCFCFCFCFCFE4E4E4E4E4E4E4E4E4 +C8C8C8C8C8C8C8C8C87F7F7F7F7F7F7F7F7F6767676767676767678A8A8A8A8A8A8A8A8A8A8A8A +B1B1B1B1B1B1B1B1B1D3D3D3D3D3D3D3D3D3D8D8D8D8D8D8D8D8D8C5C5C5C5C5C5C5C5C5C5C5C5 +A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2ADADADADADADADADADC3C3C3C3C3C3C3C3C3D0D0D0 +D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0DEDEDEDEDEDEDEDEDED3D3D3D3D3D3D3D3D3C7C7C7 +C7C7C7C7C7C7D9D9D9D9D9D9D9D9D9D9D9D9E2E2E2E2E2E2E2E2E2D2D2D2D2D2D2D2D2D2C0C0C0 +C0C0C0C0C0C0BDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEC0C0C0C0C0C0C0C0C0BEBEBE +BEBEBEBEBEBEBFBFBFBFBFBFBFBFBFC4C4C4C4C4C4C4C4C4C4C4C4BABABABABABABABABAA8A8A8 +A8A8A8A8A8A8A4A4A4A4A4A4A4A4A4AFAFAFAFAFAFAFAFAFB6B6B6B6B6B6B6B6B6B6B6B6B4B4B4 +B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6B2B2B2B2B2B2B2B2B2A8A8A8A8A8A8A8A8A8A8A8A8A2A2A2 +A2A2A2A2A2A2ADADADADADADADADADC0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8AFAFAFAFAFAF +AFAFAFAFAFAFB0B1B0B0B1B0B0B1B0AAAAAAAAAAAAAAAAAAA4A4A4A4A4A4A4A4A4B1B1B1B1B1B1 +B1B1B1B5B5B5B5B5B5B5B5B5B5B5B5A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAB0B1B0B0B1B0 +B0B1B0AAAAAAAAAAAAAAAAAAAAAAAAB0B1B0B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0A0A0A0A0A0A0 +A0A0A09A9A9A9A9A9A9A9A9A949494949494949494949494A3A3A3A3A3A3A3A3A3AEAEAEAEAEAE +AEAEAEADADADADADADADADADB1B1B1B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3B3B3B3B7B7B7B7B7B7 +B7B7B7BABABABABABABABABABEBEBEBEBEBEBEBEBEB3B3B3B3B3B3B3B3B3B3B3B3B0B1B0B0B1B0 +B0B1B0D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2CBCBCBCBCBCBCBCBCBB8B8B8B8B8B8B8B8B8 +B8B8B8979797979797979797A3A3A3A3A3A3A3A3A3C9C9C9C9C9C9C9C9C9CACACACACACACACACA +A1A1A1A1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8D3D3D3D3D3D3D3D3D3D9D9D9D9D9D9D9D9D9 +D6D6D6D6D6D6D6D6D6D6D6D6CECECECECECECECECEB7B7B7B7B7B7B7B7B7F1F1F1F1F1F1F1F1F1 +E4E4E4E4E4E4E4E4E4C0C0C0C0C0C0C0C0C0C0C0C0B1B1B1B1B1B1B1B1B1C4C4C4C4C4C4C4C4C4 +D8D8D8D8D8D8D8D8D8EDEDEDEDEDEDEDEDEDE5E5E5E5E5E5E5E5E5E5E5E5D9D9D9D9D9D9D9D9D9 +C6C6C6C6C6C6C6C6C6B8B8B8B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDBDBDBDD0D0D0D0D0D0D0D0D0 +D8D8D8D8D8D8D8D8D8CCCCCCCCCCCCCCCCCC9A9A9A9A9A9A9A9A9A797979797979797979797979 +9E9E9E9E9E9E9E9E9ED3D3D3D3D3D3D3D3D3CACACACACACACACACAB4B4B4B4B4B4B4B4B4868686 +8686868686868686865F605F5F605F5F605F939393939393939393CBCBCBCBCBCBCBCBCBC5C5C5 +C5C5C5C5C5C5C5C5C5A6A6A6A6A6A6A6A6A67A7A7A7A7A7A7A7A7A636363636363636363939393 +939393939393CFCFCFCFCFCFCFCFCFCFCFCFE4E4E4E4E4E4E4E4E4C8C8C8C8C8C8C8C8C87F7F7F +7F7F7F7F7F7F6767676767676767678A8A8A8A8A8A8A8A8A8A8A8AB1B1B1B1B1B1B1B1B1D3D3D3 +D3D3D3D3D3D3D8D8D8D8D8D8D8D8D8C5C5C5C5C5C5C5C5C5C5C5C5A3A3A3A3A3A3A3A3A3A2A2A2 +A2A2A2A2A2A2ADADADADADADADADADC3C3C3C3C3C3C3C3C3D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0 +D0D0D0D0D0D0DEDEDEDEDEDEDEDEDED3D3D3D3D3D3D3D3D3C7C7C7C7C7C7C7C7C7D9D9D9D9D9D9 +D9D9D9D9D9D9E2E2E2E2E2E2E2E2E2D2D2D2D2D2D2D2D2D2C0C0C0C0C0C0C0C0C0BDBDBDBDBDBD +BDBDBDBDBDBDBEBEBEBEBEBEBEBEBEC0C0C0C0C0C0C0C0C0BEBEBEBEBEBEBEBEBEBFBFBFBFBFBF +BFBFBFC4C4C4C4C4C4C4C4C4C4C4C4BABABABABABABABABAA8A8A8A8A8A8A8A8A8A4A4A4A4A4A4 +A4A4A4AFAFAFAFAFAFAFAFAFB6B6B6B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6 +B6B6B6B2B2B2B2B2B2B2B2B2A8A8A8A8A8A8A8A8A8A8A8A8A2A2A2A2A2A2A2A2A2ADADADADADAD +ADADADC0C0C0C0C0C0C0C0C0B8B8B8B8B8B8B8B8B8AFAFAFAFAFAFAFAFAFAFAFAFB0B1B0B0B1B0 +B0B1B0AAAAAAAAAAAAAAAAAAA4A4A4A4A4A4A4A4A4B1B1B1B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5 +B5B5B5A9A9A9A9A9A9A9A9A9AAAAAAAAAAAAAAAAAAB0B1B0B0B1B0B0B1B0AAAAAAAAAAAAAAAAAA +AAAAAAB0B1B0B0B1B0B0B1B0B0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A0A09A9A9A9A9A9A9A9A9A +949494949494949494949494A3A3A3A3A3A3A3A3A3AEAEAEAEAEAEAEAEAEADADADADADADADADAD +B1B1B1B1B1B1B1B1B1B3B3B3B3B3B3B3B3B3B3B3B3B7B7B7B7B7B7B7B7B7BABABABABABABABABA +BEBEBEBEBEBEBEBEBEB3B3B3B3B3B3B3B3B3B3B3B3B0B1B0B0B1B0B0B1B0D2D2D2D2D2D2D2D2D2 +D2D2D2D2D2D2D2D2D2CBCBCBCBCBCBCBCBCBB8B8B8B8B8B8B8B8B8B8B8B8979797979797979797 +A3A3A3A3A3A3A3A3A3C9C9C9C9C9C9C9C9C9CACACACACACACACACAA1A1A1A1A1A1A1A1A1A1A1A1 +A8A8A8A8A8A8A8A8A8D3D3D3D3D3D3D3D3D3D9D9D9D9D9D9D9D9D9D6D6D6D6D6D6D6D6D6D6D6D6 +CECECECECECECECECEB7B7B7B7B7B7B7B7B7F1F1F1F1F1F1F1F1F1E4E4E4E4E4E4E4E4E4C0C0C0 +C0C0C0C0C0C0C0C0C0B1B1B1B1B1B1B1B1B1C4C4C4C4C4C4C4C4C4D8D8D8D8D8D8D8D8D8EDEDED +EDEDEDEDEDEDE5E5E5E5E5E5E5E5E5E5E5E5D9D9D9D9D9D9D9D9D9C6C6C6C6C6C6C6C6C6B8B8B8 +B8B8B8B8B8B8BDBDBDBDBDBDBDBDBDBDBDBDD0D0D0D0D0D0D0D0D0D8D8D8D8D8D8D8D8D8CCCCCC +CCCCCCCCCCCC9A9A9A9A9A9A9A9A9A7979797979797979797979799E9E9E9E9E9E9E9E9ED3D3D3 +D3D3D3D3D3D3CACACACACACACACACAB4B4B4B4B4B4B4B4B48686868686868686868686865F605F +5F605F5F605F939393939393939393CBCBCBCBCBCBCBCBCBC5C5C5C5C5C5C5C5C5C5C5C5A6A6A6 +A6A6A6A6A6A67A7A7A7A7A7A7A7A7A636363636363636363939393939393939393CFCFCFCFCFCF +CFCFCFCFCFCFE4E4E4E4E4E4E4E4E4C8C8C8C8C8C8C8C8C87F7F7F7F7F7F7F7F7F676767676767 +6767678A8A8A8A8A8A8A8A8A8A8A8AB1B1B1B1B1B1B1B1B1D3D3D3D3D3D3D3D3D3D8D8D8D8D8D8 +D8D8D8C5C5C5C5C5C5C5C5C5C5C5C5A3A3A3A3A3A3A3A3A3A2A2A2A2A2A2A2A2A2ADADADADADAD +ADADADC3C3C3C3C3C3C3C3C3D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0D0DEDEDEDEDEDE +DEDEDED3D3D3D3D3D3D3D3D3C7C7C7C7C7C7C7C7C7D9D9D9D9D9D9D9D9D9D9D9D9E2E2E2E2E2E2 +E2E2E2D2D2D2D2D2D2D2D2D2C0C0C0C0C0C0C0C0C0BDBDBDBDBDBDBDBDBDBDBDBDBEBEBEBEBEBE +BEBEBEC0C0C0C0C0C0C0C0C0BEBEBEBEBEBEBEBEBEBFBFBFBFBFBFBFBFBFC4C4C4C4C4C4C4C4C4 +C4C4C4BABABABABABABABABAA8A8A8A8A8A8A8A8A8A4A4A4A4A4A4A4A4A4AFAFAFAFAFAFAFAFAF +B6B6B6B6B6B6B6B6B6B6B6B6B4B4B4B4B4B4B4B4B4B6B6B6B6B6B6B6B6B6B2B2B2B2B2B2B2B2B2 +A8A8A8A8A8A8A8A8A8A8A8A8A2A2A2A2A2A2A2A2A2ADADADADADADADADADC0C0C0C0C0C0C0C0C0 +B8B8B8B8B8B8B8B8B8AFAFAFAFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0AAAAAAAAAAAAAAAAAA +A4A4A4A4A4A4A4A4A4B1B1B1B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5B5B5B5A9A9A9A9A9A9A9A9A9 +AAAAAAAAAAAAAAAAAAB0B1B0B0B1B0B0B1B0AAAAAAAAAAAAAAAAAAAAAAAAB0B1B0B0B1B0B0B1B0 +B0B0B0B0B0B0B0B0B0A0A0A0A0A0A0A0A0A09A9A9A9A9A9A9A9A9A949494949494949494949494 +A3A3A3A3A3A3A3A3A3AEAEAEAEAEAEAEAEAEADADADADADADADADADB1B1B1B1B1B1B1B1B1B3B3B3 +B3B3B3B3B3B3B3B3B3B7B7B7B7B7B7B7B7B7BABABABABABABABABABEBEBEBEBEBEBEBEBEB3B3B3 +B3B3B3B3B3B3B3B3B3B0B1B0B0B1B0B0B1B0D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2D2CBCBCB +CBCBCBCBCBCBB8B8B8B8B8B8B8B8B8B8B8B8979797979797979797A3A3A3A3A3A3A3A3A3C9C9C9 +C9C9C9C9C9C9CACACACACACACACACAA1A1A1A1A1A1A1A1A1A1A1A1A8A8A8A8A8A8A8A8A8D3D3D3 +D3D3D3D3D3D3D9D9D9D9D9D9D9D9D9D6D6D6D6D6D6D6D6D6D6D6D6CECECECECECECECECEB7B7B7 +B7B7B7B7B7B7DFE0DFDFE0DFDFE0DFE2E2E2E2E2E2E2E2E2D1D1D1D1D1D1D1D1D1D1D1D1A8A8A8 +A8A8A8A8A8A88E8E8E8E8E8E8E8E8EA9A9A9A9A9A9A9A9A9DEDEDEDEDEDEDEDEDEE4E4E4E4E4E4 +E4E4E4E4E4E4D0D0D0D0D0D0D0D0D0A2A2A2A2A2A2A2A2A2727272727272727272898989898989 +898989898989B8B8B8B8B8B8B8B8B8C6C6C6C6C6C6C6C6C6BFBFBFBFBFBFBFBFBF8D8D8D8D8D8D +8D8D8D5F605F5F605F5F605F5F605F828282828282828282C3C3C3C3C3C3C3C3C3C6C6C6C6C6C6 +C6C6C6A7A7A7A7A7A7A7A7A77474747474747474747474745F605F5F605F5F605F878787878787 +878787BFBFBFBFBFBFBFBFBFCACACACACACACACACACACACAA9A9A9A9A9A9A9A9A9767676767676 +767676848484848484848484B8B8B8B8B8B8B8B8B8DBDBDBDBDBDBDBDBDBDBDBDBE8E8E8E8E8E8 +E8E8E8E0E0E0E0E0E0E0E0E0ADADADADADADADADAD909090909090909090B0B0B0B0B0B0B0B0B0 +B0B0B0C0C0C0C0C0C0C0C0C0CECECECECECECECECEDBDBDBDBDBDBDBDBDBD5D5D5D5D5D5D5D5D5 +D5D5D5C5C5C5C5C5C5C5C5C5BDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEC7C7C7C7C7C7C7C7C7 +D0D0D0D0D0D0D0D0D0D0D0D0C8C8C8C8C8C8C8C8C8D0D0D0D0D0D0D0D0D0DADADADADADADADADA +DCDCDCDCDCDCDCDCDCEAEAEAEAEAEAEAEAEAEAEAEAE6E6E6E6E6E6E6E6E6D0D0D0D0D0D0D0D0D0 +B9B9B9B9B9B9B9B9B9B6B6B6B6B6B6B6B6B6B6B6B6BBBBBBBBBBBBBBBBBBC0C0C0C0C0C0C0C0C0 +BCBCBCBCBCBCBCBCBCC6C6C6C6C6C6C6C6C6C8C8C8C8C8C8C8C8C8C8C8C8BABABABABABABABABA +ABABABABABABABABABB0B1B0B0B1B0B0B1B0B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1 +AFAFAFAFAFAFAFAFAFB1B1B1B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5AAAAAAAAAAAAAAAAAAAAAAAA +A6A6A6A6A6A6A6A6A6ADADADADADADADADADC2C2C2C2C2C2C2C2C2BDBDBDBDBDBDBDBDBDC1C1C1 +C1C1C1C1C1C1C1C1C1B8B8B8B8B8B8B8B8B8B2B2B2B2B2B2B2B2B2B0B1B0B0B1B0B0B1B0B8B8B8 +B8B8B8B8B8B8B4B4B4B4B4B4B4B4B4B4B4B4A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9AEAEAE +AEAEAEAEAEAEA9A9A9A9A9A9A9A9A9A9A9A9ABABABABABABABABABABABABABABABABABABA1A1A1 +A1A1A1A1A1A1A0A0A0A0A0A0A0A0A09F9F9F9F9F9F9F9F9F9F9F9FB0B1B0B0B1B0B0B1B0B8B8B8 +B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8 +B8B8B8B8B8B8B5B5B5B5B5B5B5B5B5BFBFBFBFBFBFBFBFBFCACACACACACACACACACACACAD6D6D5 +D6D6D5D6D6D5D9D9D9D9D9D9D9D9D9C4C4C4C4C4C4C4C4C4BDBDBDBDBDBDBDBDBDCACACACACACA +CACACACACACABCBCBCBCBCBCBCBCBCB0B1B0B0B1B0B0B1B0BBBBBBBBBBBBBBBBBBB2B2B2B2B2B2 +B2B2B27B7B7B7B7B7B7B7B7B7B7B7B818181818181818181BDBDBDBDBDBDBDBDBDCBCBCBCBCBCB +CBCBCBC2C2C2C2C2C2C2C2C2C2C2C2A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4DFE0DFDFE0DF +DFE0DFE2E2E2E2E2E2E2E2E2D1D1D1D1D1D1D1D1D1D1D1D1A8A8A8A8A8A8A8A8A88E8E8E8E8E8E +8E8E8EA9A9A9A9A9A9A9A9A9DEDEDEDEDEDEDEDEDEE4E4E4E4E4E4E4E4E4E4E4E4D0D0D0D0D0D0 +D0D0D0A2A2A2A2A2A2A2A2A2727272727272727272898989898989898989898989B8B8B8B8B8B8 +B8B8B8C6C6C6C6C6C6C6C6C6BFBFBFBFBFBFBFBFBF8D8D8D8D8D8D8D8D8D5F605F5F605F5F605F +5F605F828282828282828282C3C3C3C3C3C3C3C3C3C6C6C6C6C6C6C6C6C6A7A7A7A7A7A7A7A7A7 +7474747474747474747474745F605F5F605F5F605F878787878787878787BFBFBFBFBFBFBFBFBF +CACACACACACACACACACACACAA9A9A9A9A9A9A9A9A9767676767676767676848484848484848484 +B8B8B8B8B8B8B8B8B8DBDBDBDBDBDBDBDBDBDBDBDBE8E8E8E8E8E8E8E8E8E0E0E0E0E0E0E0E0E0 +ADADADADADADADADAD909090909090909090B0B0B0B0B0B0B0B0B0B0B0B0C0C0C0C0C0C0C0C0C0 +CECECECECECECECECEDBDBDBDBDBDBDBDBDBD5D5D5D5D5D5D5D5D5D5D5D5C5C5C5C5C5C5C5C5C5 +BDBDBDBDBDBDBDBDBDBEBEBEBEBEBEBEBEBEC7C7C7C7C7C7C7C7C7D0D0D0D0D0D0D0D0D0D0D0D0 +C8C8C8C8C8C8C8C8C8D0D0D0D0D0D0D0D0D0DADADADADADADADADADCDCDCDCDCDCDCDCDCEAEAEA +EAEAEAEAEAEAEAEAEAE6E6E6E6E6E6E6E6E6D0D0D0D0D0D0D0D0D0B9B9B9B9B9B9B9B9B9B6B6B6 +B6B6B6B6B6B6B6B6B6BBBBBBBBBBBBBBBBBBC0C0C0C0C0C0C0C0C0BCBCBCBCBCBCBCBCBCC6C6C6 +C6C6C6C6C6C6C8C8C8C8C8C8C8C8C8C8C8C8BABABABABABABABABAABABABABABABABABABB0B1B0 +B0B1B0B0B1B0B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1B1AFAFAFAFAFAFAFAFAFB1B1B1 +B1B1B1B1B1B1B5B5B5B5B5B5B5B5B5AAAAAAAAAAAAAAAAAAAAAAAAA6A6A6A6A6A6A6A6A6ADADAD +ADADADADADADC2C2C2C2C2C2C2C2C2BDBDBDBDBDBDBDBDBDC1C1C1C1C1C1C1C1C1C1C1C1B8B8B8 +B8B8B8B8B8B8B2B2B2B2B2B2B2B2B2B0B1B0B0B1B0B0B1B0B8B8B8B8B8B8B8B8B8B4B4B4B4B4B4 +B4B4B4B4B4B4A8A8A8A8A8A8A8A8A8A9A9A9A9A9A9A9A9A9AEAEAEAEAEAEAEAEAEA9A9A9A9A9A9 +A9A9A9A9A9A9ABABABABABABABABABABABABABABABABABABA1A1A1A1A1A1A1A1A1A0A0A0A0A0A0 +A0A0A09F9F9F9F9F9F9F9F9F9F9F9FB0B1B0B0B1B0B0B1B0B8B8B8B8B8B8B8B8B8B8B8B8B8B8B8 +B8B8B8B5B5B5B5B5B5B5B5B5B7B7B7B7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8B5B5B5B5B5B5 +B5B5B5BFBFBFBFBFBFBFBFBFCACACACACACACACACACACACAD6D6D5D6D6D5D6D6D5D9D9D9D9D9D9 +D9D9D9C4C4C4C4C4C4C4C4C4BDBDBDBDBDBDBDBDBDCACACACACACACACACACACACABCBCBCBCBCBC +BCBCBCB0B1B0B0B1B0B0B1B0BBBBBBBBBBBBBBBBBBB2B2B2B2B2B2B2B2B27B7B7B7B7B7B7B7B7B +7B7B7B818181818181818181BDBDBDBDBDBDBDBDBDCBCBCBCBCBCBCBCBCBC2C2C2C2C2C2C2C2C2 +C2C2C2A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4A4B0B1B0B0B1B0B0B1B0B7B7B7B7B7B7B7B7B7 +B3B3B3B3B3B3B3B3B3B3B3B39E9E9E9E9E9E9E9E9E8C8C8C8C8C8C8C8C8C959595959595959595 +B0B1B0B0B1B0B0B1B0BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB0B1B0B0B1B0B0B1B0 +9D9D9D9D9D9D9D9D9DA5A5A5A5A5A5A5A5A5A5A5A5B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBB +B7B7B7B7B7B7B7B7B79E9E9E9E9E9E9E9E9E9292929292929292929292929E9E9E9E9E9E9E9E9E +B4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8ABABABABABABABABAB969696969696969696969696 +8E8E8E8E8E8E8E8E8E929292929292929292A2A2A2A2A2A2A2A2A2ABABABABABABABABABABABAB +A4A4A4A4A4A4A4A4A4979797979797979797A0A0A0A0A0A0A0A0A0BEBEBEBEBEBEBEBEBED4D4D4 +D4D4D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4E4E8E9E8E8E9E8E8E9E8DFDFDFDFDFDFDFDFDFCFCFCF +CFCFCFCFCFCFCBCBCBCBCBCBCBCBCBCBCBCBD4D4D4D4D4D4D4D4D4DCDCDCDCDCDCDCDCDCDDDDDD +DDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D9D9D9D2D2D2D2D2D2D2D2D2CDCDCDCDCDCDCDCDCDD0D0D0 +D0D0D0D0D0D0D3D3D3D3D3D3D3D3D3CFCFCFCFCFCFCFCFCFCFCFCFC8C8C8C8C8C8C8C8C8CACACA +CACACACACACAC3C3C3C3C3C3C3C3C3C5C5C5C5C5C5C5C5C5CCCCCCCCCCCCCCCCCCCCCCCCC5C5C5 +C5C5C5C5C5C5B8B8B8B8B8B8B8B8B8ADADADADADADADADADAFAFAFAFAFAFAFAFAFAFAFAFAFAFAF +AFAFAFAFAFAFB7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBFBFBFBFBFBF +BFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9 +B9B9B9B7B7B7B7B7B7B7B7B7B7B7B7AFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0ABABABABABAB +ABABAB9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9E9E9E9E9E9E9E9E9EA8A8A8A8A8A8 +A8A8A8A3A3A3A3A3A3A3A3A39F9F9F9F9F9F9F9F9F9F9F9F9A9A9A9A9A9A9A9A9A9C9C9C9C9C9C +9C9C9C9B9B9B9B9B9B9B9B9B9999999999999999999999999999999999999999999C9C9C9C9C9C +9C9C9C9A9A9A9A9A9A9A9A9A989898989898989898939393939393939393939393979797979797 +9797979595959595959595958E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E989898989898989898 +989898A8A8A8A8A8A8A8A8A8ABABABABABABABABABB0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAF +B0B1B0B0B1B0B0B1B0B0B1B0ADADADADADADADADADACACACACACACACACACB3B3B3B3B3B3B3B3B3 +B3B3B3B3B3B3B3B3B3B3B3B3BDBDBDBDBDBDBDBDBDBABABABABABABABABAA9A9A9A9A9A9A9A9A9 +A7A7A7A7A7A7A7A7A7A6A6A6A6A6A6A6A6A6A6A6A6959595959595959595818181818181818181 +7777777777777777777676767676767676766A6A6A6A6A6A6A6A6A6A6A6A717171717171717171 +8A8A8A8A8A8A8A8A8A9090909090909090909090909090909090909090908C8C8C8C8C8C8C8C8C +949494949494949494B0B1B0B0B1B0B0B1B0B7B7B7B7B7B7B7B7B7B3B3B3B3B3B3B3B3B3B3B3B3 +9E9E9E9E9E9E9E9E9E8C8C8C8C8C8C8C8C8C959595959595959595B0B1B0B0B1B0B0B1B0BFBFBF +BFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFBFB0B1B0B0B1B0B0B1B09D9D9D9D9D9D9D9D9DA5A5A5 +A5A5A5A5A5A5A5A5A5B8B8B8B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBB7B7B7B7B7B7B7B7B79E9E9E +9E9E9E9E9E9E9292929292929292929292929E9E9E9E9E9E9E9E9EB4B4B4B4B4B4B4B4B4B8B8B8 +B8B8B8B8B8B8ABABABABABABABABAB9696969696969696969696968E8E8E8E8E8E8E8E8E929292 +929292929292A2A2A2A2A2A2A2A2A2ABABABABABABABABABABABABA4A4A4A4A4A4A4A4A4979797 +979797979797A0A0A0A0A0A0A0A0A0BEBEBEBEBEBEBEBEBED4D4D4D4D4D4D4D4D4D4D4D4E4E4E4 +E4E4E4E4E4E4E8E9E8E8E9E8E8E9E8DFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCBCBCBCBCBCB +CBCBCBCBCBCBD4D4D4D4D4D4D4D4D4DCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDD9D9D9D9D9D9 +D9D9D9D9D9D9D2D2D2D2D2D2D2D2D2CDCDCDCDCDCDCDCDCDD0D0D0D0D0D0D0D0D0D3D3D3D3D3D3 +D3D3D3CFCFCFCFCFCFCFCFCFCFCFCFC8C8C8C8C8C8C8C8C8CACACACACACACACACAC3C3C3C3C3C3 +C3C3C3C5C5C5C5C5C5C5C5C5CCCCCCCCCCCCCCCCCCCCCCCCC5C5C5C5C5C5C5C5C5B8B8B8B8B8B8 +B8B8B8ADADADADADADADADADAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB7B7B7B7B7B7 +B7B7B7B8B8B8B8B8B8B8B8B8BCBCBCBCBCBCBCBCBCBFBFBFBFBFBFBFBFBFBFBFBFB9B9B9B9B9B9 +B9B9B9B8B8B8B8B8B8B8B8B8B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B7B7B7B7B7B7B7B7B7 +B7B7B7AFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0ABABABABABABABABAB9A9A9A9A9A9A9A9A9A +9A9A9A9A9A9A9A9A9A9A9A9A9E9E9E9E9E9E9E9E9EA8A8A8A8A8A8A8A8A8A3A3A3A3A3A3A3A3A3 +9F9F9F9F9F9F9F9F9F9F9F9F9A9A9A9A9A9A9A9A9A9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B +9999999999999999999999999999999999999999999C9C9C9C9C9C9C9C9C9A9A9A9A9A9A9A9A9A +989898989898989898939393939393939393939393979797979797979797959595959595959595 +8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E989898989898989898989898A8A8A8A8A8A8A8A8A8 +ABABABABABABABABABB0B1B0B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0B0B1B0 +ADADADADADADADADADACACACACACACACACACB3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3 +BDBDBDBDBDBDBDBDBDBABABABABABABABABAA9A9A9A9A9A9A9A9A9A7A7A7A7A7A7A7A7A7A6A6A6 +A6A6A6A6A6A6A6A6A6959595959595959595818181818181818181777777777777777777767676 +7676767676766A6A6A6A6A6A6A6A6A6A6A6A7171717171717171718A8A8A8A8A8A8A8A8A909090 +9090909090909090909090909090909090908C8C8C8C8C8C8C8C8C949494949494949494B0B1B0 +B0B1B0B0B1B0B7B7B7B7B7B7B7B7B7B3B3B3B3B3B3B3B3B3B3B3B39E9E9E9E9E9E9E9E9E8C8C8C +8C8C8C8C8C8C959595959595959595B0B1B0B0B1B0B0B1B0BFBFBFBFBFBFBFBFBFBFBFBFBFBFBF +BFBFBFBFBFBFB0B1B0B0B1B0B0B1B09D9D9D9D9D9D9D9D9DA5A5A5A5A5A5A5A5A5A5A5A5B8B8B8 +B8B8B8B8B8B8BBBBBBBBBBBBBBBBBBB7B7B7B7B7B7B7B7B79E9E9E9E9E9E9E9E9E929292929292 +9292929292929E9E9E9E9E9E9E9E9EB4B4B4B4B4B4B4B4B4B8B8B8B8B8B8B8B8B8ABABABABABAB +ABABAB9696969696969696969696968E8E8E8E8E8E8E8E8E929292929292929292A2A2A2A2A2A2 +A2A2A2ABABABABABABABABABABABABA4A4A4A4A4A4A4A4A4979797979797979797A0A0A0A0A0A0 +A0A0A0BEBEBEBEBEBEBEBEBED4D4D4D4D4D4D4D4D4D4D4D4E4E4E4E4E4E4E4E4E4E8E9E8E8E9E8 +E8E9E8DFDFDFDFDFDFDFDFDFCFCFCFCFCFCFCFCFCFCBCBCBCBCBCBCBCBCBCBCBCBD4D4D4D4D4D4 +D4D4D4DCDCDCDCDCDCDCDCDCDDDDDDDDDDDDDDDDDDD9D9D9D9D9D9D9D9D9D9D9D9D2D2D2D2D2D2 +D2D2D2CDCDCDCDCDCDCDCDCDD0D0D0D0D0D0D0D0D0D3D3D3D3D3D3D3D3D3CFCFCFCFCFCFCFCFCF +CFCFCFC8C8C8C8C8C8C8C8C8CACACACACACACACACAC3C3C3C3C3C3C3C3C3C5C5C5C5C5C5C5C5C5 +CCCCCCCCCCCCCCCCCCCCCCCCC5C5C5C5C5C5C5C5C5B8B8B8B8B8B8B8B8B8ADADADADADADADADAD +AFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFAFB7B7B7B7B7B7B7B7B7B8B8B8B8B8B8B8B8B8 +BCBCBCBCBCBCBCBCBCBFBFBFBFBFBFBFBFBFBFBFBFB9B9B9B9B9B9B9B9B9B8B8B8B8B8B8B8B8B8 +B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B9B7B7B7B7B7B7B7B7B7B7B7B7AFAFAFAFAFAFAFAFAF +B0B1B0B0B1B0B0B1B0ABABABABABABABABAB9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A +9E9E9E9E9E9E9E9E9EA8A8A8A8A8A8A8A8A8A3A3A3A3A3A3A3A3A39F9F9F9F9F9F9F9F9F9F9F9F +9A9A9A9A9A9A9A9A9A9C9C9C9C9C9C9C9C9C9B9B9B9B9B9B9B9B9B999999999999999999999999 +9999999999999999999C9C9C9C9C9C9C9C9C9A9A9A9A9A9A9A9A9A989898989898989898939393 +9393939393939393939797979797979797979595959595959595958E8E8E8E8E8E8E8E8E8E8E8E +8E8E8E8E8E8E989898989898989898989898A8A8A8A8A8A8A8A8A8ABABABABABABABABABB0B1B0 +B0B1B0B0B1B0AFAFAFAFAFAFAFAFAFB0B1B0B0B1B0B0B1B0B0B1B0ADADADADADADADADADACACAC +ACACACACACACB3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3B3BDBDBDBDBDBDBDBDBDBABABA +BABABABABABAA9A9A9A9A9A9A9A9A9A7A7A7A7A7A7A7A7A7A6A6A6A6A6A6A6A6A6A6A6A6959595 +9595959595958181818181818181817777777777777777777676767676767676766A6A6A6A6A6A +6A6A6A6A6A6A7171717171717171718A8A8A8A8A8A8A8A8A909090909090909090909090909090 +9090909090908C8C8C8C8C8C8C8C8C949494949494949494 + +end +%%PageTrailer +%%Trailer +%%EOF diff --git a/language/french/e-french/texmf/doc/test/mygglo.ist b/language/french/e-french/texmf/doc/test/mygglo.ist new file mode 100644 index 0000000000..9748168e9e --- /dev/null +++ b/language/french/e-french/texmf/doc/test/mygglo.ist @@ -0,0 +1,69 @@ +%% mods --bg 10/09/92 +%% This is file `gglo.ist' generated +%% on <1990/2/24> with the docstrip utility (v1.1f). +%% +%% The original source file was `gglo.doc'. +%% +%% +%% Copyright (C) 1989,1990 by Frank Mittelbach. All rights reserved. +%% +%% IMPORTANT NOTICE: +%% +%% You are not allowed to change this file. +%% You may however copy this file to a different name and then +%% change this copy. +%% +%% You are allowed to distribute this file under the condition that it is +%% distributed together with all files mentioned in readme.mz1. +%% If you receive only some of these files from someone, complain! +%% +%% Error Reports in case of UNCHANGED versions to +%% +%% F. Mittelbach +%% Eichenweg 29 +%% D-6500 Mainz 1 +%% Federal Republic of Germany +%% Bitnet: <PZF5HZ@DRUEDS2> +%% + +%% This is a MAKEINDEX style file which should be used to generate the +%% formatted change history for use with the doc style option. The TeX +%% commands used below are defined in doc.sty. The commands for MAKEINDEX +%% like `level' `item_x1' are described in `` Makeindex, A General Purpose, +%% Formatter-Independent Index Processor'' by Poheng Chen. + +%% Since the standard MAKEINDEX implementation have very limited space for +%% their items some of the change entries might fall through. This is +%% unfortunate but I think I can live with it for the moment. + +level '>' +actual '=' +quote '!' + +delim_0 "\\pfill " +delim_1 "\\pfill " +delim_2 "\\pfill " + +item_x1 "\\efill \n \\subitem " +item_x2 "\\efill \n \\subsubitem " + +%% The following is commented (makeindex complains "unknown specifiers) --bg +%%lethead_prefix "{\\bf\\hfil " +%%lethead_suffix "\\hfil}\\nopagebreak\n" +%%lethead_flag 1 % Generate Headings + +%% We disable scanning of macro names inside the index because there +%% exists a style option to work with doc.sty which is capable of scanning +%% every \verb command. This would otherwise produce recursion. + +preamble +"\n \\begin{theglossary} \n \\makeatletter\\scan@allowedfalse\n" + +postamble +"\n\n \\end{theglossary}\n" + +%% Note this difference to gind.ist. This is necessary if you have an +%% up-to-date LaTeX. Otherwise comment it out. + +keyword "\\glossaryentry" + diff --git a/language/french/e-french/texmf/doc/test/mylist.sty b/language/french/e-french/texmf/doc/test/mylist.sty new file mode 100644 index 0000000000..e6930bf2da --- /dev/null +++ b/language/french/e-french/texmf/doc/test/mylist.sty @@ -0,0 +1,109 @@ +%-------mylist.sty +% +% Utilisation : \Mylisting{nom_de_fichier} +% +% last mods --bg 2000/03/07 +%% +%% checksum = "30783 109 227 3815" +%% +\def\uncatcodespecials{\def\do##1{\catcode`##1=12 }\dospecials} +% Listing is defined later +%\ifx\Mylisting\undefined% if no listing style already loaded +%\def\Mylisting#1{\par\begingroup% +%\setupverbatim\input #1 \endgroup} +%\fi + +\font\ttlisting=cmtt8 scaled 700 + +\def\setupverbatim{\baselineskip=0pt\ttlisting %\lineo=0 + \def\par{\leavevmode\endgraf} + \catcode`\`=\active + \obeylines\uncatcodespecials\obeyspaces + \parskip=0pt plus 1pt} + +{\obeyspaces\global\let =\ } % let active space = control space +{\catcode`\`=\active + \ifx`\undefined\gdef\Gdef{\def`{\relax\lq}} + \else\gdef\Gdef{}\fi +}\Gdef +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%SUPERVERBATIM.STY +\def\uncatcodespecials{\def\do##1{\catcode`##1=12 }\dospecials} +\ifx\Mylisting\undefined% +\def\Mylisting#1{\par\begingroup\makeatletter% obscurely needed now for AmSLaTeX + \setupverbatim\IfFileExists{#1}{\input #1}% + {Fichier non trouv\'e.}\endgroup} +\else\ifx\prelisting\undefined\else\prelisting{\tt\footnotesize}% + \labelstyle[1]{}\spreadlisting{2cm}\fi% + \def\Mylisting#1{% just for using listings package but will + \IfFileExists{#1}{% + \inputlisting{#1}}% remove its listing environnement + }{Fichier non trouv\'e.}% +\fi% +\def\copyfile#1{\par\begingroup\setupinclure\input #1 \endgroup} +% +\newcount\lineno % the number of the file lines listed +\def\setupverbatim{\tt \lineno=0 + \def\par{\leavevmode\endgraf} \catcode`\`=\active + \obeylines \uncatcodespecials \obeyspaces + \parskip=0pt plus 1pt + \everypar{\advance\lineno by1 \llap{\rm\the\lineno\ \ }}} +{\obeyspaces\global\let =\ } % let active space = control space +%{\catcode`\`=\active \gdef`{\relax\lq}} +{\catcode`\`=\active + \ifx`\undefined\gdef\Gdef{\def`{\relax\lq}} + \else\gdef\Gdef{}\fi +}\Gdef +% +\def\sautpar{\par\medskip} + +\def\setupinclure{\tt \lineno=0 + \def\par{\leavevmode\endgraf} \catcode`\`=\active + \obeylines \uncatcodespecials \obeyspaces + \parskip=0pt plus 1pt} + +\def\lignett#1{\noindent\hskip 2truecm{\tt#1}\par} + +\def\ttligne{\begingroup\Setupverbatim\doverbatim} +\def\doverbatim#1{\def\next##1#1{##1\endgroup}\next} +\def\Setupverbatim{\tt + \def\par{\leavevmode\endgraf} \catcode`\`=\active + \obeylines \uncatcodespecials \obeyspaces + \parskip=0pt plus 1pt} +% +\def\debuttt{\medskip + \begingroup + \obeylines \tt + \obeyspaces + \parskip=0pt + \baselineskip=12pt plus .1pt + \parindent=0pt} +\def\fintt{\endgroup\par} +\def\termtype{\medskip + \trivlist \item[] + \def\par{\hbox{}\@@par} + \obeylines + \tt + \obeyspaces + \obeycr + \@vobeyspaces + \parskip=0pt + \baselineskip=12pt plus .1pt + \parindent=0pt} +\let\endtermtype=\endtrivlist +{\catcode`\ =\active\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}} +\def\@xobeysp{\leavevmode\penalty10000\ } +{\catcode`\^^M=13 \gdef\@gobblecr{\@ifnextchar +{\@gobble}{\ignorespaces}}} +\def\envprog{\trivlist \item[]\vskip\parskip +\parindent0pt\parskip\z@ +\def\par{\hbox{}\@@par}\obeylines \tt +\catcode``=13\catcode`\^^M=13 +\frenchspacing\@vobeyspaces} +\let\endenvprog=\endtrivlist +\ifx\ProvidesPackage\undefined\else% + \ProvidesPackage{mylist}[1998/06/10 Temporary ``list'' package % + from the french dist.]% +\fi% +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/mysmall.sty b/language/french/e-french/texmf/doc/test/mysmall.sty new file mode 100644 index 0000000000..726b1d837a --- /dev/null +++ b/language/french/e-french/texmf/doc/test/mysmall.sty @@ -0,0 +1,136 @@ +% smaller.sty % +% +% Original author: ??? (appeared in an old TeXhax) +% Adrian Clark's dates.sty +% Changes: -- Paul L. Allen, Feb 1990 (UKTeX 91, 6) +% -- Bernd Raichle, Oct 1991 (added NFSS V1 support) +% -- Bernard Gaulle, Jan 1992 (environment protected,@ restored) +% -- Daniel Taupin & BG, 3/94 (simulation of \sm@ller for NFSS2) +% -- Bernard Gaulle 03/28/94 (\l@rger simulated for NFSS2 too) +% -- Removing superfluous spaces. --bg 05/10/94 +% +% Usage: {\smaller TEXT} +% - sets TEXT in a smaller size in the same typeface. +% {\larger TEXT} +% - sets TEXT in a larger size in the same typeface. +\ifx\larger\undefined\else\expandafter\endinput\fi% +{\gdef\makeatletter{\catcode`\@=11\relax}% + \gdef\makeatother{\catcode`\@=12\relax}% +\ifcat/@ \makeatletter\let\resetat\makeatother% + \else\let\resetat\relax\fi% +%\@ifundefined{selectfont}{...}{...}% +\expandafter\ifx\csname selectfont\endcsname\relax% +% +% Old Font Selection: +% +\csname newcount\endcsname\f@m% +\gdef\sm@ller{\relax\f@m\fam% + % \ifx\@currsize\tiny \tiny\fi% + \ifx\@currsize\scriptsize \tiny\fi% + \ifx\@currsize\footnotesize \scriptsize\fi% + \ifx\@currsize\small \footnotesize\fi% + \ifx\@currsize\normalsize \small\fi% + \ifx\@currsize\large \normalsize\fi% + \ifx\@currsize\Large \large\fi% + \ifx\@currsize\LARGE \Large\fi% + \ifx\@currsize\huge \LARGE\fi% + \ifx\@currsize\Huge \huge\fi% + \ifcase\f@m\rm\or\mit\or\cal\or\tenex % not sure about the tenex% + \or\it\or\sl\or\bf\or\tt\or\sf\or\sc\or\ly\fi}% +\gdef\l@rger{\relax\f@m\fam% + % \ifx\@currsize\Huge \Huge\fi% + \ifx\@currsize\huge \Huge\fi% + \ifx\@currsize\LARGE \huge\fi% + \ifx\@currsize\Large \LARGE\fi% + \ifx\@currsize\large \Large\fi% + \ifx\@currsize\normalsize \large\fi% + \ifx\@currsize\small \normalsize\fi% + \ifx\@currsize\footnotesize \small\fi% + \ifx\@currsize\scriptsize \footnotesize\fi% + \ifx\@currsize\tiny \scriptsize\fi% + \ifcase\f@m\rm\or\mit\or\cal\or\tenex % not sure about the tenex% + \or\it\or\sl\or\bf\or\tt\or\sf\or\sc\or\ly\fi}% +%% +\else% +%% +% New Font Selection V1: +% +% Perhaps it would be better to use different macros for +% the different \@ptsize 10pt, 11pt and 12pt. +% (Now for 12pt: {\normalsize {\smaller a}} = {\footnotsize a}) +% +\ifx\DeclareFontShape\undefined% the following for NFSS V1% +\gdef\sm@ller{\relax\@nomath\smaller% + \ifx\f@size\@vpt \else% + \ifx\f@size\@vipt \size\@vpt{6pt}\fi% + \ifx\f@size\@viipt \size\@vpt{6pt}\fi% + \ifx\f@size\@viiipt \size\@viipt{8pt}\fi %\@vipt% + \ifx\f@size\@ixpt \size\@viiipt{9.5pt}\fi% + \ifx\f@size\@xpt \size\@ixpt{11pt}\fi% + \ifx\f@size\@xipt \size\@xpt{12pt}\fi% + \ifx\f@size\@xiipt \size\@xpt{12pt}\fi% + \ifx\f@size\@xivpt \size\@xiipt{14pt}\fi% + \ifx\f@size\@xviipt \size\@xivpt{18pt}\fi% + \ifx\f@size\@xxpt \size\@xviipt{22pt}\fi% + \ifx\f@size\@xxvpt \size\@xxpt{25pt}\fi% + \selectfont% + \fi}% +\gdef\l@rger{\relax\@nomath\larger% + \ifx\f@size\@xxvpt \else% + \ifx\f@size\@xxpt \size\@xxvpt{30pt}\fi% + \ifx\f@size\@xviipt \size\@xxpt{25pt}\fi% + \ifx\f@size\@xivpt \size\@xviip{22pt}\fi% + \ifx\f@size\@xiipt \size\@xivpt{18pt}\fi% + \ifx\f@size\@xipt \size\@xiipt{14pt}\fi% + \ifx\f@size\@xpt \size\@xiipt{14pt}\fi% + \ifx\f@size\@ixpt \size\@xpt{12pt}\fi% + \ifx\f@size\@viiipt \size\@ixp{11pt}\fi% + \ifx\f@size\@viipt \size\@viiipt{9.5pt}\fi% + \ifx\f@size\@vipt \size\@viiipt{9.5pt}\fi% + \ifx\f@size\@vpt \size\@viipt{8pt}\fi% + \selectfont% + \fi}% +\else% Now for NFSS V2 %%%%%%%%%%%%%%%%%%%%%%%%%%% +\gdef\sm@ller{\small}% how to proceed?% +\gdef\l@rger{\relax}% + % proposed by D. Taupin on Mar, 24, 1994: + \global\let\tiny@ORI\tiny\gdef\tiny{\tiny@ORI\def\sm@ller{\tiny}% + \def\l@rger{\scriptsize}}% + \global\let\scriptsize@ORI\scriptsize% + \gdef\scriptsize{\scriptsize@ORI\def\sm@ller{\tiny}% + \def\l@rger{\footnotesize}}% + \global\let\footnotesize@ORI\footnotesize% + \gdef\footnotesize{\footnotesize@ORI\def\sm@ller{\scriptsize}% + \def\l@rger{\small}}% + \global\let\small@ORI\small% + \gdef\small{\small@ORI\def\sm@ller{\footnotesize}% + \def\l@rger{\normalsize}}% + \global\let\normalsize@ORI\normalsize% + \gdef\normalsize{\normalsize@ORI\def\sm@ller{\small}% + \def\l@rger{\large}}% + \global\let\large@ORI\large% + \gdef\large{\large@ORI\def\sm@ller{\normalsize}% + \def\l@rger{\Large}}% + \global\let\Large@ORI\Large% + \gdef\Large{\Large@ORI\def\sm@ller{\large}% + \def\l@rger{\LARGE}}% + \global\let\LARGE@ORI\LARGE% + \gdef\LARGE{\LARGE@ORI\def\sm@ller{\Large}% + \def\l@rger{\huge}}% + \global\let\huge@ORI\huge% + \gdef\huge{\huge@ORI\def\sm@ller{\LARGE}% + \def\l@rger{\Huge}}% + \global\let\Huge@ORI\Huge% + \gdef\Huge{\Huge@ORI\def\sm@ller{\huge}% + \def\l@rger{\Huge}}% +\fi% +%% +\fi% +\gdef\smaller{\protect\sm@ller}% +\gdef\larger{\protect\l@rger}% +\resetat}% +\ifx\ProvidesPackage\undefined\else% + \ProvidesPackage{mysmall}[1994/12/12 Temporary ``smaller'' package % + from the french dist.]% +\fi% +\endinput%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/tests-formats/EC.def b/language/french/e-french/texmf/doc/test/tests-formats/EC.def new file mode 100644 index 0000000000..9e719ea17b --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/EC.def @@ -0,0 +1,64 @@ +% EC.def file going from latin1. All chars haven't been updated +% according to the CORK standard. Input text is assumed to be typed in +% that standard. +\ProvideTextCommandDefault{\textregistered}{\textcircled{\textsc r}} +\ProvideTextCommandDefault{\textonequarter}{$\frac14$} +\ProvideTextCommandDefault{\textonehalf}{$\frac12$} +\ProvideTextCommandDefault{\textthreequarters}{$\frac34$} +\providecommand{\mathdegree}{{{}^\circ}} +\providecommand{\mathonesuperior}{{{}^1}} +\providecommand{\mathtwosuperior}{{{}^2}} +\providecommand{\maththreesuperior}{{{}^3}} +\providecommand{\mathordmasculine}{{{}^o}} +\providecommand{\mathordfeminine}{{{}^a}} +\DeclareInputText{"0A0}{~} \DeclareInputMath{"0B0}{\mathdegree} +\DeclareInputText{"0A1}{\textexclamdown} \DeclareInputMath{"0B1}{\pm} +\DeclareInputText{"0A2}{\textcent} \DeclareInputMath{"0B2}{\mathtwosuperior} +\DeclareInputText{"0A3}{\textsterling} \DeclareInputMath{"0B3}{\maththreesuperior} +\DeclareInputText{"0A4}{\textcurrency} \DeclareInputText{"0B4}{\'{}} +\DeclareInputText{"0A5}{\textyen} \DeclareInputMath{"0B5}{\mu} +\DeclareInputText{"0A6}{\textbrokenbar} \DeclareInputText{"0B6}{\P} +\DeclareInputText{"0A7}{\S} \DeclareInputMath{"0B7}{\cdot} +\DeclareInputText{"0A8}{\"{}} \DeclareInputText{"0B8}{\c{}} +\DeclareInputText{"0A9}{\copyright} \DeclareInputMath{"0B9}{\mathonesuperior} +\DeclareInputMath{"0AA}{\mathordmasculine} \DeclareInputMath{"0BA}{\mathordfeminine} +\DeclareInputText{"0AB}{\guillemotleft} \DeclareInputText{"0BB}{\guillemotright} +\DeclareInputMath{"0AC}{\lnot} \DeclareInputText{"0BC}{\textonequarter} +\DeclareInputText{"0AD}{\textendash} \DeclareInputText{"0BD}{\textonehalf} +\DeclareInputText{"0AE}{\textregistered} \DeclareInputText{"0BE}{\textthreequarters} +\DeclareInputText{"0AF}{\={}} \DeclareInputText{"0BF}{\textquestiondown} +\DeclareInputText{"0C0}{\`A} \DeclareInputText{"0D0}{\DH} +\DeclareInputText{"0C1}{\'A} \DeclareInputText{"0D1}{\~N} +\DeclareInputText{"0C2}{\^A} \DeclareInputText{"0D2}{\`O} +\DeclareInputText{"0C3}{\~A} \DeclareInputText{"0D3}{\'O} +\DeclareInputText{"0C4}{\"A} \DeclareInputText{"0D4}{\^O} +\DeclareInputText{"0C5}{\AA} \DeclareInputText{"0D5}{\~O} +\DeclareInputText{"0C6}{\AE} \DeclareInputText{"0D6}{\"O} +\DeclareInputText{"0C7}{\c C} \DeclareInputMath{"0D7}{\OE}% --bg +\DeclareInputText{"0C8}{\`E} \DeclareInputText{"0D8}{\O} +\DeclareInputText{"0C9}{\'E} \DeclareInputText{"0D9}{\`U} +\DeclareInputText{"0CA}{\^E} \DeclareInputText{"0DA}{\'U} +\DeclareInputText{"0CB}{\"E} \DeclareInputText{"0DB}{\^U} +\DeclareInputText{"0CC}{\`I} \DeclareInputText{"0DC}{\"U} +\DeclareInputText{"0CD}{\'I} \DeclareInputText{"0DD}{\'Y} +\DeclareInputText{"0CE}{\^I} \DeclareInputText{"0DE}{\TH} +\DeclareInputText{"0CF}{\"I} \DeclareInputText{"0DF}{\ss} +\DeclareInputText{"0E0}{\`a} \DeclareInputText{"0F0}{\dh} +\DeclareInputText{"0E1}{\'a} \DeclareInputText{"0F1}{\~n} +\DeclareInputText{"0E2}{\^a} \DeclareInputText{"0F2}{\`o} +\DeclareInputText{"0E3}{\~a} \DeclareInputText{"0F3}{\'o} +\DeclareInputText{"0E4}{\"a} \DeclareInputText{"0F4}{\^o} +\DeclareInputText{"0E5}{\aa} \DeclareInputText{"0F5}{\~o} +\DeclareInputText{"0E6}{\ae} \DeclareInputText{"0F6}{\"o} +\DeclareInputText{"0E7}{\c c} \DeclareInputMath{"0F7}{\oe}% --bg +\DeclareInputText{"0E8}{\`e} \DeclareInputText{"0F8}{\o} +\DeclareInputText{"0E9}{\'e} \DeclareInputText{"0F9}{\`u} +\DeclareInputText{"0EA}{\^e} \DeclareInputText{"0FA}{\'u} +\DeclareInputText{"0EB}{\"e} \DeclareInputText{"0FB}{\^u} +\DeclareInputText{"0EC}{\`\i} \DeclareInputText{"0FC}{\"u} +\DeclareInputText{"0ED}{\'\i} \DeclareInputText{"0FD}{\'y} +\DeclareInputText{"0EE}{\^\i} \DeclareInputText{"0FE}{\th} +\DeclareInputText{"0EF}{\"\i} \DeclareInputText{"0FF}{\"y} +\endinput +%% +%% End of file `DC.def'. diff --git a/language/french/e-french/texmf/doc/test/tests-formats/README b/language/french/e-french/texmf/doc/test/tests-formats/README new file mode 100644 index 0000000000..a6c4209b2e --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/README @@ -0,0 +1,65 @@ +README_tests (in sub-directory initex) last mods: 2000/11/23 +============ +The following files are given in order: + A) to verify TeX hyphenation on 500 french words. + B) to provide a sample for testing your keyboard. +These tests have to be used after installation i.e. creation of the format +file. + +These files were fully tested using MlTeX/TeX V3 with EC or CM fonts. + +Here are the corresponding files for part A: +=========================================== +EC.def an internal file, for input encoding just like EC. +TSIv5n4.tex 500 words hyphenated (Desarmenien's reference) + This is a 7-bit file to transform to your 8-bit keyboard-screen. + gencoup.tex to hyphenate these words with TeX at your site (log file) +lgencoup.tex " " " " " LaTeX " " " + tstcoup.tex to read the log file produced with TeX & compare with ideal list +ltstcoup.tex " " " " " LaTeX " " " " + testhyp a shell script to do this with TeX +ltesthyp " " " " " LaTeX + +Operation: + - convert TSIv5n4.tex to 8-bit accordingly to your own keyboard (use kb7to8 !) + - run the l/testhyp procedure to look if your installation is ok at + the hyphenation level. Any system with TeX-only i.e. without Multi-lingual + modifications or without 8-bit fonts can't be called a french system and + this test would be a non-sense. + This script gives normally 0 bad hyphenated words with MlTeX+CM + or TeX+EC fonts. No difference should occur. + +Here are the corresponding files for part B: +=========================================== +kbtest.tex the test code (8-bit file) to be adapted to your keyboard. + +Operation: + - update this file accordingly to your own keyboard and run it with your + TeX engine. You will obtain a print sheet with a comparison of 7-bit and + 8-bit inputs. + +Hope it helps, + Bernard GAULLE first issue 2000/11/23 + +Here is a directory listing at the time of distribution: + (The number of bytes of this README may differ) +%%>============================================================================ +total 200 +-rw-r--r-- 1 bernard bernard 3888 Jun 28 15:09 EC.def +-r--r--r-- 1 bernard bernard 3214 Jun 28 15:57 README +-rw-r--r-- 1 bernard bernard 20860 Jun 28 15:22 README_tests.pdf +-rw-r--r-- 1 bernard bernard 8155 Jun 28 15:22 TSIv5n4.tex +-rw-r--r-- 1 bernard bernard 4320 Jun 28 15:22 gencoup.tex +-rw-r--r-- 1 bernard bernard 22955 Jun 28 15:22 kbtest.tex +-rw-r--r-- 1 bernard bernard 828 Jun 28 15:22 lgencoup.tex +lrwxr-xr-x 1 root bernard 6 Jun 24 18:57 link_to_README -> README +-rw-r--r-- 1 bernard bernard 836 Jun 28 15:22 ltesthyp +-rw-r--r-- 1 bernard bernard 853 Jun 28 15:22 ltstcoup.tex +-rw-r--r-- 1 bernard bernard 799 Jun 28 15:22 testhyp +-rw-r--r-- 1 bernard bernard 5425 Jun 28 15:22 tstcoup.tex +%%<============================================================================ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% checksum = "52817 65 435 3214" +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/tests-formats/TSIv5n4.tex b/language/french/e-french/texmf/doc/test/tests-formats/TSIv5n4.tex new file mode 100644 index 0000000000..8a55797233 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/TSIv5n4.tex @@ -0,0 +1,154 @@ +% Extrait du vocabulaire divise TSI Vol. 5 No 4 1986, Jacques Desarmenien +% saisie --bg 30/03/92 +% \`{A} passer en 8 bits conform\'{e}ment \`{a} votre syst\`{e}me +% maj sug. DF 19/06/92 +% maj sug. DF 11/09/92 +% Changement : d\'{e}sami-don-ner en d\'{e}sa-mi-don-ner (f*hyph.tex V1.10 BG 27/12/93) +% maj 8-bits bg 98/02/05 +% Ajouts : abhor-rer adh\'{e}-sion r\'{e}dhi-bi-toire for frhyph.tex V2.4 bg 98/02/06 +% d\'{e}s-{\oe}u-vre-ment,% have a long name with {\oe} V2.5 bg 98/12/22 +% added a 7-bits word test "maitrise" with \^ \i. V2.6 bg 99/02/01 +% Maj pour frhyph1.tex (dis-conve-nance) V2.7 2003/02/12 +% Maj pour ig-ni-vome (igni-vome n'est pas correct) V2.8 2003/02/13 +% +%% checksum = "18445 154 305 8155" +%% +% +abon-dam-ment,abs-ti-nence,ac-com-mo-da-tion,ac\'{e}-ti-fier,% +acre,ad\'{e}-qua-tion,adu-la-teur,af-fai-rer,% +af-front,ago-nie,ai-guayer,al-bi-nisme,% +al-g\`{e}bre,al-li-ga-tor,al-ti-port,am-bu-la-toire,% +amon-ce-ler,ana-chro-nique,an-dr\`{e}ne,an-h\'{e}-ler,% +anor-ma-lit\'{e},an-ti-com-mu-nisme,an-ti-po-lio-my\'{e}-li-tique,ape-tis-ser,% +ap-pa-reille-ment,ap-pro-fon-dir,ar-bi-tral,ar\'{e}ique,% +ar-mon,ar-s\'{e}-niure,asexuel,as-si-mil\'{e},% +as-tro-nef,at-te-lage,au-dio-fr\'{e}-quence,au-to-cen-sure,% +au-to-strade,avia-tion,azur\'{e},ba-gue-naude,% +bal-ka-nique,ban-nir,bar-gui-gner,bas-sine,% +ba-va-roise,b\^{e}-le-ment,ber-line,bi-blio-bus,% +bi-gleux,bio-d\'{e}-gra-dable,bi-sec-tion,blas-tula,% +bo\"{e}sse,bo-nite,bou-ca-ner,boul-do-zeur,% +bourse,brah-ma-nique,bre-telle,bro-can-tage,% +bruine,Bulgare,ca-ban,caddy,% +cairn,ca-life,ca-mer,cange,% +cap,ca-puce,carde,ca-rot-ter,% +ca-s\'{e}a-tion,ca-ta-pulte,ca-val-cade,ce-nelle,% +c\'{e}-r\'{e}-mo-nial,chaintre,chan-latte,char-mille,% +chauf-feur,che-va-le-ment,chi-m\'{e}-rique,choi-sir,% +chro-mo-so-mique,cin\'{e},ci-ta-din,cla-ri-fier,% +clin-foc,coas-se-ment,cof-fret,col-lec-tion,% +com-bat,com-mun,com-plexe,concen-trique,% +condi-ment,confron-ter,conno-ta-tion,constant,% +conti-gu\"{\i}t\'{e},contre-marque,convoi-ter,co-que-rie,% +cor-ni\`{e}re,cor-v\'{e}e,cou-d\'{e}e,cou-ronne,% +cra-chi-ner,cr\'{e}-dence,cri-bl\'{e},cro-qui-gno-let,% +cu-bi-lot,cu-mul,cy-clo-mo-to-riste,da-leau,% +d\'{e}-am-bu-la-tion,d\'{e}-bou-cler,d\'{e}-can-ta-tion,d\'{e}-chaus-se-ment,% +d\'{e}-clor,d\'{e}-cou-pler,d\'{e}-dire,d\'{e}-fi-lage,% +d\'{e}-ga-zon-nage,d\'{e}-gri-ser,d\'{e}-l\'{e}-gu\'{e},d\'{e}-ma-go-gique,% +d\'{e}-mis-sion,d\'{e}-na-zi-fier,den-tiste,d\'{e}-piau-ter,% +d\'{e}-pouiller,der-ma-to-lo-gique,d\'{e}sa-mi-don-ner,d\'{e}sen-flure,% +d\'{e}shy-dro-g\'{e}-ner,d\'{e}so-rien-ter,d\'{e}-sto-ckage,d\'{e}-to-na-tion,% +d\'{e}-ver-dis-sage,dharma,di-amine,di-duc-tion,% +di-gon,dio-ny-sien,dis-conve-nance,dis-pu-taille-rie,% +dis-tri-buable,do-ci-mo-lo-gie,do-mes-ti-quer,do-ter,% +dra-gon-net,dr\^{o}-le-ment,du-per,dys-en-do-cri-nie,% +\'{e}bou-rif-fer,\'{e}charde,\'{e}clanche,\'{e}cra-bouille-ment,% +\'{e}dit,ef-fri-te-ment,ei-der,\'{e}lec-tro-ma-gn\'{e}-tique,% +\'{e}lu-ci-da-tion,em-bot-te-ler,\'{e}miet-te-ment,em-par-rer,% +em-prunt,en-chaus-ser,en-dia-bler,en-flam-mer,% +en-har-mo-nie,en-r\'{e}-gi-men-ter,en-t\'{e}-rique,en-tre-lacs,% +en-voyeur,\'{e}piage,\'{e}pi-phy-tie,\'{e}pui-se-ment,% +\'{e}reint\'{e},es-ca-drille,es-pion,es-th\'{e}-tisme,% +\'{e}ta-tisme,\'{e}tole,eu-pep-tique,\'{e}ven-tua-lit\'{e},% +ex-ci-ser,exi-gi-bi-lit\'{e},ex-pli-ca-tion,ex-tir-pa-tion,% +fac-teur,fal-si-fi-ca-teur,fa-rouche,faux,% +fen-deur,f\'{e}-rule,fi-ce-ler,fi-li-grane,% +fixe,fl\'{e}-chis-seur,fluc-tuant,fon-ci\'{e}-re-ment,% +for-lon-ger,fouilleur,frac-tion-niste,fre-don-ner,% +frire,fruit,fu-rioso,ga\"{\i}a-col,% +ga-lure,gare,gaur,ge-n\'{e}pi,% +g\'{e}o-phage,gi-boyeux,glai-seux,glu-co-li-pide,% +go\"{\i},gou-g\`{e}re,graillon,gra-ti-ner,% +gre-nouille,gri-ser,gu\`{e}de,gui-per,% +hadji,ha-pax,h\^{a}-te-reau,h\'{e}-lio-chro-mie,% +hen-d\'{e}-ca-syl-labe,h\'{e}-ron,hi\'{e}-rar-chi-que-ment,ho,% +ho-no-ra-bi-lit\'{e},hou-leux,hu-mus,hy-dro-pneu-ma-tique,% +hyp-na-go-gique,icaque,ig-ni-vome,imit\'{e},% +im-pala,im-plan-ter,im-pu-bliable,in-avouable,% +in-com-mu-ni-ca-bi-lit\'{e},in-croyable,in-dexer,in-du-bi-ta-ble-ment,% +in-ex-p\'{e}-ri-ment\'{e},in-flexi-bi-lit\'{e},in-hu-mer,in-quar-ta-tion,% +ins-pec-teur,in-t\`{e}gre,in-ter-fo-liage,in-tu-ba-tion,% +in-ter-stel-laire,in-vrai-sem-blance,ir-r\'{e}-pa-ra-ble-ment,iso-phase,% +ja\"{\i}n,jau-n\^{a}tre,jo-liesse,ju-gu-ler,% +ka-l\'{e}i-do-scope,ki-lo-m\'{e}-trer,la-bium,lai-neuse,% +lan-ceur,lar-gage,la-ve-rie,l\'{e}-ni-tif,% +leu-cose,li-brai-rie,li-mette,li-po-thy-mie,% +lit-t\'{e}-ral,lo-go-ma-chique,lou-cheur,lu-mi-neu-se-ment,% +lyn-cheur,ma-cro-phage,ma-gni-fique,ma-la-bar,% +mal-ter,man-gous-tan,map-pe-monde,mar-gis,% +mar-que-te-rie,mas-ti-ca-toire,ma-trone,m\'{e}-daille,% +me\"{\i}ji,men-d\'{e}-l\'{e}-vium,mer-cure,me-sure,% +m\'{e}-tis-sage,mi-cro-m\'{e}-trique,mil-lier,mi-nu-tieu-se-ment,% +mi-traillade,moi-nillon,mon-der,mo-no-po-liste,% +mor-dache,mo-tion-ner,mous-que-te-rie,mul-ti-carte,% +mus-cat,myo-pie,na-po-l\'{e}o-nien,na-va-rin,% +neige,neu-ro-psy-chiatre,ni\^{o}le,no-made,% +noue,nu-m\'{e}-ra-tion,obli-t\'{e}-rer,oc\'{e}a-no-graphe,% +{\oe}uvre,oli-go-pole,on-gl\'{e}e,opi-nion,% +or-chi-da-c\'{e}es,ori-peau,os-cule,ouille,% +ovo-g\'{e}-n\`{e}se,pa-geo-ter,pa-l\'{e}o-his-to-lo-gie,pa-lus,% +pa-no-ra-mi-quer,para,pa-ra-si-ti-cide,pa-ri-sette,% +par-ti-ci-pant,pas-teu-ri-ser,pa-toi-ser,paye-ment,% +pei-gnage,pe-nalty,pen-tho-tal,p\'{e}-r\'{e}qua-tion,% +per-lim-pin-pin,per-son-na-lit\'{e},p\'{e}-toire,phar-ma-ceu-tique,% +pholx,pho-to-ma-ton,phy-toph-thora,pi\'{e}-ti-ner,% +pin-ce-lier,pi-so-lithe,plaie,plas-ti-que-ment,% +pliage,plu-t\^{o}t,poin-teur,po-li-ti-quer,% +po-ly-style,pontet,po-s\'{e}-ment,po-ti-quet,% +pour-voi,pr\'{e}-cis,pr\'{e}-ju-di-ciable,pr\'{e}-s\'{e}ance,% +pr\'{e}-va-lence,pri-vi-l\'{e}-gier,pro-fi-leur,pro-na-teur,% +pros-pec-tif,pro-vi-dence,psy-cho-lin-guis-tique,pu\'{e}-ri-lit\'{e},% +pur-pura,py-tha-go-risme,quart-zite,quin-tes-sen-ci\'{e},% +rac-cour-cir,ra-dio-co-balt,rage,ram\'{e},% +ra-pi\'{e}-cage,r\^{a}-te-lier,rayon-nant,re-bours,% +re-chi-gner,re-cor-dage,r\'{e}-cu-sable,r\'{e}-\'{e}va-lua-tion,% +re-fu-ser,r\'{e}-gu-la-rit\'{e},re-laxe,re-met-tant,% +re-nar-di\`{e}re,ren-ta-mer,r\'{e}-p\'{e}-ti-tion,repu,% +r\'{e}-son-nance,re-sur-gir,r\'{e}-trac-tile,r\'{e}-veil,% +re-vo-ter,rhu-me-rie,ri-mer,robre,% +ron-chon,ro-tengle,rous-p\'{e}-ter,rui-ni-forme,% +sa-brage,sa-gesse,sa-li-nit\'{e},sand-jak,% +sar-clette,sau-cisse,Saxon,schi-zo-go-nie,% +sco-las-ti-cat,s\'{e}-che-resse,sei-gneu-riage,se-mou-le-rie,% +sep-tem-vir,ser-pent,sexto,si-gil-lo-gra-phie,% +si-mu-lie,ski,s{\oe}ur,so-ma-to-trope,% +sot,soulte,spal-ter,sph\'{e}-rique,% +spo-ro-gone,star-let,st\'{e}-r\'{e}o-duc,sto-ma-chique,% +stro-phan-tine,sub-jec-ti-ve-ment,suc-ci-nique,sul-fa-ter,% +su-pin,sur-d\'{e}-ve-lopp\'{e},sur-mon-ter,sur-vol-ter,% +sym-pho-nie,sy-phi-lis,tact,tam-pico,% +ta-quon,t\^{a}-ter,tech-ni-que-ment,t\'{e}-l\'{e}os-t\'{e}ens,% +ten-dan-ciel,ter-mi-nal,t\'{e}-te-relle,th\'{e}o-lo-gal,% +thalspi,tilleul,to-co-ph\'{e}-rol,ton-nerre,% +tor-tille,tour-men-ter,trac-ter,trans-cas-pien,% +trans-plant,tr\'{e}-fi-lage,tr\'{e}-vi-rer,tri-fo-rium,% +tri-plure,tron-ca-ture,truite,tu-mul-tueu-se-ment,% +tuyau-ter,ul-tra-vi-rus,ura-no-gra-phie,uti-li-taire,% +va-lable,va-quer,ve-dette,v\'{e}-n\'{e}-rer,% +ver-get\'{e},ver-seuse,vian-der,vi-gnoble,% +vi-reux,vi-treux,vo-lage,vo-ter,% +we-ber,yt-trique,zo-nure,% +%% liste compl\'{e}mentaire %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +cor-rec-te-ment,% 1ct retir\'{e} +abhor-rer,adh\'{e}-sion,r\'{e}dhi-bi-toire,% modifs frhyp V2.4 +d\'{e}s-{\oe}u-vre-ment,% have a long name with {\oe}V2.5 +ma\^% add a 7 bits word with accent \^ on \i + \i-tris\'% which is a good idea + e,% of Michel Bovani. +}% don't run this file alone! Go through gencoup.tex +% +\CheckSevenBits/\`{A}/% check it, will stop here if 7-bits. + {\STOP un retour charriot permet de continuer...} +% +\endinput diff --git a/language/french/e-french/texmf/doc/test/tests-formats/TSIv5n48.tex b/language/french/e-french/texmf/doc/test/tests-formats/TSIv5n48.tex new file mode 100644 index 0000000000..9516961597 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/TSIv5n48.tex @@ -0,0 +1,154 @@ +% Extrait du vocabulaire divise TSI Vol. 5 No 4 1986, Jacques Desarmenien +% saisie --bg 30/03/92 +% À passer en 8 bits conformément à votre système +% maj sug. DF 19/06/92 +% maj sug. DF 11/09/92 +% Changement : désami-don-ner en désa-mi-don-ner (f*hyph.tex V1.10 BG 27/12/93) +% maj 8-bits bg 98/02/05 +% Ajouts : abhor-rer adhé-sion rédhi-bi-toire for frhyph.tex V2.4 bg 98/02/06 +% dés-œu-vre-ment,% have a long name with œ V2.5 bg 98/12/22 +% added a 7-bits word test "maitrise" with \^ \i. V2.6 bg 99/02/01 +% Maj pour frhyph1.tex (dis-conve-nance) V2.7 2003/02/12 +% Maj pour ig-ni-vome (igni-vome n'est pas correct) V2.8 2003/02/13 +% +%% checksum = "56856 154 302 7386" +%% +% +abon-dam-ment,abs-ti-nence,ac-com-mo-da-tion,acé-ti-fier,% +acre,adé-qua-tion,adu-la-teur,af-fai-rer,% +af-front,ago-nie,ai-guayer,al-bi-nisme,% +al-gèbre,al-li-ga-tor,al-ti-port,am-bu-la-toire,% +amon-ce-ler,ana-chro-nique,an-drène,an-hé-ler,% +anor-ma-lité,an-ti-com-mu-nisme,an-ti-po-lio-myé-li-tique,ape-tis-ser,% +ap-pa-reille-ment,ap-pro-fon-dir,ar-bi-tral,aréique,% +ar-mon,ar-sé-niure,asexuel,as-si-milé,% +as-tro-nef,at-te-lage,au-dio-fré-quence,au-to-cen-sure,% +au-to-strade,avia-tion,azuré,ba-gue-naude,% +bal-ka-nique,ban-nir,bar-gui-gner,bas-sine,% +ba-va-roise,bê-le-ment,ber-line,bi-blio-bus,% +bi-gleux,bio-dé-gra-dable,bi-sec-tion,blas-tula,% +boësse,bo-nite,bou-ca-ner,boul-do-zeur,% +bourse,brah-ma-nique,bre-telle,bro-can-tage,% +bruine,Bulgare,ca-ban,caddy,% +cairn,ca-life,ca-mer,cange,% +cap,ca-puce,carde,ca-rot-ter,% +ca-séa-tion,ca-ta-pulte,ca-val-cade,ce-nelle,% +cé-ré-mo-nial,chaintre,chan-latte,char-mille,% +chauf-feur,che-va-le-ment,chi-mé-rique,choi-sir,% +chro-mo-so-mique,ciné,ci-ta-din,cla-ri-fier,% +clin-foc,coas-se-ment,cof-fret,col-lec-tion,% +com-bat,com-mun,com-plexe,concen-trique,% +condi-ment,confron-ter,conno-ta-tion,constant,% +conti-guïté,contre-marque,convoi-ter,co-que-rie,% +cor-nière,cor-vée,cou-dée,cou-ronne,% +cra-chi-ner,cré-dence,cri-blé,cro-qui-gno-let,% +cu-bi-lot,cu-mul,cy-clo-mo-to-riste,da-leau,% +dé-am-bu-la-tion,dé-bou-cler,dé-can-ta-tion,dé-chaus-se-ment,% +dé-clor,dé-cou-pler,dé-dire,dé-fi-lage,% +dé-ga-zon-nage,dé-gri-ser,dé-lé-gué,dé-ma-go-gique,% +dé-mis-sion,dé-na-zi-fier,den-tiste,dé-piau-ter,% +dé-pouiller,der-ma-to-lo-gique,désa-mi-don-ner,désen-flure,% +déshy-dro-gé-ner,déso-rien-ter,dé-sto-ckage,dé-to-na-tion,% +dé-ver-dis-sage,dharma,di-amine,di-duc-tion,% +di-gon,dio-ny-sien,dis-conve-nance,dis-pu-taille-rie,% +dis-tri-buable,do-ci-mo-lo-gie,do-mes-ti-quer,do-ter,% +dra-gon-net,drô-le-ment,du-per,dys-en-do-cri-nie,% +ébou-rif-fer,écharde,éclanche,écra-bouille-ment,% +édit,ef-fri-te-ment,ei-der,élec-tro-ma-gné-tique,% +élu-ci-da-tion,em-bot-te-ler,émiet-te-ment,em-par-rer,% +em-prunt,en-chaus-ser,en-dia-bler,en-flam-mer,% +en-har-mo-nie,en-ré-gi-men-ter,en-té-rique,en-tre-lacs,% +en-voyeur,épiage,épi-phy-tie,épui-se-ment,% +éreinté,es-ca-drille,es-pion,es-thé-tisme,% +éta-tisme,étole,eu-pep-tique,éven-tua-lité,% +ex-ci-ser,exi-gi-bi-lité,ex-pli-ca-tion,ex-tir-pa-tion,% +fac-teur,fal-si-fi-ca-teur,fa-rouche,faux,% +fen-deur,fé-rule,fi-ce-ler,fi-li-grane,% +fixe,flé-chis-seur,fluc-tuant,fon-cié-re-ment,% +for-lon-ger,fouilleur,frac-tion-niste,fre-don-ner,% +frire,fruit,fu-rioso,gaïa-col,% +ga-lure,gare,gaur,ge-népi,% +géo-phage,gi-boyeux,glai-seux,glu-co-li-pide,% +goï,gou-gère,graillon,gra-ti-ner,% +gre-nouille,gri-ser,guède,gui-per,% +hadji,ha-pax,hâ-te-reau,hé-lio-chro-mie,% +hen-dé-ca-syl-labe,hé-ron,hié-rar-chi-que-ment,ho,% +ho-no-ra-bi-lité,hou-leux,hu-mus,hy-dro-pneu-ma-tique,% +hyp-na-go-gique,icaque,ig-ni-vome,imité,% +im-pala,im-plan-ter,im-pu-bliable,in-avouable,% +in-com-mu-ni-ca-bi-lité,in-croyable,in-dexer,in-du-bi-ta-ble-ment,% +in-ex-pé-ri-menté,in-flexi-bi-lité,in-hu-mer,in-quar-ta-tion,% +ins-pec-teur,in-tègre,in-ter-fo-liage,in-tu-ba-tion,% +in-ter-stel-laire,in-vrai-sem-blance,ir-ré-pa-ra-ble-ment,iso-phase,% +jaïn,jau-nâtre,jo-liesse,ju-gu-ler,% +ka-léi-do-scope,ki-lo-mé-trer,la-bium,lai-neuse,% +lan-ceur,lar-gage,la-ve-rie,lé-ni-tif,% +leu-cose,li-brai-rie,li-mette,li-po-thy-mie,% +lit-té-ral,lo-go-ma-chique,lou-cheur,lu-mi-neu-se-ment,% +lyn-cheur,ma-cro-phage,ma-gni-fique,ma-la-bar,% +mal-ter,man-gous-tan,map-pe-monde,mar-gis,% +mar-que-te-rie,mas-ti-ca-toire,ma-trone,mé-daille,% +meïji,men-dé-lé-vium,mer-cure,me-sure,% +mé-tis-sage,mi-cro-mé-trique,mil-lier,mi-nu-tieu-se-ment,% +mi-traillade,moi-nillon,mon-der,mo-no-po-liste,% +mor-dache,mo-tion-ner,mous-que-te-rie,mul-ti-carte,% +mus-cat,myo-pie,na-po-léo-nien,na-va-rin,% +neige,neu-ro-psy-chiatre,niôle,no-made,% +noue,nu-mé-ra-tion,obli-té-rer,océa-no-graphe,% +œuvre,oli-go-pole,on-glée,opi-nion,% +or-chi-da-cées,ori-peau,os-cule,ouille,% +ovo-gé-nèse,pa-geo-ter,pa-léo-his-to-lo-gie,pa-lus,% +pa-no-ra-mi-quer,para,pa-ra-si-ti-cide,pa-ri-sette,% +par-ti-ci-pant,pas-teu-ri-ser,pa-toi-ser,paye-ment,% +pei-gnage,pe-nalty,pen-tho-tal,pé-réqua-tion,% +per-lim-pin-pin,per-son-na-lité,pé-toire,phar-ma-ceu-tique,% +pholx,pho-to-ma-ton,phy-toph-thora,pié-ti-ner,% +pin-ce-lier,pi-so-lithe,plaie,plas-ti-que-ment,% +pliage,plu-tôt,poin-teur,po-li-ti-quer,% +po-ly-style,pontet,po-sé-ment,po-ti-quet,% +pour-voi,pré-cis,pré-ju-di-ciable,pré-séance,% +pré-va-lence,pri-vi-lé-gier,pro-fi-leur,pro-na-teur,% +pros-pec-tif,pro-vi-dence,psy-cho-lin-guis-tique,pué-ri-lité,% +pur-pura,py-tha-go-risme,quart-zite,quin-tes-sen-cié,% +rac-cour-cir,ra-dio-co-balt,rage,ramé,% +ra-pié-cage,râ-te-lier,rayon-nant,re-bours,% +re-chi-gner,re-cor-dage,ré-cu-sable,ré-éva-lua-tion,% +re-fu-ser,ré-gu-la-rité,re-laxe,re-met-tant,% +re-nar-dière,ren-ta-mer,ré-pé-ti-tion,repu,% +ré-son-nance,re-sur-gir,ré-trac-tile,ré-veil,% +re-vo-ter,rhu-me-rie,ri-mer,robre,% +ron-chon,ro-tengle,rous-pé-ter,rui-ni-forme,% +sa-brage,sa-gesse,sa-li-nité,sand-jak,% +sar-clette,sau-cisse,Saxon,schi-zo-go-nie,% +sco-las-ti-cat,sé-che-resse,sei-gneu-riage,se-mou-le-rie,% +sep-tem-vir,ser-pent,sexto,si-gil-lo-gra-phie,% +si-mu-lie,ski,sœur,so-ma-to-trope,% +sot,soulte,spal-ter,sphé-rique,% +spo-ro-gone,star-let,sté-réo-duc,sto-ma-chique,% +stro-phan-tine,sub-jec-ti-ve-ment,suc-ci-nique,sul-fa-ter,% +su-pin,sur-dé-ve-loppé,sur-mon-ter,sur-vol-ter,% +sym-pho-nie,sy-phi-lis,tact,tam-pico,% +ta-quon,tâ-ter,tech-ni-que-ment,té-léos-téens,% +ten-dan-ciel,ter-mi-nal,té-te-relle,théo-lo-gal,% +thalspi,tilleul,to-co-phé-rol,ton-nerre,% +tor-tille,tour-men-ter,trac-ter,trans-cas-pien,% +trans-plant,tré-fi-lage,tré-vi-rer,tri-fo-rium,% +tri-plure,tron-ca-ture,truite,tu-mul-tueu-se-ment,% +tuyau-ter,ul-tra-vi-rus,ura-no-gra-phie,uti-li-taire,% +va-lable,va-quer,ve-dette,vé-né-rer,% +ver-geté,ver-seuse,vian-der,vi-gnoble,% +vi-reux,vi-treux,vo-lage,vo-ter,% +we-ber,yt-trique,zo-nure,% +%% liste complémentaire %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +cor-rec-te-ment,% 1ct retiré +abhor-rer,adhé-sion,rédhi-bi-toire,% modifs frhyp V2.4 +dés-œu-vre-ment,% have a long name with œV2.5 +ma\^% add a 7 bits word with accent \^ on \i + \i-tris\'% which is a good idea + e,% of Michel Bovani. +}% don't run this file alone! Go through gencoup.tex +% +\CheckSevenBits/À/% check it, will stop here if 7-bits. + {\STOP un retour charriot permet de continuer...} +% +\endinput diff --git a/language/french/e-french/texmf/doc/test/tests-formats/gencoup.tex b/language/french/e-french/texmf/doc/test/tests-formats/gencoup.tex new file mode 100644 index 0000000000..3d1fd5bd00 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/gencoup.tex @@ -0,0 +1,90 @@ +%OZT%&frtex / This is a TeX code to generate a log file +% showing french hyphenated words. +% gencoup.tex Copyright Bernard Gaulle as in french_doc.pdf +%% +% This code was developped for MlTeX and TeX V3 --bg 03/27/92 +% with CM or EC fonts (but don't use it with TeX V2) +% last mods: --bg 2000/03/09 +% +%% +%% checksum = "41383 90 338 4320" +%% +% +%For testing purposes ........................................ \CheckSevenBits +\ifx\STOP\undefined\def\STOP{\csname bye\endcsname}\fi% +\catcode`@=11 +\def\CheckSevenBits/#1{\def\@tempa##1##2/##3{\ifx##2\empty\else% + \message{gencoup.tex + -51- ERREUR : ce document n'a pas \'et\'e converti en 8-bits...}% + \expandafter ##3\fi}\expandafter\@tempa\noexpand#1}% +\catcode`@=12 +% +\ifx\french\undefined + \ifx\l@french\undefined + \message{Erreur : le langage french est inconnu !} + \ifx\fhyph\undefined\else\message{Heureusement fhyph est connu !} + \def\french{\fhyph}\fi + \else\def\french{\language=\l@french}\fi% for babel +\fi +\french% set the language +%\message{Language=\the\language\space +% Left=\the\lefthyphenmin\space Right=\the\righthyphenmin} +\uchyph=-1% don't hyphenate upper case words +%\ifx\stophyph\undefined\else% was just for a confirmation test +%% \message{\message{\string\stophyph\space a\space +%% ete\space mis\space a\space 4}} +% \stophyph=4\fi%pb with end of accent.words (MlTeX2) + +%\hyphenchar\font='177 % for tests of DC v1.2, EC +\edef\LeHC{\the\hyphenchar\font}\edef\DConePOINTtwo{127}% +% Here are Included LaTeX compatible definitions. +\catcode`@=11 +\ifx\DOinput\undefined\let\DOinput\input\fi% +\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}% not an outer def +\newwrite\@unused%..............................................\@unused +\message{()} +\long\gdef\@ifundefined#1#2#3{\expandafter\ifx\csname%......... \@ifundefined + #1\endcsname\relax#2\else#3\fi}% +\ifx\protect\undefined\let\protect\relax\fi%....................\protect +\def\IeC#1{\protect #1}% for plain .............................\IeC +\@ifundefined{typeout}{%........................................\typeout + \global\newlinechar`\^^J% + \gdef\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}}% + }{}% +\typeout{Le caract\`ere de c\'esure (hyphen char) est \string'\LeHC} +% let the original showhyphen work, otherwise there is a mess. +\ifx\s@owhyphens\undefined\else\let\showhyphens\s@owhyphens\fi% +{\catcode`\]=13\def]{}\catcode`,=\active\def,{\egroup\space%no need of ^^J + \showhyphens\bgroup% + }% +\def\DmyDeF#1{\let\protect\relax% for 2e + \showhyphens\bgroup#1}% +\def\Dmydef#1,#2]{\DmyDeF#1% + \def\temp{#2}\ifx\temp\empty\let\Dmydef\relax\fi% + \Dmydef#2]}% +\def\dummydef[{\Dmydef}% +\catcode`-=\active\def-{}% +% for this font: +\rm% use lgencoup.tex with LaTeX +\let\protect\noexpand% specially for NFSS +% +% Here are all the 499 french dictionnary names used by J. Desarmenien +% plus n other words that were inapropriately hyphenated in the past. +\edef\mots{\DOinput TSIv5n4 % +\def\writeEND{\message{\noexpand\endinput}}% +\typeout{^^J ************************************************************} +\typeout{^^J G\'en\'eration des cesures 8-bits (jeu test de 500 mots env.} +\typeout{^^J ************************************************************} +\dummydef[\mots\writeEND,]}}% +\typeout{^^J ************************************************************} +\typeout{^^J La generation de cesures sur un jeu test de plus de 500 mots} +\typeout{^^J \space\space\space\space\space\space\space\space\space E S T + \space\space\space\space F A I T E} +\typeout{^^J Renommer maintenant le fichier \jobname.log en myhyph.log} +\typeout{^^J Valider l'accentuation dans ce fichier (circonflexes)} +\typeout{^^J Puis faire le test de validite (cf README.initex)} +\typeout{^^J ************************************************************} +\typeout{^^J } +\bye +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/tests-formats/lgencoup.tex b/language/french/e-french/texmf/doc/test/tests-formats/lgencoup.tex new file mode 100644 index 0000000000..1546f5a894 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/lgencoup.tex @@ -0,0 +1,23 @@ +%OZT%&frlatex / This is a LaTeX code to generate a log file showing +% french hyphenated words +% Copyright Bernard Gaulle as in french_doc.pdf +% +% to be used only for testing/debugging purposes +% +% last mods: 2000/03/03 +\catcode`@=11 +\gdef\iORI{\@@input} +\global\let\bye\enddocument +\documentclass{article} +%\usepackage[T1]{fontenc}%%%%% codage de sortie (pour fontes EC) +\wlog{\noexpand\input{EC.def}}% my auxiliary input encoding for tstcoup +%\usepackage{french}% no need to use it, \french should be enough +\begin{document} +\global\let\DOinput\iORI +\let\STOP\stop% stop if error +\DOinput gencoup.tex +\endinput +%% +%% checksum = "31401 23 85 828" +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/tests-formats/ltesthyp b/language/french/e-french/texmf/doc/test/tests-formats/ltesthyp new file mode 100644 index 0000000000..8193a6dfe6 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/ltesthyp @@ -0,0 +1,24 @@ +#! /bin/csh -xv +# Test LaTeX des cesures appliquees sur le site sur plus de 500 mots +# et comparaison avec avec la liste ideale des coupures. maj --bg 2000/02/18 + +echo "latex lgencoup >/dev/null" + latex lgencoup >/dev/null +if (`grep -e "-51- ERREUR" lgencoup.log`) then + echo "-51- ERREUR le document n'a pas ete converti en 8-bits" + exit +endif + +# to avoid finding ^ instead of \^ +sed -e 's/\^\^\[/\\oe\{\}\{\}/g' <lgencoup.log | sed -e 's/\^a/\\\^a/g' -e 's/\^e/\\\^e/g' -e 's/\^i/\\\^\\i/g' -e 's/\^o/\\\^o/g' -e 's/\^u/\\\^u/g' -e 's/\^A/\\\^A/g' -e 's/\^E/\\\^E/g' -e 's/\^I/\\\^I/g' -e 's/\^O/\\\^O/g' -e 's/\^U/\\\^U/g' >myhyph.log + +latex ltstcoup +rm ltstcoup.dvi +rm lgencoup.aux +mv ltstcoup.log ltesthyp.log +rm lgencoup.log +rm ltstcoup.idx myhyph.log +########### +#%% +#%% checksum = "52841 25 117 836" +#%% diff --git a/language/french/e-french/texmf/doc/test/tests-formats/ltstcoup.tex b/language/french/e-french/texmf/doc/test/tests-formats/ltstcoup.tex new file mode 100644 index 0000000000..a60acd4221 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/ltstcoup.tex @@ -0,0 +1,22 @@ +%OZT%&frlatex / This is a TeX code to test if french words are well hyphenated +% Copyright Bernard Gaulle as in french_doc.pdf +% +% last mods: 99/02/23 +\catcode`@=11 +\gdef\iORI{\@@input} +\gdef\bye{\egroup% to avoid message \end inside level 1... + \end{document}} +\documentclass{article} +\usepackage{inputenc}%%%%%% to define \inputencoding +%\usepackage[T1]{fontenc}%%% here is the font encoding +\nofiles +\begin{document} +\global\let\DOinput\iORI +\makeatletter\let\@inpenc@test\relax\makeatother% avoid a warning about EC +\DOinput tstcoup.tex +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% checksum = "00515 22 72 853" +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/tests-formats/testhyp b/language/french/e-french/texmf/doc/test/tests-formats/testhyp new file mode 100644 index 0000000000..42b2a271ac --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/testhyp @@ -0,0 +1,23 @@ +#! /bin/csh +# Test TeX des cesures appliquees sur le site sur plus de 500 mots +# et comparaison avec avec la liste ideale des coupures. maj --bg 2000/02/18 + +echo "tex gencoup >/dev/null" + tex gencoup >/dev/null +if (`grep -e "-51- ERREUR" gencoup.log`) then + echo "-51- ERREUR le document n'a pas ete converti en 8-bits" + exit +endif + +# to avoid finding ^ instead of \^ +sed -e 's/\^\^\[/\\oe\{\}\{\}/g' <gencoup.log | sed -e 's/\^a/\\\^a/g' -e 's/\^e/\\\^e/g' -e 's/\^i/\\\^\\i/g' -e 's/\^o/\\\^o/g' -e 's/\^u/\\\^u/g' -e 's/\^A/\\\^A/g' -e 's/\^E/\\\^E/g' -e 's/\^I/\\\^I/g' -e 's/\^O/\\\^O/g' -e 's/\^U/\\\^U/g' >myhyph.log + +tex tstcoup +rm tstcoup.dvi +mv tstcoup.log testhyp.log +rm gencoup.log +rm tstcoup.idx myhyph.log +########### +#%% +#%% checksum = "46975 24 113 799" +#%% diff --git a/language/french/e-french/texmf/doc/test/tests-formats/tstcoup.tex b/language/french/e-french/texmf/doc/test/tests-formats/tstcoup.tex new file mode 100644 index 0000000000..23e2fae1cc --- /dev/null +++ b/language/french/e-french/texmf/doc/test/tests-formats/tstcoup.tex @@ -0,0 +1,135 @@ +%OZT%&frtex / This is a TeX code to test if french words are well hyphenated +% tstcoup.tex Copyright Bernard Gaulle as in french_doc.pdf +% +% This code was developped for MlTeX and TeX V3 --bg 03/27/92 +% with CMR or EC fonts. +% last mods 2005/03/08 +% +%% +%% checksum = "32747 135 375 5425" +%% +% Here are included LaTeX compatible definitions. +%\scrollmode +\catcode`@=11 +\ifx\@gobble\undefined\let\@gobble#1{}\fi% .......................... \@gobble +% +%For testing purposes ........................................ \CheckSevenBits +\def\STOP{}% non stop... +\def\CheckSevenBits/#1{\def\@tempa##1##2/##3{}% + \expandafter\@tempa#1}% +% +\ifx\DOinput\undefined\let\DOinput\input\fi% +\gdef\newwrite{\alloc@7\write\chardef\sixt@@n}% not an outer def +\gdef\newread{\alloc@6\read\chardef\sixt@@n}% not an outer def +\newwrite\@unused%..............................................\@unused +\long\gdef\@ifundefined#1#2#3{\expandafter\ifx\csname%......... \@ifundefined + #1\endcsname\relax#2\else#3\fi} +\ifx\protect\undefined\let\protect\relax\fi%....................\protect +\@ifundefined{typeout}{%........................................\typeout + \global\newlinechar`\^^J% + \gdef\typeout#1{{\let\protect\string\immediate\write\@unused{#1}}}% + }{}% +\typeout{^^J Test de validite des cesures sur le jeu de plus de 500 mots} +% +%--------------- +\newif\ifnewhyph\newhyphfalse +%\hyphenchar\font='177 % for tests of DC v1.2 +\edef\LeHC{\the\hyphenchar\font}\edef\DConePOINTtwo{127} +\ifx\LeHC\DConePOINTtwo\newhyphtrue\fi +\message{Le caract\`ere de c\'esure (hyphen char) est \string'\LeHC} +%--------------- +% +% creation fichier .idx +% +\def\cleanit#1#2/{\ifx #2\empty#1\else #1#2\fi}% +\def\IeC#1{\cleanit #1/}% remove any superfluous {} +\newwrite\@mainidx +\immediate\openout\@mainidx\jobname.idx % +\begingroup%[[ +\catcode`\]=13\def]{} +\let\bidon\relax +\catcode`,=\active +\def,{^^J}% +\def\DmyDeF#1{\immediate\write\@mainidx{#1}}% +%[ +\def\Dmydef#1,#2]{\DmyDeF#1%[ + \def\temp{#2}\ifx\temp\empty\let\Dmydef\relax\fi% + \Dmydef#2]}% +\def\dummydef[{\Dmydef}%] +\ifx\documentclass\undefined\def\tempa{T1} + \ifx\encodingdefault\tempa\def\oe{^^f7} + \else\def\oe{\string\oe\space\string{\string}}% + \fi% +\else% +\expandafter\def\csname OT\string 1\string\oe\endcsname% for 2e + {\string\oe\space\string{\string}}% for 2e +\expandafter\def\csname T\string 1\string\oe\endcsname% No better follow. way? + {\string ^^f7\@gobble}% go back to original char. +% (i've not found a correct way for reverse engeneering) +\fi% +\edef\mots{\@@input TSIv5n4 %} +\dummydef[\mots,] +\endgroup +\closeout\@mainidx% +Jeu reduit : (voir page suivante)\vfill\eject +\@@input \jobname.idx\vfill\eject +% +% Relecture et comparaison +% +\newread\@lidx +\immediate\openin\@lidx \jobname.idx % +\newcount\NB\NB=0 +\catcode`[=\active\catcode`-=\active\def-{\string-}%] +\catcode`\^^7f=\active\ifnewhyph\def^^7f{\string-}\fi% +\def\@MSG#1#2{\typeout{^^J /\the\NB/ Le mot #1 (\site) + devrait etre coupe #2\space!}} +\def\ATsite#1#2/{\edef\site{#2}% + \def-{}\ifnewhyph\def^^7f{}\fi% + \xdef\ENTIER{#2}% + \def-{\string-}\ifnewhyph\def^^7f{\string-}\fi% + \immediate\read\@lidx to\Mustbe% + \def\Tobe##1 /{\edef\mustbe{##1}}\expandafter\Tobe\Mustbe /% + \ifx \site \mustbe \else\def-{\string-}\ifnewhyph\def^^7f{\string-}\fi% + \global\advance\NB by 1 + \bgroup\def\accent ##1 ##2{##2}\@MSG{.\ENTIER.}{.\mustbe.}\egroup% +%\expandafter\show\site\show\Mustbe\expandafter\show\mustbe + \fi\let\hbox\hboxDUM} +% +% A adapter eventuellement a votre site : + \long\def[] []#1 \par{\ATsite#1/} % for TeX V3 +%OZT \long\def[] #1 \par{\ATsite#1/} %OZT for OzTeX 3.0 +%STD \long\def[] []#1 \par{\ATsite#1/} %STD for TeX V3 +%%%\ifx\undefined\new@fontshape\else% +%%% \long\def\ATsitE#1 #2/{\ATsite{}#2/} +%%% \long\def[]#1/10 #2 \par{\ATsitE#2/}\fi% for NFSS +\ifx\documentclass\undefined\else% for LaTeX2e + \long\def\ATsitE#1/{\ATsite{}#1/% + \long\def\ATsitE##1 ##2/{\ATsite{}##2/}}% + \long\def[]#1/10 #2 \par{\ATsite{}#2/}% + \let\mathbf\relax\let\mathsf\relax% + \let\mathtt\relax\let\mathit\relax% + \let\lgroup\relax\let\rgroup\relax\let\bracevert\relax% +\fi% +% +\catcode`&=\active\def&{}\catcode`(=1\catcode`)=2 +\let\hboxORI\hbox +\def\hboxDUM#1[]{\let\hbox\hboxORI} +%%%%%%%%%% 7bits defs %%%%%%%%%%%%%%%%% +\ifnewhyph% `127 is the hyphenchar +\else\catcode`\^^?=\active\global\def^^?{\"} +\fi +\catcode`\^^S=\active\global\def^^S{\'} +\catcode`\^^R=\active\global\def^^R{\`} +\catcode`\^^P=\active\global\def^^P{\i} +\catcode`\^^[=\active\global\def^^[{\oe{}{}} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\@@input myhyph.log }% log previously produced +}% otherwise msg: end occured inside a group at level 1 +\typeout{^^J ******************} +\typeout{^^J F I N\space\space du\space\space T E S T} +\typeout{^^J (\the\NB\space mots en erreur)} +\typeout{^^J ******************} +\typeout{^^J } +\bye +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/doc/test/texxetlb.tex b/language/french/e-french/texmf/doc/test/texxetlb.tex new file mode 100644 index 0000000000..cabe8b62b5 --- /dev/null +++ b/language/french/e-french/texmf/doc/test/texxetlb.tex @@ -0,0 +1,27 @@ +% !TeX encoding = latin9 +% This is texxetlb.tex +% +% French Pro Torture Test of LaTeX with TeXXeT option (main style: book) +% +% Copyright GUTenberg-Bernard Gaulle as in french.doc +% +% last mods 2006/04/25 +% +\ifx\beginL\undefined\def\beginL{}\def\endL{} +\else\TeXXeTstate=1% Starts TeXXeT option of eTeX. +\fi +\let\ObeginL\beginL\let\ObeginR\beginR% Save original cmds. +% Define new ones for tracing purpose. +\def\beginL{\leavevmode\message{(\the\language-\the\inputlineno) \noexpand\beginL}\ObeginL}% +\def\beginR{\leavevmode\message{(\the\language-\the\inputlineno) \noexpand\beginR}\ObeginR}% +\long\def\TexteComplementaire% +{\subsection{Test de \texttt{texxet}}% + +\beginL Ceci est une écriture de gauche à droite $===>\ avec\ mode\ math\acute{e}matique$ + +\beginR Ceci est une écriture de droite à gauche $avec\ mode\ math\acute{e}matique\ <===$ + +\beginL + } +\input frenchlb +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/makeindex/fridx1.ist b/language/french/e-french/texmf/makeindex/fridx1.ist new file mode 100644 index 0000000000..9e480bcb0e --- /dev/null +++ b/language/french/e-french/texmf/makeindex/fridx1.ist @@ -0,0 +1,16 @@ +% FICHIER fridx1.ist +% Personnalisation Numero 1 d'un index (faire makeindex -s fridx1.ist) +% -------------------------------------------------------------------- + +headings_flag 1 +heading_prefix "{\\large \\bf \\hfil--\\ " +heading_suffix " --\\ \\hfil}\\nopagebreak\n" +symhead_negative "symboles" +symhead_positive "Symboles" + +delim_0 " \\dotfill \ " +delim_1 " \\dotfill \ " +delim_2 " \\dotfill \ " +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + diff --git a/language/french/e-french/texmf/makeindex/fridx2.ist b/language/french/e-french/texmf/makeindex/fridx2.ist new file mode 100644 index 0000000000..28ce2e40f4 --- /dev/null +++ b/language/french/e-french/texmf/makeindex/fridx2.ist @@ -0,0 +1,16 @@ +% FICHIER fridx2.ist +% Personnalisation Numero 2 d'un index (faire makeindex -s fridx2.ist) +% -------------------------------------------------------------------- + +headings_flag 1 +heading_prefix "\\textbf{\\large \\hfil--\\ " +heading_suffix " --\\ \\hfil}\\nopagebreak\n" +symhead_negative "symboles" +symhead_positive "Symboles" + +delim_0 " \\dotfill \ " +delim_1 " \\dotfill \ " +delim_2 " \\dotfill \ " +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + diff --git a/language/french/e-french/texmf/makeindex/fridx3.ist b/language/french/e-french/texmf/makeindex/fridx3.ist new file mode 100644 index 0000000000..83fb3a2c20 --- /dev/null +++ b/language/french/e-french/texmf/makeindex/fridx3.ist @@ -0,0 +1,16 @@ +% FICHIER fridx3.ist +% Personnalisation Numero 3 d'un index (faire makeindex -s fridx3.ist) +% -------------------------------------------------------------------- + +headings_flag 1 +heading_prefix "{\\large \\hfil--\\ " +heading_suffix " --\\ \\hfil}\\nopagebreak\n" +symhead_negative "symboles" +symhead_positive "Symboles" + +delim_0 " \\dotfill \ " +delim_1 " \\dotfill \ " +delim_2 " \\dotfill \ " +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + diff --git a/language/french/e-french/texmf/makeindex/fridx4.ist b/language/french/e-french/texmf/makeindex/fridx4.ist new file mode 100644 index 0000000000..a27e15a661 --- /dev/null +++ b/language/french/e-french/texmf/makeindex/fridx4.ist @@ -0,0 +1,16 @@ +% FICHIER fridx4.ist +% Personnalisation Numero 4 d'un index (faire makeindex -s fridx4.ist) +% -------------------------------------------------------------------- + +%headings_flag 1 +%heading_prefix "{\\large \\hfil--\\ " +%heading_suffix " --\\ \\hfil}\\nopagebreak\n" +symhead_negative "symboles" +symhead_positive "Symboles" + +delim_0 " \\dotfill \ " +delim_1 " \\dotfill \ " +delim_2 " \\dotfill \ " +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + diff --git a/language/french/e-french/texmf/tex/deutschx.mlp b/language/french/e-french/texmf/tex/deutschx.mlp new file mode 100644 index 0000000000..25d2cd9304 --- /dev/null +++ b/language/french/e-french/texmf/tex/deutschx.mlp @@ -0,0 +1,34 @@ +% deutschx.mlp Usual german configuration for the mlp package. +% last mods: 2000/09/06 +% +% mlp means The Multi-Lingual Package, an idea from --bg 97/11/03 +% +% This file can be modified if the local or linguistic TeX users group +% accepts the modifications. +% +% Group to get in touch for deutschx.mlp is: ... +% Person to send a message is: ... (defaultly: gaulle@idris.fr) +% +% +\ProvidesFile{deutschx.mlp}% + [2000/09/06 german configuration file for mlp package] +\DeclareOption{deutsch}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\DeclareOption{ndeutsch}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49n}% + }% +\DeclareOption{englisch}{\@requirepackage{mlp-01}% original US english + \PassOptionsToPackage{english}{mlp-01}% + }% +\DeclareOption{franzosisch}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{franzoesisch}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{hollandisch}{\@requirepackage{mlp-31}% + \PassOptionsToPackage{dutch}{mlp-31}% + }% +\AtBeginDocument{\beginlanguage}% +%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/efrench.sty b/language/french/e-french/texmf/tex/efrench.sty new file mode 100644 index 0000000000..c3ae2d4c37 --- /dev/null +++ b/language/french/e-french/texmf/tex/efrench.sty @@ -0,0 +1,12 @@ +%% This is efrench.sty original as frenchpro --bg 2002/01/29 +%% frenchpro updated --bg 2003/11/17 +%% Remake as efrench --rj 2011-10-15 +%% to be used like this: \usepackage{efrench} +%% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% +\RequirePackage{french}% +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/efrenchu.tex b/language/french/e-french/texmf/tex/efrenchu.tex new file mode 100644 index 0000000000..fadd26ffff --- /dev/null +++ b/language/french/e-french/texmf/tex/efrenchu.tex @@ -0,0 +1,13 @@ +%% This is file `efrenchu.tex', +%% File is part of the "efrench" package +\ifdefined\XeTeXrevision% XeTeXinterchartoks +\XeTeXinputencoding{utf8} +% for french guillemets under utf8 + \catcode`« \active + \catcode`» \active + \def«{\guillemotleft } + \def»{\guillemotright} +% make hyphenation possible in presence of ' + \lccode`\'=8217\lccode8217=8217 +\fi + diff --git a/language/french/e-french/texmf/tex/epreuve.sty b/language/french/e-french/texmf/tex/epreuve.sty new file mode 100644 index 0000000000..72b6bd6e59 --- /dev/null +++ b/language/french/e-french/texmf/tex/epreuve.sty @@ -0,0 +1,63 @@ +% epreuve.sty coming from the News --Steve Anderson 2 mar 1993 +% mods Bernard GAULLE 97/06/31 +% when this file is input in a LaTeX document, it will print a large +% DRAFT message in light grey at an angle across each page. +% +% assumes DVI file will be converted to PostScript by the dvips driver. +% +% taken from example posted to the net. +%% +%% checksum = "17686 63 274 2073" +%% +% Include the LaTeX draft option of style by default (--bg) +\ifx\undefined\ds@draft\let\ds@draft\relax\fi +\ds@draft + +% define the default language specific name (--bg) +\ifx\draftname\undefined% + \def\draftname{- \noexpand\311preuve -}% imprimer Épreuve (PS) +\fi +% +\let\docEpreuve=\document% +\def\document{% attach the mods to \begin{document} + \csname docEpreuve\endcsname% +% let \DRAFTNAME apply if defined +\ifx\DRAFTNAME\undefined% +\else\let\draftname=\DRAFTNAME% +\fi +% \message{DRAFT=\draftname}% +\special{! userdict begin /bop-hook{ +gsave +/encodefont { % coming from the red book (--bg) + findfont dup % get the old font dict + maxlength dict begin % make a new one just as big + { 1 index /FID ne % Copy everything but FID + { def } + { pop pop } + ifelse } + forall + /Encoding exch def % Install the new encoding + dup /FontName exch def % new font dict is still current + currentdict definefont % Create the new font + end +} bind def +/Helvetica-Bold-ISOLatin1 ISOLatin1Encoding + /Helvetica-Bold encodefont pop +initmatrix 72 dup scale +/Helvetica-Bold-ISOLatin1 findfont 2 scalefont setfont +(\draftname) dup +stringwidth pop +4.5 5.5 translate +60 rotate 2 div neg 0 moveto +.95 setgray +show +grestore +% here was the original coding: +%200 30 translate +%65 rotate /Times-Roman findfont 220 scalefont setfont +%0 0 moveto 0.99 setgray (\draftname) show grestore +}def end}% +}%\document +\ifx\docEpreuve\relax\document\fi% outside any high language +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/fenglish.sty b/language/french/e-french/texmf/tex/fenglish.sty new file mode 100644 index 0000000000..c13c256587 --- /dev/null +++ b/language/french/e-french/texmf/tex/fenglish.sty @@ -0,0 +1,126 @@ +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +\ProvidesFile{fenglish.sty}% + [2004/06/23 english interface for the french(le/pro) package] +\def\beginlanguage{% + \ifx\selectlanguage\undefined\english% + \else\selectlanguage{english}\fi}% +\edef\beginFWdirection{L}% +\ifx\undefined\babel@core@loaded% + \DeclareOption{english}{\def\beginlanguage{% + \ifx\selectlanguage\undefined\english% + \else\selectlanguage{english}\fi}% + }% + \ProcessOptions% +\fi% +\expandafter\ifx\csname englishTeXmods\endcsname\relax% +\else \endinput \fi% +\ifx\@ifundefined\undefined% +\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname% + #1\endcsname\relax#2\else#3\fi}% +\fi% +\let\ifCLAenglish\iffalse% +\def\@tempa{\global\let\ifCLA\iffalse% + }% +\ifx\ifCLA\undefined\expandafter\@tempa\fi% + +\global\let\ifnonenglishheadings\iffalse% +\gdef\captionsenglish{% + \ifx\captionsnames\captionsenglish\else + \def\pagename{page}% + \def\refname{References}% + \def\abstractname{Abstract}% +\ifx\bibname\undefined\else% + \def\bibname{Bibliography}% +\fi% +\ifx\btxselectlanguage\undefined% + \csname bibsenglish\endcsname% +\fi% + \def\contentsname{Table of Contents}% + \def\listfigurename{List of Figures}% + \def\listtablename{List of Tables}% +\ifx\listalgorithmname\undefined\else% + \def\ALG@name{algorithm}% + \def\listalgorithmname{List of \ALG@name s}% +\fi% + \def\indexname{Index}% + \def\seename{\emph{see}}% + \def\seealsoname{\emph{see also}}% + \def\figurename{Figure}% + \def\tablename{Table}% + \def\partname{Part}% + \def\glossaryname{Glossary}% + \def\kwname{\textbf{Keywords}: }% + \def\draftname{DRAFT}% + \def\prefacename{Preface}% +\ifx\proofname\undefined\else% + \def\proofname{Proof}% +\fi% +\ifx\opening\undefined\else% + \def\headtoname{To}% + \def\ccname{cc}% + \def\enclname{Encl}% + \def\PSname{PS:}% + \def\Objectname{Subject:}% + \def\YourRefname{Your Ref:}% + \def\OurRefname{Our Ref:}% + \def\emailname{email:}% +\fi% +\ifx\slidename\undefined\else% + \def\slidename{Slide}% +\fi% +\ifx\notesname\undefined\else% + \def\notesname{Notes}% +\fi% +\ifnonenglishheadings% +\else% + \def\chaptername{Chapter}% +\fi% + \def\appendixname{Appendix}% + \fi% +\let\captionsnames\captionsenglish% +}% +\@ifundefined{englishTeXmods}{% + \gdef\englishTeXmods{% + \ifCLA + \ifCLAenglish% + \ifx\captionsnames\captionsenglish% + \else\captionsenglish\dateenglish% + \fi% + \fi% + \else% + \ifx\captionsnames\captionsenglish% + \else\captionsenglish\dateenglish% + \fi% + \fi% + \csname @xtrasenglish\endcsname% + \def\languagename{english}% + \let\switchtolanguage\endenglish% + }% + }{}% +\ifx\dateenglish\undefined% +\def\dateenglish{\def\today{\ifcase\day\or 1st\or 2nd\or 3rd\or 4th\or 5th\or + 6th\or 7th\or 8th\or 9th\or 10th\or 11th\or 12th\or 13th\or 14th\or 15th\or + 16th\or 17th\or 18th\or 19th\or 20th\or 21st\or 22nd\or 23rd\or 24th\or + 25th\or 26th\or 27th\or 28th\or 29th\or 30th\or 31st\fi~\ifcase\month\or + January\or February\or March\or April\or May\or June\or July\or August\or + September\or October\or November\or December\fi\space \number\year}}% +\fi% +\ifx\undefined\babel@core@loaded% + \edef\extrasenglish{}\def\@xtrasenglish{\extrasenglish}% +\else% + \let\extrasenglish\englishTeXmods% +\fi% +\@ifundefined{english}{\gdef\english{\relax}}{}% +\@ifundefined{switchtolanguage}{% + \gdef\switchtolanguage#1{#1}}{}% +\let\@enstORI\switchtolanguage% +\let\englishORI\english% +\def\endenglish{\let\switchtolanguage\@enstORI% + \ignorespaces}% +\let\noextrasenglish\endenglish% +\def\english{\switchtolanguage\englishTeXmods\englishORI% + \ignorespaces}% +\english% +\endinput% diff --git a/language/french/e-french/texmf/tex/frabbrev-u8.tex b/language/french/e-french/texmf/tex/frabbrev-u8.tex new file mode 100644 index 0000000000..0b12603545 --- /dev/null +++ b/language/french/e-french/texmf/tex/frabbrev-u8.tex @@ -0,0 +1,297 @@ +% frabbrev.tex file (French typographic abbreviations) +% should always be used in 8bit format (generated from +% fxabbrev.tex which is full ASCII 7bit) +% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% Don't change this to a 7bits coding except if you are using 7bits input +% +% History of mods: +% =============== +% - Change \^i into î_ --bg 01/16/92 +% - Added shorten "cad" (remark coming from Jacques Andre) --bg 02/07/92 +% - paragraph sign (\S) followed by a tilde --bg 05/15/92 +% - recoded to 8bits --bg 08/24/92 +% - add second, seconds, premiers, premières, troisièmes... +% numéros, Numéros and pages. +% --bg 01/12/93 +% - strings containing a space must be within a group. --bg 98/05/15 +% - THE FIRST LETTER IS NO MORE TESTED except if the string is +% within braces. Thus, any string beginning whith an uppercase +% letter should be enclosed within braces. --bg 1999/11/08 +% - f8abbrev.tex and frabbrev.850 definitely removed. +% f7abbrev.tex rename fxabbrev.tex --bg 2000/06/14 +% - few adds coming from Yves Perrousseaux' book on typo. --bg 2001/08/03 +% - corrections for second(s) and seconde(s). --bg 2001/09/20 +% - * facility added for plurals ==> 6 changes. +% - legal units added and few other names. +% HAPPY 10 YEARS ANNIVERSARY! --bg 2001/01/21 +% - abbrev. from Louis Guéry from CFPJ. --bg 2002/02/21 +%% +% - passage à utf8 par rj - je recommande d'utiliser +% la commande \abbreviations[frabbrev-u8.tex] --rj 2017-08 10 + +% Checked name Replacement +% ============ =========== +% +% Notice that when the checked name is inside braces all that name +% should be equal to "name" otherwise the first letter is not checked. +% If checked name begins with "*" then "_name_" and "_name_s" will +% be checked, the replacement name is the same in the two cases. +% +% NB: All macros have to be not expanded. + +premier 1\noexpand\ier% +premiers 1\noexpand\iers% +première 1\noexpand\iere% +premières 1\noexpand\ieres% +deuxième 2\noexpand\ieme% +deuxièmes 2\noexpand\iemes% +second 2\noexpand\fup{d}% +seconds 2\noexpand\fup{ds}% +seconde 2\noexpand\fup{de}% +secondes 2\noexpand\fup{des}% +troisième 3\noexpand\ieme% +troisièmes 3\noexpand\iemes% +quatrième 4\noexpand\ieme% +quatrièmes 4\noexpand\iemes% + +primo \noexpand\quando{1}% +secundo \noexpand\quando{2}% +tertio \noexpand\quando{3}% +quarto \noexpand\quando{4}% +quinto \noexpand\quando{5}% +sexto \noexpand\quando{6}% +septuno \noexpand\quando{7}% +octavo \noexpand\quando{8}% +nono \noexpand\quando{9}% +decimo \noexpand\quando{10}% + +{Numéro} \noexpand\Numero% +{Numéros} \noexpand\Numeros% +numéro \noexpand\numero% +numéros \noexpand\numeros% + +monsieur M.% +messieurs MM.% +mademoiselle M\noexpand\fup{lle}% +mesdemoiselles M\noexpand\fup{lles}% +madame M\noexpand\fup{me}% +mesdames M\noexpand\fup{mes}% +maître M\noexpand\fup{e}% +maîtres M\noexpand\fup{es}% + +{Compagnie} c\noexpand\fup{ie}% +canton C\noexpand\fup{on}% +docteur D\noexpand\fup{r}% +folio f\noexpand\fup{o}% +folios f\noexpand\fup{os}% +monseigneur M\noexpand\fup{gr}% +paragraphe \noexpand\S~% doit être suivi d'un numéro. +recto r\noexpand\fup{o}% +verso v\noexpand\fup{o}% + +{Académie} Acad.% +adjectif adj.% +{Administration} Admin.% +ancien anc.% +annexe ann.% from LG 2002/02/21 +{Antiquité} Antiq.% +appendice append.% +après apr.% +archives arch.% +archéologie archéol.% +arithmétique arithm.% +arrondissement arr.% +article art.% +astronomie astron.% +avant av.% +avenue av.% from LG 2002/02/21 +bibliographie bibliogr.% +bibliothèque bibl.% from LG 2002/02/21 +biologie biol.% +botanique bot.% +boulevard bd% +bulletin bull.% +cad \noexpand\hbox{c.-à -d.}% +chapitre chap.% +chef-lieu ch.-l.% +chronologie chronol.% +circulaire circ.% +circonscription circonscr.% +{Code civil} C.civ.% +{Code pénal} C.pén.% +*collaborateur coll.% +collection coll.% +colonne col.% from LG 2002/02/21 +commandeur C.% from LG 2002/02/21 +département dép.% +dictionnaire dict.% +document doc.% +{Est} E% +*éditeur éd.% * from LG 2002/02/21 +*édition éd.% * from LG 2002/02/21 +environ env.% +épitre ép.% +épilogue épil.% +établissements Éts% +étymologie étym.% +exemple ex.% +expéditeur exp.% from LG 2002/02/21 +fascicule fasc.% +faubourg fg% +féminin fém.% +feuillet f.% +figure fig.% +Frère F.% from LG 2002/02/21 +géographie géogr.% +géologie géol.% +géométrie géom.% +graphique graph.% +gravure grav.% +habitants hab.% +hauteur haut.% +iconographie iconogr.% +*illustration illustr.% 21/01/2002 2017-04-20 sans s final rj +inférieur inf.% +introduction introd.% +invariable invar.% +italique ital.% +juridique jur.% +jurisprudence jur.% +*ligne l.% 21/01/2002 +largeur larg.% +latitude lat.% +librairie libr.% +livre liv.% +locution loc.% +longitude long.% +longueur long.% +manuscrit ms.% +manuscrits mss.% +masculin masc.% +mathématiques math.% +maximum max.% from LG 2002/02/21 +mécanique mécan.% +mémoire mém.% +musique mus.% +mythologie myth.% +{Nord} N% +nouveau nouv.% +nouvelle nouv.% +numismatique numism.% +officier O.% from LG 2002/02/21 +{Ouest} O% from LG 2002/02/21 +ouvrage ouvr.% +*page p.% 21/01/2002 +partie part.% +Père P.% from LG 2002/02/21 +photographie phot.% +physique phys.% +*planche pl.% 21/01/2002 +relié rel.% from LG 2002/02/21 +reliure rel.% +rédaction réd. +route rte% from LG 2002/02/21 +{Sud} S.% +science sc.% +scène sc.% +section sect.% +{Saint} St% +{Saints} Sts% +{Sainte} Ste% +{Saintes} Stes% +section sect.% from LG 2002/02/21 +siècle s.% from LG 2002/02/21 +{société} sté% 21/01/2002 +{Société} Sté% Yves Perrousseaux 2001/08/03 +substantif subst.% +*suivant suiv.% 21/01/2002 +*suivante suiv.% 21/01/2002 +supèrieur sup.% from LG 2002/02/21 +supplément suppl.% +téléphone tél.% Yves Perrousseaux 2001/08/03 +tome t.% from LG 2002/02/21 +traducteur trad.% +traduction trad.% +variante var% from LG 2002/02/21 +vers v.% from LG 2002/02/21 +voir V% from LG 2002/02/21 +volume vol.% + +% Unités légales : + +*ampère A% +*are a% +*bel B% from LG 2002/02/21 +*candela cd% from LG 2002/02/21 +centi c% from LG 2002/02/21 +*centiare ca% +*centigramme cg% +*centilitre cl% +*centimètre cm% +déca da% from LG 2002/02/21 +*décalitre dal% +dècamètre dam% +déci d% from LG 2002/02/21 +décibel dB% +décigramme dg% from LG 2002/02/21 +décilitre dl% from LG 2002/02/21 +*franc F% +giga G% from LG 2002/02/21 +*grade gr% +*gramme g% +*hectare ha% +hect h% from LG 2002/02/21 +*hectogramme hg% +*hectolitre hl% +*hectomètre hm% +*hertz Hz% from LG 2002/02/21 +*heure h% +*jour j% +*kelvin K% from LG 2002/02/21 +kilo k% from LG 2002/02/21 +*kilogramme kg% +*kilohertz kHz% from LG 2002/02/21 +*kilomètre km% +*kilovoltampère kVA% from LG 2002/02/21 +*kilowatt kW% +kilowatt-heure kWh% +kilowatts-heure kWh% +*litre l% +lux lx% from LG 2002/02/21 +méga M% from LG 2002/02/21 +*mégahertz MHz% from LG 2002/02/21 +*mètre m% +% micro est a introduire qd on aura \mu en romain droit. +milli m% from LG 2002/02/21 +*millibar mbar% +*milligramme mg% from LG 2002/02/21 +*millilitre ml% +*millimètre mm% +*milliseconde ms% from LG 2002/02/21 +*minute min% +*mole mol% from LG 2002/02/21 +nano n% from LG 2002/02/21 +*nanoseconde nc% from LG 2002/02/21 +*newton N% from LG 2002/02/21 +*pascal Pa% from LG 2002/02/21 +pico p% from LG 2002/02/21 +*picoseconde ps% from LG 2002/02/21 +quintal q% from LG 2002/02/21 +quintaux q% from LG 2002/02/21 +*radian rad% from LG 2002/02/21 +*seconde s% +*stère st% +téra T% from LG 2002/02/21 +*thermie th% from LG 2002/02/21 +*tonne t% +*volt V% +*watt W% +*wattheure Wh% from LG 2002/02/21 + +% Excerpt from ``Lexique des règles typographiques en usage a l'Imprimerie +% nationale'', Abréviations, p7-11 and few additions. +% plus other usual (referenced) names. diff --git a/language/french/e-french/texmf/tex/frabbrev.tex b/language/french/e-french/texmf/tex/frabbrev.tex new file mode 100644 index 0000000000..c72ca8c6b6 --- /dev/null +++ b/language/french/e-french/texmf/tex/frabbrev.tex @@ -0,0 +1,297 @@ +% frabbrev.tex file (French typographic abbreviations) +% should always be used in 8bit format (generated from +% fxabbrev.tex which is full ASCII 7bit) +% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% Don't change this to a 7bits coding except if you are using 7bits input +% +% History of mods: +% =============== +% - Change \^i into î_ --bg 01/16/92 +% - Added shorten "cad" (remark coming from Jacques Andre) --bg 02/07/92 +% - paragraph sign (\S) followed by a tilde --bg 05/15/92 +% - recoded to 8bits --bg 08/24/92 +% - add second, seconds, premiers, premières, troisièmes... +% numéros, Numéros and pages. +% --bg 01/12/93 +% - strings containing a space must be within a group. --bg 98/05/15 +% - THE FIRST LETTER IS NO MORE TESTED except if the string is +% within braces. Thus, any string beginning whith an uppercase +% letter should be enclosed within braces. --bg 1999/11/08 +% - f8abbrev.tex and frabbrev.850 definitely removed. +% f7abbrev.tex rename fxabbrev.tex --bg 2000/06/14 +% - few adds coming from Yves Perrousseaux' book on typo. --bg 2001/08/03 +% - corrections for second(s) and seconde(s). --bg 2001/09/20 +% - * facility added for plurals ==> 6 changes. +% - legal units added and few other names. +% HAPPY 10 YEARS ANNIVERSARY! --bg 2001/01/21 +% - abbrev. from Louis Guéry from CFPJ. --bg 2002/02/21 +%% +%% checksum = "20285 297 1013 10463" +%% + +% Checked name Replacement +% ============ =========== +% +% Notice that when the checked name is inside braces all that name +% should be equal to "name" otherwise the first letter is not checked. +% If checked name begins with "*" then "_name_" and "_name_s" will +% be checked, the replacement name is the same in the two cases. +% +% NB: All macros have to be not expanded. + +premier 1\noexpand\ier% +premiers 1\noexpand\iers% +première 1\noexpand\iere% +premières 1\noexpand\ieres% +deuxième 2\noexpand\ieme% +deuxièmes 2\noexpand\iemes% +second 2\noexpand\fup{d}% +seconds 2\noexpand\fup{ds}% +seconde 2\noexpand\fup{de}% +secondes 2\noexpand\fup{des}% +troisième 3\noexpand\ieme% +troisièmes 3\noexpand\iemes% +quatrième 4\noexpand\ieme% +quatrièmes 4\noexpand\iemes% + +primo \noexpand\quando{1}% +secundo \noexpand\quando{2}% +tertio \noexpand\quando{3}% +quarto \noexpand\quando{4}% +quinto \noexpand\quando{5}% +sexto \noexpand\quando{6}% +septuno \noexpand\quando{7}% +octavo \noexpand\quando{8}% +nono \noexpand\quando{9}% +decimo \noexpand\quando{10}% + +{Numéro} \noexpand\Numero% +{Numéros} \noexpand\Numeros% +numéro \noexpand\numero% +numéros \noexpand\numeros% + +monsieur M.% +messieurs MM.% +mademoiselle M\noexpand\fup{lle}% +mesdemoiselles M\noexpand\fup{lles}% +madame M\noexpand\fup{me}% +mesdames M\noexpand\fup{mes}% +maître M\noexpand\fup{e}% +maîtres M\noexpand\fup{es}% + +{Compagnie} c\noexpand\fup{ie}% +canton C\noexpand\fup{on}% +docteur D\noexpand\fup{r}% +folio f\noexpand\fup{o}% +folios f\noexpand\fup{os}% +monseigneur M\noexpand\fup{gr}% +paragraphe \noexpand\S~% doit être suivi d'un numéro. +recto r\noexpand\fup{o}% +verso v\noexpand\fup{o}% + +{Académie} Acad.% +adjectif adj.% +{Administration} Admin.% +ancien anc.% +annexe ann.% from LG 2002/02/21 +{Antiquité} Antiq.% +appendice append.% +après apr.% +archives arch.% +archéologie archéol.% +arithmétique arithm.% +arrondissement arr.% +article art.% +astronomie astron.% +avant av.% +avenue av.% from LG 2002/02/21 +bibliographie bibliogr.% +bibliothèque bibl.% from LG 2002/02/21 +biologie biol.% +botanique bot.% +boulevard bd% +bulletin bull.% +cad \noexpand\hbox{c.-à-d.}% +chapitre chap.% +chef-lieu ch.-l.% +chronologie chronol.% +circulaire circ.% +circonscription circonscr.% +{Code civil} C.civ.% +{Code pénal} C.pén.% +*collaborateur coll.% +collection coll.% +colonne col.% from LG 2002/02/21 +commandeur C.% from LG 2002/02/21 +département dép.% +dictionnaire dict.% +document doc.% +{Est} E% +*éditeur éd.% * from LG 2002/02/21 +*édition éd.% * from LG 2002/02/21 +environ env.% +épitre ép.% +épilogue épil.% +établissements Éts% +étymologie étym.% +exemple ex.% +expéditeur exp.% from LG 2002/02/21 +fascicule fasc.% +faubourg fg% +féminin fém.% +feuillet f.% +figure fig.% +Frère F.% from LG 2002/02/21 +géographie géogr.% +géologie géol.% +géométrie géom.% +graphique graph.% +gravure grav.% +habitants hab.% +hauteur haut.% +iconographie iconogr.% +*illustration illustr.% 21/01/2002 2017-04-20 sans s final rj +inférieur inf.% +introduction introd.% +invariable invar.% +italique ital.% +juridique jur.% +jurisprudence jur.% +*ligne l.% 21/01/2002 +largeur larg.% +latitude lat.% +librairie libr.% +livre liv.% +locution loc.% +longitude long.% +longueur long.% +manuscrit ms.% +manuscrits mss.% +masculin masc.% +mathématiques math.% +maximum max.% from LG 2002/02/21 +mécanique mécan.% +mémoire mém.% +musique mus.% +mythologie myth.% +{Nord} N% +nouveau nouv.% +nouvelle nouv.% +numismatique numism.% +officier O.% from LG 2002/02/21 +{Ouest} O% from LG 2002/02/21 +ouvrage ouvr.% +*page p.% 21/01/2002 +partie part.% +Père P.% from LG 2002/02/21 +photographie phot.% +physique phys.% +*planche pl.% 21/01/2002 +relié rel.% from LG 2002/02/21 +reliure rel.% +rédaction réd. +route rte% from LG 2002/02/21 +{Sud} S.% +science sc.% +scène sc.% +section sect.% +{Saint} St% +{Saints} Sts% +{Sainte} Ste% +{Saintes} Stes% +section sect.% from LG 2002/02/21 +siècle s.% from LG 2002/02/21 +{société} sté% 21/01/2002 +{Société} Sté% Yves Perrousseaux 2001/08/03 +substantif subst.% +*suivant suiv.% 21/01/2002 +*suivante suiv.% 21/01/2002 +supèrieur sup.% from LG 2002/02/21 +supplément suppl.% +téléphone tél.% Yves Perrousseaux 2001/08/03 +tome t.% from LG 2002/02/21 +traducteur trad.% +traduction trad.% +variante var% from LG 2002/02/21 +vers v.% from LG 2002/02/21 +voir V% from LG 2002/02/21 +volume vol.% + +% Unités légales : + +*ampère A% +*are a% +*bel B% from LG 2002/02/21 +*candela cd% from LG 2002/02/21 +centi c% from LG 2002/02/21 +*centiare ca% +*centigramme cg% +*centilitre cl% +*centimètre cm% +déca da% from LG 2002/02/21 +*décalitre dal% +dècamètre dam% +déci d% from LG 2002/02/21 +décibel dB% +décigramme dg% from LG 2002/02/21 +décilitre dl% from LG 2002/02/21 +*franc F% +giga G% from LG 2002/02/21 +*grade gr% +*gramme g% +*hectare ha% +hect h% from LG 2002/02/21 +*hectogramme hg% +*hectolitre hl% +*hectomètre hm% +*hertz Hz% from LG 2002/02/21 +*heure h% +*jour j% +*kelvin K% from LG 2002/02/21 +kilo k% from LG 2002/02/21 +*kilogramme kg% +*kilohertz kHz% from LG 2002/02/21 +*kilomètre km% +*kilovoltampère kVA% from LG 2002/02/21 +*kilowatt kW% +kilowatt-heure kWh% +kilowatts-heure kWh% +*litre l% +lux lx% from LG 2002/02/21 +méga M% from LG 2002/02/21 +*mégahertz MHz% from LG 2002/02/21 +*mètre m% +% micro est a introduire qd on aura \mu en romain droit. +milli m% from LG 2002/02/21 +*millibar mbar% +*milligramme mg% from LG 2002/02/21 +*millilitre ml% +*millimètre mm% +*milliseconde ms% from LG 2002/02/21 +*minute min% +*mole mol% from LG 2002/02/21 +nano n% from LG 2002/02/21 +*nanoseconde nc% from LG 2002/02/21 +*newton N% from LG 2002/02/21 +*pascal Pa% from LG 2002/02/21 +pico p% from LG 2002/02/21 +*picoseconde ps% from LG 2002/02/21 +quintal q% from LG 2002/02/21 +quintaux q% from LG 2002/02/21 +*radian rad% from LG 2002/02/21 +*seconde s% +*stère st% +téra T% from LG 2002/02/21 +*thermie th% from LG 2002/02/21 +*tonne t% +*volt V% +*watt W% +*wattheure Wh% from LG 2002/02/21 + +% Excerpt from ``Lexique des règles typographiques en usage a l'Imprimerie +% nationale'', Abréviations, p7-11 and few additions. +% plus other usual (referenced) names. diff --git a/language/french/e-french/texmf/tex/francais.mlp b/language/french/e-french/texmf/tex/francais.mlp new file mode 100644 index 0000000000..a401a41dc0 --- /dev/null +++ b/language/french/e-french/texmf/tex/francais.mlp @@ -0,0 +1,43 @@ +% francais.mlp Usual configuration for French using the mlp package. +% last mods: 2002/01/14% +% mlp means The Multi-Lingual Package, an idea from --bg 97/11/03 +% +% This file can be modified if the local or linguistic TeX users group +% accepts the modifications. +% +% Group to get in touch for francais.mlp is: GUTenberg +% +\ProvidesFile{francais.mlp}% + [2002/01/14 french configuration file for mlp package] + \DeclareOption{allemand}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% + \DeclareOption{allemandn}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49n}% + }% +%\DeclareOption{alsacien}... + \DeclareOption{anglais}{\@requirepackage{mlp-01}% for US english + \PassOptionsToPackage{english}{mlp-01}% + }% +\DeclareOption{autrichien}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\DeclareOption{autrichienn}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49}% + }% +%\DeclareOption{basque}... +%\DeclareOption{breton}... + \DeclareOption{francais}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% + \DeclareOption{acadien}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% + \DeclareOption{canadien}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{hollandais}{\@requirepackage{mlp-31}% + \PassOptionsToPackage{dutch}{mlp-31}% + }% +\AtBeginDocument{\beginlanguage}% +%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/french-msg.tex b/language/french/e-french/texmf/tex/french-msg.tex new file mode 100644 index 0000000000..7db46b5431 --- /dev/null +++ b/language/french/e-french/texmf/tex/french-msg.tex @@ -0,0 +1,206 @@ +% File french-msg.tex (messages issued by the FrenchPro package) +\msgheader{-\msgid-\space} +\msg{1}{the #1 macro already exists}{} +\msg{2}{#1 file not found.}{} +\msg{3}{\frenchpack\space is not active here\string!}{} +\msg{4}{entering now "Poor-Man-French-Style" way}{} +\msg{5}{the lettrine definition is wrong}{} +\msg{6}{check again the lettrine code}{} +\msg{7}{the lettrine is reduced to a lonely letter}{} +\msg{8}{\string\footnotetext{#1} lost % + \MessageBreak % + Code event. \string\protect\string\footnote}{} +\msg{9}{Corrupted/absent language.dat file}{} +\msg{10}{french package not loaded}{} +\msg{11}{applying the \string<\string< frpatch \string>\string> #1}{} +\msg{12}{frpatch.sty is out of date, delete the file}{} +\msg{13}{the character "#1" is already activated}{} +\msgheader{-13-\space} +\msg{13b}{double punctuation is then disactivated}{} +\msgheader{-\msgid-\space} +\msg{14}{closing not opened guillemets}{} +\msg{15}{the language \frenchname\space is numbered \the\language}{} +\msg{16}{the English language\space is numbered \the\language}{} +\msg{17}{\string\wrongtypedspaces\space not running % + in this context}{} +\msg*{18}{\frenchname.sty is forcing the \string\nofrenchguillemets\space % + option in math with AmSLaTeX.}{} +\msg{19}{using the internal language number \the\language}{} +\msg*{20}{WARNING\string: the French language is undefined in your format.}{} +\msg*{20b}{\frenchname.sty\string: the French language is undefined % + (ERROR\string!)}{} +\msg{21}{#1 is not defined}{} +\msg{22}{abbreviation of \string"#1\string" not found}{} +\msg*{23}{Package\string: \frenchpack\space\frenchstyleid% + \space(B.Gaulle)}{} +\msg{24}{\frenchname.sty is using, in this document, the font encoding % + \f@encoding.}{}% +\msg{25}{\frenchname.sty is issuing his messages in % + \ifEightBitOutput8bits.\else7bits mode % + "a la TeX".\fi % + ^^J}{} +\msg{26}{Error found in \frenchname.sty\string! % + \MessageBreak % + (look at e.g. the language.dat file)}{} +\msg*{27}{\frenchname.sty\string: language \l@no\space (#1) was initially % + (at initex) numbered \csname l@#1\endcsname\space(ERROR\string!)}{} +\msg{28}{WARNING\string: TeX Version 2 don't allow to use the % + 8bits chars with diacritics}{} +\msg*{29}{***Warning***\string: TeX engine in use along with CM fonts % + \MessageBreak % + (as in current TeX format) isn't sufficient to hyphenate % + \MessageBreak % + words containing diacritics (like in French).}{} +\msg{30}{ERROR\string! % + Something wrong\string! your TeX engine can't hyphenate correctly % + \MessageBreak % + french words with diacritics *in that current font* or % + encoding}{} +\msg{31}{Wrong French Hyphenation\string! % + Are you sure to run with a format *********** % + \MessageBreak % + in which the french patterns were % + installed at initex time\string? ***********}{} +\msg{32}{if yes try to switch to T1 font % + encoding (\string\usepackage[T1]{fontenc})***}{} +\msg{33}{CHECK the list for hexadecimal TeX codes you can't display % + \MessageBreak % + and decide if they must be eliminated from \@kbencoding.kbc % + \MessageBreak % + assuming your ''locale'' settings are okay on your system.}{} +\msg{34}{this file and other auxiliary files require to % + use the following % + \MessageBreak % + LaTeX packages\string: \frenchpack\string! % + \MessageBreak % + check \string\usepackage\space or remove these files. % + Typesetting is aborted\string!}{} +\msg{35}{kbconfig\string: Redefining \string ^\string ^\string Y uccode. % + \MessageBreak % + kbconfig\string: Redefining \string ^\string ^\string Z uccode.}{} +\msg{36}{ERROR\string: invalid name of LaTeX format % + (\string\fmtname). % + \MessageBreak % + CORRECT it to\string: \string\fmtname=LaTeX2e\space % + or ancient name.}{} +\msg{36b}{ERROR\string: non standard LaTeX format % + (\string\fmtname)}{} +\msg{37a}{ERROR\string: the french package is already active here.}{} +\msg{37b}{ERROR\string: the french package is stll not active here.}{} +\msg{38}{The language #1 is used as language number \the\workl@.}{} +\msg{39}{Error\string: file language.dat not found, trying to load % + US-english hyphenation file}{} +\msg*{40}{Writing kb8to7.lex and kb7to8.lex}{} +\msg{41}{your format is out of date, please run initex again\string!}{} +\msg{42}{The \frenchname\space patch file (frpatch.sty) is not suitable % + \MessageBreak % + for this version of the "\frenchpack" package dated \FSfd}{} +\msg{43}{french.all is LOADED^^J}{} +\msg{44}{ERROR the command \LaMacro\space is undefined\string!}{} +\msg{45}{executing \LaMacro}{} +\msg{46}{This commande is already defined in \frenchname.sty % + \MessageBreak % + Possible problem with \frenchpack\space (\Aboi #1 macro)}{} +\msg*{47}{i must stop because your TeX engine is unable to % + generate 8bit output codes, sorry\string!}{} +\msg{48}{Reading the configuration file of \frenchpack}{} +\msg{49}{closing the guillemets too early}{} +\msg{50}{Error\string: the french language is undefined in % + language.dat file.}{} +\msg{51}{ERROR\string: this document was not converted to 8bit...}{} +\msg*{52}{Error\string: the \frenchpack\space package doesn't run in % + such minimal document class, sorry\string!}{} +\msg{53}{the guillemets environment is not usable with % + \MessageBreak % + the \string\noeveryparguillemets\space option}{} +\msg{54}{ERROR\string: \string\unusedslot\space (\unusedslot) is invalid}{} +\msg{55}{ERROR \string\unusedslot\space character % + (\@unusedslot) is not activated.}{} +\msg*{56}{Processed 8bits characters are\string:}{} +\msg{57}{keyboard package #1 loaded for the font encoding % + \f@encoding.^^J}{} +\msg{58}{value of #1 ignored}{} +\msg*{59}{FATAL ERROR\string: unusual strange text generated.}{} +\msg{60}{dot missing after \string\etc}{} +\msg{61}{hyph\hyphchar.tex file not found.}{} +\msg{62}{additional hyphenation file loading % + for \hyphchar\space fonts with specific hyphen char}{} +\msg{63}{french.sty or frenchle.sty files not found. % + \MessageBreak % + Check if files exist somewhere in your system.}{} +\msg{64}{ERROR\string: invalid \string\fmtname\space in lplain.tex}{} +\msg{65}{\frenchname.sty is loading the translations % + for bibliography \string:}{} +\msg*{66}{ERROR\string! This file can't be typeset without any input % + \MessageBreak % + encoding declaration (look at keyboard or inputenc packages.)}{} +\msg*{67}{WARNING it seeems your are using inputenc and keyboard, % + please chose\string!}{} +\msg*{68}{ERROR\string: \frenchpack\space is no more running % + with 2.09 emulation, sorry\string!}{} +\msg{69}{kbconfig\string: Intercepting the dump control sequence for % + eliminating few invalid chars.}{} +\msg{70}{kbconfig\string: modifying \string\@tabacckludge\space for math.}{} +\msg{71}{WARNING\string: if babel is used,% + \MessageBreak + specify option \frenchname(pro/le)}{} +\msg{72}{kbconfig\string: utf8 encoding can't be completed with plain\string! % + \MessageBreak % + kbconfig\string: continuing with no Unicode characters.}{} +\msg*{73}{\frenchname.sty was loaded too early\string!}{} +\msg*{74}{ERROR, keyboard package loaded after % + \frenchpack!}{} +\msg{75}{kbconfig\string: utf8 encoding not found via inputenc % + package\string! % + \MessageBreak % + kbconfig\string: continuing with no Unicode characters.}{} +\msg{76}{kbconfig\string: no language dependencies available within % + Plain TeX\string!}{} +\msg{77}{No #1\space characters defined for English.}{} +\msg*{78}{ERROR\string: noutf8 option clash.}{} +\msg*{79}{keyboard.sty\string: no local option given, % + no utf8 coding.}{} +\msg{80}{Babel is willing to load the \CurrentOption\space option % + \MessageBreak but the mlp package is already loaded, % + please choose % + \MessageBreak either mlp with \CurrentOption\space option, % + \CurrentOption\space alone % + \MessageBreak or babel with \CurrentOption\space option}% + {\help{just remove the superfluous package or option.}} +\msg*{81}{WARNING\string: "msg" package not found\string; % + \MessageBreak continuing without message texts}{} +\msg{82}{command \LaMacro\space is not defined now}{} +\msg{83}{Testing macros before \string\begin{document}^^J}{} +\msg{84}{Now testing again but AFTER \string\begin{document}^^J}{} +\msg{85}{Warning\string: the fixlanguage option % + was not provided at the babelbib call}{} +\msg{86}{keyboard.sty\string: % + The mltex feature is nullified due to the #1\space option.}{} +\msg{87}{ERROR\string: % + \MessageBreak % + babelbib should only be used with babel}{} +\msg{88}{No characters defined % + \MessageBreak % + by keyboard encoding change to `utf8'\MessageBreak}{} +\msg{89}{kbconfig\string: Keyboard character used is undefined\MessageBreak % + in keyboard encoding `utf8'}% + {You need to provide a definition with % + \noexpand\DeclareInputText\MessageBreak or % + \noexpand\DeclareInputMath before using this key.} +\msg{90}{Invalid Unicode char value \string < 00A0}{\@eha} +\msg{91}{Unicode char #1 not set up\space % + for use with LaTeX}{\@eha} +\msg{92}{Yous should either\string:\MessageBreak % + - use an engine with the MlTeX option, or\MessageBreak % + - switch to font encoding T1 as default.}{} +\msg*{93}{You are using two French options for Babel, % + \MessageBreak % + please choose only one.}{} +\msgheader{-**-\space} +\msg*{**a}{\frenchpack\space serial number is *\@FrVal*.}{} +\msg*{**b}{\@FrVal\space of \frenchpack.}{} +\msgheader{} +\msg{*}{the message \msgid\space is unknown in the \frenchname\space % + package}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/language/french/e-french/texmf/tex/french.all b/language/french/e-french/texmf/tex/french.all new file mode 100644 index 0000000000..c3e7aeb788 --- /dev/null +++ b/language/french/e-french/texmf/tex/french.all @@ -0,0 +1,39 @@ +% This is the french test to check if all french macros exist and are running. +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% rev. 2002/04/25 +{\catcode`\]=13\def]{} + \message{-43- french.all now LOADED^^J} +\def\DmyDeF#1{\def\LaMacro{\expandafter\noexpand\csname#1\endcsname} + \message{^^J} + \expandafter\ifx\csname#1\endcsname\relax + \message{-44- ERRROR command \LaMacro is undefined!} + \else + \message{-45- executing \LaMacro} + \phantom{\expandafter\csname#1\endcsname\relax} + \fi + }% +\def\Dmydef#1,#2]{\DmyDeF{#1}% + \def\temp{#2}\ifx\temp\empty\let\Dmydef\relax\fi% + \Dmydef#2]}% +\def\dummydef[{\Dmydef}% +% Here are all the french defs names +\def\>{>}\def\<{<}\def\!{!}% simulation +% following code can't be executed asis +\ifx\frenchtest\undefined\else\let\frenchtest\empty\fi +\ifx\frenchdoc\undefined\else\let\frenchdoc\empty\fi +\ifx\figurette\undefined\else\let\figurette\empty\fi +\ifx\endfigurette\undefined\else\let\endfigurette\empty\fi +\ifx\GOfrench\undefined\else\let\GOfrench\empty\fi +\ifx\vert\undefined\else\let\vert\empty\fi +\ifx\tilde\undefined\else\let\tilde\empty\fi +\ifx\originaloutput\undefined\else\let\originaloutput\empty\fi +\ifx\unnumberedcaptions\undefined\else\let\unnumberedcaptions\empty\fi +\ifx\kbIO\undefined\else\let\kbIO\empty\fi +\ifx\nombre\undefined\else\let\nombre\empty\fi +\def\@kbtypeout[#1]#2{} +\input french.cmd % load all french cmd names +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/french.cfg b/language/french/e-french/texmf/tex/french.cfg new file mode 100644 index 0000000000..fe84835821 --- /dev/null +++ b/language/french/e-french/texmf/tex/french.cfg @@ -0,0 +1,12 @@ +% les options suivantes (conseillées) par défaut : +\abbreviations +\disallowuchyph +\overfullhboxmark +% on peut réactiver \tthyphenation si nécessaire +%\tthyphenation % doit être désactivé pour XeLaTeX +\tabbingaccents +\automaticlettrine +% désactivez les options de frenchle pour '«' et '»' ! +% test eFrench = {\befr} ce n'était qu'un essai +%\newcommand{\fbefr}{{\footnotesize E}F{\footnotesize RENCH}} +%\DeclareRobustCommand{\befr}{\fbefr} diff --git a/language/french/e-french/texmf/tex/french.chk b/language/french/e-french/texmf/tex/french.chk new file mode 100644 index 0000000000..279b0e7f09 --- /dev/null +++ b/language/french/e-french/texmf/tex/french.chk @@ -0,0 +1,55 @@ +% This is the french style check file (that check french cs & issue a warning) +% After Bernard Gaulle's decease this work is now maintained as a part of +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% to be used only to see if a document is french-style compatible +% +% rev. 2005/05/17 +\catcode`\/=0{\catcode`/\=12/gdef/Aboi{/string\}}%}emacs+TeX +/catcode`/\=0\catcode`\/=12\catcode`\@=11 +% THERE IS A LOOP when using the msg package thus +\let\kbBissue\relax% i don't use it. +% Localisation code for numbered \typeout: "\kbBissue% localise it." +% For debugging one can remove "msg" access, just uncomment +%\let\kbBissue\relax% this line. + \ifx\kbBissue\undefined% +% Firstly we add the material to use the "msg" package for localization. + \def\kb@issue#1#2{\kb@issue@[#1]#2\void}% The local \issuemsg macro. + % which will call the real one; + % #1 is the macro message required. + % #2 is the message header + msg number + % such as "^^J -234-", just message + % number (234) is kept. + \let\kbBissue\kb@issue% + \def\kb@issue@[#1]#2-#3-#4\void{\issuemsg[#1]#3(french)}% + \ifx\issuemsg\undefined\let\kbBissue\relax\let\typeouA\typeout\fi% + \fi% +% +\catcode`\@=12 +{\catcode`\]=13\def]{} +\gdef\ErrMsgF#1{% +\ifx\kbBissue\relax% + \errhelp{-46- Cette commande est deja definie dans le style french}% +% \errhelp{-46- Your command will be ignored, type <return> to proceed}% +\fi% +\kbBissue% localise it. + \errmessage{-46- Probleme eventuel avec FrenchPro (macro \Aboi #1)}} +\def\DmyDeF#1{\expandafter\gdef\csname#1\endcsname{\ErrMsgF{#1}}}% +\def\Dmydef#1,#2]{\DmyDeF{#1}% + \def\temp{#2}\ifx\temp\empty\let\Dmydef\relax\fi% + \Dmydef#2]}% +\def\dummydef[{\Dmydef}% +\input french.cmd % +% the following for super-activated-characters +\catcode`\"=\active +\gdef"{{\def\Aboi{}\ErrMsgF{\string"}}} +\catcode`<=\active\catcode`>=\active +\gdef<{{\def\Aboi{}\ErrMsgF{\string<}}} +\gdef>{{\def\Aboi{}\ErrMsgF{\string>}}} +\catcode`<=12\catcode`>=12 +\gdef\EBCDICbrackets{\catcode`<=\active\catcode`>=\active} +\gdef\noEBCDICbrackets{\catcode`<=12\catcode`>=12} +\def\frenchTeXmods{\ErrMsgF{frenchTeXmods}}% normally unused by user +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/french.cmd b/language/french/e-french/texmf/tex/french.cmd new file mode 100644 index 0000000000..0bed3f9dfe --- /dev/null +++ b/language/french/e-french/texmf/tex/french.cmd @@ -0,0 +1,89 @@ +% This is the list of all french macros introduced/modified by the french style +% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% to be used only for testing/debugging purposes. +% +% All pseudo standard titles cs (like \slidename) are omitted. +% Just specific french macros are there. +% rev. 2005/03/24 +\dummydef[french,english,frenchtest,frenchdoc,NouveauLangage,% % 5 +beginlanguage,inferieura,superieura,lqq,rqq,originalinput,% %10 +nonfrench,endnonfrench,frenchtypography,noTeXdots,TeXdots,% %15 +ancientguillemets,todayguillemets,guillemetsinallfonts,%18 + guillemetsinroman,endguillemets,%20 +noenglishquote,englishquote,noenglishdoublequotes,englishdoublequotes,%24 + untypedspaces,%25 +typedspaces,idotless,iwithdot,EBCDICbrackets,normalbrackets,% %30 +letpunctutionactivefor,wrongtypedspaces,nofrenchtypography,%33 + frenchlayout,everyparguillemetsremoved,%35 +everyparguillemets,noeveryparguillemets,overfullhboxmark,%38 + nooverfullhboxmark,labelsinmargin,%40 +nolabelsinmargin,Numeros,nopagenumbers,order,nofrenchlayout,% %45 +frenchtranslation,resume,sommaire,annexe,annexes,% %50 +glossaire,glossaires,printindex,see,seealso,% %55 +nofrenchtranslation,frenchmacros,dittomark,frenchname,ordinal,% %60 +keywords,endkeywords,motsclef,endmotsclef,pmfrench,% %65 +CheckSevenBits,frenchhyphenation,nofrenchhyphenation,hyphex,frhyphex,%%70 +letpunctuationactivefor,endfrench,prefacename,vert,tilde,% %75 +automaticlettrine,noautomaticlettrine,frenchguillemets,%78 + nofrenchguillemets,wideletter,%80 +abbreviations,noabbreviations,nofrenchmacros,frenchstyleid,%84 + originaloutput,%85 +abstract,endabstract,email,unnumberedcaptions,nowrongtypedspaces,% %90 +<,>,endorder,Ordinale,Ordinal,% %95 +allowuchyph,disallowuchyph,versatim,usualmessages,nohyphenation,% %100 +endversatim,tthyphenation,notthyphenation,!,tabbingaccents,% %105 +notabbingaccents,usersfrenchoptions,PS,yourref,ourref,% %110 +object,AllTeX,ordinale,guillemetsinarrays,noguillemetsinarrays,% %115 +pointvirgule,deuxpoints,pointexclamation,kbtypeout,%119 + pointinterrogation,%120 +guillemets,regularmathcomma,frenchmathcomma,frenchwarnings,%124 + nofrenchwarnings,%125 +frenchtrivsepwarnings,nofrenchtrivsepwarnings,emailname,fraddto,%129 +nombre,% %130 +frtrivseplengths,frlabelitems,checkitemguillemets,indentfirst,% %135 +nonindentfirst,kbIO,ConstantLayout,WindowsUnits,verbatimfile,% %140 +frenchpagestyle,nofrenchpagestyle,beginingfolio,nobeginingfolio,% %144 + FileName,%145 +theFileName,frenchbguillemets,nofrenchbguillemets,% + FrenchGuillemetsFrom,CyrillicGuillemets,%150 +PolishGuillemets,LasyGuillemets,og,fg,% %154 + % + % 154 commandes definies avant \begin{document}% + %----------------------------------------------% +% +%%%%%%%%%%%%% +% Macros defined after \begin{document} +% +ier,iere,ieme,iers,ieres,% %005 +iemes,numeros,lettrinefont,degre,degres,% %010 +leftguillemets,rightguillemets,fup,primo,secundo,% %015 +tertio,quarto,quando,fsc,refmark,% %020 +moretolerance,Sauter,lsc,vers,formfoot,% %025 +formhead,figurette,endfigurette,printglossary,lettrine,% %030 +flettrine,at,chap,lettrinehang,lettrinefontname,% %035 +noresetatpart,etc,allowhyphens,captionfont,originalmathcomma,% %040 +frenchpack,halfnegthinspace,% 42 + % + % 42 commandes definies apres \begin{document}% + %+ 154 commandes definies avant \begin{document}% + %= 196 commandes utilisables dans FrenchPro % +% %-----------------------------------------------% +%%%%%%%%%%%% +% +% Macros not entered in the list or removed +% +%GOfrench,% is not a user command +%fguillemets,endfguillemets,%150 % removed 2000/03/08 +%languagename is defined by babel +%slidename and listslidename will be in seminar too +%notesname is already in endnotes +%proofname is in AmS +%No, % was it really defined in the past? +%addto is defined by babel +]}% +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/french.dmy b/language/french/e-french/texmf/tex/french.dmy new file mode 100644 index 0000000000..c3db0cf453 --- /dev/null +++ b/language/french/e-french/texmf/tex/french.dmy @@ -0,0 +1,70 @@ +% This is the french dummy style (that redefine all french cs as dummy) +% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% to be used only for testing/debugging purposes. +% +% rev. 2000/10/20 +%% +%% checksum = "57290 67 195 2733" +%% +{\catcode`\]=13\def]{} +\def\DmyDeF#1{\expandafter\gdef\csname#1\endcsname{\relax}}% +\def\Dmydef#1,#2]{\DmyDeF{#1}% + \def\temp{#2}\ifx\temp\empty\let\Dmydef\relax\fi% + \Dmydef#2]}% +\def\dummydef[{\Dmydef}% +% Here are all the french defs names +\ifx\french\undefined\let\french\relax\fi% %1 +\ifx\english\undefined\let\english\relax\fi% %2 +\input french.cmd % +% The following is for commands used before \begin{document} +% they must not produce any text. +\def\email#1{}% +% +\global\let\dsORI\dospecials\gdef\dospecials{\do<\do>\dsORI} +\catcode`<=\active\catcode`>=\active +\gdef\EBCDICbrackets{% let << >> do a grouping + \catcode`<=\active\catcode`>=\active + \global\let\ifOG\iffalse + \gdef\NNouv<{\ifOG\else\bgroup\fi\global\let\ifOG\iftrue} + \gdef\NNfer>{\ifOG\egroup\fi\global\let\ifOG\iffalse} + \gdef<{\protect\myNo}\gdef>{\protect\myNf} + \gdef\myNo{\ifmmode\string<\else\NNouv<\fi} + \gdef\myNf{\ifmmode\string>\else\NNfer>\fi} +} +\gdef<{\string<}% +\gdef>{\string>}% for use with 8bits << and >> +\gdef\normalbrackets{\catcode`<=12\catcode`>=12 + \global\let\dospecials\dsORI} +\catcode`<=12\catcode`>=12 +\gdef\guillemets{<<}\gdef\endguillemets{>>} +\gdef\guillemotleft{<<}\gdef\guillemotright{>>} +\gdef\ref#1{??}% contents nullified (too much code to write) +\gdef\special#1{}\def\cite#1{??}% ditto +\gdef\Sauter#1Lignes{}% +% the following to let LaTeX know about the order and versatim env. +\global\let\order\itemize\global\let\endorder\enditemize +{\catcode`\@=11\relax +%\global\let\@sanORI\@sanitize\def\@sanitize{\@sanORI\@makeother<\@makeother>} +\begingroup \catcode `| =0 \catcode `[ = 1 \catcode`] =2 + \catcode `\{=12 \catcode `\}=12 \catcode`\\=12 + |gdef|@xversatim#1\end{versatim}[#1|end[versatim]] + |endgroup% running macro for versatim +\gdef\versatim{\let\@xverbatim\@xversatim\verbatim% + \def\endversatim{\endverbatim}} +} +%\global\let\vers\verb% c'est un pb pour 2e (invalid in argument) +\global\let\vers\relax +\let\BSori\backslash\def\backslash{\ifmmode\BSori\else$\BSori$\fi} +\global\def\|{\backslash|}% used in french.tst as a backslash in a verb. +\def\frenchTeXmods{}% normally unused by user +\let\figurette\figure\let\endfigurette\endfigure +\def\CheckSevenBits/#1/#2{}% no-op +\endinput +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + + diff --git a/language/french/e-french/texmf/tex/french.sty b/language/french/e-french/texmf/tex/french.sty new file mode 100644 index 0000000000..ba3fea5a62 --- /dev/null +++ b/language/french/e-french/texmf/tex/french.sty @@ -0,0 +1,3282 @@ +% This file is a part of the e-French package. +% For more details please read efrench.pdf and faq.pdf +%\expandafter\ifx\csname frenchTeXmods\endcsname\relax% ---?? +%\else \endinput \fi% ---?? +\def\frenchname{french}% +\def\frenchpack{e-french}% eFrench +\def\ds@french{}% +\def\ds@pmfrench{\pmfrench}% +{\catcode`\@=11{% + \ifx\@unexpandable@protect\undefined\let\protect\empty% + \else\let\protect\@unexpandable@protect% + \fi% + \xdef\FSfd{31 mai 2019}% eFrench + \xdef\FSfv{V6,101}% + \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}% +}}% + \edef\FSfd{2019/05/31}% +\NeedsTeXFormat{LaTeX2e}[1996/12/01]% +% > utf8 and NoEncode specialities +\newif\ifeF@NoEnc %No encoding (XeTex, LuaLaTex) +\expandafter\expandafter +\expandafter\ifx\csname XeTeXrevision\endcsname\relax +\else + \eF@NoEnctrue +\fi +% +\newif\ifeF@LuaTeX +\expandafter\ifx\csname lualatexversion\endcsname\relax +\else + \eF@LuaTeXtrue \eF@NoEnctrue +\fi +\newif\ifeFr@Typo\eFr@Typotrue +% In order having no encoding by messages declare this : + \let\kbencoding\@gobble +% < utf8 and NoEncode specialities +\let\auxWARNINGi=\@gobble% +\def\@txt@msg#1{#1}% +\def\@gobbleopt[#1]{}% +\def\f@issue#1#2{#1{#2}\@ifnextchar[{\@gobbleopt}{}% + }% +\def\@tempc{% +\def\f@issue##1##2{\f@issue@[##1]##2\void}% + % + % + % + % +\def\f@issue@[##1]##2-##3-##4\void{\issuemsg[##1]##3(french)}% +\PassOptionsToPackage{french}{msg}% +\ifx\LdfInit\@undefined% + \RequirePackage{msg}% +\else% + \let\@GOfrench\@currname% + \xdef\@currname{msg}% + \def\intern@lc@llfrom{\frenchpack}% + \let\fp@languagename\languagename% + \ifx\documentclass\@twoclasseserror% + \def\languagename{french}% + \fi + \@@input msg.sty% + \let\languagename\fp@languagename% + \let\fp@languagename\undefined% + \let\intern@lc@llfrom\undefined% + \let\@currname\@GOfrench% +\fi% + }% +\def\@tempd{\def\f@issue##1##2{\@ifnextchar[{\@gobbleopt}{}% + }% + }% +\edef\@tempa{\expandafter\noexpand\csname str-\jobname\endcsname}% +\edef\@tempb{\expandafter\noexpand\csname str-frlicense\endcsname}% +\ifx\@tempa\@tempb% +\IfFileExists{msg.sty}{\@tempc}{\@tempd}\else% +\IfFileExists{msg.sty}{\@tempc}{% + \typeout{^^J -81- WARNING: "msg" package not found;% +^^J\space\space\space\space\space\space continuing without message texts.}% + }% +\fi% +\newif\ifECM% +\def\ErrFrench{\f@issue\@fW{-26- % + % + % + }}% +\def\ifFTY{\ErrFrench}\def\ifFTR{\ErrFrench}\def\ifFG{\ErrFrench}% +\def\ifFLA{\ErrFrench}\def\ifFMA{\ErrFrench}\def\ifFH{\ErrFrench}% +\def\ifArG{\ErrFrench}\def\ifFTSW{\ErrFrench}\def\ifFW{\ErrFrench}% +\edef\GOfrench{`\string @}% +\ifnum\catcode\GOfrench=11% + \let\resetat\relax% + \else\edef\resetat{\noexpand\catcode\GOfrench=\the\catcode\GOfrench}% + \makeatletter\fi% +\let\@currnameORI\@currname% +\xdef\@currname{\frenchname}% +{\def\'{\string\'}% + \ProvidesPackage{\frenchname}% + [\FSfd\space The \frenchpack\space package /\FSfv/]% +}% +\def\GOfrench{babel}\ifx\@currnameORI\GOfrench% + \ifx\undefined\babel@core@loaded\input babel.def\relax\fi% + \ifx\undefined\babel@core@loaded% + \let\babel@core@loaded\main@language\fi% + \fi% +\def\@tempa#1V#2,#3\@nil{\def\@FSfv{#2}}\expandafter\@tempa\FSfv\@nil% +\let\FSfv=\undefined% +\IfFileExists{frpatch.sty}{\def\FSfd@patch{unknown}}{\let\FSfd@patch\FSfd}% +\if@compatibility% + \f@issue\typeout{^^J -68- + % + % + }\expandafter\stop% +\fi% +\ifeF@LuaTeX\relax\else +\ifx\l@french\undefined\f@issue\typeout{^^J -20- + % + % + }% + \fi% +\fi% +\fontencoding{\encodingdefault}\selectfont% + \def\@temp@{OT1}\ifx\@temp@\f@encoding% + \def\@temp@{\global\ECMfalse}% + \else\def\@temp@{LO1}\ifx\@temp@\f@encoding% + \def\@temp@{\global\ECMfalse}% + \else% + \def\@temp@{\global\ECMtrue}% + \fi% + \fi% +\@temp@% +\def\@tempa{\let\ifEightBitOutput\iffalse}% +\ifx\EightBitOutputfalse\undefined\expandafter\@tempa\fi% +\ifECM\else\ifx\charsubdef\undefined% + \def\@tempa{\noexpand\dGs}% + \ifx\@tempa\dGs\else% + \ifx\@kb@msgXXIX\relax\else% + \f@issue\typeout{^^J -29- % + % + % + % + }% + \let\@kb@msgXXIX\relax% + \fi% + \fi% +\fi\fi% +\ifx\undefined\@dblarg% +\long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}}% +\long\def\@xdblarg#1#2{#1[{#2}]{#2}}% +\fi% +\newdimen\@FrDimen% +\def\usualmessages{\let\ifEightBitOutput\iftrue}% + \ifnum\inputlineno=-1\def\@o@l{.}% + \else\def\@o@l{ (\`a la ligne \the\inputlineno).}\fi% + \expandafter\let\expandafter\@aiguORI\expandafter=% + \csname OT\string1\string\'\endcsname% + \expandafter\let\expandafter\@gravORI\expandafter=% + \csname OT\string1\string\`\endcsname% + \expandafter\let\expandafter\@acchORI\expandafter=% + \csname OT\string1\string\^\endcsname% + \expandafter\let\expandafter\@tremORI\expandafter=% + \csname OT\string1\string\"\endcsname% + \expandafter\let\expandafter\@cediORI\expandafter=% + \csname OT\string1\string\c\endcsname% +\def\@PreserveBraces[#1#2]% + {\ifcat\noexpand#1$ #1#2\def\@temp@{}% + \else\def\@temp@{#2}% + \ifx\@temp@\empty\def\@temp@{#1}% + \else\def\@temp@{{#1#2}}\fi% + \fi\expandafter\@temp@}% +\def\@temp@{lplain-bilingual}% +\ifx\fmtname\@temp@\f@issue\typeout{-64- % + \@txt@msg{ERROR: invalid \string\fmtname\space in lplain.tex}% + }\stop\fi% +%% code to test the shareware licence suppressed eFrench +\let\@tempc\relax% +\ifx\today\undefined\let\today\cejour\fi% +\ifx\today\undefined\f@issue\typeout{^^J -52- % + % + % + }\expandafter\stop% +\fi% +{\def\GOfrench{\global\let\ifEightBitOutput\iffalse}% + \let\add@accent\@gobble\edef\@tempa{\`{}}% + \def\@tempb{{\setbox \@tempboxa \hbox {}\accent 18 }}% + \ifx\@tempa\@tempb% + \expandafter% + \GOfrench% + \fi% +}% +\def\@fW#1{{\let\@nobraces\@firstofone% + \ifEightBitOutput% + \setbox\@tempboxa\hbox{\`\space}% + \ifx\charsubdef\undefined\else% + \let\add@accent\@gobble% + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \def\^##1{\expandafter\@nobraces\@acchORI##1}% + \fi% + \else% + \let\protect\string\let\add@accent\@gobble% + \fi% + \edef\@tempa{#1}\typeout{\@tempa}}}% +{\def\ier{er}% +\f@issue% +\@fW{^^J -23- % + % + }% +}% +\let\ifFW\iftrue% +\def\@fw#1{{\let\@NoFr\relax% + \ifFW\kbtypeout% + {^^J \frenchname.sty \string : #1\@o@l}% + \fi% + }}% + % +\ifx\kbtypeout\undefined% +\def\@kbtypeout[#1]#2{\ifEightBitOutput\let\@typeset@protect\protect\fi% + \let\@inpenc@undefined@\@gobble% + \edef\f@tempa{#2\empty}% + #1{\f@tempa}\egroup}% +\def\kbtypeout{\kbIO[\typeout]}% +\def\kbIO{\bgroup% + \ifECM\fontencoding{OT1}\selectfont\fi% + % + \let\@nobraces\@firstofone% + \let\protect\string% + \ifEightBitOutput% + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \def\^##1{\expandafter\@nobraces\@acchORI##1}% + \def\"##1{\expandafter\@nobraces\@tremORI##1}% + \def\c##1{\expandafter\@nobraces\@cediORI##1}% + \csname @kbspecials\endcsname% + \else% + \let\add@accent\@gobble% + \def\set@display@protect{\let\protect\noexpand}% + \fi% + \@kbtypeout}% +\fi% +\ifx\@kbtypeout\undefined% + \def\@kbtypeout[#1]#2{#1{#2}\egroup}% +\fi% +\def\@tempb{\let\ifEightBitOutput\iffalse}% +\ifx\kbtypeout\typeout% + \long\def\@tempa{\add@accent{19}}% + \ifx\@tempa\@aiguORI\expandafter\@tempb\fi% +\def\@fw#1{\ifFW\bgroup\let\@nobraces\@firstofone% + \ifEightBitOutput% + \ifx\charsubdef\undefined\else% + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \fi% + \else% + \let\protect\string\let\add@accent\@gobble% + \fi% + \@kbtypeout[\typeout]{^^J \frenchname.sty \string : #1\@o@l}% + \fi% + }% +\fi +\def\@Ffnt#1{\f@issue\@fw{-2- % + }[#1]}% +\def\@finput#1{\InputIfFileExists{#1}{}{\@Ffnt{#1}}}% +\def\@NoFr{\f@issue\@fw{-3- % + % + }}% +\let\ifFrench\iffalse% +\ifx\addto\undefined% + \def\addto#1#2{\ifx#1\@undefined\def#1{#2}% + \else\ifx#1\relax\def #1{#2}% + \else{\toks@\expandafter{#1#2}% + \xdef#1{\the\toks@}}% + \fi% + \fi% + }% +\fi% +\def\fraddto#1#2{\addto{#1}{#2}% + \ifFrench\french\else\english\fi}% +\ifx\MakeRobustCommand\undefined% +\def\MakeRobustCommand#1{\expandafter\expandafter\expandafter% + \let\expandafter\expandafter\csname #1 fp\endcsname% + \csname #1\endcsname% + \expandafter% + \edef\csname #1\endcsname{\expandafter\protect% + \expandafter\noexpand\csname #1 fp\endcsname} + }% +\fi% +\ifx\DocInput\undefined\else% + \let\fr@di\DocInput\def\DocInput#1{% + \ifFrench\english\fr@di{#1}\french% + \else\fr@di{#1}% + \fi\relax}% +\fi% +\ifx\url\undefined\else% + \let\fr@ul\url\def\url#1{% + \ifFrench\english\fr@ul{#1}\french% + \else\fr@ul{#1}% + \fi\relax}% +\fi% +\ifx\xy\undefined\else% + \let\fr@xy\xy\def\xy{% + \ifFrench\nofrenchguillemets\DFPdp\fi\fr@xy}% +\fi% +\ifx\hyper@n@rmalise\undefined\else% + \let\fr@hne\hyper@n@rmalise\def\fr@hnr#1#2{\fr@hne{#1}{#2}}% + \def\hyper@n@rmalise{\ifFrench\english\expandafter\fr@hnr% + \else\expandafter\fr@hne\fi}% +\fi% +\ifx\PDFSCR@Info\undefined\else% + \def\@seccntformat#1{\protect\textcolor{section\thesection@level}% + {\expandafter\upshape\csname the#1\endcsname}\quad}% +\fi% +\ifx\listing\undefined\else% + \let\fr@li\listing% +\edef\listing{\noexpand\@protected@testopt\noexpand\listing% + \expandafter\noexpand\csname\string\listing\endcsname {1}}% + \ifx\fr@li\listing% + \def\listing{% + \ifFrench\expandafter\english\expandafter\fr@li% + \else\expandafter\fr@li% + \fi}% + \else% + \long\def\listing{% + \ifFrench\expandafter\english\expandafter\fr@li% + \else\expandafter\fr@li% + \fi\relax}% + \fi% +\fi% +\ifx\inputlisting\undefined\else% + \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{% + \ifFrench\english\fr@PL[#1]\french% + \else\fr@PL[#1]% + \fi\relax}% +\fi% +\ifx\lstlisting\undefined\else% + \let\fr@lsi\lstlisting\long\def\lstlisting{% + \ifFrench\expandafter\english\expandafter\fr@lsi% + \else\expandafter\fr@lsi% + \fi}% +\fi% +\ifx\lstinputlisting\undefined\else% + \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{% + \ifFrench\english\fr@PL[#1]\french% + \else\fr@PL[#1]% + \fi}% +\fi% +\def\ifFrench#1\fi{\@NoFr}% + % +\def\originalinput#1{\ifFrench\english\@finput{#1}\french% + \else\@finput{#1}\fi\relax}% +\def\originaloutput[#1]{% <BG + \ifFrench\english\fi% + \def\@riginalout##1##2{\immediate\write##1{##2}}% + \@riginalout{#1}}% >BG +% ou moins souple d'emploi : RJ +%\def\originaloutput#1#2{\ifFrench\english\fi\immediate\write#1{#2}}% RJ +\let\ifFLA\iffalse% +\@ifundefined{printindex}{% + \def\see#1#2{\seename% + \/ {#1}}% + \def\printindex{\clearpage% + \ifx\hyper@refstepcounter\undefined\else% + \stepcounter{subparagraph}% + \hyper@refstepcounter{subparagraph}% + \fi% + \addcontentsline{toc}{chapter}% + {\protect\indexname}% + {\let\@ti\theindex% + \def\theindex{\@ti\ifFLA\thispagestyle{french}\fi}% + \@finput{\jobname.ind}}}}{}% +\ifx\printnomenclature\undefined\else% +\let\@pne\printnomenclature% +\def\printnomenclature{\nofrenchwarnings\@pne}% +\fi% +\ifx\thebibliography\undefined\else% +\let\@tbs\thebibliography% +\let\fr@savebib\thebibliography% +\long\def\thebibliography#1{% + \ifFLA% + \ifx\hyper@refstepcounter\undefined\else% + \stepcounter{subparagraph}% + \hyper@refstepcounter{subparagraph}% + \fi% +\ifx\bibname\undefined% + \addcontentsline{toc}{chapter}{\refname}% +\else% + \addcontentsline{toc}{chapter}{\bibname}% +\fi% + \fi% + \@tbs{#1}% + }% +\ifx\bt@stepcnt\undefined% +\else% +\let\thebibliography\@tbs% +\let\bt@saveitem\bibitem% +\AtBeginDocument{\let\bt@savebib\fr@savebib}% +\def\@tempd#1#2#3#4\void{\def\@tempa{\noexpand#1}\def\@tempb{\noexpand#2}% + \def\@tempc{\noexpand#3}\def\@@tbs##1{#4}}% +\expandafter\@tempd\thebibliography{\string#1}\void% +\edef\thebibliography#1{\@tempa\@tempb\@tempc% + \noexpand\@@tbs{#1}\noexpand\@tbs}% +\def\@tbs{\ifFLA% + \ifx\hyper@refstepcounter\undefined\else% + \stepcounter{subparagraph}% + \hyper@refstepcounter{subparagraph}% + \fi% + \ifx\bibname\undefined% + \addcontentsline{toc}{chapter}{\refname}% + \else% + \addcontentsline{toc}{chapter}{\bibname}% + \fi% + \fi% + }% +\fi% +\fi% +\def\ifFLA{\ErrFrench}% +\@ifundefined{disableindex}{}% + {% + \def\see#1#2{\seename\/ {#1}}% + }% +\@ifundefined{seealso}{% + \def\subsee#1#2{\seealsoname% + \/ {#1}}% + \let\nosee\@gobble% + \def\seealso{\bgroup\edef\@temp@{}\@ifNextNB[{\see@@so}% + {\see@lso}}% + \def\see@lso#1#2{\expandafter% + \index\@temp@{#1!zzzzz@\protect\subsee{#2}|nosee}\egroup}% + \def\see@@so[#1]{\edef\@temp@{[#1]}\see@lso}}{}% + \def\@ifFTYfalse{\let\ifFTY\iffalse}% + \def\@ifFTYback{\let\ifFTY\if@Back}% + \let\if@PMF\iffalse% +\newif\if@PMF\@PMFfalse% +\def\pmfrench{\@PMFtrue\f@issue\@fw{-4- % + % + }% + \def\frenchname{pmfrench}}% +\f@issue% +\@fW{ -24- % + % + % + }% +\f@issue% +\@fW{ -25- % + }% +\def\CheckSevenBits/#1{\def\@tempa##1##2/##3{\ifx##2\empty\else% + \f@issue% + \@fw{-51- % + % + }% + \expandafter ##3\fi}\expandafter\@tempa\noexpand#1}% +\@ifundefined{tt}{\def\tt{\fontfamily{\ttdefault}\selectfont}}{}% +\let\ifGIAF\iftrue% +\@ifundefined{ly}% + {% + \ifx\symlasy\undefined% + \ifx\undefined\babel@core@loaded% + \RequirePackage{latexsym}% + \else% + \xdef\@currname{latexsym}% + \@@input latexsym.sty\@@input ulasy.fd% + \fi% + \fi% + \def\@ly{\fontencoding{U}\fontfamily{lasy}% + \ifGIAF\else\fontseries{m}\fontshape{n}\fi\selectfont}% + \def\ly{\ifFG\ifECM\rm\else\@ly\fi\fi}% + }{}% +\ifx\guillemetsfont\undefined% +\def\guillemetsfont{\fontfamily{\rmdefault}% + \fontseries{m}\fontshape{n}\selectfont}% +\fi% +\def\@gfnt{\guillemetsfont}% +\edef\lq{\string`}\edef\rq{\string'}% +\let\@cilq='% +\edef\lqq{\string`\string`}\edef\rqq{\string'\string'}% +\edef\pointvirgule{\string;}% +\edef\deuxpoints{\string:}% +\let\@cidp=:% +\edef\pointexclamation{\string!}% +\edef\pointinterrogation{\string?}% +\edef\inferieura{\string<}% +\edef\superieura{\string>}% +\edef\dittomark{\string"}% +\let\f@par\par% +\let\@SLQ\lq% +\def\@SRQ@{^\bgroup\prim@s}% +\def\@SRQ{\ifmmode\expandafter\@SRQ@\else\rq\fi}% +\let\@gotl\guillemotleft% +\let\@gotr\guillemotright% +\def\@temp@{LO1}\ifx\@temp@\f@encoding% + \else\edef\@temp@{OT1}\fi% +\def\@tempa#1{\expandafter\relax% + \expandafter\global% + \expandafter\def% + \csname\@temp@\string#1\endcsname}% +\@tempa{\guillemotleft}{\let\ifECM\iffalse% + \ifFG\ly(\kern-0.20em(\else<<\fi}% +\@tempa{\guillemotright}{\let\ifECM\iffalse% + \ifFG\unskip% + \ly\kern+0.20em)\kern-0.20em)% + \else>>% + \fi}% +\let\@LSG\inferieura\def\@DOG{\inferieura\inferieura}% +\let\@RSG\superieura\def\@DFG{\superieura\superieura}% +\def\@SOC{\string[% + }% +\def\@SFC{% + \string]}% +\edef\@LP{\ifECM023\else(\fi% + }% +\edef\@RP{% + \ifECM024\else)\fi}% +\newif\ifFH% +\let\@noBDfr\@nodocument% +\def\frenchhyphenation{\@noBDfr}% +\def\nofrenchhyphenation{\@noBDfr}% +\def\frenchtypography{\@noBDfr}% +\def\regularmathcomma{\@noBDfr}% +\def\frenchmathcomma{\@noBDfr}% +\def\frenchwarnings{\@noBDfr}% +\def\nofrenchwarnings{\@noBDfr}% +\def\nofrenchtypography{\@noBDfr}% +\def\nofrenchtranslation{\@noBDfr}% +\def\frenchtranslation{\@noBDfr}% +\ifx\RIfM@\undefined% +\def\nofrenchguillemets{\@noBDfr}% +\def\frenchguillemets{\@noBDfr}% +\def\nofrenchbguillemets{\@noBDfr}% +\def\frenchbguillemets{\@noBDfr}% +\fi% +\global\let\ifCLAfrench\iffalse% +\def\ConstantLayout{\@noBDfr}% +\def\originalmathcomma{\@noBDfr}% +\def\everyparguillemetsremoved{\@noBDfr}% +\def\Numeros{\@noBDfr}% +\def\order{\@noBDfr}% +\def\endorder{\@noBDfr}% +\def\sommairename{\@noBDfr}% +\def\versatim{\@noBDfr}% +\def\endversatim{\@noBDfr}% +\def\nofrenchmacros{\@noBDfr}% +\def\frenchmacros{\@noBDfr}% +\def\automaticlettrine{\@noBDfr}% +\def\noautomaticlettrine{\@noBDfr}% +\def\noeveryparguillemets{\@noBDfr}% +\def\everyparguillemets{\@noBDfr}% +\def\nofrenchlayout{\@noBDfr}% +\def\frenchlayout{\@noBDfr}% +\def\indentfirst{\@noBDfr}% +\def\nonindentfirst{\@noBDfr}% +\def\NouveauLangage{\@noBDfr}% +\def\letpunctutionactivefor{\@noBDfr}% +\def\@tempa{\let\ifarticle\iffalse}% +\ifx\ifarticle\undefined\expandafter\@tempa\fi% +\ifx\@seminarerr\undefined\else\ifarticle\else% +\let\@soORI\shipout% +\def\shipout#1#2{\def\@tempa{slide}\def\@tempb{slide*}% + {\ifx\@tempa\@currenvir\let\protect\noexpand% + \else\ifx\@tempb\@currenvir\let\protect\noexpand\fi% + \fi% + \@soORI#1#2}% + \global\let\shipout\@soORI% + }% +\fi\fi% +\let\h@yphenation\hyphenation% +\long\def\f@hyphenation#1{\bgroup% + \let\par\space% + \def\-{ }% + \let\allowhyphens\undefined% + \csname accenthyphcodes\endcsname% + \lowercase{\edef\@tempa{#1}}% + \h@yphenation{\@tempa}\egroup}% +\def\@tempa{\let\iffrenchbibliography\iftrue}% +\ifx\iffrenchbibliography\undefined\expandafter\@tempa\fi% +\ifx\nombre\undefined\else\let\@nomORI\nombre\fi% +\begingroup\obeyspaces% +\gdef\@@nombre{\ifFTY\@mathcomma\obeyspaces\let =\,\fi}% +\endgroup% +\def\@nombre#1{\bgroup\let\ifFTY\iftrue\def\@tempa{#1}% + \def\,{\ifmmode\mskip\thinmuskip\fi}% + \if@filesw{\immediate\openout\@inputcheck=\jobname.tmp% + \let\protect\noexpand% + \ifmmode% + \immediate\write\@inputcheck{\protect\makeatletter% + \protect\@@nombre% + \@tempa\ignorespaces}% + \else% + \immediate\write\@inputcheck{\protect\makeatletter% + \protect\@@nombre% + $\@tempa$\ignorespaces}% + \fi% + \immediate\closeout\@inputcheck% + }% + \immediate\openin\@inputcheck=\jobname.tmp% + \immediate\read\@inputcheck to\@tempa% + \immediate\closein\@inputcheck% + \def\@tempa{{\input{\jobname.tmp}}}% + \fi% + \@tempa\egroup% + }% +\ifx\nombre\undefined\DeclareRobustCommand*{\nombre}{\@nombre}\fi% +\ifx\WindowsUnits\undefined% + \def\WindowsUnits{\@wu}\fi% +\def\FileName{\bgroup% + \def\@FNenc@loop##1##2{\@tempcnta`##1\relax% + \loop\catcode\@tempcnta=11% + \ifnum\@tempcnta<`##2\relax% + \advance\@tempcnta\@ne% + \repeat}% + \@FNenc@loop\^^A\^^H% + \@FNenc@loop\^^K\^^K% + \@FNenc@loop\^^N\^^_% + \@FNenc@loop\^^?\^^ff% + \@FileName}% +\def\@FileName#1{\gdef\theFileName{#1}\egroup}% +\let\og\empty\let\fg\empty% + \def\FrenchGuillemetsFrom#1#2#3#4{% + \DeclareFontEncoding{#1}{}{}% + \DeclareFontSubstitution{#1}{#2}{m}{n}% + \DeclareTextCommand{\guillemotleft}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3}}% + \DeclareTextCommand{\guillemotright}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} + \def\CyrillicGuillemets{\FrenchGuillemetsFrom{OT2}{wncyr}{60}{62}} + \def\PolishGuillemets{\FrenchGuillemetsFrom{T1}{lmr}{19}{20}} + \def\LasyGuillemets{% + \DeclareTextCommand{\guillemotleft}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}}% + \DeclareTextCommand{\guillemotright}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}} +\ifeF@NoEnc\else + \IfFileExists{t1lmr.fd}{\PolishGuillemets}{\LasyGuillemets} +\fi + \DeclareTextSymbolDefault{\guillemotleft}{OT1} + \DeclareTextSymbolDefault{\guillemotright}{OT1} + \def\guill@spacing{\penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font + minus.8\fontdimen4\font} + \DeclareRobustCommand*{\begin@guill}{\leavevmode + \guillemotleft\penalty\@M\guill@spacing} + \DeclareRobustCommand*{\end@guill}{\ifdim\lastskip>\z@\unskip\fi + \penalty\@M\guill@spacing\guillemotright\xspace} + \AtBeginDocument{\ifx\xspace\@undefined\let\xspace\relax\fi} + \def\bbl@frenchguillemets{\renewcommand{\og}{\begin@guill}% + \renewcommand{\fg}{\end@guill}} + \def\bbl@nonfrenchguillemets{\renewcommand{\og}{``}% + \renewcommand{\fg}{\ifdim\lastskip>\z@\unskip\fi ''}} +\def\@ifo{% +\def\kbIO{\bgroup% + \ifECM\fontencoding{OT1}\selectfont\fi% + \ifFTY\expandafter\nofrenchtypography\fi% + \let\@nobraces\@firstofone% + \let\protect\string% + \ifEightBitOutput% + \def\'####1{\expandafter\@nobraces\@aiguORI####1}% + \def\`####1{\expandafter\@nobraces\@gravORI####1}% + \def\^####1{\expandafter\@nobraces\@acchORI####1}% + \def\"####1{\expandafter\@nobraces\@tremORI####1}% + \def\c####1{\expandafter\@nobraces\@cediORI####1}% + \csname @kbspecials\endcsname% + \else% + \let\add@accent\@gobble% + \def\set@display@protect{\let\protect\noexpand}% + \fi% + \@kbtypeout}% +\let\s@owhyphens\showhyphens% +\let\@dsORI\dospecials% +\@ifundefined{@sanitize}{\def\@sanitize{\relax}}{}% +\let\@saORI\@sanitize% +\def\frenchhyphenation{% + \ifFH\else\FHtrue% + \edef\@uchORI{\the\uchyph}% + \def\@Hif{\ifFH}\let\@Hfi\fi% + \lccode `\'=`\'% + \ifx\flowercase\undefined\else\def\lowercase{\flowercase}\fi% + \@ifundefined{allowhyphens}{% + \def\allowhyphens{\ifhmode\nobreak\hskip\z@skip\fi}}{}% + \@ifundefined{lefthyphenmin}{}% + {\lefthyphenmin=2\righthyphenmin=3}% + \@whatUCH% + \def\@tempa####1{{\accenthyphcodes\h@yphenation{####1}}}% + \ifx\@tempa\hyphenation\f@issue% + \@fw{-41- % + % + }\stop% + \fi% + \def\accenthyphcodes{% + \let\@typeset@protect\protect% + \ifx\protect\noexpand\else% + \ifECM\else\fontencoding{T1}% + \let\pickup@font\@gobble% + \let\size@update\relax\selectfont% + \fi\fi}% + \let\hyphenation\f@hyphenation% + \def\showhyphens####1{\bgroup% + \csname accenthyphcodes\endcsname% + \protected@edef\@tempa{####1}% + \s@owhyphens{\@tempa}\egroup}% + \fi}% +\def\nofrenchhyphenation{% + \ifFH\FHfalse% + \lccode`\'=0% + \let\hyphenation\h@yphenation% + \let\showhyphens\s@owhyphens% + \ifx\lowercaseORI\undefined\else\let\lowercase\lowercaseORI\fi% + \@ifundefined{lefthyphenmin}{}% + {\lefthyphenmin=2\righthyphenmin=3}% + \uchyph=\@uchORI% + \fi}% +\edef\originalmathcomma% + {\noexpand\mathcode`,=\the\mathcode`,}% +\@tempcnta=\the\mathcode`,\@tempcntb=\the\mathcode`,% +\divide\@tempcnta by 4096\relax% +\multiply\@tempcnta by -4096\relax% +\advance\@tempcntb by \@tempcnta% +\edef\@tempb{\noexpand\mathcode`,=\the\@tempcntb}% +\advance\@tempcntb by 24576\relax% +\edef\@tempa{\noexpand\mathcode`,=\the\@tempcntb}% +\edef\regularmathcomma{% + \noexpand\def\noexpand\@mathcomma{\@tempa}% + \noexpand\@mathcomma}% +\def\@tempa{\if\space\next\else\mathord\fi\mathcomma}% +\let\ifFTY\iftrue% +\ifx\@tempa\sm@rtcomma% + \def\frenchmathcomma{% + \def\@mathcomma{\ifFTY\mathcode`\,="8000\fi}% + \@mathcomma}% +\else% +\edef\frenchmathcomma{% + \noexpand\def\noexpand\@mathcomma% + {\noexpand\ifFTY\@tempb\noexpand\fi}% + \noexpand\@mathcomma}% +\fi% +\frenchmathcomma% +\def\ifFTY{\ErrFrench}% +\def\nofrenchtypography{% + \let\ifFTY\iffalse\let\if@Back\ifFTY% +\expandafter\let\csname OT1\string\textbackslash \endcsname\undefined% + \notabbingaccents% + \nofrenchguillemets% + \nofrenchbguillemets% + \sloppy% + \nonfrenchspacing% + \regularmathcomma% + \eFr@Typofalse + }% +\def\frenchtypography{% + \let\ifFTY\iftrue\let\if@Back\ifFTY% +\expandafter\let\csname OT1\string\textbackslash \endcsname\@boiORI% + \let\ifLPA\iffalse% + \typedspaces% + \nowrongtypedspaces% + \tabbingaccents% + \englishquote\englishdoublequotes% + \nolabelsinmargin% + \frenchguillemets% + \frenchbguillemets% + \normalbrackets\todayguillemets% + \guillemetsinroman\guillemetsinarrays% + \edef\@tempa{\the\vfuzz}% + \fussy% + \vfuzz=\@tempa% + \frenchspacing% + \frenchmathcomma% + \eFr@Typotrue + }% +\def\nofrenchtranslation{% + \let\ifFTR\iffalse\@cORI}% +\def\frenchtranslation{% + \let\ifFTR\iftrue\captionsfrench}% +\let\frenchguillemets\relax\let\nofrenchguillemets\relax% +\let\frenchbguillemets\bbl@frenchguillemets% +\let\nofrenchbguillemets\bbl@nonfrenchguillemets% +\def\frenchguillemets{% + \let\ifFG\iftrue% + \let\guillemets\@LG% + \let\endguillemets\RG@% + \let\guillemotleft\f@guillemets% + \let\guillemotright\endf@guillemets% + \AFPinfsup}% +\def\nofrenchguillemets{% + \let\ifFG\iffalse% + \let\guillemotleft\@gotl% + \let\guillemotright\@gotr% + \let\guillemets\f@guillemets% + \let\endguillemets\endf@guillemets% + \DFPinfsup}% +\def\noeveryparguillemets{\let\ifEPG\iffalse% + \@desarm\let\@desarm\relax% + \def\guillemets{% + \f@issue% + \@fw{-53- % + % + % + % + }% + \bgroup\bgroup% + \def\guillemets{\bgroup% + \let\endguillemets\egroup}}% + }% +\def\everyparguillemets{\let\ifEPGR\iffalse% + \let\ifEPG\iftrue% + \let\guillemets\@LG% + \let\endguillemets\RG@% + }% +\def\everyparguillemetsremoved{% + \let\ifEPGR\iftrue}% +\def\@tempa{\global\let\ifCLA\iffalse}% +\ifx\ifCLA\undefined\expandafter\@tempa\fi% +\def\ConstantLayout{\global\let\ifCLA\iftrue% + \expandafter\let\csname ifCLA\languagename\endcsname\iftrue% + \def\@tempa{\let\ifbbbbfixlanguage\iftrue}% + \ifx\ifbbbbfixlanguage\undefined\@tempa\fi% + \def\@tempa{\ifbbbbfixlanguage\else% + \f@issue% + \@fw{-85- % + % + }\fi% + }% + \ifx\@nodocument\relax\@tempa% + \else\ifx\btxselectlanguage\undefined% + \PassOptionsToPackage{fixlanguage}{babelbib}% + \else\@tempa% + \fi% + \fi% + \let\ConstantLayout\relax}% +\def\nofrenchlayout{\nofrenchtrivsep% + \let\ifFLA\iffalse\@EIM}% +\def\frenchlayout{% + \let\ifFLA\iftrue\everyparguillemets% + \@FIM\@FL\let\@FL\empty\noautomaticlettrine% + \frenchtrivsep}% +\def\frenchwarnings{\let\ifFW\iftrue% + \frenchtrivsepwarnings}% +\def\nofrenchwarnings{\let\ifFW\iffalse% + }% +\def\nofrenchmacros{\let\ifFMA\iffalse}% +\def\frenchmacros{\let\ifFMA\iftrue\@ifm% + \let\@ifm\relax}% +}% +\long\def\usersfrenchoptions% + {\bgroup\makeatletter% + \expandafter\egroup% + \g@addto@macro\@ufo}% +\ifx\@ufo\undefined% + \let\@ufo\empty% +\fi% + \def\prim@s{\prime\futurelet\@let@token\pr@m@s}% + \def\pr@m@s{\ifx\@cilq\@let@token\expandafter\pr@@@s% + \else\ifx^\@let@token\expandafter\expandafter\expandafter\pr@@@t% + \else\egroup\fi% + \fi}% +\let\@fsORI\frenchspacing% +\def\frenchspacing{\@fsORI\ifECM\sfcode`\(=0\sfcode`\)=1000\fi}% +\catcode`<=\active\catcode`>=\active\catcode`'=\active% +\catcode`:=\active\catcode``=\active% +\let<=\inferieura\let>=\superieura% +\def\@Fstr{\def<{\@LSG}\def>{\@RSG}\def`{\@SLQ}\def'{\@SRQ}% + \def:{\deuxpoints}% + \let\dGs\empty}% +\def\@LiN{\let\@sogORI<\let\@sfgORI>\let\@lqORI`\let\@rqORI'% + \let\@dpORI:\@Fstr\@ifFTYfalse}% +\def\@LiB{\let<\@sogORI\let>\@sfgORI\let`\@lqORI\let'\@rqORI% + \let:\@dpORI\@ifFTYback}% +\catcode\lq:=12% +\let\@s@ORI\special% +\ifx\eTeXversion\undefined% +\def\newcount{\alloc@0\count\countdef\insc@unt}% +\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}% +\def\newbox{\alloc@4\box\chardef\insc@unt}% +\fi% +\let\ifFTY\iffalse% +\ifx\vref\undefined\else% +\@ifpackageloaded{varioref}{\def\@vrfCode{% + \@gG{vr}{vref}{/}{1}% + \@gG{vpr}{vpageref}{1}{1}% + \@gG{vprr}{vpagerefrange}{1}{2}% + \def\reftextpagerange##1##2{% + pages~\pageref{##1}\ifFTY -\else --\fi\pageref{##2}}% + }% + }{}% +\fi% +\def\ifFTY{\ErrFrench}% +\@ifclassloaded{beamer}{\let\l@chapter\empty% + \def\beamer@captiontemplate{\small\structure% + {\insertcaptionname\captionseparator\space}% + \insertcaption} + }{}% +\def\GOfrench{% + \def\special##1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{##1}% + \egroup\@ifFTYback}% + \let\@noBDfr\relax% + {\catcode\lq\<=\active\ifx<\undefined\else\global% + \let\@mLSG<\global% + \def\@LSG{\ifmmode\@mLSG\else\inferieura\fi}\fi}% + {\catcode\lq\>=\active\ifx>\undefined\else\global% + \let\@mRSG>\global% + \def\@RSG{\ifmmode\@mRSG\else\superieura\fi}\fi}% +\if@PMF\def\pmfrench{}\def\noeveryparguillemets{}\def\@stared{}% + \def\@desarm{}\def\@qquotes{}\def\@staring{}\def\@fniv2{}\fi% +\def\sm@llerthree{\protect\sm@ller\protect\sm@ller\protect\sm@ller} +\@ifundefined{smaller}{\def\sm@ller{\small}% + \let\sm@llerthree\scriptsize% + \def\l@rger{\large}}% + {\def\RSsmallest{4pt}% + \ifx\undefined\sm@ller% + \let\sm@ller\smaller\fi}% +\@ifundefined{footnotesize}{% + \def\footnotesize{\sm@ller\sm@ller}}{}% +\@ifundefined{Huge}{% + \def\Huge{\l@rger\l@rger\l@rger\l@rger\l@rger}}{}% +\@ifundefined{lettrinefont}{\let\lettrinefont\Huge}{}% +\let\sv@lf=\lettrinefont% +\ifx\@pdfcreator\undefined% + \else\addto\@pdfcreator{, with \frenchpack\space package}\fi% +\def\noresetatpart{\ifFLA\let\cl@part\empty\fi}% +\def\noresetatchapter{\ifFLA\let\cl@chapter\empty\fi}% +\@ifundefined{chapter}{}{}% +\@ifundefined{c@chapter}{\newcounter{chapter}}{\@addtoreset{chapter}{part}}% +\@ifundefined{quotation}{\def\quotation{}}{}% +\ifx\tableofcontents\undefined% + \else\let\@tocORI\tableofcontents\fi% +\ifx\pdfstringdef\undefined% + \else\let\contentslineORI\contentsline\fi% +\@ifundefined{l@chapter}{% +\def\@tempa{% + \def\l@chapter####1####2{\addpenalty{-\@highpenalty}% + \vskip 1.0em plus\p@\@tempdima 1.5em% + \begingroup% + \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth% + \bfseries \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip% + ####1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss ####2}\par% + \penalty\@highpenalty% + \endgroup}}% +\ifx\RIfM@\undefined\@tempa% + \else% + \ifx\fr@RIfM@cls\undefined\@tempa +\fi% +\fi}{}% +\@ifundefined{theHchapter}{}% + {\renewcommand{\theHchapter}{\arabic{part}.\arabic{chapter}}}% + \def\@gG##1##2##3##4{% + \def\@temp@{\expandafter\let\csname @##1@ORI\endcsname=}% + \expandafter\@temp@\csname ##2\endcsname% + \if##3\empty% + \if2##4% + \expandafter\def\csname ##2\endcsname####1####2% + {\protect\atgG{##1}{{####1}{####2}}}% + \else% + \if3##4% + \expandafter\def\csname ##2\endcsname####1####2####3% + {\protect\atgG{##1}{{####1}{####2}{####3}}}% + \else% + \expandafter\def\csname ##2\endcsname####1% + {\protect\atgG{##1}{{####1}}}% + \fi% + \fi% + \else% + \if/##3\expandafter\def\csname ##2\endcsname{\protect\atgH{##1}}% + \else% + \if2##4\expandafter\def\csname ##2\endcsname{\protect\atgN{##1}}% + \else\expandafter\def\csname ##2\endcsname{\protect\atgM{##1}}% + \fi% + \fi% + \fi}% + \def\atgG##1##2{\bgroup\@ifFTYfalse\@Fstr% + \expandafter\csname @##1@ORI\endcsname##2\egroup}% + \def\atgH##1##2{\bgroup\@ifFTYfalse\@Fstr% + \expandafter\csname @##1@ORI\endcsname{##2}\egroup}% + \def\atgM##1{\@ifNextNB[{\@gM@@{##1}}{\@gM@@{##1}[\empty]}% + }% + \def\atgN##1{\@ifNextNB[{\@gM@@@{##1}}{\@gM@@@{##1}[\empty]}% + }% + \def\@gM@@##1[##2]##3{\@gM@@@{##1}[##2]{##3}{}}% + \def\@gM@@@##1[##2]##3##4{\bgroup\@ifFTYfalse\@Fstr% + \xdef\@temp@{\noexpand\@gG@{##3}{##4}}\egroup% + \ifx\empty##2\let\@gG@=\empty% + \else\protected@edef\@gG@{[##2]}\fi% + \let\@typeset@protect\protect% + \protected@edef\@temp@{\noexpand\expandafter% + \noexpand\expandafter% + \noexpand\csname @##1@ORI\noexpand\endcsname% + \@temp@}\@temp@}% +\ifx\babel@sanitize@arg\undefined\else% +\def\babel@sanitize@arg##1{##1}% +\wlog{\frenchname.sty\string: use of the babel package force me to nullify % + \noexpand\babel@sanitize@arg.}% +\fi% +\ifx\ifthenelse\undefined\else\let\@iTeORI\ifthenelse% + \long\def\ifthenelse##1##2##3{\@ifFTYfalse\@iTeORI{##1}% + {\@ifFTYback##2}{\@ifFTYback##3}}% +\fi% +\ifx\texttt\undefined\else\@gG{xt}{texttt}{/}{1}% + \MakeRobustCommand{texttt}\fi% +\ifx\hyperbaseurl\undefined\else\@gG{hl}{hyperbaseurl}{/}{1}\fi% +\ifx\Ginclude@graphics\undefined\else\@gG{ig}% + {Ginclude@graphics}{/}{1}\fi% +\ifx\NAT@citex\undefined% + \ifx\cite\undefined\else\@gG{c}{cite}{1}{1}\fi% + \ifx\citeyear\undefined\else\@gG{cy}{citeyear}{/}{1}\fi% +\else% + \let\@cxORI\@citex% + \def\@citex[##1][##2]##3{\@ifFTYfalse% + \let\mbox\mboxORI% + \@cxORI[##1][##2]{##3}\aftergroup\@ifFTYback}% +\@gG{cin}{citation}{/}{1}% + \ifx\ifjb@index@bib\undefined\let\ifjb@index@bib\iffalse\fi% + \ifx\jb@lbibitem\undefined\else% + % + % + \def\jb@lbibitem[##1]##2{% + \gdef\jb@tempb{##1}% + \protected@xdef\jb@key{##2}% + \ifjb@index@bib% + \jb@call@index{aut}{##2}% + \jb@call@index{ed}{##2}% + \jb@call@index{org}{##2}% + \fi% + \endgroup}% + \@gG{fc}{fullcite}{1}{1}% + \fi% +\fi% +\ifx\nocite\undefined\else\@gG{nc}{nocite}{/}{1}\fi% +\ifx\backcite\undefined\else\@gG{bkc}{backcite}{//}{2}\fi% +\ifx\bibitem\undefined\else\let\@biORI\bibitem% + \def\bibitem{\@LiN\@ifNextNB[{\@bi@cb}{\@bi@ca}% + }% + \def\@bi@ca##1{\@biORI{##1}\@LiB}% + \def\@bi@cb[##1]##2{\@biORI[##1]{##2}\@LiB}% +\fi% +\expandafter\ifx\string\bt@@item\undefined% + \else\@gG{bti}{\string\bt@@item}{1}{1}% + \fi% +\ifx\vref\undefined\else% + \ifx\reftextvario\undefined\let\@vrfCode\undefined% +\fi\fi% +\ifx\ref\undefined\else\@gG{r}{ref}{/}{1}\fi% +\ifx\tag\undefined\else\@gG{tG}{tag}{/}{1}\fi% +\ifx\pageref\undefined\else\let\pageref@ORI\pageref% + \let\f@pageref\pageref\@gG{fpr}{f@pageref}{/}{1}% + \def\pageref{\ifFTY\expandafter\f@pageref\else% + \expandafter\pageref@ORI\fi}% +\fi% +\csname @vrfCode\endcsname% +\xdef\@lim{}\let\ifMOVING\iffalse% +\ifx\sf@@sub@label\undefined\else\@gG{ss}{sf@@sub@label}{/}{1}\fi% +\def\@temp@{% + \def\label{\protect\@LabeL}% +\def\r@LabeL{\ifx\@lim\empty% + \else\marginpar{\@lim@}\xdef\@lim{}% + \fi}% +\def\m@LabeL{\def\@setMGtrue{\let\ifMOVING\iftrue}% + \ifmmode\@setMGtrue% + \aftergroup\r@LabeL% + \fi% + \expandafter\t@LabeL}% +\def\@LabeL{\ifMOVING\expandafter\t@LabeL% + \else\m@LabeL% + \fi}% + \def\t@LabeL####1{\@ifFTYfalse\if@labelsinmargin\ifMOVING% + \xdef\@lim{\ifx\@lim\empty\else\@lim\@@par\relax\fi[####1]}% + \gdef\@lim@{\@ifFTYfalse\hbadness=\@M\tt\@lim\@ifFTYback}% + \else\marginpar{% + \@ifFTYfalse\hbadness=\@M\tt[####1]\@ifFTYback}\fi\fi% + % + \bgroup\@Fstr\@lORI{####1}\egroup\@ifFTYback}% + }% +\ifx\fr@RIfM@cls\undefined\else% +\let\@mtORI\maketitle% +\def\maketitle{{\@mtORI}}% +\fi% +\ifx\label\undefined\else\let\@lORI\label% + \@temp@% + \let\ltx@label\label% +\fi% +\ifx\@newl@bel\undefined\else\@gG{nl}{@newl@bel}{//}{3}\fi% +\def\@temp@{% + \let\@aclORI\addcontentsline% + \global\let\ifCG\iftrue% + \def\addcontentsline####1####2####3{\@ifFTYfalse\bgroup\@Fstr% + \@aclORI{####1}{####2}{####3}\egroup\@ifFTYback}% + }% +\@ifundefined{addcontentsline}{\gdef\addcontentsline##1##2##3{}}% + {\@temp@}% +\let\ifFrench\iffalse% +\def\@temp@{% + \def\index{\bgroup\ifFrench\@DFP\fi% + \expandafter\egroup\@iORI}% + }% +\ifx\index\undefined\else\let\@iORI\index% + \@temp@% +\fi% +\ifx\list\undefined\else% + \let\@liORI\list% +\fi% + \let\@topsepORI\topsep% + \let\@partopsepORI\partopsep% + \let\@itemsepORI\itemsep% + \let\@parsepORI\parsep% +\def\warn@seps{\def\topsep{\@w@s{\string\topsep}\@topsepORI}% + \def\partopsep{\@w@s{\string\partopsep}\@partopsepORI}% + \def\itemsep{\@w@s{\string\itemsep}\@itemsepORI}% + \def\parsep{\@w@s{\string\parsep}\@parsepORI}% + \def\@tempa{verse}\def\@tempb{quotation}% + \ifx\@tempa\@currenvir\let\@w@s\@gobble\else% + \ifx\@tempb\@currenvir\let\@w@s\@gobble\fi% + \fi% + }% +\def\@w@s##1{\ifFTSW\f@issue% + \@fw{-58- % + }[##1]\fi}% +\def\org@seps{\let\topsep\@topsepORI% + \let\partopsep\@partopsepORI% + \let\itemsep\@itemsepORI% + \let\parsep\@parsepORI% + }% +\def\list##1##2{\def\@inAlist{}\@liORI{##1}{% + \ifx\@trivlist\@tlORI\else\warn@seps\fi% + ##2\org@seps}}% +\ifx\@makecaption\undefined\else\let\@mcORI\@makecaption\fi% +\ifx\captionseparator\undefined% + \def\captionseparator{~--}% +\fi% +\let\ifFTY\iffalse% +\ifx\@contdelim\undefined\else% + \ifx\@memerror\undefined% + \let\@cdORI\@contdelim% + \def\@contdelim{\ifFTY\space\else\@cdORI\fi}% + \else% + \let\captionseparator\empty% + \let\captionfont\@conttfont% + \fi% +\fi% +\def\ifFTY{\ErrFrench}% +\ifx\captionfont\undefined% + \let\captionfont\emph% + \else\let\@cfORI\captionfont% + \def\captionlabelfont{\upshape}% + \def\captionfont{\itshape\@cfORI}% + \ifx\captionlabeldelim\undefined\else% + \let\captionlabeldelim\captionseparator% + \let\captionseparator\empty% + \fi% +\fi% +\def\@makecaption##1##2{\ifFTY% + \def\@secondofmany####1####2\void{####2}% + \def\@tempa{\@secondofmany##2\void}% + \ifx\@tempa\empty% + \let\captionseparator\empty% + \fi% + \@mcORI{##1}{\relax% + \captionfont{##2}}% + \else\@mcORI{##1}{##2}\fi}% +\def\@temp@{% + \def\thanks####1{\global\let\@makefntext\fr@makefntext% + \bgroup% + \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi\nobreak\fi% + \def\@footnotemark{\hbox{\@textsuperscript{\normalfont\,\@thefnmark}}}% + \fi\let\ifFTY\iffalse\@thORI{####1}% + \egroup}% + }% +\ifx\thanks\undefined\else\let\@thORI\thanks\@temp@\fi% +\let\ifFTY\iffalse% +\ifx\@makefnmark\undefined\else\let\@mfnmORI\@makefnmark% +\def\@makefnmark{\ifFTY\hbox{\@textsuperscript{\normalfont% + \ifx\thefootnote\relax\else\,\fi% + \@thefnmark}}% + \else\@mfnmORI\fi}% +\fi% +\def\@temp@{\long\def\fr@makefntext####1{% + \bgroup% + \ifFTY\def\@tempa{footnote}\let\@tfnORI\@thefnmark% + \ifx\@tempa\@mpfn% + \def\@thefnmark{% + % + \egroup\egroup% + \long\def\@tempa{\fnsymbol{footnote}}% + \ifx\@tempa\thefootnote% + \expandafter\raise+0.55ex% + \fi% + \hbox\bgroup\textnormal\bgroup% + \def\@temp@{% +\ifx\fr@RIfM@cls\undefined% +\ifx\thanks\relax\else\kern-1.1\parindent\fi% +\else \kern-\parindent% +\fi% + \@ifnextchar\relax{\def\@temp@{\hphantom{.}\kern+0.25em}}% + {\def\@temp@{.\kern+0.25em}}% + }% + \expandafter\@temp@\@tfnORI\@temp@% + }% + \leavevmode\kern+0.5em% + \else\def\@thefnmark{\@tfnORI\,}\fi% + \fi\@mfntORI{####1}\egroup}% + }% + \let\@mfntORI\@makefntext\@temp@% + \let\@makefntext\fr@makefntext% +\def\ifFTY{\ErrFrench}% +\let\@fntORI\@footnotetext% +\long\def\@footnotetext##1{\bgroup\let\if@labelsinmargin\iffalse% + \@fntORI{##1}\egroup}% +\let\@fnORI\footnote% +\def\footnote{\bgroup% + \def\index{\@ifnextchar[{\f@index}% + {\f@index@}% + }% + \def\f@index[####1]####2{\@ifFTYfalse\@iORI[####1]{####2}% + \@ifFTYback}% + \def\f@index@####1{\@ifFTYfalse\@iORI{####1}\@ifFTYback}% + \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi% + \nobreak\fi\fi% + \ifmmode\let\@fnORI\fr@footnote\fi% + \@ifNextNB[% + \@Footnote\@Fntnorm}% +\long\def\@Footnote[##1]##2{\@fnORI[##1]{##2}% + \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}% +\long\def\@Fntnorm##1{\@fnORI{##1}% + \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}% +\def\@Fntcoma{\ifFLA\@textsuperscript{,}\nobreak\fi}% +\def\@Fxloat##1[##2]{\@xfORI{##1}[##2]\csname @Fend\@currenvir\endcsname}% +\let\@fgeORI\figure\let\@efgeORI\endfigure% +\def\@temp@{\let\@fgeORI\figure% + \def\figure{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \@set@fr@fn@% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@fgeORI}}% +\ifx\figure\undefined\let\@temp@\relax\fi\@temp@% +\def\@Fendfigure{\let\@efgeORI\endfigure% + \def\endfigure{\@efgeORI% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}}% +\ifx\endfigure\undefined\let\@Fendfigure\relax\fi% +\let\@cnORI\caption% +\def\@tablescaption{\@dblarg\@t@blescaption}% +\let\mboxORI\mbox% +\def\mbox##1{\leavevmode\hbox{\protect\@set@fr@fn@##1}}% +\def\@set@fr@fn@{\ifFrench\let\footnote\fr@footnote\fi}% +\def\fr@footnote{\@ifNextNB[\fr@fn@{\fr@fn@[]}% + }% +\def\fr@fn@[##1]##2{\footnotemark% + \f@issue% + \@fw{-8- % + % + }[##2]% + }% +\def\@t@blescaption[##1]##2{\let\cur@fn\footnote% + \let\footnote\fr@footnote% + \@cnORI[##1]{##2}\let\footnote\cur@fn}% +\def\@temp@{% + \let\@tbeORI\table% + \def\table{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \ifFLA\begingroup% + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}\c@mpfootnote\z@% + \ifx\@captype\undefined\def\@captype{table}\fi% + \let\caption\@tablescaption% + \let\@footnotetext\@mpfootnotetext\fi% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@tbeORI}% + \expandafter\let% + \expandafter\@dbtbeORI\csname table*\endcsname% + \expandafter\def\csname table*\endcsname{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \ifFLA\begingroup% + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}\c@mpfootnote\z@% + \ifx\@captype\undefined\def\@captype{table}\fi% + \let\caption\@tablescaption% + \let\@footnotetext\@mpfootnotetext\fi% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@dbtbeORI}% + }% +\ifx\table\undefined\let\@temp@\relax\fi\@temp@% +\def\@Fendtable{% + \let\@etORI\endtable% + \def\endtable{\ifFLA\par% + \vskip-\lastskip% + \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% + \footnoterule\unvbox\@mpfootins\fi% + \fi\@etORI\ifFLA\endgroup\fi% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}% + }% +\ifx\endtable\undefined\let\@Fendtable\relax\fi% +\def\@temp@{\def\endtable{\ifFLA\endgroup% + \expandafter\let\csname endtable*\endcsname\endtable% + \fi}% + }% +\ifx\endtable\relax\@temp@% +\fi% +\expandafter\def\csname @Fendtable*\endcsname{% + \expandafter\let% + \expandafter\@dbetORI\csname endtable*\endcsname% + \expandafter\def% + \csname endtable*\endcsname{\ifFLA\par% + \vskip-\lastskip% + \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% + \footnoterule\unvbox\@mpfootins\fi% + \fi\@dbetORI\ifFLA\endgroup\fi% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}% + }% +\expandafter\ifx\csname endtable*\endcsname\relax% + \expandafter\let\csname endtable*\endcsname\endtable% +\fi% +\expandafter\ifx\csname\string\table\endcsname\undefined\else% + \expandafter\let\expandafter\BfigureORI\csname\string\figure\endcsname% + \expandafter\def\csname\string\figure\endcsname{\@Fendfigure\BfigureORI}% + \expandafter\let\expandafter\BtableORI\csname\string\table\endcsname% + \expandafter\def\csname\string\table\endcsname{\@Fendtable\BtableORI}% +\fi% +\def\drapeaufg{\ifFLA% + \raggedright\hbadness=6000% + \rightskip=0.3em plus 0.75em\hfuzz=0.4em\relax% + \let\enddrapeaufg\par\fi}% +\def\drapeaufgIN{\ifFLA% + \raggedright\hbadness=6000% + \rightskip=0.3em plus 0.75em\hfuzz=6em% + \lefthyphenmin=12\righthyphenmin=10\relax% + \let\enddrapeaufgIN\par\fi}% +\def\drapeaufd{\ifFLA\raggedleft% + \let\enddrapeaufd\par\fi}% +\def\drapeaufdIN{\ifFLA% + \raggedleft\hfuzz=6em% + \lefthyphenmin=12\righthyphenmin=10\relax% + \let\enddrapeaufdIN\par\fi}% +\ifx\undefined\Hy@PDFDef\let\Hy@PDFDef\pdfstringdef\fi% +\ifx\undefined\Hy@PDFDef\else% + \let\@hpdORI\Hy@PDFDef% + \def\Hy@PDFDef##1##2{\@ifFTYfalse\afterassignment% + \@Fstr\@hpdORI{##1}{##2}\@ifFTYback}% +\fi% +\ifx\pdfstringdef\undefined\else% + \let\pdfstringdef\Hy@PDFDef% +\fi% + \let\@lti\labelitemi\let\@ltii\labelitemii% + \let\@ltiii\labelitemiii\let\@ltiv\labelitemiv% + \@ifo% + \let\@ifo\undefined% + \@doFh% + \let\@doFh\undefined% + \let\hyphex\undefined\let\frhyphex\undefined% + \let\@temp@\undefined% + \let\ifFTY\iffalse\let\ifFTR\iffalse% + \let\ifFLA\iffalse\let\ifFMA\iffalse\let\ifFH\iffalse% +\def\@tempa##1{\o@everypar{\rl@everypar##1}}% +\ifx\@tempa\everypar\let\TeXeverypar\o@everypar% +\else\let\TeXeverypar=\everypar% +\fi% + \ifx \TeXXeTstate \undefined% + \edef \next {\ifx \beginL \undefined 00\else 01\fi}% + \else% + \edef \next {\ifnum \TeXXeTstate = 0 00\else 01\fi}% + \fi% + \if \next\let\beginL\relax\let\beginR\relax% + \else% + \edef\@fepORI{{\the\TeXeverypar}}% + \def\@SetBFWdirection{\csname begin% + \beginFWdirection\endcsname}% + \TeXeverypar={\@SetBFWdirection% + \let\@SetBFWdirection\relax% + {\let\@nodocument\relax% + \@fepORI}}% + \fi% + \let\ErrFrench\@Ffnt\def\@Ffnt##1{}% +\ifx\undefined\babel@core@loaded% +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- this file and other auxiliary files require to % + use the following}}}% +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- LaTeX packages: \frenchpack!}}}% +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- check \protect\protect\protect\usepackage% + \protect\space or remove these files. % + Typesetting is aborted!}% + \protect\stop}}% +\fi% +\@finput{frpatch.sty}% + \ifx\FSfd@patch\FSfd\else + \f@issue% + \@fw{-42- % + % + % + }% + \batchmode\@@end% + \fi% + \let\@Ffnt\ErrFrench\let\ErrFrench\undefined% + \IfFileExists{\frenchname.cfg}{% + \f@issue% + \@fw{-48- % + % + }% + \@finput{\frenchname.cfg}}{}% + \beginlanguage}% + \let\@dORI\document% + \def\document{% + \ifx\noxcomment\undefined\else% + \global\let\@x@hk\xcomment@hook\global\noxcomment\fi% + \ifx\btxselectlanguage\undefined% + \else\ifx\babel@savevariable\undefined% + \f@issue\@fw{-87- % + % + % + }% + \stop% + \fi% + \fi% + \ifx\@bglngpk\babel@savevariable% + \else% + \f@issue\@fw{-71- % + % + % + }% + \fi\let\@bglngpk\undefined% + \@dORI% + \GOfrench% + \let\GOfrench\undefined% + \ifx\noxcomment\undefined\else\let\xcomment@hook\@x@hk% + \expandafter\xcomment@hook\fi}% +\@makeother`\@makeother<\@makeother>\@makeother'% +\let\enddocumentasusual\enddocument% + \def\enddocument{\def\@tempa{\AtEndDocument{\french\f@clearpage% + \global\let\ifCLA\iffalse% + \let\ifCLAfrench\iffalse% + \endfrench}}% + \csname f@lastpage\endcsname% + \@CGroup% + \ifFLA% + \@tempa% + \def\@tempa{empty}\ifx\@specialstyle\@tempa% + \else\gdef\@specialstyle{french}\fi% + \fi% + \let\GOfrench\relax% + \switchtolanguage\englishTeXmods% + \let\f@clearpage\clearpage% +\ifx\lastpage@putlabel\undefined% +\else\let\clearpage\relax% + \let\lastpage@putlabelORI\lastpage@putlabel% + \def\lastpage@putlabel{\addtocounter{page}{+1}\lastpage@putlabelORI% + \addtocounter{page}{-1}}% +\fi% + % + \ifx\undefined\babel@core@loaded\else% + \ifx\@testdef\undefined\else% + \@gG{@td}{@testdef}{//}{3}\fi% + \fi% + % +\ifx\ConfigureToc\undefined\else% + \let\@ifFTYfalse\relax\let\@ifFTYback\relax% + \@Fstr\let\@Fstr\relax% +\fi% + \enddocumentasusual% + }% +\let\@whatUCH\relax% +\def\allowfulluchyph{\@noBDfr% + \uchyph=1\let\@whatUCH\allowfulluchyph% + \let\@uchbox\empty}% +\def\allowuchyph{\@noBDfr% + \uchyph=1\let\@whatUCH\allowuchyph% + \let\@uchbox\hbox}% +\def\disallowuchyph{\@noBDfr% + \uchyph=-1% + \let\@whatUCH\disallowuchyph\let\@uchbox\hbox}% +\def\notthyphenation{\@noBDfr% + {\tt\hyphenchar\font=-1}% + \let\ifTTH\iffalse}% +\def\tthyphenation{\@noBDfr% + {\tt\hyphenchar\font=`\-}% + \let\ifTTH\iftrue}% +\let\@whatUCH\allowuchyph% +\let\ifTTH\iffalse% +\let\ifFH\iffalse% +\def\hyphex#1{% + \if#1\empty% + \else% + \edef\@excn{#1}\fi% + \let\if@FE\iftrue}% +\def\frhyphex{% + \if@PMF\else\hyphex{\frenchname}\fi}% +\def\@eatDP{\@ifNextNB:{\@gobble}{}}% +\def\f@ffrench{\ifx\listoffigures\relax\else% + \figurename~\thefigure\ifFTY\captionseparator\fi\fi% + \ifFTY\expandafter\@eatDP\fi}% +\def\f@tfrench{\ifx\listoftables\relax\else% + \tablename~\thetable\ifFTY\captionseparator\fi\fi% + \ifFTY\expandafter\@eatDP\fi}% +\def\unnumberedcaptions#1{\@noBDfr% + % + \expandafter\let\csname listof#1s\endcsname\relax% + \ifx\listoffigures\relax\ifx\listoftables\relax% + \let\unnumberedcaptions\undefined% + \fi\fi% + }% +\@ifundefined{captionsnames}{\def\captionsnames{\relax}\let\@tempa\@currname% +\xdef\@currname{fenglish}\@finput{fenglish.sty}\let\@currname\@tempa}{}% +\def\languagename{french}% +\let\ifnonenglishheadings\iftrue% +\def\tocreduite#1#2{}% +\def\@sEAT#1#2{\@sORI*{\sommairename}}% +\def\@cEAT#1#2{\@chORI*{\sommairename}}% +\def\@smr[#1]{\let\@tempa\contentsname% + \let\contentsname\sommairename% + \ifx\tableofcontents\undefined\else% + \begingroup\ifcase #1 0% + \or \let\l@paragraph\tocreduite% + \let\l@subparagraph\tocreduite% + \or \let\l@subsubsection\tocreduite% + \let\l@paragraph\tocreduite% + \let\l@subparagraph\tocreduite% + \or \let\l@subsection\tocreduite% + \let\l@subsubsection\tocreduite% + \let\l@paragraph\tocreduite% + \let\l@subparagraph\tocreduite% + \else \let\l@section\tocreduite% + \let\l@subsection\tocreduite% + \let\l@subsubsection\tocreduite% + \let\l@paragraph\tocreduite% + \let\l@subparagraph\tocreduite% + \fi% + \let\@sORI\section\let\@chORI\chapter% + \let\section\@sEAT\let\chapter\@sEAT% + \let\@ToCisNOT\relax% + \def\@starttoc##1{% + \ifx\fr@RIfM@cls\undefined% + \else\chapter*{\sommairename}% + \fi% + \begingroup\makeatletter% + \immediate\openin\@inputcheck \jobname.##1 % + \if@filesw \expandafter\newwrite\csname tf@##1\endcsname\fi% + \ifeof\@inputcheck \@Ffnt{\jobname.##1}% + \if@filesw\immediate\openout \csname tf@##1\endcsname% + \jobname.##1\relax\fi% + \else\immediate\closein\@inputcheck \relax\@@input \jobname.##1 % + \@ifundefined{@ToCisNOT}{% + \if@filesw\immediate\openout \csname tf@##1\endcsname% + \jobname.##1\relax\fi}{}% + \fi\global\@nobreakfalse \endgroup}% + \ifx\fr@RIfM@cls\undefined% + \else\def\contentsname{}% + \fi% + \tableofcontents\endgroup% + \def\tableofcontents{% + \ifx\pdfstringdef\undefined% + \else\let\contentsline\contentslineORI\fi% + \addtocontents{toc}{\protect% + \let% + \protect\@ToCisNOT\protect\empty}% + \begingroup% + \def\@starttoc####1{\begingroup% + \makeatletter\@input{\jobname.####1}% + \if@filesw\immediate\openout \csname tf@####1\endcsname% + \jobname.####1\relax\fi% + \global\@nobreakfalse \endgroup}% + \@tocORI\endgroup}% + \fi% + \let\contentsname\@tempa% + }% +\def\sommaire{\@ifNextNB[{\@smr}{\@smr[3]}% + }% +\def\@temp@{\let\if@twocolumn\iffalse}% +\@ifundefined{if@twocolumn}{\@temp@}{}% +\@ifundefined{abstract}{% + \def\abstract{\let\@w@s\@gobble% + \if@twocolumn\section*{\abstractname}% + \else\sm@ller\begin{center}% + \textbf{\abstractname\vspace*{-.5em}\vspace*{\z@}}% + \end{center}\quotation\fi}% + \def\endabstract{\if@twocolumn\else\endquotation\fi}}{}% +\@ifundefined{resume}{% +\def\resume{% + \let\@w@s\@gobble% + \abstract}% +\let\endresume\endabstract% + }{}% +\def\@tempa{% +\def\endkeywords{\@noBDfr}% +\def\keywords{\@noBDfr% + \let\@w@s\@gobble% + \quotation\noindent\sm@ller{% + \ifx\fr@RIfM@cls\undefined% + \else\let\textbf\textsc\fi% + \kwname}% + \let\endkeywords=\endquotation}% + }% +\@ifundefined{keywords}{\@tempa}% + {\ifx\fr@RIfM@cls\undefined% + \else\@tempa% + \fi% + }% +\@ifundefined{endkeywords}{\let\endkeywords\relax}{}% +\def\motsclef{\keywords\relax% + \def\endmotsclef{\endkeywords}}% +\let\ifFTR\iftrue% +\ifx\texteuro\undefined\else% + \let\textcurrencyORI\textcurrency% + \def\textcurrency{\ifFTR\expandafter\texteuro% + \else\expandafter\textcurrencyORI% + \fi}% +\fi% +\def\annexe {\@ann{\appendixname}}% +\def\annexes{\@ann{\appendixname s}}% +\def\@ann#1{\@noBDfr\leavevmode% + \ifx\fr@RIfM@cls\undefined\else% + \let\chaptername\appendixname% + \fi% + \ifx\chapter\undefined\else% + \par\setcounter{chapter}{0}\setcounter{section}{0}% + \def\@chapapp{\appendixname}\def\thechapter{\Alph{chapter}}% + \addcontentsline{toc}{chapter}{\protect#1}% + \fi}% +\@ifundefined{@restonecolfalse}{\def\@restonecolfalse{}% + \def\@restonecoltrue{}}{}% +\@ifundefined{@mkboth}{\def\@mkboth#1#2{}}{}% +\def\glossaire{\@glo{% + \glossaryname}}% +\def\glossaires{\@glo{% + \glossaryname s}}% +\def\@glo#1{\ifx\chapter\undefined\else% + \setcounter{chapter}{0}\setcounter{section}{0}% + \@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn\fi% + \hbox{}% + \clearpage% + \ifx\fr@RIfM@cls\undefined% + \chapter*{#1% + \@mkboth{\MakeUppercase{#1}}{\MakeUppercase{#1}}% + }% + \addcontentsline{toc}{chapter}{\protect#1}% + \else\chapter*{#1}% + \fi% + \ifx\undefined\@glossaryfile\else% + \immediate\closeout\@glossaryfile% + \ifx\undefined\glossaryentry% + \long\def\glossaryentry##1##2{\noindent-- ##1\par}% + \fi% + \ifx\undefined\theglossary% + \let\theglossary\description% + \let\endtheglossary\enddescription% + \let\scan@allowedfalse\makeatother% + \def\pfill##1 {}% + \def\@pgf[##1]{\@finput{##1}}% + \def\printglossary{\@ifNextNB[% + {\@pgf}{\@pgf[\jobname.gls]}}% + \fi% + \fi\fi}% +\def\datefrench{% +\def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi% + \ifnum\day=1\relax 1\ier% + \else \number\day\fi% + \space\ifcase\month\or janvier\or f\'evrier\or mars\or % + avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or % + octobre\or novembre\or d\'ecembre\fi \space\number\year}% +}\datefrench% +\if@filesw + \def\ordinalSecondNam{{s}econd}% + \def\ordinalSecondName{{s}econde}% +\else% + \def\ordinalSecondNam{{d}euxi\`eme}% + \let\ordinalSecondName\ordinalSecondNam% +\fi% + \def\@osn#1#2{\expandafter\ifx\csname#1osn\endcsname% + \relax#2\else\csname#1osn\endcsname\fi}% + \def\ordinal#1{\ifcase\value{#1}\or {p}remier% + \or\@osn{#1}{\ordinalSecondNam}\else\ordin@l{#1}\fi}% + \def\ordin@l#1{\ifcase\value{#1}\or\or\or % + {t}roisi\`eme\if@filesw{\protected@write\@auxout{}{% + \protect\expandafter% + \protect\gdef\protect\csname#1osn% + \protect\endcsname% + {{d}euxi\`eme}}}% + \fi% + \or {q}uatri\`eme\or {c}inqui\`eme\or {s}ixi\`eme\or % + {s}epti\`eme\or {h}uiti\`eme\or {n}euvi\`eme\or {d}ixi\`eme\or % + {o}nzi\`eme\or {d}ouzi\`eme\or {t}reizi\`eme\or {q}uatorzi\`eme\or % + {q}uinzi\`eme\or {s}eizi\`eme\or {d}ix-septi\`eme\or {d}ix-huiti\`eme\or % + {d}ix-neuvi\`eme\or {v}ingti\`eme\fi}% + \def\ordinale#1{\ifcase\value{#1}\or {p}remi\`ere% + \or\@osn{#1}{\ordinalSecondName}\else\ordin@l{#1}\fi}% + \def\Ordinal{\expandafter\uppercase\ordinal}% + \def\Ordinale{\expandafter\uppercase\ordinale}% +\def\captionsfrench{% + \ifFTR% + \ifx\captionsnames\captionsfrench\else% + \let\@tdORI\today% + \let\f@fORI\fnum@figure% + \let\f@tORI\fnum@table% + \let\@cnsORI\captionsnames% + \def\pagename{page}% + \def\refname{R\'ef\'erences}% + \def\abstractname{R\'esum\'e}% +\ifx\bibname\undefined\else% + \def\bibname{Bibliographie}% +\fi% +\ifx\btxselectlanguage\undefined% + \csname bibsfrench\endcsname% +\fi% + \def\contentsname{Table des mati\`eres}% + \def\listfigurename{Table des figures}% + \def\listtablename{Liste des tableaux}% +\ifx\listalgorithmname\undefined\else% + \def\ALG@name{algorithme}% + \def\listalgorithmname{Liste des \ALG@name s}% +\fi% + \def\indexname{Index}% + \def\seename{\emph{voir}}% + \def\seealsoname{\emph{voir aussi}}% + \def\figurename{\textsc{Fig.}}% + \def\tablename{\textsc{Tab.}}% + \def\sommairename{Sommaire}% + \def\partname{% + \ignorespaces\Ordinale{part}\space partie% + \@RPtNoInDoc\noexpand\@RPtNoInToc}% + \def\glossaryname{Glossaire}% + \def\kwname{\textbf{Mots-cl\'e} : }% + \def\draftname{- \noexpand\351preuve -}% + \def\prefacename{Pr\'eface}% +\ifx\proofname\undefined\else\def\proofname{D\'emonstration}\fi% +\ifx\fr@RIfM@cls\undefined% + \let\fnum@figure\f@ffrench% + \let\fnum@table\f@tfrench% + \def\@RPtNoInToc{}% + \def\@RPtNoInDoc{\def\thepart{}}% + \else\def\@RPtNoInToc##1.{.}% + \def\@RPtNoInDoc##1\thepart{}% +\fi% +\ifx\opening\undefined\else% + \def\headtoname{}% + \def\ccname{c.c. }% + \def\enclname{P.j. }% + \def\PSname{P.-S. :}% + \def\Objectname{Objet :}% + \def\YourRefname{v/r\'ef. :}% + \def\OurRefname{n/r\'ef. :}% + \def\emailname{m.\'el. :}% +\fi% +\ifx\slidename\undefined\else% + \def\slidename{Transparent}% + \def\listslidename{Liste des transparents}% +\fi% +\ifx\notesname\undefined\else% + \def\notesname{Notes}% +\fi% + \def\chaptername{Chapitre}% + \def\appendixname{Annexe}% + \let\captionsnames\captionsfrench% + \fi% + \let\today\todayfrench% +\def\@cORI{\@cnsORI% + \let\today\@tdORI% + \let\fnum@figure\f@fORI% + \let\fnum@table\f@tORI}% +\fi% +}% +\iffrenchbibliography% + \ifx\@rbibstyid\undefined% + \let\@rbibstyid\empty% + \ifx\jb@pkg@name\undefined\else% + \def\@rbibstyid{jb}% + \fi% + \fi% + \ifx\bibsfrench\undefined% + \edef\@tempa{fr\@rbibstyid bib.ldf}% + \IfFileExists{\@tempa}{% +\f@issue% +\@fW{ -65- % + % + % + }\@finput{\@tempa}}{}% + \fi% + \ifx\bibsenglish\relax% + \edef\@tempa{en\@rbibstyid bib.ldf}% + \InputIfFileExists{\@tempa}{}{}% + \fi% +\fi% +\let\@tlORI\@trivlist% +\def\frenchtrivsepwarnings{\let\ifFTSW\iftrue}% +\def\nofrenchtrivsepwarnings{\let\ifFTSW\iffalse}% +\long\def\frtrivseplengths#1{% + \nofrenchtrivsepwarnings% + \long\def\fr@tsl{#1}% + }% +\def\fr@tsl{\setlength{\parsep}{0.2ex plus 0.1ex minus 0.1ex}% + \setlength{\itemsep}{0.2ex plus 0.1ex minus 0.1ex}% + \setlength{\topsep}{0.4ex plus 0.2ex minus 0.2ex}% + \setlength{\partopsep}{1.6ex plus 0.8ex minus 0.8ex}% + }% +\def\frenchtrivsep{\ifFLA\def\@trivlist{% + \fr@tsl\@tlORI}% + \fi} +\def\nofrenchtrivsep{\let\@trivlist\@tlORI}% +\@ifundefined{@afterindenttrue}{\let\@afterindenttrue\relax% + \let\@afterindentfalse\relax}{}% +\let\@aifORI\@afterindentfalse% +\edef\@piORI{\the\parindent}% +\begingroup \catcode `| =0 \catcode `[ = 1 \catcode`] =2% + \catcode `\{=12 \catcode `\}=12 \catcode`\\=12% + |gdef|@xversatim#1\end{versatim}[#1|end[versatim]]% + |endgroup% +\let\@FIM@\relax% +\def\@FIM@{\ifCG\else\ifFLA\ifEPG\ifEPGR\else\leftguillemets\fi\fi\fi\fi}% +\let\checkitemguillemets\@FIM@% +\def\fr@idf{\let\@afterindentfalse\@afterindenttrue\@afterindenttrue}% +\def\fr@nidf{\let\@afterindentfalse\@aifORI\@afterindentfalse}% +\ifx\titlespacing\undefined% + \let\which@indent\fr@idf% +\else\let\which@indent\fr@nidf% +\fi% +\def\fr@lbi{\def\labelitemi{\@FIM@--}\def\labelitemii{\@FIM@--}% + \def\labelitemiii{\@FIM@--}\def\labelitemiv{\@FIM@--}% + }% +\long\def\frlabelitems#1{\ifFLA\long\def\fr@lbi{#1}% + \fr@lbi\fi}% +\def\@FIM{% + \fr@lbi% + \def\indentfirst{\ifFLA\fr@idf\fi}% + \def\nonindentfirst{\ifFLA\fr@nidf\fi}% + \which@indent% + % + \def\labelfrenchenumi{\@FIM@\quando={\arabic{enumi}}}% + \def\labelfrenchenumii{\@FIM@\quando={\arabic{enumii}}}% + \def\labelfrenchenumiii{\@FIM@\quando={\arabic{enumiii}}}% + \def\labelfrenchenumiv{\@FIM@\quando={\arabic{enumiv}}}% + \def\order{\ifnum \@enumdepth >3 \@toodeep\else% + \advance\@enumdepth \@ne% + \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list% + {\csname labelfrench\@enumctr\endcsname}% + {\usecounter{\@enumctr}% + \ifFLA% + \addtolength{\leftmargin}{0.9em}% + \fi% + \def\makelabel####1{\hss\llap{####1}}}\fi}% + \let\endorder =\endlist% + % + % + \def\versatim{\bgroup\let\@w@s\@gobble% + \ifFLA% + \let\dospecials\@dsversa% + \def\@xobeysp{\leavevmode{}\space}% + \ifx\verbatim@font\undefined\let\verbatim@font=\tt\fi% + \let\@ttORI\verbatim@font% + \def\verbatim@font{\@ttORI% + \verse% + \vskip-2\parskip% + \vskip-1\partopsep\vskip-\topsep% + \leavevmode% + \leftskip=-2\itemindent% + \parindent=2\itemindent% + \parskip\z@% + \pretolerance=\@M\tolerance=\@M\hbadness=\@M% + \hyphenchar\the\font=`\-}% + \let\tt=\verbatim@font% + \fi% + \let\@xverbatim\@xversatim% + \verbatim}% + \def\endversatim{\endverse% + \ifTTH\else\hyphenchar\the\font=-1\fi% + \endverbatim\ifFLA\vskip+1\partopsep\fi\egroup}% + \@ifundefined{vers}{% + \def\@vers##1{\def\@tempa ####1##1{\leavevmode\null####1% + \endgroup}\@tempa}% + \def\vers{% + \begingroup% + \def\@xobeysp{\ifFLA\else\penalty\@M\fi\space}% + \catcode``=13 \@noligs \tt% + % + \ifFLA\let\dospecials\@dsversa\fi% + \let\do\@makeother\dospecials\@vobeyspaces \frenchspacing% + \@vers}}{}% + \@ifundefined{verbatimfile}% + {\def\verbatimfile##1{\begingroup\@verbatim\frenchspacing + \@vobeyspaces\input ##1\endgroup}}{}% +}% +\def\@temp@{% +\let\@ps@fp\ps@firstpage% +\def\@opening{% +\let\@wideletter\relax% +\let\emailadd\@empty\let\@yourref\@empty\let\@ourref\@empty% +\let\@object\@empty% + \@ifundefined{wideletter}{% + \def\@wideletter{}\def\wideletter{% + \def\@wideletter{\leftskip-0.25\indentedwidth}}}{}% + \@ifundefined{email}{% + \def\email####1{\def\emailadd{\texttt{####1}}}}{}% + \@ifundefined{emailadd}{\def\emailadd{}}{}% + \@ifundefined{yourref}{% + \def\yourref####1{\def\@yourref{####1}}}{}% + \@ifundefined{@yourref}{\def\@yourref{}}{}% + \@ifundefined{ourref}{% + \def\ourref####1{\def\@ourref{####1}}}{}% + \@ifundefined{@ourref}{\def\@ourref{}}{}% + \@ifundefined{object}{% + \def\object####1{\def\@object{####1}}}{}% + \@ifundefined{@object}{\def\@object{}}{}% + \@ifundefined{PS}{% + \def\PS####1{{\raggedright\PSname\space ####1}}}{}% + \def\ps@firstpage{\ifFLA% + \advance\topmargin by -20\p@% + % + \def\@oddhead{\ifx\undefined\formhead\else% + \bgroup\hss\formhead\hss\egroup\fi}% + \def\@oddfoot{\raisebox{-45\p@}[\z@]% + {\hbox to \textwidth{% + \ifcase \@ptsize\relax% + \normalsize% + \or \sm@ller% + \or \footnotesize% + \fi% + % + \ifx\undefined\formfoot\hfill\else% + \bgroup\hss\formfoot\hss\egroup\fi% + }}\hss}% + \def\@evenhead{}\def\@evenfoot{}% + \else\@ps@fp\fi}% + \long\def\opening####1{% + \ifFLA% + \advance\indentedwidth by -0.25\longindentation% + \advance\longindentation by 0.22\textwidth% + \advance\parindent by 1.5em% + % + \let\nopagenumbers\relax% + \thispagestyle{firstpage}% + % + \raggedbottom% + \ifx\@empty\fromlocation\location{Le}\fi% + \ifx\@empty\fromaddress\let\fromaddress\space\fi% + {\raggedright\hspace*{-0.25\indentedwidth}% + \parbox[t]{0.5\textwidth}{\ignorespaces% + \vbox to 0\p@{\fromaddress\vss}}% + \\*[1.75\baselineskip]% + \par}% + \ifx\@empty\toname% + % + {\raggedleft\bgroup\fromlocation\space\@date\egroup\par}% + \else% + {\raggedleft\begin{tabular}{l}\ignorespaces% + \toname\\ \toaddress\\*[6\parskip]% + \fromlocation\space\@date\end{tabular}\par}% + \fi% + \ifx\@empty\@ourref\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \OurRefname\space\@ourref \par}% + \fi% + \ifx\@empty\@yourref\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \YourRefname\space\@yourref \par}% + \fi% + \ifx\@empty\@object\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \textbf{\Objectname}\space\@object \par}% + \fi% + \par\vspace*{3\parskip}% + \noindent####1\hfill\vspace*{3\parskip}% + \@wideletter% + \else\@oORI{####1}% + \fi}}% +\def\@closing{% + \def\closing{\fclosing@[9]}% + \def\fclosing{\@ifNextNB[{\fclosing@}{\fclosing@[9]}% + }% + \long\def\fclosing@[####1]####2{% + \ifFLA% + \par% + \vspace{\parskip}\stopbreaks% + \ignorespaces ####2\\[####1\medskipamount]% + \ifx\@empty\fromaddress\else% + \hspace*{-0.25\indentedwidth}% + \hspace*{\longindentation}\fi% + {\raggedright\begin{tabular}{l}\ignorespaces% + \ifx\@empty\fromsig% + \fromname% + \else \fromsig \fi% + \ifx\@empty\emailadd\else\\{\footnotesize% + \emph{\emailname} \emailadd}\fi% + \strut\end{tabular}}\par% + \vskip 0pt plus 1fil% + \else\@cloORI{####2}% + \fi}% + \def\endletter{\ifFLA\vskip 0pt plus 3fil\fi% + \@elORI}}% +\@ifundefined{opening}{\def\@opening{}\def\@closing{}}% + {\let\@oORI\opening\let\@cloORI\closing% + \let\@elORI\endletter% + \@opening\@closing}% +}% +\ifx\opening\undefined\let\@temp@\relax\fi% +\@temp@% +\let\ifFLA\iffalse% +\def\@temp@{% +\def\figurette{\@noBDfr% + \ifx\@fgeORI\undefined\figure\fi% + \ifFLA\bgroup% + \def\@xfloat####1[h]{% + \expandafter\let\csname end####1\endcsname\endfigurette% + \vskip\intextsep\def\@captype{####1}\parindent\z@}% + \@fgeORI[h]\else\figure[h]\fi}% +\def\endfigurette{\@noBDfr% + % + \ifFLA\vskip\intextsep\egroup\else\@efgeORI\fi% + \ifx\@lim\empty\else\marginpar{\@lim@}\xdef\@lim{}\fi% + \let\ifMOVING\iffalse}% + }% +\ifx\figure\undefined\def\@temp@{}\fi% +\@temp@% +\def\@tempa{\let\fr@RIfM@cls\undefined}% +\let\fr@RIfM@cls\RIfM@% + \ifx\RIfM@\undefined\else% + \expandafter\ifx\csname @classname\endcsname\relax\@tempa% + \else\def\@tempb#1#2#3#4\@nil{% + \if#1a\if#2m\if#3s\else\@tempa\fi% + \else\@tempa\fi\else\@tempa\fi}% + \expandafter\@tempb\@classname\@nil% + \fi% + \fi% +\def\@temp@{\def\ps@french{\if@fancyplain\ps@plain@fancy\else\ps@plain\fi}}% +\ifx\ps@fancyplain\undefined% + \ifx\fr@RIfM@cls\undefined\def\ps@french{}% + \else\def\ps@french{\global\topskip\normaltopskip}% + \fi% +\else\@temp@% +\fi% +\let\ps@frenchORI\ps@french% +\let\@sdORI\secdef% +\def\nofrenchpagestyle{\let\secdef\@sdORI}% +\def\frenchpagestyle{% + \def\secdef{\ifFLA\thispagestyle{french}\fi\@sdORI}% + }% +\frenchpagestyle% +\ifx\aliaspagestyle\undefined% +\def\nobeginingfolio{\let\ps@french\ps@empty}% +\else% +\def\nobeginingfolio{\let\ps@french\ps@empty% + \aliaspagestyle{chapter}{empty}% + }% +\fi% +\def\beginingfolio{\let\ps@french\ps@frenchORI% + \frenchpagestyle}% +\@ifundefined{nopagenumbers}{% + \def\nopagenumbers{\ifFLA\pagestyle{empty}% + \thispagestyle{empty}\fi}% + }{}% +\def\ifFLA{\ErrFrench}% + \newif\ifnonvoid% +\def\@desarm{% + \newbox\@FrBoxi\newbox\@FrBoxii\newbox\@FrBoxiii% + \newbox\@FrBoxiiii\newbox\@FrBoxvi\newbox\@FrBoxvii\newbox\@FrBoxQuotes% + \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi% + \def\@setpartozero{\widowpenalty=\z@\clubpenalty=\z@% + \interlinepenalty=\z@\brokenpenalty=\z@\displaywidowpenalty=\z@}% + \def\nonvoidtrue{\let\ifnonvoid\iftrue}% + \def\nonvoidfalse{\let\ifnonvoid\iffalse}% + \def\@transfervbox##1##2{\nonvoidtrue% + \loop% + \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% + \unskip}% + \ifvoid\@FrBoxiii\nonvoidfalse\fi% + \ifnonvoid% + \setbox\@FrBoxii=\vbox{\unvbox##2\box\@FrBoxiii}% + \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii% + \repeat}% + \def\@transferaddvbox##1##2{\nonvoidtrue% + \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% + \unskip}% + \setbox##2=\vbox{\box\@FrBoxiii}% + \setbox##1=\box\@FrBoxi% + \loop% + \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% + \unskip}% + \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi% + \ifnonvoid% + \setbox\@FrBoxii=\vbox{\unvbox##2% + \hbox to \@FrDimen{\copy\@FrBoxQuotes\unhbox\@FrBoxiii}}% + \setbox##1=\box\@FrBoxi\setbox##2=\box\@FrBoxii% + \repeat}% + \def\@sendtopage##1{\nonvoidtrue% + \loop% + \setbox\@FrBoxi=\vbox{\unvbox##1\global\setbox\@FrBoxiii=\lastbox% + \unskip}% + \ifvoid\@FrBoxiii\nonvoidfalse\setbox##1=\box\@FrBoxi\fi% + \ifnonvoid% + \unhbox\@FrBoxiii\unskip\break% + \setbox##1=\box\@FrBoxi% + \repeat}% + \def\@stared{\egroup% + \@transfervbox\@FrBoxvi\@FrBoxvii% + \@transferaddvbox\@FrBoxvii\@FrBoxvi% + \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi% + \global\setbox\@FrBoxiiii=\lastbox\unskip}% + \@transfervbox\@FrBoxvii\@FrBoxvi% + \noindent \@sendtopage\@FrBoxvi% + \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}% + \def\@fniv2{\egroup% + \@transfervbox\@FrBoxvi\@FrBoxvii% + \@transferaddvbox\@FrBoxvii\@FrBoxvi% + \setbox\@FrBoxvii=\vbox{\unvbox\@FrBoxvi% + \global\setbox\@FrBoxiiii=\lastbox\unskip}% + \@transfervbox\@FrBoxvii\@FrBoxvi% + \noindent \@sendtopage\@FrBoxvi% + \setbox\@FrBoxvii=\vbox\bgroup\@setpartozero% + \noindent \unhbox\@FrBoxiiii\unskip\unskip\unpenalty}% + \def\@qqguill{\relax}% + \def\@staring{\global\setbox\@FrBoxQuotes=\hbox to 0.81em{\@qqguill}\egroup% + \setbox\@FrBoxvi=\vbox{\unvbox\@FrBoxvii% + \global\setbox\@FrBoxiiii=\lastbox\unskip}% + \@transfervbox\@FrBoxvi\@FrBoxvii% + \noindent\@sendtopage\@FrBoxvii% + \setbox\@FrBoxvi=\vbox\bgroup\@setpartozero% + \hangindent=\wd\@FrBoxQuotes\hangafter=1% + \setbox\@FrBoxvii=\hbox{\unhcopy\@FrBoxiiii\unskip\unskip% + \unpenalty}% + \@FrDimenS=\@FrDimen \advance\@FrDimenS by -2em% + \ifvoid\@FrBoxiiii\indent\copy\@FrBoxQuotes% + \else% + \parindent=\z@% + \ifdim \wd\@FrBoxvii>\@FrDimenS \unhbox\@FrBoxvii\break% + \else \unhbox\@FrBoxvii% + \fi\fi}% + \def\@qquotes{\setbox\@FrBoxvii=\vbox\bgroup\@setpartozero}% +}% +\def\@EIM{\def\labelitemi{\@lti}\def\labelitemii{\@ltii}% + \def\labelitemiii{\@ltiii}\def\labelitemiv{\@ltiv}% + \let\@afterindentfalse\@aifORI\@afterindentfalse% + \parindent\@piORI}% +\let\@FL\relax% +{\catcode`.=12\catcode`p=12\catcode`t=12\gdef\auTo@gf#1.#2pt{#1}}% +\def\@FL{% +\def\automaticlettrine{% + \ifx\lettrinefontname\undefined% + \def\@tempa####1 ####2\@@{% + \def\lettrinefontname{####1}}% + \edef\@tempb{ }% + \expandafter\@tempa\fontname% + \expandafter\font\@tempb\@@\fi% + \let\sv@lf=\lettrinefont}% +\def\noautomaticlettrine{% + \let\lettrinefontname=\undefined% + \let\lettrinefont=\sv@lf}% +\ifx\lettrine\undefined% +\def\lettrine{\par% + \let\@tempa\relax% + \def\@tempa{\def\@fbr{\fboxrule=\z@}% + \protect\@lettrineS% + }% + \@tempa}% +\if@PMF\def\@Ettrine[##1]{##1}\let\@ettrine\relax\else% + \def\@ettrine##1##2\par{\bgroup\parskip=\z@% + {\ly\xdef\bef@ly{\the\font}}% + \let\newpage=\relax\let\clearpage=\relax% + \let\cleardoublepage=\relax% + \edef\bef@fnt{\the\font}% + \ifCG\def\bef@let{}% + \else\def\bef@let{\bef@fnt\def\ly{\bef@ly}% + \leftguillemets\space}% + \fi\@@ttrine{##1}{##2}\egroup}% + \def\@@ttrine##1##2{\ifFLA\def\@@ttrnxt{\@@@trine##1\@@{##2}}% + \else\def\@@ttrnxt{##1\space\ignorespaces##2}% + \fi% + \@@ttrnxt\unskip\par% + \f@par% + \@nobreakfalse}% + \def\@@@trine##1##2\@@##3{\@fbr\TeXeverypar{}% + \ifx\lettrinefontname\undefined\let\auTo@lh\undefined% + \else\let\auTo@lh\lettrinehang% + \ifx\auTo@lh\undefined\def\auTo@lh{2}\fi% + \bgroup% + \ifx\@htfreq\undefined\newdimen\@htfreq\newdimen\@htfbase\fi% + \setbox0=\hbox{M}\@htfreq=\ht0% + \def\dimentocount####1{\expandafter\auTo@gf\the####1}% + \font\@fontreq=\lettrinefontname% + \setbox0=\hbox{\@fontreq ##1}\@htfbase=\ht0% + \advance\@htfreq by \auTo@lh\baselineskip% + \advance\@htfreq by \lineskip% + \advance\@htfreq by -\baselineskip% + \multiply\@htfreq by 100 % + \multiply\@htfbase by 100 % + \divide\@htfreq by \dimentocount\@htfbase% + \multiply\@htfreq by \@m% +\global\font\lettrinefont=\lettrinefontname\space scaled \dimentocount\@htfreq% + \egroup% + \fi% + \setbox0\hbox{% + {\shortstack{\bef@let{\lettrinefont##1}\relax% + \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}% + \@FrDimenH=\ht0\advance\@FrDimenH by\dp0% + \@FrDimenS=\@FrDimenH\advance\@FrDimenS by\fboxsep% + \ifdim\baselineskip\superieura0pt% + \divide\@FrDimenS by\baselineskip% + \fi\@FrCount=\@FrDimenS% + \@FrDimen=\baselineskip\multiply\@FrDimen by-\@FrCount% + \advance\@FrDimen by\@FrDimenH% + \ifdim\@FrDimen>0.025\baselineskip \advance\@FrCount by 1\fi% + \ifx\auTo@lh\undefined\else\@FrCount=\auTo@lh\fi% + \ifx\lettrinehang\undefined\else\@FrCount=\lettrinehang\fi% + \@FrDimenI=\wd0% + \ifdim\fboxrule=\z@\else\advance\@FrDimenI by2\fboxrule% + \advance\@FrDimenI by2\fboxsep\fi% + \@FrDimenS=\fontdimen2\font\advance\@FrDimenI by+3\@FrDimenS% + \ifdim\fboxrule=\z@\advance\@FrDimenI by-0.30\@FrDimenS\fi% + \advance\@FrCount by -1% + \@FrDimen=\@FrCount\baselineskip% + \advance\@FrCount by 1% + \ifdim\fboxrule=\z@\else\advance\@FrDimen by -\fboxrule\fi% + \@FrDimenH=-\dp0% + \setbox0\hbox{\ifdim\fboxrule=\z@\kern-\fboxsep\fi% + \fbox{\shortstack{{% + \def\@LSG{\f@issue\@fw{-5- % + % + }}% + \let\@RSG=\@LSG\bef@let% + \lettrinefont\raise-\@FrDimen\hbox{##1}\relax% + \ifdim\fontdimen\@ne\font>\z@\/\space\fi}}}}% + \box0\@FrDimen=\@FrDimenH% + \advance\@FrDimenH by-\@FrCount\baselineskip% + \advance\@FrDimenH by \lineskip% + \ifdim\fboxrule=\z@\else\advance\@FrDimenH by -\fboxrule\fi% + \vspace*{\@FrDimenH}% + \hangindent=\@FrDimenI% +\ifx\lettrinehang\undefined% + \ifdim\@FrDimen<-0.025\baselineskip% + \advance\@FrCount by\@ne% + \divide\@FrDimen by-\baselineskip% + \advance\@FrCount by\@FrDimen% + \fi% +\fi% + \ifnum\@FrCount=1\f@issue\@fw{-6- % + }\fi% + \hangafter=-\@FrCount% + \noindent\kern-2.5\@FrDimenS% + \def\@temp@{##2}% + \ifx\empty\@temp@\f@issue\@fw{-7- % + % + }% + \else{\scshape ##2}\fi\def\@temp@{##3}% + \ifx\@temp@\empty\else\space\ignorespaces##3\fi% + }% + \def\@Ettrine[##1 ##2 ##3]##4\par{\bgroup\parskip=0pt% + {\ly\xdef\bef@ly{\the\font}}% + \let\newpage=\relax% + \edef\bef@fnt{\the\font}\@gN% + \ifFLA\def\bef@let{\bef@fnt\def\ly{\bef@ly}##1\space}% + \else ##1\space\fi% + \@@ttrine{##2}{{\def\@aft@let{##3}\ifx\@aft@let\empty% + \else##3\space\fi% + \ignorespaces ##4}}\egroup}% +\fi% +\def\flettrine{\par% + \let\@tempa\relax% + \def\@tempa{\def\@fbr{}\protect\@lettrineS}% + \@tempa}% +\def\@lettrineS{\ifx\@FrDimenH\undefined% + \newdimen\@FrDimenH\newdimen\@FrDimenI\fi% + \ifx\@FrDimenS\undefined\newdimen\@FrDimenS\fi% + \@ifNextNB[{\@Ettrine}{\@ettrine}% + }% +\fi% + }% +\def\nonfrench{\ifFrench\@DFP% + \def\@temp@{\@AFP}% + \else\@NoFr\def\@temp@{\relax}\fi% + \def\endnonfrench{\@temp@\ignorespaces}% + \ignorespaces}% +\def\@dospecialsfrench{\do\`\do'\@dsversa}% +\def\@dsversa{% + \do\ \do\\\do\{\do\}\do\$\do\&\do\#\do\|\do\^^K\do\_\do\^^A\do\%\do\~%$emacs + \do\!\do\?\do\;\do\:\do\<\do\>\do\^\do\"}% +\def\@sanitizefrench{% + \@saORI% + \@makeother\!\@makeother\?\@makeother\;\@makeother\:% + \@makeother\`\@makeother'\@makeother\<\@makeother\>% + \@makeother\^\@makeother\"}% +\def\@ifNextNB#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet% + \@tempc\@Fifnch}% + \def\@Fifnch{\ifx \@tempc \@tempe\let\@tempd\@tempa% + \else\let\@tempd\@tempb\fi\@tempd}% +\def\@ifNextNBc#1#2#3#4{\let\@tempe=#1\let\@tempf=#2% + \def\@tempa{#3}\def\@tempb{#4}\futurelet% + \@tempc\@Fifnchc}% + \def\@Fifnchc{\ifx\@tempc\@tempf\@tempa\else\@Fifnch\fi}% +\def\@skiplastspace{\ifdim\lastskip>\z@\unskip\penalty\@M\fi}% +\let\ifFrench\iftrue% +\def\@AFP{% + \let\dospecials\@dospecialsfrench% + \let\@sanitize\@sanitizefrench% + \AFPdp\AFPinfsup}% +\def\AFPdp{\ifFrench\catcode`\!=\active\catcode`\?=\active% + \catcode`\;=\active\catcode`\:=\active\fi}% +\let\AFPinfsup\relax% +\def\AFPinfsup{\ifFrench\ifFG\catcode`\<=\active\catcode`\>=\active\fi\fi}% +\def\AFPq{\ifFrench\catcode`'=\active\catcode``=\active\fi}% +\def\AFPdq{\catcode`"=\active}% +\def\@DFP{% + \DFPq\DFPinfsup\ifLPA\else\DFPdp% + \let\dospecials\@dsORI% + \let\@sanitize\@saORI\fi}% +\def\DFPq{\ifFrench\catcode``=12\catcode`'=12\fi}% +\let\DFPinfsup\relax% +\def\DFPinfsup{\ifFrench\catcode`<=12\catcode`>=12\fi}% +\def\DFPdp{\ifFrench\catcode`;=12\catcode`:=12% + \catcode`!=12\catcode`?=12\fi}% +\def\DFPdq{\catcode`"=12}% +\let\@doORI\dots\let\@ldoORI\ldots% +\def\TeXdots{\@noBDfr% + \ifFTY\let\dots\@doORI\let\ldots\@ldoORI\fi}% +\def\noTeXdots{\@noBDfr% + \ifFTY\def\dots{...}\def\ldots{...}\fi}% +\let\@hatORI\^\let\@treORI\"% +\def\idotless{\@noBDfr% + \ifFTY% + \def\^##1{{\expandafter\@hatORI\ifx ##1i\i\else##1\fi}}% + \def\"##1{{\expandafter\@treORI\ifx ##1i\i\else##1\fi}}% + \fi}% +\def\iwithdot{\@noBDfr% + \let\^\@hatORI\let\"\@treORI}% +\let\ifLPA\iffalse% +\let\ifFG\iffalse% +\def\@tempa#1{\f@issue% + \@fw{-13- % + }[#1]% + \let\@tempb\next\let\@tempc\empty}% +\let\@tempb\empty% +\AFPdp% +\let\ifWTS\iffalse% +\def\@WTS{\relax\ifmmode\else\ifhmode% + \ifdim\lastskip>\z@\unskip\fi% + \fi\fi}% +% > for XeLaTex ****** +% de gloss-french +\def\intercharpunct{% +% \lccode\lccode8217=8217 + \XeTeXinterchartokenstate=1 + \XeTeXcharclass `\! \french@punctthin + \XeTeXcharclass `\? \french@punctthin + \XeTeXcharclass `\; \french@punctthin + \XeTeXcharclass `\: \french@punctthick + \XeTeXinterchartoks \z@ \french@punctthin = {\nobreak\thinspace}% + \XeTeXinterchartoks \z@ \french@punctthick = {\nobreakspace}% + \XeTeXinterchartoks 4095 \french@punctthin = {\efr@unskip\nobreak\thinspace}% + \XeTeXinterchartoks 4095 \french@punctthick = {\efr@unskip\nobreakspace}% + } +\def\nointercharpunct{% +% \lccode8217=\z@ + \XeTeXcharclass `\! \z@ + \XeTeXcharclass `\? \z@ + \XeTeXcharclass `\; \z@ + \XeTeXcharclass `\: \z@ + \XeTeXinterchartokenstate=0 + } +\newcount\eF@nonchar +\newif\ifeF@active@punct +\newif\ifeF@xetex@punct +\ifdefined\XeTeXinterchartokenstate + \eF@xetex@puncttrue\eF@active@punctfalse + \ifdim\the\XeTeXversion\XeTeXrevision pt<0.99994pt + \eF@nonchar=255 \relax + \else + \eF@nonchar=4095 \relax + \fi +\fi +\ifeF@xetex@punct + \newXeTeXintercharclass\french@punctthin % ! ? ; et autres + \newXeTeXintercharclass\french@punctthick % : +% + \def\efr@unskip{\ifhmode\ifdim\lastskip>\z@\unskip\fi\fi} + \def\xpg@nospace#1{#1} +% + \ifeFr@Typo\protect\intercharpunct\else\nointercharpunct\fi +\fi% +% < for XeLaTex ****** + +\ifeF@NoEnc + \@finput{efrenchu.tex} % pour guillemets utf8 + \AtBeginDocument{\nointercharpunct} +\fi + +\def\@tempc{% +\def;{\ifFTY\protect\@PV% + \else\ifWTS\@WTS\fi\string;\fi}% + }% +\def\@tempd{\@tempa{\string;}}% +\ifx;\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PV{\relax\ifmmode\string;\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi\string;\fi}% +\def\@tempc{% +\def:{\ifFTY\protect\@DP% + \else\ifWTS\@WTS\fi\string:\fi}% + }% +\def\@tempd{\@tempa{\string:}}% +\ifx:\undefined\def\@tempd{}\fi\@tempd\@tempc% +\@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}% +\def\@DP{\relax\ifmmode\string:\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi% + \string:% + \@beginparpenalty=\@M\relax% + \fi}% +\def\@wu#1{\@@wu#1,\void}% +\def\@@wu#1,#2{\ifx#1\empty\else\@@@wu #1\fi% + \def\@tempa{\@@wu#2}% + \ifx#2\void\else\expandafter\@tempa\fi% + }% +\def\@@@wu#1=#2{\expandafter\edef\csname #1\endcsname:{#2\string:}}% +\ifx\hhline\undefined\else\let\@hhlORI\hhline% + \def\hhline{\omit\ifFrench\let:\@cidp\fi% + \expandafter\@gobble\@hhlORI}% +\fi% +\def\@tempc{% +\def!{\ifFTY\protect\@PE% + \else\ifWTS\@WTS\fi\string!\fi}% + }% +\def\@tempd{\@tempa{\string!}}% +\ifx!\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PE{\ifmmode\string!\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi% + \string!\fi}% +\def\@tempc{% +\def?{\ifFTY\protect\@PI% + \else\ifWTS\@WTS\fi\string?\fi}% + }% +\def\@tempd{\@tempa{\string?}}% +\ifx?\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PI{\relax\ifmmode\string?\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M% + \hskip +0.09em plus 0.07667em% + \fi% + \fi% + \string?\fi}% +\ifx\@tempb\next\let\AFPdp\empty\f@issue% + \@fw{-13b- % + \@txt@msg{la double ponctuation est alors d\'esactiv\'ee}}\fi% +\let\ifLPA\ErrFrench% +\let\ifFG\ErrFrench% +\let\@aORI\@array% +\def\@array{}% +\DFPdp\AFPdp% +\ifx\AFPdp\empty\else% +\def\@array{\let\noexpand\@tempa=\noexpand!% + \def\noexpand!{\noexpand\string\noexpand!}% + \edef\noexpand\@tempb{##1}% + \let\noexpand!=\noexpand\@tempa}% +\fi% +\catcode`<=13\catcode`>=13% +\let\ifArG\iftrue% +\edef\@array[#1]{\edef\noexpand\@tempb{#1}% + \noexpand\ifArG\noexpand\else% + \noexpand\ifnum\catcode`\noexpand<=\active% + \noexpand\ifmmode\let\noexpand<\noexpand\inferieura% + \let\noexpand>\noexpand\superieura% + \noexpand\fi\noexpand\fi\@array% + \noexpand\fi% + \noexpand\@aORI[{\noexpand\@tempb}]}% +\let\@eaORI\eqnarray% +\def\eqnarray{\ifArG\else\ifnum\catcode`<=\active% + \let<\inferieura\let>\superieura% + \fi\fi\@eaORI}% +\ifx\@@array\undefined\else% + \let\@@aORI\@@array% +\def\@@array{\ifArG\else\ifnum\catcode`<=\active% + \let<\inferieura\let>\superieura% + \fi\fi\@@aORI}% +\fi% +\catcode`<=12\catcode`>=12% +\DFPdp% +\let\@CGroup\relax\let\@@FG\relax% +\let\@LG\relax% +\def\@og{\leavevmode\ifdim\lastskip>\z@\unskip% + \penalty-9\hskip0.35em minus 0.35em\fi% + \raise0.27ex\hbox{$\scriptscriptstyle\ll$}\,\nobreak\ignorespaces}% +\def\@cg{\@skiplastspace\nobreak\,\leavevmode\raise0.27ex% + \hbox{$\scriptscriptstyle\gg$}}% +\let\ifFG\iftrue% +\AFPinfsup% +\def\@gN{\def<##1{\ifx ##1<\leftguillemets\else\@LSG##1\fi}% + \def>##1{\ifx ##1>\rightguillemets\else\@RSG##1\fi}}% +\let\@oldog\<\let\@oldcg\>% +\def\@ogx<{\ifFTY\@og\else\@DOG\fi}% +\def\@cgx>{\ifFTY\@cg\else\@DFG\fi}% +\def\@@LFG{\ifFTY\ifmmode\protect\@LSG\else% + \ifIEB\@SOC\else\@LSG\fi% + \fi% + \else\@LSG\fi}% +\global\let\ifCG\iftrue% +\let\inside@an@expand\empty% +\def\if@mid@expandable#1#2{\let\inside@an@expand\relax\relax% + \ifx\inside@an@expand\relax% + \let\inside@an@expand\empty% + \expandafter#2% + \else\expandafter#1% + \fi}% +\def\stop@mid@expandable{\if@mid@expandable{% + \errmessage{This macro is not expandable, please % + \string\protect \space it.}\stop}{}% + }% +\def\@LG{\relax\if@mid@expandable{\@@@LG}{\@@LG}}% +\def\@@LG{\ifFTY\ifmmode\@DOG\else\@@@OG\fi\else\@DOG\fi}% +\def\@@@LG{\relax\noexpand <<\relax} +\def\@SifDOGon{\global\let\ifDOG\iftrue}% +\def\@SifDOGoff{\global\let\ifDOG\iffalse}\@SifDOGoff% +\def\@@@OG{\ifCG\ifFLA\ifEPG\else% + \hbadness=10000% + \ifhmode\newline\fi% + \bgroup\def\par{}% + \@FrDimen=\textwidth% + \if@twocolumn\tolerance=5000\pretolerance=5000% + \advance\@FrDimen by -\columnsep% + \divide\@FrDimen by 2\fi% + \@ifundefined{@inAlist}{}{% + \advance\@FrDimen by -\leftmargin\advance\@FrDimen by -\rightmargin% + \advance\@FrDimen by -\listparindent\hsize=\@FrDimen}% + \@qquotes\fi\fi\fi% + \@oguills% + \ifFLA\ifEPG\bgroup\def\@currenvir{guillemets}% + \let\@CGroup\egroup\fi\fi% + \ifCG\ifFLA\ifEPG% + \xdef\@epORI{{\the\TeXeverypar}}% + \TeXeverypar={\@epORI% + \ifEPGR\else% + \@oguills% + \@ifundefined{@OuvOpen}{% + \,% + }{}% + \fi}% + \fi\fi% + \else\@SifDOGon\@AG% + \ifFLA\ifEPG\else\def\@qqguill{\@oguills}\@staring\fi\fi\fi% + \global\let\ifCG\iffalse% + \ifUSP\kern+0.13em\penalty\@M\ignorespaces% + \else\kern-0.19em\relax\penalty\@M\fi}% +\def\@AG{\ifAG\let\@LP\@RP\let\@gotl\@gotr% + \fi}% +\def\f@guillemets{<<}% +\def\@oguills{% + \bgroup\@ifundefined{@OuvOpen}{\def\@OuvOpen{}% + \@ifundefined{ly}{\@og}% + {\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi% + \ifx\@gotl\undefined\char\rq\@LP% + \else\@gotl\fi\kern+0.20em}}% + \else\hbox{{\ly\@LP\kern-0.20em\@LP\kern+0.20em}}\fi% + \nobreak}}{}\egroup}% +\def\@@RFG{\ifFTY\ifmmode\protect\@RSG\else% + \ifIEB\@SFC\else\@RSG\fi% + \fi% + \else\@RSG\fi}% +\def\@SifFTY{\let\ifFTY\iffalse}% +\def\@RG{\relax\if@mid@expandable{\@@@RG}{\@@RG}}% +\def\@@RG{\ifmmode\@SifFTY\fi\ifFTY\@@FG\else\@DFG\fi}% +\def\@@@RG{\relax\noexpand >>\relax} +\def\endf@guillemets{>>}% +\ifx\RIfM@\undefined\else% + \edef\@emORI{\the\everymath\relax}% + \edef\@edORI{\the\everydisplay\relax}% + \f@issue\@fW{^^J -18- % + % + % + }% + % + \everymath={\csname nofrenchguillemets\endcsname\@emORI}% + \everydisplay={\csname nofrenchguillemets\endcsname\@edORI}% +\fi% +\DFPinfsup% +\ifx\grammar\undefined% + \else\let\@grORI\grammar\def\grammar{\nofrenchguillemets\@grORI}% +\fi% + +\def\@@FG{\ifCG\f@issue% + \@fw{-14- % + }\fi% + \ifUSP\unskip\kern+0.13em\else% + \ifdim\lastskip>\z@\unskip% + \penalty\@M% + \space% + \penalty\@M% + \fi% + \kern-0.19em% + \fi% + \xdef\@tempd{\@currenvir}\def\@tempe{guillemets}% + \ifx\@tempd\@tempe% + \@CGroup\@fguills% + \else\ifEPG% + \@fguills% + \def\@CGroup{\egroup\@gobble}% + \ifFLA% + \f@issue% + \@fw{-49- % + }% + \fi% + \else\@CGroup\@fguills% + \fi% + \fi% + \ifDOG\ifFLA\ifEPG\else\@fniv2\fi\fi% + \@SifDOGoff\else\@@@FG\fi% + }% +\let\guillemets\@LG% +\def\RG@{\ifFTY\ifCG% + \else\@RG% + \fi% + \@CGroup\@@@FG\relax\fi}% +\let\endguillemets\RG@% +\def\@@@FG{\ifFLA\ifEPG\ifx\@epORI\undefined\else% + \expandafter\TeXeverypar=\@epORI\fi% + \xdef\@epORI{{}}% + \else\@staring\@stared\egroup\fi\fi% + \global\let\ifCG\iftrue\let\@CGroup\relax}% +\def\@fguills{\@ifundefined{ly}{\@cg}% + {\nobreak\leavevmode\ifECM\hbox{{\ifGIAF\else\@gfnt\fi\kern+0.20em% + \ifx\@gotr\undefined\char\rq\@RP% + \else\@gotr\fi}}% + \else\hbox{{\ly\kern+0.20em\@RP\kern-0.20em\@RP}}\fi}% +\ifGIAF\else\ifdim\fontdimen\@ne\font>\z@\/\fi\fi% + }% +\def\@normalrq{\relax\ifmmode^\prime\else\@frq\fi}% +\def\@frq{{\catcode`'=12{\ifNEQ\ifECM\char\rq001% + \else\char\rq023\hbox{}\fi% + \else\string'\fi}}}% +\AFPq% +\def`{\protect\@PLQ}% + \let\@PLQ@\lq% + \def\@PLQ{\ifmmode\string`\let\@PLQ@\relax% + \else\ifNED\let\@PLQ@\@PLQn\fi% + \ifhmode\let\@PLQ@\@PLQn\fi% + \fi\@PLQ@}% + \def\@PLQn{\@ifNextNB`{\protect\@OQ}% + {\ifNEQ\ifECM\char\rq000\hbox{}% + \else\char\rq022\hbox{}\fi% + \else\string`\fi}% + }% + \def\@OQ`{\ifNED\protect\@LG\else\string``\fi}% +\def'{\protect\@PRQ}% + \let\@PRQ@\rq% + \def\@PRQ{\ifmmode\let\@PRQ@\@SRQ@% + \else\ifhmode\let\@PRQ@\@PRQn\fi% + \fi\@PRQ@}% + \def\@@FGp'{\@@FG}% + \def\@PRQn{\let\@PRQ@\rq% + \@ifNextNB'{\ifNED\let\@PRQn@\@@FGp% + \else\let\@PRQn@\relax\string'\fi\@PRQn@}% + {\protect\@normalrq}}% +\let\ifNED\iffalse% +\let\ifNEQ\iffalse% +\def\noenglishdoublequotes{\@noBDfr% + \AFPq\let\ifNED\iftrue% + \ifFrench\let\@cilq='\fi}% +\def\noenglishquote{\@noBDfr% + \AFPq\let\ifNEQ\iftrue% + \ifFrench\let\@cilq='\fi}% +\DFPq% +\def\untypedspaces{\@noBDfr% + \let\ifUSP\iftrue}% +\def\typedspaces{\@noBDfr% + \let\ifUSP\iffalse}% +\let\if@labelsinmargin\iffalse% +\def\englishdoublequotes{\@noBDfr% + \let\ifNED\iffalse% + \DFPq\ifFrench\let\@cilq='\fi}% +\def\englishquote{\@noBDfr% + \let\ifNEQ\iffalse\DFPq% + \ifFrench\let\@cilq='\fi}% +\def\labelsinmargin{\@noBDfr% + \let\if@labelsinmargin\iftrue}% +\def\nolabelsinmargin{\@noBDfr% + \let\if@labelsinmargin\iffalse}% +\def\letpunctuationactivefor{\@noBDfr% + % + \global\let\ifLPA\iftrue% + \def\wrongtypedspaces{\@noBDfr% + \global\let\ifWTS\iftrue}% + }% +\def\wrongtypedspaces{\f@issue\@fw{-17- % + % + % + }}% +\def\nowrongtypedspaces{\@noBDfr% + \global\let\ifWTS\iffalse% + \ifLPA\DFPdp% + \fi\global\let\ifLPA\iffalse}% +\def\tabbingaccents{\@noBDfr% + \let\@ifTA\iffalse}% +\def\notabbingaccents{\@noBDfr% + \let\@ifTA\iftrue}% +\AFPq% +\def\@temp@{% + \def\tabbing{\def\@tempa{\let`=\lq\let'=\@normalrq}% + \ifNED\@tempa\fi\ifNEQ\@tempa\fi% + \def\@tempa{\let\@ifTA\iftrue}% + \ifFTY\else\expandafter\@tempa\fi% + \ifFTY\@ifTA\else% + \let\@trjORI\@tabrj\let\@tlabORI\@tablab% + \let\@ORIrj=\`\let\@ORIlab=\'% + \def\@@tabrj{\ifcat\@tempc\space\let\@tempa=\@trjORI% + \else\let\@tempa=\@ORIrj\fi\@tempa}% + \def\@@tablab{\ifcat\@tempc\space\let\@tempa=\@tlabORI% + \else\let\@tempa=\@ORIlab\fi\@tempa}% + \def\@tabrj{\futurelet\@tempc\@@tabrj}% + \def\@tablab{\futurelet\@tempc\@@tablab}% + \fi\fi\@tgORI}% + }% +\ifx\tabbing\undefined% + \else\let\@tgORI\tabbing% + \@temp@% +\fi% +\DFPq% +\AFPinfsup% +\def\EBCDICbrackets{\@noBDfr% + \let\ifIEB\iftrue% + \ifFG% + \def<{\protect\@LFG}% + \def\@LFG{\@ifNextNB<{\protect\@OG}{\@@LFG}}% + \def\@OG<{\ifnum\catcode`< =\active\expandafter\@LG% + \else\@@LFG\@@LFG\fi}% + \def>{\protect\@RFG}% + \def\@RFG{\@ifNextNB>{\protect\@FG}{\@@RFG}}% + \def\@FG>{\ifnum\catcode`> =\active\expandafter\@RG% + \else\@@RFG\@@RFG\fi}% + \fi}% +\long\def\@BracesOrNot[#1]{\ifmmode\@PreserveBraces[#1]% + \else\expandafter#1\fi}% +\let\@fobeyspaces\empty% +\long\def\@genG#1#2#3{\@fobeyspaces% + \ifx#2#3\expandafter\protect\csname @#1G\endcsname% + \else\csname @@#1FG\endcsname\expandafter\@BracesOrNot% + \expandafter[\expandafter{% + \expandafter#3\expandafter}\expandafter]% + \fi}% +\edef\@genGL{\noexpand\@genG{L}\noexpand<}% +\edef\@genGR{\noexpand\@genG{R}\noexpand>}% +\let\@bobeyspaces\empty +\def\normalbrackets{\@noBDfr% + \let\ifIEB\iffalse% + \ifFG% + \def<{\ifnum\catcode`< =\active\@bobeyspaces\expandafter\expandafter% + \expandafter\@genGL\ifmmode\relax\fi% + \else\@LSG\fi}% + \def>{\ifnum\catcode`> =\active\@bobeyspaces\expandafter\expandafter% + \expandafter\@genGR\ifmmode\relax\fi% + \else\@RSG\fi}% + \fi}% +\DFPinfsup% +\let\ifFG\iffalse% +\def\ancientguillemets{\@noBDfr% + \let\ifAG\iftrue}% +\def\todayguillemets{\@noBDfr% + \let\ifAG\iffalse}% +\def\guillemetsinarrays{\@noBDfr% + \let\ifArG\iftrue}% +\def\noguillemetsinarrays{\@noBDfr% + \let\ifArG\iffalse}% +\def\guillemetsinallfonts{\@noBDfr% + \let\ifGIAF\iftrue}% +\def\guillemetsinroman{\@noBDfr% + \let\ifGIAF\iffalse}% +\def\overfullhboxmark{\@noBDfr% + \ifFLA\overfullrule=5pt\fi}% +\def\nooverfullhboxmark{\@noBDfr% + \ifFLA\overfullrule=0pt\fi}% +\let\ifFrench\iffalse% +{\def\@genMLhyph{\@ifundefined{french}{}{\gdef\fhyph{\french}}% + \@ifundefined{english}{}{\gdef\ehyph{\english}}}% +\@ifundefined{fhyph}{\@genMLhyph}{}% +}% +\gdef\frenchTeXmods{% + \global\let\ifFrench\iftrue% +\ifCLA% + \ifCLAfrench% + \@AFP% + \frenchtypography\frenchtranslation\frenchlayout% + \fi% +\else% + \@AFP% + \frenchtypography\frenchtranslation\frenchlayout% +\fi% + \frenchmacros\frenchwarnings% + \let\@HifORI\@Hif\let\@HfiORI\@Hfi% + \frenchhyphenation% + \csname @xtrasfrench\endcsname% + \ifx\GOfrench\undefined% + \csname beginL\endcsname% + \fi% + \def\languagename{french}% + \@ufo% + \let\switchtolanguage\endfrench% + \ignorespaces% + }% +\ifx\undefined\babel@core@loaded% + \edef\extrasfrench{}\def\@xtrasfrench{\extrasfrench}% + \DeclareOption{french}{\def\beginlanguage{% + \ifx\babel@savevariable% + \undefined\french% + \else\endenglish\selectlanguage{french}\fi}% + }% + \DeclareOption{english}{\def\beginlanguage{% + \ifx\babel@savevariable% + \undefined\english% + \else\selectlanguage{english}\fi}% + }% +\else\let\extrasfrench\frenchTeXmods% + \AtBeginDocument{% + \def\@tempa{\protect\@LabeL}% + \ifx\@tempa\label\else% + \let\@lORI\label\let\label\@tempa\fi% + \def\@tempa{\protect\atgH{r}}% + \ifx\@tempa\ref\else\@gG{r}{ref}{/}{1}\fi% + }% +\fi% +\@ifundefined{switchtolanguage}{% + \def\switchtolanguage#1{#1}}{}% +\let\@stlORI\switchtolanguage +\def\@DFPtestANDset{% + \ifx\ifFrench\iffalse% + \f@issue\@fw{-71- % + % + % + }% + \fi% + \let\@DFPtestANDset\@DFP% + \@DFP}% +\def\endfrench{% +\ifCLAfrench\else% + \@DFPtestANDset% + \nofrenchtypography\nofrenchtranslation\nofrenchlayout% +\fi% + \nofrenchmacros% + \nofrenchhyphenation% + \let\@Hif\@HifORI\let\@Hfi\@HfiORI% + \let\switchtolanguage\@stlORI% + \let\ifFrench\iffalse\@stlORI% + \ignorespaces}% +\let\noextrasfrench\endfrench% +\def\frenchtest{\@finput{french.tst}}% +\def\frenchdoc{\@finput{frdoc.tex}}% +\@ifundefined{englishTeXmods}{\gdef\englishTeXmods{}}{}% +\global\let\@Hif\empty\global\let\@Hfi\empty% +\global\let\if@FE\iffalse% +\newif\if@more\@moretrue% +\def\@doFh{% +\def\f@ERRdat{\f@issue% + \errmessage{-9- % + }\global\let\french\@@end% + }% + \bgroup% + \let\ORIGfrench\french% + \newcount\@FrCount% +\def\tl@ng##1{}% +\def\@rhef##1/##2 /{\def\@tempa{##2}% + \def\@tempb{##1}% + \def\@tempc{\ifx\space\@tempa\else% + \expandafter\gdef\csname ##1@hefn\endcsname{##2\relax}% + \if@FE\expandafter\@@input##2\relax\fi\fi}% + \ifx\undefined\@excn\@tempc% + \else\ifx\@tempb\@excn\@tempc\fi\fi}% +\gdef\NouveauLangage[##1]##2{% + \expandafter\@ifundefined{l@##2}{}% + {% + \chardef\l@no##1\expandafter\if\csname l@##2\endcsname\l@no\else% + \edef\l@no{##1}\expandafter% + % + \ifx\csname l@##2\endcsname\l@no% + \else\f@issue\typeout{^^J \frenchname.sty \string: -27- % + % + % + }[##2]\f@ERRdat% + \fi\fi}% + \expandafter\tl@ng\csname##2TeXmods\endcsname% + \expandafter\gdef\csname##2 \endcsname% + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2\endcsname% + {\protect\csname##2 \endcsname}% + }% +\def\Nouveau@Langage[##1]##2{% > def nouveau langage 1 +%arabic as a language should not change the definition of \arabic +% the same is valid for future similar cases > -- arabic prepare + \expandafter\@ifundefined{##2}{\lang@defifalse}% + {\lang@defitrue}% + \expandafter\@ifundefined{mlp##2}{\langmlp@defifalse}% + {\langmlp@defitrue}% + \def\l@n@test{##2} +% here only the choises french or english, excluding arabic as language + \ifx \l@n@fre\l@n@test\langok@defitrue\fi % \def\l@n@fre{french}% + \ifx \l@n@eng\l@n@test\langok@defitrue\fi % \def\l@n@eng{english}% +% \iflangok@defi \typeout{ ##1 : ##2}\fi% +% < -- arabic prepare + \expandafter\@ifundefined{l@##2}{}% + \iflangok@defi + {% + \expandafter\tl@ng\csname##2TeXmods\endcsname% + \iflang@defi% ++ test langue existe ? + \expandafter\gdef\csname##2Lang \endcsname% + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2Lang\endcsname% + {\protect\csname##2Lang \endcsname}% + \typeout{eFrench Info : % + \\##2Lang commute sur langue ##2 }% + \typeout{eFrench Info : % + et \\##2TeXmods pour ses extensions }% + \typeout{eFrench Info : % + avec \\ = une seule barre oblique inverse ===}% + \else% ** langue n'existe pas encore + \expandafter\gdef\csname##2 \endcsname% + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2\endcsname% + {\protect\csname##2 \endcsname}% + \fi% + }% % -- test langue existe + \fi% % -- test langok@defi + }% < def nouveau langage 1 +\edef\@temp@{=}% +\def\@langue##1##2 ##3 ##4/##5{\def\@tempa{=}\def\@tempb{##1}% + \ifx\@tempa\@tempb% + \ifnum\@FrCount > 0 \advance\@FrCount by -1\fi% + \relax% + \expandafter\Nouveau@Langage\expandafter[\the\@FrCount]{##2}% + \ifnum\@FrCount \@temp@ 0 \@FrCount= -1\fi% + \else\langok@defifalse\edef\@temp@{<}\@l@ngue##1##2 ##3 ##4/{##5}% + \fi}% +\def\@l@ngue##1 ##2 ##3/##4{\Nouveau@Langage[##4]{##1}% + % + \@rhef##1/##3/% + }% +\let\hyphenation\f@hyphenation% +\openin\@inputcheck = language.dat \def\@tempb{}% > language.dat +\ifeof\@inputcheck\@Ffnt{language.dat}% + \ifx\undefined\french % + \else\xdef\@PrevF{\french}% + \gdef\french{\switchtolanguage\frenchTeXmods\@PrevF}% + {\@PrevF\f@issue\@fw{-15- % + % + % + }}% + \fi% + \ifx\undefined\l@english % + \def\l@english{0}% + \fi% + \ifx\undefined\english % + \else\xdef\@PrevE{\language=\l@english}% + \gdef\english{\switchtolanguage\englishTeXmods\@PrevE}% + {\@PrevE\f@issue\@fw{-16 % + % + % + }}% + \fi +\else\@FrCount=-1% +\newif\iflang@defi% +\newif\iflangmlp@defi% +\newif\iflangok@defi% +\def\l@n@fre{french}% +\def\l@n@eng{english}% +\let\englishORI\english% +\let\english\undefined% +\loop \endlinechar=-1 \read\@inputcheck to \@lineD \endlinechar`\^^M% + \ifx\@lineD\empty \else \advance\@FrCount by 1% + \edef\@lineD{\@lineD\space\space/{\the\@FrCount}}% + \expandafter\@langue\@lineD% aller voir \@langue + \fi% + \ifeof\@inputcheck \@morefalse \fi% + \if@more\repeat% +\fi\closein\@inputcheck% < language.dat +\ifx\undefined\english\let\english\englishORI\fi% ! +\let\hyphenation\@hyphenation% +\def\@MLtst{\@ifundefined{fhyph}% + {\if@PMF\gdef\french{\switchtolanguage\frenchTeXmods}% + \f@issue% + \@fw{-19- % + % + }% + \else\f@issue% + \typeout{^^J \frenchname.sty: -20b- + % + }\f@ERRdat\fi}% + {\gdef\french{\switchtolanguage\frenchTeXmods\fhyph}% + \gdef\english{\switchtolanguage\englishTeXmods\ehyph}% + }% + }% +\@ifundefined{french}{\@MLtst}{}% +\@ifundefined{endenglish}{\global\let\endenglish\french}{}% +\gdef\tl@ng##1{\ifx ##1\relax\f@issue% + \@fw{-21- % + }[##1]\fi}% +\ifx\ORIGfrench\french\f@ERRdat\fi% + \egroup% + }% +\ifx\vert\undefined\else\let\@bvORI\vert\fi% +\def\@fwVIIIII{\f@issue% + \kbtypeout{^^J -73- % + % + }\stop}% +\ifx\RIfM@\undefined% +\def\vert{\ifx\RIfM@\undefined\expandafter\@bvORI\else\expandafter% + \@fwVIIIII\fi}% +\else% +\def\vert{\@bvORI}% +\fi% +\def\@abbf[#1]{\def\abbrevfilename{#1}}% +\AFPdq% +\def\abbreviations{\if@PMF\else\AFPdq\fi% + \@abbdefs\let\@abbdefs\relax% + \@ifNextNB[% + {\@abbf}{\@abbf[frabbrev.tex]}}% +\def\f@protect{\ifx\protect\@typeset@protect% + \else\f@x@protect\fi}% +\def\f@x@protect\fi#1{\fi\protect"}% +\def\@eatprotect#1\protect#2\@nil{#1}% +\if@PMF\let\f@protect\undefined\let\f@x@protect\undefined% + \let\@eatprotect\undefined% +\fi% +\def\@abbdefs{% + \def\ABBfound{\global\let\ifABBfound\iftrue}% + \let\ifABBfound\iffalse% + \def\@abbrev##1##2 ##3##4 ##5/{% + \let\ifFMA\iftrue% + \edef\@tempa{##1##2}% + \ifx##3*\edef\@tempb{##4}\edef\@tempc{##4s}% + \else\edef\@tempb{##3##4}\edef\@tempc{}% + \fi% + \ifx\@tempa\@tempb##5\ABBfound% + \else\ifx\@tempc\empty% + \else\ifx\@tempa\@tempc##5\ABBfound\fi% + \fi% + \fi% + \ifABBfound% + \else\edef\@tempa{##2}\edef\@tempb{##4}% + \ifx\@tempa\@tempb##5\ABBfound% + \else\ifx\@tempc\empty% + \else\ifx\@tempa\@tempc##5\ABBfound\fi% + \fi% + \fi% + \fi}% + \def\@openabbrev##1{\openin\@inputcheck=##1 % + \ifeof\@inputcheck\@Ffnt{##1}\fi}% + \def"{\f@protect\AbbrevName}% + \def\AbbrevName##1"{\def\@tempa{##1}\ifx\@tempa\space``\space''% + \else\@@bbrev##1"\fi}% + \def\@@bbrev##1{\expandafter\@@@bbrev\@eatprotect##1\protect\@nil}% + \def\@@@bbrev##1"{\begingroup% + \def\ABBMfalse{\global\let\ifABBM\iffalse}% + \let\ifABBM\iftrue\global\let\ifABBfound\iffalse% + \@openabbrev{\abbrevfilename}% + \ifeof\@inputcheck\else% + \loop\endlinechar=-1\read\@inputcheck to \@lineD\endlinechar`\^^M% + \ifx\@lineD\empty% + \else\edef\@lineD{##1 \@lineD/}\expandafter\@abbrev\@lineD\fi% + \ifABBfound\ABBMfalse\fi% + \ifeof\@inputcheck \ABBMfalse\ifABBfound\else% + \f@issue% + \@fw{-22- % + % + }[##1]% + \fi\fi% + \ifABBM\repeat% + \fi\closein\@inputcheck% + \ifABBfound\else``##1''\fi\endgroup}% + }% +\if@PMF\let\@abbdefs\relax\fi% +\DFPdq% +\def\noabbreviations{\if@PMF\else\DFPdq\fi}% + \let\@atORI\at% + \let\@bsORI\backslash% +\catcode`\/=0{\catcode`/\=12% +/gdef/@boiORI{{/protect/string\}}}% +/catcode`/\=0\catcode`\/=12% + \let\@boi\textbackslash% + \let\@chapORI\chap% + \let\@tildeORI\tilde% + \let\@etcORI\etc% + \let\@numORI\numero% + \let\@numsORI\numeros% + \let\@NumORI\Numero% + \let\@NumsORI\Numeros% + \let\@degreORI\degre% + \let\@degresORI\degres% + \let\@iemeORI\ieme% + \let\@iemesORI\iemes% + \let\@ierORI\ier% + \let\@iersORI\iers% + \let\@iereORI\iere% + \let\@ieresORI\ieres% + \let\@fscORI\fsc% + \let\@lscORI\lsc% + \let\@ntsORI\!% + \let\@hntscORI\halfnegthinspace% +\def\@ifm{% + \def\at{\ifFMA\string @\else\@atORI\fi}% +\ifx\RIfM@\undefined% + \def\vert{\ifx\RIfM@\undefined% + \ifmmode\expandafter\@bvORI% + \else\ifFMA\string |\else\@bvORI\fi\fi% + \else\expandafter\@fwVIIIII% + \fi}% +\else% + \def\vert{\ifmmode\expandafter\@bvORI% + \else\ifFMA\string |\else\@bvORI\fi\fi}% +\fi% + \def\backslash{\ifmmode\@bsORI% + \else\ifFMA% + \protect\@boi% + \else\@bsORI% + \fi% + \fi}% + \def\chap{\ifFMA\string ^\else\@chapORI\fi}% + \def\tilde{\relax\ifFMA\ifmmode\expandafter% + \expandafter\expandafter\@tildeORI% + \else\string~\fi\else\expandafter\@tildeORI\fi}% + \def\@Fsp##1{\ifFMA\ifmmode^{\mathrm{##1}}% + \else$^{\mathrm{##1}}$\fi% + \else##1\fi}% + \def\@umer##1{\protect\@Fsp{##1}\kern.2em\ignorespaces}% + \long\def\etc{\def\@tempa{}% + \ifFMA% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M~\fi% + \fi% + etc\def\@tempa{\@ifNextNB.{}{% + \@fw{-60- % + % + }}}% + \else\@etcORI% + \fi\@tempa}% +\let\nombre\undefined% +\DeclareRobustCommand*{\nombre}% + {\ifFMA\expandafter\@nombre% + \else\expandafter\@nomORI% + \fi}% + \def\numero{\ifFMA n\@umer{o}\else\@numORI\fi}% + \def\Numero{\ifFMA N\@umer{o}\else\@NumORI\fi}% + \def\numeros{\ifFMA n\@umer{os}\else\@numsORI\fi}% + \def\Numeros{\ifFMA N\@umer{os}\else\@NumsORI\fi}% + \def\degre{\ifFMA\r{}\space% + \else\expandafter\@degreORI\fi}% + \def\degres{\ifFMA\@Fsp{o}\else\@degresORI\fi}% + \def\leftguillemets{\@noBDfr% + \ifFMA\@oguills% + \else<<\fi}% + \def\rightguillemets{\@noBDfr% + \ifFMA\@fguills% + \else>>\fi}% + \def\fup{\@noBDfr\ifFTY% + \expandafter\@fup\fi}\MakeRobustCommand{fup}% + \def\@fup{\@ifstar{\csname\string\!\endcsname\@@fup}{\@@fup}}% + \def\@@fup##1{\def\@tempa{\leavevmode\raise+0.80ex% + \hbox{\protect\sm@llerthree% + \MakeLowercase{##1}}% + \@ifNextNB\bgroup{\@@@fup}{\kern+.17em}}% + \ifFMA\expandafter\@tempa\else##1\fi% + }% + \def\@@@fup##1{\ifx\empty##1\else\kern+.17em{##1}\fi}% + \def\@tgifFMA##1##2{\ifFMA\expandafter\protect\expandafter##1% + \else\expandafter\protect\expandafter##2\fi% + }% + \def\ieme{\@tgifFMA\@Ieme\@iemeORI}% + \def\@Ieme{\@ifstar{\@ieme}{\@@eme}}% + \def\@ieme{\fup*{e}}% + \def\@@eme{\fup{e}}\MakeRobustCommand{ieme}% + \def\iemes{\@tgifFMA\@Iemes\@iemesORI}% + \def\@Iemes{\@ifstar{\@iemes}{\@@emes}}% + \def\@iemes{\fup*{es}}\MakeRobustCommand{iemes}% + \def\@@emes{\fup{es}}% + \def\ier{\@tgifFMA\@ier\@ierORI}% + \def\@ier{\fup*{er}}\MakeRobustCommand{ier}% + \def\iers{\@tgifFMA\@iers\@iersORI}% + \def\iers{\fup*{ers}}\MakeRobustCommand{iers}% + \def\iere{\@tgifFMA\@iere\@iereORI}% + \def\iere{\fup*{re}}\MakeRobustCommand{iere}% + \def\ieres{\@tgifFMA\@ieres\@ieresORI}% + \def\@ieres{\fup*{res}}\MakeRobustCommand{ieres}% + \def\fsc{\@noBDfr\Fsc@@}% + \MakeRobustCommand{fsc}% + \def\Fsc@@{\@ifNextNB*{\let\Fsc@F\@sc@F\FSC@}{\let\Fsc@F\relax\FSC@*}}% + \def\@sc@F{\rmfamily\mdseries}% + \def\FSC@*##1{\fsc@##1\@@}% + \def\fsc@##1##2\@@{\ifFMA\leavevmode{\ifECM\Fsc@F\else\@sc@F\fi% + \textsc{% + \@uchbox{\let\protect\@empty% + \let\@typeset@protect\@empty% + \let\@changed@x\@changed@x@mouth% + \if\relax\noexpand##1\fsc@@@##1##2\@@% + \else\edef\@tempa{##1}% + \expandafter\fsc@@\@tempa##2\@@% + \fi}}}% + \else\@fscORI##1\fi}% + \def\fsc@@##1##2\@@{\MakeUppercase{##1}\lsc@*{##2}}% + \def\fsc@@@##1##2##3\@@{\MakeUppercase{##1{##2}}\lsc@*{##3}}% + \def\lsc{\@noBDfr\Lsc@@}% + \MakeRobustCommand{lsc}% + \def\Lsc@@{\@ifNextNB*{\let\Fsc@F\@sc@F\lsc@}{\let\Fsc@F\relax\lsc@*}}% + \def\lsc@*##1{\ifFMA\leavevmode{\ifECM\Fsc@F\else\@sc@F\fi% + \textsc{\@uchbox{\MakeLowercase{##1}}}}% + \else\@lscORI##1\fi}% + \def\@FE{\@noBDfr% + \@ifNextNB){\@@FPE}{\@@FE}}% + \def\@@FE{\the\@FrCount$^{\mathrm o}$\kern+.29em}% + \def% + \@@FPE){\setbox0=\hbox{\degre}\@FrDimen=\wd0\multiply\@FrDimen by 10% + \divide\@FrDimen by 45\leavevmode% + \the\@FrCount\kern-\@FrDimen% + \setbox0=\hbox{\the\@FrCount}\@tempdima=\ht0% + \setbox0=\hbox{\degre}\@tempdimb=\ht0% + \advance\@tempdimb by -\@tempdima% + \lower\@tempdimb\hbox{\degre}% + \multiply\@FrDimen by 45% + \divide\@FrDimen by 20% + \kern-\@FrDimen% + )\kern+.3em}% + \def\quando=##1{\@FrCount=##1\@FE}% + \MakeRobustCommand{quando}% + \def\primo{\@FrCount=1\@FE}% + \def\secundo{\@FrCount=2\@FE}% + \def\tertio{\@FrCount=3\@FE}% + \def\quarto{\@FrCount=4\@FE}% +\def\frenchalias##1##2{% + \ifx##1\undefined\let##1 ##2\relax% + \else\f@issue% + \@fw{-1- % + }[\string##1]% + \expandafter\stop% + \fi}% +\@ifundefined{refmark}% + {\def\refmark##1{\@noBDfr% + \ifFTY\ifhmode% + \ifdim\lastskip>\z@\unskip\fi\fi\fi% + \hbox{% + $^{\,% + \let\itshape\relax% +\textrm{\scriptsize% + \ref{##1}% + }% + }$}}}{}% +\def\!{\relax\ifFMA\ifmmode% + \mskip-\thinmuskip\else\negthinspace\fi% + \else\@ntsORI\fi}% +\expandafter\def\csname\string\!\endcsname{\kern-.083335em}% +\def\halfnegthinspace{\ifFMA\expandafter% + \csname\string\!\endcsname% + \else\expandafter\@hntsORI\fi}% +\@ifundefined{moretolerance}{\def\moretolerance{% + \@noBDfr% + \advance\tolerance by \the\tolerance% + \advance\pretolerance by \the\pretolerance}}{}% +\@ifundefined{I}{\def\I{I}}{}% + \def\Sauter##1Lignes{\@noBDfr% + \vspace*{##1\baselineskip}}% + }% +\@ifundefined{AllTeX}{% +\def\AllTeX{(\kern-.075em L\kern-.36em{\sbox\z@ T\vbox to\ht\z@{\hbox{% + \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse% + \selectfont A}\vss}}\kern-.15em)\kern-.075em\TeX}% +\MakeRobustCommand{AllTeX}% + }{}% +\let\@currname\@currnameORI% +\def\languagename{english}% +\def\beginlanguage{% + \ifx\babel@savevariable% + \undefined\french% + \else\endenglish\selectlanguage{french}\fi% + }% +\let\@bglngpk\babel@savevariable% +\ifx\pg@add@to\undefined\else% +\def\pg@begin{\begingroup}% +\def\pg@end{\endgroup}% +\fi% +\edef\beginFWdirection{L}% +\ifx\undefined\babel@core@loaded\ProcessOptions*% + \else% + \PackageInfo{\frenchname}% + {Initialisation de l'option \frenchname\space pour Babel}% + \GOfrench\let\GOfrench\relax% +\fi% +\let\@FW\undefined% +\resetat% +\PassOptionsToPackage{french}{varioref}% +\PassOptionsToPackage{french}{pdfscreen}% +\endinput% diff --git a/language/french/e-french/texmf/tex/french_french-msg.tex b/language/french/e-french/texmf/tex/french_french-msg.tex new file mode 100644 index 0000000000..ea3359faab --- /dev/null +++ b/language/french/e-french/texmf/tex/french_french-msg.tex @@ -0,0 +1,213 @@ +% Fichier french_french-msg.tex (messages de l'extension FrenchPro) +\msgencoding{TeX}\msgheader{-\msgid-\space} +\msg{1}{la macro #1 existe d\'ej\`a}{} +\msg{2}{fichier #1 non trouv\'e.}{} +\msg{3}{\frenchpack\space n'est pas actif ici \string!}{} +\msg{4}{passage au mode "Poor-Man-French-Style"}{} +\msg{5}{d\'efinition de lettrine incorrecte}{} +\msg{6}{lettrine \`a revoir}{} +\msg{7}{lettrine r\'eduite \`a 1 seule lettre}{} +\msg{8}{\string\footnotetext{#1} perdu. % + \MessageBreak % + Coder \'event. \string\protect\string\footnote}{} +\msg{9}{fichier language.dat file absent ou corrompu}{} +\msg{10}{l'extension frenchle/FrenchPro n'a pas \'et\'e charg\'ee}{} +\msg{11}{application du \string<\string< frpatch \string>\string> #1}{} +\msg{12}{frpatch.sty est p\'erim\'e, fichier \`a d\'etruire}{} +\msg{13}{le caract\`ere "#1" est d\'ej\`a actif}{} +\msgheader{-13-\space} +\msg{13b}{la double ponctuation est alors d\'esactiv\'ee}{} +\msgheader{-\msgid-\space} +\msg{14}{fermeture de guillemets non ouverts}{} +\msg{15}{le langage \frenchname\space porte le num\'ero \the\language}{} +\msg{16}{le langage english language\space porte le num\'ero \the\language}{} +\msg{17}{\string\wrongtypedspaces\space est inop\'erant dans ce contexte}{} +\msg*{18}{\frenchname.sty force l'option % + \string\nofrenchguillemets\space en maths avec AmSLaTeX.}{} +\msg{19}{utilisation du langage interne num\'ero \the\language}{} +\msg*{20}{ATTENTION \string: le langage french n'est pas % + d\'efini dans votre format.}{} +\msg*{20b}{\frenchname.sty \string: le langage french n'est pas d\'efini % + (ERREUR \string!)}{} +\msg{21}{#1 n'est pas d\'efini}{} +\msg{22}{abr\'eviation de \string"#1\string" non trouv\'ee}{} +\msg*{23}{Extension \string: \frenchpack\space\frenchstyleid% + \space(B.Gaulle)}{} +\msg{24}{\frenchname.sty utilise dans ce document le codage de fonte % + \f@encoding.}{}% +\msg{25}{\frenchname.sty affiche ici ses messages en % + \ifEightBitOutput8-bits.\else7-bits % + \string<\string< \string \`a la TeX \string>\string>.\fi % + ^^J}{} +\msg{26}{Erreur d\'etect\'ee dans \frenchname.sty \string! % + \MessageBreak % + (voir p.ex. le fichier language.dat)}{} +\msg*{27}{\frenchname.sty \string: le language \l@no\space (#1) \'etait % + initialement (\`a initex) num\'erot\'e % + \csname l@#1\endcsname\space(ERREUR \string!)}{} +\msg{28}{ATTENTION \string: TeX Version 2 ne permet pas d'utiliser des % + caract\`eres accentu\'es 8-bits}{} +\msg*{29}{***Attention*** \string: le moteur TeX en utilisation avec % + des fontes CM % + \MessageBreak % + (comme dans ce format TeX) est insuffisant pour la c\'esure % + \MessageBreak % + des mots accentu\'es (comme en fran\c cais).}{} +\msg{30}{ERREUR\string! Quelque chose est anormal \string! % + votre moteur TeX ne peut pas couper correctement les mots % + \MessageBreak % + fran\c cais accentu\'es *dans la fonte courante* ou % + avec ce codage}{} +\msg{31}{Mauvaise c\'esure fran\c caise \string! % + \^Etes-vous s\^ur de tourner avec le format *********** % + \MessageBreak % + ayant les motifs de c\'esure fran\c caiss % + install\'es au moment d'initex \string? ***********}{} +\msg{32}{si oui, essayez de passer au codage de fonte T1 % + (\string\usepackage[T1]{fontenc})***}{} +\msg{33}{VERIFIEZ si les codes TeX hexad\'ecimaux list\'es ne peuvent s'afficher % + \MessageBreak % + \`a l'\'ecran et d\'ecidez s'ils doivent \^etre \'elimin\'es de \@kbencoding.kbc % + \MessageBreak % + en supposant que votre ''locale'' est bien initialis\'ee % + sur votre syst\`eme.}{} +\msg{34}{ce fichier et les autres fichiers auxiliaires exigent d'utiliser % + \MessageBreak % + les extension LaTeX packages suivantes \string: \frenchpack\string! % + \MessageBreak % + v\'erifiez vos \string\usepackage\space ou effacer ces fichiers. % + Arr\^et de la composition \string!}{} +\msg{35}{kbconfig \string: Red\'efinition de % + \string ^\string ^\string Y uccode. % + \MessageBreak % + kbconfig \string: Red\'efinition de % + \string ^\string ^\string Z uccode.}{} +\msg{36}{ANOMALIE \string: nom de format LaTeX % + (\string\fmtname) invalide. % + \MessageBreak % + CORRIGER pour avoir \string\fmtname=LaTeX2e\space % + ou ancien nom.}{} +\msg{36b}{ANOMALIE \string: LaTeX format % + (\string\fmtname) non standard}{} +\msg{37a}{ANOMALIE \string: extension FrenchPro active ici.}{} +\msg{37b}{ANOMALIE \string: extension FrenchPro inactive ici.}{} +\msg{38}{La langage #1 est utilis\'e sous le num\'ero \the\workl@.}{} +\msg{39}{Erreur \string: fichier language.dat non trouv\'e, essai de % + chargement du fichier de c\'esure US-english}{} +\msg*{40}{\'Ecriture de kb8to7.lex et kb7to8.lex}{} +\msg{41}{votre format est p\'erim\'e, merci de refaire initex \string!}{} +\msg{42}{Le patch \frenchname\space (frpatch.sty) n'est pas valable % + \MessageBreak % + pour cette version de l'extension "\frenchpack" dat\'ee \FSfd}{} +\msg{43}{french.all est CHARG\'E^^J}{} +\msg{44}{ERREUR la commande \LaMacro\space n'est pas d\'efinie \string!}{} +\msg{45}{ex\'ecution de \LaMacro}{} +\msg{46}{Cette commande est deja d\'efinie dans \frenchname.sty % + \MessageBreak % + Probl\`eme \'eventuel avec \frenchpack\space (macro \Aboi #1)}{} +\msg*{47}{je dois m'arr\^eter car votre moteur TeX engine n'est pas capable % + de g\'en\'erer des codes 8-bits en sortie, d\'esol\'e \string!}{} +\msg{48}{Lecture du fichier de configuration de \frenchpack}{} +\msg{49}{fermeture pr\'ematur\'ee de guillemets}{} +\msg{50}{Erreur \string: le langage french n'est pas d\'efini dans % + le fichier language.dat.}{} +\msg{51}{ERREUR \string: ce document n'a pas \'et\'e converti en 8-bits...}{} +\msg*{52}{Erreur \string: \frenchpack\space package ne fonctionne pas % + avec une classe de document si minimaliste, d\'esol\'e \string!}{} +\msg{53}{environnement guillemets inutilisable % + \MessageBreak % + avec l'option \string\noeveryparguillemets}{} +\msg{54}{ERREUR \string: \string\unusedslot\space (\unusedslot) est invalide}{} +\msg{55}{ERREUR le caract\`ere \string\unusedslot\space % + (\@unusedslot) n'est pas actif.}{} +\msg*{56}{Les caract\`eres 8-bits trait\'es sont \string:}{} +\msg{57}{extension keyboard #1 charg\'ee pour le codage de fonte % + \f@encoding.^^J}{} +\msg{58}{valeur de #1 ignor\'ee}{} +\msg*{59}{ERREUR FATALE \string: texte g\'en\'er\'e \'etrange et inhabituel.}{} +\msg{60}{point manquant apr\`es \string\etc}{} +\msg{61}{fichier hyph\hyphchar.tex file non trouv\'e.}{} +\msg{62}{chargement d'un fichier de c\'esures additionnel % + pour les fontes \hyphchar\space avec caract\`ere de % + c\'esure sp\'ecifique}{} +\msg{63}{fichier french.sty ou frenchle.sty non trouv\'e. % + \MessageBreak % + V\'erifiez s'ils existent quelque part dans votre syst\`eme.}{} +\msg{64}{ERREUR \string: \string\fmtname\space est invalide dans lplain.tex}{} +\msg{65}{\frenchname.sty charge % + les traductions pour la bibliographie \string:}{} +\msg*{66}{ERREUR \string! Ce fichier ne peut \^etre compos\'e sans une % + \MessageBreak % + d\'eclaration de codage (voir les extensions keyboard ou inputenc).}{} +\msg*{67}{ATTENTION il semble que vous utilisez \`a la fois inputenc et % + keyboard, merci de choisir \string!}{} +\msg*{68}{ERREUR \string: \frenchpack\space ne tourne pas avec % + l'\'emulation 2.09, d\'esol\'e \string!}{} +\msg{69}{kbconfig \string: interception de la commande dump pour % + \'eliminer quelques caract\`eres invalides.}{} +\msg{70}{kbconfig \string: modification de \string\@tabacckludge\space pour % + les maths.}{} +\msg{71}{ATTENTION \string: si babel est utilis\'e, % + \MessageBreak % + mettre \frenchname(pro/le) en option}{} +\msg{72}{kbconfig \string: le codage utf8 ne peut \^etre r\'ealis\'e avec % + plain \string! % + \MessageBreak % + kbconfig \string: on continue sans caract\`eres Unicode.}{} +\msg*{73}{\frenchname.sty a \'et\'e charg\'e trop t\^ot \string!}{} +\msg*{74}{ERREUR, extension keyboard charg\'ee apr\`es % + \frenchpack!}{} +\msg{75}{kbconfig \string: codage utf8 non trouv\'e via l'extension % + inputenc \string! % + \MessageBreak % + kbconfig \string: on continue sans caract\`eres Unicode.}{} +\msg{76}{kbconfig \string: pas de contraintes de langage possibles % + avec Plain TeX \string!}{} +\msg{77}{Aucun caract\`ere #1\space de d\'efini en english}{} +\msg*{78}{ERREUR \string: l'otion noutf8 fournie est en conflit.}{} +\msg*{79}{keyboard.sty \string: pas d'option locale fournie, % + codage utf8 impossible.}{} +\msg{80}{Babel souhaite charger l'option \CurrentOption\space % + \MessageBreak mais l'extension mlp est d\'ej\`a charg\'ee, % + merci de choisir % + \MessageBreak soit mlp avec l'option \CurrentOption\space, % + soit \CurrentOption\space seul % + \MessageBreak ou babel avec l'option \CurrentOption\space}% + {\help{juste retirer l'extension ou l'option superflue.}} +\msg*{81}{ATTENTION \string: extension "msg" non trouv\'ee\string; % + \MessageBreak on continue sans le texte des messages}{} +\msg{82}{la commande \LaMacro\space n'est pas encore d\'efinie}{} +\msg{83}{Test des macros avant le \string\begin{document}^^J}{} +\msg{84}{Maintenant, nouveau test mais apr\`es le \string\begin{document}^^J}{} +\msg{85}{Attention \string: l'option fixlanguage % + n'a pas \'et\'e fournie \`a l'appel de babelbib}{} +\msg{86}{keyboard.sty\string: % + le dispositif mltex a \'et\'e annul\'e par l'option #1.}{} +\msg{87}{ERREUR \string: % + \MessageBreak % + babelbib s'utilise uniquement avec babel}{} +\msg{88}{Aucun caract\`ere n'a \'et\'e d\'efini\MessageBreak % + pour le codage clavier `utf8'\MessageBreak}{} +\msg{89}{kbconfig \string: Le caract\`ere utilis\'e n'est pas d\'efini % + \MessageBreak % + avec le codage clavier `utf8'}% + {Vous pouvez en fournir une d\'efinition avec % + \noexpand\DeclareInputText\MessageBreak ou % + \noexpand\DeclareInputMath avant de l'utiliser.}% +\msg{90}{Caract\`ere Unicode invalide, valeur \string < 00A0}{\@eha} +\msg{91}{La cha\^\i{}ne de caract\`eres Unicode #1 n'a pas \'et\'e % + d\'efinie pour \^etre utilis\'ee avec LaTeX}{\@eha} +\msg{92}{Vous devez \string:\MessageBreak % + - soit utiliser un moteur avec option MlTeX,\MessageBreak % + - soit passer en codage T1 par d\'efaut.}{} +\msg*{93}{Vous utilisez deux options de francisation avec Babel, % + \MessageBreak % + merci d'en choisir une seule.}{} +\msgheader{-**-\space} +\msg*{**a}{Le num\'ero de s\'erie de \frenchpack\space est *\@FrVal*.}{} +\msg*{**b}{\@FrVal\space of \frenchpack.}{} +\msgheader{} +\msg{*}{le message \msgid\space de l'extension \frenchname\space n'est pas % + r\'epertori\'e}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/language/french/e-french/texmf/tex/frenchle.cfg b/language/french/e-french/texmf/tex/frenchle.cfg new file mode 100644 index 0000000000..c17b977891 --- /dev/null +++ b/language/french/e-french/texmf/tex/frenchle.cfg @@ -0,0 +1,12 @@ +% Fichier de configuration pour frenchle (avec ou sans babel)% 2005/03/23 +% +% After Bernard Gaulle's decease this work is now maintained as a part of +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% Vous pouvez decommenter les lignes suivantes si vous souhaitez +% utiliser les guillemets 8-bits iso-latin1 ou iso-latin9 : +% +%\catcode`\«=\active\catcode`\»=\active +%\def«{\og\ignorespaces}\def»{\fg} +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/frenchle.sty b/language/french/e-french/texmf/tex/frenchle.sty new file mode 100644 index 0000000000..8988615f62 --- /dev/null +++ b/language/french/e-french/texmf/tex/frenchle.sty @@ -0,0 +1,2090 @@ +% +% This is frenchle.sty (informations en francais ci-dessous.tex) +% This is the light version of THE multilingual "e-French" package for LaTeX. +% After Bernard Gaulle's decease this work is now maintained as a part of +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% If you want to have informations about the professional version +% see under www.efrench.org +% +% Cette extension << french allegee >> a pour objectif de resoudre un maximum +% de problemes de francisation de LaTeX sans avoir a connaitre la moindre +% commande complementaire ; la seule chose a faire est de saisir : +% \usepackage{frenchle} si vous travaillez sans babel ; +% \usepackage[frenchle]{babel} sinon ; dans ce cas il faut +% avoir installe frenchle.ldf en plus de frenchle.sty +% OU \usepackage[efrench]{babel} et dans ce dernier cas il faut avoir +% installe french.ldf en plus de frenchle.sty. +% mais le mieux avec babel est de coder : \documentclass[french]{classe} +% puis : \usepackage[frenchle]{babel} +% car ainsi l'option french est passée a toutes les extensions. +% L'extension frenchle fait plein de choses pour vous au niveau typographique +% (espacement de la ponctuation, composition des notes, etc.) ainsi que +% pour la mise en page (figures, tableaux, listes, etc.), la traduction des +% libelles usuels de LaTeX ou enfin la francisation des classes de documents +% dont la classe << letter >>. Vous pouvez utiliser des guillemets a la +% francaise tout comme avec l'option frenchb de Babel. Voir d'ailleurs a ce +% sujet le fichier de configuration frenchle.cfg. +% La documentation a propos de frenchle est disponible sur le serveur +% a l'url http://www.efrench.org/bases/doc/frenchle.pdf ou sur ctan. +% +% Concernant la cesure des mots il est necessaire que votre format LaTeX +% contienne les motifs de cesure du francais. Consultez a ce sujet la +% FAQ de francisation a http://www.efrench.org/bases/FAQ.pdf +% ou sur ctan. +% +% La version d'e-French peut vous apporter encore plein d'autres +% facilites. Si vous ne trouvez pas la documentation a ce sujet, consultez +% http://www.efrench.org/distributions/frguide.pdf. +% +\expandafter\ifx\csname frenchTeXmods\endcsname\relax% +\else \endinput \fi% +\def\frenchname{frenchle}% +\def\frenchpack{frenchle}% +\def\ds@french{}% +\def\ds@pmfrench{\pmfrench}% +{\catcode`\@=11{% + \ifx\@unexpandable@protect\undefined\let\protect\empty% + \else\let\protect\@unexpandable@protect% + \fi% + \xdef\FSfd{10 ao\^ut 2017}% = eFrench + \xdef\FSfv{V6,01}% + \xdef\frenchstyleid{\FSfv\space-- \FSfd\space --}% +}}% + \edef\FSfd{2017/08/10}% +\NeedsTeXFormat{LaTeX2e}[1996/12/01]% +\let\auxWARNINGi=\@gobble% +\def\@txt@msg#1{#1}% +\def\@gobbleopt[#1]{}% +\def\f@issue#1#2{#1{#2}\@ifnextchar[{\@gobbleopt}{}% + }% +\newif\ifECM% +\def\ErrFrench{\f@issue\@fW{-26- % + \@txt@msg{Erreur d\'etect\'ee dans \frenchname.sty !}% + \@txt@msg{(voir p.ex. le fichier language.dat)}% + }}% +\def\ifFTY{\ErrFrench}\def\ifFTR{\ErrFrench}\def\ifFG{\ErrFrench}% +\def\ifFLA{\ErrFrench}\def\ifFMA{\ErrFrench}\def\ifFH{\ErrFrench}% +\def\ifArG{\ErrFrench}\def\ifFTSW{\ErrFrench}\def\ifFW{\ErrFrench}% +\edef\GOfrench{`\string @}% +\ifnum\catcode\GOfrench=11% + \let\resetat\relax% + \else\edef\resetat{\noexpand\catcode\GOfrench=\the\catcode\GOfrench}% + \makeatletter\fi% +\let\@currnameORI\@currname% +\xdef\@currname{\frenchname}% +{\def\'{\string\'}% + \ProvidesPackage{\frenchname}% + [\FSfd\space The \frenchpack\space package /\FSfv/]% +}% +\def\GOfrench{babel}\ifx\@currnameORI\GOfrench% + \ifx\undefined\babel@core@loaded\input babel.def\relax\fi% + \ifx\undefined\babel@core@loaded% + \let\babel@core@loaded\main@language\fi% + \fi% +\let\FSfv=\undefined% +\IfFileExists{frlpatch.sty}{\def\FSfd@patch{unknown}}{\let\FSfd@patch\FSfd}% +\if@compatibility% + \f@issue\typeout{^^J -68- + \@txt@msg{ERROR: \frenchpack\space is no more running }% + \@txt@msg{with 2.09 emulation, sorry!}% + }\expandafter\stop% +\fi% +\ifx\l@french\undefined\f@issue\typeout{^^J -20- + \@txt@msg{WARNING:}% + \@txt@msg{the French language is undefined in your format.}% + }% +\fi% +\fontencoding{\encodingdefault}\selectfont% + \def\@temp@{OT1}\ifx\@temp@\f@encoding% + \def\@temp@{\global\ECMfalse}% + \else\def\@temp@{LO1}\ifx\@temp@\f@encoding% + \def\@temp@{\global\ECMfalse}% + \else% + \def\@temp@{\global\ECMtrue}% + \fi% + \fi% +\@temp@% +\def\@tempa{\let\ifEightBitOutput\iffalse}% +\ifx\EightBitOutputfalse\undefined\expandafter\@tempa\fi% +\ifECM\else\ifx\charsubdef\undefined% + \def\@tempa{\noexpand\dGs}% + \ifx\@tempa\dGs\else% + \ifx\@kb@msgXXIX\relax\else% + \f@issue\typeout{^^J -29- % + \@txt@msg{***Warning***\string: TeX engine in use along with CM fonts }% + \@txt@msg{(as in current TeX format) isn't sufficient to hyphenate }% + \@txt@msg{words containing diacritics (like in French).}% + }% + \let\@kb@msgXXIX\relax% + \fi% + \fi% +\fi\fi% +\ifx\undefined\@dblarg% +\long\def\@dblarg#1{\@ifnextchar[{#1}{\@xdblarg{#1}}}}% +\long\def\@xdblarg#1#2{#1[{#2}]{#2}}% +\fi% +\newdimen\@FrDimen% +\def\usualmessages{\let\ifEightBitOutput\iftrue}% + \ifnum\inputlineno=-1\def\@o@l{.}% + \else\def\@o@l{ (\`a la ligne \the\inputlineno).}\fi% + \expandafter\let\expandafter\@aiguORI\expandafter=% + \csname OT\string1\string\'\endcsname% + \expandafter\let\expandafter\@gravORI\expandafter=% + \csname OT\string1\string\`\endcsname% + \expandafter\let\expandafter\@acchORI\expandafter=% + \csname OT\string1\string\^\endcsname% + \expandafter\let\expandafter\@tremORI\expandafter=% + \csname OT\string1\string\"\endcsname% + \expandafter\let\expandafter\@cediORI\expandafter=% + \csname OT\string1\string\c\endcsname% +\let\@tempc\relax% +\ifx\today\undefined\let\today\cejour\fi% +\ifx\today\undefined\f@issue\typeout{^^J -52- % + \@txt@msg{Error: the \frenchpack\space package doesn't run in }% + \@txt@msg{such minimal document class, sorry!}% + }\expandafter\stop% +\fi% +{\def\GOfrench{\global\let\ifEightBitOutput\iffalse}% + \let\add@accent\@gobble\edef\@tempa{\`{}}% + \def\@tempb{{\setbox \@tempboxa \hbox {}\accent 18 }}% + \ifx\@tempa\@tempb% + \expandafter% + \GOfrench% + \fi% +}% +\def\@fW#1{{\let\@nobraces\@firstofone% + \ifEightBitOutput% + \setbox\@tempboxa\hbox{\`\space}% + \ifx\charsubdef\undefined\else% + \let\add@accent\@gobble% + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \def\^##1{\expandafter\@nobraces\@acchORI##1}% + \fi% + \else% + \let\protect\string\let\add@accent\@gobble% + \fi% + \edef\@tempa{#1}\typeout{\@tempa}}}% +{\def\ier{er}% +\f@issue% +\@fW{^^J -23- \@txt@msg{Extension \string : \frenchpack\space}% + \@txt@msg{\frenchstyleid\space(eFrench)}% + }% +}% +\let\ifFW\iftrue% +\def\@fw#1{{\let\@NoFr\relax% + \ifFW\kbtypeout% + {^^J \frenchname.sty \string : #1\@o@l}% + \fi% + }}% + % +\ifx\kbtypeout\undefined% +\def\@kbtypeout[#1]#2{\ifEightBitOutput\let\@typeset@protect\protect\fi% + \let\@inpenc@undefined@\@gobble% + \edef\f@tempa{#2\empty}% + #1{\f@tempa}\egroup}% +\def\kbtypeout{\kbIO[\typeout]}% +\def\kbIO{\bgroup% + \ifECM\fontencoding{OT1}\selectfont\fi% + % + \let\@nobraces\@firstofone% + \let\protect\string% + \ifEightBitOutput% + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \def\^##1{\expandafter\@nobraces\@acchORI##1}% + \def\"##1{\expandafter\@nobraces\@tremORI##1}% + \def\c##1{\expandafter\@nobraces\@cediORI##1}% + \csname @kbspecials\endcsname% + \else% + \let\add@accent\@gobble% + \def\set@display@protect{\let\protect\noexpand}% + \fi% + \@kbtypeout}% +\fi% +\ifx\@kbtypeout\undefined% + \def\@kbtypeout[#1]#2{#1{#2}\egroup}% +\fi% +\def\@tempb{\let\ifEightBitOutput\iffalse}% +\ifx\kbtypeout\typeout% + \long\def\@tempa{\add@accent{19}}% + \ifx\@tempa\@aiguORI\expandafter\@tempb\fi% +\def\@fw#1{\ifFW\bgroup\let\@nobraces\@firstofone% + \ifEightBitOutput% + \ifx\charsubdef\undefined\else% + \def\'##1{\expandafter\@nobraces\@aiguORI##1}% + \def\`##1{\expandafter\@nobraces\@gravORI##1}% + \fi% + \else% + \let\protect\string\let\add@accent\@gobble% + \fi% + \@kbtypeout[\typeout]{^^J \frenchname.sty \string : #1\@o@l}% + \fi% + }% +\fi +\def\@Ffnt#1{\f@issue\@fw{-2- \@txt@msg{fichier #1 non trouv\'e}% + }[#1]}% +\def\@finput#1{\InputIfFileExists{#1}{}{\@Ffnt{#1}}}% +\def\@NoFr{\f@issue\@fw{-3- % + \@txt@msg{\frenchpack\space n'est pas actif ici !}% + }}% +\let\ifFrench\iffalse% +\ifx\addto\undefined% + \def\addto#1#2{\ifx#1\@undefined\def#1{#2}% + \else\ifx#1\relax\def #1{#2}% + \else{\toks@\expandafter{#1#2}% + \xdef#1{\the\toks@}}% + \fi% + \fi% + }% +\fi% +\def\fraddto#1#2{\addto{#1}{#2}% + \ifFrench\french\else\english\fi}% +\ifx\MakeRobustCommand\undefined% +\def\MakeRobustCommand#1{\expandafter\expandafter\expandafter% + \let\expandafter\expandafter\csname #1 fp\endcsname% + \csname #1\endcsname% + \expandafter% + \edef\csname #1\endcsname{\expandafter\protect% + \expandafter\noexpand\csname #1 fp\endcsname} + }% +\fi% +\ifx\DocInput\undefined\else% + \let\fr@di\DocInput\def\DocInput#1{% + \ifFrench\english\fr@di{#1}\french% + \else\fr@di{#1}% + \fi\relax}% +\fi% +\ifx\url\undefined\else% + \let\fr@ul\url\def\url#1{% + \ifFrench\english\fr@ul{#1}\french% + \else\fr@ul{#1}% + \fi\relax}% +\fi% +\ifx\xy\undefined\else% + \let\fr@xy\xy\def\xy{% + \ifFrench\nofrenchguillemets\DFPdp\fi\fr@xy}% +\fi% +\ifx\hyper@n@rmalise\undefined\else% + \let\fr@hne\hyper@n@rmalise\def\fr@hnr#1#2{\fr@hne{#1}{#2}}% + \def\hyper@n@rmalise{\ifFrench\english\expandafter\fr@hnr% + \else\expandafter\fr@hne\fi}% +\fi% +\ifx\PDFSCR@Info\undefined\else% + \def\@seccntformat#1{\protect\textcolor{section\thesection@level}% + {\expandafter\upshape\csname the#1\endcsname}\quad}% +\fi% +\ifx\listing\undefined\else% + \let\fr@li\listing% +\edef\listing{\noexpand\@protected@testopt\noexpand\listing% + \expandafter\noexpand\csname\string\listing\endcsname {1}}% + \ifx\fr@li\listing% + \def\listing{% + \ifFrench\expandafter\english\expandafter\fr@li% + \else\expandafter\fr@li% + \fi}% + \else% + \long\def\listing{% + \ifFrench\expandafter\english\expandafter\fr@li% + \else\expandafter\fr@li% + \fi\relax}% + \fi% +\fi% +\ifx\inputlisting\undefined\else% + \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{% + \ifFrench\english\fr@PL[#1]\french% + \else\fr@PL[#1]% + \fi\relax}% +\fi% +\ifx\lstlisting\undefined\else% + \let\fr@lsi\lstlisting\long\def\lstlisting{% + \ifFrench\expandafter\english\expandafter\fr@lsi% + \else\expandafter\fr@lsi% + \fi}% +\fi% +\ifx\lstinputlisting\undefined\else% + \let\fr@PL\lst@ProcessListing\def\lst@ProcessListing[#1]{% + \ifFrench\english\fr@PL[#1]\french% + \else\fr@PL[#1]% + \fi}% +\fi% + \def\@ifFTYfalse{\let\ifFTY\iffalse}% + \def\@ifFTYback{\let\ifFTY\if@Back}% + \let\if@PMF\iffalse% +\f@issue% +\@fW{ -24- % + \@txt@msg{\frenchname.sty utilise dans ce document le codage de fonte }% + \@txt@msg{\f@encoding.^^J}% + }% +\f@issue% +\@fW{ -25- \@txt@msg{\frenchname.sty affiche ici ses messages en }% +\@txt@msg{\ifEightBitOutput8-bits.\else7-bits << \string\`a la TeX >>.\fi}% +\@txt@msg{^^J^^J}% + }% +\def\CheckSevenBits/#1{\def\@tempa##1##2/##3{\ifx##2\empty\else% + \f@issue% + \@fw{-51- % + \@txt@msg{ERREUR : ce document n'a pas \'et\'e converti en 8-bits...}% + }% + \expandafter ##3\fi}\expandafter\@tempa\noexpand#1}% +\@ifundefined{tt}{\def\tt{\fontfamily{\ttdefault}\selectfont}}{}% +\edef\lq{\string`}\edef\rq{\string'}% +\let\@cilq='% +\edef\lqq{\string`\string`}\edef\rqq{\string'\string'}% +\edef\pointvirgule{\string;}% +\edef\deuxpoints{\string:}% +\let\@cidp=:% +\edef\pointexclamation{\string!}% +\edef\pointinterrogation{\string?}% +\edef\inferieura{\string<}% +\edef\superieura{\string>}% +\edef\dittomark{\string"}% +\let\f@par\par% +\let\@SLQ\lq% +\def\@SRQ@{^\bgroup\prim@s}% +\def\@SRQ{\ifmmode\expandafter\@SRQ@\else\rq\fi}% +\newif\ifFH% +\let\@noBDfr\@nodocument% +\def\frenchhyphenation{\@noBDfr}% +\def\nofrenchhyphenation{\@noBDfr}% +\def\frenchtypography{\@noBDfr}% +\def\regularmathcomma{\@noBDfr}% +\def\frenchmathcomma{\@noBDfr}% +\def\frenchwarnings{\@noBDfr}% +\def\nofrenchwarnings{\@noBDfr}% +\def\nofrenchtypography{\@noBDfr}% +\def\nofrenchtranslation{\@noBDfr}% +\def\frenchtranslation{\@noBDfr}% +\ifx\RIfM@\undefined% +\def\nofrenchguillemets{\@noBDfr}% +\def\frenchguillemets{\@noBDfr}% +\def\nofrenchbguillemets{\@noBDfr}% +\def\frenchbguillemets{\@noBDfr}% +\fi% +\global\let\ifCLAfrench\iffalse% +\def\ConstantLayout{\@noBDfr}% +\def\nofrenchmacros{\@noBDfr}% +\def\frenchmacros{\@noBDfr}% +\def\automaticlettrine{\@noBDfr}% +\def\noautomaticlettrine{\@noBDfr}% +\def\noeveryparguillemets{\@noBDfr}% +\def\everyparguillemets{\@noBDfr}% +\def\nofrenchlayout{\@noBDfr}% +\def\frenchlayout{\@noBDfr}% +\def\indentfirst{\@noBDfr}% +\def\nonindentfirst{\@noBDfr}% +\def\NouveauLangage{\@noBDfr}% +\def\letpunctutionactivefor{\@noBDfr}% +\def\@tempa{\let\ifarticle\iffalse}% +\ifx\ifarticle\undefined\expandafter\@tempa\fi% +\ifx\@seminarerr\undefined\else\ifarticle\else% +\let\@soORI\shipout% +\def\shipout#1#2{\def\@tempa{slide}\def\@tempb{slide*}% + {\ifx\@tempa\@currenvir\let\protect\noexpand% + \else\ifx\@tempb\@currenvir\let\protect\noexpand\fi% + \fi% + \@soORI#1#2}% + \global\let\shipout\@soORI% + }% +\fi\fi% +\let\h@yphenation\hyphenation% +\long\def\f@hyphenation#1{\bgroup% + \let\par\space% + \def\-{ }% + \let\allowhyphens\undefined% + \csname accenthyphcodes\endcsname% + \lowercase{\edef\@tempa{#1}}% + \h@yphenation{\@tempa}\egroup}% +\def\@tempa{\let\iffrenchbibliography\iftrue}% +\ifx\iffrenchbibliography\undefined\expandafter\@tempa\fi% +\ifx\nombre\undefined\else\let\@nomORI\nombre\fi% +\begingroup\obeyspaces% +\gdef\@@nombre{\ifFTY\@mathcomma\obeyspaces\let =\,\fi}% +\endgroup% +\def\@nombre#1{\bgroup\let\ifFTY\iftrue\def\@tempa{#1}% + \def\,{\ifmmode\mskip\thinmuskip\fi}% + \if@filesw{\immediate\openout\@inputcheck=\jobname.tmp% + \let\protect\noexpand% + \ifmmode% + \immediate\write\@inputcheck{\protect\makeatletter% + \protect\@@nombre% + \@tempa\ignorespaces}% + \else% + \immediate\write\@inputcheck{\protect\makeatletter% + \protect\@@nombre% + $\@tempa$\ignorespaces}% + \fi% + \immediate\closeout\@inputcheck% + }% + \immediate\openin\@inputcheck=\jobname.tmp% + \immediate\read\@inputcheck to\@tempa% + \immediate\closein\@inputcheck% + \def\@tempa{{\input{\jobname.tmp}}}% + \fi% + \@tempa\egroup% + }% +\ifx\nombre\undefined\DeclareRobustCommand*{\nombre}{\@nombre}\fi% +\ifx\WindowsUnits\undefined% + \def\WindowsUnits{\@wu}\fi% +\def\FileName{\bgroup% + \def\@FNenc@loop##1##2{\@tempcnta`##1\relax% + \loop\catcode\@tempcnta=11% + \ifnum\@tempcnta<`##2\relax% + \advance\@tempcnta\@ne% + \repeat}% + \@FNenc@loop\^^A\^^H% + \@FNenc@loop\^^K\^^K% + \@FNenc@loop\^^N\^^_% + \@FNenc@loop\^^?\^^ff% + \@FileName}% +\def\@FileName#1{\gdef\theFileName{#1}\egroup}% +\let\og\empty\let\fg\empty% + \def\FrenchGuillemetsFrom#1#2#3#4{% + \DeclareFontEncoding{#1}{}{}% + \DeclareFontSubstitution{#1}{#2}{m}{n}% + \DeclareTextCommand{\guillemotleft}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#3}}% + \DeclareTextCommand{\guillemotright}{OT1}{% + {\fontencoding{#1}\fontfamily{#2}\selectfont\char#4}}} + \def\CyrillicGuillemets{\FrenchGuillemetsFrom{OT2}{wncyr}{60}{62}} + \def\PolishGuillemets{\FrenchGuillemetsFrom{T1}{lmr}{19}{20}} + \def\LasyGuillemets{% + \DeclareTextCommand{\guillemotleft}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont(\kern-0.20em(}}% + \DeclareTextCommand{\guillemotright}{OT1}{\hbox{% + \fontencoding{U}\fontfamily{lasy}\selectfont)\kern-0.20em)}}} + \IfFileExists{t1lmr.fd}{\PolishGuillemets}{\LasyGuillemets} + \DeclareTextSymbolDefault{\guillemotleft}{OT1} + \DeclareTextSymbolDefault{\guillemotright}{OT1} + \def\guill@spacing{\penalty\@M\hskip.8\fontdimen2\font + plus.3\fontdimen3\font + minus.8\fontdimen4\font} + \DeclareRobustCommand*{\begin@guill}{\leavevmode + \guillemotleft\penalty\@M\guill@spacing} + \DeclareRobustCommand*{\end@guill}{\ifdim\lastskip>\z@\unskip\fi + \penalty\@M\guill@spacing\guillemotright\xspace} + \AtBeginDocument{\ifx\xspace\@undefined\let\xspace\relax\fi} + \def\bbl@frenchguillemets{\renewcommand{\og}{\begin@guill}% + \renewcommand{\fg}{\end@guill}} + \def\bbl@nonfrenchguillemets{\renewcommand{\og}{``}% + \renewcommand{\fg}{\ifdim\lastskip>\z@\unskip\fi ''}} +\def\@ifo{% +\def\kbIO{\bgroup% + \ifECM\fontencoding{OT1}\selectfont\fi% + \ifFTY\expandafter\nofrenchtypography\fi% + \let\@nobraces\@firstofone% + \let\protect\string% + \ifEightBitOutput% + \def\'####1{\expandafter\@nobraces\@aiguORI####1}% + \def\`####1{\expandafter\@nobraces\@gravORI####1}% + \def\^####1{\expandafter\@nobraces\@acchORI####1}% + \def\"####1{\expandafter\@nobraces\@tremORI####1}% + \def\c####1{\expandafter\@nobraces\@cediORI####1}% + \csname @kbspecials\endcsname% + \else% + \let\add@accent\@gobble% + \def\set@display@protect{\let\protect\noexpand}% + \fi% + \@kbtypeout}% +\let\s@owhyphens\showhyphens% +\let\@dsORI\dospecials% +\@ifundefined{@sanitize}{\def\@sanitize{\relax}}{}% +\let\@saORI\@sanitize% +\def\frenchhyphenation{% + \ifFH\else\FHtrue% + \edef\@uchORI{\the\uchyph}% + \def\@Hif{\ifFH}\let\@Hfi\fi% + \lccode `\'=`\'% + \ifx\flowercase\undefined\else\def\lowercase{\flowercase}\fi% + \@ifundefined{allowhyphens}{% + \def\allowhyphens{\ifhmode\nobreak\hskip\z@skip\fi}}{}% + \@ifundefined{lefthyphenmin}{}% + {\lefthyphenmin=2\righthyphenmin=3}% + \@whatUCH% + \def\@tempa####1{{\accenthyphcodes\h@yphenation{####1}}}% + \ifx\@tempa\hyphenation\f@issue% + \@fw{-41- \@txt@msg{your format is out of date, }% + \@txt@msg{please run initex again!}% + }\stop% + \fi% + \def\accenthyphcodes{% + \let\@typeset@protect\protect% + \ifx\protect\noexpand\else% + \ifECM\else\fontencoding{T1}% + \let\pickup@font\@gobble% + \let\size@update\relax\selectfont% + \fi\fi}% + \let\hyphenation\f@hyphenation% + \def\showhyphens####1{\bgroup% + \csname accenthyphcodes\endcsname% + \protected@edef\@tempa{####1}% + \s@owhyphens{\@tempa}\egroup}% + \fi}% +\def\nofrenchhyphenation{% + \ifFH\FHfalse% + \lccode`\'=0% + \let\hyphenation\h@yphenation% + \let\showhyphens\s@owhyphens% + \ifx\lowercaseORI\undefined\else\let\lowercase\lowercaseORI\fi% + \@ifundefined{lefthyphenmin}{}% + {\lefthyphenmin=2\righthyphenmin=3}% + \uchyph=\@uchORI% + \fi}% +\@tempcnta=\the\mathcode`,\@tempcntb=\the\mathcode`,% +\divide\@tempcnta by 4096\relax% +\multiply\@tempcnta by -4096\relax% +\advance\@tempcntb by \@tempcnta% +\edef\@tempb{\noexpand\mathcode`,=\the\@tempcntb}% +\advance\@tempcntb by 24576\relax% +\edef\@tempa{\noexpand\mathcode`,=\the\@tempcntb}% +\edef\regularmathcomma{% + \noexpand\def\noexpand\@mathcomma{\@tempa}% + \noexpand\@mathcomma}% +\def\@tempa{\if\space\next\else\mathord\fi\mathcomma}% +\let\ifFTY\iftrue% +\ifx\@tempa\sm@rtcomma% + \def\frenchmathcomma{% + \def\@mathcomma{\ifFTY\mathcode`\,="8000\fi}% + \@mathcomma}% +\else% +\edef\frenchmathcomma{% + \noexpand\def\noexpand\@mathcomma% + {\noexpand\ifFTY\@tempb\noexpand\fi}% + \noexpand\@mathcomma}% +\fi% +\frenchmathcomma% +\def\ifFTY{\ErrFrench}% +\def\nofrenchtypography{% + \let\ifFTY\iffalse\let\if@Back\ifFTY% +\expandafter\let\csname OT1\string\textbackslash \endcsname\undefined% + \nofrenchguillemets% + \nofrenchbguillemets% + \sloppy% + \nonfrenchspacing% + \regularmathcomma% + }% +\def\frenchtypography{% + \let\ifFTY\iftrue\let\if@Back\ifFTY% +\expandafter\let\csname OT1\string\textbackslash \endcsname\@boiORI% + \let\ifLPA\iffalse% + \typedspaces% + \frenchbguillemets% + \edef\@tempa{\the\vfuzz}% + \fussy% + \vfuzz=\@tempa% + \frenchspacing% + \frenchmathcomma% + }% +\def\nofrenchtranslation{% + \let\ifFTR\iffalse\@cORI}% +\def\frenchtranslation{% + \let\ifFTR\iftrue\captionsfrench}% +\let\frenchguillemets\relax\let\nofrenchguillemets\relax% +\let\frenchbguillemets\bbl@frenchguillemets% +\let\nofrenchbguillemets\bbl@nonfrenchguillemets% +\def\@tempa{\global\let\ifCLA\iffalse}% +\ifx\ifCLA\undefined\expandafter\@tempa\fi% +\def\ConstantLayout{\global\let\ifCLA\iftrue% + \expandafter\let\csname ifCLA\languagename\endcsname\iftrue% + \def\@tempa{\let\ifbbbbfixlanguage\iftrue}% + \ifx\ifbbbbfixlanguage\undefined\@tempa\fi% + \def\@tempa{\ifbbbbfixlanguage\else% + \f@issue% + \@fw{-85- \@txt@msg{Attention \string: l'option fixlanguage }% + \@txt@msg{n'a pas ete fournie a l'appel de babelbib}% + }\fi% + }% + \ifx\@nodocument\relax\@tempa% + \else\ifx\btxselectlanguage\undefined% + \PassOptionsToPackage{fixlanguage}{babelbib}% + \else\@tempa% + \fi% + \fi% + \let\ConstantLayout\relax}% +\def\nofrenchlayout{\nofrenchtrivsep% + \let\ifFLA\iffalse\@EIM}% +\def\frenchlayout{% + \let\ifFLA\iftrue\everyparguillemets% + \@FIM\@FL\let\@FL\empty\noautomaticlettrine% + \frenchtrivsep}% +\def\frenchwarnings{\let\ifFW\iftrue% + \frenchtrivsepwarnings}% +\def\nofrenchwarnings{\let\ifFW\iffalse% + }% +}% +\ifx\@ufo\undefined% + \let\@ufo\empty% +\fi% + \def\prim@s{\prime\futurelet\@let@token\pr@m@s}% + \def\pr@m@s{\ifx\@cilq\@let@token\expandafter\pr@@@s% + \else\ifx^\@let@token\expandafter\expandafter\expandafter\pr@@@t% + \else\egroup\fi% + \fi}% +\let\@fsORI\frenchspacing% +\def\frenchspacing{\@fsORI\ifECM\sfcode`\(=0\sfcode`\)=1000\fi}% +\catcode`<=\active\catcode`>=\active\catcode`'=\active% +\catcode`:=\active\catcode``=\active% +\let<=\inferieura\let>=\superieura% +\def\@Fstr{\def<{\@LSG}\def>{\@RSG}\def`{\@SLQ}\def'{\@SRQ}% + \def:{\deuxpoints}% + \let\dGs\empty}% +\def\@LiN{\let\@sogORI<\let\@sfgORI>\let\@lqORI`\let\@rqORI'% + \let\@dpORI:\@Fstr\@ifFTYfalse}% +\def\@LiB{\let<\@sogORI\let>\@sfgORI\let`\@lqORI\let'\@rqORI% + \let:\@dpORI\@ifFTYback}% +\catcode\lq:=12% +\let\@s@ORI\special% +\ifx\eTeXversion\undefined% +\def\newcount{\alloc@0\count\countdef\insc@unt}% +\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}% +\def\newbox{\alloc@4\box\chardef\insc@unt}% +\fi% +\let\ifFTY\iffalse% +\ifx\vref\undefined\else% +\@ifpackageloaded{varioref}{\def\@vrfCode{% + \@gG{vr}{vref}{/}{1}% + \@gG{vpr}{vpageref}{1}{1}% + \@gG{vprr}{vpagerefrange}{1}{2}% + \def\reftextpagerange##1##2{% + pages~\pageref{##1}\ifFTY -\else --\fi\pageref{##2}}% + }% + }{}% +\fi% +\def\ifFTY{\ErrFrench}% +\@ifclassloaded{beamer}{\let\l@chapter\empty% + \def\beamer@captiontemplate{\small\structure% + {\insertcaptionname\captionseparator\space}% + \insertcaption} + }{}% +\def\GOfrench{% + \def\special##1{\@ifFTYfalse\bgroup\@Fstr\@s@ORI{##1}% + \egroup\@ifFTYback}% + \let\@noBDfr\relax% + {\catcode\lq\<=\active\ifx<\undefined\else\global% + \let\@mLSG<\global% + \def\@LSG{\ifmmode\@mLSG\else\inferieura\fi}\fi}% + {\catcode\lq\>=\active\ifx>\undefined\else\global% + \let\@mRSG>\global% + \def\@RSG{\ifmmode\@mRSG\else\superieura\fi}\fi}% +\if@PMF\def\pmfrench{}\def\noeveryparguillemets{}\def\@stared{}% + \def\@desarm{}\def\@qquotes{}\def\@staring{}\def\@fniv2{}\fi% +\def\sm@llerthree{\protect\sm@ller\protect\sm@ller\protect\sm@ller} +\@ifundefined{smaller}{\def\sm@ller{\small}% + \let\sm@llerthree\scriptsize% + \def\l@rger{\large}}% + {\def\RSsmallest{4pt}% + \ifx\undefined\sm@ller% + \let\sm@ller\smaller\fi}% +\@ifundefined{footnotesize}{% + \def\footnotesize{\sm@ller\sm@ller}}{}% +\@ifundefined{Huge}{% + \def\Huge{\l@rger\l@rger\l@rger\l@rger\l@rger}}{}% +\def\noresetatpart{\ifFLA\let\cl@part\empty\fi}% +\def\noresetatchapter{\ifFLA\let\cl@chapter\empty\fi}% +\@ifundefined{chapter}{}{}% +\@ifundefined{c@chapter}{\newcounter{chapter}}{\@addtoreset{chapter}{part}}% +\@ifundefined{quotation}{\def\quotation{}}{}% +\ifx\tableofcontents\undefined% + \else\let\@tocORI\tableofcontents\fi% +\ifx\pdfstringdef\undefined% + \else\let\contentslineORI\contentsline\fi% +\@ifundefined{l@chapter}{% +\def\@tempa{% + \def\l@chapter####1####2{\addpenalty{-\@highpenalty}% + \vskip 1.0em plus\p@\@tempdima 1.5em% + \begingroup% + \parindent \z@ \rightskip \@pnumwidth \parfillskip -\@pnumwidth% + \bfseries \leavevmode \advance\leftskip\@tempdima \hskip -\leftskip% + ####1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss ####2}\par% + \penalty\@highpenalty% + \endgroup}}% +\ifx\RIfM@\undefined\@tempa% + \else% + \ifx\fr@RIfM@cls\undefined\@tempa +\fi% +\fi}{}% +\@ifundefined{theHchapter}{}% + {\renewcommand{\theHchapter}{\arabic{part}.\arabic{chapter}}}% + \def\@gG##1##2##3##4{% + \def\@temp@{\expandafter\let\csname @##1@ORI\endcsname=}% + \expandafter\@temp@\csname ##2\endcsname% + \if##3\empty% + \if2##4% + \expandafter\def\csname ##2\endcsname####1####2% + {\protect\atgG{##1}{{####1}{####2}}}% + \else% + \if3##4% + \expandafter\def\csname ##2\endcsname####1####2####3% + {\protect\atgG{##1}{{####1}{####2}{####3}}}% + \else% + \expandafter\def\csname ##2\endcsname####1% + {\protect\atgG{##1}{{####1}}}% + \fi% + \fi% + \else% + \if/##3\expandafter\def\csname ##2\endcsname{\protect\atgH{##1}}% + \else% + \if2##4\expandafter\def\csname ##2\endcsname{\protect\atgN{##1}}% + \else\expandafter\def\csname ##2\endcsname{\protect\atgM{##1}}% + \fi% + \fi% + \fi}% + \def\atgG##1##2{\bgroup\@ifFTYfalse\@Fstr% + \expandafter\csname @##1@ORI\endcsname##2\egroup}% + \def\atgH##1##2{\bgroup\@ifFTYfalse\@Fstr% + \expandafter\csname @##1@ORI\endcsname{##2}\egroup}% + \def\atgM##1{\@ifNextNB[{\@gM@@{##1}}{\@gM@@{##1}[\empty]}% + }% + \def\atgN##1{\@ifNextNB[{\@gM@@@{##1}}{\@gM@@@{##1}[\empty]}% + }% + \def\@gM@@##1[##2]##3{\@gM@@@{##1}[##2]{##3}{}}% + \def\@gM@@@##1[##2]##3##4{\bgroup\@ifFTYfalse\@Fstr% + \xdef\@temp@{\noexpand\@gG@{##3}{##4}}\egroup% + \ifx\empty##2\let\@gG@=\empty% + \else\protected@edef\@gG@{[##2]}\fi% + \let\@typeset@protect\protect% + \protected@edef\@temp@{\noexpand\expandafter% + \noexpand\expandafter% + \noexpand\csname @##1@ORI\noexpand\endcsname% + \@temp@}\@temp@}% +\ifx\babel@sanitize@arg\undefined\else% +\def\babel@sanitize@arg##1{##1}% +\wlog{\frenchname.sty\string: use of the babel package force me to nullify % + \noexpand\babel@sanitize@arg.}% +\fi% +\ifx\ifthenelse\undefined\else\let\@iTeORI\ifthenelse% + \long\def\ifthenelse##1##2##3{\@ifFTYfalse\@iTeORI{##1}% + {\@ifFTYback##2}{\@ifFTYback##3}}% +\fi% +\ifx\texttt\undefined\else\@gG{xt}{texttt}{/}{1}% + \MakeRobustCommand{texttt}\fi% +\ifx\hyperbaseurl\undefined\else\@gG{hl}{hyperbaseurl}{/}{1}\fi% +\ifx\Ginclude@graphics\undefined\else\@gG{ig}% + {Ginclude@graphics}{/}{1}\fi% +\ifx\NAT@citex\undefined% + \ifx\cite\undefined\else\@gG{c}{cite}{1}{1}\fi% + \ifx\citeyear\undefined\else\@gG{cy}{citeyear}{/}{1}\fi% +\else% + \let\@cxORI\@citex% + \def\@citex[##1][##2]##3{\@ifFTYfalse% + \let\mbox\mboxORI% + \@cxORI[##1][##2]{##3}\aftergroup\@ifFTYback}% +\@gG{cin}{citation}{/}{1}% + \ifx\ifjb@index@bib\undefined\let\ifjb@index@bib\iffalse\fi% + \ifx\jb@lbibitem\undefined\else% + % + % + \def\jb@lbibitem[##1]##2{% + \gdef\jb@tempb{##1}% + \protected@xdef\jb@key{##2}% + \ifjb@index@bib% + \jb@call@index{aut}{##2}% + \jb@call@index{ed}{##2}% + \jb@call@index{org}{##2}% + \fi% + \endgroup}% + \@gG{fc}{fullcite}{1}{1}% + \fi% +\fi% +\ifx\nocite\undefined\else\@gG{nc}{nocite}{/}{1}\fi% +\ifx\backcite\undefined\else\@gG{bkc}{backcite}{//}{2}\fi% +\ifx\bibitem\undefined\else\let\@biORI\bibitem% + \def\bibitem{\@LiN\@ifNextNB[{\@bi@cb}{\@bi@ca}% + }% + \def\@bi@ca##1{\@biORI{##1}\@LiB}% + \def\@bi@cb[##1]##2{\@biORI[##1]{##2}\@LiB}% +\fi% +\expandafter\ifx\string\bt@@item\undefined% + \else\@gG{bti}{\string\bt@@item}{1}{1}% + \fi% +\ifx\vref\undefined\else% + \ifx\reftextvario\undefined\let\@vrfCode\undefined% +\fi\fi% +\ifx\ref\undefined\else\@gG{r}{ref}{/}{1}\fi% +\ifx\tag\undefined\else\@gG{tG}{tag}{/}{1}\fi% +\ifx\pageref\undefined\else\let\pageref@ORI\pageref% + \let\f@pageref\pageref\@gG{fpr}{f@pageref}{/}{1}% + \def\pageref{\ifFTY\expandafter\f@pageref\else% + \expandafter\pageref@ORI\fi}% +\fi% +\csname @vrfCode\endcsname% +\xdef\@lim{}\let\ifMOVING\iffalse% +\ifx\sf@@sub@label\undefined\else\@gG{ss}{sf@@sub@label}{/}{1}\fi% +\def\@temp@{% + \def\label{\protect\@LabeL}% +\def\r@LabeL{\ifx\@lim\empty% + \else\marginpar{\@lim@}\xdef\@lim{}% + \fi}% +\def\m@LabeL{\def\@setMGtrue{\let\ifMOVING\iftrue}% + \ifmmode\@setMGtrue% + \aftergroup\r@LabeL% + \fi% + \expandafter\t@LabeL}% +\def\@LabeL{\ifMOVING\expandafter\t@LabeL% + \else\m@LabeL% + \fi}% + \def\t@LabeL####1{\@ifFTYfalse\if@labelsinmargin\ifMOVING% + \xdef\@lim{\ifx\@lim\empty\else\@lim\@@par\relax\fi[####1]}% + \gdef\@lim@{\@ifFTYfalse\hbadness=\@M\tt\@lim\@ifFTYback}% + \else\marginpar{% + \@ifFTYfalse\hbadness=\@M\tt[####1]\@ifFTYback}\fi\fi% + % + \bgroup\@Fstr\@lORI{####1}\egroup\@ifFTYback}% + }% +\ifx\fr@RIfM@cls\undefined\else% +\let\@mtORI\maketitle% +\def\maketitle{{\@mtORI}}% +\fi% +\ifx\label\undefined\else\let\@lORI\label% + \@temp@% + \let\ltx@label\label% +\fi% +\ifx\@newl@bel\undefined\else\@gG{nl}{@newl@bel}{//}{3}\fi% +\def\@temp@{% + \let\@aclORI\addcontentsline% + \global\let\ifCG\iftrue% + \def\addcontentsline####1####2####3{\@ifFTYfalse\bgroup\@Fstr% + \@aclORI{####1}{####2}{####3}\egroup\@ifFTYback}% + }% +\@ifundefined{addcontentsline}{\gdef\addcontentsline##1##2##3{}}% + {\@temp@}% +\let\ifFrench\iffalse% +\def\@temp@{% + \def\index{\bgroup\ifFrench\@DFP\fi% + \expandafter\egroup\@iORI}% + }% +\ifx\index\undefined\else\let\@iORI\index% + \@temp@% +\fi% +\ifx\list\undefined\else% + \let\@liORI\list% +\fi% + \let\@topsepORI\topsep% + \let\@partopsepORI\partopsep% + \let\@itemsepORI\itemsep% + \let\@parsepORI\parsep% +\def\warn@seps{\def\topsep{\@w@s{\string\topsep}\@topsepORI}% + \def\partopsep{\@w@s{\string\partopsep}\@partopsepORI}% + \def\itemsep{\@w@s{\string\itemsep}\@itemsepORI}% + \def\parsep{\@w@s{\string\parsep}\@parsepORI}% + \def\@tempa{verse}\def\@tempb{quotation}% + \ifx\@tempa\@currenvir\let\@w@s\@gobble\else% + \ifx\@tempb\@currenvir\let\@w@s\@gobble\fi% + \fi% + }% +\def\@w@s##1{\ifFTSW\f@issue% + \@fw{-58- \@txt@msg{valeur de ##1 ignor\'ee}% + }[##1]\fi}% +\def\org@seps{\let\topsep\@topsepORI% + \let\partopsep\@partopsepORI% + \let\itemsep\@itemsepORI% + \let\parsep\@parsepORI% + }% +\def\list##1##2{\def\@inAlist{}\@liORI{##1}{% + \ifx\@trivlist\@tlORI\else\warn@seps\fi% + ##2\org@seps}}% +\ifx\@makecaption\undefined\else\let\@mcORI\@makecaption\fi% +\ifx\captionseparator\undefined% + \def\captionseparator{~--}% +\fi% +\let\ifFTY\iffalse% +\ifx\@contdelim\undefined\else% + \ifx\@memerror\undefined% + \let\@cdORI\@contdelim% + \def\@contdelim{\ifFTY\space\else\@cdORI\fi}% + \else% + \let\captionseparator\empty% + \let\captionfont\@conttfont% + \fi% +\fi% +\def\ifFTY{\ErrFrench}% +\ifx\captionfont\undefined% + \let\captionfont\emph% + \else\let\@cfORI\captionfont% + \def\captionlabelfont{\upshape}% + \def\captionfont{\itshape\@cfORI}% + \ifx\captionlabeldelim\undefined\else% + \let\captionlabeldelim\captionseparator% + \let\captionseparator\empty% + \fi% +\fi% +\def\@makecaption##1##2{\ifFTY% + \def\@secondofmany####1####2\void{####2}% + \def\@tempa{\@secondofmany##2\void}% + \ifx\@tempa\empty% + \let\captionseparator\empty% + \fi% + \@mcORI{##1}{\relax% + \captionfont{##2}}% + \else\@mcORI{##1}{##2}\fi}% +\def\@temp@{% + \def\thanks####1{\global\let\@makefntext\fr@makefntext% + \bgroup% + \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi\nobreak\fi% + \def\@footnotemark{\hbox{\@textsuperscript{\normalfont\,\@thefnmark}}}% + \fi\let\ifFTY\iffalse\@thORI{####1}% + \egroup}% + }% +\ifx\thanks\undefined\else\let\@thORI\thanks\@temp@\fi% +\let\ifFTY\iffalse% +\ifx\@makefnmark\undefined\else\let\@mfnmORI\@makefnmark% +\def\@makefnmark{\ifFTY\hbox{\@textsuperscript{\normalfont% + \ifx\thefootnote\relax\else\,\fi% + \@thefnmark}}% + \else\@mfnmORI\fi}% +\fi% +\def\@temp@{\long\def\fr@makefntext####1{% + \bgroup% + \ifFTY\def\@tempa{footnote}\let\@tfnORI\@thefnmark% + \ifx\@tempa\@mpfn% + \def\@thefnmark{% + % + \egroup\egroup% + \long\def\@tempa{\fnsymbol{footnote}}% + \ifx\@tempa\thefootnote% + \expandafter\raise+0.55ex% + \fi% + \hbox\bgroup\textnormal\bgroup% + \def\@temp@{% +\ifx\fr@RIfM@cls\undefined% +\ifx\thanks\relax\else\kern-1.1\parindent\fi% +\else \kern-\parindent% +\fi% + \@ifnextchar\relax{\def\@temp@{\hphantom{.}\kern+0.25em}}% + {\def\@temp@{.\kern+0.25em}}% + }% + \expandafter\@temp@\@tfnORI\@temp@% + }% + \leavevmode\kern+0.5em% + \else\def\@thefnmark{\@tfnORI\,}\fi% + \fi\@mfntORI{####1}\egroup}% + }% + \let\@mfntORI\@makefntext\@temp@% + \let\@makefntext\fr@makefntext% +\def\ifFTY{\ErrFrench}% +\let\@fntORI\@footnotetext% +\long\def\@footnotetext##1{\bgroup\let\if@labelsinmargin\iffalse% + \@fntORI{##1}\egroup}% +\let\@fnORI\footnote% +\def\footnote{\bgroup% + \def\index{\@ifnextchar[{\f@index}% + {\f@index@}% + }% + \def\f@index[####1]####2{\@ifFTYfalse\@iORI[####1]{####2}% + \@ifFTYback}% + \def\f@index@####1{\@ifFTYfalse\@iORI{####1}\@ifFTYback}% + \ifFTY\ifhmode\ifdim\lastskip>\z@\unskip\fi% + \nobreak\fi\fi% + \ifmmode\let\@fnORI\fr@footnote\fi% + \@ifNextNB[% + \@Footnote\@Fntnorm}% +\long\def\@Footnote[##1]##2{\@fnORI[##1]{##2}% + \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}% +\long\def\@Fntnorm##1{\@fnORI{##1}% + \egroup\@ifNextNBc\footnote\refmark\@Fntcoma{}}% +\def\@Fntcoma{\ifFLA\@textsuperscript{,}\nobreak\fi}% +\def\@Fxloat##1[##2]{\@xfORI{##1}[##2]\csname @Fend\@currenvir\endcsname}% +\let\@fgeORI\figure\let\@efgeORI\endfigure% +\def\@temp@{\let\@fgeORI\figure% + \def\figure{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \@set@fr@fn@% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@fgeORI}}% +\ifx\figure\undefined\let\@temp@\relax\fi\@temp@% +\def\@Fendfigure{\let\@efgeORI\endfigure% + \def\endfigure{\@efgeORI% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}}% +\ifx\endfigure\undefined\let\@Fendfigure\relax\fi% +\let\@cnORI\caption% +\def\@tablescaption{\@dblarg\@t@blescaption}% +\let\mboxORI\mbox% +\def\mbox##1{\leavevmode\hbox{\protect\@set@fr@fn@##1}}% +\def\@set@fr@fn@{\ifFrench\let\footnote\fr@footnote\fi}% +\def\fr@footnote{\@ifNextNB[\fr@fn@{\fr@fn@[]}% + }% +\def\fr@fn@[##1]##2{\footnotemark% + \f@issue% + \@fw{-8- \@txt@msg{\string\footnotetext{##2} perdu.} + \@txt@msg{Coder \'event. \string\protect\string\footnote}% + }[##2]% + }% +\def\@t@blescaption[##1]##2{\let\cur@fn\footnote% + \let\footnote\fr@footnote% + \@cnORI[##1]{##2}\let\footnote\cur@fn}% +\def\@temp@{% + \let\@tbeORI\table% + \def\table{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \ifFLA\begingroup% + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}\c@mpfootnote\z@% + \ifx\@captype\undefined\def\@captype{table}\fi% + \let\caption\@tablescaption% + \let\@footnotetext\@mpfootnotetext\fi% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@tbeORI}% + \expandafter\let% + \expandafter\@dbtbeORI\csname table*\endcsname% + \expandafter\def\csname table*\endcsname{\let\ifMOVING\iftrue% + \let\if@minipage\iftrue% + \ifFLA\begingroup% + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}\c@mpfootnote\z@% + \ifx\@captype\undefined\def\@captype{table}\fi% + \let\caption\@tablescaption% + \let\@footnotetext\@mpfootnotetext\fi% + \ifx\@xfORI\undefined% + \let\@xfORI\@xfloat\let\@xfloat\@Fxloat% + \fi% + \@dbtbeORI}% + }% +\ifx\table\undefined\let\@temp@\relax\fi\@temp@% +\def\@Fendtable{% + \let\@etORI\endtable% + \def\endtable{\ifFLA\par% + \vskip-\lastskip% + \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% + \footnoterule\unvbox\@mpfootins\fi% + \fi\@etORI\ifFLA\endgroup\fi% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}% + }% +\ifx\endtable\undefined\let\@Fendtable\relax\fi% +\def\@temp@{\def\endtable{\ifFLA\endgroup% + \expandafter\let\csname endtable*\endcsname\endtable% + \fi}% + }% +\ifx\endtable\relax\@temp@% +\fi% +\expandafter\def\csname @Fendtable*\endcsname{% + \expandafter\let% + \expandafter\@dbetORI\csname endtable*\endcsname% + \expandafter\def% + \csname endtable*\endcsname{\ifFLA\par% + \vskip-\lastskip% + \ifvoid\@mpfootins\else\vskip\skip\@mpfootins% + \footnoterule\unvbox\@mpfootins\fi% + \fi\@dbetORI\ifFLA\endgroup\fi% + \ifx\@lim\empty\else\marginpar{\@lim@}% + \xdef\@lim{}\fi\let\ifMOVING\iffalse}% + }% +\expandafter\ifx\csname endtable*\endcsname\relax% + \expandafter\let\csname endtable*\endcsname\endtable% +\fi% +\expandafter\ifx\csname\string\table\endcsname\undefined\else% + \expandafter\let\expandafter\BfigureORI\csname\string\figure\endcsname% + \expandafter\def\csname\string\figure\endcsname{\@Fendfigure\BfigureORI}% + \expandafter\let\expandafter\BtableORI\csname\string\table\endcsname% + \expandafter\def\csname\string\table\endcsname{\@Fendtable\BtableORI}% +\fi% +\ifx\undefined\Hy@PDFDef\let\Hy@PDFDef\pdfstringdef\fi% +\ifx\undefined\Hy@PDFDef\else% + \let\@hpdORI\Hy@PDFDef% + \def\Hy@PDFDef##1##2{\@ifFTYfalse\afterassignment% + \@Fstr\@hpdORI{##1}{##2}\@ifFTYback}% +\fi% +\ifx\pdfstringdef\undefined\else% + \let\pdfstringdef\Hy@PDFDef% +\fi% + \let\@lti\labelitemi\let\@ltii\labelitemii% + \let\@ltiii\labelitemiii\let\@ltiv\labelitemiv% + \@ifo% + \let\@ifo\undefined% + \@doFh% + \let\@doFh\undefined% + \let\hyphex\undefined\let\frhyphex\undefined% + \let\@temp@\undefined% + \let\ifFTY\iffalse\let\ifFTR\iffalse% + \let\ifFLA\iffalse\let\ifFMA\iffalse\let\ifFH\iffalse% +\def\@tempa##1{\o@everypar{\rl@everypar##1}}% +\ifx\@tempa\everypar\let\TeXeverypar\o@everypar% +\else\let\TeXeverypar=\everypar% +\fi% + \ifx \TeXXeTstate \undefined% + \edef \next {\ifx \beginL \undefined 00\else 01\fi}% + \else% + \edef \next {\ifnum \TeXXeTstate = 0 00\else 01\fi}% + \fi% + \if \next\let\beginL\relax\let\beginR\relax% + \else% + \edef\@fepORI{{\the\TeXeverypar}}% + \def\@SetBFWdirection{\csname begin% + \beginFWdirection\endcsname}% + \TeXeverypar={\@SetBFWdirection% + \let\@SetBFWdirection\relax% + {\let\@nodocument\relax% + \@fepORI}}% + \fi% + \let\ErrFrench\@Ffnt\def\@Ffnt##1{}% +\ifx\undefined\babel@core@loaded% +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- this file and other auxiliary files require to % + use the following}}}% +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- LaTeX packages: \frenchpack!}}}% +\protected@write\@auxout{}{\protect% +\csname auxWARNINGi\protect\endcsname{\protect\typeout% + {-34- check \protect\protect\protect\usepackage% + \protect\space or remove these files. % + Typesetting is aborted!}% + \protect\stop}}% +\fi% +\@finput{frlpatch.sty}% + \ifx\FSfd@patch\FSfd\else + \f@issue% + \@fw{-42- % + \@txt@msg{The French patch file (frlpatch.sty) is not suitable^^J}% + \@txt@msg{for this version of the "\frenchpack" package dated \FSfd}% + }% + \batchmode\@@end% + \fi% + \let\@Ffnt\ErrFrench\let\ErrFrench\undefined% + \IfFileExists{\frenchname.cfg}{% + \f@issue% + \@fw{-48- \@txt@msg{Lecture du fichier de }% + \@txt@msg{configuration de \frenchpack}% + }% + \@finput{\frenchname.cfg}}{}% + \beginlanguage}% + \let\@dORI\document% + \def\document{% + \ifx\noxcomment\undefined\else% + \global\let\@x@hk\xcomment@hook\global\noxcomment\fi% + \ifx\btxselectlanguage\undefined% + \else\ifx\babel@savevariable\undefined% + \f@issue\@fw{-87- % + \@txt@msg{ERREUR \string: }% + \@txt@msg{babelbib s'utilise uniquement avec babel}% + }% + \stop% + \fi% + \fi% + \ifx\@bglngpk\babel@savevariable% + \else% + \f@issue\@fw{-71- % + \@txt@msg{ATTENTION : }% + \@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}% + }% + \fi\let\@bglngpk\undefined% + \@dORI% + \GOfrench% + \let\GOfrench\undefined% + \ifx\noxcomment\undefined\else\let\xcomment@hook\@x@hk% + \expandafter\xcomment@hook\fi}% +\@makeother`\@makeother<\@makeother>\@makeother'% +\let\enddocumentasusual\enddocument% + \def\enddocument{\def\@tempa{\AtEndDocument{\french\f@clearpage% + \global\let\ifCLA\iffalse% + \let\ifCLAfrench\iffalse% + \endfrench}}% + \csname f@lastpage\endcsname% + \@CGroup% + \ifFLA% + \@tempa% + \def\@tempa{empty}\ifx\@specialstyle\@tempa% + \else\gdef\@specialstyle{french}\fi% + \fi% + \let\GOfrench\relax% + \switchtolanguage\englishTeXmods% + \let\f@clearpage\clearpage% +\ifx\lastpage@putlabel\undefined% +\else\let\clearpage\relax% + \let\lastpage@putlabelORI\lastpage@putlabel% + \def\lastpage@putlabel{\addtocounter{page}{+1}\lastpage@putlabelORI% + \addtocounter{page}{-1}}% +\fi% + % + \ifx\undefined\babel@core@loaded\else% + \ifx\@testdef\undefined\else% + \@gG{@td}{@testdef}{//}{3}\fi% + \fi% + % +\ifx\ConfigureToc\undefined\else% + \let\@ifFTYfalse\relax\let\@ifFTYback\relax% + \@Fstr\let\@Fstr\relax% +\fi% + \enddocumentasusual% + }% +\let\@whatUCH\relax% +\def\@eatDP{\@ifNextNB:{\@gobble}{}}% +\def\f@ffrench{\ifx\listoffigures\relax\else% + \figurename~\thefigure\ifFTY\captionseparator\fi\fi% + \ifFTY\expandafter\@eatDP\fi}% +\def\f@tfrench{\ifx\listoftables\relax\else% + \tablename~\thetable\ifFTY\captionseparator\fi\fi% + \ifFTY\expandafter\@eatDP\fi}% +\def\unnumberedcaptions#1{\@noBDfr% + % + \expandafter\let\csname listof#1s\endcsname\relax% + \ifx\listoffigures\relax\ifx\listoftables\relax% + \let\unnumberedcaptions\undefined% + \fi\fi% + }% +%===== traitement de l'anglais =====% +\def\beginlanguage{% might be used at \begin{document} time + \ifx\selectlanguage\undefined\english% + \else\selectlanguage{english}\fi}% +\edef\beginFWdirection{L}% write Left to right +\ifx\undefined\babel@core@loaded% + \DeclareOption{english}{\def\beginlanguage{% language to start + \ifx\selectlanguage\undefined\english% + \else\selectlanguage{english}\fi}% + }% + \ProcessOptions% English option need, at least, to be processed. +\fi% +\expandafter\ifx\csname englishTeXmods\endcsname\relax%.\ifundefined +\else \endinput \fi%........ \then go ahead \else do nothing \fi +\ifx\@ifundefined\undefined% +\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname%.......... \@ifundefined + #1\endcsname\relax#2\else#3\fi}% +\fi% +\let\ifCLAenglish\iffalse% +\def\@tempa{\global\let\ifCLA\iffalse% + }% +\ifx\ifCLA\undefined\expandafter\@tempa\fi% + +\global\let\ifnonenglishheadings\iffalse%english style allows english headings! +\gdef\captionsenglish{%...................................... \captionsenglish + \ifx\captionsnames\captionsenglish\else + \def\pagename{page}% + \def\refname{References}% + \def\abstractname{Abstract}% +\ifx\bibname\undefined\else% + \def\bibname{Bibliography}% +\fi% +\ifx\btxselectlanguage\undefined% Don't call \bibsenglish if babelbib loaded. + \csname bibsenglish\endcsname% +\fi% + \def\contentsname{Table of Contents}% + \def\listfigurename{List of Figures}% + \def\listtablename{List of Tables}% +\ifx\listalgorithmname\undefined\else% + \def\ALG@name{algorithm}% + \def\listalgorithmname{List of \ALG@name s}% +\fi% + \def\indexname{Index}% + \def\seename{\emph{see}}% used normally in makeidx.sty + \def\seealsoname{\emph{see also}}% added macro \seealso + \def\figurename{Figure}% + \def\tablename{Table}% + \def\partname{Part}% + \def\glossaryname{Glossary}% + \def\kwname{\textbf{Keywords}: }% + \def\draftname{DRAFT}% + \def\prefacename{Preface}% +\ifx\proofname\undefined\else% + \def\proofname{Proof}% +\fi% +\ifx\opening\undefined\else% + \def\headtoname{To}% + \def\ccname{cc}% + \def\enclname{Encl}% + \def\PSname{PS:}% Post-Scriptum + \def\Objectname{Subject:}% Subject of the letter + \def\YourRefname{Your Ref:}% Your reference number + \def\OurRefname{Our Ref:}% Our reference number + \def\emailname{email:}% Email address +\fi% +\ifx\slidename\undefined\else% + \def\slidename{Slide}% +\fi% +\ifx\notesname\undefined\else% + \def\notesname{Notes}% +\fi% +\ifnonenglishheadings% Bypass to a LaTeX slight bug... +\else% + \def\chaptername{Chapter}% +\fi% + \def\appendixname{Appendix}% + \fi% +\let\captionsnames\captionsenglish% +}% +\@ifundefined{englishTeXmods}{%................................ \englishTeXmods + \gdef\englishTeXmods{%\captionsnames are normally restored by prev. langua. + \ifCLA + \ifCLAenglish% + \ifx\captionsnames\captionsenglish% + \else\captionsenglish\dateenglish% + \fi% + \fi% + \else% + \ifx\captionsnames\captionsenglish% + \else\captionsenglish\dateenglish% + \fi% + \fi% + \csname @xtrasenglish\endcsname% + \def\languagename{english}% set it for mlp. + \let\switchtolanguage\endenglish% + }% + }{}% +\ifx\dateenglish\undefined%...................................... \dateenglish +\def\dateenglish{\def\today{\ifcase\day\or 1st\or 2nd\or 3rd\or 4th\or 5th\or + 6th\or 7th\or 8th\or 9th\or 10th\or 11th\or 12th\or 13th\or 14th\or 15th\or + 16th\or 17th\or 18th\or 19th\or 20th\or 21st\or 22nd\or 23rd\or 24th\or + 25th\or 26th\or 27th\or 28th\or 29th\or 30th\or 31st\fi~\ifcase\month\or + January\or February\or March\or April\or May\or June\or July\or August\or + September\or October\or November\or December\fi\space \number\year}}% +\fi% +\ifx\undefined\babel@core@loaded% + \edef\extrasenglish{}\def\@xtrasenglish{\extrasenglish}% for other packages. +\else% the date mechanism + \let\extrasenglish\englishTeXmods% +\fi% +\@ifundefined{english}{\gdef\english{\relax}}{}% Default............ \english +\@ifundefined{switchtolanguage}{%............................ \switchtolanguage + \gdef\switchtolanguage#1{#1}}{}% +\let\@enstORI\switchtolanguage% save original switchtolanguage if any. +\let\englishORI\english% assuming \language=x was set here +\def\endenglish{\let\switchtolanguage\@enstORI% + \ignorespaces}% but they are not after \end{english} ! +\let\noextrasenglish\endenglish% +\def\english{\switchtolanguage\englishTeXmods\englishORI%...... Final \english + \ignorespaces}% but they are not after \begin{english} ! +\english% Ready now to activate the mechanism [english is the default language] +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%===================================% +\def\languagename{french}% +\let\ifnonenglishheadings\iftrue% +\def\datefrench{% +\def\todayfrench{\ifx\ier\undefined\def\ier{er}\fi% + \ifnum\day=1\relax 1\ier% + \else \number\day\fi% + \space\ifcase\month\or janvier\or f\'evrier\or mars\or % + avril\or mai\or juin\or juillet\or ao\^ut\or septembre\or % + octobre\or novembre\or d\'ecembre\fi \space\number\year}% +}\datefrench% +\if@filesw + \def\ordinalSecondNam{{s}econd}% + \def\ordinalSecondName{{s}econde}% +\else% + \def\ordinalSecondNam{{d}euxi\`eme}% + \let\ordinalSecondName\ordinalSecondNam% +\fi% + \def\@osn#1#2{\expandafter\ifx\csname#1osn\endcsname% + \relax#2\else\csname#1osn\endcsname\fi}% + \def\ordinal#1{\ifcase\value{#1}\or {p}remier% + \or\@osn{#1}{\ordinalSecondNam}\else\ordin@l{#1}\fi}% + \def\ordin@l#1{\ifcase\value{#1}\or\or\or % + {t}roisi\`eme\if@filesw{\protected@write\@auxout{}{% + \protect\expandafter% + \protect\gdef\protect\csname#1osn% + \protect\endcsname% + {{d}euxi\`eme}}}% + \fi% + \or {q}uatri\`eme\or {c}inqui\`eme\or {s}ixi\`eme\or % + {s}epti\`eme\or {h}uiti\`eme\or {n}euvi\`eme\or {d}ixi\`eme\or % + {o}nzi\`eme\or {d}ouzi\`eme\or {t}reizi\`eme\or {q}uatorzi\`eme\or % + {q}uinzi\`eme\or {s}eizi\`eme\or {d}ix-septi\`eme\or {d}ix-huiti\`eme\or % + {d}ix-neuvi\`eme\or {v}ingti\`eme\fi}% + \def\ordinale#1{\ifcase\value{#1}\or {p}remi\`ere% + \or\@osn{#1}{\ordinalSecondName}\else\ordin@l{#1}\fi}% + \def\Ordinal{\expandafter\uppercase\ordinal}% + \def\Ordinale{\expandafter\uppercase\ordinale}% +\def\captionsfrench{% + \ifFTR% + \ifx\captionsnames\captionsfrench\else% + \let\@tdORI\today% + \let\f@fORI\fnum@figure% + \let\f@tORI\fnum@table% + \let\@cnsORI\captionsnames% + \def\pagename{page}% + \def\refname{R\'ef\'erences}% + \def\abstractname{R\'esum\'e}% +\ifx\bibname\undefined\else% + \def\bibname{Bibliographie}% +\fi% +\ifx\btxselectlanguage\undefined% + \csname bibsfrench\endcsname% +\fi% + \def\contentsname{Table des mati\`eres}% + \def\listfigurename{Table des figures}% + \def\listtablename{Liste des tableaux}% +\ifx\listalgorithmname\undefined\else% + \def\ALG@name{algorithme}% + \def\listalgorithmname{Liste des \ALG@name s}% +\fi% + \def\indexname{Index}% + \def\seename{\emph{voir}}% + \def\seealsoname{\emph{voir aussi}}% + \def\figurename{\textsc{Fig.}}% + \def\tablename{\textsc{Tab.}}% + \def\sommairename{Sommaire}% + \def\partname{% + \ignorespaces\Ordinale{part}\space partie% + \@RPtNoInDoc\noexpand\@RPtNoInToc}% + \def\glossaryname{Glossaire}% + \def\kwname{\textbf{Mots-cl\'e} : }% + \def\draftname{- \noexpand\351preuve -}% + \def\prefacename{Pr\'eface}% +\ifx\proofname\undefined\else\def\proofname{D\'emonstration}\fi% +\ifx\fr@RIfM@cls\undefined% + \let\fnum@figure\f@ffrench% + \let\fnum@table\f@tfrench% + \def\@RPtNoInToc{}% + \def\@RPtNoInDoc{\def\thepart{}}% + \else\def\@RPtNoInToc##1.{.}% + \def\@RPtNoInDoc##1\thepart{}% +\fi% +\ifx\opening\undefined\else% + \def\headtoname{}% + \def\ccname{c.c. }% + \def\enclname{P.j. }% + \def\PSname{P.-S. :}% + \def\Objectname{Objet :}% + \def\YourRefname{v/r\'ef. :}% + \def\OurRefname{n/r\'ef. :}% + \def\emailname{m.\'el. :}% +\fi% +\ifx\slidename\undefined\else% + \def\slidename{Transparent}% + \def\listslidename{Liste des transparents}% +\fi% +\ifx\notesname\undefined\else% + \def\notesname{Notes}% +\fi% + \def\chaptername{Chapitre}% + \def\appendixname{Annexe}% + \let\captionsnames\captionsfrench% + \fi% + \let\today\todayfrench% +\def\@cORI{\@cnsORI% + \let\today\@tdORI% + \let\fnum@figure\f@fORI% + \let\fnum@table\f@tORI}% +\fi% +}% +\let\@tlORI\@trivlist% +\def\frenchtrivsepwarnings{\let\ifFTSW\iftrue}% +\def\nofrenchtrivsepwarnings{\let\ifFTSW\iffalse}% +\long\def\frtrivseplengths#1{% + \nofrenchtrivsepwarnings% + \long\def\fr@tsl{#1}% + }% +\def\fr@tsl{\setlength{\parsep}{0.2ex plus 0.1ex minus 0.1ex}% + \setlength{\itemsep}{0.2ex plus 0.1ex minus 0.1ex}% + \setlength{\topsep}{0.4ex plus 0.2ex minus 0.2ex}% + \setlength{\partopsep}{1.6ex plus 0.8ex minus 0.8ex}% + }% +\def\frenchtrivsep{\ifFLA\def\@trivlist{% + \fr@tsl\@tlORI}% + \fi} +\def\nofrenchtrivsep{\let\@trivlist\@tlORI}% +\@ifundefined{@afterindenttrue}{\let\@afterindenttrue\relax% + \let\@afterindentfalse\relax}{}% +\let\@aifORI\@afterindentfalse% +\edef\@piORI{\the\parindent}% +\begingroup \catcode `| =0 \catcode `[ = 1 \catcode`] =2% + \catcode `\{=12 \catcode `\}=12 \catcode`\\=12% + |gdef|@xversatim#1\end{versatim}[#1|end[versatim]]% + |endgroup% +\let\@FIM@\relax% +\def\fr@idf{\let\@afterindentfalse\@afterindenttrue\@afterindenttrue}% +\def\fr@nidf{\let\@afterindentfalse\@aifORI\@afterindentfalse}% +\ifx\titlespacing\undefined% + \let\which@indent\fr@idf% +\else\let\which@indent\fr@nidf% +\fi% +\def\fr@lbi{\def\labelitemi{\@FIM@--}\def\labelitemii{\@FIM@--}% + \def\labelitemiii{\@FIM@--}\def\labelitemiv{\@FIM@--}% + }% +\long\def\frlabelitems#1{\ifFLA\long\def\fr@lbi{#1}% + \fr@lbi\fi}% +\def\@FIM{% + \fr@lbi% + \def\indentfirst{\ifFLA\fr@idf\fi}% + \def\nonindentfirst{\ifFLA\fr@nidf\fi}% + \which@indent% +}% +\def\@temp@{% +\let\@ps@fp\ps@firstpage% +\def\@opening{% +\let\@wideletter\relax% +\let\emailadd\@empty\let\@yourref\@empty\let\@ourref\@empty% +\let\@object\@empty% + \def\ps@firstpage{\ifFLA% + \advance\topmargin by -20\p@% + % + \def\@oddhead{\ifx\undefined\formhead\else% + \bgroup\hss\formhead\hss\egroup\fi}% + \def\@oddfoot{\raisebox{-45\p@}[\z@]% + {\hbox to \textwidth{% + \ifcase \@ptsize\relax% + \normalsize% + \or \sm@ller% + \or \footnotesize% + \fi% + % + \ifx\undefined\formfoot\hfill\else% + \bgroup\hss\formfoot\hss\egroup\fi% + }}\hss}% + \def\@evenhead{}\def\@evenfoot{}% + \else\@ps@fp\fi}% + \long\def\opening####1{% + \ifFLA% + \advance\indentedwidth by -0.25\longindentation% + \advance\longindentation by 0.22\textwidth% + \advance\parindent by 1.5em% + % + \let\nopagenumbers\relax% + \thispagestyle{firstpage}% + % + \raggedbottom% + \ifx\@empty\fromlocation\location{Le}\fi% + \ifx\@empty\fromaddress\let\fromaddress\space\fi% + {\raggedright\hspace*{-0.25\indentedwidth}% + \parbox[t]{0.5\textwidth}{\ignorespaces% + \vbox to 0\p@{\fromaddress\vss}}% + \\*[1.75\baselineskip]% + \par}% + \ifx\@empty\toname% + % + {\raggedleft\bgroup\fromlocation\space\@date\egroup\par}% + \else% + {\raggedleft\begin{tabular}{l}\ignorespaces% + \toname\\ \toaddress\\*[6\parskip]% + \fromlocation\space\@date\end{tabular}\par}% + \fi% + \ifx\@empty\@ourref\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \OurRefname\space\@ourref \par}% + \fi% + \ifx\@empty\@yourref\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \YourRefname\space\@yourref \par}% + \fi% + \ifx\@empty\@object\else% + {\raggedright \hspace*{-0.25\indentedwidth}% + \textbf{\Objectname}\space\@object \par}% + \fi% + \par\vspace*{3\parskip}% + \noindent####1\hfill\vspace*{3\parskip}% + \@wideletter% + \else\@oORI{####1}% + \fi}}% +\def\@closing{% + \def\closing{\fclosing@[9]}% + \def\fclosing{\@ifNextNB[{\fclosing@}{\fclosing@[9]}% + }% + \long\def\fclosing@[####1]####2{% + \ifFLA% + \par% + \vspace{\parskip}\stopbreaks% + \ignorespaces ####2\\[####1\medskipamount]% + \ifx\@empty\fromaddress\else% + \hspace*{-0.25\indentedwidth}% + \hspace*{\longindentation}\fi% + {\raggedright\begin{tabular}{l}\ignorespaces% + \ifx\@empty\fromsig% + \fromname% + \else \fromsig \fi% + \ifx\@empty\emailadd\else\\{\footnotesize% + \emph{\emailname} \emailadd}\fi% + \strut\end{tabular}}\par% + \vskip 0pt plus 1fil% + \else\@cloORI{####2}% + \fi}% + \def\endletter{\ifFLA\vskip 0pt plus 3fil\fi% + \@elORI}}% +\@ifundefined{opening}{\def\@opening{}\def\@closing{}}% + {\let\@oORI\opening\let\@cloORI\closing% + \let\@elORI\endletter% + \@opening\@closing}% +}% +\ifx\opening\undefined\let\@temp@\relax\fi% +\@temp@% +\def\@tempa{\let\fr@RIfM@cls\undefined}% +\let\fr@RIfM@cls\RIfM@% + \ifx\RIfM@\undefined\else% + \expandafter\ifx\csname @classname\endcsname\relax\@tempa% + \else\def\@tempb#1#2#3#4\@nil{% + \if#1a\if#2m\if#3s\else\@tempa\fi% + \else\@tempa\fi\else\@tempa\fi}% + \expandafter\@tempb\@classname\@nil% + \fi% + \fi% +\def\@temp@{\def\ps@french{\if@fancyplain\ps@plain@fancy\else\ps@plain\fi}}% +\ifx\ps@fancyplain\undefined% + \ifx\fr@RIfM@cls\undefined\def\ps@french{}% + \else\def\ps@french{\global\topskip\normaltopskip}% + \fi% +\else\@temp@% +\fi% +\let\ps@frenchORI\ps@french% +\let\@sdORI\secdef% +\def\nofrenchpagestyle{\let\secdef\@sdORI}% +\def\frenchpagestyle{% + \def\secdef{\ifFLA\thispagestyle{french}\fi\@sdORI}% + }% +\frenchpagestyle% +\ifx\aliaspagestyle\undefined% +\def\nobeginingfolio{\let\ps@french\ps@empty}% +\else% +\def\nobeginingfolio{\let\ps@french\ps@empty% + \aliaspagestyle{chapter}{empty}% + }% +\fi% +\def\beginingfolio{\let\ps@french\ps@frenchORI% + \frenchpagestyle}% +\def\@EIM{\def\labelitemi{\@lti}\def\labelitemii{\@ltii}% + \def\labelitemiii{\@ltiii}\def\labelitemiv{\@ltiv}% + \let\@afterindentfalse\@aifORI\@afterindentfalse% + \parindent\@piORI}% +\let\@FL\relax% +\def\nonfrench{\ifFrench\@DFP% + \def\@temp@{\@AFP}% + \else\@NoFr\def\@temp@{\relax}\fi% + \def\endnonfrench{\@temp@\ignorespaces}% + \ignorespaces}% +\def\@dospecialsfrench{\do\`\do'\@dsversa}% +\def\@dsversa{% + \do\ \do\\\do\{\do\}\do\$\do\&\do\#\do\|\do\^^K\do\_\do\^^A\do\%\do\~%$emacs + \do\!\do\?\do\;\do\:\do\<\do\>\do\^\do\"}% +\def\@sanitizefrench{% + \@saORI% + \@makeother\!\@makeother\?\@makeother\;\@makeother\:% + \@makeother\`\@makeother'\@makeother\<\@makeother\>% + \@makeother\^\@makeother\"}% +\def\@ifNextNB#1#2#3{\let\@tempe=#1\def\@tempa{#2}\def\@tempb{#3}\futurelet% + \@tempc\@Fifnch}% + \def\@Fifnch{\ifx \@tempc \@tempe\let\@tempd\@tempa% + \else\let\@tempd\@tempb\fi\@tempd}% +\def\@ifNextNBc#1#2#3#4{\let\@tempe=#1\let\@tempf=#2% + \def\@tempa{#3}\def\@tempb{#4}\futurelet% + \@tempc\@Fifnchc}% + \def\@Fifnchc{\ifx\@tempc\@tempf\@tempa\else\@Fifnch\fi}% +\def\@skiplastspace{\ifdim\lastskip>\z@\unskip\penalty\@M\fi}% +\let\ifFrench\iftrue% +\def\@AFP{% + \let\dospecials\@dospecialsfrench% + \let\@sanitize\@sanitizefrench% + \AFPdp\AFPinfsup}% +\def\AFPdp{\ifFrench\catcode`\!=\active\catcode`\?=\active% + \catcode`\;=\active\catcode`\:=\active\fi}% +\let\AFPinfsup\relax% +\def\AFPq{\ifFrench\catcode`'=\active\catcode``=\active\fi}% +\def\AFPdq{\catcode`"=\active}% +\def\@DFP{% + \DFPq\DFPinfsup\ifLPA\else\DFPdp% + \let\dospecials\@dsORI% + \let\@sanitize\@saORI\fi}% +\def\DFPq{\ifFrench\catcode``=12\catcode`'=12\fi}% +\let\DFPinfsup\relax% +\def\DFPdp{\ifFrench\catcode`;=12\catcode`:=12% + \catcode`!=12\catcode`?=12\fi}% +\def\DFPdq{\catcode`"=12}% +\let\ifLPA\iffalse% +\let\ifFG\iffalse% +\def\@tempa#1{\f@issue% + \@fw{-13- \@txt@msg{le caract\`ere "#1" est d\'ej\`a actif}% + }[#1]% + \let\@tempb\next\let\@tempc\empty}% +\let\@tempb\empty% +\AFPdp% +\let\ifWTS\iffalse% +\def\@WTS{\relax\ifmmode\else\ifhmode% + \ifdim\lastskip>\z@\unskip\fi% + \fi\fi}% +\def\@tempc{% +\def;{\ifFTY\protect\@PV% + \else\ifWTS\@WTS\fi\string;\fi}% + }% +\def\@tempd{\@tempa{\string;}}% +\ifx;\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PV{\relax\ifmmode\string;\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi\string;\fi}% +\def\@tempc{% +\def:{\ifFTY\protect\@DP% + \else\ifWTS\@WTS\fi\string:\fi}% + }% +\def\@tempd{\@tempa{\string:}}% +\ifx:\undefined\def\@tempd{}\fi\@tempd\@tempc% +\@ifundefined{@beginparpenalty}{\def\@beginparpenalty=#1{\penalty#1}}{}% +\def\@DP{\relax\ifmmode\string:\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi% + \string:% + \@beginparpenalty=\@M\relax% + \fi}% +\def\@wu#1{\@@wu#1,\void}% +\def\@@wu#1,#2{\ifx#1\empty\else\@@@wu #1\fi% + \def\@tempa{\@@wu#2}% + \ifx#2\void\else\expandafter\@tempa\fi% + }% +\def\@@@wu#1=#2{\expandafter\edef\csname #1\endcsname:{#2\string:}}% +\ifx\hhline\undefined\else\let\@hhlORI\hhline% + \def\hhline{\omit\ifFrench\let:\@cidp\fi% + \expandafter\@gobble\@hhlORI}% +\fi% +\def\@tempc{% +\def!{\ifFTY\protect\@PE% + \else\ifWTS\@WTS\fi\string!\fi}% + }% +\def\@tempd{\@tempa{\string!}}% +\ifx!\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PE{\ifmmode\string!\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M\,\fi% + \fi% + \string!\fi}% +\def\@tempc{% +\def?{\ifFTY\protect\@PI% + \else\ifWTS\@WTS\fi\string?\fi}% + }% +\def\@tempd{\@tempa{\string?}}% +\ifx?\undefined\def\@tempd{}\fi\@tempd\@tempc% +\def\@PI{\relax\ifmmode\string?\else% + \ifhmode\ifUSP\unskip\space\fi% + \ifdim\lastskip>\z@\unskip\penalty\@M% + \hskip +0.09em plus 0.07667em% + \fi% + \fi% + \string?\fi}% +\ifx\@tempb\next\let\AFPdp\empty\f@issue% + \@fw{-13b- % + \@txt@msg{la double ponctuation est alors d\'esactiv\'ee}}\fi% +\let\ifLPA\ErrFrench% +\let\ifFG\ErrFrench% +\let\@aORI\@array% +\def\@array{}% +\DFPdp\AFPdp% +\ifx\AFPdp\empty\else% +\def\@array{\let\noexpand\@tempa=\noexpand!% + \def\noexpand!{\noexpand\string\noexpand!}% + \edef\noexpand\@tempb{##1}% + \let\noexpand!=\noexpand\@tempa}% +\fi% +\catcode`<=13\catcode`>=13% +\let\ifArG\iftrue% +\edef\@array[#1]{\edef\noexpand\@tempb{#1}% + \noexpand\ifArG\noexpand\else% + \noexpand\ifnum\catcode`\noexpand<=\active% + \noexpand\ifmmode\let\noexpand<\noexpand\inferieura% + \let\noexpand>\noexpand\superieura% + \noexpand\fi\noexpand\fi\@array% + \noexpand\fi% + \noexpand\@aORI[{\noexpand\@tempb}]}% +\let\@eaORI\eqnarray% +\def\eqnarray{\ifArG\else\ifnum\catcode`<=\active% + \let<\inferieura\let>\superieura% + \fi\fi\@eaORI}% +\ifx\@@array\undefined\else% + \let\@@aORI\@@array% +\def\@@array{\ifArG\else\ifnum\catcode`<=\active% + \let<\inferieura\let>\superieura% + \fi\fi\@@aORI}% +\fi% +\catcode`<=12\catcode`>=12% +\DFPdp% +\let\@CGroup\relax\let\@@FG\relax% +\let\@LG\relax% +\def\@normalrq{\relax\ifmmode^\prime\else\@frq\fi}% +\def\@frq{{\catcode`'=12{\ifNEQ\ifECM\char\rq001% + \else\char\rq023\hbox{}\fi% + \else\string'\fi}}}% +\AFPq% +\def`{\protect\@PLQ}% + \let\@PLQ@\lq% + \def\@PLQ{\ifmmode\string`\let\@PLQ@\relax% + \else\ifNED\let\@PLQ@\@PLQn\fi% + \ifhmode\let\@PLQ@\@PLQn\fi% + \fi\@PLQ@}% + \def\@PLQn{\@ifNextNB`{\protect\@OQ}% + {\ifNEQ\ifECM\char\rq000\hbox{}% + \else\char\rq022\hbox{}\fi% + \else\string`\fi}% + }% + \def\@OQ`{\ifNED\protect\@LG\else\string``\fi}% +\def'{\protect\@PRQ}% + \let\@PRQ@\rq% + \def\@PRQ{\ifmmode\let\@PRQ@\@SRQ@% + \else\ifhmode\let\@PRQ@\@PRQn\fi% + \fi\@PRQ@}% + \def\@@FGp'{\@@FG}% + \def\@PRQn{\let\@PRQ@\rq% + \@ifNextNB'{\ifNED\let\@PRQn@\@@FGp% + \else\let\@PRQn@\relax\string'\fi\@PRQn@}% + {\protect\@normalrq}}% +\let\ifNED\iffalse% +\let\ifNEQ\iffalse% +\DFPq% +\def\untypedspaces{\@noBDfr% + \let\ifUSP\iftrue}% +\def\typedspaces{\@noBDfr% + \let\ifUSP\iffalse}% +\let\if@labelsinmargin\iffalse% +\let\ifFG\iffalse% +\let\ifFrench\iffalse% +{\def\@genMLhyph{\@ifundefined{french}{}{\gdef\fhyph{\french}}% + \@ifundefined{english}{}{\gdef\ehyph{\english}}}% +\@ifundefined{fhyph}{\@genMLhyph}{}% +}% +\gdef\frenchTeXmods{% + \global\let\ifFrench\iftrue% +\ifCLA% + \ifCLAfrench% + \@AFP% + \frenchtypography\frenchtranslation\frenchlayout% + \fi% +\else% + \@AFP% + \frenchtypography\frenchtranslation\frenchlayout% +\fi% + \frenchmacros\frenchwarnings% + \let\@HifORI\@Hif\let\@HfiORI\@Hfi% + \frenchhyphenation% + \csname @xtrasfrench\endcsname% + \ifx\GOfrench\undefined% + \csname beginL\endcsname% + \fi% + \def\languagename{french}% + \@ufo% + \let\switchtolanguage\endfrench% + \ignorespaces% + }% +\ifx\undefined\babel@core@loaded% + \edef\extrasfrench{}\def\@xtrasfrench{\extrasfrench}% + \DeclareOption{french}{\def\beginlanguage{% + \ifx\babel@savevariable% + \undefined\french% + \else\endenglish\selectlanguage{french}\fi}% + }% + \DeclareOption{english}{\def\beginlanguage{% + \ifx\babel@savevariable% + \undefined\english% + \else\selectlanguage{english}\fi}% + }% +\else\let\extrasfrench\frenchTeXmods% + \AtBeginDocument{% + \def\@tempa{\protect\@LabeL}% + \ifx\@tempa\label\else% + \let\@lORI\label\let\label\@tempa\fi% + \def\@tempa{\protect\atgH{r}}% + \ifx\@tempa\ref\else\@gG{r}{ref}{/}{1}\fi% + }% +\fi% +\@ifundefined{switchtolanguage}{% + \def\switchtolanguage#1{#1}}{}% +\let\@stlORI\switchtolanguage +\def\@DFPtestANDset{% + \ifx\ifFrench\iffalse% + \f@issue\@fw{-71- % + \@txt@msg{ATTENTION : }% + \@txt@msg{si babel est utilis\'e, mettre \frenchname\space en option}% + }% + \fi% + \let\@DFPtestANDset\@DFP% + \@DFP}% +\def\endfrench{% +\ifCLAfrench\else% + \@DFPtestANDset% + \nofrenchtypography\nofrenchtranslation\nofrenchlayout% +\fi% + \nofrenchmacros% + \nofrenchhyphenation% + \let\@Hif\@HifORI\let\@Hfi\@HfiORI% + \let\switchtolanguage\@stlORI% + \let\ifFrench\iffalse\@stlORI% + \ignorespaces}% +\let\noextrasfrench\endfrench% +\@ifundefined{englishTeXmods}{\gdef\englishTeXmods{}}{}% +\global\let\@Hif\empty\global\let\@Hfi\empty% +\global\let\if@FE\iffalse% +\newif\if@more\@moretrue% +\def\@doFh{% +\def\f@ERRdat{\f@issue% + \errmessage{-9- \@txt@msg{Corrupted/absent language.dat file.}% + }\global\let\french\@@end% + }% + \bgroup% + \let\ORIGfrench\french% + \newcount\@FrCount% +\def\tl@ng##1{}% +\def\@rhef##1/##2 /{\def\@tempa{##2}% + \def\@tempb{##1}% + \def\@tempc{\ifx\space\@tempa\else% + \expandafter\gdef\csname ##1@hefn\endcsname{##2\relax}% + \if@FE\expandafter\@@input##2\relax\fi\fi}% + \ifx\undefined\@excn\@tempc% + \else\ifx\@tempb\@excn\@tempc\fi\fi}% +\gdef\NouveauLangage[##1]##2{% + \expandafter\@ifundefined{l@##2}{}% + {% + \chardef\l@no##1\expandafter\if\csname l@##2\endcsname\l@no\else% + \edef\l@no{##1}\expandafter% + % + \ifx\csname l@##2\endcsname\l@no% + \else\f@issue\typeout{^^J \frenchname.sty \string: -27- % + \@txt@msg{language \l@no\space (##2) was initially }% + \@txt@msg{(at initex) numbered \csname l@##2\endcsname\space(ERROR!)}% + }[##2]\f@ERRdat% + \fi\fi}% + \expandafter\tl@ng\csname##2TeXmods\endcsname% + \expandafter\gdef\csname##2 \endcsname% + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2\endcsname% + {\protect\csname##2 \endcsname}% + }% +\def\Nouveau@Langage[##1]##2{% > def nouveau langage 1 +%arabic as a language should not change the definition of \arabic +% the same is valid for future similar cases > -- arabic prepare + \expandafter\@ifundefined{##2}{\lang@defifalse}% + {\lang@defitrue}% + \expandafter\@ifundefined{mlp##2}{\langmlp@defifalse}% + {\langmlp@defitrue}% +% < -- arabic prepare + \expandafter\@ifundefined{l@##2}{}% + {% + \chardef\l@no##1\expandafter\if\csname l@##2\endcsname\l@no\else% + \edef\l@no{##1}\expandafter% + % + \ifx\csname l@##2\endcsname\l@no% + \else\f@issue\typeout{^^J \frenchname.sty \string: -27- % + \@txt@msg{language \l@no\space (##2) was initially }% + \@txt@msg{(at initex) numbered \csname l@##2\endcsname\space(ERROR!)}% + }[##2]\f@ERRdat% + \fi\fi}% + \iflangmlp@defi \typeout {eFrench Info : langue ##2 choisie par mlp}\else% + {% + \expandafter\tl@ng\csname##2TeXmods\endcsname% + \iflang@defi% ++ test langue existe ? + \expandafter\gdef\csname##2Lang \endcsname% + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2Lang\endcsname% + {\protect\csname##2Lang \endcsname}% + \typeout{eFrench Info : % + \\##2Lang commute sur langue ##2 }% + \typeout{eFrench Info : % + et \\##2TeXmods pour ses extensions }% + \typeout{eFrench Info : % + avec \\ = une seule barre oblique inverse ===}% + \else% ** langue n'existe pas + \expandafter\gdef\csname##2 \endcsname% + {\expandafter\switchtolanguage\csname ##2TeXmods\endcsname% + \@Hif\language=##1\@Hfi\relax}% + \expandafter\gdef\csname##2\endcsname% + {\protect\csname##2 \endcsname}% + \fi% + } % -- test langue existe + \fi% % -- test mlp<lang> existe + }% < def nouveau langage 1 +\edef\@temp@{=}% +\def\@langue##1##2 ##3 ##4/##5{\def\@tempa{=}\def\@tempb{##1}% + \ifx\@tempa\@tempb% + \ifnum\@FrCount > 0 \advance\@FrCount by -1\fi% + \relax% + \expandafter\Nouveau@Langage\expandafter[\the\@FrCount]{##2}% + \ifnum\@FrCount \@temp@ 0 \@FrCount= -1\fi% + \else\edef\@temp@{<}\@l@ngue##1##2 ##3 ##4/{##5}% + \fi}% +\def\@l@ngue##1 ##2 ##3/##4{\Nouveau@Langage[##4]{##1}% + % + \@rhef##1/##3/% + }% +\let\hyphenation\f@hyphenation% +\openin\@inputcheck = language.dat \def\@tempb{}% > language.dat +\ifeof\@inputcheck\@Ffnt{language.dat}% + \ifx\undefined\french % + \else\xdef\@PrevF{\french}% + \gdef\french{\switchtolanguage\frenchTeXmods\@PrevF}% + {\@PrevF\f@issue\@fw{-15- % + \@txt@msg{le langage \frenchname\space porte le }% + \@txt@msg{num\'ero \the\language}% + }}% + \fi% + \ifx\undefined\l@english % + \def\l@english{0}% + \fi% + \ifx\undefined\english % + \else\xdef\@PrevE{\language=\l@english}% + \gdef\english{\switchtolanguage\englishTeXmods\@PrevE}% + {\@PrevE\f@issue\@fw{-16 % + \@txt@msg{the English language\space is numbered }% + \@txt@msg{\the\language}% + }}% + \fi +\else\@FrCount=-1% +\newif\iflang@defi% +\newif\iflangmlp@defi% +\let\englishORI\english% +\let\english\undefined% +\loop \endlinechar=-1 \read\@inputcheck to \@lineD \endlinechar`\^^M% + \ifx\@lineD\empty \else \advance\@FrCount by 1% + \edef\@lineD{\@lineD\space\space/{\the\@FrCount}}% + \expandafter\@langue\@lineD% + \fi% + \ifeof\@inputcheck \@morefalse \fi% + \if@more\repeat% +\fi\closein\@inputcheck% < language.dat +\ifx\undefined\english\let\english\englishORI\fi% ! +\let\hyphenation\@hyphenation% +\def\@MLtst{\@ifundefined{fhyph}% + {\if@PMF\gdef\french{\switchtolanguage\frenchTeXmods}% + \f@issue% + \@fw{-19- % + \@txt@msg{utilisation du langage interne num\'ero \the\language}% + }% + \else\f@issue% + \typeout{^^J \frenchname.sty: -20b- + \@txt@msg{the French language is undefined (ERROR!)}% + }\f@ERRdat\fi}% + {\gdef\french{\switchtolanguage\frenchTeXmods\fhyph}% + \gdef\english{\switchtolanguage\englishTeXmods\ehyph}% + }% + }% +\@ifundefined{french}{\@MLtst}{}% +\@ifundefined{endenglish}{\global\let\endenglish\french}{}% +\gdef\tl@ng##1{\ifx ##1\relax\f@issue% + \@fw{-21- \@txt@msg{##1 n'est pas d\'efini}% + }[##1]\fi}% +\ifx\ORIGfrench\french\f@ERRdat\fi% + \egroup% + }% +\ifx\vert\undefined\else\let\@bvORI\vert\fi% +\def\@fwVIIIII{\f@issue% + \kbtypeout{^^J -73- \@txt@msg{ERREUR avec AmSTeX : }% + \@txt@msg{\frenchname.sty a \'et\'e charg\'e trop t\^ot !}% + }\stop}% +\ifx\RIfM@\undefined% +\def\vert{\ifx\RIfM@\undefined\expandafter\@bvORI\else\expandafter% + \@fwVIIIII\fi}% +\else% +\def\vert{\@bvORI}% +\fi% +\let\@currname\@currnameORI% +\def\languagename{english}% +\def\beginlanguage{% + \ifx\babel@savevariable% + \undefined\french% + \else\endenglish\selectlanguage{french}\fi% + }% +\let\@bglngpk\babel@savevariable% +\ifx\pg@add@to\undefined\else% +\def\pg@begin{\begingroup}% +\def\pg@end{\endgroup}% +\fi% +\edef\beginFWdirection{L}% +\ifx\undefined\babel@core@loaded\ProcessOptions*% + \else% + \PackageInfo{\frenchname}% + {Initialisation de l'option \frenchname\space pour Babel}% + \GOfrench\let\GOfrench\relax% +\fi% +\let\@FW\undefined% +\resetat% +\PassOptionsToPackage{french}{varioref}% +\PassOptionsToPackage{french}{pdfscreen}% +\endinput% diff --git a/language/french/e-french/texmf/tex/frenchpro.sty b/language/french/e-french/texmf/tex/frenchpro.sty new file mode 100644 index 0000000000..45b16553e9 --- /dev/null +++ b/language/french/e-french/texmf/tex/frenchpro.sty @@ -0,0 +1,11 @@ +%% This is frenchpro.sty --bg 2002/01/29 +%% updated --bg 2003/11/17 +%% to be used like this: \usepackage{frenchpro} +%% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% +\RequirePackage{french}% +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/frhyphex.tex b/language/french/e-french/texmf/tex/frhyphex.tex new file mode 100644 index 0000000000..2fda16522a --- /dev/null +++ b/language/french/e-french/texmf/tex/frhyphex.tex @@ -0,0 +1,75 @@ +% frhyphex.tex % French hyphenation exceptions provided with accent macros. +% last mods: 2005/03/21 +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% Usually \hyphenation doesn't allow accent macros in its argument, just +% only characters, but french.sty and hyconfig.tex allows this. Thus this +% file can be reloaded each time you change your input encoding. The keyboard +% package do it via kbconfig.tex (and \kbencoding macro). +% +\ifx\undefined\@uclclist% is it initex? yes probably +\expandafter\message\else\expandafter\wlog\fi{frhyphex.tex french exceptions (% +% Do NOT make any alterations to this french hyphenation exceptions list! --bg +% This is my official one. + V3.3) % <========= VERSION + }% +% But you can have your private one via language.dat and \frhyphex +% look at the documentation... +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Comme Babel n'accepte pas les lignes blanches et que Braams n'a pas repondu +% a mon message (1999/12) j'elimine le chargement des exceptions si babel +\ifx\adddialect\undefined% a ete charge dans le format. + +\hyphenation{% La liste est volontairement reduite. Les exceptions qui ont + % ete reconnues sont mises sous forme de motif dans frhyph.tex + +% noms propres de renomee mondiale (!) : +% ============ +% + +GUTenberg % Groupe francophone des Utilisateurs de TeX, association loi 1901. + +% +% noms communs dont la division par TeX est << actuellement >> impropre : +% ============ (les noms suivants on fait l'objet d'une etude GUTenberg et +% n'ont pas ete retenus dans les fichier des motifs de cesure) +% + +extra-conju-gal % proposition de Etienne Riga 1999/12/23 +extra-conju-gale extra-conju-gales % Riga 1999/12/23 +extra-conju-gaux % Riga 1999/12/23 +extra-cor-po-rel extra-cor-po-rels % Riga 1999/12/23 +extra-cor-po-relle extra-cor-po-relles % Riga 1999/12/23 +fichier fichiers %proposition de Michel Bovani 1999/08/09 +manu-scrit manu-scrits % Denis Roegel 2002/12/06 +% Je n'ai pas reussi a ajouter "Grand' " pour Grand'place par exemple, +% alors que \hyphenation{Grand'} fonctionne bien dans le corps d'un +% document avec FrenchPro. B.G. 2005/03/21 + +% +%%% +% (Les noms suivants feront l'objet - ulterieurement - d'une etude GUTenberg et +% - eventuellement - d'une modification du fichier des motifs de cesure) +% +% noms techniques d'usage assez courant +% =============== +% + + } % end of exceptions + +% Second list of exceptions: +\ifx\undefined\@uclclist\else% The following not used at initex: +\hyphenation{% + + } % end of exceptions +\fi + +\else% +\ifx\undefined\@uclclist% is it initex? yes probably +\expandafter\message\else\expandafter\wlog\fi% +{NOT LOADED when BABEL is active.}% +\fi% +%\endinput%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/fxabbrev.tex b/language/french/e-french/texmf/tex/fxabbrev.tex new file mode 100644 index 0000000000..42504de350 --- /dev/null +++ b/language/french/e-french/texmf/tex/fxabbrev.tex @@ -0,0 +1,297 @@ +% frabbrev.tex file (French typographic abbreviations) +% should always be used in 8bit format (generated from +% fxabbrev.tex which is full ASCII 7bit) +% +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% Don't change this to a 7bits coding except if you are using 7bits input +% +% History of mods: +% =============== +% - Change \^i into \^{\i}_ --bg 01/16/92 +% - Added shorten "cad" (remark coming from Jacques Andre) --bg 02/07/92 +% - paragraph sign (\S) followed by a tilde --bg 05/15/92 +% - recoded to 8bits --bg 08/24/92 +% - add second, seconds, premiers, premi\`{e}res, troisi\`{e}mes... +% num\'{e}ros, Num\'{e}ros and pages. +% --bg 01/12/93 +% - strings containing a space must be within a group. --bg 98/05/15 +% - THE FIRST LETTER IS NO MORE TESTED except if the string is +% within braces. Thus, any string beginning whith an uppercase +% letter should be enclosed within braces. --bg 1999/11/08 +% - f8abbrev.tex and frabbrev.850 definitely removed. +% f7abbrev.tex rename fxabbrev.tex --bg 2000/06/14 +% - few adds coming from Yves Perrousseaux' book on typo. --bg 2001/08/03 +% - corrections for second(s) and seconde(s). --bg 2001/09/20 +% - * facility added for plurals ==> 6 changes. +% - legal units added and few other names. +% HAPPY 10 YEARS ANNIVERSARY! --bg 2001/01/21 +% - abbrev. from Louis Gu\'{e}ry from CFPJ. --bg 2002/02/21 +%% +%% checksum = "10121 297 1013 10878" +%% + +% Checked name Replacement +% ============ =========== +% +% Notice that when the checked name is inside braces all that name +% should be equal to "name" otherwise the first letter is not checked. +% If checked name begins with "*" then "_name_" and "_name_s" will +% be checked, the replacement name is the same in the two cases. +% +% NB: All macros have to be not expanded. + +premier 1\noexpand\ier% +premiers 1\noexpand\iers% +premi\`{e}re 1\noexpand\iere% +premi\`{e}res 1\noexpand\ieres% +deuxi\`{e}me 2\noexpand\ieme% +deuxi\`{e}mes 2\noexpand\iemes% +second 2\noexpand\fup{d}% +seconds 2\noexpand\fup{ds}% +seconde 2\noexpand\fup{de}% +secondes 2\noexpand\fup{des}% +troisi\`{e}me 3\noexpand\ieme% +troisi\`{e}mes 3\noexpand\iemes% +quatri\`{e}me 4\noexpand\ieme% +quatri\`{e}mes 4\noexpand\iemes% + +primo \noexpand\quando{1}% +secundo \noexpand\quando{2}% +tertio \noexpand\quando{3}% +quarto \noexpand\quando{4}% +quinto \noexpand\quando{5}% +sexto \noexpand\quando{6}% +septuno \noexpand\quando{7}% +octavo \noexpand\quando{8}% +nono \noexpand\quando{9}% +decimo \noexpand\quando{10}% + +{Num\'{e}ro} \noexpand\Numero% +{Num\'{e}ros} \noexpand\Numeros% +num\'{e}ro \noexpand\numero% +num\'{e}ros \noexpand\numeros% + +monsieur M.% +messieurs MM.% +mademoiselle M\noexpand\fup{lle}% +mesdemoiselles M\noexpand\fup{lles}% +madame M\noexpand\fup{me}% +mesdames M\noexpand\fup{mes}% +ma\^{\i}tre M\noexpand\fup{e}% +ma\^{\i}tres M\noexpand\fup{es}% + +{Compagnie} c\noexpand\fup{ie}% +canton C\noexpand\fup{on}% +docteur D\noexpand\fup{r}% +folio f\noexpand\fup{o}% +folios f\noexpand\fup{os}% +monseigneur M\noexpand\fup{gr}% +paragraphe \noexpand\S~% doit \^{e}tre suivi d'un num\'{e}ro. +recto r\noexpand\fup{o}% +verso v\noexpand\fup{o}% + +{Acad\'{e}mie} Acad.% +adjectif adj.% +{Administration} Admin.% +ancien anc.% +annexe ann.% from LG 2002/02/21 +{Antiquit\'{e}} Antiq.% +appendice append.% +apr\`{e}s apr.% +archives arch.% +arch\'{e}ologie arch\'{e}ol.% +arithm\'{e}tique arithm.% +arrondissement arr.% +article art.% +astronomie astron.% +avant av.% +avenue av.% from LG 2002/02/21 +bibliographie bibliogr.% +biblioth\`{e}que bibl.% from LG 2002/02/21 +biologie biol.% +botanique bot.% +boulevard bd% +bulletin bull.% +cad \noexpand\hbox{c.-\`{a}-d.}% +chapitre chap.% +chef-lieu ch.-l.% +chronologie chronol.% +circulaire circ.% +circonscription circonscr.% +{Code civil} C.civ.% +{Code p\'{e}nal} C.p\'{e}n.% +*collaborateur coll.% +collection coll.% +colonne col.% from LG 2002/02/21 +commandeur C.% from LG 2002/02/21 +d\'{e}partement d\'{e}p.% +dictionnaire dict.% +document doc.% +{Est} E% +*\'{e}diteur \'{e}d.% * from LG 2002/02/21 +*\'{e}dition \'{e}d.% * from LG 2002/02/21 +environ env.% +\'{e}pitre \'{e}p.% +\'{e}pilogue \'{e}pil.% +\'{e}tablissements \'{E}ts% +\'{e}tymologie \'{e}tym.% +exemple ex.% +exp\'{e}diteur exp.% from LG 2002/02/21 +fascicule fasc.% +faubourg fg% +f\'{e}minin f\'{e}m.% +feuillet f.% +figure fig.% +Fr\`{e}re F.% from LG 2002/02/21 +g\'{e}ographie g\'{e}ogr.% +g\'{e}ologie g\'{e}ol.% +g\'{e}om\'{e}trie g\'{e}om.% +graphique graph.% +gravure grav.% +habitants hab.% +hauteur haut.% +iconographie iconogr.% +*illustrations illustr.% 21/01/2002 +inf\'{e}rieur inf.% +introduction introd.% +invariable invar.% +italique ital.% +juridique jur.% +jurisprudence jur.% +*ligne l.% 21/01/2002 +largeur larg.% +latitude lat.% +librairie libr.% +livre liv.% +locution loc.% +longitude long.% +longueur long.% +manuscrit ms.% +manuscrits mss.% +masculin masc.% +math\'{e}matiques math.% +maximum max.% from LG 2002/02/21 +m\'{e}canique m\'{e}can.% +m\'{e}moire m\'{e}m.% +musique mus.% +mythologie myth.% +{Nord} N% +nouveau nouv.% +nouvelle nouv.% +numismatique numism.% +officier O.% from LG 2002/02/21 +{Ouest} O% from LG 2002/02/21 +ouvrage ouvr.% +*page p.% 21/01/2002 +partie part.% +P\`{e}re P.% from LG 2002/02/21 +photographie phot.% +physique phys.% +*planche pl.% 21/01/2002 +reli\'{e} rel.% from LG 2002/02/21 +reliure rel.% +r\'{e}daction r\'{e}d. +route rte% from LG 2002/02/21 +{Sud} S.% +science sc.% +sc\`{e}ne sc.% +section sect.% +{Saint} St% +{Saints} Sts% +{Sainte} Ste% +{Saintes} Stes% +section sect.% from LG 2002/02/21 +si\`{e}cle s.% from LG 2002/02/21 +{soci\'{e}t\'{e}} st\'{e}% 21/01/2002 +{Soci\'{e}t\'{e}} St\'{e}% Yves Perrousseaux 2001/08/03 +substantif subst.% +*suivant suiv.% 21/01/2002 +*suivante suiv.% 21/01/2002 +sup\`{e}rieur sup.% from LG 2002/02/21 +suppl\'{e}ment suppl.% +t\'{e}l\'{e}phone t\'{e}l.% Yves Perrousseaux 2001/08/03 +tome t.% from LG 2002/02/21 +traducteur trad.% +traduction trad.% +variante var% from LG 2002/02/21 +vers v.% from LG 2002/02/21 +voir V% from LG 2002/02/21 +volume vol.% + +% Unit\'{e}s l\'{e}gales : + +*amp\`{e}re A% +*are a% +*bel B% from LG 2002/02/21 +*candela cd% from LG 2002/02/21 +centi c% from LG 2002/02/21 +*centiare ca% +*centigramme cg% +*centilitre cl% +*centim\`{e}tre cm% +d\'{e}ca da% from LG 2002/02/21 +*d\'{e}calitre dal% +d\`{e}cam\`{e}tre dam% +d\'{e}ci d% from LG 2002/02/21 +d\'{e}cibel dB% +d\'{e}cigramme dg% from LG 2002/02/21 +d\'{e}cilitre dl% from LG 2002/02/21 +*franc F% +giga G% from LG 2002/02/21 +*grade gr% +*gramme g% +*hectare ha% +hect h% from LG 2002/02/21 +*hectogramme hg% +*hectolitre hl% +*hectom\`{e}tre hm% +*hertz Hz% from LG 2002/02/21 +*heure h% +*jour j% +*kelvin K% from LG 2002/02/21 +kilo k% from LG 2002/02/21 +*kilogramme kg% +*kilohertz kHz% from LG 2002/02/21 +*kilom\`{e}tre km% +*kilovoltamp\`{e}re kVA% from LG 2002/02/21 +*kilowatt kW% +kilowatt-heure kWh% +kilowatts-heure kWh% +*litre l% +lux lx% from LG 2002/02/21 +m\'{e}ga M% from LG 2002/02/21 +*m\'{e}gahertz MHz% from LG 2002/02/21 +*m\`{e}tre m% +% micro est a introduire qd on aura \mu en romain droit. +milli m% from LG 2002/02/21 +*millibar mbar% +*milligramme mg% from LG 2002/02/21 +*millilitre ml% +*millim\`{e}tre mm% +*milliseconde ms% from LG 2002/02/21 +*minute min% +*mole mol% from LG 2002/02/21 +nano n% from LG 2002/02/21 +*nanoseconde nc% from LG 2002/02/21 +*newton N% from LG 2002/02/21 +*pascal Pa% from LG 2002/02/21 +pico p% from LG 2002/02/21 +*picoseconde ps% from LG 2002/02/21 +quintal q% from LG 2002/02/21 +quintaux q% from LG 2002/02/21 +*radian rad% from LG 2002/02/21 +*seconde s% +*st\`{e}re st% +t\'{e}ra T% from LG 2002/02/21 +*thermie th% from LG 2002/02/21 +*tonne t% +*volt V% +*watt W% +*wattheure Wh% from LG 2002/02/21 + +% Excerpt from ``Lexique des r\`{e}gles typographiques en usage a l'Imprimerie +% nationale'', Abr\'{e}viations, p7-11 and few additions. +% plus other usual (referenced) names. diff --git a/language/french/e-french/texmf/tex/german_french-msg.tex b/language/french/e-french/texmf/tex/german_french-msg.tex new file mode 100644 index 0000000000..247ca39f95 --- /dev/null +++ b/language/french/e-french/texmf/tex/german_french-msg.tex @@ -0,0 +1,205 @@ +% File french-msg.tex (messages issued by the FrenchPro package) +\msgencoding{ansinew}\msgheader{-\msgid-\space} +%%%%%%% translated by Werner Struckmann, THANKS! %%%%%%%%%%%%%%% +\msg{1}{Der Befehl #1 existiert schon.}{} +\msg{2}{Die Datei #1 wurde nicht gefunden.}{} +\msg{3}{\frenchpack\space ist hier nicht aktiviert\string!}{} +\msg{4}{Der "Poor-Man-French-Style" wurde aktiviert.}{} +\msg{5}{Fehler in der Lettrine-Definition}{} +\msg{6}{Bitte überprüfen Sie den Lettrine-Code.}{} +\msg{7}{Die Lettrine besteht nur aus einem Buchstaben.}{} +\msg{8}{\string\footnotetext{#1} ging verloren. % + \MessageBreak % + Code-Ereignis. \string\protect\string\footnote}{} +\msg{9}{Die Datei language.dat fehlt bzw. ist defekt.}{} +\msg{10}{french package wurde nicht geladen.}{} +\msg{11}{Der \string<\string< frpatch \string>\string> #1 wird angewendet.}{} +\msg{12}{frpatch.sty ist veraltet, bite löschen Sie die Datei.}{} +\msg{13}{Das Zeichen "#1" wurde bereits aktiviert.}{} +\msgheader{-13-\space} +\msg{13b}{Hier können nicht zwei Satzzeichen aufeinanderfolgen.}{} +\msgheader{-\msgid-\space} +\msg{14}{schließende, keine öffnende Guillemets}{} +\msg{15}{Die Sprache \frenchname\space hat die Nummer \the\language}{} +\msg{16}{Die englische Sprache \frenchname\space hat die Nummer \the\language}{} +\msg{17}{\string\wrongtypedspaces\space ist an % + dieser Stelle nicht aktiviert.}{} +\msg*{18}{\frenchname.sty verlangt die Option \string\nofrenchguillemets\space % + für AmSLaTeX.}{} +\msg{19}{Die interne Sprache mit der Nummer \the\language~wird verwendet.}{} +\msg*{20}{WARNUNG\string: Französisch ist in dieser Format-Datei nicht definiert worden.}{} +\msg*{20b}{\frenchname.sty\string: Die Sprache Französisch ist undefiniert. % + (FEHLER\string!)}{} +\msg{21}{#1 ist nicht definiert.}{} +\msg{22}{Die Abkürzung \string"#1\string" wurde nicht gefunden.}{} +\msg*{23}{Package\string: \frenchpack\space\frenchstyleid% + \space(B.Gaulle)}{} +\msg{24}{\frenchname.sty verwendet in diesem Dokument die Font-Encoding % + \f@encoding.}{}% +\msg{25}{\frenchname.sty gibt Meldungen im% + \ifEightBitOutput8-Bit-Mode\else7-Bit-Mode % + "a la TeX"\fi aus.% + ^^J}{} +\msg{26}{In \frenchname.sty\string! % + wurde ein Fehler gefunden % + \MessageBreak % + (s. zum Beispiel die Datei language.dat).}{} +\msg*{27}{\frenchname.sty\string: Die Sprache \l@no\space (#1) hatte ursprünglich % + (beim initex-Lauf) die Nummer \csname l@#1\endcsname\space(FEHLER\string!)}{} +\msg{28}{WARNUNG\string: TeX Version 2 gestattet nicht die Verwendung % + von 8-Bit-Zeichen mit Umlauten.}{} +\msg*{29}{***Warning***\string: TeX mit CM-Fonts % + \MessageBreak % + (wie im aktuellen TeX-Format) kann keine Wörter trennen,% + \MessageBreak % + die Umlaute enthalten.}{} +\msg{30}{FEHLER\string! % + TeX kann im aktuellen Font bzw. in der + \MessageBreak % + aktuellen Codierung, keine Wörter trennen, % + die Umlaute enthalten.}{} +\msg{31}{Fehlerhafte Trennung:\string! % + Bitte überprüfen Sie, ob französische *********** % + \MessageBreak % + Trenntabellen (initex) installiert wurden.\string ***********}{} +\msg{32}{Falls ja, versuchen Sie bitte, T1-kodierte Fonts zu verwenden.% + (\string\usepackage[T1]{fontenc})***}{} +\msg{33}{Überprüfen Sie bitte die Liste auf hexadezimale Codes,% + \MessageBreak % + die nicht dargestellt werden können und entfernen Sie diese ggf. + \MessageBreak % + aus \@kbencoding.kbc.}{} +\msg{34}{Diese und andere Dateien benötigen das % + \MessageBreak % + LaTeX package\string: \frenchpack\string! % + \MessageBreak % + Die weitere Verarbeitung wird abgebrochen.\string!}{} +\msg{35}{kbconfig\string: Neudefinition \string ^\string ^\string Y uccode. % + \MessageBreak % + kbconfig\string: Neudefinition \string ^\string ^\string Z uccode.}{} +\msg{36}{FEHLER\string: Ungültiger Name des LaTeX-Formats % + (\string\fmtname). % + \MessageBreak % + Bitte korrigieren\string: \string\fmtname=LaTeX2e\space.}{} +\msg{36b}{FEHLER\string: non standard LaTeX format % + (\string\fmtname)}{} +\msg{37a}{FEHLER\string: Das French-Package ist schon aktiviert.}{} +\msg{37b}{FEHLER\string: Das French-Package ist noch nicht aktiviert.}{} +\msg{38}{Die Sprache #1 ird als Sprache Nummer \the\workl@ verwendet.}{} +\msg{39}{Error\string: Die Datei language.dat wurde nicht gefunden, versuchen Sie % + die US-englischen Trenntabellen.}{} +\msg*{40}{Die Dateien kb8to7.lex und kb7to8.lex werden erzeugt.}{} +\msg{41}{Die Formatdatei ist veraltet, bitte starten Sie initex zur Erzeugung einer neuen Formatdatei\string!}{} +\msg{42}{Die \frenchname\space Patch-Datei (frpatch.sty) ist für % + \MessageBreak % + diese Version von "\frenchpack" ungeeignet \FSfd}{} +\msg{43}{french.all wird geladen^^J}{} +\msg{44}{FEHLER: der Befehl \LaMacro\space wurde nicht definiert\string!}{} +\msg{45}{\LaMacro wird ausgeführt}{} +\msg{46}{Dieser Befehl wurde bereits in \frenchname.sty definiert.% + \MessageBreak % + Möglicherweise handelt es sich um ein Problem mit \frenchpack\space (\Aboi #1 Befehl)}{} +\msg*{47}{Die Verarbeitung muss leider abgebrochen werden, da diese TeX-Version nicht % + in der Lage ist, 8-Bit-Ausgaben zu erzeugen.\string!}{} +\msg{48}{Die Konfigurationsdatei von \frenchpack wird gelesen.}{} +\msg{49}{Die Guillemets werden zu früh geschlossen.}{} +\msg{50}{FEHLER\string: Die Sprache Französisch wurde in der Datei % + language.dat nicht definiert.}{} +\msg{51}{FEHLER\string: Dieses Dokument wurde nicht in 8-Bit-Code umgewandelt.}{} +\msg*{52}{FEHLER\string: \frenchpack\space arbeitet leider nicht in % + in dieser Minimalumgebung.\string!}{} +\msg{53}{Die Guillemets-Umgebung kann nicht zusammen mit der % + \MessageBreak % + \string\noeveryparguillemets\space Option genutzt werden.}{} +\msg{54}{FEHLER\string: \string\unusedslot\space (\unusedslot) ist ungültig.}{} +\msg{55}{FEHLER \string\unusedslot\space character % + (\@unusedslot) wurde nicht aktiviert.}{} +\msg*{56}{Folgende 8-Bit-Zeichen wurden verarbeitet\string:}{} +\msg{57}{Das Keyboard-Paket #1 wurde für die Font-Kodierung % + \f@encoding geladen.^^J}{} +\msg{58}{Der Wert von #1 wurde ignoriert.}{} +\msg*{59}{Fataler FEHLER\string: Ungewöhnlicher Text wurde erzeugt.}{} +\msg{60}{Hinter \string\etc fehlt ein Punkt.}{} +\msg{61}{Die Datei hyph\hyphchar.tex konnte nicht gefunden werden.}{} +\msg{62}{Es wird eine zusätzliche Trennmusterdatei für Fonts % + mit speziellen Trennzeichen geladen.}{} +\msg{63}{Eine der Dateien french.sty oder frenchle.sty konnte nicht % + gefunden werden. % + \MessageBreak % + Überprüfen Sie, ob die Dateien vorhanden sind.}{} +\msg{64}{FEHLER\string: Ungültige Zeichenkette % + \string\fmtname\space in lplain.tex.}{} +\msg{65}{\frenchname.sty lädt die Übersetzungen für das % + Literaturverzeichnis \string:}{} +\msg*{66}{FEHLER\string! Diese Datei verlangt für die Bearbeitung die % + Deklaration einer Eingabekodierung.}{} +\msg*{67}{WARNUNG: Sie verwenden vermutlich inputenc und keyboard, % + bitte wählen Sie \string!}{} +\msg*{68}{FEHLER\string: \frenchpack\space läuft leider nicht mehr unter % + der LaTeX 2.09 Emulation!}{} +\msg{69}{kbconfig\string: Die Kontrollsequenz zum Löschen einiger Zeichen % + wird unterbrochen.}{} +\msg{70}{kbconfig\string: \string\@tabacckludge\space wird für die % + Mathematikbearbeitung verändert.}{} +\msg{71}{WARNUNG\string: Falls Sie babel verwenden, spezifizieren Sie bitte % + eine der Optionen \frenchname(pro/le).}{} +\msg{72}{kbconfig\string: Die utf8-Kodierung kann nicht mit plain\string % + vervollständigt werden. % + \MessageBreak % + kbconfig\string: Es wird mit Unicode-Zeichen fortgefahren.}{} +\msg*{73}{\frenchname.sty wurde zu früh geladen.}{} +\msg*{74}{FEHLER, die keyboard-Datei wurde nach \frenchpack geladen!}{} +\msg{75}{kbconfig\string: Die utf8-Kodierung konnte durch % + die inputenc-Datei\string nicht gefunden werden. + \MessageBreak % + kbconfig\string: Es wird mit Unicode-Zeichen fortgefahren.}{} +\msg{76}{kbconfig\string: Leider sind keine Sprachabhängigkeiten in % + Plain TeX\string verfügbar.}{} +\msg{77}{Die No #1\space Zeichen sind für Englisch definiert.}{} +\msg*{78}{FEHLER\string: Die Option noutf8 wurde mit unterschiedlichen % + Argumenten gewählt.}{} +\msg*{79}{keyboard.sty\string: Es wurden weder eine lokale Option noch % + die utf8-Kodierung angegeben.}{} +\msg{80}{Babel versucht, die \CurrentOption\space Option zu laden, % + \MessageBreak aber das mlp-Pakest wurde bereits geladen. % + \MessageBreak Bitte wählen Sie entweder mlp mit der % + \MessageBreak \CurrentOption\space Option alleine oder % + \MessageBreak babel mit der \CurrentOption\space option.}% + {\help{LÖschen Sie das überflüssige Paket oder die % + überflüssige Option.}} +\msg*{81}{WARNUNG\string: "Das "msg"-Paket konnte nicht gefunden % + werden.\string; % + \MessageBreak Es wird ohne Fehlermeldungen fortgefahren.}{} +\msg{82}{Der Befehl \LaMacro\space ist nicht definiert.}{} +\msg{83}{Es stehen Test-Makros vor \string\begin{document}^^J}{} +\msg{84}{Diesmal wird NACH \string\begin{document} getestet^^J}{} +\msg{85}{WARNUNG\string: Die Option fixlanguage wurde beim Aufruf von % + babelbib nicht benutzt.}{} +\msg{86}{keyboard.sty\string: Aufgrund der #1\space Option wurde mltex % + nicht verwendet.}{} +\msg{87}{WARNUNG\string: babelbib sollte nur zusammen mit babel % + verwendet werden.}{} +\msg{88}{Durch einen Wechsel der Keyboard Codierung zu `utf8' % + \MessageBreak % + sind keine Zeichen definiert.\MessageBreak}{} +\msg{89}{Das verwendete Zeichen ist\MessageBreak % + in der Keyboard Codierung `utf8' undefiniert.}% + {Sie müssen eine Definition durch % + \noexpand\DeclareInputText\MessageBreak oder % + \noexpand\DeclareInputMath angeben, bevor Sie dieses Zeichen benutzen.} +\msg{90}{Ungültiges Unicode-Zeichen \string < 00A0}{\@eha} +\msg{91}{Das Unicode-Zeichen #1 wurde\space % + für die Verwendung mit LaTeX nicht eingerichtet.}{\@eha} +\msg{92}{Sie sollten entweder \string:\MessageBreak % + - TeX mit der Option MlTeX verwenden oder\MessageBreak % + - per Default zur Kodierung T1 wechseln.}{} +\msg*{93}{Sie verwenden zwei French-Optionen für Babel, % + \MessageBreak % + entscheiden Sie sich bitte für eine.}{} +\msgheader{-**-\space} +\msg*{**a}{Die Serienummer von \frenchpack\space ist *\@FrVal*.}{} +\msg*{**b}{\@FrVal\space von \frenchpack.}{} +\msgheader{} +\msg{*}{Diese Meldung \msgid\space ist im \frenchname\space % + Paket unbekannt.}{} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/internat.mlp b/language/french/e-french/texmf/tex/internat.mlp new file mode 100644 index 0000000000..f00e225988 --- /dev/null +++ b/language/french/e-french/texmf/tex/internat.mlp @@ -0,0 +1,51 @@ +% internat.mlp Usual configuration of international options for mlp. +% last mods: 2004/12/14 +% +% mlp means The Multi-Lingual Package, an idea from --bg 97/11/03 +% +% This file can be modified if the international TeX users group +% accepts the modifications. +% +% Group to get in touch for internat.mlp is: ... +% Person to send a message is: ... (defaultly: gaulle@idris.fr) +% +\ProvidesFile{internat.mlp}% + [2004/12/14 international configuration file for mlp package] +\DeclareOption{austrian}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\DeclareOption{german}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\DeclareOption{english}{\@requirepackage{mlp-01}% original US english + \PassOptionsToPackage{english}{mlp-01}% + }% +\DeclareOption{french}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{acadien}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{acadian}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{canadianf}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{canadien}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{frenchle}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{frenchle}{mlp-33}% + }% +\DeclareOption{efrench}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{efrench}{mlp-33}% + }% +\DeclareOption{naustrian}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49}% + }% +\DeclareOption{ngerman}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49n}% + }% +\AtBeginDocument{\beginlanguage}% +%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/mlp-01.sty b/language/french/e-french/texmf/tex/mlp-01.sty new file mode 100644 index 0000000000..342a094615 --- /dev/null +++ b/language/french/e-french/texmf/tex/mlp-01.sty @@ -0,0 +1,13 @@ +% mlp-01.sty (the english interface for the mlp package) last mods 2000/09/06 +% +%% +%% checksum = "63302 137 659 7109" +%% +% Notice we load fenglish.sty from the French dist. +\ProvidesFile{mlp-01.sty}% + [2000/09/06 english interface for the mlp package] +\DeclareOption{english}{\PassOptionsToPackage{english}{fenglish}} +\ProcessOptions% Process that option definitely for mlp-01 +\RequirePackage{fenglish}% Load the english package. +\def\@lastoption{english}% The language to start typesetting with. +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/mlp-33.sty b/language/french/e-french/texmf/tex/mlp-33.sty new file mode 100644 index 0000000000..892cc968b4 --- /dev/null +++ b/language/french/e-french/texmf/tex/mlp-33.sty @@ -0,0 +1,19 @@ +% mlp-33.sty (the french interface for the mlp package) last mods 2005/03/21 +% +%% +%% checksum = "63302 137 659 7109" +%% +\ProvidesFile{mlp-33.sty}% + [2005/03/21 French interface for the mlp package] +\DeclareOption{french}{\PassOptionsToPackage{french}{french} + \IfFileExists{french.sty}{\def\PackageName{french}} + {\def\PackageName{frenchle}} + } +\DeclareOption{frenchle}{\PassOptionsToPackage{french}{frenchle} + \def\PackageName{frenchle}} +\DeclareOption{efrench}{\PassOptionsToPackage{french}{french} + \def\PackageName{french}} +\ProcessOptions% Process that option definitely for mlp-33. +\RequirePackage{\PackageName}% Load french package. +\def\@lastoption{french}% The language to start typesetting with. +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/mlp-49.sty b/language/french/e-french/texmf/tex/mlp-49.sty new file mode 100644 index 0000000000..b3b7c27462 --- /dev/null +++ b/language/french/e-french/texmf/tex/mlp-49.sty @@ -0,0 +1,59 @@ +% mlp-49.sty (the german interface for the mlp package) last mods 2000/09/06 +% +%% +%% checksum = "63302 137 659 7109" +%% +\ProvidesFile{mlp-49.sty}% + [2000/09/06 german interface for the mlp package] +\expandafter% If this coding is not alreadly loaded +\ifx\csname germanTeXmods\endcsname\relax% define the basic cs, + \def\beginlanguage{\german}% the language name cs and + \edef\beginFWdirection{L}% the direction of writing (write Left to right). +\else% + \endinput% else do nothing at all. +\fi% +% A bypass required for other languages because +\let\@SavedCF\captionsfrench% 1) german.sty destroys french captions coding +\let\@SavedCE\captionsenglish% 2) german.sty destroys english captions coding. +\RequirePackage{german}% Load german package. +% The command to initialize all german tools except hyphenation: +\@ifundefined{germanTeXmods}{%................................ \germanTeXmods + \gdef\germanTeXmods{\germanTeX% this is the cs for german.sty + \ifx\captionsnames\captionsgerman\else% + \let\captionsnames\captionsgerman% + \let\date\dategerman% + \let\bibsnames\bibssgerman% + \fi% + \let\switchtolanguage\endgerman% + }% + }{}% +\DeclareOption{german}{\def\beginlanguage{german}}% First language to start. +\ProcessOptions% Process that option (german) defintely. +% The command to set german hyphenation: +% (normally set at INITeX) it should equal to \language=x and nothing else +\@ifundefined{german}{\gdef\german{\relax}}{}% Default............... \german +% The command to do extra things and switch to another language: +\@ifundefined{switchtolanguage}{%............................ \switchtolanguage + \gdef\switchtolanguage#1{#1}}{}% +\let\@enstGORI\switchtolanguage% save original switchtolanguage if any. +\let\germanORI\german% assuming \language=x was set here +\def\endgerman{\no@xtrasgerman% + \let\switchtolanguage\@enstGORI% +% \csname endL\endcsname%stop TeX--XeT 1st direction of writing + \ignorespaces}% but they are not after \end{english} ! +\let\no@xtrasgerman\noextrasgerman% +% The final command to initialize german stuff: +\def\german{\switchtolanguage\germanTeXmods\germanORI%...... Final \german + \ignorespaces}% but they are not after \begin{german} ! +%\german% Don't activate language now, postpone until \begin{document}. +\originalTeX% go back to original stuff +\let\captionsfrench\@SavedCF% restore original \captionsfrench +\let\captionsenglish\@SavedCE% restore original \captionsenglish +\def\@lastoption{german}% The option to start typesetting with. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Let few other packages know that german is loaded. +% +\PassOptionsToPackage{german}{varioref}% +% +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/mlp-49n.sty b/language/french/e-french/texmf/tex/mlp-49n.sty new file mode 100644 index 0000000000..d04f55d8da --- /dev/null +++ b/language/french/e-french/texmf/tex/mlp-49n.sty @@ -0,0 +1,59 @@ +% mlp-49n.sty (the "ngerman" interface for the mlp package) +% last mods 2000/09/06 +%% +%% checksum = "63302 137 659 7109" +%% +\ProvidesFile{mlp-49n.sty}% + [2000/09/06 new-german interface for the mlp package] +\expandafter% If this coding is not alreadly loaded +\ifx\csname ngermanTeXmods\endcsname\relax% define the basic cs, + \def\beginlanguage{\ngerman}% the language name cs and + \edef\beginFWdirection{L}% the direction of writing (write Left to right). +\else% + \endinput% else do nothing at all. +\fi% +% A bypass required for other languages because +\let\@SavedCF\captionsfrench% 1) ngerman.sty destroys french captions coding +\let\@SavedCE\captionsenglish% 2) ngerman.sty destroys english captions coding. +\RequirePackage{ngerman}% Load ngerman package. +% The command to initialize all german tools except hyphenation: +\@ifundefined{ngermanTeXmods}{%................................ \ngermanTeXmods + \gdef\ngermanTeXmods{\ngermanTeX% this is the cs for ngerman.sty + \ifx\captionsnames\captionsngerman\else% + \let\captionsnames\captionsngerman% + \let\date\datengerman% + \let\bibsnames\bibssngerman% + \fi% + \let\switchtolanguage\endngerman% + }% + }{}% +\DeclareOption{ngerman}{\def\beginlanguage{ngerman}}% First language to start. +\ProcessOptions% Process that option (ngerman) defintely. +% The command to set ngerman hyphenation: +% (normally set at INITeX) it should equal to \language=x and nothing else +\@ifundefined{ngerman}{\gdef\ngerman{\relax}}{}% Default............ \ngerman +% The command to do extra things and switch to another language: +\@ifundefined{switchtolanguage}{%............................ \switchtolanguage + \gdef\switchtolanguage#1{#1}}{}% +\let\@enstGORI\switchtolanguage% save original switchtolanguage if any. +\let\ngermanORI\ngerman% assuming \language=x was set here +\def\endngerman{\no@xtrasngerman% + \let\switchtolanguage\@enstGORI% +% \csname endL\endcsname%stop TeX--XeT 1st direction of writing + \ignorespaces}% but they are not after \end{english} ! +\let\no@xtrasngerman\noextrasngerman% +% The final command to initialize ngerman stuff: +\def\ngerman{\switchtolanguage\ngermanTeXmods\ngermanORI%...... Final \ngerman + \ignorespaces}% but they are not after \begin{ngerman} ! +%\ngerman% Don't activate language now, postpone until \begin{document}. +\originalTeX% go back to original stuff +\let\captionsfrench\@SavedCF% restore original \captionsfrench +\let\captionsenglish\@SavedCE% restore original \captionsenglish +\def\@lastoption{ngerman}% The option to start typesetting with. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Let few other packages know that ngerman is loaded. +% +\PassOptionsToPackage{german}{varioref}% +% +\endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/mlp-opts.sty b/language/french/e-french/texmf/tex/mlp-opts.sty new file mode 100644 index 0000000000..b260ac2963 --- /dev/null +++ b/language/french/e-french/texmf/tex/mlp-opts.sty @@ -0,0 +1,14 @@ +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% mlp-opts_doc.txt original file name. An idea of Bernard Gaulle 97/10/31 +%% checksum = "55633 14 72 713" +\ProvidesPackage{mlp-opts}[1997/10/31 mlp processing options by --bg /V0.01/]% +\def\@tempa#1#2#3#4#5#6#7#8#9/{\def\@tempa{#1#2#3#4#5#6#7#8.mlp}}% + \expandafter\@tempa\@lastoption xxxxxxxx/% + \expandafter\InputIfFileExists{\@tempa}{}% + {% + \input{internat.mlp}% + }% + \ProcessOptions*% +\endinput% diff --git a/language/french/e-french/texmf/tex/mlp.sty b/language/french/e-french/texmf/tex/mlp.sty new file mode 100644 index 0000000000..39cc28ddc3 --- /dev/null +++ b/language/french/e-french/texmf/tex/mlp.sty @@ -0,0 +1,29 @@ +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% mlp_doc.txt original file name. An idea of Bernard Gaulle 97/10/31 +\ifnum\catcode`\@=11\else\expandafter\catcode`\@=11\fi% +\ifx\@mlp@loaded\undefined\let\@mlp@loaded\relax% +\else\expandafter\endinput\fi% +\ProvidesPackage{mlp}[2004/06/25 The Multi-Lingual Package by --bg /V0.03/]% +\def\@lastoption{}% +\DeclareOption*{\edef\@lastoption{\CurrentOption}% + \PassOptionsToPackage{\CurrentOption}{mlp-opts}% + }% +\ProcessOptions*% +\edef\@required{}% +\def\@requirepackage#1{\protected@edef\@required{\@required% + \protect\RequirePackage{#1}}}% +\def\addcaptionnames#1{\@nodocument#1\expandafter\g@addto@macro% + \csname captions\languagename\endcsname{#1}}% +\def\@tempa{}% +\ifx\@lastoption\empty\input internat.mlp % + \def\@tempa{\ProcessOptions}% + \else% + \def\@tempa{\RequirePackage{mlp-opts}}% +\fi% +\@tempa% +\@required% +\let\@required\undefined\let\@requirepackage\undefined% +\edef\beginlanguage{\expandafter\noexpand\csname \@lastoption\endcsname}% +\endinput% diff --git a/language/french/e-french/texmf/tex/ndeutsch.mlp b/language/french/e-french/texmf/tex/ndeutsch.mlp new file mode 100644 index 0000000000..b393a01e36 --- /dev/null +++ b/language/french/e-french/texmf/tex/ndeutsch.mlp @@ -0,0 +1,40 @@ +% ndeutsch.mlp New german configuration for the mlp package. +% last mods: 2000/09/06 +% +% mlp means The Multi-Lingual Package, an idea from --bg 97/11/03 +% +% This file can be modified if the local or linguistic TeX users group +% accepts the modifications. +% +% Group to get in touch for ndeutschx.mlp is: ... +% Person to send a message is: ... (defaultly: gaulle@idris.fr) +% +% +\ProvidesFile{ndeutsch.mlp}% + [2000/09/06 new german configuration file for mlp package] +\DeclareOption{deutsch}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\DeclareOption{englisch}{\@requirepackage{mlp-01}% original US english + \PassOptionsToPackage{english}{mlp-01}% + }% +\DeclareOption{franzosisch}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{franzoesisch}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{hollandisch}{\@requirepackage{mlp-31}% + \PassOptionsToPackage{dutch}{mlp-31}% + }% +\DeclareOption{ndeutsch}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49n}% + }% +\DeclareOption{noesterreich}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49}% + }% +\DeclareOption{oesterreich}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\AtBeginDocument{\beginlanguage}% +%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/noesterr.mlp b/language/french/e-french/texmf/tex/noesterr.mlp new file mode 100644 index 0000000000..01e3e48cd2 --- /dev/null +++ b/language/french/e-french/texmf/tex/noesterr.mlp @@ -0,0 +1,40 @@ +% noesterr.mlp New austrian configuration for the mlp package. +% last mods: 2000/09/06 +% +% mlp means The Multi-Lingual Package, an idea from --bg 97/11/03 +% +% This file can be modified if the local or linguistic TeX users group +% accepts the modifications. +% +% Group to get in touch for ndeutschx.mlp is: ... +% Person to send a message is: ... (defaultly: gaulle@idris.fr) +% +% +\ProvidesFile{noesterr.mlp}% + [2000/09/06 new austrian configuration file for mlp package] +\DeclareOption{deutsch}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\DeclareOption{englisch}{\@requirepackage{mlp-01}% original US english + \PassOptionsToPackage{english}{mlp-01}% + }% +\DeclareOption{franzosisch}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{franzoesisch}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{hollandisch}{\@requirepackage{mlp-31}% + \PassOptionsToPackage{dutch}{mlp-31}% + }% +\DeclareOption{ndeutsch}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49n}% + }% +\DeclareOption{noesterreich}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49}% + }% +\DeclareOption{oesterreich}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\AtBeginDocument{\beginlanguage}% +%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/oesterre.mlp b/language/french/e-french/texmf/tex/oesterre.mlp new file mode 100644 index 0000000000..f9d18b97fb --- /dev/null +++ b/language/french/e-french/texmf/tex/oesterre.mlp @@ -0,0 +1,40 @@ +% oesterre.mlp Usual austrian configuration for the mlp package. +% last mods: 2000/09/06 +% +% mlp means The Multi-Lingual Package, an idea from --bg 97/11/03 +% +% This file can be modified if the local or linguistic TeX users group +% accepts the modifications. +% +% Group to get in touch for ndeutschx.mlp is: ... +% Person to send a message is: ... (defaultly: gaulle@idris.fr) +% +% +\ProvidesFile{oesterre.mlp}% + [2000/09/06 autrian configuration file for mlp package] +\DeclareOption{deutsch}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\DeclareOption{englisch}{\@requirepackage{mlp-01}% original US english + \PassOptionsToPackage{english}{mlp-01}% + }% +\DeclareOption{franzosisch}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{franzoesisch}{\@requirepackage{mlp-33}% + \PassOptionsToPackage{french}{mlp-33}% + }% +\DeclareOption{hollandisch}{\@requirepackage{mlp-31}% + \PassOptionsToPackage{dutch}{mlp-31}% + }% +\DeclareOption{ndeutsch}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49n}% + }% +\DeclareOption{noesterreich}{\@requirepackage{mlp-49n}% + \PassOptionsToPackage{ngerman}{mlp-49}% + }% +\DeclareOption{oesterreich}{\@requirepackage{mlp-49}% + \PassOptionsToPackage{german}{mlp-49}% + }% +\AtBeginDocument{\beginlanguage}% +%%%%%%%%%%%%%%% diff --git a/language/french/e-french/texmf/tex/pmfrench.sty b/language/french/e-french/texmf/tex/pmfrench.sty new file mode 100644 index 0000000000..907c9ecce1 --- /dev/null +++ b/language/french/e-french/texmf/tex/pmfrench.sty @@ -0,0 +1,12 @@ +% This is pmfrench.sty (informations en francais dans frenchfr.doc) +% After Bernard Gaulle's decease this work is now maintained as +% the e-French project by a group of enthusiast users +% under LPPL copyright as declared in http://www.efrench.org/ +% +% (the "Poor-Man-French" style) --bg 03/01/93 +% last mods: 2000/03/03 +% It can be called via \usepackage{pmfrench} with LaTeX +% +\input french.sty % +\pmfrench % here we tell french to be a lot tolerant! +\endinput |