[Check in changes I found from months ago, rename package, remove GLUT copy David Fox **20130624161452 Ignore-this: 8e17eeab4ddc1a281dfea0d08fd97b81 ] move ./AmuseEllie ./Demo move ./AmuseEllie.cabal ./demo.cabal move ./Demo/AmuseEllie.hs ./Demo/MouseParams.hs move ./Demo/DisplayTail.hs ./Demo/DrawTail.hs addfile ./Demo/Color.hs addfile ./Demo/Grid.hs addfile ./Demo/Mouse.hs hunk ./GLUT/include/HsGLUT.h.in 1 -/* ----------------------------------------------------------------------------- - * - * Module : C support for Graphics.UI.GLUT.Fonts - * Copyright : (c) Sven Panne 2002-2005 - * License : BSD-style (see the file libraries/GLUT/LICENSE) - * - * Maintainer : sven.panne@aedion.de - * Stability : provisional - * Portability : portable - * - * -------------------------------------------------------------------------- */ - -#ifndef HSGLUT_H -#define HSGLUT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_GL_GLUT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_WINDOWS_H - -/* Define to 1 if native OpenGL should be used on Mac OS X */ -#undef USE_QUARTZ_OPENGL - -#ifdef USE_QUARTZ_OPENGL /* Mac OS X only */ -#include -#else -#if HAVE_WINDOWS_H -#include -#endif -#if HAVE_GL_GLUT_H -#include -#else -#include "glut_local.h" -#endif -#endif - -#if FREEGLUT -#include -#endif - -extern void* hs_GLUT_marshalBitmapFont(int fontID); -extern void* hs_GLUT_marshalStrokeFont(int fontID); -extern void* hs_GLUT_getProcAddress(char *procName); - -#endif rmfile ./GLUT/include/HsGLUT.h.in hunk ./GLUT/include/HsGLUTExt.h 1 -/* ----------------------------------------------------------------------------- - * - * Module : GLUT extension support for Graphics.UI.GLUT - * Copyright : (c) Sven Panne 2002-2005 - * License : BSD-style (see the file libraries/OpenGL/LICENSE) - * - * Maintainer : sven.panne@aedion.de - * Stability : provisional - * Portability : portable - * - * This header should only define preprocessor macros! - * - * -------------------------------------------------------------------------- */ - -#ifndef HSGLUTEXT_H -#define HSGLUTEXT_H - -/* NOTE: The macro must immediately start with the foreign declaration, - otherwise the magic mangler (hack_foreign) in the Hugs build system - doesn't recognize it. */ -#define EXTENSION_ENTRY(_saftey,_msg,_entry,_ty) \ -foreign import CALLCONV _saftey "dynamic" dyn_/**/_entry :: Graphics.UI.GLUT.Extensions.Invoker (_ty) ; \ -_entry :: (_ty) ; \ -_entry = dyn_/**/_entry ptr_/**/_entry ; \ -ptr_/**/_entry :: FunPtr a ; \ -ptr_/**/_entry = unsafePerformIO (Graphics.UI.GLUT.Extensions.getProcAddress (_msg) ("_entry")) ; \ -{-# NOINLINE ptr_/**/_entry #-} - -#endif rmfile ./GLUT/include/HsGLUTExt.h hunk ./GLUT/include/index.html 1 - - - - Index of /packages/GLUT/include - - -

Index of /packages/GLUT/include

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] HsGLUT.h.in 15-Nov-2006 02:07 1.1K -[TXT] HsGLUTExt.h 15-Nov-2006 02:07 1.1K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/include/index.html rmdir ./GLUT/include hunk ./GLUT/examples/RedBook/Data/index.html 1 - - - - Index of /packages/GLUT/examples/RedBook/Data - - -

Index of /packages/GLUT/examples/RedBook/Data

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[   ] leeds.bin 28-Jan-2004 11:11 704K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/RedBook/Data/index.html binary ./GLUT/examples/RedBook/Data/leeds.bin oldhex *0000025700000191cdd9dcd0dbdcc0d6d393af736da567629d646fa76f73a56a70a57080b18281 *b07d87b18281b08287b68c82b48b87bd918aba8f8dbd9698be9b98c4a398c1a2a0c6aaa0c5aaa4 *cbaba4c9aca6cbafa8cdb4a9cdb3aeccb8b0cfbbb0d1bfb7d2c2b7d6c6bad8c8bbd7c9bcdbcbbd *dbcfbddccfbedbcebdd7ccbbd6cabed8cec3dfd6c3ddd5c4ded5c3ddd6c7dfd8c2dcd1cce3ddcb *e1dac6e2dcc9e2dbc9e2ddcae4dfcbe3e1cee3dfcae0ddcfe0ddcfe3e0cfe6e2d1e5e3d0e2e0d4 *e6e6d6e7e6d3e4e5d4e7e6d5e8ead6eae8d6e8e9d8e9e9d8eae9d7e7e8d6e7e8dae7eadbe7eadc *e8ead9e8eadbeaeadbeaeadbeaead9e6ead9e7eadceaecdde9ecdce9ebdbeaeadceaecddeaecdd *eaecddeaeddeeaece1eaebdfeaebdeecebddeaecdfeeeddeececdeebeddeeaede0eaede0eaece0 *ecf0deebeedfebf0dee9edddebeddde9ecdde9eae0ebecdeeaebe0ebebdceaecdeebeadeebecde *ebebdfeaeedee8ede0eaede0eaede0eaeddee9ecdeeaefdee9eedeeaeddeeaeddfeaecdfeaebe0 *eaebddeaecddebeee0eaeedeeaeeddebecdfebecdfeceee0e9eadfeaebdfeceddfebecdfeaeedd *eaefdeebecdeeceadfeaebe0e8eae0e9eadeeaecdee9eddee9eedceaecdde8eadeeae9dfe9e8df *e8eadfe9ebddeaeddeeaeeddebeedfeaebdfe9ebdee8ebdee8ebdfe8e9e0e9ebdee8ecdee8ecde *e9ecdee8eadfe8eadee8e8e0e7e8e0e7e9dfe8eddde8ecdde9ecdee9ecdee8e8dee8eae0e8e9e0 *eaebe0e9ebdee9ecdee9ebdee9ecdeeaeadfeaeadee8e8dee7eadee8eadee9eadde7eadee7eade *e7eadde9e8dde8e7dde7e9dfe7e9dde7e8dde7e9dde8e8dce7eadde7e8dde7e7dce7e6dde7e7de *e6e8dee7e8dce6e8dce6e9dde7eadde7e8dde8e7dde7e7dde7e6dde7e7dee6e8dde7e8dee6e9de *e7eadce8e8dbe7e7dbe6e8dce7e9dfe7e6dee6e7dde7e9dde7eadde8e9dde7e8dce7e7dde7e6dd *e6e6dee5e7dde6e5dce6e8dbe7e8dde7e8dde7e7dce7e6dce6e6dde6e6dde6e6dde6e8dce7e9dc *e7e9dce7e7dde7e5dce7e7dce6e6dde5e5dce7e6dde6e7dce6e8dce5e7dce6e6dce7e7dce5e6dc *e6e6dce7e6dce5e7dde6e6dce7e7dbe6e6dbe5e6dbe7e7dbe5e7dbe5e6dbe5e5dbe6e6dbe6e7dd *e6e7dbe6e8dce7e6dce7e6dde6e5dbe6e5dce6e8dde5e7dce6e6dde6e7dce6e7dbe4e6dce5e6db *e5e7dce5e7dbe5e5dae5e7dbe5e7dbe5e7dbe5e5dbe6e5d9e5e6dbe6e6dbe5e6dce4e6dbe4e5db *e6e6dae5e6dae6e7dbe5e6dce6e6dce6e7dde5e7dce5e6dce5e8dbe5e6dce6e7dbe6e7dbe6e7dc *e6e7dbe5e6dde6e5dde5e7dce6e7dbe5e8dce7e8dbe7e6dde6e6dce5e8dde7e7dbe5e8dce6e7de *e6e7dce7e9dde6e9dce6e8dde7e8dce6e7dde6e7dce6e7dde6e6dde6e8dae7e8dbe7e7dbe6e8db *e6e9dbe5e7dae5e7dce6e7dbe5e7dbe6e8dbe6e7dbe6e9dbe7e8dde6e9dde7e8dce5e8dde6e8dc *e7e8dce7e8dbe6e8dde6e8dae5e8d8e3e5dbe5e8dbe7e7dde7e7dce6e8dde6e6dce7e7dbe7e8dd *e8e8dbe5e7dce6e8dde6e9dde7e8dde8eadde6eadbe6e9dde6e9dce6e9dce6e8dde7e9dde7e9dc *e6e9dce6e9dce7e9dbe7e8dce7e9dae5e5dde6e8dde6e9dde7e9dde7e9dde7e9dce7e9dde7eadd *e7ebdee8eadde8e8dee6e9dee7eadee7eadde8eaddeaecdde8eadfe8eadee8eadde8ecdee9eadd *e8e8dee8eadce9eadde8eadee8eadee9eadee9ebdee8ecdfe7ece0e8ecdfe7eadee7eadde9ebdd *e8ecdee8eadee8eae0e8ebe0e8eadfe9eadee9eadde9eadde8ebdee9ebdee9eadee8e9dee8eadf *e9eae0e9eadee9eadde9eadfe9ecdee8ecdfe8eadeeaebdfeceae0eaeadfe8e9dde8eadee9ebdf *eaeddee9eadeeaebdee9eadde8eae0eaeae0eaece0e9ece0eaece0ebecdeeaecdeebecdeeaeae2 *e9ece0e9ece0eaece0e8ecdfebecdfe9ecdfeaecdfeaecdfeaebdfeaebe0eaebe1eaecdfe9ece0 *ebeedeebecdeecece1ebebe0eaece1e9ece1e9ece1eaede0eaece0ebede2eceddfececdfeaece0 *e8ebe2e9eae2e9ecdfeaecdeeaeedeeceddfeceee0ecece0eaebe1eaeae0e8eae0e8ecdeebeee0 *ebeddfe9ede0ebecdfeaede0e9ecdfe9ece0e8ebdfe9eddeeaeddee9ecdee8ecddeaebdde9e9de *e8e9dfe8ebe0eaebdee9edddeaecddeaecddeaebdfebeddfe9ebdfe8ecdfe8ebdeeaecdeebeade *eaeddbe9eee1ebecdfeaeddee8ece1eaece0e9ebe0e8eddee9edddeaecdeeaeedeeaebdeecebdf *ebebdfe9eae0e7eadee8eadee8eddfeaeedfeaecdeebebdde9ecdeeaecdde9ebdfe8ebdfe8ebdf *e9eddeeaedddeaedddeaecdeeaeadde8e9dee9eadee8ebdce6eadee9ecdeebecdfebecdeebeade *e9ebdee8ebdee8eadee9ecdee9ebdee8ebdee9eddfeaecdfeaecdee9e9dee8ebdde8ebdde8eade *e8ecdeeaebdee8eadee7eadde8eadde7eadde8e8dee8eadde7eadde8eadde7ecdde8ebdde7e9dd *e7e8dde6eadee6eadce7e8dce6eadde6e9dde7eadce6eadde6e8dde7e8dbe7e8dbe6e7dbe6e9dc *e4e6dbe5e9dbe5e7d8e4e6ccd6dcccd6dbbfccc56d845a686b2e606f2e7070375f53275e67344c *552e4f5a323d481c3b42215c5a2164672b454c1e4f522d5f5f385d58255251295b4a1f484e1e4c *4e20464e203e4f254e4e2649502760542b4b4d2346491f4c4e24465a275e682e555b2c4f5d2d57 *552847542a4559254361263755325a5a2a414f254d4d2d43572d425d2e42683a435c2d3d5d2533 *4f2222401e2a46212e4921394b2643542b354d2736522b315d30456a313257292e5025284b233e *56293a512e304f2d264e212346201e471d254b1e29441f2a43263148233c542f39562a3d522634 *5024356136315a2a3048283350292c46232f4524244122274a242d5725274b25344d2634502931 *40233c4c2c434f2c3a4f273e57283e5125445f2e385f3647623c3b5f344863374c623440632a3b *642f35612d3d5a2e3c5d323c562f30503128462d3752334260372e482831542c3e653243642f34 *522c3c5a354360403e6235355d344565354b7340496b3d4e76414665455b774c4a683d3f603534 *57323e603b45583a42644341603e48654343633e3b58353e60403e563d486d43345a373558363f *58423d5c3f465f425478524e6a4d3a6447557d56607d53496c4d395b403b5e534b6a58446c504a *7450497254466a4f5f7d595b7a4d65835f6181616f856c6a896c5f836560896f5d866b597f686f *8c7162826551715f4f6e60597c6a54805f4b75624265604b6a6961816f5881695e7d725b7c6758 *846e5f7f6f678c8061807865877b78927b89a59266907f5d8672678c856c93855d858060898564 *85806386856484846e8e8768908b6f8e8a688b886c938e72908c6e928f729696668c956a94976b *929b70989a6c979b789a9f7c9da27a9da17a9ea682a4ab84a4ab7da3aa86a6ab8babaf8aaab37f *a4af8badb486a5b080a6b287a6b297b1b694b1ba9ab3baa4bbc19fb9bd9cb6bf9eb6be9fb2c0a0 *b6c1a6bdc79db7c698b4c198b2c298b6c699b6c59eb6c3a1b8c6a5bcc8a7bdc8a6bcc9a2bac8a2 *bac9aac1caabc2ccaac0cbabc0cdacc1cbafc4cfaec6d1aec6d2afc6d2aec4d2b2c8d5afc7d3b0 *c7d5b2c7d3b6cbd6b6ccd6b8cbd6b2c9d6b4c8d6b6cbd8b7cdd6b6ccd9b8cfdab9cedcb9ccdcbb *ceddbdd1ddbdd1e0bfd1e0c1d3e2c1d4e1c0d3e0c1d3e2c2d3e1c6d8e5c3d8e3c3d8e2c2d7e3c4 *d8e3c3d7e3c5d6e3c6d7e3c6d8e4c7dae6c6dae4c7dbe4c8dde6c8dbe7c9dde8cadce8cbdde7ca *dce7cce0e9c9dde7cde0ebccdfebcee1ebcee0eccee0ead1e1eccfe2ebd2e5ecd1e5ecd2e5edd3 *e5eed3e4eed3e6f0d5e7efd6e7eed8e7eed8e8eedaeaeed9e9efd9e8efdbeaf1d9eaf0dbe8edda *ebecdeecf0ddedf1deecf0dde9f0deebf2dcebefddebf0ddedefdeedf0deedf0deeeefdfedf0e0 *ecf0e0ecf0e0edf1e0eef1deefeedfefeee1efeedfeff0e0eef1e0f0f1e2eef1e2eff1e0eff0de *eeeedeecede1eef0e2f0f0e3eef0e0edf0e2ecefe3eef1e2efeee2f1f0e3f0f1e2eff0e2eeeee2 *f0f0e4eef3e3eff1e3eff3e3eef0e2f1efe2f2f1e2f1f0e1eff3e2eef0e1edefe2edf0e3edf1e2 *f0f0e4f0f0e3f1f2e1f0f0e1eeefe4f0f0e4eef0e6eff3e5f0f1e4f1f2e4f1f1e3f3f3e4f1f2e5 *f1f1e5f1f1e6f1f1e7f2f3e5f1f0e5f1f3e6f2f2e4f1f0e5f3f2e6f1f4e6f0f4e7f2f4e7f3f4e5 *f2f1e3f1f0e3f1f1e3f1f0e4f0f1e6f1f1e5f1f3e6f2f4e5f1f3e5f1f0e3f1efe5f1f0e5f2f2e4 *f2f2e5f1f4e7f2f3e7f2f3e5f3f3e6f3f1e5f3f2e5f2f3e5f2f1e5f0f2e6f0f3e5f1f3e5f0f3e4 *f2f1e5f1f1e4f1f1e5f2f1e5f2f0e5f2f1e6f0f1e5f1f1e5f1f5e5f2f3e4f2f3e5f0f1dbe9e3e5 *f1f1e6f3f1e5f3f3e6f2f4e6f1f4e5f2f0e5f1f3e6f3f3e5f3f3e6f1f4e6f3f3e6f2f2e6f1f3e5 *f1f3e5f3f2e5f3f1e5f2f1e5f2f2e5f1f1e6f2f2e6f2f3e7f2f3e5f2f1e6f2f2e5f3f3e4f3f2e5 *f3f2e4f2f3e6f2f2e6f2f3e6f1f3e5f2f3e5f3f3e5f3f2e5f4f2e4f2f1e5f2f3e6f3f1e6f1f1e8 *f1f3e4f3f3e6f4f3e6f4f1e5f3f3e5f3f3e5f3f2e6f1f3e4f1f2e5f3f3e6f4f2e6f3f1e5f2f1e4 *f1f2e5f2f2e6f1f3e6f2f3e5f1f3e5f1f3e4f3f2e4f3f1e5f1f2e4f3f2e3f1f2e4f0f4e4eff1e5 *f1f1e3f0f1e4f2f3e5f2f2e4f2f2e5f2f3e6f1f3e5f1f3e5f1f5e4f0f4e6f1f1e3f0f0e5f1f2e5 *f1f3e5f3f1e4f1f2e5f0f2e5f1f2e5f0f3e4f0f3e6f2f3e5f2f3e5f1f3e5f1f3e5f1f2e4f1f3e5 *f0f3e6f1f3e7f1f4e5f0f2e4f1f3e5f1f3e5f1f4e6f1f3e4f0f3e4f1f2e5f1f2e5f0f2e5eff3e4 *f0f2e5f1f3e6f1f4e5f0f3e5f0f4e5eff3e5f1f3e5f1f3e6f2f3e6f3f3e3f2f2e4f2f1e6f1f3e6 *f1f4e5f1f3e5f1f4e4f0f2e5f1f3e3f1f1e3f0f2e3f0f1e6f2f2e5f1f2e0e4f0e2f0f3e3f1f4e5 *f2f2e5f2f3e5f2f3e5f1f3e6f0f1e6eff1e6f0f2e5f1f3e3f0eee4eff1e3f0f0e3f0f0e4f0f3e2 *eef2e3f0f1e5f0f3e5f0f2e3eff0e2eef0e3eeefe3f0efe3eef0e3eef0e3eeefe3eff1e2f0f1e2 *f0f0e4eeefe2edeedde6e9d9e3e6ced6d8ccd6d7bec6b9687a4668722e697d38729043707f2975 *692b6e6129736e2a684e2265642a5f652a5d5e2860621d6564226a551c6f5a22706f2c6c702a6a *6d276e742e6c6b2662551f5f6b226a7223635c1e6561246e6c2b625b285e6128685e265c531e66 *5423605f235f56225852246059246050265f6531565825484e23675722575c245f4b244c4d2442 *4b244d52266870365b4d235a46224d4c1e474f2150521e474a225a5725505d2a484b2b5a562755 *54214d431e39451e39471e2f3f1b2d401d4f47213f4d24394c233f54303b4e1f5555244c501f49 *5226475826485a2b47562646481d414f21394922494e2238511d325121414721494e2b3a412432 *452032451e474d29374e21404a2144502731481e2b451c475221435722425a2d38532547632d5c *65324a51243f5b32415c2c3e5b263c5121365c282d4f273250232f4e21233f1d354f264b672b4f *6125425b283f652f48622b4e62274465274e6733465c284e5c274a56225d58254e59254d5a2942 *5e2d405e2b324a1e3f54243f52233d56223950213e4b222c441d415f28395724424b233e4f242c *4b1e2c4b1a3850213b4c23425c2c4357223a4f25465a2532451d33431e24391d304c213a57253e *602646692a405d233a4f1f3a58243d56243e59244e57275a6429475722445822414f204745214b *442049471e38481d36481c565c216668295d5e255256273f572c4153295d6a335b683147572762 *67334b5f2b5c592b4453264b4820695d26536a2a55602045431d3a542540492046482038441c49 *50254f592258572e4e5524576127616530605d2a495324485b294f5c285567334f5a284b602740 *5324414a216d6b2a505f2944602b45612c3c582c587036586c29535f2350662c7371356c763f53 *6d356b6c316574436a763c706f36617b4261783a6f7a3f898b4d828d517b854479884a69824079 *87406c7e3e677b394e682f455e23425f2a4f703f46592759723b6077376d7f43536a2e758b645d *69366f733d566a35646d2f5056205c68335b703159662b495b2b6167306b68365a612d6765296f *78307c7a357f77307970306a75397367356d69335d6a35646d2a7d7537807c357479366e763e72 *754084783d758042607d3d657a3c678040817d3e7984486f753d6073416c74437d743d7d814372 *7c3c687b4277823f7f893f7384437c86417e844668783f63723376833e7c7c3a73803e69723d5f *783b5d73346b7d3f6a7c3f848a44697e42757c37867d3d778b4c869350747e4277854a7e85477c *884a70864a708542758546678146677c3d7685477a8646697f3b657b366a7c38778c436a7c3551 *723b627f425c74447886476e8442687d3e5a6e2b5d6e2f627d3b59773859763c586e305a793659 *783a5c7032667d3a627234556528657d40687f44617a3c62793e69803f5b72345d76335c6b2b68 *7f3a627837657e3c5d7a3965813b6a83415e793b677e3f697a38627c395a783f678542597b3f57 *702c4d692f4c562649642e546f344c682d667f386b85395f7f3d5f7f3f5872333f572558713a5f *783b5873354b70315f7b3c62813c5876325d7d3b5f7e405e7835647d3b5f7d3b637b3e68844456 *783c5d763b667e41618146758b4a6381465f8042648042647d3d64813d6485486a8a476084465a *7e4268813b6c8640527c3f688c4f658b507c9657819b50759048778d4b718f4c688c4e6a874369 *804165884d5982495c8241618c4d699151688e545e864a63884f6a8a535b81455c80486d894864 *8b5062844867894e6080486f894c56784556804c618551588b505f8b4b6c96566a8a566a944f77 *985f709253678d52578550658b49678c4f658d537c99606181537a9b5d65905875935b7d9d5e79 *99616992596d966175995e6f945a6288585f875c6289595e8d605e8655517d4c5f874b6c95607d *945a7a9e647c9a6474965a6f8f57698c4f6b92547693576b845464874e6c9254799e6572925e6f *99656c975c82a2677d9a5f76906174956072955f708e527095576a89506892526c9254658c5262 *85596e8a50718e616c925c74975270945c708f5375985e678e64618d65658e645f86534d724665 *89526b925d6e9461648d60688e62688b617994606f91617096636a915d79996a718f5c6f925e70 *94696c905d72976475926c709360678b5b71925d7b975c7e986668885e6e966c799669608a666c *9261698f606b885c72976073916462805659826269855c628a626a8b5a719a6a80975f79976780 *9c6589a072879d69869a668297617c9960728d5a879d5c7b9c6880a17377966b87a4707c9e7474 *9361839d658ca1668da5698aa2728aa4798ea478849d777d9b6b839a63809e62849f678c9f6981 *986383996a779b726d8d637697637e966479996475965f708e648a9a65729a727a9a65799a657d *9767738d5f8ca16c79996b7d98676e9162719064739169769a687195676a8b626f90626b8b5e68 *865e5f835a6d8756829166b5c0a3d8e1e3cbd5d8c9d3d6b6bfaa6b6738666a2a696821696c3072 *653172602266571f5e50225c531e6557286c6930696325545c20585e1e5f5a2269672867572168 *582a6056215c541a5b532066621f6155204f501e5b4c215f571e67621f6856206d672264642b54 *541e48471a555320594b205d4e23545226625523696222494d1c54411e5247225255295249214a *4b1e525e34575f264f5323434f1f364a22544d17363717504b21424d1f554e1e51522558502350 *491d454d1d3f431b3e3c173a421f3a4321404c1d42511f52551f444a194147193f4c19303d172d *451a33391b485020454f1a3e4e18364a1a3d461b374822455f2f455b285655294551203e572839 *4e1d494c1f3f4b1d334a1d40532632402130431e30451a33431c3e491d39491e4254203e441d3f *4e23475f335353234c5f20385e273b5c1f37561e3b4f1e4362284c5f2a3e5a2c3a5c273b5a1f43 *5e2052571e414d1a3b59234052244b5d25455f23344f1a394f1a4a5b1c3e48183f4e1e405a2749 *6227455826314f1c3a501f314e1d3a511c32461f33461a3140174f4f21414b1e475d1f3b491e34 *3b183f51183a4a1d37521e2c491e3b4c1f3d572548501f293d142b4215314e1f3851244f571e41 *5f255365255a662748531d2f4414364a1434511f415d1d545920535a244d471d4b482047431a4a *3810403c0e424214474c1e454a16484e1d49501d584e1c535528454f25575b1d69783240502143 *54254557284f5434394420444c1e45401547471b49551e4e61243e4e1e4858294d502548461840 *4a1c4f5d215757215c694058643a6a6a3670795260672a5d5f2a586c326b6c2e666f305d6b2d61 *693164662d5c6129555e2a686c2a506227536125495b22506b284a5c2267763a647034777c3e70 *7d3564793574732d797d3579772f686d2b6f7530706e35798445767e3c7c823f7f792f6a782978 *782f5d73345a733c687c3c76782c5b6e305c6622556224636c3267742d4e5e25566f2f5a693369 *7e317a81406e7a3d607435586a2e586e2c5f713657622b57653357662d6069297673316e75386c *773c70703a65682c84762f83762e737d2d79733672762d6d5e216f722a836d2b756c2c75752a7e *722c7c6c24766a2b6e6c267e7b328685427f7f4b826d2e7f7d3b6d6d34757d3d82763e655b2563 *6126656a2c6d723671783f787d377e7b3a7c893f8a90437985437d7f3e90853e7f803d6a722a5a *6d266577376c7a3a67792d6b762d7a85446f7b3e70793875793b7676357b7841778644787e347e *87427d853f737935646a295c7835757a3a5e793f67803f798a4474823a637844717d4172843d5f *6f2c6d7c3b6a7e3f65763b677d3d64823b6380415e7b3c4f703d62763958783d59653064783c5e *763766803c51652f5a71305d702c6a7b38697a395d7a3b637c3b637a315a7940648041647c3b60 *713866783f697c38607d40678033627f295968285364275863264f5c234c5d1f4a61245b691e64 *6b275c74325978344a652f557333607e3a55722a5d732d576d265e722a5b702d52662750692949 *6c2d48672c4a602857732c647a3266803b5c7c2f64833658762d5672365e76376a823b5a742a60 *72285d77375b79325f772e5a79385d752e6075326a7e3a6c7f2d647a2d5c74285a7524647e3866 *85415e793e6b84426a883f5778336984385f813b6684345c7b2f697f3d6482436d8234637b2b60 *7c295e7c315975355671295d7a335c712e5e773a61763f607f3a5b7a345d722e4a64235564245b *74365c742d51723749692e4d662856752c54762e597d365980414f743a48652b5976315f792d5f *762c5d75385265245c7d2d4e6d3459782d5f7b3259773c576f2b516b2e506a264760235d723169 *7c335e79405776335e753b5d803c5b773d5f763a6685435c7b4258743a5f78394d672b46662e53 *722f5a72365775385f753b5d762e66823f57723349682b58702b5870295a703260823b60833a5b *76385c75325f80415a7331537639596e3358732753742d51702b496e2d496d2a4e693051642c53 *692d5e6d2e59792d5d76295c762e647d3a4e6a345d6f325f7a3d51672750692b59733548663748 *6b304d6e30536f345c76375d76354e67275b76335c79334a712a4f6e2a4d682548652b4463264e *5e285d772c55742d58742a63812e52702850742e4c662752632b5f813e57783c435c294d6c2643 *662d405d264863274461263e5e303c4f23425b1f4360284c632348682c436726506a2948612846 *61274c632555662654692d506a2d4a692b48692a4a6020566f2445651f4b6c2a506a285f752851 *712a526d315d7a30486829516b2d5a6d325871315e732e5e6f2d537334536f2f4d6d29556c2852 *702f5872365a762c5f7b2f526b244d6f264f72344b6f34516d2e4b662f5472344465294d6a2f56 *742c5475324865264c6a2d4c6a2e455e28485f274865274861204a66283f5828445f2543622e3c *4e22405c29425e2e4b602949612d779063cfdadbccd6dbc9d2d6b1b8a86d6c2b647a29615b255f *5f246d6d2b5e5d2556532355531d505a235d551e58561f6a601e584f1c4e50255452256469285b *4e1d675c1e675f205d581d5d5222575c2c5e5c275f5d265b521e4f521a5a5e1d5f62205d6b244d *531e5c6222534d1e5151205165255f571e5f5c1a4f541f534b1853471e4a4b1f43531e4655254c *55255b57264b55255c6024485d24495529546825535826364e253f5723426025486127645d264f *5f26494e224849203f4d1e3f4617375522374f212f4c1a2937124345173f491b30481e41451e2f *431c253d14373e1130440f3740162b44183a4b21475623454b2558501d595521444b194a5c1f47 *5f23405425465c2a304a1f37481e5259213b5c273459214269272742183d481e365125414d2424 *3e1c2d421b40602752612748652a5c6429374f1d3f5428324b1f364b17304a143a5f213b57203a *581d334d1b3643152d3915434819404b1b3e4d173248142947162c461b2c43172d401925431d2d *4b1f3b521e394c172c41182d4e1c394e1d384d1a3a501d2f501835451a2c4c1a2e481543561f48 *4a1942571d3b5021415b29435c24405f244262243a59254a6c3146571e42561d425e2549642e32 *491d31561e48541e3950143b521a324a172944153c4e1a30451731471b3b4c1e3b4e1f39431b3f *4818615d214a451941521c35471a3546203a4f1b3d44173a4c19495c214b651f43622452652443 *561f4969294f6434304c1a4f531e4b5c204354204755284d5b226570315369295872336e7b3d59 *672c606429676e2f68692f6e7f406f793664732d717c31847a35747d396577345f72335a722c64 *76306e773568702f6175315e76336372295a6d285d722c6374335f76326f732a5b7430646e2a5f *7d42617a3763763a717c406a6a2d4c5f234c5e2258652750692e5e73306f66295f6f27657a336a *813372732e4a692f52763a536c2b637330576a2d5f7833696d2b606f2d4f6128465e2250692d52 *60255967245d72276576296c7e36617835666e3060763565803b6b803c6477317f833c72783767 *7d40687038666f3258692e72732f5f6d2a776c2a6d7f3c696c316970266a692c5c692d6e723166 *60257d752c7e703064732b79792f79803d7d80376c612c77824380783c7b80347c6c296e66264f *60295c67317a7c3b84864072804278823f81863a76823d6f833d72833b787f387a7b356e7f385d *722c65773269772d6974276264224f5d2064733168783563752f72813d6e833c758a497c8c4973 *7a31727c35797e3e63783a6380436977326a7f3c6378327686436c8243627e395b6a2e657c3763 *74325f72276b803b647d2d6f833f677e39607b3a5d6e2f5f793b647a3e6e7f3d68853d7682385c *7b3b5e783655752d597535617b395e783255762c58772e4d6521556e255b7632526d305973375b *703963753560733365803760762660752d60762c5a6d265973304f652a445d1f4b5d1a5972245c *692276823d62763a66782e5b7832546f284d6a21586f235768235567225c772e647c365c732a60 *732c677c2e536c235574295c7e2d58752f617e3567823a647b3156742c5c752a57792753732155 *76285468256379314f6e2b5a7b335a7c3754752a5970275875296582335d792a6482365c792d58 *742a5875275976275f7629536c1f53721d607d26647e3a5971296b864059722b6584396077295f *7a2e59742d58742f5b76355770305e7a3c627e385771276079296886366a7e3a63742e50682751 *6a294f6f284f6f265d77295a7a375b73265f762c5e742d5a75265a76304e692d4d6b2b5976384a *672f59712a556c245d782f5a7a2757732f536f28536b2251692458732759743350692346612447 *612458753a5e7c3e5d772f5f78395c75325b722f5b752d607e37667c3a51723c4f6724556f2854 *722962772c5a732e5772254c6b29587033506c2f53722c516d285b742d5f762a5c74284a672753 *6a2b577435536b3350682c5a6e28546e2c667d34637930668536526f314c6f30526d2c647d315d *7932607d2e5e7b2e526a285273274e6c2a5974344a672a4c6b245870364663255e6f2f5d742f4f *763c4d67274e692e586f305568296a7b2b55722d4f6c29526e29435f24425a203e5d1e3b5d2240 *5c1f4663275165235f6f304b63264a6829485e1e496222405c1e4a65275267264c5f2b475e254d *66294c65264a682a4d65254e6c2d465c22415d243a481d4b5d1e4c65234f67274966274d6a2a42 *5e27526b2654682b546a294560254563223f5a2335521d35511532521d415e1f436225436b2c4c *6c2a4766285d732e4c6a30556c2a566d365c6b255f762f5d72276779345a75394e692d50732f5f *7028516a2851733052732f426a254564215066273e56223f5b23485c1d4768264a6a273d5a2243 *581e465c25435d25415d22536f2a415721425e1c466124445f1c435e283b5d2b405521425c2240 *5826334d1d3d541a3b5c2535532a3f5a26768863cfd9dbcbd5ddc8d1d6aeb8ac64542a605d2c67 *6d2b6d512165542951552b5a4c265c53225f601f5c682864692359581f605423605e295d512d5d *593065592b5c571e3843215952234f53294c47215d5b26554c23535422544c1d4f4e1f4c4a1e52 *5321484c1e474922575a275149225b5d2949512556542454622d5b5421534b225c5728545b2648 *552c506232655b2341552646531c495d25605d27535b264e481e4c502d455b2b4b62263d55233e *4e1e3f4b1e464422534f33414a2736462a4f4a2552421c363b202940123c4b254145233e4c2440 *4620393d1e4336173638192e40162e44182b4118394d1c424f234149243e4b29455121344b1c53 *5f27405920314e2b3c522a3550243b5b2d46602a475827526b364865303543162f4a1f2e4b2837 *582e344c1f2e4019284b1f3c50234f5c2442562746562b213a182d471e32512530431a233f1936 *51222d4b202c4b1e2643172a4a1b3e5422414a1b3742123540142c411c35471c2a411828441826 *411b364c1f2a441d37491f37481f2e491d2c461b2a4a1d213f16354b1f2b401b304c1d3d5c2747 *5623445b254c612642541f304d1e3f57243e5b26314d212d4d1e3f5721435c273c57234660273f *58243e50243c5b283a5c252d471d334e1f394b1e474f1d3c56213e591f42572149642942572557 *5d245d5c224c5521515e2a42561c425a22455e253d511d3e521d526b2d5f682d4e642b416b324e *6d355a72334c672b586d355f733b516f2c55723162763b6d6e2f5f6c3165754061753c56672e66 *733c72763a6177355b69296c682c68742963733b5c753b5f6d376c753a5e75345e6d3460672a64 *712e6a71355970355c713a656b33646c3158692c6a79386d7d3c6878376a7f4060672c50612f55 *642a556226575b245f6a335a6c2f516e344c632b5669355069324e642e5d6e2c536528526d2c53 *6c26607631697131697e3d5d75356b813e5e752f6473315b6d2a6180426a76325467325b6a3359 *6e3465772e5b6d2a727c3a62722d6b742c626b295464285c6e305d703270742c646826666f2c70 *6e2e697d3f727b436d743c5f70336d6c2d616d2e697a305769266265296a732f7b6727605d2849 *47224c4f23606b2f645f2766682e6c783e6c7a3e6e723b7376356373335c6a2c6d6a2a57692c74 *7531707530747131606d2b7a834181813d747f396c7f3b6b7f3b6975346a702e6a732f66743264 *76396072305b682b5b672c6467275a76336272325a713164733866763c627b405b763267783963 *7331637d3a58783a5b72346075416579444e602c546a2f5d74346d783667753a64763c56643358 *70396179425e7a4078824865813e6d80435e69305e6c32636c355f6d37566d3855692a6076355d *7236667c416d7e3b657d3c667e406376365a703c5f732c5b7236556c2c586f2f566b31566b3156 *6d306478395e793c60762e60702c506b2b5a7c3363732e6679395f733164752d596b2c5a70295d *76326b823b62763268792e627a326c793e617534536927526a245773305572305065265d732b5e *722f59621f536a254765254c66204f6e244c6e265b752e4a6428576e2f516929435c2451662645 *6922507027547326596f2a54722a53702b516c2752712e5370265771275c7930607e2e54762b5e *782957752a5f762b607d2e5a762959732959792c5b783262783c5d6d2c5d76345a6e2f6c7d3964 *7e455877395b6a265e773d5f753953672d62752a61762f5d7b366a7d3a627a3a6f81425971314b *682c526b27475d1d4e601f5163265c6f2e586c2f566d2e5872325a6f2d5e7938576e315977305d *79394c6521597234486a315070315c79344c672b59732f50652a61753c4f642d465f2743501f46 *612a436432556a304e652d5f783d50672a515f265d722f5e70345c773d617e3c50692d47662a4f *6d36415e234862245565224e682a3c562042521f3e5b2540622f4a642e57692a445e27536a2852 *69274865274b653147603142612649652950672857713a516a2c4e642a4d64284c70304c6a2d59 *6f35516c2b5575354e5b2552662c59753a415a284c6931426531546b2d4d6e33577234596d2956 *69324a6b2d49672f4462293e5d2a3a55224a5f1f465e254058214055203e4e16435b203e531e3e *541d486429455a294c5f224d5d1d485f2840591e4d642441612a445f294a662851682a405f224c *632547682c485c245a6c2f4e69314d5e30374c1e40612b516a2c4e6823506b2e5c682d56682649 *64304a5e2f55692d53692b405f29445f2447652c4456244052283c5329335227445a204a65254a *65264d6a255068264d65294c66264659254553204f67224964295664204c6426506c2b4653234d *642c4d64284a692b48672c4a642941571e446328394c1e354d1c354d1f435b27405c2348643638 *5a263f5d243f4d1a39501f4455213f57233d542439511f4359214c642a415d27425d2d3b59283e *59243b5a273d502241632e3e532544632e415a2c76926cced8dbc8d3d7c7d1d5a5b6a957532b52 *4f29514922534a23654c20645f255d541d5b5128605e266065286058235d522157471e53452452 *4f22524f1f48431d554b1e535125524b1e524f244d4e23444e1e414b2052502a5062265350215c *5629575f2a54602f5e63305c5e235b5c233f542358542654622d616a2f47602a4d52243e56235d *6432495928414d203a46172f42134a481f3d451d3a4b1f404d1a4051204854223d541b4a4f1d41 *561f444a224342245f5c2c4f4319333612414118472d10483f1c4a3b1a343a182f41213e401f48 *452642361525260f2732132e4114324e222b421b2f4924394f203851203f4f1c47522139461a3d *4d1f3d491d3c3e182c431f38521e30471941601e2e4d1d2b4c1e2f50233f5c294257302e4c153d *5d2432501f2e4a162c47162d4c17344b1e27421a243e1a2643182540172c471a27441c26471a3e *5a282d4e1d304d1d324c1f294b1828491a37511b2a451833461635431828461a2d4b1f334b172d *4712294012253c122145152c471b2743152a4b2336502131551e2c4d1e304d183f5821425a243a *57214461233c5e253b521d325a1e304f1a3b4f1d405929345a233457252c4d1e395e24394b1838 *4f1f374b1a455c2243602740521e3a55203a53223655244d5d2746612d4660254f5f22435a1f3f *5520425b265e6b2c4563294c71334f6b2c527431516d2d4a6b2e4a6b326c83485b74334d6c3058 *76355d722967843463793256733b63844162772e5e77366f833e5d7f415d793363712f5d6e294a *702e616f2e607536627835647a32576f2f5f692f61733356612c525f2656612f4c633266773b58 *6a30526a2f697735546f29586d29586a2c4257213f5824485d255067285b682f5b733851692b5a *6c295b6f2e586b2d576e304f72314f642b4e642d52652c5658214960245c7539676729687b3a56 *6e3a5a7329566a2b61732e5c79395c74346878355264286172335d753a6e792d6d86407281415f *7f3f5e7d39637d326178306174306c7c3168793862772d6f752f5369275369245365205867235b *6d2c606e305c692b5e712f6571295e7636536525546b2f696d2c586a2c506425616127525b2667 *6c326a6435655b295e6a345860335858247976347180336f753b677d3d6778366572325c75355e *712f6777356c7b395c7432667536717632717e327b8940727b33758039687b2e64722d5666275f *6f286b773b62733563753161783361722f69803b707e3e6d7b365a722e596e2c637f395b73385b *6b325c692c5c7536617b3a587634797d3d647933617333566d30627937657b39547432576d3058 *6c2e6d7b385e75325b78305e6d2e596d2e4f65284e5f224f6a254a6024455925445e244660264e *65245a73325973355a712b60782d59732d4a60243c511d495f224a5e224b66254d67254363294d *682c506b2a5b76345775325b742d546a29546c2d6371335976284f68215d6d2957702a586f225e *77305a73255b752a5d6f2b526824576c2758662558752c526f235b7c325b7731586d275c75315c *702d5f732d5a6f245469265f6d2b56763757772f5c7839536c2b566f26516a264c6421536c2450 *6e295974265477355a7a3b5271294c6e2a4e6d26466421445f21536a1e5f7e2c5b7c325e762b5c *752455701f4a641b3d581a3d59184c6a23576c295b732d60792f637a276470215b71244e5f235e *732657702d4863254e65284f6425556c284d6a255d69225769245c7428637c3b5d772f5e76355f *772f58762e526e28517131557129536d285e752d5f7931516a2f4a6424586d2c55702d51743152 *6e2a5e76395469244964204f6b2756762c4f72354e722d4f6b254a6422576d2f4257213a4a192b *36124857244b682a455f214860274d6729486824446126486b2d4361294c65205672274c662552 *6f35536320496d2e516a2b4d66284d6b294364264863264a6626435d213f6028405d283a50263e *581f35522035561d38511c264d2032551c3f4f1e405b20446628496d2e4a601e526a24526d2e5a *782f496a254f702c4f7235455c214d6a2c4f6f364665285c782f527030516e305165254b632945 *59244c63284b5b243655244d6827455a1f456327435b293f5b283e61343a5423385a23415d2442 *602643652a3f5f26435a2a2c471e42531e465e1e445f2152672743571f3e521d3751192b4d1e4c *61224763284c65214059204360264a662a49642c425c21546c2e4c642c4b6427516c2c52682551 *6b274a692b506c2a44602d4d612a516e39526b2f48652c3d4d1b33492043582442663238551c3e *5b234663223d591f435a1c415e213b592042561f334116304b1c3653213b541e3d541d36531d40 *4e1e3752193e51184764264361263b4d1742581e3e5f2c3e541d385322324917374f1b35521d3b *5d23405220416024395f2044561e3d531e334b192e4517395c23415424455a204b6523405a213f *5c1f4860223d5a274259273c5b2841562049601f4b68287a9b6ecddadbcad4d8c6d0d2a4b1aa53 *492c494926444420494d1a4a551f4d481457451f5754255d5a2b505f2a5248204d4d1d4748145d *4c1b4f531d4a5a2a5053245c5529464e24444d1f4745154952224c501e4c49245d552850562a4f *59224a56224c53205658244a52224149134e4e1b554e1c5458234f4e1e4e511e40481b3543134c *451a324f274653213743173e4d1e38481b31491f36401b3a4e1f415222454f1d474a1d42471c53 *4f1c3d4b193047123f471f4d632e42471f3a461c434016221d0a11130719150e2c251921120835 *1b0a42461b464d234143172c391e213a10375423465d234b5e2533552035541f3d551b3f5a2039 *5323355021365c27304a1c3e4a1940521e435c233f5727354b19304d212a4a222b4517334b1628 *3e0e28440f314b16283c0d2e45182c471e2d4e1c2b48122a4c182b4b172c43172b431228421830 *49182d4c1e315124273b13263b0f223f152b46182e4917384c193c551b2c4d1d3043172d491831 *4815394e1a36491a2340122e49172e501c31511f3d5d2c436129405c1e3d4e1a3e582235541a3a *511c2f481a27491d3f551e32461b31581f425f224764263d571f3b58242d4c1e2f502138562133 *56193d55173a5c263c501b4b58213956213b55234f60264a5b2546622249682457692852672a50 *6624637538556a2d4e66285d78335d792d5e72205f7125617427667b2c576c295969235b712a57 *6d2762742c606e2a607a30647b2858712258732b587229506d2a667e3b5b7d3c5c6c2f5d682a5d *5d1f626b28556e29546d275060215069236a722f5f73285e7932626c2b5a74315c732a58752e61 *75265266225766265a6d325a6f3152743c496a2b516828435d27405b1f5069295163285368265c *60205a64245769275e732f5a732c5d7b366a783751662f6676365866346270346976324d632842 *591d495f1d5869265f6d275969246376345771265472315972335b7635526c25597c3f657b3366 *8034637f2d687f33607834647d355d742a687f32687c2d687f316976336175345f772e61772c5e *732c617c2e5b712c576a28606e30606e2f65742e5465215b7022627a2e70843676762f677c3569 *783460742c69783469772e737e3f637b31647435586e2b6a7a36697a36676f2c767c3a5c7b3e5d *732e63692b5265245e6d225d742c69782773813277873f77893c6e7f387280396b7a305b6c265d *69255f752965722d6b762f576a256278355d712a66752f686a2b57722d586f285d71265c772c58 *6c22536926657839506524586f2d5770295773314d6c326472315d6c2e4c662a4f6a306275304d *64214f6623556420586c284a5d214a5c214b5f214f5d2058732c5263244c581b486026455d2147 *6222405b1f5a7634616e3362742d455a1a495e2049642842581f3e561f425f24476623485e1f4b *601e4f652860712f6073295b7a2f617b3257722e5f6d24596b254d6a224c642258712f5a6d2863 *7d345c7630678233687a3d6a8138566921546a27586f285772285b722a5d762b586c2b4b642252 *69214d621d557021596d1e5269214e6520536b205372345871294e68224b6b28537639566f2952 *6a20425c1a425a1c52703446621f4b642942591a405c2148601e394b163f5716576d2045602241 *591e4d692748621e42591b43621e415d1e3d591c476624405e1f465f1b4c68235866185d732a41 *53184a5f204c62244d5e204c6d2953732a557125526a22586e2664792c60782c5c732e65823a61 *7d2f5f6f235a7426586e29667b32546d274b5c1f516b265f79355b77394d672258672652631f5d *74305b702c4d69224a6722506921485f2353691e506c2b455b1f55691f455318454f1d424c1d3d *571f3953173b54173c5922425c1e425e2355601f4d64224c662b4c67285a7028475d1d59742b4d *642555702b486222496829455823425e224b682b4c6b2b3f5d1d4d631e475c1f415c203d5d2044 *62273f571d3b581d304d1a40581f3f5e253a5a22395721425d213f5f20456728405c1c4f6d2044 *622148651e2c4312405d1d436023465f1e415c1e4d65264f60214e64214a5c1e4e641f4b6b2b43 *62243d5d213f53184d6527495e1d485e1e4961224d601e425d1d495f253b541d39501d374c1b40 *531e475b22435a21425e233e5920405917405d1e47581b40571e374f1a2d4715334614314c1a35 *5112445f1d3e531b3a4f1c36521d455f1e36571e4763214d6b2c425e243e541a3e4c184a5f2244 *5a2a475121485b23576925506730425c2a475d244560304057283e5123435e242d441b354c1d3c *571c3f5a24344f203c5624364e193c55233e5525364f2036501d3f571f2e4818364917435d1a37 *511d404b1c42541f424b1635491638501a334c1c2f48172e47182a3f11435c2235491d2c482225 *3c192d42193f591f3550202a4312344d1a2e4c1d3455202c47153c551b3b56233b5d2537542041 *5821334a143e4d1635501d3a59203a5b1e4462214b6323465f287b966ecdd8d9cad6d9c6d1cfa4 *b1a24f502e64532a535025494e225352224a481e4d4c23575221594f2d5f58265a5529504c2252 *441e5d6023414d1d524e1e49481d4e4a20524f21584d23495027485a294f5b294f5625475e2746 *532648452046481e3632133f4b1e445125304b1e31491e41411a3f38194f4b23494721444b1f4d *4d212e411b424419354b1e52421e3943203e4e23554c1e4b51223a591f345621424e2046522139 *431c2e37123e431c353f17394b1f33461b3343192e3e192e451f243c1a33391d2b33174952332d *43202431153f461d3c41153143163d45194250243d51224b4e1c3e56262e491d375828405d213e *5b22435c253f56263c531d314b1c3f531e2e501d44662a3e5c2630531c2643194155222c441237 *4f1f34531c2a491827481730581f2a451d3b582d354c1f3b4c173446162a471531561d2746182a *4c1c2e4d1d2e4a1d3e5923355520284818254d1d2e50202c4c1c2c4b1a27441b30512030501b2d *42122b46173d571b3b541e32521e385b264064293e5922475f243c5d1f314e183b5820445c243f *521e365221415a213c571f40501c38501e395d233d5b224364294466304e6e424e6e374863254e *672b4e66274c692b546e2e4860275877395870304f6c2f59743866742c526c2a526e2e4f642847 *642d4660214b642450672d536f2e4c662564793362712f5b742d52722d576e285173325d742d66 *702b6273296779325c762750732b49732c5e7f394d6d3350753a5069304d6d3365783263792c53 *6d2c5c74325c783a425d2746642b536e3661722b5c6c2561762e5a752f546e324a662c4a5f2851 *5e24566a294d62235376384e652b627438526f3a5d753d5c672f4b61224e682562742c4e6a2850 *6d2d5c7433567a445a76395c702f4a6824586f26586b2b60732b6874335f75305a6e2b5c733352 *6b2b4b6525576e2c607d36596e2b566f2c59753b5c742f5b723359742e5067215e772c5773324f *6f3254753b4e6626596f2b5c71366c7f3f657d385c75315e783357753257752c5d782f5f7a3563 *7331576b2660762b60712d52642762722b616d2b638241677d386477306376327279356a7c3866 *7c3471843a637d3b627d3f5e763c61783d6375356f7f3b63782e617f3b647a32767f336d813184 *752f5f72305f6f2e58692b58531e55612463732b616a215d6e2861742f68772e5d6c2555642152 *63204a6824576f2962752762742d5e7531677f315e742d61772f5d712c526c254a6d2b4e6f294d *6628576c2f536a255d6d2a556c2e566a296078334f6a2c586928475c22496527546f2c5d732e57 *6b2d54702b5a712b5565264f6d245064224f66274f61234a6422556b244c622550672b596f2b4c *672958622a485b245565285973304b66264e6a284f6f295875304c672c4861284d6c2a5d7a334f *6b2c4c63214964234f6c264b69245b72245e6d275b752c63762d5a6d2e56762c57792954712755 *6d244f61215c7130667d335f7b34566a28526924456021527124537127546b295d752c5b682455 *6c29516c244c6b22506e265775274e6f2e4d672a5673305a753252672348611b536b244f692752 *6c263f5c213e5a1e415d204b611f3f5d1e4163223c591d415c204561213b591a46621e4b692846 *5a1a4b662250651d475d1e465f1a4d671e49652746551c43561d445b1d455d2042561643591b4d *64263d5b244f6d2e5765264b5a1d4a5c1b4e6427516b264264225269235269285a6f2a5d712f5d *77275b72215c6e2359681e5b6d245c6c2f4a5e1f43581d557435556b25485d1c49622447571c56 *651e4e6424486b274b63214a601f47611f48621a46611b5065204260215066284a571e4d662648 *632048621f405e1f405d1f4b5f233d581e4058204c64274662253f63224d6722445f1c475f2147 *5c1e4763254a642d3e5b21405f2441591647622248642845632446622045621d485e20425e2044 *5e204865223f601d405e1e426325506522537438506e2c46652545692a49611f435a204c65214c *6927485d1e3e5d1a2f551a4864224869294c68223d5b18436822476d235f7531476c2851692c48 *5f203e5821374c193a612658702b47682e4b6c29566e284b692b334c1c324a182f4d1937581938 *5b20445e1e44651e4968263e5c1e31511d3b581e2f511a364c173a4d173c521f284c232d471c2e *4b1d3f531a465920435d1e3f5b1a425b1f3f5c1f405921465d21465c243f5c274054233c4c1b44 *521d446124466c3731491f3f4f1e43622e3d4f2141511d4b63284a622f3c58264f65314660203a *58303d4c1d354a1c4a5b273d4b1f2f4014344d1a3e571f3c632b2f5023384d1b415a1c3b511a33 *4918354c23354c192c4f1c2b4d1e2e461a33441733471a3b521c314a1a315118394f1e304b1832 *4d22324f1e405c243f551d314f202d47192e4c16455420365a232f521c334b1a43561f40531842 *6020365f223d531e3f5d233f5d21445b254151214760205b66214d67247b926bccd9dac9d4d8c6 *d0d1a1b0965c5e2f484c254c4e274f53265850233847204250264855235a652a46502544481f48 *53263d52233351204848224d491f54522333482138491e3a4b1c3b481f4a4f2542491e354c1f31 *5121454f1e575223484d234e4b26445f2c414d244a5c27444e20405e253c53263d5d25435d294f *5c283f51262d4a1f434f22375b263252242d532133471d29421c2c4b1e31552141531d3f582135 *4f1d2d421a2a481f3f51212f4d1d23421c2c4c1d2f511e2b4d1e22451c27411a2a4e26334f2233 *4d1f426024456b294d65283a461a2b451724451f405f2b475c2540592542632637561d304a1c3a *59262e4f1d274d202d491e355219284f1a3d571b2b501b335722325220294a1928471b2d532327 *4c143257192c531c1e401823421034481e2a441a335a24284c1b365722315d212a4b1b3d612630 *4f1d3a5b232e4f1c20411c314f1d4060223d5d21436526405f273d58233d581f2d512127491d23 *491c1f411425481846662c3e5e223d541b3a5723375d29325e292f4d1b315a1d3a5e1d3a5b214a *6b29486c2d3c5f2c3c64313e5f283c5f21476f3247722c5277355375375f76325a733264793760 *7c425f7d3666843662762d63793159783556743143652556723a55772d506d244f6927526b2253 *712a526b2f4e672c46692f4664295475285171254e712b4e692a5c6f31576c2f576a28556d3c5b *7931556f2b536e29617d2a607f3a5d73306284425a78365d8140507333496b2a476e28496a2c57 *6e3c6583446f843e567736486f35506f2c577c3a58773055762d596b27556d3447632842643449 *622c516f315471314868244769294d6d3a4d6e30435c284d713b4a662d4c6a2d556d2a547c3657 *762e5e772f5f7f3b628042536e2c5c772e59792c51753561792d667b2c57682b667d376080384f *74355378355c7e3a6081346a89395c78305c722d6481495f7d3b607937557834576c2e5f793557 *752d516a2759793a4c733048662d516e2d5b7b3a55742b4c6d254769234d6a294465264d682f50 *6a2d395d213d5b184865204e6e296780385874374e69295a712d5c7231576e275e7d336c893f64 *80325e773c7682436078345c6a2a516928516b25576e2b55763c56782a576f295d742b677b3351 *732f637f36637b3657753152722b5f783e5f742958773448672b3a551d406023587431486b2b4a *662244601e4d68245a7a2665823c587a2e4e6b254c6a245168254c6a26445e203c5c1f4161234e *63294a64284462294d65254f6f2644692243622549632355702f526c2c4a6423405d1c4365224b *6d2d4965264c6c2b58772b586c285e7c365a782e5f74325b712b657d39586726506a2b4e5e2854 *632b4f6a29546b2b506f26526e2a5870294c6f294766265165245067244b692447652241611f4e *6e2a456322445d1d415c20476c2355712d3c5a1e4763214d6a2251762f4f71285877334f681f50 *6f2a49602149642559783562792b5370245277384c6924516f26577129536b224e6a24455f2048 *652344652253662043611d4c67235870254e6d2543641e4768214c6a244b601a44621a3f631b3c *5c1c3f5d1b415a1c385b1f49662443611f405b1e4262203e5f1f2e531b4160244767284a652439 *5f1f445c1d4369274066234c671e4a61244b632047642b435c2149641f4864213d5a1d44601c3d *581f3a531c485c204c6524526924435b1c41601d40591a3b571b405e1c5166214e6320536c2449 *7029587425576f2545652041601f4f5e1f55672a4e6c304866264e67284a621f4b652346641e3b *5b1b4e66214d6223466022435f1d4c69283e621d4268214d6d324a60223f601e4c602343601f40 *5d233b5720476225294a14385c1c496a24576a274a61224967314d6c2d406024466a2747652046 *5d1c445d22476122364d1b395c253d5d2630561e3f65203f62242e541a3950173b581d445d2047 *652c43612842631c47631b3c63203f6627546920606f29506c2b406327445e253f62223d5f2045 *641d3c5c20355119425e2543602343622243651d3e651c405d1a4d702550672160792e546e2842 *622641571e3f5a1c385d203862273e6023415d244d69293e5e214a63263f5c23305b243863203d *6120426a204361204661253e6326395a204067223a5a203658203a5b1e3a581e37501831501a2c *4d1833521d3f5c1e3f5e1f40601e47662141531d4a5d214d63283e5e243b5a2743592029522631 *511c3b5c234059224d612a36582735521e37501b3b5019415d152a4f1830511f2f5126405a2247 *6a3036552733521c385820274512314c162c4d162c4e17344f1c3254203055223d5b1c38612036 *5f262d53132b481434501c2b5320284316385016304e22284c1930571928501830501e38551d40 *4e1d405f283d5b2430561f3d5c234162213a541f2c491c36591d2c4d192648182e4f1b3e621d2d *551c3c5b22364f1e2c481637551e405e273960273054243f501d3d5d214e64266f9267ccd9d9c9 *d3d6c5cfce9caf8257562d4c47243c48255242204f431f50432143401536481a543e184f471e54 *401534411c473d1843471b384a1a424218394c1c434312374922524c2051431d484f23364a1f40 *4c1b4c48163f441642451845481d3a4a1c454b1c37501f2c4a1927421048582142501b3e562340 *521b33511e3a52254654243b522a4659213d5114425023434a1936481b4f5629364e1d243c1729 *39102c481724440f3447172b3c11314c18213b162840162b421d2f481935551e324e1b2f48102e *4918263e162c4c1d3250213c52233d561d354f15314711424e1a3b4d1734511a2e461b394d1f2b *4a1e3350123453133b541e4662283d551f2548182842172f4c1d3f5d202e50172c501a354f1b2a *48182d451633502035521d394a152c4d1b385318426122344f18334a183c4f1f24390e2a471b2a *40172d4c1a3f501533420e2943113b5b1f3d5c203954202f4e193d5f2a37571d435f223e5c1f2c *450f3a56202e53262c4b1d446529385e213248143e5e1f3e551b3a501e486223445f2344602649 *672c4a6524596b22536f24586f2749601e4363244e67294c652a51652a4d682d5d752a5469214e *66205969255465265b5c255559214b59204c67214b641f5b772c5d7b315c74295e79335f77355e *7531516d2f4e712d4e682257742e4e6c2a556a23566a2b4759244a62265e722972712655642356 *6a2460732a55692965772f58682e5e7a335a80345d7527526a275f7f35516f2b435f235b743457 *74305d7a3c59772f52773353732e4d6320557530586e335a763a5f7e3a5875334c672353612a48 *5f24597034526d28586b2c526d34506b2c5570304b6c2b4a6c2e4a63224d6726546e326073305d *6d285c7330627d3b5b722d5e6f265268235d782b516f264d621f535f1f5266265165285a6d2c57 *762d4c65205d752b5d6f2a6a8543597731647b3364792a5e762e61792d697e35647c3660793165 *7531576a225c6a264f6e23556e275d77364f6c264e63224c66294462224e6b274c6d265571354a *71314c66234a6b244b61205569224f6a255c773351743258712c52642a56692c576d295c732c5e *6e265575355d773a6b7c306a7f3765752e5e7339576d2d63753b5061215272224766224563224f *712a4f69265c7c32617433546b2557732e5369274f6a25475d1d53631f5e74275b792a60732a54 *6a28506b295e742a567531556f2f5d79305c7126546e224966204e63235c6b295a6527475e1f42 *5c1d4e68224661214d5a1c495f20516626415a18405a1e4762204b5f20536a2348672250611c55 *66285a712f4f6628475a1f415e1e4c6120425c1e435e1d41551b4d622757672756683262702d5c *6d2d5d712b56691c516b245266294c62214e6926465e1f5169263f5b1b42611d425b1a5768234d *67233f5c194860213c531c435c20476728435d1b46601c4c642550641d596a264f6d24516c264d *672448622049601d50641e566f244c6018435f1e4d6922495f1f48622151631e4d68214c601e5b *6c284c601d5065244b611e4b5c214d611f425d1a425211384c0e3f5415435d1a475e193f581a40 *5c1e405c1b3f5f164f6d224b64254e681f4a5f1c486525466522486021455c1a46631c486c2140 *59124a621f4c611e47611c4765214c652148611b4e671e47661d495f1d475f1c4c641f54662c3e *571d485b265a7327536b244f6727596c275469255068264e6020445d1f45621f4f6b224462204a *5d165a68225b6a27566b284f60205266274b6b295b782e5d7020586f27627427596a26475b1957 *6d2a4a66274a6c2a40641f4a62204d6923475c1341571a4966204766264c70234c672157701e41 *6120435a17495e1242602041561e3a5920476222546d254d6a24506a1f5272275b6d294c68274f *6b295367284e67274668224664264562243e5d2243561a4c6622425e233a551e41581d45621f42 *632244611a46581f465e2045561f3e5b1e506928596f2b43641f4d72264c6e23506c274762273c *5c243f5e2339511d3b4d0e3d54143a5817426126425c1e455e1e435e1f34561c3a5f204769264d *6a2342652144581d44591e466129385122445c1e435d24426120446d3044611e405d1b3c521b3d *5d1d46622040591b385517425e1e395519345719475f1b4d64264059224962273e5a2342662945 *602343612744611d495b1e4c69234c692a5069254a6c2a496423445f1d46641d3e4d21485f2443 *5c214457253c4c1a334f223c531d3d53183e5325394c1c3d4d1e304c1b293e103f552433521e3c *53232f4b1336521538561e2f49182f4b19334d18415e1d3f5b1e3c551836591e3f5c1c3c531e36 *4d1c38522142601e40571d3b571a41581d345c1e3a572239501e40571d45581d40541e39521c3b *5d1c435d1b3d5d26425a2445541d4e61214867273d592144551d486b28405c1e3e57213c50224a *5f224d65284d61204a66273f612c416126435a1e41561d495d204b682f4a6023435b23718c62cc *d9d8c7d3d6c2cccf80a06a3348233a3f153b471b454d1e25401d2c40234c4f2840421d39421e27 *38112b33113b3e11462f1429391c3e4a1d424a1f43431d4a431c3b4c1b344916404f203b451c50 *49174153203c4e1d4252233a502128552239541e284c1640461744471c2b4a1d2f4d1f273f1b40 *521e2f4a15355a1f2f4e1838501b32521c2e461d34471a31481d1f3817344b1b274d1c29481032 *4a182f511e2f4e1d23471e344e1d2e4610284711274a1c2140122e4e1f324c1a2436101e2d1629 *3f1b263d0f3147142b491535511a384f1b334d20395d251f4718204218314a142d4c152e511d36 *4e1d2e501d3855222f4e1e27481d214517294f16234d142043152b4f1b2d47152b441821401624 *491c2d5117234810314f113c5216254d1b314a15304d18325b2535521f3452112d561c2f511825 *481e354e24374e1d243d101f4214234b17244d1941621c2b48102d4f14415a18334f192b501c3c *5d2c30501c3a5b1c4367234167214c62214f672241631f4063264a6e31456a2e3f6221456d274d *732e4f70314a67244c6c2d4d732b436b263e5d1c4269284c6c27476921415f293d591e45631e3f *6323425d1a43632040581d3f571d31400d2b4015273e0d38521d35481d5870315069205176305b *7c325c763456712e556c2b546e2d57742e4f6c284966254a723057793053702e5a752c5a712e63 *83386e86376d8a446c83395d742c5270264b6526526c26577930607c3859752f5b7b3a50753150 *7532506d324c692b496425475f203f6126496d2c4e7b34466727546c2a57723055752f526e3753 *732f527930597a375c8137597c2e5a7b3757752f53783c5d7b395479354c6f2d56722a5c77385b *6d274e64224e66244c64224f722857752b5271294f6d274f712d56772d576c275e762a58712a4b *66264d6a294a6727567028506824566d235064205268225e753347642350702c4c6e3151753255 *792f58722a506f2a58753a5770265675365677334a64234b6b2b4e70354e6d25516a2652691f55 *712b4565214d67264963244a652c50772a4a6821516a27506c2f51692e4b67274d622b58692c64 *7c3b4c64294a68225d75305a71274b682f64792e556f25496d315975314e6b23527b2e47691a54 *6b23486829495f21436220435d203857183f601e426422435e1e4f6a2649641e516f2251742758 *752f547327516b2057772d5f73255b722d4c68264a65213a5821425f22506e2648631c546c2b43 *611c40581a4760203f5a194961213d5b1f4e691e43631d426625406225496a2a52722f556a2c47 *6323435f1e35470f405d1c3e53153f59194d6826586b2b506b264d61224a621f47641c5f7b285e *722a505f205468263b4b1a39511a344d1a3f4c0f3a5214474f1442591b4a5d1e3f5920415d1f47 *5a1f53631a51681e4a6322405c22455e254255194059143a581c37501a45591b3f5f1d4a5d1a50 *681e4463213e5518496728455f1e47641f5373224c70225a70275a6a1f4d661f48601e4e672352 *6d284a6f2e55762d496b21506c1e556e20465d1b435e1d445e1e425e1d3f561445641f4c6e2445 *601b48621f4a641d526a214e6b29456328566d2445662145621a4e682245601d4d601a3d5d2336 *551a375c1b436a1e43651d44641e46651f4f722c546d264f73344d773b50732a516c2a5a79315f *80414c601c4f722a566b244d73274a7234486e2c506a21577428556d22506a2450672253702a45 *672142601d47631f4a6219547431546b2755651e52641c4f6a25506621506a274864204766224b *6b2347611f496425485d1b4c5e1e4a64224664244263184a6c2448621e4765214c6e264b65224c *6724405a223f601a4c6a2642621c4064213a5b1e405b1f43642b4a6a2d4a6d33496c2a556c2a4d *69244c6d21485c1d4967223d6024446825486a2946682b50722a4a661f4c6b2b46652e47642341 *5c22416425395d1f3f62224464214a69284a6c1e4f6f254e66275367204462263c5c1c4266214b *6925476e2641611f476122455d1f395c1c42611e3a4f173c5f2042631e4a69203f63223b581d3d *5e22415c1f4765204262203d632147621b46601c4161203d591d4c66264468213e611e3d602041 *5e1d3c5a18445b1e385917305315475e164463222f4f1836561830511a2750213d581d49632043 *5d213f5c1e4064203253213a4f174a67253457223c601f3a541e3d581f375a183e5e1e40612336 *501c41571c475f1e3e551a40531935591e365817344c1c3d4e1a43611c3e5f213a5a21395c243c *531f415d203c5c22355622325a2539501c35541a3755174a681e3d591c3956173a5c20385d2039 *571d3b5c1e40621c415d1a46601b4e63183e5e1e3d5a1d42571c475d204365204965293b581742 *5e214565204365233e602542531f3f591c3e54153b521a3a5b1e425f283e541b4c66204d662c41 *602a405627446221466923376022425b1e3d5d283a5821465e224c622b4662264d6c2250702a79 *9663cdd8d7cbd3d5c3cccc7390542a3e1e2a371c3c321c45431e533f1a31421e40521e36421d2c *3e1c363e1a41482137371d464c254b431c49401c3c4f1e483e1b33350f283f1d3a351638421d36 *44203f4f1f343b0f3a4c1a384b1c404d1b2c451a384d1e41471e3f491e34431732441229421123 *330c344a1d2f4917344e1d3d5a2a344e2043501e2635122e491d314817223312304e1b3d4c1d34 *451d324d202a4313334e1d3242122c4312334918304c1c213c13263b122a401d334b18374a1c2e *3e123a48173e4a1f465622364b20374f1f334c204159223b531d3a4e192b4816324f1f3a511e3a *542131512328491c304c1e334616334b172a4a172f461831501e2b48162d441d314818434d1731 *4a1634581d38501c3a581f405f25284d1e2f4c1b39541d2a4e162941123d44173244183d5d2237 *531c29471d384e1f37581d314c183a52213a52192d4e21405a233d58234a6326455f23405c2242 *5d1e425b204c641e50621b4b67234e662a4765294a601b4d6a2b516d294e682651621e47621b49 *6a294662234764274b642743612445612446611e40562040562952692b5063214c67274a642147 *68244c682651611e5b6e2a4964254f6a2a657d3f516c325b794a53753c4a61254d5f27404d1548 *5d24576a26526926536f30647f3c5a7025596f265263254d6b2b516c2b5a7335566f2d5f742e5d *71285471275b6d2960722b5a6f31526d2e4d65274f6a31536a2360803f5d752b506a2c56662e5c *742e6179325b732c5072354a6320476728516b2859722850742f4e73305a773c6478414f642950 *712f5c783b5c6f295f6e2b56722c576a2a4f6c2c4c692f5774324966264b6a26536d295b743062 *793458702d54712f566f2a57702f56742b586e24575f1f5a702d5769275c722d6175345f77345f *722f5272325f732b52662260782e647d3b48682657742c5e762b61793a58752c5776274f6e2e5b *72294c6c285a732f5a783a556e315d73275868215d6b235e6b2952702c536f335e6d2e576c285b *76304f6d27566c2847602246541d40581f41561f485f25475f214761255b702d5673324a5e2659 *6d305366264860216c76305f6c2c5f6f2a57682a56722a5f6d2956712a5c6c2c566a245b6f2756 *6923506d265464254d65273f551d3f561a4155184964254867265366214d6a2c49642253652653 *6527566a294c5f215365245064215a722a4b62254f682a4e6021495a1d4964254b6427506b2b48 *6324436420506b214b5e18475e1d4d60225963244f61224661253f591d4a61254d622355722a4f *66234d62204f652548602344591e53601d475f1e46621d4a671c4e631c4d601e404f13465a1a45 *5a1a353d0e2c3a103b470e3a4b12394b1341591f4755154b5b18425b1d445820485f205066214f *621e445f204961225068284c5e2342551d4a5921425918435f19425a174d601b4b5f1b54641f55 *611e596a255c722d4c6a224d692348601e4e601d4e67244c62235562234f68275d773254661e52 *671d5364204b65294d641f53671f465918496320465f224c611f4d6622485e1d49621d566a2452 *69244e6e2e586f2a53702d4e61205564235d712a5e762e4f66264b67205b6e2c516122435b1c3e *4c143f5c1d45691e4d6a244f6721476525476024485f234d641f4d66225e6d20586d285c6e2d53 *6c275c722a536a2b58733362752857732a536b1d5c72264f661f5871294c61204a6b2b506c2749 *64204b591d5367205267215373335a722c5673305d7a405b6e264d6923526a225768255565285a *692d4e65244b62215567204f65254e5e1e425c1c485f1e485f1e4566264f67245d7434516d2e4c *621e475d18465a20384d1641581a49581b476525476024526b2450682b4d5e1d536825596e275f *6f314e6f2b46652a49652a425e24485b1d5167234e63274d5e1d4d641e4b61204c5f234b5c274e *6a294c611f4e6826415b1b4a5d1f4d6324496229445d264a65264867255465204d612547612347 *5c1d3f5f22455f2a3750212e481a495c1b4363204a6425476021485c2a3f5d264c612a2e451747 *5f2a4d6424475b1e5065215069234b6624486120496325435b223b55173f59184b661e435a1b3c *5019415b20425d20475f243f6021425e1b5169223d5b1f42551b425e1d3e561f33591f44612748 *69264260214e69284862274a622b435c23435e1e4160253f60283e57203f5815415d1e3d5d1f44 *5d1d3f5f204768294562273f4d1c4a5f1e4457164f63214d64224f5f204a662441591f46592248 *693b3d522c3f511e41541d394d153d4b133951193e55202c4f1c39581f414c1c3a531e3d531950 *5b19495e223656233d5c213a4b18435c20485b1a3e53183d53163e531e3d4f17314a16455a2145 *62224d5a1f3f4e18425d1d445b28374e213656264253253f50242f51113d521c3e551b40612149 *602342531e4a61254a5f294a5d263f542832481742591d4359204b6428435e233d4e1c3d4f1c4e *5d20778961ccd7d7c8d3d5c1cccc729b5b3a47232d3d1f37471e3c502035421530401d2a3e1f2c *4522334d1e435e2e4757213b4f253b4f1a2c471e284821375527475e2b344c142d44182e49112e *4a1d2f4d1f334a1e2c451e2b431c2e491f384e1c3d4b19303e12485328435218354a1a334a1c3f *4f1f29471c2a4e1a2e501c354f15324d21324f1b304a1b294c1d1e451a26451625431126400f31 *4a1e31541f305116304d1827461f274a20233f13274218314b12314c18344d1a374f1b3b5d213a *571f2f4f1e3a59203c58204b62213758212c4c1932491b2c4f212d4f252c421b2f4a1a2e4f1931 *4b153e541b374e1b2d4e1b2e4c1843632238541c354e19395016334f19445d2750672f3d5c233b *5e24405b202d4f1d3b582248682f405c203f521a3d521c3b58232b4d193157203b5b24566c2d57 *75284e6a2951692c4b682b4765294a6125506c234767274061244e773f52712c4c5d2443612142 *5f224160213f591b4f6d295b792e5b782d4965225b773550702c4a6b27415e20496a2a5a803e44 *6b284b6b2b4a64244d69274b6b294160214b6d275076324a6b2453732c5973284c6c2d5067284d *6a2a4e6c2d4769244e702d516a2649641f566f2b585f1b6985454f6a2651763b4c6e2c4d672c4b *6d2d567228526920496120516a2551712853752c5476305e7f365a79306277285a6b245c763053 *742b61782d5c78345f7b3c5e7329587427597b3a4c6829506d2f5b7633617a335a742d56793661 *792752722a5a73325a772e4f732e58742f58712f5d8041627c34607b295b752d5b7b3c69803f5f *7c405f79306582455d753c59773b56752d4c6e27627a36647d335676324d68294365273859214d *67274e6d25465f254664254e6c2e55782d59732c58753449632a496a274e6f2748652652682a58 *6c265a722661752b617c2e55772e5678305d792f43601d4c6b264e67214f722c4d6c284e682559 *732d49631d45611a42632747621e4d621e576721566d2254742c5878315e7b2f5a70255b732656 *782b4e6c275a713152652650622852702a4e631d4e6a1f50651c4f62243e551a455f2647591a53 *6929546b295d7b284e5c1b4c60285e6e2b4c5d1f4f5e24596d324d68274f72265b72215b6c2665 *7b30587227546d2a47612a4f6a2c47561c546a274f672352742a456a223e5f1f415c1f4a662751 *6d2d566f2c4f6d25496529556a2849641d4e641d4763204d6320476025476728435b1e485c2045 *6223466023485f1f4f6a21466b274d6420465d1d4d671d48611d48651e5875274f762c57752c4d *6c2b5c75315b742c5372274c671e53681e4e671d4e6a23496521425f1e4d62224a68224c5c193f *581a476119415a17405b1a3f5e1d4e61214e692645631a435e19566e274b651e5f72284865264d *6d29435a22465b154e681f51681e516a214c5f1e455b1a3f591c405c204e69294763234b712748 *671a576d25556e24586624566f2a536c2458752b537229516f214e641e536a2059681d586b1f54 *691f5b702456712a5f6b23526928536e2850601853661d4d681f5269204b6923476e2151732653 *74255375264b63204a65224865225271294d6e305270264f69215267214f661f50631f4c621f4c *631b466926476421536c28586f245b76294c6823475d1c4964233e5f1d506a2653732549692448 *63234b682749671a52702b476f2b5d7629667b3448732f5775235674274d6d21586b204e6c2847 *641d526f254c6b2856762e50732752742b547227567634536b2d4d642250691f516a25445b1b4d *6822416424455e1c4769284b5f21425f1d445e1f526a24617a324d752d4f7229576d2354712d45 *63213e571a42611b3e601f48601d48641f4c651f4357184c6420486722405b27445f224869273f *621d556e274b67284b61244d6222526e284667274d702d506e284f6a25415c254f6a294b62244e *6a2f5069245a74284a682946601e557633516b2764702e5d6f2d54732a4f6e2a4c6c2b47642c4e *6a295275264c6d24485c1c495d1d4e6a2c4d6a2940611d46672148652142611c3e59264b622143 *622048682a5a72264c6524516d234c6d2a435f224968243b5b1e45611e4863224361204667233d *611f40651b45601a4d681f445f1d44621943611b3a5a1d3f5a20435e1d45681d4c69204c621f42 *5d1d3e60214463243e591f405f24405e25345819445c1a415b1e3e601e3d5c1a426121506f2b3d *5f23436122416320466521485f1d485c23476020445e214964263b582344551d46602039501548 *581942511739561d496328425f253d5a224262273c591f52702f41632f4a66214c632941551c38 *5a2b384e1b435c1839531a45611a405a1f38591f455d1c395a1f425f23405e22415c1c43581441 *5f1c40571c314e18406222446525445c29465a204167223f5e1d31501736521c34541c34511d40 *5b1a436022475c1f4560233b5c1f4961203d5320414f1d465c203f4e1b455d204665214e66223e *642144652d789366cbd8d7c9d1d2c3c9cb6b8d52395432395127334c26405025374b26364b1f3b *4d1f36471f23441e32482039492838502731441e2f4d22414d213c5224334c212e4f233550243d *4f24544e283b3f182c3f1a2b47142c491d2a4a172a451623431835471d344c1f364f1d2c45172d *4214233b1128432032512130501f3b4f203b582a304c19254013263e0d1d311124481d213d1321 *40142e451d273f122b420d2f4717324111304d1e29431a294017374e223e5d2439522338542642 *561d354d1e3f4b1c465528405a1e374d212f4e20304d1b314b1c31491c3b5120364c1a34491b41 *54223855292b491e2d42142c461a31471a3c4b20384b193244172d3f1832471c2f47162b451035 *4d12364b163e52193b480e384b1d4257214257213f4e1c445f22395317475a214458234d632949 *62254e652e546e2e50692144621f536e2942622247612144622647642a546e2f4a65314d672a4c *6e2340622048672749672749612a485d214661274b65274b712d4b6827556b264e672c4d6a2d44 *692f425d284b62264f67264f692144662350732d4062285268245f75324a662147602346642142 *5c183e591c485f1d435c1d476127506a2347662c59632357762d537327516a264f62274e5f254c *5f2057662d607f3a54773a5173315a712f60752e5f772e4c672e5e702c647731647c385e7d3365 *7631668039687f335c66265d702a516825506a2c51692f475c274f6b2b596f2b5c75335d7b3451 *6f34657e354d7136577435647c3a58722b5e75335e7531677f3a607836507330527435586f3152 *6c30516b215b763759733650652b51682c5470364e682e5a6d2b4b702b4a6c2b405d224d63224a *692b3c5c264c612849642c4f632d556d2f49602257712d4f65275b6a2355682a516924506e2d56 *712b536e30485d1e4d5d1d4956203f521b485e254d69283e5121445f263a581c4059204c682548 *5f214f66295065274a6625465c214b66284965234d6a264d6125546426556a2847662651642152 *6622445c1f4a6521455416414a14505c2141581f435c27496227425a234a571d41571b3a531b40 *4f1c4e5d1c42581f3f4a124955193b4d1c465c20465f1f42591e4d5d2440551c484f1d47571e44 *5a1d47541c475e1d576c28566729556223556c324c682e5168265162225366244866264b5e244e *67235f7835506b2e40591d4965284860265567244d6522445e21405524495f254e6a2f5467254a *5e23445c20455f20475b1b485f2051692553722f52611f4e6524485f214962204a5d2042591d4f *66244b5b1c465a17475f1844641e5469254e68275572285672345770394f712a5664224f6a2a53 *6c314c6b2c566d264b6a274e67285c6924596b2950712b496b27486f2f47612a4a682b4f612242 *591a405919435d1d4e6a244566263d551e435e25425d2a425c1f414c123c481640591f5c703457 *6e3c383a1450581f4c611f4c611e405a1b496825465e1d4a622448641e46571b55632259631e58 *67216777285c6821525f1e576c274764235365294a641f4d642548621e55651e4e64234965244c *641f48601b50662453692648621f4467224d67204e652349652852702d5873335d742c596f2a57 *6c275c6a2365742b5161204e6424516b214c6927506a274d6c2a435d1e455d15556b224d66244d *601e4d64274e6c234e7432506d304a6621536a27405a1e364f1d445b1b496322475d26465e2346 *662348671b45621f4c5e214362264a62274d622a576e2d4e70374c6c274d682342571a3e551934 *521a455c1e475c2239571d3a561d3d5716475c1e3c591752641f587238526523465d234561254b *6222465d1f515f224c64263e602a3a532143532343581f405e234667244d681f4864224d5a2048 *5f21486324486428365120425e1e405e20405c21415c22425a1d405820405d1e45581e41541d4c *6021446323486625425e1e49601f4d6622486c2c48642654752c4e75374c601e436924465e2342 *5a25405d1e4a6a3142642d495f224f69264d6725465d20475e20445820455a1e45652d4d673a48 *633047621f3c571a485f20425c1d43601e2b4a1930461743612c3551263d5a193f601c415c1e3c *5917485f1949652643561d495c203e5a243e5e194a5f19425e1e4862224661223d591c36591d29 *562235531a3a571d435e1f3f521d43571f465629465b2b3157263250223a5920374f1f36521a37 *58264857203e581e435a1c3b54203c501e445a1e3c581f43642a3f5b223a461a44571c435d283e *59253958222b4e1b34541b3959243d522035501835541d35561f466828485e234a5e21405c1d3d *4f19324718333e12314b18314e1a425319425b1f3a521a435e25425c1c4a5f22425b1d3e602537 *602a41581c495e1d4a62283f5d23354d1d3f551a385d24415a1d3f53193146183e551e495f1c33 *501d3f571b3d5a21405f24355926395c23415e204c62224d6322455e21506324485d25475f243f *5a2447571f4c612b7f9064cad5d5c7d1d1c1c9ca658a4b43582e3a4f213649193e592549542630 *4d224d4d233b5226344f1a3d4c1b3547183a581e43511d314a152c46122e461c304e1c3655203e *521d3c521e314f1a2b47132e46183e572332491b3d56183149102f411027491a2d491c2f4e1a3b *44163b531b31511b38511c394e112f410a2f50172d4c1a2644172640122a3d162c45112b420825 *400a334c182b4a18223c112948193a511c3a521c294810334c0a2d450f2d4711384c1634502041 *4c1d4f6020435f1e3e5517445216354a1b2f45122b431a3f521f394f162b4514324a1634581c37 *541d3d511c364f19445a1f36551c425b1e425c2445672539561842591843551a4f67234a612343 *5c1d4f64244a6929445c1a566d2759722b526d21526a2e5f7229516a2b4d6e234965225d6f1f5e *78255c6d244b641e4c6d204d661f4f70324f6e335977325b6f1f4b691e566e264f6b205472214f *6d2649682a4766234867234c5d154a5f1d455d1b425f1b425f1e4d66294461234d68294b601d4a *6b2c4d6a274c6b284f6a1e577327556f1f536e244a6a295a7026657c2d687e2a5c6f214f6a2350 *722b43631e4f6e2d4b6723526d244d75225d7b285172235e6e285f73276373235d762b5f76275a *752b657c305266224d6d2a4d6324546c2757762f617b2b5c782b617b2d637e34617c3053712b5f *742f6d7f3267782c5a793262813a617f2e547524546c204c692652692959742c50722f59742d56 *6c1f58732a50722f58722e6680406082405c722b586d295873315c732c5a76265b752d5c782a5a *6d2d495f1d4f6a2553732f52742a47671f4a621b4a5d1f556924496825516d314c6b2f4662284e *6f244d6e293f5b1a4153195d6c3753692e44662c4e65255c6523506f244666215c7629617d2858 *73295f793b5a702d576d2150661e49651e56762257691d50651c42621e425f1e44602051762d42 *5a1e4c6d2e4f6e23586d284f6f255169214c5f1649601e516a2c526a23466a2451702557702649 *6621435e1b486115476217405b11415610435e183e51124353134a591644561b4b672343611d47 *672754722b506d204556174a5d16475f173b581641641f3f6020465e1d3e581a45591d50642049 *611e4a661f4b6421576e2b5770234a61204d651d5f6b2150722b54671e526b224f65205266224b *69244e6a215e72245b712250621a56641e525f195a75245c722359752a4f64215467275d6b205f *6f234f6425445a1a526a264c5e1b4960164b5c1444641a40611d4c6c2851702c455f1e42672256 *6a20495f1d576e24526a21536c2544591d405d1d496425486b234b691f506824476a204d5f1a49 *651f536a2354651d5471224a671e4b6320586d27566a22546a204f6d23495c1a42551146621b48 *5e1b4a621e455d20415c1a3e56124458174a5d1a58681e44631d43611d3f581c455c1e475c194c *5e14445c20546d2b6f874a42601f496527466228455d21405716475c164a5e184a5f0f435e174d *631b4c681f4c601a405f174a5b144b651754601b4d5e14405e1d475d1554661c5068224b5f1f42 *5f174e681a48611d425f1e465d1842550f3e5d1a45641f40641d436722566c22516d2548672244 *641e50681c526a204f5f1b485c124a66164d661a3c561735501437571b42591a465f184e67234c *631b54671d46591d495d1545671d4f6a22435d1c385d1d3d5b1a2e490e3b5a134b601e48611745 *6522536c1e46641c435d1a3d5f154c6a1f485f164359134a6318415c1a4159153d591d405c2042 *5d174a641c465e1a3c5c20365514405e1e4a611c475f20435f1e4f6c2b41641e3d510c41591244 *641c40601f4c672745612542602243671f435b20475e1e405515425c1b4967275767204e67264b *652346652348681f3a5415415f25435e1f485e1e4a59174e6424455b183c591c3956143f612242 *5f21445d1e455e1d3b571d43591c4a681d45681f4d6a264c6523465f183e551a4a5f1f3e5f1f41 *602448632141661f475f214860214b6424485a1846642548602340652345611947601a4a68204f *6c2548500f47651a3f5714475816405718395311405c14486b2249672e4052184b68224161253d *571c3b5b1b425d143d5c163d5917445a19315213365a15415e193d5b1d465a0f425a1246601936 *561932531c364f1a4c631d485f1e455d1a3b541542571a3b521f335012445f23405f202c4f1d3a *4d15475e1d465c17475f1a3f591d3552153c52103b59173e581d355a1b364d173f521c425b1844 *521c45551e435d1f3e5a1b345519425c222f4e1638581a395b1d445e1c435c1c2f4d1537531833 *541a2b4c172e511b33591a40581c3b511a354f1034511533521140581c2d521c344d183e57153a *4f184257163f581e44602148661f3f5d1c274e18334d1b405619405a153f55152c4d173756173f *5b1c3e5518435c1a415b1b40601e4562204b661b3f61223e6120406423405c1f4c5a1e4e5c2049 *621e45612047551d465e24768c61cbd5d5c6d1d2bdc9cb5c824743522d3e5326355029425b294b *54263353292e4c2336572b3d4f25534e212a3f1d3a50252e451e31451f2c4f272f4d2238582535 *52222a481d3a5c292e4b202b4c1d26451e3252222e4a1d2b4c1d2144142c53202c4f24294c1c29 *491d28441c2f491a2140172c481e3954212c4e2337561f2b4b1f364c1e2e4d1d2955272b511e1e *43182f4b162443162c4e1d2f5022385827324f2230521d41632c3f56233459263a5d2136521f3a *582a3e5222395d21294113222f0f253e112a4018364e19334e1f45601f33532035511f2a4c1f32 *4c1f30511d425c213455213b541f456525475e22416429456a2a4c6a314d6b2f44612856773555 *6e2a546e2b626f2a627134586a2a647a33647f3f64833a697f34607b395d7933567e3464824557 *722a5a7e3d57762a56742a497029547628506f2f3f611f556a274f69294666214f6f2f4966295b *7933516a26466120536c274a6d2d4a6c273d5e20445e244762273f5e253c521c4f61223b591d48 *6629466729506c2e4d6f304466244861214c622d4d6a274e672a5b763652742e587c3758783758 *75324e6d2e4d6c2a5c6e304d69264e6d2b47672a56783c5d762f5872284c68234f6a275f702852 *6925647d3c64823c617b325577314f712c5b7b3257722f5d78325a772b58782d4b6f2a53762c57 *7b3a56732f5e6d245e752e6279355d732d507028496f2a4c652a4e712e4c6624506c2c4c6c2e4b *612a4d6422486f303f5d2553723461813f53752f576f2a5a722f5b772e5677335b7a305579344e *6c31516b315b723348662949672d406627425b1a40612143642c476e30576f284d6a2e495f2942 *643047622649682b42612843622b4463274c5e1d49611f546d255c752656752e5b793b61803c5b *7c315a792e617d35647736647d30586e3058762d4e732b5377354a6c294665234b612254681e55 *6a26466a294e712a5275364f732c567830486a204765234f682338571f3b5e233f59204465294a *6e2a466328496221466220496a2837551f3f591e415b1d43642c435e214f6a284b6c3046612556 *6c2a50661f5069264a6e2a4f6927486626405b1e4861205062254c63224a682c4c6928435e1d3a *5a1d3e571d43612448622a5669234965284464254c6a224c64264a7134445e26546b28576d2560 *74285970285468264c6c22486220435f23516c25506a2348632144561c455d204b68264a622838 *5924445e214966274b62234f6b2f576c2c49642c516720516720486c2f4b652c4e5f204a692344 *65224a6b284b6a284d6d2b4b6926436520496f2f46642242631d4264254161264664254b67254d *672254672348662b506d2d4a6825496725486624465f1d435b1a46621f425c1a3f5b1e4f702c4c *63214c61224a621e536725415c1b4768244a662c47662e526524556b2550642448601f48602146 *6123456221415f22495d1f4d6726506d26486523435418456021556f253d60244660263e5b2348 *5d1c4e601a53691f4d6923435c1e405c1c3d5c24475d1b536d3044641d49601c46601d5064203f *5617435b1f3d591e40581f445e1e506f2b485f21435b1d415f2139501d446125546b2c4c632452 *6d224e6b254663214868244e642345622440581c536a234863243e5f1c4c67233d5a1e415c174d *6c2859752d5d7a39567030526c2a4e73205a73284f702a4a661f4a6824425a1d4361214d6e244d *6a29476a2c4262214461214f62214b61204a621f4c5f1d4f6c23506b28435b1b51611c586c234f *6f2e465f1d49631d425b223c5c244d6e3241591e465e204f61174d69284b67294763295c7c414f *6c284c71274e6a2d45642748672151681f416321405d21435d254c6220476a2a4b6e305a6d2651 *72334f6d294a64244f6b2f5b752d556f2559722c546b244767245d752b527a36446b3244692a45 *61254f6d274560224f6725546f2f4c672a556f2e5072284c6c2b466b2b436b254d6e264d6d2a43 *642048692d4d6c2e4766254364294f752e526c255776294b692a4d66244e712f4d6e2e51762846 *6a294d732a49662347642547672852773141632154722a5170254c6f27496b29466a2857772c4f *6e23506d2846662544671e486c254c6d274a6d2d44551c41581c48631f4a6b293d642848652540 *5f1f345c212f501d38531a4361213f5c2138582042631f43632e3a5b2b3f602a3b531c4c632940 *62244c6d30486a3441632d486826405d213a58183b5d1e445f20465c243d5b21415e233e5c223e *5c203a5b244663214661223c591d38552037551d3b55194765213e642b3550193a5a1e415f213a *5f31364f1d3d5d21315b213352193d5921355725384f1a40571f44652238521e415d1e385b2240 *6222354e1734581c3f622136501e374f1c364b122d541f364f183f5c173053203b5d21365d1e3f *5d1d516a253f631e3f65253f5e1e4061234461244a6822435d2442531f53682746622b395e2a49 *6523405f294159224966284c6b2f739166cbd8d7c7d0d1bdc7c75d7b3d394f2b42583641582b43 *5f284354264a5d22425d2a4150202b4c1d2e4e1d29401533451d33481a304c19364e1f324c2239 *5227414e222e471d3d4d192f42122b481a2b4a1c324d1c3f521c244112263e12294c1e274a1e36 *54212b4516263e132a42122c420f2e4a1b2f4b10233d13304d1a264717234019254313395f2529 *3c0e293f0b2a47102b431131471d3a5f273a492338471741551d4a5e2344611f3d4d173e521c35 *5721355221304e1a2534081f34081c2d07162f08243f0f3c4f1e33511f304e172c4414344e173c *501c41571d476022465e1d4c6628526b2959723252671f506b2a4e6d264565213d5b1b435b2246 *5f22485a215265224b642454732f506c24546e2e526828566e2957762f566d25556e2459762f54 *712a4c62255d6f2a60712656691e4a621e4e66274d682257691e576e285268264d6a23576d2656 *6829596c255470325874296681385c7c2d54722d516b264b692a48662345632a45642d49662251 *69264f661e4f6924506e274664243b59203e5e2447612646581a4c6a21475d1b4c61234d601b51 *6a255c792d536d304e65284c6526506d224c6a214a64214d6823526929526e30516d27506f265d *752b5d79305d7329516c285b6d2858732e627a2c617b375a772e58752a5d7d335e74235a742953 *672c5d733059722c5a722c5977355b762d5c762a5164225166224965254b62274e62214d642244 *5d1849591648631e46581d526928546b2e5b76375c7836586d285e7a2f627c2f5f6c2a4e611e56 *7630586826607535587227576e2e4f6c25526c285060275464255567274a65265474325c783751 *6d29546a245c6f266071294c65204f6720526a264c6b2e4f6c32516a244e672260753060732952 *6d25576f2d506823536925486a255272215066184868254a621e526b26496623516a2651652954 *722c506e26475e1a57691f536b25516a214a651f4f6822526a1e4e671e45571c485b1a5666224b *6923455d1c42591b455f1f465c1c455c1c4d671d455b1d475515465b19415d18435d1c4f61204f *5e1d445515465811545f1d4c5b1d48571b3f4e14455f20536a294c6c274b6921506d28435d2747 *5f1e435b213b541d455e21475f244d68214d662350652351622a506623505d1e5469225f792c66 *76315f6e2b5669274e6726536527475d1f50672443501947591d435d1b455b1c3f5517414c1845 *531b42581a3c501b3e53174258183c571a4f612452672750621d4a60164f69255770254b652649 *662249631f4b6518546d294e68234e6523475f1e4f651d4f661d4d621e4d631d4a65254a601f57 *6e314e6d245b71255b6726586825506720556c21516c26556b214d621e465f2147622344652443 *6120495b1843581c465d1854681f50661d426121465e20415f25426121435b1d506b2c475d1f49 *5b21475d1f5069272f4d1c435d13486018445c1e49611c485a1a4855154a5e1a536221445d1c40 *5f234b5818465b1f47581f4e67185b71214d6923485d1c475b1642591b455f244863234c5e214e *5f1b50651e4e611d405a1944611a54682149612545601d4a5d23536420445e223e58204a672055 *6f2150632445581e5066285c7e4267782b6c7d2b7387375f783458712d61772d5f76345d71285a *661e556c215969215e732b58652366752a5870245b752f5c70315c722a4c632455682349682451 *6a246073295264225566235e6c265b732854712a57692851621a5861195e6b2359662657692259 *6d215c722b5b7832485b1e575e1c4a5f21546d286279365d76385972305576315969275c6c2455 *6e275e75266178325d7a3d617c3851721f5a792e5b6f215c6e2f4e611e4f652b5d73345466254e *692262722560752e69772f586d295d75295b752c4a642f526c374f6b2c5b762d516e2a4a6a2350 *6c2c4c6323476520516626536a274e6a2454732b5a6f334c63244a5f20546b255065254d692350 *622250661a536d21576d264f642049642c5a6a22556c275a7328596d2c576d225b6d1f4f691e5f *6c1f546c254d5f26445f21547326496a204b6a1e60782963702c476123526721445d204d6b2950 *712e526d2255701f5672264f651d5674245a7325516c2a53712a4c6921586c1f546f214f6b294c *621f536b2153702b465d27425d264568364e65264f6b274f6c2645601d3e5d22476b304b602348 *692d4c66215b70324c6f3d5468325467204a6b224f6e244f6c314b6a2a516c2c4c67295065214e *64213e5d274c65285d712b4b652547642d4d65274c621f516a234d68214d65234d662449622451 *6b294b66265565205872234e6c31536e2b475f204e6b214c6e2b4460244f652351672557702654 *67255069244a6626526d2e556f315069284d67254a6a2448621e4b621e485e214a6b234d672447 *651d4b6a2e5770225a6d244f6b2b4f6b2e5a6b275b7134607134576d2d4d6b33596e28556f2a55 *6e2f4d6a2c526b2e5f72305d6c2a4f6f35779567ccd7d6c7d0d2bfc8ca67753c4c5429454d2342 *4e2142572337441d3e522948603139491f2d481d364c1e30441826431a1d3f1c23401e2c4a2324 *411d23421d284b152c4e1d304c1c364d1f314e1e2f4517283f162c5022294216304d18304d1c29 *360e3451202c431328481c233f142c441c284b16335921314e1c30481a38521d28441a354c2332 *4a1e29461c2c46112643163e5b1e2e481834542134511c384b204c65293958203d541a354d123a *501a344a182340101e3d13182d0e2845122442122947163f622c3f5b1e3c531a3f58204f5f214e *642b47682f526f2846591b496326526925596e27526c2a4d6c2a49672b4d66274967244d6a2c4f *6a2c476d2d4c6d344e6a304b672a6073354e67265b6820576f254f6925576b234b6722496a2b50 *6a2956783d526d2c5b71275f6d24556d205265204e66254d6d2d465f22536a27566a2254722c62 *7b286378335b782d5f7532526c306275335f7a3658702755662658793c617a395d712453672349 *6229516e335b772d4e6e275b78325a72304a6a2641511d3f481a415b23496e31506a2e46622053 *6d32586f2d5675336476304e6c294f69244a621f425f24466c2c50671e506d2c50762457732e52 *762b53742b5877345c772f5d6b25516922506c235a772c5877294f702c566e2e5074324d6c2d56 *6d2460752c51752f4967264a65244e6b28546e2e536f30526d28587838526e244c6d28506b304d *69274866253e62223e55214c68214969285169274c6b294b65243e61264f6a27536a2b50672649 *67265b763455602043601e4a601e4f62244a65204a66234c6d2758742b44601f4b63284b642744 *63214b5d1e536f295975334e702a4a6525435f20506e284f67225669244f6a224969274a62284c *6023516d26526521436829506d27586f285373274d6d255a6d25445820434f14405d1d3e4f1a45 *611f4d6921496521465f214f6a224d65295766204c5f1d48662355702b47621d435f214a64234a *68253f571a49692448611d3c57184364214c69284d6522567835546c2b536b2655762b5e772b51 *6d29536a215367294d68294763255469264d622151651e475f1e506c204a60205472314f642442 *57264d64234a66234966255171324d67294f6429475e204c64224048173f511b4a5f1e5b682760 *6f315b692c4d672a4f64234a5e225363244d5d1e4e66224e622a4a602046581b4f621f4a611e40 *551b415d254b672a435c223b53193d5615455b1b4a61204f611e4a5c1d4e68255770285c6e2957 *60214e672547601f4e672340581d4362274b6426485f1d627b35465f1c3b5f1d3d5c1e3f531640 *5c234b69264e6b2841561a50601d4b5f1c4c5c1a4e6724415a1f47622249642545621f3f581b4b *5f194d6221486126435f224c662748682852672153762a4460203f5d20445c183e5616415c1b47 *612044571f415919475c143a5a19405b1c425c174460204c581b475d204d5e214760234b641a4d *5b1a5b722d496722546f2a596523455b1e40501f3f5415476128405c235867255468244e5c204e *60205564254b66254c631e3f4f14445a1b49632a4f611f596924566c29586f2d5e752c526e295f *752d63742a5b7528586d2561732b77823976893f65833a62752d6473246a762e6e8240767e3964 *7827697a2b6b782c6c7c3070812d64782c6c79286676295e782f6476305b722b646c2d5b6a255e *70235a72286273266578275b77265b75275c6a255268215e6e2260712168772c6a792f5e732f61 *772b6f7e3d6375336075354e65234e661c5a6d235e702d5f71265e7b395e7f39647a2f647f3466 *7c325372246c772a657b2d60742d5f752952651f465b1d60732a526a22495f1b526e2748632157 *72245d7228607c325a73315f7d386084436c7c30667c306b803659783159742f62792a5a712d5b *7737536e28506a2a5a7b2d4b682653742b5674265f762a5f702b58732d647b30657935586d2a52 *6d305c7a3357763158793b5273355b73295a68224d682b5370274f6d214b652350662549662358 *6c266478255367225266224e6a20475e1d4e69234863224d712b4c64244e6b2a526c225369264a *6c2b4d63224766244f6f30536a21546f2c5a742d5d7026567428586f264b5c1754671a546e2251 *71245d76266377295c7127536c2c4d6c2f4a60225f782e53742d6c7526627e39596f2c53622653 *6a28516b2756752955752c5f762c657b36697e3562783a62752d566f2f517029546b2b576f284d *6c2e5b6f2a556d29626d28676f2b64722854702c66772a5f80345b732a5e782b5e702659712f61 *77345f742e5d762d617d3e55712a637e2c5b702b546c2757642268752f687933597d375c723065 *762e6e803f5a7a3c697e336c7d356c7d2f6974336883366a7f3c567132637328657b2f4e6d3650 *68275d6b2660722c6b853a67783c66813a6a823b66813363762e5b722e5d6b2c556b2b60732f5c *71366174376e7b3a6c82466078395d6d32657433809767cbd5d5c6cfd0bbc7c8526f363e5b2e39 *592635592b4e592d4e58232a5025405627364f2131532b2b4d282b4c232d4c1e3353212f451d26 *4214233914254c1f2c4c1f2c451a2742182a390f2a451825451529471a25411323350f1e3d131d *3a0f1a340e22431a243615284a1c203f10243f142e4a1f3e5a2d3a4d1a2b47192a42133c4d182b *471e223c181f411c2946122446162e4d1c344f203a541f2b3d15274817364f1e324c2129461637 *552130511d243e1126481c27411d3351283f5a212b4211415c29486939526f2d4b62214c612550 *6b2e4d6b3247672a51682b4761254a652c59722e4a6324445d1e4f6f2a47632750682748672647 *682e43622a4968244363244b5e274c66264c6a2e4f6d32526e2f4c6a2f526e29486824475b2248 *6026506c3051692b445c204b692f4e72394f73304964205369284d68295473314c6a304f6f2b53 *712e4d6f2d5b702c567230586f2b5d7a385c77365a7d3c516b30576e32597444536c2a566f355c *7e3c58752e5e7c3c52702e627e385c772f587a354f6c295b68285c6b224d6c2d5c7831586f2a58 *7537567734516b284f74325c79354e6b294b6126516d2b465d21506b2c56732a4a6b2b4467263c *5e1e496f364d6f2e5b762d4d6c2a5875335a78345579385e7c324c67244d6a2a516e2549602446 *682844652a446729425b20405e224160224462254a5c22496020455e1e4c601e4f6a29556c2648 *602646652747682556732e56732e46682552661f4e6428496026445d1f42612746642646642b49 *61274c612641602444662b4a6a2e506827526528405819395b22446522465d1f415a1f425d273f *581e425d1d425c21415b205060284e682948652d4258214e6928426021446320516a2a4c692447 *64224b67214d6c2b426123425d21435e1e425e1e44601e3e5c21486723486322526d284f6f2a4a *68295672385e78334d6a29526e2e517130456022506f3358783c4e6c2a5173324b672049692248 *5d1a415e1a4360233d5a1e405b24354f173f601e405d1947651f446a244e6f2a48652246672752 *68245266275769215e6c23526c2345601f4660204f69214362265065265372344e6b2549601e3f *5e1d3a531a3e582044561e435d21465a213c4f1549631d405d1e435f214a6121486626435d2f49 *5822485e24475a1f4a62224f63225267274c67224c682a465d203b4f2044561b4d682256702651 *6d2c4d63284d642a4c6726475e23425e223e571b445f264e5d1f435a1c51641e4c6723455f1e4c *6724476626496424405f1e4b6725496324406028405d234e6b29486527425d2350672948642543 *591b436520486e274768285370345d7a355673364d6420426419566a21526c264c672445662743 *6023455f214b6927506d2358722a4f5e21566d24556d24526821506528465620506d2248682251 *6a255673265068284c63263e501655682942632e4f6929465d1e4f65264e62204c61244b612b48 *60274d62215b67295267235b65214c5f264c62213f5a1f4d6a285770245c6b26465d1d54651e54 *602250622049662a4c63285e6c2a52692453732b5e72256476295e732d4f6b295a6a225068235b *742f5d742f647b315e782f65813a6e7d32607e3369843f667a31586f27516d21576d28647c3561 *7a39657728697b2b6d81396c8c435a752c607a2b5b762e627b3b5d71306c7d2d5d702757682965 *7d2f6077295a752d6078335c7b315f762a516e2858752d536d295269225d73285d782a5b732a54 *69275e70296a7e37717c37626d2b5e722c6274315b73315e742e637d335e783c566a2652712e56 *7335566e2e5069205774305f7f316180375878335d732d496a32486422516c284a67234d6d325d *7b326984446e8745677530647e3a55702b5a74385b7e404d6a2e55773457772d66814060772e54 *672358772f4f7634597937557a3954752d53772d4e6f295f81495c7937617c365574305d79314e *76364e74365276335975355a6e29526c2b5776324f6f2d586b2c5b7a325273274e6a2f4c642348 *6723506822536c2a586e2652752f5873364f6f2b506c2a4f72275e7e3b5c7b37586d2758763050 *6f324c6c2e4e662549612257682153722f5073315177325e73315c783a59782e5570256384405f *78375d7c346885426484446982445a793e5c803f5c6f30697a31536c2e5e7b2e54763767792f60 *773470874662823f657f36506f2f617c3f5d81315a7a3069863b6a86425c803650712862763252 *682a5065225d6d2d5f7a3d5d7a37687e36667a3c69843f688034627a2c6a7d356784446a833a64 *803b62803b637d315e7b3a61782d56762d5f742f4d6e2f557032677d336d803f667c395d7d2b64 *8048667d3d6b813f7088456587486a82426685455f7a3a6c8835546f2e5d7532627e38557d3755 *793e5f73336a863e6c81406c813975843571893d66833f72883c6e85437385457388477180406f *87425f7d416a8342658248627e46607d44647f3f6c7a388b9a6dcbd6d4c5cdcebdc6c659703241 *5322404f1d3049213b5b2a3460262c4b163b521f2f4e252e49142b421032481a2e471a3a532343 *571e3a521c2f421439511e364d1e2c430e29391232501f2b4d1e344f1d26441026380b26400d21 *320c24431716330c1d38112a39193049122b47163a4c1233460f2f48163c501a304113334f1b3a *521b3b54192d410e27411235521b2e4c132e44173a5219344d1c364911344d1d42531d5066314e *642a516c314f64263f571e334d1a4d642e53601e52632048611f52692c586a29536b2e58702959 *6b22445f2346621f495d23556824536328475e1e4e631c4c5c235471325078334e6b2752682b55 *6d2f5363284a62224b64284a611f4a5e1d536b2a3c50123749153c501c3f4d14405716415c1853 *703756763456732e657a36576c305f722f536a2e4e6729506a295367205264254e642b4c622252 *60215671364760254c6c2a4d6726566b2a5664254d6523596c2c5e7731657f415373334f6d2e5a *702b5f7529586e2b566826577137586b284f6c21556e285e762d5d763c65813e6381405d762d5a *732761792d57742f557326506d29567328537532576e30506729516c2658752a4d6927486b2947 *5f204e6e364065283f5e2247611d41581a516c2b455f1d4c641c57702457732d5e783848692b44 *6222425b1947611a435f1d44641f4a611b334f17496220415b1b4b632049642450601c4a5d1a44 *641f405d22486c2f436422456427576a225065214b60254a651d586723436022415f21455a2345 *53164c5b16465e1b4156164a67224d682647642255712e3f5d2341632247601d4c5a1b425e1e40 *53173c4f193f4f193c4c1b3a4e1d455c1c5464214560213e531c476525556b2b5d73335b722e60 *7728556b1e596b25485d1b506c274869284a5e1f4f6726526c25647622587b324e6d2451651d53 *6b245c752b5e79335c6f29526c25576e2256621c5565255b72264c6121475d174c65235e712c55 *611e495a144a5f1e495e204b631d4f652146621d4e6621415d1a3d56134c5e184c621c475e1d4b *631e4e65224962204f6b204d631e56682c667a3f55621f4b6622485c1d48621e4d6a255064224f *67265466225869254a5d205064224355143e58243e571c41581e435e1d465f1a3d54173f4e1c42 *5a1e435717465a1e446423405d22435c1d54682049611f4e64224e601f3f5918394f19425e214f *6a284d6f2a425f1c4e6622526c2d476727415b1d49631f465c174f5f1d4e5f1956692055661e50 *69224566244e642868793b53702f4d6d2a4c63214d6623576724455d204b642347641e445d1d4c *631c55661d4f65204b5f1b5165204a6625485d1f4e5a1c4e60244e5f1e57651a5a6e2257661f59 *621f59671b4c641d5b62226268245f7029596a1e58661e59671f63752461671f5666265166204f *6b1e48682146662154641f5c641d455c18496720485f124e641c4d5d1f56611e5e702a646f2c58 *671e67762e57702d53692a50602357662447631d4b5918515716586c2957601f4b64274749135b *6f2a5e752e58732b5e732c6473265b72274e66275b6f285a70235c71275d7c315f7b2c607b3563 *7b3a5e6e28697c2f6375275c773061782c647a2f70813b62782f617d3a5d762a5f772c5f792e64 *7e34626e245e75335f6a1f657629667a2b64762c6b8340646e29657b245e76315d772960722664 *76315a71235f78256781385f7a305769226077304d681e50692758773467762a64783166793458 *69235b7024577126596d246476315f7224647a2867802f587736617c3366803b607d4957762a5b *762652722e60702857732b465f1e4f6d24495f1e4d5d244c6523445b1e56651b52722b57753f5a *6c245f80446a79336d803d6780325f7c39577a3b50783a5d7f4055783453733057772b5f7a2e58 *762d547729516d2a4f6d294d6c204f641f506c26516b274f6c295d732f6177265f712d566d2a61 *7726647f39617d376376365d7f405e762c607626596e2e65752a60762f5c772e687d345278314d *6e304c68204c621d48651f5067244b66225c75364d6b2b506d2c4c65254e6e22586c255773304f *672f5a762b547a2f5775354a6e31526923596d2a61752a5670275f762c5c77405d7d3f647c3c6b *87476d803e657834677d39687c35678042667e4262803f637e375f7d3b687d366f7d2d6f7b3c66 *78326c823673823a6581415f7d3b65803a5e7c2f5e6f2469781e64803f62813763804069803d70 *82426d823862813c60712d677e31627a315d793264823c5e7a2f6885406d8432778a4370813d71 *813366813f576c2864722f61773362703064812f5f722a6077335c722f5f6a2665752c697a356f *86436d82406d7e2f6b7f3d607535637f3b5e803f58732f5d6f2a67843d607a2e5c6c285c6a285f *722e5f6c276577325b772e61792a658035627f377487416e85446e7f3571874771894262824567 *7e426f8548697e396479386a74336775336882406079435b733c899b6ccbd6d5c4cecfbdc6c74a *662f395a2d355124334a1c3e4a1e374c1d21411b2e4a1d3a532325461a2b481b28481d2941112a *42182f50224458232f4d1f34572934531e2d4c202e491a2e4f1b385125405a213c541a2f4d1a2a *4e1d2d48182b4a1d30491a3d541a2e48132e491935541f32521a2a47122444192f4b132d441029 *3d0e264516213d16365a213f6035385c2540572448632d526629435f223b58254364284d6e2f59 *73305972396073294e66274552194867233b5f295c73384b672b4f6b274c6c2f516c2e516b2956 *7638506a304f682c4968314c6e314e662e5067273f5f20455e1f4c6426435822415c2139541840 *5e22536e264f6921485e1d535f21526c275272344c6b25415d2643612c4d6d3040631c3f581d42 *5e21455f264b67284d6e2a486728516d235476364e692a4f661e4a5e205d73304c6b24465d1f4e *692a4b6c2847611f4c6c2a456525526f2b5a6c2460752c4e77355a7230587632527834607d3567 *8135566e2a537734617c3158772c50692a5e712a526a224e6d2157722261762c4a68295277315e *763153742e4b72285170264e6925536b2d5b6b2d5b6f2c5970324b692d4c69284a6b265b742651 *6d27506c2a556d2b4a69244f6e3247682b536d274c6f2a4c6624466425526e2d556c2b56703059 *722b507330476725405c1c476b24435b18496121415e1c425a22405e2341602551692250691d4e *6c235667234f671d41601e4862274c68264c6b235267225b792b5c7b34586d26566b20586c2147 *6620506d2a506c26435e1e3860224b661c4a6728486426486024586b26526f2b50762b49682148 *6624485c1f4555184b5d1f536a304a662650712e5b78314b68224c651f4767244e6721566b2251 *6d255d742a5c793c5f793055732956722a546929526c21526b22466526576c2b5d782e4b6b1f47 *65244d65224e6d26566a264b612459632651692b486a264c73284e7229536c224b601d5b762f58 *6d28506a224f6721506121576b235372285169214f651f4a611f42611f4f6d2c4d6c2c4d6f2942 *601c4568254b65264d68255a732958712c5366264e6624546820485b1a455f1c4d5f1e4b662249 *571c3f51164b5e1f4d69274d6c22435f1c41591b476020425c1b395317384c14324917314f1d2b *400c2e4713415519465d2131430d395217304614304d1b3f5c223e5b1e3f60194362223f521d45 *5b1a4559183d5b1b425a1f4c6726506a214b631c4c651f516923496321506625526625566f2c4e *722b47601e4e6d255774355973285c74254e652a576a25435a1c4f69274e6621546f264f6c234c *5c1d4c5f1c3b581b4b631f4b692a48662543621e4c60204f6c2c55702854691f4d66214f632360 *722a5d702b577225657b2e6172296474295e6c20546b215a6e215d762854722867792a70853f60 *762b5c74285f732b5868205b6b1d5b6e2a5566264e6a1d50621c465b1d425d1f5d6c2459733364 *7e3457722d5872295767245365255663265b6a2e5d762e516a234c682a475f1c525f215665225a *6d26586a2b576e245573296584415b742954712a64762c4869265d772b5d6f234d692858752c57 *6b275f752a5b7837566d2b5a6a2257712a667e326580315b73285e7931657b2b6277295b7d3764 *7b31617d2e6279316b803a5a782b5b732373842e778734708945677c3081893b6c8640687d335f *823960732e53712a5e8438647b335c75215772285e7b2860742758712d526b295774295a782864 *772a63752b626e2754752b5e79325f752d617c3d5b70335a6f315c722d617c2f57773059762b58 *762d5a792b567327587428507626507224566d295b6e1e4d74325d732d57722c4b6d314a73284f *722d577a2e5d752f576c205c7a2b617b3a617a396282445b6c27597c304b6a28556f295c762c54 *732a54763659772e6074325b793754702d536e2658732d5c79334e7430597f3d4e6c2c596e2859 *712658772b627e3b5c7b3b607e3b5775335e7f415e75364d6a25628130516c235b6c2658702b50 *6a225064274765244a682141692845611e4766264d682a576c26516a2c4b6026546e374f6b2b5a *7627627e39546c2a52661f4b6724557536496a33506d314b69244a69214a6e2957733256733160 *762b5b722b647b2e60804a5d7c2f687a2f69813c5f7e3e60793c627b336c8035677d365d7b3a5c *7b3c5d7d3765793c5f762d5773355d7b3d617d2e5875325e7a325c782b5c76276178296c843661 *7e3064762e60702c5b762e687932677e305f7d32667a2c6a7a2c657a2d60762f617b31657a3766 *80375b7b2d65813258742d657b315f793d6378325f7d2e6584406a863b5f83446684416f853f70 *894a6f824767804d68803f6981395c79355d7a3058763158783563773357733a59753757723055 *7d3f5f7e346b823a6a813867863a65813c67813c6f823d76843c6a83476887406e8a4567813c69 *793c6e7e3a6a7d3f5f7b41658043688144688238687b326b81336072408da070cbd7d5c6cecfbb *c6c64b65344567323a5f2c324f21345723334c1a2c48142a47232c451b29391a26401e2b432829 *491c2142162941122c37112b3711263714244018234121324a1e304b1d293f112134122f3e152e *461f2d4c22314b1e304d224457264158242e47183550232d48142644182144181f3e182a491e31 *4c1d2a451232542535562547642e5b6e3b516a35597d4055733b476020466f2a435b2240581e48 *602148632145642a4964294c66344c662e4f75365a6f2d5c7938435d27536f304764285e783b4f *6d385e70305b6f2f516a2a4a68254d6c2c4e6d31506829445e2847622236541d3b4e194357203b *4e1d44572345562041622c40572343612c4b68254f67254f641f47652e4865334c622847632440 *5e2a4c6925395b25426a2b4d67244b64284e692742632b4c662f4e582147622e516e30526b2b40 *5f2844622c43622e4e61275b74314d6c2b5b783152722c4d6e335b72364f692d5c732e506a3051 *6d365877355d7b3a5b7c345375315b6f33566e345768315877384f72304e712c4e682d42682953 *662e526f2c526829547328536b285369205b7a2e61773151722e4f67245d752a5d7a37536d2b57 *702b516e33526b325d78365d74354d6324475c204d61265266254e6a2f4667274d672453672050 *702c4d68264c6a295c72334d692b3b6021496724496c2e526e2d5a772e4b652750662a485e224d *69263f5a1c425d1a4a6425576a28586d22586222475e1e4e6b32567636486425475f204e68234e *6f284b64254b6425546c2e5268244d6f2a576f2f617b334e752a506c2b4a6b29586c2b59652855 *6b285a6c295372314a6e2f5972265a712a52692d536f365167254d67274465264c6a2a556f275b *70275169245b6b2463752b5a6f23506a2257742d53732f58742a5166215165214f672250641e51 *6a1e51702d57732c5f81414b6d2c556d225e68215a74274a6024405b204c6027556a284865294b *651f4b5d204964215a6f2953712651661f526624587031596c2a536d2a4a69234b5f1a44571e3c *571b3d4b184860274965234c6620586d24617e326273274e6b274e67254f65234b5d204b60224b *6526485d1447621f42571b4b571e44561a3b4e1c3f571e3d581d3b521c435b1d425b1a42551842 *5f224765253b4d1645571e435c22465f1d435b1e48601f4f5c1c50652347672340511842592147 *60224d632244591a425f1f4a5e1e4760224861254d65254f67275c6e245061204a5f245567264e *64245565224d661e53622251612b5674284461204e621a4c6524506c274f692b53642445602948 *5f224d6d2b4b6a284666274c60204a65224b6823405b1c3c6029435b1e4a5e1d48651d55642168 *7934647b32617d395b6e305e773162722b516c28526720586f2a6577264f6723576e2b5f722862 *743263712a62772b667f336b7a3567793d62793c5f7031627531566a2956752b516a255d732a57 *6c2a5c652147591d56692b5a65275767255c772d5d792e5f78345f72315f73345c702e5c6a2b60 *762d6079385e752f5c752a5d76305f742f616c244a6422596a266071305a742862792769803157 *6e28556c2e5d763c62742c5f732f617836657d3c697d2d687e30647b34657c3a5c763263752a63 *72335b753364782e5c6a275f762e73864457743a5d79325f823f7484407587406a7d2d69812d60 *782a5e7d3c5a77335d7634637f385778305f7d3161803c5a772c57752a4d672055762f526a264c *6b2e63732c627b2f536e2553782a637c315f723d5a78356878305e7b3f597730546c234b6a2550 *722b586d264f6a285676225d7533668031637b305275265674255c7933667e325c74305978335e *752e5976304c6a274c692657732c5d7a2e5e7d325c783b5c793457733064813b5e7c36586f2b5a *7831607a3753712d6579325d77335469285a74315c73305c782f61782f607029667a3265813c55 *7133516f375d7833667d2e59722c50763a6374325c763b5d6d325e762c62783a5d7c3a5d7b335b *7d3a607f3663762d596d2b5b6d2f51642f5573335373365e78305478305f79285770306b7f396d *8548697b2f6278375b762d58722957712c556a295a6c304f682d48591e435e1c4a6526405a2652 *6d2d546a28577332617735617b325675384e69285a6e2d5b752b54793b6078324a6321516c2957 *71244f6c2c5f7c345b7e3a607734677d344f682a61712d6c823465793f6077335c7732566e2b5f *7a385c73336478325e6e2b5d712a5b782a607b33687e3d68803f6a854469853d657e326676356a *762c637b345c763260793255672e566c2b5a6f2b617c37677c345e7b32658342637d396787486c *803a637b3a647e3e6e813a6972336d7d2e667c3967844a59804559723d6c843d7186466b813867 *84486c7f3a697e406677366a813f65833e6882386381416c7d3c707e34677f4a5579464d6a3657 *6a32567c444f612c51692a637a355f733b57723a5f733f6474345a6d3660753e88a071cbd7d5c4 *cdccbbc7c34d6731415c283a562231401a35512c314c2026441d224210243f1330471c2e471d30 *451c354b1a26381427491c213f0e2c400f1f350d22360d274313232d0d1a26091b22081a29092a *461334501d4262243450162f4b173d561a395a2435531a3d581d3a5024455e21334d153b551f3d *6027476227476225536d244865223b591d4369214663274e62223e5f24435b22486327455f2049 *651f4562234c65233e5a1d526e3650682c526e2a4967224c6525495d1b43531e556e2f4b6c2653 *7029566c2961732c5a6c265466234c6424586d2b586c2a566e2d475e214e722e49631d46601f4e *6724536e2f5b702950661d50692149602545682d4d6f2e5072324765214b6b235069295069254e *6c2350712746601d4d6a224c6d2d4d6d2b5065254f722f4a64214b651d546b325d782f57763f52 *752f5a7337647c374c6f245c7628546e215e712b4d6b2c53692b547434546c2d51722d4f712e5d *7b335b71335e7a355478354a6e2e4e6d2a4c6b2c5676314b692a46632247631e48682150703551 *732b546d284a63214767224f6b2157762d55652156732d52702d506c29486c2d647b27526d2658 *6a2152691e526823586c265d732d4d6d2f596d294d68205b6f25506c244f6d2e5675334a682655 *6c24516c2b5067224e6a1f4b692258661b5263185466224f63224c642453692556702a54782d4f *641c5e6b235b6a1c5b752b4d69214f67254d6a295c6f2b5c6c235f7621526b2852631d4d6a1f57 *723966803f54652348631c47611d435f1b46621c4d6e2d5c732655722c5a742e5a6c255d7d3159 *731f5a72205e74275c671e5b75285d7a325472264f64254c661e536f1d506d27546c285972295b *6c21596c20546f275f7a285d7c275e761d60792169802d58752d4d71234c6d2257763153681f5b *72205a6f1c526d2258732649601d506720556f265d792f4d6a22475b1c3d5519475b1d55691d48 *621a49691d4366214d67214d641d526f225c7b3050691c47621f4d681e4761224b60194a661d4b *651e50752b436223465e1b49641e47601f4b5c1d4c65234d6525465c1845641b47611c4a591450 *682640571f3b571a415c1e475e184c6923526a205064224b66214d641e48611e48631e47581855 *651c4f62174b601c4863234f6a275069224a631d536d27435f2447642247611e546a2051621d49 *5e194e621b445d1d4d621d42591c54692559691f5067235065215b691f597120516a21506c264f *67255e7226637e2c586a20596b20597b32576a234d6828506a294f6521536c2648641d526c254c *621d566a235c702c6082434f6a205d763254692350631d50651c48672251712756783550691f4c *671d4e6a25557735617f3c61762d647a2c627e365c732854682859702e5c7732597027637e2d52 *6e26617b31687c2e5f793261782e6e812a6e7827647529617e2e657d295e78306079385f792d57 *6e2a60712a5c762c5a6c2655722b627a3f6178305672265e732a697e2d6f893c737c2a62793362 *772e5d712663722753671d6276285c73265e7a2e56732b617c2e63762964772b657e326b813962 *7b2658772d547229627b376480325c7729627a2c667e3265802f64812f6473205f772b5b74245f *7d2e6b8038607b3068802d6b853d5b772f6d782576802b647c2b65823a687926687e396d82346c *843a6d893d5d78385d81405d7d315f7836577625677e2d69843d6175295a772d5e7b305c77244e *6b1c4f6c215d72285e762e576a2655722d59702c5a6d2b5b76265c7527647e296c7e285c792a4c *6f265f792d587a385374264c6c27607d2f667f2f546c254f753141682355772a6b7e2c50762e60 *7929587d325a742a5b691c5d78335d713050702e608038617b2b5f813b647c2a5f7b2b5d772c5c *702658752b567a31536424546e27516a27546a1f61782b5f752c5d76286580365e79315d782f64 *7b2f5c772d5b7028536b295d7126536b2347652a57722b576f2d546a205674245977324e5f2258 *702b5275334b702b4f6e244c6b2a617c2d5d732754782c547328536f2b45692a526827506a2259 *76265d712660782b5a762e566f2e4f712d516e2d4d68254e6a254a662840591a455d154c621b4f *6e2c4e6a275066204b6a25536d20586c1d526f26526b2560682055651d5575234f6d2a486c2759 *6f2a5e772b5374286579285c6e224a5f205c7b314d6a2d5a76376a822f547330647a2a6d813356 *7534506d245d78325e7e2e65823e5a7a2c68883968822e6d812e6a803d6581316c822d6d843466 *7c2e687e2a697f295e79295d742a56752e56732b667e36697b3567853b5c7a356983326b86386d *853f6886386a8134648141758a406e8442748c4272873f6281384e763066843a6073386b81385c *793360793251732b58712758752b6578306882326a83365e71326c7e34657c326380345c7b384e *7136506929526d2d566f2e586c3059723356702b6a803b677d3767804164803b687d31889d6dcb *d6d4c4ceccb9c5c33d56333d5f2b334f282b471c304919253a11213e121f391724421d2c481d2b *42222f431d334b1d2f3b0b26380f2c44142744151d3a1426421a263e17234114253e14233b0e1a *350d263b102b4c1d2b461a27451b27421e2a45112a420f364e1b2c4314405a234961283f5e2743 *5f2a576c2f4964214863214d65254a6a25325622334f1e3a54203f552635541c495c1a475d2051 *69294c682650702d50702b526e32617033536a264c6a274a601d485e224b642c4b5b1d4e662842 *5421455d1e485f22444d1346531d506522576524596f2f5d6c304f67284b64245163214d612244 *5d26465f254d642750662c57702b557439486e2f506a244d6c2b5370285372304b68244d672a4d *662a4f692c5670324a682a56722f4e6e2b4f6c2b456327506e31516f2f4d692a4e6f2f607d3751 *6c2b546f2e4f6e29485c264f6c345e6b33577431576e234e712a506020496628526924536c2749 *6e32526c25496a2c4260204c6a26435c1e3f5b1c3753183a5a1f5164224f6c284a6a21466d274e *6f2d5c6c285368224863244f6c27486824586e23425c214f6923506e2d4961215668235c6e264b *62214e64254f732a51722856732850682b4c692e4c65244b67234263253b5f2748682d5a6a2c50 *6a1e5266224b601e495d1d486121475f1d536523506b264f6e2a546a2a536323586e215e6e2d58 *6c29526e2e536b2b5c732a67823458752e4f6f2e566a26536a225f762e526f28536f2551722367 *7c2d5d792b5f792e637c36506a2156702d4f69204865204867204c6a1e4a66214f652651712547 *65244c6722556b1f60843b4263234f6f264d651c4d5e1f546f28485f224563284d652444642449 *621e4d6a205b7527616f2a5d77304d672348601e3e5f1f526d294a6f22527122516a2748631f5a *7a2b48631e4f6d274c6d294f6b25526e2750652145641d485e1e4d641e46611f3f5c23405b1e41 *5f1d4b5e1f465f274e62254f65294d60245165264c6625485e1e4e69245d70295768234d62204a *6925536c24486327556924526f225c772657732355671f4a6423546f2b4965234a67295d712f55 *6f29495e1e435c1a4f5e20435d21556b285a6e305465225767244f6625536c2c5f6e2c596e255d *702b55722e5f7529556d27566d285975315a6c1e5d72285975235b712e59722d4f662c556a2d56 *722f617731577025586c27556a274f6b284d6d2b5a732c4e662a4a6129586c2d5a7229596f315a *752f5c772e5470255a6d235e762c5d782c55722b61742a5e732a557025476528556d224a712f54 *732e5a702f53752b5f78355d72255567244b6b275f793a4e7226506e2a577433546c314a69245b *6d204e6a285566215a7027566d275b7333596a28576f215d74275d772c64712858793055732f4f *6c2955642854723059782857732860823e5e7a30597630556c275c6c2a647a2f5d782957712764 *752d587e3a566a24657e335f75336681406c8141657b335f792d58742d5c772e6b83346a7d3259 *742a657e2e64792c657d2d65793259732a5f772d647a285a77335d712a5b6c2761732c60762761 *7a2b5d7e355e752b59762a5d7323556b245d793159752b667c2e607a29587b2c5974265c6b2265 *782c697a3c697e335d6c2063762d637f2b587932657b2b65803365813077843864803a6d86386c *79246e8534607c2a5f772a647c2a5b813b63813a597c3b6d812f6782395e7d326376265d76325a *742e587a32556c2861752a5f742557772a597027586e254d6121596f325e7a3d6377315d732a5a *75255778294b73265b74255369274b6327586d2d4c5a1e4b6725567326486a2858692d59752a59 *6c234b622249662a5667274b651f5c72215572355f752b566f285873255c6d1f59742d576c274f *6c2557762b607930576f2b5c722f4663284b692a5b79335a792e57772c516f27556d2661742d60 *772b60732c55732e5c7633587737537a38576e2c5877345b762c65792c50722e5173276079335d *762c52752b607d314e691e5f75235d7c2f506b2559772e47682a566c21536b224e722c516d2254 *6d234b6f2c5d742f4f6d2e5873294f68274e6c2c4f69254b61214264234d6523434f1645621a50 *6b204f702c5372345a733353763462772c586e29516b255b7831506b25607d2d5f72284c6a2b4f *6a21516c28436a2b52752b5c70244c6a204d6c2551681f4e61264a6928506b314e6b225a6b2257 *762b5676265470285c7028546d2c5d6f26627024607b265a77265d762764802e677d3767783460 *7c3065813261782b6a8740617e3b55753264813a607c3761793c63772c647b316b8133657d2e65 *7e2f587b376082376c81346a7d2a627e3a597c2f4f632a527539506c2f4e6e2d4c6c2c5365244d *69283b5c20375d2646672e3b5d21384f1f394d1d4d5f1c4863243f6023455b22435e24445d2446 *61214a67255268275c6f2e5c6c2a4f652852672b4f642d536b34556d2b59712d4f5f29646d268a *9966cbd5d4c3cdcdbbc3c33b49232c401a2231131e301e28402322331826401927361428441a23 *461c253812203c1429491f23421b263f141f330b31480f384b152748102d4c1a2a40132c431825 *431f2d4f2036541b304510263f18334d18395a263b602938552649642d4e672a4b63204c652249 *631e4161274060264160284662264a581d445d2033531c4856254666234257223a5b243e562345 *5e21435f285168254c631e525f1d406423496126526d2e5b72334b6a324861244d6c244153173f *4f1d2f4810314c1442521e4556244055284d69253e561a4b62274c6226445c213e5322556b354f *6a29465d2444682e495f22546a2e4c6a2e546b2b46601f496121496528476522436726506c2e56 *702a495c284d6c344b6d31466731476c2e526a304a67294c692c4d6a2f5a793d536c1f56762d5d *7632506d2c5d752a4e69254c69274d632c4a6321526629526d33536f285069254e69243d5c2546 *632b4a601e4a6622476125495d284a65254568264c6d27415c2146621e4e6c2a4c6d2d4e6d2c40 *6321435e1e46641f4262214260214969294d6521576c274c661e4c612343611d4b67214e672b4d *6c2c5a6a274d69284d6c2a4e6a2752621f4c64264d6b2646611d516d284f69215676314d6a2459 *6f2b5771274f6f254c661f4d6a254b6f2f4e6120495e214f671f5b762a5e7a2f526e265e752d57 *6e2451692a4f67255567205969265269254b69275c70274c68244c6c22587533637f2d607b275b *772a5a772c59762c5268274d732b536d234d68295668255370335d6f26445f16486f2c4b652543 *65233d561b3a4b15455e1d456220405d1f476225465e1c4a611f5a77315d733057722649632247 *63214666213d60204a68224b6624536a234463204b651e465c1f425f1f465a1d4c69284b66284a *68214d6e2452651f4e65205873274a681e51671f496d254c70296073335e742c5e742b526c2757 *6e2a526c2352662248601e506021606a265f6e28657a31596d2760792c5c6620556827516c2b52 *722f4e6824546f235e75276176296275254c6a2255732859772f576e324e65274c66266372275c *73315c6e2f52712a566f28536b2c5b6f325b743357792d556f2b57712c5576336083415b7b3c5e *7b39697e3a667d3f596c2f5f752e6078356079385773275c722752732f5a70265f782c5b77305a *752e5f772a608034647c34647e36536e2d5a78315f722462752759742c526f2d53712854692e51 *712d516d275b7a3565772f63762e677927506d20536c255a71275872305c79355f752b57692256 *70325c723058702c4f6b245773275b732f6981336075275c772e4e631f4a601d456c2757793550 *692a5c743266773264742b5569245a722760752b627a315b7930667e37627c39647c3759712757 *6c27526a225e74305d722b637d33687d3e6b81406e86396a802d758334566b2758752963792e4d *65234d6b304b682e516a275a702363722d58702b57733252712e6079325a7b3a5d772a5c772b60 *792a63762956773058783364793a74853a647b37647c3a637e33657e2e5f77315c742d5f79325e *762a627d305c7b2b52762b5e7a2e677e3b65803e60783962793055722d66853e6283406080325d *72265c6c2862742f62772a63762c5a762f5a6f205f7d2a69873c68823065803366793356722f5f *7930687e316b7c3359792f4d6d215f762b56722f4d7225597628557525577f2f5a7d3156722d56 *71265970255d7a2b5a782c5e7828647525526f235875244a6b21536a245868205a6a24516b214e *6926617026576e22495d1c4d66215169284d641e4e6c2a48642145561744601a446521476b2246 *601e4964255a752d52722d536f2f52722a587d395a7531596d28647e355c73305a722e56703260 *80415a752f61803c57783656782f5a7b30526e2f5078344864224667224f65214a6a225672275b *732d5a7028566e2c5667244f6622516a224e65265975314c6e2a4b6b23576f2454692543602050 *6c24486b2551662047672155742e466623405c1a526f25526f2c4a60254761205061225d772d4e *6d2a586e224d6d28596c21576e28526c32506a23526f2b4c6a294a6d2b536a2351692a51611f53 *6c264a6a21536d264561244e68294d641e4b6725495a18415f1a4d641d3e5c1d47602247672347 *651e4b6c2e4f6d27566c244f63214c5f1c4c6d233d5f20435a1a476923466b2843611d586f2352 *6a27546d2044661e4d6a29436723506a295476284f70245f661e5b75296277285b792c5a772a55 *7236617d3a5d7f304d6d2b5b772c58742f537631576e294b732e456e2d486829516e255f752754 *6826576c2457702c57702952722b506a2c4f6e3543692a536625576a284d6d354a6925506e314a *66334f6d35475f25526e2a5d733256742e4f6630486325405b234a66284d692e506422576d2447 *5d24455d1e43672a4b6c29516a2853632d4b61264b5d2452692161722d4d662c526f2f53703450 *71337d9067c9d4d4c3ceccbac5c335502325482123411c27421b2e4a1b273e1d254018233f0f23 *3e18253e152b48232e471a2d4d1d264414223f122c44172a440f2d4c233b571d374d21354e1a31 *451231491036511b3b5f22374e1936511e4d6b304d6b2f4e6c38526e2d475d2249652e5b6c2954 *712c4565274d6b2c455f264d6b294f632045601f3b5e1f3c652d4b622343501b4b5d1d3e581e47 *5b2036531c4560234f6c32435a20516a23485e214b65284a6c2f5a6d2f5069254d6228475e2d40 *5f294864284c66274b6524425f224a6826415f20425b254769313e5822455c22405b1f3e5d2545 *63244560254d662b4b5e274f6931466530496a344e6c274f6928516d2948642348662848622652 *6926546e2d4a6826547532506b2e58702e607a3457763555722e4b6625486b2e4c6a24566c2043 *6c3552692e5270334d62224f6a2b4c6e3044672d5a752d52752d57722c536c2750672257732b54 *712a4e692a45622d4e6e27536e24516d26546f2759712a516d294f6825506928506b294a69224e *713156772a42621d4a651e4a5d223f5e2047622244652249702d466425485f214c64224f6c283d *5f1f3c5c1d4665244c621c4d73334c66233e5c1f4861264f6626536c3057732a516b204f721f49 *6622456525546e2452742752742f52732c4d6d265e7e325e7b2a4f702a506a275169265f7a3558 *77335b7f2f6183445b7e355c772e5c7523607e335871275d6c2453682564732b526e284c712652 *75254e5f24526c26576d26516e2b4a6a21476e234c69265370274c601c4a6426506a245b692c4c *631f456323435e2049651e4f6f264e60204c69324d6b26647d31536e2e55782e4b6b2e4e742f57 *7932486320496c2a4e6621516b2b5571325a762e4f732c4e75294b651f5066234d6c2758732f5f *7b305b7e3263813f6f884263812e6782325c762c5a6d254966204f6520647932618236677e335f *803060843e5e853f648038657e3061792a5e76266a813e718a416883315a782b5c792a516e2f59 *6b27657a2f5d752e58772d5370295878315976324f6c2c54732c51702b4963213c5d2543602c50 *742f4c6c2a57692a5b732d5b76274e692d6685435d7d3650722a50702853793555732c59792b5b *782d647f3d50692758793e58732e57783163752861792c5c6c255567235c6a2365843e56722652 *70275e77285b6e26556d2b4d6a254a67234c5e1e4860234b682253753551712a57722c59732e5d *732e5c782e667b305b7c2d628035647b2e6e7f2e657f3b64792f59722c5e792c61782e58782c57 *762858762c5c742757722b58752e5b70276981345d7b276274275c772c5b752a50691e5a752a58 *753065762e697c31717f2e5d772a6a7f376e7b34677c355c772b5775345d762b5a753062752763 *7f3b5d78295b76246a752d596c2865752e697b306d83416686406e843471803c697b396e813263 *7d2c6878275f75326e7e3165813a5c722e60762b5d742e4f6b225971236575305f72245a732757 *702a57722f5c7a305c742e5e752f5c79295c75335f75275f742d5f752e5f732664762a5c7b3565 *762d698133657d2f5c823557782e5a75265b733064782c687925627b2c627c316173265f7a2f55 *6b285f7b3960742f647931617d385a78275f7e324d6828586a236373275d7333617b2a4c6b214d *6920577325647e2e697c2e607428436520517224446a24506e235c752e507025516d26516d235d *782f55752f5e763366802d5c792b61732658742853702057772c647b2b55732f667e2e5c782f56 *75275a72215874255a76285c74324e64265673395879335875235b79244f69205b72234d661e50 *6b2a576d28586a2559752660782d5a78245d79275971245a7a37526f2952732c5f742b54723257 *71274f73274d671e5873294a5c1d48662e415b20496525365a213d651f3c5a1b465f234c5f2452 *5f24445a223d6220486524496c2547661c516d214f6c27485f1e46612839591f536f3539532043 *65224d692a4867275066234962254464244360203a5c244054184a611649691e43641d45601a4e *69254c5a154c691e4b65224d641f526d214f6a2b415c1e4d631b4c682548621d4267254361294b *6624426a254c60204861224d641b59682152691e526f274a64244c611e53783645622347651e37 *5a1d5465234f70315c773650702c4d69224e68185b701d5a70214c6c294f67215370304e722d5a *66235171295772235e752b5f7f39576d294a642358712a5b722c5f7a2b5f7f30667a2b5c772e62 *7934657c30637f365975315073325880384f6d27506c234c6d2c4f6a2c556a2c526f2a52703654 *71274f70294f6b22516b26506a234e6428526b264f6c2c4e6c2a4d6e2f4e6f284d692b4f6a2357 *6c2f4564243c5a2b495d23526c324a71335270264d64224f652552661e57691e53691e4c69284d *68294162244a65294864234f63244b63254d631f445b1f455f214059274965275169265165254f *672a50682b769765c9d4d2c4cbccbac3c1354c2930452a344b24314f2535522137572a3545152c *391126381213291a27421b24391022390c3648132c4518384d29334b1847612a3d522340562545 *5e234660234a672b4d672c576b374f6627466328506529576d334965254b672435521d3e502455 *6626516e264f68284d662b4d65284c6325496028455718445f1d445d2149591f4e672657722d49 *6f2e4f6723435b224c6425536524445e1d4960253f4e2042612a47612b43541b4f672750652047 *5f213a4d2a4f67323f5e29435d2743541a3c5019475a1b405f293e5c243e5f1c3d581e3d571a41 *5b24556a21556a294f6c254b6c2f51702d4760244f672b536c30546d305072324a622a476c3553 *722c5c7835506e284c6128596c2f4d60234e6a274b68284864204262293f5322445f254760274b *5f264c67244a6b2d4c6a234866274f7537466a334e6d315a74355c70345677375c7f40607d2d61 *7d325a742e596b255873325972305d7a395c7a3059752f5f7328556e24526620506422526c2750 *692a5b6c27617a2f627a305c7b31556b27627b2c607a33687b305a7e3b5f6e34507228516f214f *691e3f5c18485f1a576d225165245c6f2e5774364c71285a6c26536c204d6422526a2144631e4d *5f22546c264b6527587127466a28456621455d1d486223506526627529526d2852632056762e5b *7029576f24556c29536e2960792f566f264e722d4d70254b6c215067204f6c245b6f2b5a6e2e52 *6823536a2652712b4b6c26576b2550722748602552682e536d2a576a2b67792d5e7d386781394d *7630516e2b67813e5875284c63174b68205371244e69264e6822517028556c2b4d652349682755 *6d2a4e682b435e21516a244e6f27597c3c5f79316477275c762b5d73275e77375877315075315b *73284f762b5b783458732a69833551732d5e7726667e2c5671275272335c7326506c2959732e57 *73305c6d255d6b2756773150722e4f6c216483316a822e5a77255f6d25627c325e7e365f81355f *7e365f7729617d2e566f294e64245a6f2e466227455d224660264c6b274a65204c6a2b576b2f56 *68344d6932435f264465284f6a2c516c275369255d7530576b2a64813b677a335a783158733251 *70305475215a793451702a5971295b6d255d7c305b78305f7237768a4067833e5978255e793258 *722d6078305d7b33567e355a7a33526f27546f2856702c5575295e793256772d526f2d4b692a57 *6f2d5c752a667c36687c30677e2f6c8235617c31627e35637e38547b42597c3a637b315f7b2d52 *722a5b772b64783257753657773260772a5d7b345873224d702657661d595f156576275a7c3369 *7c32697d2c73802d627c2973863b667e36657a3b5e7c3b6b81385f762a617929657c2f5f7a2f5c *792c6e7527677c326b7f346475285a773d73813969823b7a8b3c728b3d738038667a39617a2d64 *762c637e306279266382356d7d335d6c275c702c647b2d556e265d762f69813263792a6a76215b *6d245b6e234f64235770284f65235272335a6c205773274f6b266173226372245872275974276c *7b3767793a6076295e7c33617e32698137667a32617735667c3662772c536f2b5c74276a803562 *7f335f772c7684305e752953752f5e71275d6c22617a2e6075295c7c39617530546a285a743248 *672a4e63255d72266680386a7a2d5870275f732b5c722d597333546923536a295b7224637d2f54 *7b295a6c225a742856732c537634517426596f28576e255a772e547b325276385970295a753355 *6a284f6b245875354c6e2156742653752d5d72255b7026586c2858762f4b6724536a2053762456 *792f5a833455752c5c792d5f7b2c597c2b507724556e2651672246661f52651f5d782c596f2361 *7521607625647b2c5e762a5770284c6c2242571c435b195b742e44581f536d2946641c4f6d2d53 *6a244967244a69244c64234c64224a60244d6426536a28566e254563214866224a65215a6d2e4e *5f22536521506c2955692750773e4c6b2c527028516c225069255a7026617d2e546e264d752748 *691e4d691e4c6d2b51722a6474275e762c516f2b53762d566f284c6a284568294665254766284d *652c4562224961224d6b244c6b2a4a70295e7d2d596f2b617a376078326878345b80405c7c365c *7b2d5878306a8037687e3c6f853f6881385c6d2a5b712f6581396280405b7229647627677d3c62 *7531657a305d803c5c722e687f325c7731577a2d627c316a7d3778873b6f81376f8a4275884368 *803b637c375a7227576d275f762b5d77286077324c6d2d4a682945652a506e284f651e49652051 *67224b67264f6c2b526924506c2d607a2f5b732d496722485f1c566a254c662845692a4f6a2c4f *68294a6928516a2149561e5361244c6a2a4b642c566d2a4d6a2953672c59722d57732f607b2e65 *712d606f2e576529536b2d516c36556c304f6425597333556f33516a2c546d2d56733254702c5d *7230517236566c2f809769c9d3d1c1cbccb8c2be4352253b562935481f39562a47582e2d49242d *461d344b1d2847132943142a481c2a41182c43152c48214356263753273c5a224c67204966254b *6a27486a33526a324f6930546e32526828536e254b6b27526c2c546f33596c355a702f536b304b *6132627935516c29536c2c546f31495f244957284356263a4b20445b253b561c445f2238561d48 *58213d481d4a5c1c536b3a49652b3e5f2653691e526a274f6726465c23475b1d3a521d48642449 *612341561d374f1d495f2b4c6827506b2a42591e495f2248652f43672f3d622743581e4163253c *5c224a692d526e384b662a486931486b30456225486426435c2149662d4a672657703755723653 *6d2e466c33475f23526a2d4d6b2a53722f557840566e2a5977384b66264261264360234e69284f *6f324f6d26506d2b49672f4f6c2d436024576d29476d2953702c4f74335f7832667c345b752b57 *76345d7d3f5b762a587a30587b30526c27507229647a325a7635557132536b2b4a601b4767224c *6121516820536923576e214c69216377295f7d335472286478295d773066792f68803158763560 *81385f813252783b5c7c3659752b5370264b6f2c50681b42621d506f2e5075284d6d275a753060 *762a50681d5672254e6c2754722452691e506824546f2e57682451723056752d5e7a2a526c244b *621f55712b4961204d66204968234c6a2553762d516b254f6c2748662c51762a5e783461793164 *823c627a2d6589425d7a34617f3d5f7e335c77325d7d3053772e5b742c6a843b6e833a66793b65 *7b2d648034637d326c813c577c325779395b7e34637f3c5f763d587235506422425e2a5068274e *69255772285871315872295e722c5f7d305c7c325c762d5b7a3d66803e617f2d5c7b35647f3758 *6f27587227576a275d762c5f7d4059792d5b6f2464792c687e3b5e752f5771315a742958763352 *6c275472275b75275a72205d6c2558752e4661265775335b79355c7534627b30667c346a7f2e65 *7b2f566f25546f295b6e28516e36587b3e59742e5e742a62772c536c2a526c28536724516c2e4d *6a2e5060265d7f3c58793559752c4f692d5d713353612652693652672457763468853f5976325a *782d647c3d5979334f6c264760245a752f576e29566921526f2b54712c5b7831586f285a753058 *732b58752a617f35537126596e264e661f4e6a263f5f1f48631f516e2a47682341601a5069254a *62204b5e225a692158692258712559752f5d742d6a7d2c6074275e70255468205367225a6b244f *712e5c73325973295b78316075215e782a5b74255f77265a77335270305e752c667f385e7e3564 *752e5c78296480315b7226687e3e70853c648337708b3b71873b74893a64772b5c7326627c345d *7a355e732f62752960792d5f74205b7b2a60792d6a7b34737d2f7982356c85386a863a6b8b3f5c *7d3d60752c546d2359762a59733067792b5f723059732a6074316472265d76295f772d5f752a64 *762b607b2f5c753055762a5a742f5b73265b6821637c2b6c7c2e677c365c7a2f627b2c5972215e *7a2c5e782f5c7a325e722862773659793056702c56712e4d6a2a55772e5f712356702b55702b5f *762d627c326a792f5d78275f78285072324d70255370245578294f7538516c2a5d6c2758622058 *7130567232465e1a556c2c516b265264245574304e73235c7c264d74295b7526506d2657702653 *6f28547a2d5775335b752b4f6e2a4d6c1f5d75245971265b763467813a5a772f4f732f567e3e4c *752d5b783954732b5a7b3259732d5e6d265975275d792c587a3456732a557328526c2353732d62 *792d5e7b2b59792856742f5c762866833c64812f617c2e5c762f627f305a7c3255772a61853e6a *873d718a3d67822e6f893a6b873f6782395c7e3159742d59763762803854752f5e772e5e732855 *703059742a517129546e2657743251752b65782a637f355c773457712e4e702b587b32617d365f *69296380345a75325c80345170275f7933537231576d255b78324e6b2a4862224a6c2c586f2661 *752a6076304d6c274e6a27627d3a6a7d2e5d8334608134627f31627933506c2a466829506e2a59 *702c5071304b6b284468224964234b6b2356722e4d6721576a20667c365a762d637b3163792d60 *7b3060772b607b3068833168823867833c607e2e66792b657e346d823772812d6883416f863f6a *85435f7e3967854064803b668434687f2e6b81316180326875276579386d873f6786436c883f70 *853b6e813e667d3e687c3b57733c576a2d526a2962722551712e58732f556f2f5a783851713259 *6e2f4c70364e692a6178275d752d5e762c547533496f39536e34536d324d6825596a22586f2d56 *722a5b6f2b616c276372345e7936587d4264743262792a58732e63792a63722e6a7f395f723a6b *7c345f7039687a32637e32627d416580475a7638607b35607c3b667c46687f3f5e6d2a5e702e62 *79355e703167793b5b773f8c9f73cad4d5bfcbcbb6c3bd4c64363b57303a542a3a512949642c3b *5021475f282b4b14264120264a1d3551263e582840572540531d4f63254860244d6d2e4a5f2a52 *67294c66235c6d305d682e50632451652a486426516c27587138566d2c50692c54642950622560 *722f566b2b4461264d631e436020435a213f60244c6d314360213e5216394a1c3f5b22395b1e40 *5d26415e264254204b683549652c4c6825455f274a64255566214a6a304b6d2b4e6c274b64334e *69284b6c2d4765214365284b682b49692f446933476e313b5a203b571d48561b3b551e40602645 *6c2f5573305571315874334d632c4f6d2c4d6724476a234663274f733b506b2948682e4c6e3747 *62225878404765274b632e435f28334819405c2b42642a566f355c702f4e6c28415d1c40561f4d *6a254a69224053164864204c692c405e224c6624405c1f4664284468274d6b2c608041567b2f51 *6f264d6b1d49601f4e68245a6a22526f2c4e6f294e6a284965264b6d244d6920506f234e6f264d *6b285f7a2c5d782e577529627f335f7d30556f264d661f5972244d69225c6f2460813a4f743159 *783659793058772e58732a51752d597b3054752c537a314467294e7831597e2f586e224c732865 *7e335c77264d6f2a51702e5b7b34557737506c235370254f7022557b30516c1f4f68265275295d *712a5b7126536922506e3048621f5776335678385875336581385f7e33587529577933597b2b60 *803660762f5c803b627d2e6684405f803066873a5a7a2a657e355880466c893f65843b63782c6c *813a5d7933608039607930647e31566a255375325b772e697f365e7631617e325e7827607d3e5f *803e63783a6179295d7a2f587b3a57743358782c5376276179355f732b6079356380365e762852 *75295a81385e7a2e546b2657753b587734526a24506e225c75295c7533587a305578305a7a2f63 *7f3c61803e5f722853772958762f55732c5c7b335b7b37546823506a2540601d475d1a566a2355 *68214b641f4d5f195366214f66295e74305968215a732f597326667d2f637d3c6579315c74284a *63224964204b6126476421455d1e5071284d6c295a762d607b314d65264d7135597a3658783253 *692549652251692654752b536b23566d2a5e6f2259742c4b6c2a4e722b5271275876304f742751 *6b25607927527128587f3c5d78365c76334e6c294d6c2951702e4f6e26506b2652742755772256 *7323516b2055752c57722d5d752d557026667b2c51732b54772f5d7b2b5e7d2b50752d56743057 *7322576d234e6c2a52773156782a56772f607a2c607b2b5878335f7829607c276080295773234f *682058762a4d732b546a254c6a29526c2056702059762666823d68833d6a8a3d6781366074295b *722a556b1b5271294c67205a782c5a71255372295e7834647f366882365d7c2665812b64803260 *77275b74275f7931526d2c4d67234b69265d78285b70285b6d215b76265973235c7528596f2c5e *702a5f81345a73235f772e58752e59742d4d6d274d6b2360762b6d7f316a7e3b62772354722348 *6d264e6e275a7c335671284b6b2b5c752b536c244f6d23455f1d47602459722855732d5e792c62 *793a5f722661772c5f732a5671264f69215072285070334f6d385d782e5b782451752c43631e63 *7c3456752b446524536e3152752d5c7937567837557b3857793157792f546e255878314c732f4e *722f5672275a7c295e7c2b617c325b7a385e7e36517a36597935597a38617f305d7f325e7e365b *7f3a597e3a5e833f5e7e365b772d5d7d2d6082325c7c315f732852732b5d7e346381325b7e3960 *844063823762823354752c4c722d567b346081355171234e712851772a55792f52782d516b2651 *722a6285325b80315f7e2d587c395c7d3858763e5f7d2d63792d5f7c2e698037637e395f7b2a62 *7d325278375a792d65802f5c773464772a637b2c5a7a2c577636607d31637d3060843562813470 *82386d8033637e3965863d64823b617a326a8c406481366986396e84355c7a285376295c7b2f4f *6f225b793362772c4b731d53782c627f396a812f58783c4f6927526d2b546b2855722b5e7d2659 *71265676265c6d28526c295668285e712e617f385b75245876295774345a742b6781345b7d345f *7b326582386d833f6e893c6483376d82356881306a83357b8b426e88436c8a4270893b69853f66 *7f426a80376c8a406c833d6a7d346480346e85426a854866833a6c8a406d85376c8443637e3565 *823c678038657f365b7a3562712765762c60732a59712a55702b5c7229527233536d325670314e *682c556d2650712e50702f516f2a476528526d2c637d31597032577328515f21506a22536f3355 *69285f6f335f732d62783175822d6a7939697e46617e3955753454752e55732b506b255272315e *7a3756782d526f2a606f2e63773666792d647a2c627a3365752d667d31637e3a67803d6a813b6a *7d376a7f3763823e617433657f327d9d72c9d5d3c2cbc9b7c2bb5470313b4f1f37521739491942 *59214e5724566e3d425e24466026394c183b4e1f424d18415b233b5724426022475a204d662b50 *65254e5b1f435925496527546f334a6427425419415a1e49682142601d4a5f225a6b285e6e2b5a *6b255f73365a74295568244e6421415a1e415d23445b1e486226485a23415c224c682a4d6c244f *64184764224c5d22405018425322435716465a1942521d4562234f621f4e60264b5c204a61254c *5c1f47622441551c475c194a65224f642757642050622046621e4967253c591d3c5e234560244b *5f2148602254651e5260234a67285271324c682a4f6a234e6723516520516824424e1740501a36 *54183450164d754540581c30440c425c203c53174a5c1e486121556b23526d28526c264a682646 *62254c67204f6022415b1d3f511e425a1e466027496c2a435a1f47661d49601f4f5d1d4a5a1e45 *591b4c57225d6c2a556d2859722f5a6b1f526b215a6c204e621f536e29567631546b2b506b2956 *79315d8031547028627d325c742c5a7a2c5f7a2c4f6e2c516e2a53752b567526405a13415c175c *6821587527517330536f2c5d7e3c5f813b5976234a5c1a4d6a2157772f52742d51752647692357 *743b5b762f5d7026596f205069215977335b76275779325273305c7e344e792f5b752b55753363 *762d5e79385277345b7a3865823a647d2d5f772c62782b607c38627d3b5e813b647d3265822f57 *7c365c7e3a627e2e5e75216281325f772a5e7327697b2f657128677c316f89396a7923667e306e *86426b85355d7a2a6a813a6a854368803f70873e69853171873c6c873d758a3d6a7c3662783a65 *792c6d7e3166792c667b266a8039627a316b823869803662752c687732607b326a864065833f5b *762c5773266377285f712252752d49672c496d2f4d68264e6322485e1d4863254e6f2e5e792e48 *6d2757763a4f6d2e507128506e26596a22596b1e47602255772d586f244f672a5b72284d6a215c *71225b6b244d66224f641e4d69234f6a23617934677b2f5a7a2c5f7b3367804068762c5e73285a *7428596d2660782a5f71265f6f295a73235c6f21656b1e5b73265467224a652058762857752649 *601c4d6821506820516a284c7331527232497031556c1f4c6d22516c21546b1e54651f54671f53 *6f2e5e71275d792b5d76275e7829687b25647b316578325e792a5775295a752a5b782e5e7f375e *7a2859792b546521586d26547026586d234e6d244d692250621b5c6d25576f204c5d1d4f681d4a *691e556f274863214b73233f641a587b2f52691e52691f536f22546d22536d204369245a742e55 *751e5c7123576e1f536a234262204c692b5768225d712e5b742a5268255d68215870255c772a5d *78324e611c536922576a254c712755691d52641f546d24596d234c68224f68244e651f506a2048 *691c4c6520576a1f58662052621e4d6a1e596d2465722565782b5e7a235f77245a70265b732e5b *752d5b73265c74275b76225174285e782d5d7c2f5d75275d732860762c5b6c2652722a57732850 *702654742b59772b60792c5a773049682453691d526f21596f245774265d792f5e73245d75255e *77295077275c712b667b2f64802d667f2b6a7e2e737e2356661c5771235e6921597c2e59711f63 *813a607e30687b2a5872235c6c265b762c5e712a63732859752b5c752b5a7f2e677d3458753361 *742a5b763157723065813b627d326c863f657e2d5c7b2f62762d5e762c5e78325e7c2d697f3262 *8030627c295a7324526b2160792d586f2760712262792e5c7b39607e2c60792d617b315d70225b *78305f78294e69245d7a315f772a6073315f7328587b275d7a345d762459732461772f62813a5b *803556762e60802b617c2f637b2b667e35607c3561772c63792a65833267863d6e8944637a2d60 *782c5f7a37697f30637e3a6481366d8643688237667e2d657f346e823b647d2f6c823a6b85366d *822d667d355a782b5f7d335f762a6e8134657e27677e2d6079336b79356b7d2e6982326d844674 *863a637c29647d306b84356b7d3368844471874171863763823b6e812d6a8038627d3d5577395c *773657743356732754762556742a57733358742e56772b687d2760783161752f617c2e5c7b2d66 *8032627e2d667b35687b34617b3365873c6e8b37758e4a7e90476d843a70822d6b843e53742d6a *803d5e7e4061782f6883316c7b30758635698040677c34677d2c5f762e6c843f5e8040666f2853 *7d41677d326e8037667a2c5e71315a712a6177335f772f556b275a75255c7c36697b325c7d3b4e *702c5e7735627c3d5b742e536d22617d2f5e752c697b2c5f7c2c65782f6472346c8139667e2964 *7c325b702460702557702a5b70255e722a6277295c6d305b7126556e2a656e215d792a596a294b *6a2a4e69274861224d64284450155369255f6c2a6271295c712d5c77305c7032586a2b5d6e265d *742d5c7327677e30687f38586f32637235809567c9d4d2c1c9c9b6c0bb4e623341572757662d4f *6c2d5067324f602759642e526d3d4d65304b60264f6e35536f39465e21435d2a45541c49581e40 *5a2d4c5e2c41551f42632352612944531f495e2f4f672b45612b4561254a6825435f234c612242 *521649591e4f672a536d24516a23435e27465b264c672b4c66214f63295266284f692b4d64314d *67254b60254e642b455e2b456027465f21485f33475c214762244f622b50652a556c2d516a2e51 *6626455d274a69324c632e4d642e4b612543642b52622b4965324a6a334a62244d64294a5f284f *6528496220466329466b274e66254f692d5470334d6a2950692a5d6b2d5470324e692a47602c4c *652640591d3b4e164353234f65284b6023445d27475e224262294a6a2f496326566e28506c2950 *682947682c4b652a4b69344f642a5c702d556f295465284f5b1e475b21476525476a30566a285c *703953682e576d33587030607a406e844555743d516528556e30566d20546e2b597b305a7b3358 *6c2e4c6d2b486830546d2d5f7f3a5674306480346182376077295e7d3b68753150702d5c6b234c *682850652358722d496426506b245475294f73274f6c28506e334c6522446425526c26586e2649 *69265378325d793a597229456e2b4967265874285c7e3b5f7a305b742b4d681e53702b58772e5d *772d5e7930677a2e62833c5b722b556e25516a24556c29516f2c60793a596c285f6c2969782b6c *8235667e32677e346c7f316a7e366d7b316b862d6d802c6b82426782445e7d3e62813c617d3a63 *6d2d55622269742a6f823c637b2d62782e668132627936667e3d6f843d6c843d71833b78833d72 *8232647f2f697e3f6e803a6a803b78863a6e8133738436758334677c33607d3c6c823d65833e5c *77335971324f6c2b527429577628567b30597b364e6e2f4f67264867294a65274e72275773255d *74304f682d596a2658732d5972325b6d2b4c723d4f6e2b556d285570364a6b284f64204c67254e *692b4c6d32597d36527126526926435f1e44501646611e4c63255069225f74315764265b682763 *702862763260742b596f2e5372315b753c5d6a27546f2a5f782a63782f546c2a526721667d3554 *793156742a4e632056662357682050652e4c64234d67285772335f752a5d7127476729586b2954 *6c255768205c732c55712b516425566c235e7327546d205670284c6721516d254f6b2b5b742c5f *752c4f6a27536a26576e2049651e4d6c27607a354d6a28476528476524567229476827475e1a48 *6a214c67204c6b245775264a671e4a58174b571953712a546d2857692361752e586e22425f1c4c *69274964245c75265b70215472274f6d24516b2a5c73235d7c31516c264566215d742859792e55 *762c577630516a2558712762762e5f752951732e586e255971275a76255b712960742a5371265d *7425667a2e5a76335f7b2e5a752d5e74285a6d285c6d2e6c78345c723061712e66793061762b5f *7e3b5f77275a762e5d73305b6f295f742a63793b60772f657b2e576d284e551c5369215470255d *7225526f254f6e254e6e28627a315c7b2c5d70235f78305e79355a79335a752f677f395d75275b *72285b762d566e275f772c687e3760813a6979246582396e812e6f84316c7e2e6a8239677e396e *81386c7c2f667d3c71823a7d8c3c728b5167782d5d732c6e7927677f3b5e81405f79416278335b *703059792e6b7f2f62762e6c7d2867752a667f396a7c2e5f77355d7a3465812e6b7c3770863874 *8b446e873f6d824060783b667d38647a3c617a3168803b627f345e78315d7d335773295872294e *6b285a79285d7a3462762b5671255d732a6475256d833e647d3d607d3968813d657f3b657f3a6a *86426a803c6e87406f8a4a64782c68813c6d843b657a356c7a2d63772d68792d637e3d697f376d *843e71843c607e2f647e2f5878326781376f8741697c347086427692496e894771873c75843a75 *803b6b894268893e69813e6d85446c833f72853c667e31718342687b3a6f823a6c883f6e8a4169 *8135728c4069853e6a802e79843f6b7f2e69813d70813e6a803f6d814269864467833d6375346a *7a305e74305a6b275972325372314f6e2e586f34596e2f67742a637329606e255e7e3959782f55 *6f2f5a6f27677b30767d37597230586e33687b32677c33647e37627b356775326377386478365a *7c345e762e68792c5f7c3d627231657d32667e37627f3c6c7b2d6e813f65782b507a34526a2856 *6d2e576d2363732d63742b5f752e657a2d576a284d66274f6a2b526a22526d2c5e752c6d782f64 *76355a6c285f732d61782e657f3767803d68793c64793a60742e5e7029686f34607232656d2760 *763266833d57783c5e722e62723562733a60762d5f772e5475315e742f4a67304a651f486a2459 *702e53682649652d49672b4865264e5f26546e2b4d6932526a2e5f6d285b6c315e7434596d335c *763362733065753b637833627e36637e376c84418c9f72c9d5d3c1c9cab5c0b653643250673152 *6d325365305b5f22525f2c6e753662662b4f60234d64285c6d33576c3850682a4d6d2d48692651 *712b496a2d4551224768304b68333353253653264266314c67284f61254a622247622546612744 *652f49622a4357214e6b314b63294860244b6023495c203b54203a5520415d2a4863264a672554 *6f2a45672e52692e5273334c653948662f4763334d61244e6b305269305060294862294b6e3659 *6b294c642c4863274861234d65284f672546541c43642541602f4d6a2e46632d4e6c325573334e *69294d6d314d68294d69294461224b6225516e33516f33517029546b2a516c3143652946602844 *5b21486529496633526a2b5065284b6a3e566b2a486227466627546d3156703452773659752e44 *631d4a6823455f26465d2c47652d4f6b2f4e6f315f752e5d7328617c376676364c6a364f702e4c *692e62752f4c6629536d2b51702e4f671f496628415e1e4f6c37607d404e6e2d5e82414a6b294a *6d304f712b516a233e60254361224667274d6e285070295b7a355574335875334b6a325d6d2652 *763b506b2953752c526a305c6f2e547227426d214a6e274c682c476e364b6629576a2555782a56 *732e5b742e5378305b7b295775324f702b4b6f2653702f5474305976214e742b51752d53702f55 *72335e712861742b557124506f2b5e7f3b5d762d5b79345c763c5073365a722e607b315e793060 *7d2f60843b6080386e824069833b6a85426581356e883a67802c5e83385e7e33657c2f627d3367 *7f33687f326b803a758c45648746516a225c75345f792d63803b5f82436a82386b86396b823766 *7e33637e34708436667e305d7a2b5a6d224d6721526d2b56722b627d336687426a7f386c863965 *7c38657c325e7b3d647f3e527b3c57742b5e7d3b657e3656772f53743b486b2f49672951753448 *682c3f5824405f203e561c4a551a3f551e4a5f1c3a5f1e406425446023476928436a214a652434 *5525425e2843652642551a3e5a1c4e6422476823566c21536b24577834546b254d611f445c1f4c *6d24475b1f404b10495d17546321586e2b616f2d566b2153752e59783d5373285d732c656f2a62 *752d566a265063254a68244c641e5f7229586d275568225c752d60793e5d732c5c7a32536e2755 *6b1d516c2b5e772d557528486d265d732f5f7533607a2e55732b5b7731607b35627d2f536f2654 *6924526f235170274d6d2c4562214c69284a66286985414e6c255571235d77295d763156713152 *69265c792c6279335d7e31567a2d506f245c7a33587b3255763053742f5e792f60762b5f762560 *7c295c7e32547531617d2c61792954762d59782a4f72295f78295d752c5571254f6d265a7a2e5b *7c2e52752e56702c5272285e7b2a667c275d742456732a59752a52722a5c8032638038657b3064 *7a2a6377296578265a782b627b2d5b722f59722a536a2a526a22586c215769244c531566722661 *782a5e783a7083406581415f702a51712b567225607b3459792c607c325c7b2f59722b58712b60 *7a34607b31607a3756772b587b3551722b556f285c752f5a73235d6d2460792a5f722757773061 *7a2c607d3859793066813a667f326a852f6a8134697b2f75863b6d813c6d84387584426e843b6a *82396d7c2e6e7e2a5f792d6587426c7b387582346a7f3b72863e798b496a81436d853e74874080 *8c43617d415f7939627f36637f3a67854665813d6e88456c7d31687c32798640718a3e708c4b6d *87456e844570883b6982336c7f306b853e6183435e7d365d7d366182365e7d30678844607e3a5f *78325a7d2e50722653712c5e7a3c5f7a265d8035637e2a6c853b5d823a68833d70863c6f853d67 *863d6a86336d86406d863d78874069843f668339607a34678033647f3565823068883d5d773662 *782f5f793368843968853b6281305f7f3965813c647d3c677f3a72863c6e883f6f86456b854364 *7e32697a2f718b407387346a7e3a6a782a6179356f833d7487427c8e43758739687f2d6373325b *7a3268803363792e5f80336e874368853a5f7d2c61813a5f76306c813f6c7c325b7a3c63732d63 *7c3c5c7b365d75285f7a30536e2e4e6e3155712e5c733052762b526f28577327627b3263802e65 *7c34627433697d3b5e78335e782e5f792d6180375d813f5f77345f7733506e386d7f3656763c58 *72254d6c284b66225e7930677d37717d316c793b607a3b5870315e6f27657a3263782b5e753152 *6d30607931607d2f697e365f74335c722c5976304e75395876364f6e2d5b712f526f345c752e5c *772b67753a6a803d607d385f7a3257702a5f743251702e4f6c314c6a2b52742f5b7c3c6a7d3459 *743859732f5e79325b743258722d60792f4970324e702c5172295d6f265769265673364c672c55 *752f4b703f48682d4162234761214c6322526c304c6c274e692a4a62294564274e6424566d2d5b *72295f702d617730627737577834567c37627f406576468c9f6cc9d5d0bfc8c9b6bfb653693352 *6230565b274c612b4c662c5b733952652e4f582b4d5e243d50174458235465394d682d506f3a58 *6d324b65264d662849672d4d6a3b546c2d5469294365274c66284f63274f672d4865273e5d1f43 *551c42582142561d3d501b47572043632347601c4a682b4868265476384a68253f61264461234c *6a2d5775324a6a30506f3453702b53692b4d5d25476631506b2a4765294d6c315d6f34627b3457 *7637516c2b536d295872305669275e722f516e2f516e2c516e254964274d6c344d652246602850 *682b4d642a536f3a5470355f7632587e365a7328596d2b4e6a32586c2e4f6c2e526422536b264e *641d46641f455d1c4556164f6421455f1f566e36536a2e5872285d762d5d7a36536c315269264c *6023435a1e54601f587230506a2a496a26546c244a652e5775374f6e2a4c6b2f4e682b4e682a56 *782c536e2b607a37637e3b5a7428597b324c651f4566214668273e5a1d4c6a23486523445e1d42 *60243f6023426322476b28466c2d4c6d2549631d526f2849682541662b547c345c7c3351753349 *6a26526d22576f2a506827485f1d44602352742d5a772e4772344c6f2c506f265c6f2c4f672351 *66225c6e23566f2c58642459762c617f2c6a8542577028536e2a607b3760772f567b385b7c3b5a *7f3b627e2e62792a5f7226637e3150782f5b79385c752d627730667d33667f2c6e8635677e3459 *7b2a677d32617c3c55722e5367335c7d3573833b667d34697e3b577631647d3a6079365c783252 *73365d73265b792c657c3866772a4f6c2760752a64762e5c7c37627930607d31637c2b6682405e *7a2f657d305c7f376781355d79306179365073255a752661772c5e762f58782f5b7b3353762c56 *6e2c5f792d57742c5e763057743246651d506925536e264f682538561d466525415f2147571a43 *56174666273e58203b5a1f4b68254f6623566c26435f1c4c692256772d4c6b274c672b4868234b *68234667264b67284d6625536d29556a2a4b6f29576d2b536b345f7430556b255069235a742a4e *6c324e65274761243f5d1f455c1d53702959752e586c2660772f627d3562813e5c7e355f7a2c65 *792f657530597732617a2a626f2555702764792e5c6c2460762c647d365c722e5f7529697a3066 *792e597727657a30647a2d5d7b2d596d21577733637c31607d2c5e782e617d345b792e56722757 *762c66792d667b3056782e5f782a5e752c54712857773157752e587833566f31506d2a536c214f *6d255a6f264869274d75285a752f5879304c6c23576b225d7d3159742d5e792f57762c50742c5d *7935607c2e60803a5d79366c843464803b5c803b637c365f803b5f7d2f5e78275c7628597b3b60 *7d365e7a2d628139607f3666863d607e385c7431667a2a677f33637e37667d316c833466843e72 *85376b83396e873e667b2e6d853c7382315e7d3861803a626c274b68234c6829556d215a722657 *6f2352651f677d3161702962792d64792f576f2b566a295a70286a792e57722a687f3a68782f6d *843c61762a6480396e803662803b607e326b843c647e2e7585305f7d2c557027607f3a5c7b355d *7931657d375f782254762d5f7c3a5d7a32627b2f738a3f72873d6681336e7a206e832f6f85366a *7f34657e2a5f72235b7931638437697c2b768733788b41758f468093477c8e47778e457e924773 *90476e87316a8839657b306b7f426b823b75894175863d6f833d7081357586327586357a893f7a *8b48728b4076884171854274883b7086387d8d42798c416a78296d843f6b8135647e325f7d3c6a *843f618132788d427c9043818c3f75843b6f8b42607e385c762965833b6179306c842d6f7b266d *813364843a68853c6783396c843e78893f677d28647d295b752d5c722b668032607b2a5e7c3661 *7e376580405f802d5e782f5c7c37587630486e264d742e576f2c5b783758722d5b7e305c772a66 *7f366f7f386c813a6b82317d8d476b803e738a426a883c6b843a6c7e28637b3168813a6878346d *82375a702d5f7c356681315e7c3469792a6b8433697d35657b2e667f35648136687d2d70813c6f *833d6a7d34577b385f7d3165792b5d7a385b792c546d2253792e4c69275c702655732e5671265a *792d6b853c657f3e69863e69812b6d7e2d68853c657b2d667c2e647e3e546e2b62823e566f2953 *6826536e2d537328516d284e702b526f2b62753162792a687622636426657531697e3170803769 *752e58732d5c762b5b70206276255d702d536b234b5e1846621b4f6b23586d27506925556d2465 *77276c7b2f65732957783859762a61772e6378315b72305b762d5c7a345979315773266682355b *7a35607038617c3a5a6f31607a3759752f5a6f29556f224d6623526f27596b22506b29516e324b *66244d68214e62213556183f6520405b1c3552164666244b61294d5f274d62284460254a5f2152 *6f324f69304e67265c6f2d596e31606f264e6a2a5e7532526d327c8f63c7d5d0bec9c9b3bfb75b *713d53743d506a2f50692d586e3365744059713b5873354e6f3255672e4b5f274d612b4f602d51 *692a4a622645602740582e42642d3d5b303b5d20415a2150662a495f26405c2842602247612539 *5e244c6b33476a27516526516924495f234f6b2942642c43653041592542652c476a2f446a324f *683147652f48682f5070334f662d4e6a294e642149692e47652a48673145612448692d56723b4b *68275372345170325266295068364c6e324662254766264465243f68304d6a2f4760244d63254b *601d455b1e495f1f455b21476226446124476a224f70314c682f5d763055703556712e4465294e *682c566d2e405b2a5069304b68265972284e7028557538526f32566a2c576f3058783162763a51 *6c23586e2f5772354f732d506d2c4f7237476b2b3b5f2d4b6a30495f2b5475374a6525486b2850 *6c2c536c275970305070354f6c2b506f274965244b6d28496a24466c25456123406226476f2b4d *752c426f2a405f27476f2952773a4a6c2a486d2c44672b537533486b2b4264283c6026425f2442 *6020445d1d486d24537534547532456f24466921547837607a2e597a2c658136607e305a7c346d *7e376c7c34697c335974284c68235273365d732c54702c4d6a2c4d722853712b5978335e752a57 *723154722c547d3e5973295e783264762b52722a5e793355742d5077335673335b7b354a703262 *7c375e7d33577b3a657f3c5980365b7e425e7d42627c3661783053742b546e235279324e682a52 *6524576c2b5a793658763a556f2850661e4f6e29607f3f5e732a5c7c2a657a335d7c37607c2e60 *81346080385c803d5d7a32627e36647b3e6477315f752f617d35547b305575275e7f3250732758 *762d5669214661204c6324496a2c4c76354f6c2448651b48581e4c68264e72324966264d6f3258 *763b5d803c527c30567a31547d3b5f7a3956753557762b5973315c7e46526e24486a224e67244d *6523496b214a652245692a4f6e264a67234a67204d691f4c651c4e68214c6628506a2c566c3152 *6a2a5166275a732d52732c506a295e6d2a5c7431536e315975285a6d27576e3062782759752959 *762e556a2b5c742e5d792d607d33607b32648234607a3069863f6482426d86366b863b73883e6b *843d647d31647c2e4f772e638035697a3161792e6a792f66813e607f375d7f3b5f7a2c63843b62 *7a365c78316083376b833e647f3c668437637e3a6683365d752b5f7428657d366b82396d803163 *78366d8136697a305e762660813058772b647c2e607c335d6c27667b315e763957732457712255 *72265e79345973324d712d5a7c3c5d7b2c677f3c5f79346e842c6e853b6d823d617c3858763468 *7e345e7b3575893f7a90477185356d86396b813e6d893c74884265833a6688416a803c647f3071 *853c74823773863e6a813b667e2b647f33687831677d396c81335d7d2f617327576c2660783362 *762d63813d65792d68793263742962793072883f6f843b697f3168823a638241657f346a8a4766 *823c697f336883376887406a813b6884416581386c802f5e7725566f265d753261762b5c74255f *7b345e7c305f7e346580366a843d6581366f7d346279336b873d6886406a853b617e3a727c3073 *8a406c87486c85446782396f85396c8b406b873a6d864b718b4673873f71863873873275863876 *8639788e41768b466b82406a7a386d85476a833a6f86377f8d3d6d884179873b7488427c8e4275 *7d2e798f456e8739788f416d84426f853467853e62823763843f6788406a85426583365e753260 *7c2b6d82336a822d6d883c7d904c7994476c873b738c386d853e7587366d84336585416d8b4170 *873f78873c6f84366a873a6c85406e883e68833f657d3b6786475f803d5f7c366b8440617d3365 *772b6d7f34627e3d5d773959733156743765843c667f385b752b5a762a5d792f576f2f54773560 *783f667f38648039587b366681316c873c5d803f6b853b6079345b7d3b6385356a843c708e4369 *853a5f84425871315c773a65813e60803d5f7c2f5d772b5c79306079305c6c2558703154742f64 *7c2e677b365d782c5e7b285970255975305d702c4f7427496a1e4a6a28506c24526d22566e2854 *732e55722b5e782b617d2d5376355178315e7e29617b28607f28667f2863752a616f2952702d4d *69274562284867234d5f1c42621d61712c576f2d66752c68792b62793e65803c6e8a4a7186396a *853a717d2d6882406c7c355b7a315678365b75325f76255f7c2e5e752862732e6b7e3d68833969 *7f386d844266843f6e8b4765813f6a7f3370833e6f853d68813d64813564803467873764802f60 *782f5a722d667c3366813259732e5c78315d75316480336481355c732f6679285d6e2c5d712c55 *7236576c2c4d70304f6c27446f2c4a6929506c294c6827546b294761264c65275c702c4e6c2c4f *6d26566d2b596629506b31526b3258693161762d5c7b3e5d7637587433809267cbd3d2bfc7c9b2 *bdae5668295c75384e70395a804e58733f5f79315e783a5c652d58712e586e28536a2c556b3858 *6f3853692e50622c525f2a5770355068214d5d2147642e54692f4f6d384d652a41602551642453 *69264a662e486625476a35476a424a67354d6b2f516b2948611d3d5a23586d364c642f4864234c *6429546c2f516628506222425b1c475d25586a2d4462204d6528506b2e43692946672853702d58 *70324f67214f622743652946601e39521d40622c586626456125556b274f67284a6a234d67264d *6a2b476428496326546c2743611f52611d495a1d4563284b62203f5c21486127465f2b4762214a *65234f69255669284c60284d6e3658712e577737536f2a5476345a6c2a587832476c254a5f214b *65283e5a1f516b304e6920455c1c465d1d4c6228476528416426435e2a4262255368264f641f58 *732a476a235270234e6d2f576c2b4767274c69234e6e264969294c6826446222455e2041632340 *5f23406424445a1c44612440591a4a6c2744631c4463254562274d7032486321496a283a5b2248 *60214466224b6824465e2843642a4d6a274d6d294d6f26506928507635496a24596d245a682655 *6b1d5f782b5979325d7b32536d27506d2952742d506926526824597136506b2b536f2b4a63214e *672552702d586a2c4f67244a612057722b5d7c3255722d5d7a2f56702c4b64224c6e305a712557 *7225566f2c4c6425566e2b4d68275c6d27506c2e526a2b496c2c5a71334c6e2e5b763154732d4d *6e324f6c2e59763651662557773b5e73364d6c2c4d65344a6f34557127566e25527229597e3551 *73325f7730576a2e51642f4f6f31567a355f782f5b6e2857742d4a6b294d65254b692d536c2a4b *6e2f5071335a7b384b6c2b4f6326526922647e336479385874294f67214f6720456522455d1d5f *73305c69245f732f526f284c642347672e506f265866255d732253692052691f4864234c621e5a *732a496d2b4e6f2c5266205c71284e6922526a214e6a214a632057742c57752f5f72285d74275a *67225e6e295c6f2b52692a516b2f597336586c2850681d4b692a59712d5969275a742e6074265f *6e285f7028707c286d8232677f35607b276a7c2c64752e59752e61813a6c813c75863670873e6a *80316b8036758541677d3b587b395c7936687e345d7824768739677b306682365c7c355e763067 *793272833d6683416e8843637b335e732a6a7f2b717f2d6b843a6e823e6c833e74863e5d7b3073 *833c737d2d73844272863e6687436d8d43778d4675863a6f85425f783469752a5e752b5f7a3459 *7a3a5e7b3b5f79315573296472275d7323697a356a7c266786406d82406d853d76883d69803666 *823f74843d7384366f873c667f3c677c346d823a66813e6b7f3175873d7b89346e863d7a863b72 *823773833475803b747d34687a295973296572265b76265b702863793c606c2b60732c5e72275b *7124617a2f607d306479326b8036717f336d823e758035637c29677e2f607522697b2c607a2860 *7b3463813c71863a6c80356f8637638130658031607a306e7e2e70874662772a6a762d677e3270 *823b6a802b687f3762772d60752a5273365e773368802f637f316a853065803a677c32667b316c *834167853f68833965844161742c5f752d5c7e3d74813369863f6a813167874b76863a6e83407f *924885903f7b9048758740778d4365823a6c8237607a285f82306d8128738a367384336d812e73 *904c708b3d6789426a8339788c42758840748b3a7786347689436d7f36637e3a6a82386e823e6d *81346384386b8a43728b3c738c46758c3f72864069823d728d397892496c8d4769813168853b6f *894167863b637931627c395b7e375b7c295f752b5e8239657c3b69843e647b35607d37697a2d5e *782e647e2f5d7d3d5b7b34526c2a62732c576d2b4f702d567535546f365b7b395b7632546a2968 *7b3b627634657e3c546e35586b2c58752f577429627a2f60803a577532576f334f6b2b52732b5e *7935516c31526c2553702f50682a5d7a294966234f692a4d681e4d60224867265674234f6f3562 *7a2b65853d677c32637c35576f2d516824586e255367245567204665214568294f6726516c2758 *6f2f5869226377275e7b2c5f772f67762f607e386a7f356480386c8538657c336d7b36576e285d *75325c712b677d36627c365f73286b7e355f7d2e6c7d2c73853e6c7e337182356a7d317b8a366f *80347e8a386e843573843e697e3769824170873e7085416b863b70864271863f6b80396a7e306d *84426f84386d8233667b387487406a8345647b3b6b793565783761732d647730656f295278345f *753d637e355a6c265e732a667b3168792e56631e5571255e782f556c315a752c667b315f742a64 *7e2d63792f5e7b2e6375264d7231607b32607a37657d325f733269762460792b61742b677b3367 *7d355c7936697f35647b3a62792f6a81316f854563783a627e43637a3e647a3f8b9768c8d2cfbd *cbc7b3bfb15e793b58703658723b4e672d4f6b324c6c324a672956753c58682950692a5c6e3456 *6c28536f345d732f5665315872325d752e59702e5a6f36586c355a662047622446652c446a384e *65274b6a295872314c6b2d4f6b284c6228486026496a2c4e6e374d6a2f4b60294e682953672251 *6b2f4d66264b63264b65254f64284b652648702a586d2a506f25536d264d6d314f65274c682c53 *6d2b57702f496826456225597530496a2e3a521747682f576123465c274c61264f642a4a662046 *631b3e5b1d46591d47601f445a1b3e5c204c68244665244e6921576825426124445f24465d1f41 *642b4a6927475f27485f1e425e274a66264d6d2f486221435c174a64214b6425496126445e2354 *6e244867234867265c7a394c6424496a2d40672d3e6733416524496b2a516a23446a2547662247 *6e2844622336591e475f214e671f48631e445e1f495b1b445c1a3f60244869244a63254165234f *6b224e6928435d1d3d5b1d3c552046652946652a486a2747691e486922476925476620486a294c *601f435d2150662a4e6f2a4b69214f6a22576d2f4c66234765235b7931536f29486323395a1b4a *661a46661c587528476123455e1f54712d5e7630587326486226517226486a274b6e2950682345 *611e5064244e6a2c618038516f264f752f476c285c7c2d4d6c225371274d6d234967235679325a *772b446c255072274669264f5f1f4d742f475f2142602458722c4c692146692352651d45621a45 *6a2557702a54773d5b75335b792d556c25576d235169224d73394b6a25406322486d354a662a51 *6f335b7c2d59782d637f365a7b3660813d5d7f3f607a3e507132547a32567627536c234f6b2c61 *7b324c6e2e51722f516f2d58762e4c6d2a4d6d265b752c526a244c6c2f536d2a5c722c4d6f3657 *732e50702a56752b5d7b3b5d762c56763158753a6079306f823c6a833a5f77256a812c59752b5c *7126516622586d25546e26617d3257722e546822617a2d5d6d205d782951722b5c71225b783168 *7a3165772d657e2d607c29597a305b6f275f7e3754762b4b6725566f2858752d596e296a7f3b6c *81395f7b2a5372275b6f2b617a305d762d647e25697b2c5d752c627c39648131697d2b63843a6f *873a65752b657a306a7e3066842b617b265c7421617a26607a29617b2b5c7f34657c2d647e2e54 *7c2e617e30667d30678130667b2f5e74266a822c6b873776873574843c6b843b6e833a67792d61 *7b316a8841627f2d5f752c67792e6a8130647d295d803462823d6482346886446581296481326c *8a47607831557124657e3b708433667f336a85336985407286397682326680306a863a7485306e *812e627b3070823265812f647b2d5477335672385c7c3a657c33697f3c708a4072853c72802c7b *8c3771853472823167853d6d883d71893f6c84355e7830728b4273883873892e717c287c8c3c6e *8034688139687e3163792c57722763802d5c75245c76265a75265c78265a7325587927587f3160 *833373872b67813572853b6a80316782336c802b6c7f2f6d83396e89346985336c7d2d69833269 *87367289356d81386d813766813c6f883e677f346484396584366d833564813969813968823375 *8d406d8c3b66802a6880306a8234607b2d637e2c637e346b8b3e698539688433697f2d788a3a71 *893a6a874171843e687f3d7788426382306d893e61803c67813660823569823069853770894369 *863d718f3e758b3c6c873e708d447b8f46758c42749043768c42708a3a6e89396a823e69853964 *84365a7d335d7c346783396f8b4b73873c808a3468823d6a873b738b4273863a6f843e70864073 *894269873d61792b5d74285f762769762a4f6e256c84416a763065813a68863a6786315f792f64 *7d2e688337698139637a2c5d7a2d567a32648037587630627d4059732b627833657b3a61762d6c *7f3b6080326a852f6780325b7a3463803f637d3a6c8740658540607a36637e3c65803c61782d5d *792e6b7e2e718a49647e3c6379346782466c803a6b7c3252752f4b6c2f4d6e2758702a5c773964 *7f346d803764853a6e7f3570803a6874325d762a5f742863752a5977335c7a334f651e6277276f *83346c863f6e7f3b6f7d3176883e798b456f85396a89446d833a7486377d8c4067813a6980386f *803569874370873e7489436c8436687e3271843564813572803b768a427383446d813b72863c6e *82316b813e6d853b707f396d81336d80316b80396d833c7b8a4472873a7d863874853671874376 *883a6d84396f843d678233617830637a2b647f345e7b2b52692a4d6a2d617a31607d356b823c69 *803e6b813560752c59712d6984366880396583336b883c6d843f73853d6a85406785366983416a *7e396a82406b81416584436f863372823877862d6b802a5f7d266a7d2b637a266976285f6e266b *79276c7a2d6a7f346a813367772e6976375f7c326b7f33738037687c38596e2e5669317f9768c8 *d2d0bcc7c8abbbb1607d4553783e527033536b34597c43597b3d56703a5d7b3a57753542612b4a *6d304c7037537433576c2c5367255475385777315c793c5d7b4460803e54773a52793b52713345 *6a374f6f2e4162274a682b476227476629466d364d6e344b6b354b672b49692c4864224f70334d *712f4c692e4f6f305c77305770334d672f4d672c406325335f2a4b753152733a506f2a566a2749 *642243622340561d375d27405f254e6c2c466529425f1f51722f4c65214766284d692b3a5f283a *5e253c5c1e446b2f3d5d1b415e1f4261233f5e223c5a23486a2f445e254268314e642945662c47 *5e254362213c63253f5f26315a22345e233f602242642640601e445d1f385e294263213f5d2240 *6020304f1b20491e2b48173f5f203e5018304e172e521531531a4a66283f5f243d62273c5c1e2f *56233d642a3b582633581d3261283a5b1f3e622c3e5f263f6229435c233d5e1f385f22325e1c3e *5e204663214469323c602436591c39531d3c51143659212b4b192c501e37581d405e213e5d2245 *6224415d183f602140641d3d5b1d4263263f622b436e2d53732b517c4658722458752d57763347 *69264f6b284e7333496c2f486424466c2b4d66224c7530476d2c54752c3d6927466c2d4068294a *6c2d58773256753046682e436e274e7a304f75304f772f5277334669274a682b4b6a2c4c773554 *783956742e537a3f5675354a6b304360254061255376313d682a41662e4765265074324a6c2a4c *70255a7a2d4e7a304f793647702e4c7333466d30436b2c476e2f4765274461214b65274c6a2a3d *5a1c4b6d2d4a74294d722c5b7c38537b39637d3b627f3b637f39587d3a527f3e53793955783a58 *7e485076395a7e3e5b783a567c3a537d3951772b5679304a6e274d6d2c4b6d2b5d6f285d722853 *6c28496c2848692d48692c506d31557a3250752e55722658762f5b80346a813b71843a6a873f6a *81335878365776346b84435d7b3f647c3d648040647d3d64762c6980375e7e3653742e536b2558 *762c63792b53722650762a627c32547d3953742a51762c556e25576d255476325f742a5d79315a *793d5c782a5577304b6a26526f2d6a7b3c5567244f732b50732654762e5a74305f7c3166813b5e *79305c742b5b7e365e7d2f647c2c63823f5d7e365b7b325c782c658132627e2f5a81305d82355a *7b3451752b5b7c36567f335a7e325c7f2c5e78305c7d37637f3c68893f6c8134698b3e6584396c *833c68863c647f365c7a335a7e3a5f762b5e7c355f8140698635728c40768a3f718a4063813b66 *86416e843565863e68812f637b2f5c782b5670295c792e5c782f647932667f2d6b8b4166893a66 *87416e873f6585426281365f7d376e833a59813a5780405f7e3e5b762d5c752e59702762813b63 *7b3a62823d6280355c7e31647f356f853a69833d6a84336d8b4060843462833363833c6c8b3e6e *893e627e2d5971214f742656762d4d75304f742850742b53722858792f5d7a2e55782c5375274e *782c5f79315b80335d813a5c7b2d587029627b2a5e7d275e7b2963803864822f6683386e803571 *863877873c7b8b47748c42758d466e89446a8e496e8d5365823d6483395f7e3a6582346f85395f *82335c8534728d3a6a863a63863365844269853e6687426a86396c8c4768853a5a814160813b6a *83346284346b843d6985396d82386a863b67812d6e86426d8b4663813666812f62812e6781395f *7c37587d345e823b6082365a813c64823269833f6d853a6c863769894561884362833d6b8e4c64 *86476487455d8542627e326c8a426b9149798c3b75904a76965b6c8c44819951788e3e839a5b6a *9046739048728d41698142769248708d3b6b863b67833b6181356a873b6c8b4073883b65843c6c *873d6e883b728b45617f3a5f82436286425f813c62833a5e7c325e823d5f7b2865863f6984396a *844166833c5b813d678340617a3b527031677b2c5e7e3f647a3560843564813f68833c64854367 *833962813c61843d7088406c884560813a6186406a833e5f85405f85436580345e7e34617d3a63 *80346d843c677f41658035618438708a3d6c873e67854169823a70833b73883f6b863d64853a63 *833d6c863672893e718c4a6e854166833669843c64853c5f7e3e668133627e2d768d3a768a406b *803b738e47798b3d738942818d3f758d4c7a904273914b758842819253768a44798a40718a486b *86406e863c73924371873d6d8742738836738b377089436c8040738a437e904a6e8a476b873c64 *7f395e793965833d688138507732567630607e38617f375f7c3560712c647f386d833d627d3369 *80356d813e6585445e7e3946652d5d712e6476326e7e3169833f67843f6d8a416f8840708d426d *883f6a8540607b3a6d8739758b406d86406f883f708c4365813561823f658239607c2b5b6f3068 *7f34697e4270834171884872823f7185457184406786496a7d3b5f7231657f3f657f3f627b358f *a273c6d2d0c0c9c6b5bbab5d733653692f425829516a34566d30576a31526739596a2a52692d5a *702e4b692f485a28506e2e47693247653547632556672553703252612c586e35526b294f763f57 *7030536d355061264a64294c692c44672b4f692544622f49672f526d354f6d314a6d2f54702754 *723757722f59753a4f6d30536330586b3554612b50613151642b526620536c2f446022455f2251 *72354965275169254d662a4a622542521d48571d405e22435c1f495f28415d2c445c264c5c1f44 *65273a581f3d541b4360244a63274664294a6829445e20475d2552622846511744592444591e3c *5d254257244058254754203b511d39521e3755252a4a1b364e2342501f485f2f4f6e2c48682440 *5e23364f1839511b3656233d581d32501d4860243f5a1d405c1c435c2049631f405b1e4458204b *61234761243756263b57203d581c324917425a1d3f5d203f612a3b58233d591e314b1c435c2142 *64254b6627496625465d1d4e67264e6122485d224664234961204860204d6b29415b1f485b223e *5a22435b224a622b44581f44602048652442591d425a1f4763284461264b672452642357752e4f *69214f6e225e813e606f28556b294e692a576a293e642c44682d4e6a28506b284c65224e6d2b50 *733356712e4c6c284f6d2a4e6c23527126496c29546c2d49652957702d506e2c55733761793254 *7228516e24506528576b2a5167254f68274c6120486725596a2052681e46591c475e1e3c581e44 *5c265166255c752b5c6d274c68264462254d6426526c274f69254f6d2c52732a4f722c53732e4f *6f294f742c5776375e6b2e496a2b54692b4e6e2f48632a4a682a5878325c72256b85375f742a4c *682a55722c5775305e80365e7e365971295b72235665224b621e41631f47611a526c1f49612258 *742c5d73265c7d3557743360793a5e7c3666813661773b617b3664813e6a8543747e30707f3469 *853b5f7a3052722d5f74295c7631727d2f6c8234657d35647c316a7e30637a325f772d60742e69 *803f647e335b7a34697f3452722d657d32657b36627c325c6e2c546c2656772f5e78355b6f2c5a *6e295873315f77335e762f647b316786455e71285574324f67205573264f6d215875264e6f2653 *6b254f6b29587a33536d2c54712d55722964762b5f723157722f5773314e6a2953712c4f692352 *6e274d68244562244766244e6c285c6a215d7c336e8533647c2c697c29647f3366843a69843e63 *7f35627b386282346b833b65823b617d2a657b255670265f72286076296a792f6a793264772b69 *75226177275f792c5d793358773560792c5f79395d7f3d6779306480366d853b6882346681346a *772a5f722d647d3c677d3b55732c59772b617a355b742f4f71335b732f61743368823d607b286c *7b296c7f3d6580376980305f7a2d627a2e6d7f3168813968863e6d813c6a7e3c77853f7788426c *8440637d315d833d5d762a677d3d536f28576b27557d326074235b7d2e607d30647b32667d3b6f *84315d7c2f667f336d843377853476893474873d67843e728740697d2e6b863e758b3b66843e65 *8338738a3f71863b79833e758636748836708841708a3f6a89466e864068813f6b834069803978 *85396b85327386327d8d3f6f8b4073863b6381406c8238697b2c687d27618630607d30617c3660 *7c3a788a3972823470874070853b738239768d42758e486f8b417c8b4073853c6680326e874064 *7f2d637e3669843f677c3471883c6a8636758e3b7c8d4273884474832e668136728b3e74843d76 *853c6c7c3369854063884272873c6c893c6f863c7b8c3c6d812a6c833870873f76873f6f8c4361 *8240677d33738335758c407187406e85416e8b4d63823a6e863f66874663813371803284873b7b *8e4568883f6c822f6b833a7182396982356c843b6981316e7e366a7e30697e376c7f3d73843d72 *873e69803475853d717f3a6f843f6a8135607432647e40657f35607d3964803d6a813b697f356a *81407084396f853e78894176873c808e51798a4574873b6f8544677d3f6c81445b773a5c7b3c5d *7c3b69843f67853f6c823f76864f70864571883e7e8a3d78843e7787417588327e8f44768a4a7d *89417988427285467a863f70813a66813659792d5571316a823a607f416d88407d8b45788f447a *8e4a7b833e778945738636858b417d90507e914d74853e738d447088437b8e4a7585347c863881 *8a4075833873844373823466863e7389456b85366b81316d7f3a6a81355f7b396f8641697c3c68 *7d366b7c3d677635697b356a7a2c6c772565792e617b3a647a386b7e3c5a722e686b2459732f66 *77285c672164732565732e527034596f2a567132607a366f8641617a34647b3966772f61783062 *7c3d6d71357380386e812b6e73346279395c732f5e7a2f65762a6178326c7f385f7b38657c336a *7b316a81357179396f7f3d6f85417180326a854175864570843e627132667a316d74326773316c *793981986ec8d2d1bdc7c9b3bbaa5e793b577538607d3e5d77484f6729526d2d4b692d50653147 *622e4c622a5f6a2552683144592043602744602a506b344a6e395d76304f69234b60235273384a *6a274f672a5b7933586c2e5a7731536e374c652646692b4760214d69214e67264b62234d61224f *6a2c4d6a2a536e276279385875355f6f32576f35566c35445e29536a3654712b4d6927526c293f *5b2249692c47642649642148652747682b486028465f2247602247662544611f4a6738435b234f *6a2a48662a405516465c1e475d2252672545622a4569284c621f4967234e6626556c2d435c2238 *521e3e5b243d5f213f571b2e4a18304c1c34581e36531b3655202e4c1d405523435a1e4862233f *5d2a3d5c214061234464253b521a3e5b294c6a364d67244969294d6f2f466a2b4c6a2d4d6c2b43 *652f304b22324f1a34501d31551d4660243a581d3c5c233151142c4f192d4518364d203e5f263a *551c435c1f3d541e3d571f405a1e4263264f6b29475d1c435f2544611f446123516f27506f2d4d *66265673335474294c6f2b506d2b62834d54752d556f2a536d284c6722576a236676324e74324f *75384f6a1e536c275d85444c6c2853762f5b78324c6d2d486b27516d28506f35496d28426a2a47 *6f2a516c2852682b4b622344631e48691f46642355753156722f546c2b556f265370325d78345f *7c3a5a752b52722a4b6c2c4d69264967254c75314d6d224c73285678356376335c813e527d3557 *7636537533486e2d5672244f773d486d2852743b52762b567431557f364b6d275073365978314a *712e5d7e3b536e246c853762762b5878354d72365a793259742c557333496d2b4b6b27657f3e62 *813663803661813d64833665802e5d7b2f5a782c56793c4a642a536c2a4f753a5b7937617f2b57 *7e365f803f6b823f61813e6d8c4966823b647f2f6079316180316c7e2f67853b6684406a7d3a64 *8140678030627831627f334a72274c691e576f2958782f56682a4f6d265c7a31647b3055722d4b *6e2d516e255b78384f6d2d536d2a56712c5e7b325c702557752b4c6520546e2d5a752c4d682953 *7437516f2a657d2b597b2c5c7c2d5f7d315478355c76335d752c5b792d6080305b75264d72324f *6e28486a2a577632587032596a2759742c627830687d305f7f3c5e7d3a5177305f7a32566f2759 *762d536d2450691d4a6a2652732a486a244a68274a692c55772f5a7f395d7a306a873e6682386a *7f335f8137637f3a667f2e62833b60793163823664803360782f5d7d3464792e6a873b6a873f67 *8740758d4d7c913d81903c6a8b316484396e85305d7d3d69823c75883f6c873973893f7186356f *803568822e5d782b5b752e5978405d79395a75336179306079365b712f61762a687d34647f3a67 *7f3a5d7a3659742d6376285e762a58742e5c752b536f2b53742c60803e647e3d5c762b5f7e376a *833d5f813f60853f6480315c793969833c657e345d792b577b306078305d7c30657731637e3269 *7c2d6a7d2e748230798d42728d42708c476f863d6f8b3e768e39738d426a823660803a64864071 *863c6b843e6d873f71863d6e88427986386f85356f874273854067823f738337707d32627d3170 *853970853f738630758f428196446f863e6d833068863d68823f648333658b3c68853b69853f77 *84386b84327c8e40789040798e42799143778b437d96467b93427b8c37768e476f883e718b3a6e *863f6b883e6b8a3c64883d6b8d456c863d76883d6a823c798b3f7f8a457a88456e82396f894075 *8c3d6b8b446b813467803769803464813b6d7d2e6c83356d7f2d6c873a768943657d317589436e *7e3367843666863a788f496b84406a853a6d8540758d47788d487f913f7a863e748e4274893482 *904773864370843c6881387a8941717f3d6d833a637d3d6c89447287426d833f6e884275883d78 *8a426e8943708a48738b3a6f8a3a70883f668140627d3960762b6b833a63803e6d873b7186426d *894075883e6a80376a81307790427d92437e934c8097546f8a456d813c677f2f687936647d3d62 *773166833f6b873f62813b6f823e6486476c803e70873d708f4972884075802d677e2e7b893c77 *883e78893e6c8b3f68853d667b2e697d2d667b2a5e732856732a5d732f5e782b648130717f2d5a *7e326582336c782e7281355f7e3b657e3369792c6b7d2f7381316f80336e802d738a3e6f863c6e *84336379346a82336d842c6a8135697d2d6d82405f79355c6d2d5a712e5b722c5d742c767e3359 *6e2559712c647428657a305e75336379386b7d31647124606e2965752c5c6d215d712657733159 *702d4f70335e732b577529607f3460793358762c5c6f315b723961753162742d6d7f326a7f3359 *723563742f5d78305f75346a7e3a647f396f7e316d7c34697e30647523657d34677b326879376d *8130708943667f3d708440697f36677e3453702e516a2f66733256702f5e722f5e6f296a7d3165 *782f617c3f839865c8d3d1bdc6c7b0b8a3606b3d5c753c506a3651693454672e4c66294b56274a *5d254a62274d642e475f234e652d4a632d44602a4b692d4d661d4558234f6d2e44643051642146 *5e2a4258214b5a224c6122455d23405a1e414f1f4050204a662f4262314a66285266234f642742 *5b23465d26496028415b2d506a365a743e5568285369294966284561223f542450672b45602347 *682d44612c445d18364e1d405821415e253d56273f5e24485b294b642c4c68234e64264d5f354f *682554692b445d20415d23475f214a6929486325445b274e682e45652a4963274c5c22465d2352 *6a2d46652b4263244a5b26435a1d425d1d456022476426455b1d425e2946622b46571e415d1f46 *5f1d3e5e21426022475f20496426476d29406029475d234d66213e591f485f2242631e4c6d2d45 *632a426429496b29475a1e455d22425923445d1e3e561c3f5b243d4f1d3e5c23436025435b214d *5e1d4b6723476a264865274b662d486426536d3049672851682c4b63245e6f304d6729506b2c4c *6a2e526e274d722c546c244f6d2d4e6b2b496c294e6e2c556c304f6420586f274d72305573305e *792d6080405f7a2d5f7633547835526c2b647d425171304d6c2b49662458732b476926586c2b50 *6a2850662752733354773651702e5169274d6b22486a2347682846672451733352763b58742f58 *772e5a7d385c7a35607c346c85415c7c386780376187455b793a5f772e6381345c7b2c50722555 *742b4d6e2c4d6d334c67254d6825587936587c30526f2e4d69284c6b27506f244f66294b6c324e *692c506c2b50753c4c692b5a753264833e5d7a416a83445572315a7a345a7733597430516d255b *762f5c7a34586e295c742d5f783b657a34637f345a79305e78365b7b34506f285a6c2a5d722a60 *7a335e732a5e7c3462782e58742d58742f647e3868803d6e853b63792d56733351752c647a3362 *772a637d3850742a58732a5d792b596e30586d2b5d783b5772334f6f304d6c2758773b5a6c2f5c *743051732e4e6d225574345677325d7a2e5f793155792d5c7a2c62834064792d627a35617b2f60 *7e3a63813f577d3a60813b577535597529597731586f2751722a50712f4566234f6d25576e2d44 *62225d7e384e713056732f5d7a395672345a6d2f51742d5e7b306582356d8634608136627b326a *833c637f3564823e5d7c3259752e57773059722957722b5b72285577335c7c2f60762f607b3266 *80325f822d6581355e7c2f5f743262793159752863813a607c30718a426e854263803c69843e6a *85496b803960752f6e883e728b4164843b64813f607b3d647532628135727e316f873a71853f6d *843b7e883a6f89476c8133667d3759722d4c6b284b6b294c692157712d4a66234e6f2858732a65 *7d325c7a2855702760772c647d3c6b7837677d2f637f2f506f23607427647d325e79295c702d5d *79346a792d7884397281395c8138637b2b5c73266370276071345475325d783a647e38607a2e60 *7931647d38657e3b68863a6d85346e81397884336f7a2b74813571843f697e386f873d6a80376b *8137697f3b728c4a7a853b78823e7f8c407f8a357a894074803776873d6c843c708b457b904374 *823173873a71863365813b7a89336d8d3c728b43809452708b41778c4e7a8a4475853a788d4578 *934d798c4b7b893f788d3e7b8e40798c4783964e8991447e8d407d9146879752809142748a446d *8b446c8a45698639728d3f72863f6f85426e853a72893c748a3f798b3e7b8b3d808e3e8196557d *9455788d477a8b4b6e8c4d74853d69863b6f853f6d863c7b8d4867813f68863f7b853f75894977 *8b3f72863a69853e6f8c477f8d4880883f78813b768c48778743737a31708a4773843c697e3c75 *86407d8b3e7e863b73853a758a3f6f843371873d67803e7083327c8b3873873c71833a6b863f71 *8a447286357c8d407a8c447a884172894771873f637f3a74843d697b326b813c647d2d5f813b6f *823d6a85407186336a81356180336a85357a8531708436738a41687c3665772e688139637a3364 *7c366b813b6379325f792e587d366a8036607f3a5b772f6278335e743769762964782d667b2f61 *78315673265c7732697c336a7c2e6f83346f7b29637b325d7b34597a33667f355d753b65772770 *81356882375b702e60752a5f763162782d637626677e326a7b2f64702870813465792a5f792871 *8031606e2d61712c62793061752c6178265c783562772f686f2e6076355f712a606e3561732a5e *752b59702d62782b6a7b326578346878346a7c30738035677a2a676f275b76355f7130576a255e *712b62742d6b81366c7f3a60782b68813d5e79315573325773325f69205e6e2a647630687f325f *783665742d59743162702a6576336e85426d813f6c8440637d356b8136707f356f803a6c7d3961 *7f35658038647e41627f3b6978326a7a385972385a6c325a77345272374c67275470395a72315f *732c61722f5e6c3286946dc7d0cfbdc6c6a9b1924f5c283d5b2d4e652f596d365d723b5d753d53 *6b31536c2d4e6c32576d2e516a2f4e6a2c385d234d692b4d68344c5e22475d1f48642742592548 *60273b53273c5023415c274259244758224658244b5b25476527456326475f2549652e49602947 *5b2144582548652743662848662544601f34531d3350203756233c5e2b3f64243f562840642d44 *642437501f2d521f3856244052203b5820466029425a1e426229466327434f1c455a1e44601e4c *5f254b66204b62204f6a213e5e23485e255166233f572143602d425e294d65234b65264b612440 *60214b62254d6b2b47682842622b4a652a46692d415f20476123405924395823425a1d4a662b42 *5f214a6a2b486d2f506b3a4c672855712f516f3156712c5068204b682849642b506e2b57753755 *75344261235269204d6523506b305d77384364295770364f672e4a6d2d4c65274a692b44632c4c *6028475d20394c1938541c3e541f4765284e6226546626516c324c6e32496a2b57722e55672551 *6d2f5979364b73344a692e4d773f4d732d4f6e274e79364d6e2e52783b566c2646692a57732c4d *6f284b743052732e61772d648142537a3e4a68294d7537567332516a2b4f743055733551732860 *762a49692d587336607f385e7a3159793261772d5b80425b752d53682652712c486e304e692b57 *773d4e6e2c506927516e2f59672d566f2d5f753058762e67823b5c7f3c5f823f5f7f3d5f7c335f *78345e7c33566e2d5c78295174305177344f75305f7e3950702b5e733056773e455d163b5d1e49 *6e3a557a355d7d405a7836647931667f3b708039627d3d607b335f7b31617e345b722d55752a58 *742b5f732a4e712a4a6d2a507b3f547a3c5d79386381405e762f6a82335e772c5d77296f83386b *803a647e3f607d3d5676365b76345e84395e7f33577a335678335a7a4152722d5a77335873364f *6d28667e3358772f637c2b5d7d34657e425c773066813c7b935560783a6c833f5e7934667d3559 *772b657b30617f3755762c506d2159752a51742c536c25506c2556752f57722c5b743357762f62 *7b3d6380335c7a365f7a3a5f742d4c692553782d53732e5373255c782e5e6c2a5a7b3068823f5f *7f31627a35507b335e7d3b55732f5c79315d742a61773357733459782e617b2c718d4465854375 *8a3b6b833c6a8a406b83375e7f3b627f356382415a7a375c742d5a6d2c5a762c5e7631516a2552 *6c265268215179375c7a3050732c5f75295c742c607b315b792967813859793c59793672863c72 *853a678532788934647f2d67833c66853e667d336b813c637d35738335627f4173812f72863e65 *7e34708434768b48788c4873893f7387406e85365c7c35567438597527577a2c58772a67833f64 *7f37677f365c752c677a325e7c2f758837748b3d738b43738d486a8c456e843a6779326b7e3067 *84396d8734728b3a7588337b8e3f76873c73873b67762a5d732b5b6f245f803b5d7730607e405d *7935758b3e6581396273275f792a61752d607f3a6781346d7f316e843b6a833e6c843a6c7d2966 *8334698138667f376e833a70883f7283357c8d407c883a7f8e42778e407e934874863e72873a6c *883f7c8d4171863f6f8337667c3175893c718a3f788c3a6d8533708b397d9240778b3c73853a71 *8b3b768e447e8c436a80397084417687437d8f4b7e9244778b40768c4772863c7b8c3e6d863f6e *833a75894874893c6d8d477088406e80386e853b6a843a677f2e64853e647f3865803a73844071 *823877873f8392497889446b8c4871863f798e3f748f4676904469823b768d4b778c3f73864273 *823d6e86406f8d466c8639748b3778853d6f83336f853c76843b7082346681356a86407388446e *813a71873f6c8335698748718a4270803a708842677d406676286f812f5a78345d7a2a657c315e *70255d7d346c822e6e7c326981355c772a65752d5b7637627f3a64772c687c2c667f3164853b68 *8130687e395b7026576d275f6b246a7e2f647d3061782d687c3d637d3265762c5c6f255e75295d *732c586b2d5f79365870265f7729586c2c5d6a2f5b6c2a576b215d772759772a5d762956742561 *7a3064762e6574265a702c63772c617931627b326a7c306b7c2f5d76265f712c687d3567792d62 *742565843558782d62723168793365702d68712e5f7530526d25566d2b5c6f295f7a3856773262 *80355e6d256979326171275870225e722460782c5f773264752d65772a6d7d2e6f813062763169 *7c346079366e8537788639818e4783873a7c853f7081336e822e7489456d864763803b5c793468 *803d6b803164803371823f60722a5d71335f75265d7a32647d32667e3666772c6a7f38577d4263 *792f59732b506c33607a2d58794060803970823d676d2f627a2a5c7b36507332586f29586d2c4a *6c2e556d2a596d2a5b6c2a516c275e70305373305e7736536f385c7631536d2d526b2d566c2d5a *6c2a687c30637e3264814387a176c7d2d1bdc6caa8b3935873364e69364c6434596d314d66334b *652e3c582c425d2e446139586c3153642c3d5d2b485e2b44602e3d5f314a64284f64353b582147 *672b466b344259263b5a25405f28355221475f2643622a4262273c5623486626436128435d233a *511f354d1e3954273e561e4361223a5320405a2b445d29445d20394f1e32532648632c34522942 *5d1e425c20526827466329415d2248591c4e61294d69274c672f4d611d49511c48602349602852 *6c324c6c3047652c5375405771355873315a6a294e64264661253f562045632e415e2c5069324c *68275069285a6e3a4e702e4e66274e6c2d45652a4a6838546b2c55712f4b682747622b4f692c43 *5b244c662c48632c4a642d506b36526e2c4a6028475e2b51642a5067244d682c52642a65712f60 *692e5575336582406685445d6f3569814459813c5674365a7d465c762d657b2c5b76314c6c2f54 *7536586b2f4258264a6937426428476523466428485f2c4d64304d6a2b516725536a28556b314c *682945602548692e4c67253f5c274a662b47692b486928496b314e732b4a6a2a47652549702d53 *752d4f762a516e274d6e32546d2a5b79424f834656732f52742c537a35567d3d52742e51723256 *6d2d506f315a763557702f59702a5b7a3567844068803a637d3957743066803e53763b5e7a3c65 *7c3057742f51732e4a6c2a61772e607d3665813a5b7a325e743059783e607c3d5c844069813c6a *7e3664833c6a802f697f365e7c36647e345c7c31597b295c7f416a823a6584466a813d5c793447 *5c204a6930475d26476228576c2c4c67294e6922597e36526b2f546832556f3654712855792f5d *7f485c824260813e5e7d3b5d7c3361772c67792c637a366e7f32607f3b6a853c657f356b844469 *823b6b803b798c496b853b5e782c52732d4f773d607d3f53762c51732e6178315c733a54763355 *783e506c283e6428546b225d73285b6c295f792c506f376a863b6a84416b843d6d87456c823c62 *7f375d79314f67225768294e6e2a506927567742566d305e753a5c7831516b2a516c314f723157 *6e2e58753b627d3a697e336a863b607f4059742f4c6d2a475d1d5575295c76335f844565864866 *87406c843a667d3b647e2f647a2f6281406883365e7e3f5f844066813f637d3469813066853e72 *843b6a8a43708a456c8c486e8c40728b3b677d2b678441637934677c326182486083426582426c *833d5f7d3b5f7b34607b345f7c36597b395a7333627c3c628136627935607524677a376b833578 *873f6a8a40718b3f7b9149758f436c863a6a78325b793a617e3154703a637d366b813469853a6a *8b357c8d4c76873475873a6c8c48698c48728d46728c416a833d6f8c4d70843c7b8b416c81346f *8d4567853e64803e688740718843748b40768e3f768942738b3f68853c6985426788456b813a68 *7f3f6c8b3f72873b7285336d8c3f6a864476863c688132728a426785466686456f833974833d59 *6d2c55742866813b5e803a707e366a8a446b8437627e38657d3366813165834463833c637e396b *84366b88417184386e7b2b6e89396982327489407c924968873d748b4471873f758d47798b4c7a *8c3c718a477a914c79915178904d738c4d82923d849244778c3871853967843268803f677b3165 *823356782e66823a71863f6c873a788740728c4672863f78924e738b3d74904c7d85427486446e *8b4573843d6b7f3a67803664793372853f778c497585426e823d6a7d32697d33697e3668803c6b *853c718c406f8a3e748940798a3d6a8245748a3d7187417085406d812e63803a6c83336885446a *8a446d863b728c41728c4d6f874776843a74884162833a6c863b69813d70893f77863b758c4073 *853f628132708c515e7f3f6b813065833a617730657c3363793658763b5e7c3c5f7e3c5d702e66 *79306476296779325d793360782f587430567832657b3162782b617a2c627728677c2f5f762f64 *78326481336c8036697e396c7f335f7c3c6577255e782d5965204b6d32657e356276357180346c *86356d7e2e61762f607d31617d3362803b687c3d5d773658713563753366772c63792b697d2c71 *823b657a326980386784426d843e64793359702c5c762d667426627427677c2b657f39697e3765 *79356a78266a81306a7e2d657d3264782d6a7a2b5c6d2a64793369782d6c7b31667023576e2960 *772e697c346c85456f81327684356d85316f81386a8137617c2c66793065813a5673356081425b *80386e81336f813b6980346982317085406f823b6e8344607b3f6a7f346b7a2c5c6f2d5f712e61 *742a6b823e687a3961783164752e5f75285269235a6b225a722d566f2a55703263742e607d3f61 *752d536f27657b335973316c823f6a8340657b37697c37657e375f763359722f4f6c2a60773560 *7b31657c2f56773e5d76335676315a77285a6f32556a2d5b62245662284c69284e662f4f67285c *7131637e3b627035656d30676d2988986dc7d0d1bec6c6a4ae8450693a507846526d2e4c673453 *6c30536f2e4f642f425f2949652e48602d3f5f293f562348662645612e48591f4b57284360273a *5a233b5727395b2a4163233a521f3955264a642a425a26506c2e4a6526405a254865294a632c46 *6522496328485d2543612a436a294b682b4d6a2a50692e50682847642349661f3f5526425b2643 *642b4153203f5f224562223a5a234a652946642a43551d435b23486123506c254867224c6c2a4f *682c567531566927556c27506e2b517938516d2c526f3f4f6b314e6c2f4e60274e63274d621d48 *612249692d55672748632e4b6b2e5b6f2f6177325c6b2848642b57783b6079334a6b2c4e6b324d *652e556e2e5871306177325071365c73334f6f2f648040637d385f833f57692c657a3d6b793373 *8b4653722b5e7c39566f35536527526e2a596d2a5c7325486427476f3c65813d516f295e71355b *732750712d51702e5b732d586d293f64254f662f526b2e4c62264c6622516f305b7a304a682847 *68264561203b5d26426533486a2b4867285069265579334f6c2739581d3a5a243f612b4d6c2953 *6f2f4e6e27567a354c73244f66244b6c374b6c2b4869274968274a65203c5f1f3b5d2250772d5c *77335a7d3a648a46608544607e38668746637f325b7d2d57792f5f813e597b3460792b5676335f *7b34678333637a335c772e537224557a31628239667d3052682b5e7c3565853b577c306c883a59 *813b64874864874363853c60833d6986356d8b3e668b476d8d476b8a486d843a647e3a5a763a5c *7e365378275177314e6b244e6b2456762b4f6a2b4e732850692b52632048661e5976284e6b295a *75315772305c79375e7a395d7f416a833069834368853e748a3c64792b63792b566d265a77315f *7a396b84336084356985375e6f215d732b65742a5f742a5e732d57722a58783059792f526e2847 *5f23456420445e1e4f6a345b752f4d75345b722a576c2a486e2b566721576c28617b336d823268 *853c6f8b46607b30567329607b2c587e345d742c617b375978315a78375878325a792e597a2e5d *712b6066265e713158762c5e7c346a804159753a667a3561813461813e5d8030637e3161772e63 *823a64834161823c6481305f8440678335688542748b426b7d3c6e7e41617d345f7e355d803069 *812f6c883f6d833e6e8340607d3a64823a5e7f3a6480285b7e30617d2b648640678439677c3b70 *86396d833e63833a577d345f7e3f5d79345e7e395d80405f7d3a607b356a8440628232597f2f69 *86316989416883346b86366f8f46708b436e8a406b8132637d325a7d2b6b81356b8d426b82355e *81326383326a853c64853b63802b68873b6682356a7a3a6d82306c833561823a6985386c8b3e69 *853866853b627b30657d345b782e617f3664803366823b64762a6883316185385d7f37617b2c6d *81356d813262823c5c823b6788425f812f667d2f6a7f3363823a60762a5d752f627f3455792d5f *7f3a6078325e7829577c3667772a688032557f396d802f547b2d587d2d60772b5b712f607e3564 *7d30607b2d637b2b6478305d7b335b7c37657f34617e32758338677c2f67823a6a80396e7f3379 *8935687f37647a337484327084317b8e3b758d3f6a83386e802e7694477287316581336d84316b *7f3058782e576e255874315e7c3f66823f657b32697b2a6d8339708b40759148758b477b8e4776 *8b3e637f3a69843a6e86386c7d31738937748a407087436d833772883f788b3e809241758a3b76 *85366c883a658245667b39607c38698341637f305a7f2f687d34607d385c7725628234657e2e62 *7e3659782f587b3263812c73843c6c792b657e2b617d346d803c6c802d6c8338677c2e5e802c76 *823c63783457782f607c2e607c3d64722b60752a667e34647d34667326698138677f3264833869 *80326d894269833b618237557b305b762c627a335e7e3462792f5c7d32617c3d6a82326f873f68 *7e36626b265e74245e762250732f5b6828455e1e5d77245f7d2d667c2c63833569853a6d7f346d *843d6c893f678030607a29607e3161812a697d2d6a8233607e33647c3466813e677e316c86396f *822e737e347082376778316c854361803e5f8036607c2d647f325c74275b712d5b702664782b63 *792b707f31667b355f79236a822d7382377081316c7f3065792e6f843a728038687f345c732e6a *82356d7c326c85316e81407e853871853f6980336684305f802a6b81325b782f647a325d732866 *772e61742961763065792e627830657a2c5f752c6471295e723259702e58722d53792c607b275a *752b60802f6782376982315e783456742d597034576a2b5e782e69812a658137666f22697f385e *70314d69265e722e607123506c21697e36637d386573326478365f7531516d2d5f722b637c2f57 *6c2059701e58722355772d5e6f28556c2b5c7b2c667d2e5f792f6e8133667e3c627c376277335c *72395a743160803660732f667d37607832889d65c7d1cfbcc4c3a1ae80607840607032536c3c55 *763b5a7a485972384f6a305578394e6830526e354d5f274d5720425b244762264e622959692a4a *672d4257243a4d214158243b5e284c642a3c5e2b445d2a3e5b204f6d2b4b6b2f47662b466c3147 *602237501f3b52223d521f3c511f47642649601f3e5b21466026425a2544521e475e253b5d203f *5c284a6424486025395322495d214360224a662d4c6225475d203f5e214a682f4564304f642745 *5e2553682c4865264e6f2b506b255d7a344d6d24486328516b2d425f29425a1e4761264662284d *66264767254a6a324a652e4a62304a682c5166294b66284f69274a6b2e5369224b632d5465275c *6c2e536b2959712c587a395e712c64813e647b2f5d762f69813d647d396c8649617e395c783158 *6e355b7932536a28667f3756783a647b395a6f2a4e6d30587631425a224e6c2b526f2d4f6d2b52 *6c2a556a2b4f682a4f70345777374f6c28426a26456b2c42652c4a6a2f4c692749652c496b2b46 *6d314970314a6823436025436024466a2b4d692849632b516b273b5d20406b2842652346652b5b *753653692c4d6a354a75334b6a27466424436c2e4360223b521d39511e4c672d526c2b4e68294f *7639597d3b507a3a4f752b5e762f4f76314a712e4c6f274e79304a6d2e497634527629627f3766 *853e638039728d576480386487455981485f834354813967823d617d2e627d3968782e6081324f *7c345a7a354c722a4f732a4a6e26557c2f537b365079375c783a4c6e2e5a7b2e587b325070265a *793f5f7d2f65813a62823a5c773051732e59763159762f60792d5a7c35516c2c5c793961793859 *7537627c36617d33627e3f687d3260712963772c5c72305c75345a79325e7b2f6a81385b823864 *853d6984396d7f30677d355a7b3064823659803a687e366d863f5f7d326b87455e7f365f7f375e *7933587a376581395d7c365a762d64803565843c6a843b577a3b58823c647f3e678032697f2f62 *80316a853567833b5b74355e75366583415c773862813a69833e648443637a34697d305d7d305b *7d34617b336f8a4b657d35667e3167813a617d2a67802f6b8b4764823660813b5b7e3564824065 *833c617e2c5d813164792f6e833b5c7c3b617d3d647d315e7d3b6583355378335c7c33617d3664 *81356981355b7936657f34647f3d638130687f3560772d5e783163772b587a3c617c3259792954 *752a5a7f38577c3853763259783052773157762c607e38647b33617b296682345e7a296075225f *7c33577125647e354d7025506c22526a255066215e75226e7d2f5f7b3365813a63804065843260 *7f2d68862f6684326e84345871285b75256a812d5f7c2d6c883a6e8c3e718833698434768c416a *843c64792b5a762e5979375b742d5972275b792a617627637c3661732c5e792d6583455f813b69 *82365f7e3b5f76295a6c254f6b275f722551742f5a702563772b6481385573284f6b1f5675274f *72245c783058763559762e5f7c3055792f58712d5f7d2c5d7a2f67812e677d2f65803364782f66 *803f627d33607b29667f30637930627c3c66813b5d7e3454752e55742360802f677a2773813769 *7a33697d2e6c85396c813a6d7f2c6b8130628538698e486b7c2f6a82306581326d8b42788d4a64 *83446e813778883c697f346d823c7284407183386d854069843a667d3c5b823e63853f6780386e *823c6c813b69823f698647647d3f69853d728b436c82346d823b667a30647c30687f2972873a7c *8e447d8837758d4064843b6681355f7d32637d3b687f3c6181386785326a792a5e792e6582336a *82336d863d667e3c778641657e386781396c80336079265d782e6a813a62782a5a7a2e60793969 *813561782d627f345d7d3367803b5e78335e7730566f2a556c2d5a78365d732d607b2f6581295e *7e2e667d296f8432647d3b637d3a5b782f6a83376a873d647f2b6e7e2d677b2f677b2f52712858 *6e23516c2a53722f516f265b762c627c39485c1e5c6c205d6d215d7d365e7e2e5e7d30697d3b68 *80336d842d6583337184306482366177355f772e72873f637d2b61782c6481425b74325c753563 *82346384415d7d33667f31637a2b4d6a255c74256079295b742f6077336b80385a753d657c3160 *7c33647a2e6c8231687e3b667831698241657c36627d336a7e31667b2764752b6b873c5e743465 *7b32636f2b6c7e376c832e697c2e6e8134737e266a813173823a57762d5f77335f803f637c3659 *6e2d57722e5971236470256b762d617b325a783862813d57722c61732e607b2963732965763163 *722a5e70275f7c345373324b71345e722a5467225e762556752d5f74256375315a6f2659722a60 *6e27537027597028667e2b5f722b5e7631668039607c38647a2c627923556e246279266c822856 *732f60752a5a72285870245e701d577225687a236d7e266b792675802f6c853d6f86435f753761 *722c5971356071325c6e265c7130697534647e43899c6fc5cfcfbcc2c69fa97965723a59773f55 *6c2b4d6a3d536a3b59723a5d703c5a6f394f67344e6a3f4a622c4e66314b672f40572342471b4e *5726425221475e3940572941501a345623405323445e294862294a652c3b6334455d303b5c2d42 *672e4969284f6c2a476529455e2447662d3d5a213a6121456022425e2245642547622a47602144 *5d2246652e4660283a5b273f612a48672e4b6725425d2d455a2247511d47602d4c682b47642f4d *6d314a68244568274e6e3b597234597631557940536e2f567132577e3b557a3e49652947632b4d *672c46693148622244602749652d486b2d486836516e3543683245652c50692d57702b5376325a *793c59713358692f56662946652c496629486831475f234f713947642c506a2a5e7536586b2b4e *672e4c6327517134466d2a536f2f54692d4e7532566b315472325e753546672e426b32476a2e52 *6f294c71374e6e2d5c7a315b77315a7336556f2b4e6f324e702c476a3343682e43692f49692551 *6f304a6c275871304b66385a653445632a486b26426a2d4b6d2b3c4d1e46642d4e76334865304c *682f4d6a2a5572325a76334c7634466f324c6e34496c3c496d2d3b5e264264265271344d73315d *7e41607c375d7c37536e2d597b3b536f2c547739486d2950733552743050712a54772e58742e58 *793d57804353783b5b7c385e7631587a334c6f2b496c2a4d702f546826516c2a5d7a2d5e7e3d5c *803a5670346480345c7d426c813955732c476b2d5771274f6d2845601d385c155273294c6c2856 *7b3e587333617c416786416682406d87426177345e7b39657e355975274d713450743c556e2556 *74275e7b2e63803365803e68804465804164773662723168853e60792f66813b64772c6379365f *7a305b752955702e6d81356a7e2f657d3d63823d56793057772f5c783558742f607d3966813361 *7f3d537229596e26627d33658230607c34608242657d3062823b617d315c7b3d6581446b86406c *89416e8643697f3a6c884461813d6b88455f7e385875275f742e5f7d4168813e59773162813e60 *7a2d62792d5d732a657c3d607a325a7a3e5e80385c7d324e6d2a5f782a556e2556752e5e7c2f64 *7e406983425d803f587c2f64823661812e5a842e607d305f752d647b30687d364d73315e7d3659 *7f336c842f5f80315d7a2a6a85325c7b3a5e7938617935667c316480305377395876314c66234b *63205368294c65204b652653732e5278306182375c7e3c617f3d667d3b5d7435607b346175265e *7c33547d37517026547029576927546a285c763462772e5d792f5d793058762b658033637b3266 *823569813c597f356c843a73863b6b883d628233667d2e5f803f687f2a75853a6284426c894562 *78245c7c2c68843368863a6e803674873f637d2f618035657f335274295d772f5e7a29647f3c64 *7e306a813265813f59823f5f7c3b5f7a395d7d2f60782d5a76295d7c325a75395b763859723254 *783a506d254e6e265875325575336075355a712f597b3a5f7e35648039577b2f5d8132657e2d64 *7e3575843a617f3857762c567f3e5d8240627e396d823c6078335d792f5e772d5d722e60772b6b *84395f7f36617e31607d396a803c6a83435976316c7e326b86426b843f6382335d7c2a66863d5f *843d658544697e34687f43668740657f336f863a6b8440637f3e61813b6987476b813a728b4a67 *863f6d8b43698b4972893e6c85467087437a8a41748d4c788f44809347788e46708b44698b385d *81416680396c85406a813b65864264762f5f7c395a7e38637932607f326182396d863e67833e6c *904c78873c647f38596d2963823d5c72275a7b32637c34697a385f783b5f7b2d637228657d345f *8134637732607a3c5f7e4068813a4f683161733059782962792c5e7b315a7d3c657c3168823f61 *813d6782326e83386f8c4467864061853d647c2d697e30657e3466833e647d2967853b6f853a69 *813c6780306e87406c82476a7b306d7e3b61864368824370803b6c853c6a7c356f853a6f803067 *81355e772f677e3a637e3b53752f627e366f8435607c2c627d3c637831697e3b5d6f3160733261 *7c2c57742b61792c647b2b56733a5f7937607a315c7f3e5d752e557128687f3b6c7d30667d346b *7b33657b3d5279375e7a3a556b23526a26546d26506d2660732673813c6277305266264c60265c *6e285376314966244c6b2c5769264c6b2d5d7732526d285d6c205369235478354c6c23586d2556 *6a305d6c265e6a285e6b2d546b2d546926536a205873295c712a5e7233677c36637d3264762b62 *7b2e58763057702a57742d4f6b2d5672295d762e537130507436476a27536e255b75274a611f55 *68234e6a254b63224457224d66205876245975285e792957712463732a5f752f65813248682f48 *531d4f531d4c621c657a255d6e2b627c355f7635667d326375335c702e636f276174315c69305f *712c54743c586f36627b42627f44586c30606f2a5b7334849964c5d0d0bbc3c4a3ab746d804c65 *844d5f7543516f39536d33536d314c692f436d394462325467344d5a234e642d41602d536e2e45 *59264f6d314d5e244d6b2f5064255c602141522548562c3754223d5f243b531a455e24405d243f *551f4a612d4162324061273e5d2a445f2749632844602648642648622b49662b4867344e662a45 *652c46612245602939531b435b20415a2249652c41643146642a46672751692653702e5676385b *76305f71315669355470385675384f6f314a6e28466020415e254e62234d68234c6a2948652d4f *662b4a63264d671f4c6b27495f254d622b4663294d662b3753213a5f254361294c622654612453 *693452713a5e7432577a405c7b3c4c702f57792c547f41607735537237576f3757713450783858 *762c54712b51712b50682752712b52702a526d2f3f5b2d44662d4b662149642940612446692244 *5f2a4a67294b6a344762294f6f3255712c4f6c254e64234c68294f6d23536f2a526f2e4d6b2c42 *632a4b6b2d45662843652b506f2a67804f607830546e2e476c2b486529456e304e752e48692c48 *712a5074375f7b41596d2c435c2849682b4e722d52773b4f6627527334516f3456703558753255 *7c3b59753a5e7430537a364d813253752f56793f557332596f2a4d72345e73255175334f6f294d *6f265375304e72305c782f5e7f3b63792f617f355a7b325a77305e782d5c7d3b617833607d3b56 *772f4e722c5c773c58813f647d336885405f81396484476c86495f8043587f415f853c58792e5f *853f5f7b3657702d637c366484415a7e326681415f7b3d6b7d3164813e6586415d7c2e59813c5c *7b38597c3d5f7f3e65803d6f8138698c486d874175873e758c48728c416c864b6c7f3c6b86446f *8b476e8e437f8e40758e4f7a8b4a6f8c45698b436e8a416a863e718c4c6a873b6a915a67843b68 *8442638143577436597631637f3b5e79335f7b2e5b762e56662c597a3064752f58793b64803b63 *792e6380365f7a36637e3861792f5c6f285e713163772d5d752a5b7a2d637d33587a3559722a6b *81336477325b772e5b6d2a677e375e6c285e772c5b722961762e65753363742958722e5470305a *73255c7c3766833457762a5f7631657d31577b395a793060793c587a335177356485355a7d3c66 *7f335979355e7b2d5f7b3a5e7b2a6985335d7a2c5572284e641d4c68245d722e5b742f5b793457 *753060782a557d375a7e2e52722c5c7429546925537230617f306582385d7b2b617c2d64813169 *80305d742c5e743258753370822d607b275d7f2d5d862f657b306b782a6681346180355e7e3359 *7c326583365b843c577e3a5c7e305c742c60793964823a65863f638539607f2e6587446a843b74 *8a4072833970873f668a3e6788406a84386985326b8832688637607f2e607a325f7d356381375e *7e3663833d6587376f8b426a8842688b4169813b68853d6080335c824168863a5d854063843b5a *7c3352783156752e5d753a55722b5b772e5782395c7c32607225647b296f8240717e2d68813a55 *752d50762e607d38627e38697d2d5e7a325f79395c783c60722756752e5477295b7b325d7e3f5f *813c6a8643638a49628346658b4d718c446e833f67803c6179275d7b345c722a5d742a58772b68 *7b3260812a677e2e6378226c863d6a7e2a6782306f823872853c6b873f668a426481396b864060 *84436d8a4c74893b758f407e914678914c7d9049889956808c42808f4381924b7b8a416984425c *7f3f62853d5e7e2a5f7f2d5e7b2f5f7d306480335d742760702754752c5c7932607e356a863c69 *863a63803d6b823b6785406a844269813f5d792f677a395f7b2c6b8238697d29657b2d6c843473 *823c6a843c647b3d6a83356c88346d893a6b863c5f8340607c396881355a7a37687d316c80306c *863e728d41738a3e7b893e76874369813768843c6781395e7c37627c335d80315e762d6e83386e *82415e7f3565813660792e5e7e2e62833d728a3a6f863c6d813068833b748a4077853a707f346e *7f3067813a697b35737c2b6381405f7835687d3161782f638041637b34697f3761792b5a6f2c60 *782f647e37607d335f7b355a7629658038687d365f782661782d5e76315c6b2961752e586b2d4d *6221546b264d6a24566b295b7428627c2e5274275c6b2462752d5b6d2b5f76335d6f23566a2269 *7732545f25536c294362294c68224e571c486122526920596d245260225e601f4b6927576f2758 *6d255c772c526a245c6d284c692c4f6a28556b2e53662b4f672d5367294f6720526e255f732a5b *6f29546f325c6f30566b265468295a6f2959742a587633566f254e642652712657702c526b264f *6a224f5e17536d20566b264864234d6c2b465f21607023667c326c7e36697b26707c335f752c64 *792f5f732c66732c4f641d6370316175296780305f7c306270275c64215f6f245f702c657a375c *6b34627939546c2562782b5e752c606d32647231617640636c3a7d8f64c5d0ceb7c2c697a5725d *74375b73354e6d3352652f475e2e46693153743e42642c4f6b39516c3d5273355572384a6f3853 *713d4f70304f70374f6a2d486831526c30527033506f3250784b50713f5170283659213d5a2946 *622d3f571c3258263a561e3b61224263273e5a283854213659203f60213d5f1f33592a3f612244 *5f253a5a23395b23405c292d562235552a4b672842622532541e3c5e2c42652c4a6b264364264a *6d34446029436b363e5e2a4c662b3d682c496a314d6c2c4d6f2e456c2745632b41632147662a4c *672751712d4464264866274b6926416d3145672f465d224c652d5164264464274c6a3049662a54 *6b2c4964244c662b4e66214264274a69304d6a2c536e304c6f2f46652f4d6b304a703e4e692a4d *6c2d446e2e4d6825537031456d284e692b4867334c7232476e344f6d36527031536e2d405f284f *6c31476a2b486b2b51763c4867244f6f2b506c2a59712f556c315278334a732a466f3748753a50 *762b52702653702c4c722f45733353753d4e78434e75374f7c42517d35587e3b5a803c48703751 *75324c702d426535476e2e5b74244d722b4164264c6f2f5a79375776424e7a37507c42486f3050 *7b3248742f52762f5078354f75365f793663844058824857813c6989446281385a7c386282475e *7b3c4f7b3a58783a5d7a335b7d305c823968803b6b7f3f667f3e5984415e864660813d6b874361 *833e6385435a74305067285f762c5e793d5f7d3d5f803b607c3b5e81444b712a4c69284d682544 *68264568204c6d3556783e58813562823e6180315c7b30607f4067814157783b50762d4f732847 *6f274569275270275875305f772f517a33607e3c53723660773962803966843e647f3f72844168 *7c365c7436617f395a7f455b7836648840768e426b81426d89436689486188445e84495d7d3d63 *853862853a6b893f617933587a3a6782436178355b763857723e5772394d5d255063255a6c3452 *65264a5f284f69285e74355d79335672245c792c5a762c5e752c637d3b52712d527134647b3665 *854164833b56762c5d7b2a5c712c607a2f60782e5c763a5d7b385873294b75275277324f6d264e *6c2d4e69285e7935557736587b3b54712a5c7b2d536c265775265c732d58722c627f345c813c5f *75325a7f33657f3a637f2f58753158752e59772b4e6b284e7338537635607d2e5a792e647d2e5d *7e3754792a5c772d617e2f5c7f3b587b315b803658782a4a702b537a2e62853c587b30697e3369 *833961813f6381365d8036577e3a557b2f587d395b78305d752c658642677e2f5a783062832f57 *752c55732b576d2862742b55772f5676334a6a23577e3e5a7e3c5d7e3d58732e5b7f3765803665 *833665864368823a66823561873c68873e62843565843e5c7e3a6384395d7f3b608442607b3260 *843d5c7f386486366489425d8b47688b436c813965874060833f5679315a782f5b7b2e5c7f3e58 *7e3d5b7631597024587e364c74305a752d4d702b55803a557b3d51793d5275395d7f405d84475d *803f58762b5876295d79325a793851763055783356773160782c6780315e7d2c627c2f607e3468 *7d386587476989496f8c4f68833d5f864676904b7c9052718d4a69833f6983436e864a648b4962 *8440658d4a668c486a87426d87446b8443708e446487405d7c2c6b873c70863c6080395876286d *873c7087406b823a758d436b8b3878944377924982984b8c91497a8e4879954b7e95487c924a81 *984f80964f8396437b8f46738b436688466e8a47788940738e456c8c476c8c446984386b85436c *7d3966824264833d6e7f3d5f813e6480316582396581385e84406a8741687d3d65813b68864469 *873b6a873d769044738a4071863a6e863a617e30637e3f728440627a32687e2d6686376a83356f *833e5b7a3c657e3b678640647f356f833767833b637930597a376779305473305678326377326f *843b6383396e8837738e4466853d5f8541708740739249608042658844798e437f8d3a738a4274 *8a417686406c813c65792e618133617e29577b2753782f5f7526708132697b315d763060803f64 *783460802f5f7a2a5c7f3966742b647a3865803b677f3466813d5f7d32667c2d5f7e35617c3867 *7a336278295c75285b7e3156752f53752c4b6d2c5a7f375e76315776285477334f6f2760732d5b *763d5e762752772e506f2c506e26506b2c4d6a3457702e6177315b722c5374265f72295c782358 *78295d752b547a404b692b4f6b2d4b692e4d69224b67254a6925536d2648642345612148601e47 *6928506c264c6d2d446a254f6e2b4b6525506f2d51692a5068274c6627526c235171235273284f *6c2d4d702b4f6e2f53702a5a752b5f7a2f67823671862d779145798b367386456a7f3366743967 *7936697e39637d395e7330647e356580435f6e336078286b853d688441637e32687f3468884558 *7c3962722c6379355b7d3b537136607a346c88405e7937547033516a27789266c4d0cfb9c2c185 *9b5d5266305d72435f7333506a33475f324962234e652a4262204e62273f5a2e4f68304f622648 *642d4763284a5c224c642a425d2a4c622543602e4a5f21496127426732495d284e6e2d4b662c5a *6e3051672755682b3f5b2946632d48612f435e2542632b4e6327425e1c495f234c62274a6b2a42 *5a2448612b476125385c2a3f5b1d3d5d26465e1d4863233a5b223a5e2631592e394d1d39541f47 *6027415317394b1d435d2847642541602e475821396127405c1f4c652a4e642750672d4d68304b *6c3247622c546e32688137526f2e57712d506a2a4d6d2c4e6f3c4d6a3145632b4c64254562254f *662c52682b4f6626445d2447692746642a5568294d652f5365284b631f4b64234963254f64285a *68325270335171304d66274766264b68275370244f6d2a4d6a28506e33506f294a6b29566c255f *7a355270325269205c7635556a2f4e6d32516c2c4d692948642e4a6d3b536e264f783353793955 *7733587940597b3c4c612651743554722d5872274b67264e6e2a4f752d53782f62803753782e52 *6f2d52722e4b6b27537842496b2e4f6b31476633526f304d7032577a305778375f833b587b3767 *7d40637d37617d3e5f7c376a7f335f81405b792d69812d5173335e804267824263813861843d6a *87476781366380315d79335f782c57723163833b6a813c65853f5f7836577731607b3a657f3c69 *7f3a607736678339657f32677e366579326b803d5c762f5f7e3361792e677e2a62813a607f3e5f *7a3b637e305c79315e7c3e607a365e7b3a5d773f547730587c3a58803a63833d6284415278345a *762d59732c50753a516a285b7830566f304e6c2955742f5a79375369275870305b6f2c5976305a *7e406281465b752b5e7c2c516e2a66813e5e762e5e7e384c75394f6d2757732c678040687c3a5b *75305e73245c6e264f6f285a7a34556d305d6f2e5b782964752d5f6d24596c335e6e3465763f61 *7d41697e3f68772b667e31637c316779316d7f37586f2f5d732b5f75305d6b2a4e6d25647e306d *85396f843e6e8741607c2f6d843e6a823c66812b677727697c2b64792f647e3560843c5d7a2e62 *782f5f813f667d2a5c7d35647e3658702964792c5d8035617c38617d335a7033617d3b5174305f *762a62792c58742f5c7426637d2e627e345d792f536e2755752c61752f60792963792953772e54 *76335376325c782c5d7a2c59722360782d5d782c5c792d5777315b7e405d7a2b587a2f5b7b2d5c *762b57782d617e2f5d7b2e56722b5f7e3a5c7b3a67833b5c762855752a627c33637e3460753160 *7b315d772e5c79366077295e8031667c325c78355e7627637d345f742f55722a6477306784326c *83316b802f6d81367187407891567187356a864062803c5f7c305b773d5c7b2e647f2f6380375d *792f65782e718a426b843b607e3e657f3e6284416481406d8943738e435d8242657f3e647c3960 *782e5d782f687d2e658039658642638140608443617d3f6487416e8b4768854268823775874269 *7e33728c437287496883466b833a69823d6f85396b843d7085397389486f87456782416b87426c *8b4275883c728c45738b476d8843738542728b4571894a7e8f44768b4179934c6b843f778a476a *813a7585396f8544708942778c487b914c6f8739748b42697e376a7e36698543808b47728d4975 *8a397d913981963d749242728d426e8c4d728b3f6c843c7e924785964a859a4c8b97498f9c5b90 *9a508a9658868e4a86934f88944d82974f819149808e42838c36818e447e914f899756798e4685 *995287964b8ea0587d8e3f808f447f893f788c40738a427d8d4867843c6781306b8d3a6c88497d *9040778c48748b40788f4b6680446b88407b8636708e4077894b6f873d6d8c4e758b4c728e486f *8a48728b4769823d6581376b7e326e822f7089407a863f7785396780396f843b6b843c607b3170 *85377180346c85396d833c6a8332698c4a6c8d3f7589396d803058733076813077863e6c803969 *81356987447086376881326a813c6d76275f762658671f58722765792666803363722a61742a60 *752b5e762e5a6e285d75255e7b346284395e7e3563833759722b6b7d2f60772665762a577a3563 *7d4265762f66772b627323667a2c5f75356171295c7b30537a33506d284d762955712759792f66 *763363762e62722d67843a6584424c6d29506e2b5a6f305c712258722956671e637122616b2268 *7a3062812d647d2f617329536e2a5e6b27566c235065204460214d69224863214a6a2345662052 *6f22465d224c66245b6f2553712c5a6f26616a264e65254c662d4c6622496b295d773d5d6d285d *7c2f6073305e7d3d76843a76882e788232798c3f6f80336c873d6c863a608345687e336f812b67 *8037697f2f678136667e365a743374823c6a83426881385f7b2f67823a64843f657f40647d3955 *78315874345d7635637d3b5c763160742453702c586f2b4e702c5e7c365b733a7b9268c6cfceb5 *c2c189a05d586936536f39526f30486733536b344a6d35586e3a5771304f6c2f54713856723a58 *702a556e2e476e284e67294a7234456129446b3045662a526c2e496a32466c2e4e6423486b2b4c *6f354c672c4a672d4a6627516c264f672a4d6a2b456323435c1e3d5a28435f2a39592449692649 *652746682d486330396229365e2426471c335e242e521c3557272d531e3f5d1e455d242e4d1e3a *602c48642939652c4867264764244967274e6a34476c27516c304867274c783b53753b4d6c2c4f *692b51722b4c65234c6e314c6b285b69314d6d314968274e6a305674325d732b597228566e2a5c *742f5978354e70355a7b345270284e732a516a2c4e7134567236577d415c793857743e506d2447 *6a2f4c74304c6821587b3d5671315376325d79335674324d79394b722a4d732f4f78365477445d *7a325274325270305e814364873f5777274f70305e7f3f61834160813c5f83405c803b5e833f54 *813957792c63823c567d3753752d557839567932598349527830597f32577d3761813a54782c5e *7d3265803b698035597d385c854762843f61864b657e3f69813c638034567a3b4f6f2c55702e5e *7b2c657d2f648036566c284f7a2f5f7c315d7d324d732a5a772c4e6d24517c364b6f2c4a652155 *702f63803163803568853a577a2e5d7927587b2c5c7932596e274e662a5b7033597836587e3560 *803365843e6a7f316981396f8c44738a476d8643647f3a6481406c883b62813458762c576e275b *6c2d698136698842536d2e5c7c3b4d6f3a567a3333360b4740165c632649662558753756752d50 *7d405c7b31527d355e7d3a66803e6a7f3566853f557628466a2b57772e617c2f5f803253752959 *7225536e264e6e2d577831567d335a7526506f275c772b65802b5a762b577226527936486c3443 *6a32576d2b5a782e5a802e5c732a5973305d6a235e6d22617f335e792d58783160752559742663 *7a2b6a813a587b365f813d5f7d32657e346b8433698b3d6b83376485417488436d8641597f3d5c *80315d7e2e617f316b8a426b82376280306782346e893a6680356b863a6a85415f854256752d5c *782b607e2f577a396281316182355d823b5c823e64863b5878315b722a5f80394c77364d722d61 *7f3c577a394c752e536e255a7c3c56762f5379325d7d335d792b5a7b2f557d3457782c60823d5a *7a3057732c617f2c587c2d557423597836587e3665854353783154773257782e597d2d62863d5a *7d315c7d3260803357792a5f813264802f738a3f768c366a863c66843b597e355c7e32667e2e68 *7f2d65863b65853565883e6c8d3c658444688443728a3e69813464843463813a63813263863969 *81397b91446e893d64813a748a3f74893c738a37798d3c75924a6c8844718b476c8a406c8b4770 *863b69843d798d43718c44758f476e8b3d778d456d883f76853f738d3b6e8c3b68873b6f8b4273 *8d4765823f6a8b3f63864764893e718e42778c406c813465813b748b40738d43728d486b8b4369 *8c4068874162802b69803d76873b788b3a6b8c447389447091527f944c7d9246789044728d4771 *8d44638439698341738f5269863d6b90466d8c44768947768b476e8c4e708c4675925068894665 *8c485c80386a86337c8d3f5c7d2d6b853f668d47648b4976874a72874176934b708d40788e436c *8843768a3c748d4276904f7291496c873c72883b798d3f7f8f3e69873b778c3e758d467f944b7c *9140829a3e77954681954d8a9a5c879957829447809347859456879b5d859c548c9b51859a527d *994e7e924c83974e87964b7c95507d9647758542758b427d91427287417d93476c8c476a8b3f6c *8c45728d436a8433758d436c8b3f6d8b3e6a88436b85417689417686425c833e68843f6e813c67 *843565813b6e8442657f2e658443607d3d5f843b688636708a406984366b833c698b4166874374 *8f4567823966803a5e7e355a803b657e2a607b2a5f7c3358762f627529597c2e66853162833969 *7e33758535748e46768d3b738e406d8a425c7f366d873468873b6c7f317280336d894662823e6a *86356d873e648233638239647f2e64833c5f763659752b627e37577936667d2d64852e6684395e *7a27677a33698036607c2d5877325f7c314e73294c6e225675245470244c6b285067244b702e5f *7530577a3a4d772a5e7b294f7628546a244d6520416023566f2a4e65364067264c72295c6f275f *762b5869205c70295c7828466726507230486e28456a244e71264b6a22527127546b21496a1e43 *69244d6e2f4465273f661f5b792e5a722b5c7027516a25446526445e21324d1947611c4a6b214c *742f5f752a6384455a6d2b59772d517731566c30466b2b4561203e5d1e46621d47601e37581d4c *5e1f4861234c6624557b2856752c526f28586c2f46641e4165284b6a1f4d6d30546d2a4e672142 *602746612a445f204862264c67244a63253e63274969264b6d354c6b364e662d516c2b869c6bc4 *d1cfbac1c1849051546b364f6d3256733150672e5067305364265664305266264a58234f653047 *602a49592e4e622847652b5368324e6526435d26516d3948612a46692a4c5f254b64303f602755 *67264b6220475c20486227486b34485f2149692f4665294c68254a662c4055253b54212e51223a *5822334c1c30512438551f3a4f1b2e531e3151163551223e5b1e405f2a466728466b3d4b6b313a *4f284f652649642c5064264861264d6a3b4c642c516c2c5c7330556b2a5570284c6d315371304f *6d2e53703a3e5b24446024506827556827586c274b6426556f26546f2d5375386882425e7e395f *742c5c732f65752852692659722a55753755773a57702e536d305a6d27586c2a4e692e506e2f55 *752d43642d4c672950683358783165812d5c78304f72355576364e70384e743d476b314b643152 *6c294c682c4461224a6b32496f2e51763657773a5778415a7b3d527b3e49712e4f6d2f4b622d4e *6b2c4266284c6f315072335373395c7b2d577c366280365c76375c793c5773355179375d7f3d54 *78365e8135647a32617e3f6a85435e7b36617c3e5a7e415f7a3a6081335d84385f81305d7a315a *7531647a285d752a5b7b2f4c712d5076376387365779326477325c7026496c274b6d2b55753c54 *722c4e6c28506f28577934596d27596d2a506c305a7937648147648137587b2c5d7d2f64793161 *7a31667c38607532637f3a60813d6a833a6a8a426c914666813f6f83356385456486405f73335d *743d5a6d2c5f7c2e5d7b3a5e6a24586d324a6826566f2c576e2a65813a5c75295a7931607c2f5e *763b52773a5d743052753057732d5e7a2e627c245e823a6381415d7a2e697f375f823b697f3b63 *833f58773950782e5f7b335e7b355b742e677f326f84406686425f7e355c752a5e813e51782c52 *6f2750682a57753a58752c577327617c3d4f732f60782f5f75275f7a3259762e6a7c3361753664 *82365f752f5f7b2b5c752b5b752b5f7f37617d355b7c375d75295a75355d7c345574295a762b54 *742d657b3363783163813c6a89456d864564803267813c6c85396e874365834066803e647d3a5f *7d3b5d7a2f54722d5c7f306685375d792f5d7b345a792f4d6a31607d2c59772e4d753052763257 *762f54762d5d722c5a6b2660804061752c658136658940657d347086456b7d35687d2f627f365b *772a5e7629687f2f718e3b6b863d68853766873e70883f7582365d76326382305e7f3360833a5d *7f3a5b782c607c3a62813c627d325c7d305f82346584336a8c406086426c853b52702c5a782c64 *863c6c853e68843f6b8740698240627d3a7086376f8645768948738c426e8c4767853f7390466f *8e4570853974853c6e833c7084446785426a843c6782356b8837738d4074812e6d823d71863675 *89386f894372904b6b833d738a4b6a7f3a6e813f727d3473874f6c813b64813c738b436f8b486a *85427186406886357883337085416b823c65833d6e81336c844169803b69823372823f75894670 *853c6a83336f85406c8d4d768a3f71883f73853b78893f788e47738941708b426c854066833f62 *813d69823869854067813b6f7e39657e396580405e823e6b8245677d40637d3c5a7739657e4264 *7d2b59793257793c5d752e6485445f802b587123727d2965823d68893e748d3e768c4675934d76 *8e44768740748b3c75873f7b873d758c48698a46798945748d437a9047769041748e416b813877 *8d3f838e3d80944c7b925385944f81934c79934c789146718b437a8d447c8d457a8e4a8393437a *8e457c8e477d8c427e914180913f7e904e748c427d934a7a904b758d47768b4a7590406e893a6e *8847748b3e70904b7a8f406f8c43758b3d6f87327692436a8a456b87436c813d69834570883f76 *833d637b27687c2b6a883b698136697c376a7d396d83426e8537688033617f30607a2f6686386b *802f6d7e2e5f7a36577330637739637e3d6581345c7f2f65812e6a752e6479305a792958753057 *712f536b2b5f7f336d7d286483305e79285f752e5d782a6d8647617c3a6083346b853265843865 *83476b822f5b782c637d34597431557835597430587427527b3752773a5272344c6522526c294a *6a264b6c284e732b4f6a2047602341591c48601f446320465721394f1b476022485e1a46621f47 *631f4e6a284f622a435e27495c2247692b5264234d69283f621d4c5f1d4b60224f661b52702d4c *62234461234b5d224e601f526e1e43511847591a40511a415f23445e223653214262234662213e *581b43611f4154184257164f601f5b6f2b4d662f607330536b2e606e295a6c2748651d4c651f4d *63234060204f6c294d6a2a476e28556f2149601d466528355d24415e214f6c25406528485e173d *561a3e57184a5e2444632244652149641e4660265e70254c6f2a4669244660204762204d60243f *4f1b4b62234a5e1c415d264c6b2e4f67294c60294d61275666285b6c2e4b652e4e682d5a6d2f88 *9d6cc4d1d0b8c3c28196525b733352672a4f682a4b68284c692c4d6c2f4f6d3451672b4f6e2b4c *5e1f446a254c581e3e52224c64235b70394f6f3d51753e576827526b1e4a6b2c4d65264d6f3a3f *5c2950692d53642f4c672a4f68244a672449682c4a6a2a48612842642c45693343642d4563264b *6b2445662346632542652944652c4c6e344a672d436421446925476420516a234565254d6c304e *70314f6929556f3057722d4f6c2c50762e556d295575415d814c5c773753702d55773e577a3949 *6e27526e28516d284f72324d6e28517330556f2e4e72325a7d365c7430526f25577327516d2159 *762c5670295d7531627d2f4c6e28536c264f6420576a2355742b4769274965224c6b2c4f6b2d4e *6b264c6926435f204b6a264c611f5272294a6c2c4c6f304b6b2b3e5d245075344965254e6d2a43 *672f4c763f476e33486e2b4c6c2d486c27526e285c7e315f7b304e76315275324d6e3352703656 *77315b7028587d3a557e40547738506f295c7d404f722d55782e5e813b5379345d7f3a61803e55 *752d5c7a2c6080315b783159773355762e527933597c3f557537587534547432537630647e385e *7d2d69884266813a517029607a2d5d7c365e7e2f60834265823a668442687e31647e3a687d375b *793c4e6d2b5a782b5775275a7c345d7c405f7f3d667d2a6681306b81346685325e792f68802c5e *82345d803060803268843466813c65823e65812e5f813b63802e6d803b6581316f82336a824468 *823e61863a6184406f894472863a6985426f823a647930798a3f5d7c325d7e2f668130576b2b4f *5f225b7c41527c314d732356752b527629547934617c325c7c315c7d395f7f326681346a853b6a *7f32627b305c80335d772a5c78375b793568833e6880316a84346f863e6f8938627f366387405e *7c325f7e3561782d6076215d8039587b305d7e2d5a7a325c7d355d7d35527d3457763363853c6b *802a5b7128597733597627466d2c4f6d29476925537530607b2a4e75275e7c305579325a7c3f58 *7732597a335e7e355d812b5678265b7b2c55792f5d7d2f667f3361803e647d3c678033547a2d63 *812a668439678332688e4679924c7288416981376d853063843a607d3164853f65853568843a62 *7e3465843f6380406483405f78257083345d79366a81326e853f748539728836748a416e8c4068 *8c3b6b8b3a5f82375d8135677e3269843f72853d728a3d7290426e903b628436667f2e697a2a6d *81305b792e5e7c2c638136627c2f6a8b47578031587f3f6a853a6685426c883d6886426586466c *8b3b748d3c748d3c7d914b738e46798e426a8b45748d48728b44748f486b8b446e8b3d79904378 *925072914d6a8645748c437793416b8e456e8d3f7891436c86406a8e43759147768c42708f4375 *93457892497d93446e8e437c92487a8c467d9146788e43788b4472883f7d96567693527992446b *8c496e8845638443648243798d427c8c43728d44708c3e698a4c738940778b3d6986436c844170 *883b577e33607e3468813a66793565793269813666803965843e6b894367893f738a34728a3b67 *8a3f607f3967863b61823966843d63803172873b6a844567853b5a803c5e7e36587b3d54712d61 *7d295b7d285d7926698b3b60812b607c2d65872d627d3b677e316b7e3871842b7081326b812f71 *86386a8639738537718a49738b426a853c758c44799249808d41698c467791457d974d7f94507e *996280985480923f808f3f7a92497e94467b914d7b904b7c904a748841788c407a8c4071853a78 *8e3f6b883765883c71873d758c44768d4a7084406a883b6b8b44788d3f6a873b7b974c78934b79 *8f406a8c3a76934a778e437e95437d944b7b924e7a9147748f436889436a813163833a64813f69 *813f678036687f2f657d2a647c2b58772959772c646e2460752e57792f55762b54793048712e57 *7124576f266179285c74255c782d60792a5d78385c782c697c28607d2e60742a647a2b59752a57 *6a22526b20486a1f4d6a22527025486b274c6f2a5270215f782c557e2e55783054773163802d5d *7e3151752e516a244d70284d6b254d682147621a4e70204f6d2d4c6c285b7b2c60782b4d692447 *661d4d6a1e4b66174e6b1e4e691e455f1e4c5f1a4d642249641c4e661d49621f4f6c1d546f234d *6a235669224b6a21486624526a1d517027647620537c2f516c21606c21546f2750712f5f72265c *73214d6b22506d2758661d5f70245970275e722745612947641f516f274f67284e6b1f516d244f *6d224d6b2556732e4e6e2d5e75294f6d285c7223607624586e23647f31506c295f7232516e2a63 *78275c782853701e5d782c58742a526f2a536d2a557030476a3451692450601d526d264f6e234d *68234a692c536f2f55692b4e6c33466420506d1f5d732a53744157702f607a3c566c2e5e732c54 *6e33596f27577328516a2b4b652a526627516f314d672c516a2e5b78336a863a5a7a346077336a *7430859865c6cfcfb8c2c1729255556a38495f2e456a3c4a5e2d48682a465f263e5d253b622d37 *60253759243655274658233a532244531d495a1e455b263b5e2d4065264b6b2b506534496a2940 *6c2d4c6629425c294e6e3049702e4d6c2d496c304c6b303e6125436427446430365e2544682a49 *6b2f476e2d3c5f23415f23406b2939581d4361244864224066244765273e5f2744672a496a314a *753b4b692d476c2f4e6b394d6d374a6f374f6e26476e3051702c4e6c2c5c7930455f2b4d70304b *723149692b4c642748611f526b214e6e30546b2d4f6b2e546929516b314e6b284e69214a662755 *6b295c783657752d547034506b2a546f274868275172314a6d2943672d476b2d4e723e496f284d *6c2a4c702949712d4062294a6d335b7936526d2a54783e4a6c2b496d2a3e602c4a702b40642944 *6a31496a2e4364224c702c4a6c32436c28466a2a3f6527406129476e2e507027526d305270344f *6d274a6a3150752a4e72304e73324b75354b6c2a536e2953722e476e2a4d70334f6b2e50742f4d *74305576395c7e2e55772e607d355275365674294e7637486c2d53793b58732d607c364a723058 *72295b763356752d647c3f5d783a57752d5979365278305078375b79305d783167843d5c7c346a *8432527a32607e355974325b762e61782c55772f58722b61783053712f5f803b5d803c577a3c58 *7e3c5b7c345c7f3665893d6484406b8c415e833e66823c63813e69853b66813666823467823b65 *8c4d5a84485b8645657d355a843c587c355c80336681356785436182405f7e325b823c64824058 *7835587d355a7c3e5b7a364b6f3251793d5b7b3c4a6e2351772f5f7a2f4e6d2565772b65793055 *722a556f2a4f76324b722b5a77305b7e3155783256742866813d6382386485476b8737587e334b *6e266281326d8640637932587d435d7d3556793b517d325e7933657c31567431647d33627e355f *7e31587e3a62823c66813d5c77304b6a2d53762f5071304e7436496f324e783756703145692955 *7934627a285d762d59782e557e385a7b30617e3858773459782b6781376880345d7c375a7f3a65 *8139627d3c65804073863a657e356a88376b8a426b8c4373903d7490426b843b728b405e853962 *843a5c7d2f5c7c2f65843e5f803e6f86416e854160843c5778306b853b708e406a862e6e873a62 *843c5d833d6984376680335d7f375c833e57792d597e2c5580385c803c6685405f813e53742c65 *833e61813757772f5f7f3752804564853e64834062813d64813c76914f647c2f72874060843c64 *7c2f69843b688a426a8b465e823c65833a6c8b4065863c728d48677e407288416a88476d8f4f6b *8845758d466a863e738d42708c386a8a3b6d873d688944738c446c863d68843b6e8c45708c405f *844461803a63843f6b8c4069883c6f863b798f4a788b4c6e8541768c41728c4778934f728c4176 *8d3b7a8a3b7e914577904575935479904a759048798b436887466f854267833b74883f6585425f *7d31677e3a5d7e325f7c326d8a4362843c6d8041627e3f6579325e7b3a69813a62843c657d3764 *7f356c7e3e6b853d68813b648545627d3c5a7b345f7e3c617b396c7f3265863f66823f5e772a52 *722655752f5f793b5c7534668039637c2c577c3b62802d56742e557b38607f44687b33647e2f5f *84385d7b33657e376d853f7385396984346a863b728d407b90437592466a8b46738d4171873e78 *8a4179944d718c447285386b8339738a3b78863d6b843d7789436f8a36758c447188396a863c6b *883c738535748c42698332647f34657f3b6c823d6d82406c8d426d8e426e86387b843b748d4373 *8c4267873a678b3a7188436b853b658a41668440758e476a864360823d6a803a6c803e687e3762 *7f34627a33697c346a863f6c873c62844065843c6f8945627c335f783559782c5377325a7e345b *7c3c59752d648034607f385d7a3762843f668642688b425f772869823b7286456281306281405f *7c355e79334e7736577f3b51722b4f6f2a4c66215c78295f782f5f7d3766843f637e33617e2f55 *6b1e58732d61792958702559782f61803d637932537537617930697a33657f3c5c7a3168803666 *813c5c7a38607934627b2d5e7b265e7024506423566b285e7933526f2e537635607d336f7e316d *812f5c7730698132607e366a803d657e3c677934697e3268842a6c81346071285c712c697c2a63 *7c2e52713157722e627d3c66812e5c6b285f753262762d4c6c2d547e3764782f5c783863772959 *7c2d506e28576b295c7026506b23536b2555712f526a29556d274f6d2963782864762a536c275a *702953712c4e79315d74295d7e3a6a782e61722460752f647f2a4c6f2851732f536e315f72355f *712a62742d5775306375236075305576304c6c2f5f7b365b793d617b3d6280405f7530627c325a *7d36476833546d30586c33506c33576f2e4e6a335b793b556d33506d344e6c2b4e6c3a5271375c *753f647b36879a69c5cfceb7c2be7482454f682f445f2746643451693039582746652856763f47 *5a223c571e3459273957273f602345652c4363264b672336531e476226486026415d1c3a602747 *5f25436526395b24415a283755243c5720486428375c1f3b571d3453173b521b3d5e2943672b41 *6524405b22446123436219406422395e224561254562234565274768274e6a204c60204468294b *642e4f652243672a47652f525f245167264c65293e602038602c556a294a672b486d304a69324d *7338496b2b516a2d536f3244601f425f213a531c44662a495d2750672453651e455f1e425a1d3c *571f4a6427405d224862244564284e72244a68244561203e65214768284264234d702a48681f3c *662b42621e4b6526526d2958752b50742951712957792f4d69284466233f63244461274c652242 *611f40652a4d782b3f611f4d6d35526a234f67244d642247631c516f2e49702f4b72324a6e3141 *672b4a6d2c4f6e2948672a4f6e274d732f4e722f4d6b2a426d2f486d2a4c722a516d2245652348 *661c4b68284a692649702d476d29486f2d5376305b742d4b68264669304d702b50752d55752e52 *78324772275a762c5a7b315d803a5c7d306386485881446485416286415d823b587a2d43612054 *6b2757722f527534657f34617e34658441648234627c325e7c3f5878345d792d64833a617e305f *7d3b5d752f597323647a3750783b617f3360813864803f66803066873c6e8d3f5b7e3d627d3360 *7e2b607d2e63843360833a4e75295e7e3651742d516e315b7b40506d2c54752d58752a57762f5a *78365877344f732950722c567527526f29547730567c3b507a365c7c335d7c3e637c366d813c69 *813c5e772d56752c58772d5f78295d752e5c793b5b77325b762e627b2d6b823a667d3568833c63 *83356081376a863b65812e5e8032607a2d637b305e752f66863c64813c63873e76873b60813a64 *843d647427597a3164792b6d802d60762865812f698a41587d355f7f376280375e7c37607e395a *7b306b87426e843c74883f778c43708a3e6f8a426f833d64782e5f762c6079305f7528617d3456 *70295d7a33647f2f5a782e587b335d792d62843d68813265863e728a3c738c3f758b3b728d406b *893d6c8432688a3569843a6c852c67832f617e2a67822a5f7f3364852960822f6885375f7f2f63 *81305e74255b7d2e5f7f2b5475265d792d647f365c7728647b2b647c31647c336e842e69822e6c *87405f7d33677f2b647f326d8a466e83316e873a6b833262843e7482346981366a812b697b3266 *8239798d3b798d4377873c768c48738b3f768d52738943708f49798b3b7690477e8f3e758e4275 *964f788d3f809450798f4d778a3f738c41758e42778f4b788e44758c4083904777924776924986 *9851869751839349798b3f7891427c91487e92448295537f904a79924b8190457a9045768e4087 *974779914379954f789649859a5684934c86994f8a934280904c7c904c728a3c768e5070854379 *873c809143718b40788d43748a446a8740738d4d738d43758a4569854171893c6c853a6e863574 *8e3e718e446c853f6982406e8b41728b456b8a437584357488416e7e30728c4265823467823a6f *89446f853c67822e68802a5e7d2f5d7423607e36627c355d7c3364843e64833874863b75854377 *8742627e2d67863c6d873d7b8a40718b3975904773863b7487436a863b788d447d8e4777904776 *9044859854778d4476883c72812e6c81366f833f677d35788d467e8c417a9045768e3f83914a85 *944585923f85954481954577914c788c45748b45788d48798c486d8a48748e4165874071843273 *8d40768e436d8c406d893b789243788d3c718b3f6c853b69874764853a75863a738834777b266e *81435867245a652067813069863f74894370893c6b832b71833b6b7b2a617c3b67833b65824163 *7f2d6e82386b8234698436697f3467863f6388406e843e6d84386982406a8440708535607d3068 *7d3267802f637d307085336d8d456d8c4374873f708b4969873f6b81346582366c863f5c7b3360 *792b5f813b667d33748435677e36697a3163813e68823b667d3761823d63823b5c7e41667c2e71 *802e657a2a638237667c2b6d8233618534647e2a617f32627f2c5c7a356b76285e7b2b6e82366d *7e2d6b803568863b6f8833808b3880863167823f6e7d227084406586396d86325e8133647c335c *7228576a24617723586f20647e2872802d69843167842c6585386a722e6578306482345d7a355a *772e556e26527227566d205c74245d79295d782d64803963722c5b732f61772c5f7f325a7c2d5f *7f2c60762c55742b60772755752a5d75295f7128618137577039586b235c722c536e2a5b762d58 *7029637d26667e3b5c823d637b385f7c376783345f7928647322576f2951732d526d295772285e *7a2b5d6f31526d27506b254a67234a69284b65264b6720516f2b5c702c576c2d596c28597a3369 *8039596d2c507231859766c4cfcdb6c3c1748a445372314f7035506f2d526929495a2a435b2847 *6428445e254f6b284d63203c5f27455f2d4e6b334f73374e64224d6b284e6e2d47652247672547 *6a25426b254d6c2a4b67234968254b661e3d68233f5f264564233e60294765253e5e2241611f3d *5c223e632a3a59254165243c6126406327435e2242551d475f1e4166234462223d5f224960234f *69264366284d68294c6b2a4f63204769254c67263a5e243f67304b67264a6a31486c2e44692b45 *6626426432476735476a304f733158722b527022466d2a4c78345377314f702a4f662345662a41 *5d1f49611947621d4b63214b6927426021436222406225405b2545652141661a4869233a5f1f4c *6d2847642a486d2f50712c436125446725425e1e456429406427486424476926476c2b4f70304d *712c426a284d6a2a547126476d2d4e763252752e4a6f34466b263b6424526f2d496124445f1f4d *733a526f2e45682a456c2b486e2c4a6f29507430506c2664823f557125587b344b6c275c742d4e *7835537a2f5c7b2e4c6d2c4f752a566f29506a284363274f6d3055772d4d7c30577d37526d2658 *77354d6c2a4f73345878344e76354e7a3a4f753263823f617432647c30577d38557e415379344f *782d637e34608233617e3654762f5a7e2f6574255a7e3c5d783764823d5e833f63833e62823468 *8237688030667b3062843f61853f6a863566833d607f3c6a843868812d62863a638031667f2e6d *86456b874263832e687d2e5a7c3669823f64803d617d3156773b5e7d33607d2a507d306188315b *7e3d5c76306780355d7e366583405884415d7f3262813d5a7e365e83476784336f863b6b873a6b *86436180335f833b5f8032658130668436638237617c37627d305d7d35618035647f2c5c793256 *7430658330627e3464863b6485436c863b6f8e407288336b87366985406a873669894060803c66 *813c6082436b81335f7e3460803b6c8a3f69883f5b79325979284f7d3d597c2f5778256583306c *853d608036647a2a5f7f355d7f3d6c8a486b863c6a8b41748d3e70883a6b8c4265853769823969 *88436889416e7f2b617c25627d2770852c68803a6d8d3e698233738d3d6e8d416e8635728d3b69 *8c44758c457f8e3a6a8b3f6c8b416e93467592486d8631798f34758f3972903e748d3a7895496f *8e49769045688a466b863c77924a7c914e768c3e728c3a778f47738f497591497e954f80914683 *92428096467f944a7992487c924781994c82985387984c85975082914889994e85964a859b5682 *9f608c9c5c889a4b879b4f87974f8c9949899c537f964b81984b8398478497478b99477d92477a *9243829748798f3d82944d8496477c93497b9047778d3c728d4183964483944a8399517997507d *944a8094467e95507d98557e954f879949889a4c7f9146788e477c924c7792468193497e954f7d *934782943e8292478193458293488b95408c9a4c8096467e933f8996528597488292448396537f *9247788e487c954779934879935172924c75914b788f4c768d3f78924b8094497a893e7d8c3f7d *9346758e3e758f41768b41768d497590436e8941788b436686435c742c607e33617c2961782a76 *8c3c6c8d446f863971822c758b487690476c8d446f853966813860802f6583416d8d4a67874677 *8d42738b40738b34758b3f768b3b728c39758939758f4b6b853a648b3f608331708c376681426d *85316f8b48728e3f758f467a924b738a417088397b9141869c5b82904380893d798e44778d4671 *8e467594457291487a9444799147789044798d427c9545798d48788f497f8c3e779543778d2e75 *8c3d7381387b914c758d426c8b4172893f79913d7d923d798d3c7c8d43788e3f8096438497427a *934a79974f708e40768f417d8f416a84416f894366853d607f3772833a708a3e6c843667803970 *843c65843f73883e6f88436b884069833a6c893760792e6c84366984396a853d6b8541627d316a *8534667c35677f2e677e2d65832a69843d6c85386d833d6e7e2a7183316e874465803567863569 *88436680356d8941708842738836708740708b3a7c8a3b68893b668030628338617d3b65823a63 *803366863b677f2e6886336481366382336d832e667d326a7f3562813865853d6d86337084326b *893d6585406c7f306a823a627e306e822e6083376d873c617f2c6f893367822c6f802e6c7f3464 *803962793669844450712e667b296b7f2e6a8135687730647d37617d40587e3568822f6b86396a *87366e893a697f305274335c772a55782d5d7a375f7f2e5572295471295c7428586e265a762a57 *792f5473235874255a7228586f2553722a456e2f54702857803b51712e556e2c5974325773284f *74265b72255773245d742a5570284c732f6a7a2e5d6c2a50712d4e6a28537331576427536a2a4f *732d4f6d244f6923576d24465e224466245b6f2d617a3557733256722c537832637a32677a385c *76396f813a657b40637335839868c3cfceb7c3be6f86434e632c4e672f47682e527237435f253d *5f23456c374861265170344367274d652a43643443662d5871324f6a2b4e6f26426928526f294e *6e3b52702a496c2e556a1d4c6d284a6a2646692343641f4b682943692744602445622f44652149 *662546621e44621e335017405e1e425c2249682c4b6e33476928476826495e1e45621d47681c45 *672d506d2e546c2b536d2b496e294d702c53681d4c6c294b66264a6121475e1f4663213a5c224a *6c304b6c29485c214f6a2648672f4c6b2b3f642b3e63243a5c1d4467244a69274d6b29536b2955 *6e29455d1a3a5f2b3e5c224161223f5b1a44652541652047682744692949682b4365223f672846 *6820456426456520466a26455d1f3f5c1e3e642f3c6125476d29486e2556782a4a68244e6a2a4c *703750782f536d2d486c2c587a384f792a577e355a752e53712a526f24486d334f6e3745682457 *6d25456e284a6a264a6b2d41632542682852703143672b4b763057772f4c70254d6c2a4f6a2b4d *732b5e77315d7e35687f375f7e345d7e2d4f77305e77325c6e276483405a70275a7b3253773053 *7c326382375d7e2d6084336d7d35637f31637f3e6d83366688475c7c2f5a7d2b6c874a687e3c68 *803267843f6b8942688441758a436c80375f803b6e833569812e648439627c31688036627c3265 *823b62833e5e8139758c4172853e69823560823369853662823c5e813e608130698a41768b437a *8f46758d4b768e4a6f88427284366c883a6184395c78315d722a58772c5a783952752c4d763159 *802f5177254f782e5b7d2c67813261803d6486415e7d34658744698435607c3363864068853768 *853966843a61854063813d577c315e7f396b8c4465874264853b647c325e8239698a3f6b8b4369 *8f476387426f8d436c8c356c873b647d2d6783335f772e5f7b2b5b8039517636567331597e3261 *782b5c762e5d7f405c7e355b7d2c52752a59792e56772a627c2f647a2e5f72275474295a6a2063 *772b62802e6b85386d8837718b477087426e8d3f709149708a47768e416c894078883d798f4880 *974e808b3d7c924779914d788c43778d447a8d48738f40778d3f7d8c427d904380914382954d7b *96488093458492487a924882984a819741778c3c7b9241749143778c41779649798e3c75913f7b *91428193447a913e7a91407f944683994e889a5084984683985085994c83994c859b598497428a *984c8094448397478c97447a964d79944480974a8193438699498aa150859f5c89a15988a15687 *9f4c8da04f8ea0518c9e5a8d9d4e889c4d899a52869a4d889f598da15893a451909d4386934389 *9d5c8b9b588b9c50889c4e8899528d9d4f8fa051899949899b4e8494428a96468094478391427e *953f7b954580913c7b91448195467891438898457f97467d95447e8f3d8298497790427d955281 *93418297487c954b85953f809641809748829b4d849a528899568d9e508a9b4c809a4e85984c87 *974578964b899f5784995281954a82944579913d83954877964a7a954375965175924b69853a7e *8e448291468392487892537694497892427a92438195467e9549758e47728e496c8b426a7f346a *873d7187356f8c41738939718d476b8d476c8a3e688c4d748c376a88436181336e84386d8b3c79 *8b3e7c8c49778d4c77924670894b6c863f738e476d8a437589406c8c446d8132768a4169874569 *8c4069823a74903e74904475914b788b3a788d4d768c44759053748d4c7a944b7991477a8d4674 *8d40708b43708c427d9050718a41738e42668d3e6d90437d924e808f487a8d4e79914879924b76 *8c3d78924c748f476e8c43798a44758d3978863a79994a859451748d3f748f3d688c3f6a853b75 *8a426b863e68863f788a3e73964c78944d758b447f954670883867832c6f87367a8b416f873d65 *864260813c68893b7a8a3f7d964c7d934e758e4a749149778f4b7c964f6f8c48698d3f7688346a *823a6c863f6c8c416d7e336883396e863f6a863a6c873c718b41778a3572853c6d853a6c894067 *7b39768a406f873d7892497f90467c8f506985316d81366a7e2e648129658532798f397b914365 *863f6a853273854272873c6a8849667c305b7c31557c316781325e7f35647c37687a34687e3663 *7f2e698333677d3568822b658941647d345b7a335b6d2a527128506c2062772856732d60762b62 *79326682386a7c31687e40617936617e335d7d2e617625647b2761813c5f7a2e688332607d3965 *7f375f81415e7833647d28627b2b6a77296a792c5d7d2c628031607b3359782d566e23576e234e *6e2a5a6f21597c2b55712f5370274e6b2a546d2856792a5d6d235f732a516f2b607525506e3053 *752c5773324e6c2c556d2c5d762651752c576f254f712d5971244a64205673345469245970285b *7527647a3a506c245f722b58732651713659712a5170305878365678355e6d2557733363772e63 *7d36647e3f697a365072385b78378b9d6bc6cfcdb7c1bf688347546d31536f314b642d4f713448 *652a4c713f566b2f4c6d304f75394f6f2d5672324e652d5070394b703a53773d506a2d42651f3b *501537521f42611e406228526c2948662a516a2d4d65283e60224a6c1f4c6b274668263b58233d *5b22455f2d3a5922435e20455f1f456a2743611c47642547642d4660284e67284d6d27506c2455 *702c5f6d2a4f6d3b4c652d50692d4a6a2c4f70314e6b2b4d6d29546f23496b29596d2653622450 *70304662214b5d203f5d1e4366233f6427435e213c5c1e4b6521405e24415f294c6a314866244e *732c4a732f4268294667264768283e65313f6128345e263d652237662a466f2a456a2d456b2641 *6221456c2f3d653046663042662c54722c446627446b2c455b2144622739613251703b466e3a48 *7131506d345069244c6c2c4f67254d6a2f5772366a7b3753783b4d74365e80386180345b7d3751 *732f56773555763751772f496a26496727446a26576c295e70295a742c5e82454f783d587f4567 *803458752a4f752e5c7e3a546e29637d405c7c345a7a356d8140628136618645677d37537a414e *692d5a7834608148678c546d8940537c335f854361813268792f697d3c5f803e63843f5d783e68 *81366a80366982416a823f69813f627a28627837637b315e7f3f66813c687f305f8133637e2c6a *823c69853d61833867843a7a8d44718f4674904a7189406883396f84416587466b7e3f6a844468 *8643708a426f8d416f863d668c417f9248718e495f7e3361813c5f75365e7c3c68853a62844064 *833a6a813e65863f6481395f843c617a2d59783467873d5f7a395c7e37597c335b813f5c7a3861 *7e315e804060823a507c315d80385c7836617b305f792c5d7e3d66833f618142597d3268803767 *7d376b853864843d69823b65863f5e86476c8a42728c3d698e4b66844263814863824263873e5d *76295d7d3a5571276685396e89446b893f6d89476585406886456d762f9c8f247f91456e8b4176 *8c407c934f718e4c738e4a7695527493597d954e798b42768d446d8e45738a42758a3e728f426e *8c46718d4a8195508098527f984d80984d86994f81984e859e588496537f975084995883975185 *9a4683954885984d879b4e869b578d9f4e8d9a598e9f598c9c54899b5283985284944b7e914082 *985d899759859f5d829a507c994e899b508b9d558f9e5a829347889b5287954e889c5c889a4f84 *99458b9c497e9a517f95477d8e3e7688406e90497391487c8a3a7a8e3a829a538d97468b9a428e *a04d95a2558c994f869847859a5482984a869743869a4a8596477d8c3b8b984889a160909f5a87 *9c5b8da25591a053919d5c8c9b51879b508fa15a8ca05c929b46919f548b9c4f899e5d91a25c8c *9b498e9c518fa15f94a46994a15d8d9e628d9e4c94a15c8ea05c899d58879a5a8999518297518d *9947899b4f82923b8296458598507e93448b9a4f86954c859547859642869e588096478499497c *964c8da0528d9c4b8d9a5392a0578c9e4c829d518497487d9246759144849e5981954d80934d84 *934580923f7b954883974d8193497f944778904579934b849c508394436f8a3e788c436c8d4670 *8a3f79934e758c49748d447b8d397e9347698c426d8b34758c4781924a758f4678904c86994b78 *8e4e7f9242779448768e3f7b8d436a873a738c45738c446682326c89396b8c3e789141768b3a72 *8c40818b3e7b8d4a708c4972914d6c894068832f6f8d3d7e90447a8f4575904a778c417b8c4785 *8f43748f4c6d883b6d8f3e7585357e8d497d9046748e44768c3d789147829344808e507b904374 *8e4b77894e758c4a6d84417a95508598517d924282974c78965a7f92507d8b487690466d914e7e *934b718e40758c436a8c497b914776914a7f934978924782944778924a759147748d427b8d456e *8943799047758c467a9043768e3f7690447c93437893507c92487e91487a904675914d738d4a71 *8c44729250798c3a818a3f7d944a758c4981913d77893d6d8e4e647d3b6e87406f873d798e4374 *8735808d3f7e934c85994c758f467b8d3f6b843c708a4078934867843366833072873769853f62 *7a33607d38768b40708a436f863f6a7d366a8235677e365c7f34587c325c71285d752a59743758 *773466813964823b4f7b3e5b70285b7c31567b305d782b5581405c7d335f753c556c2b5b6e2850 *712b627a2d5a793b627b2c617e385a6b29626f2b567530526c2e5d792e56722b5d782a62782d60 *7d2f5f793257762d59752c577b314f762c627f3163792d5e792a647f35647f325e74276171255a *77345a772c57732f58712f576c2b6171225f762b647a33567326546b1f58712f5d6c29617b3360 *712d617d335d7d315f6f36647b2b6785465e7f3a5f7a37526b2a577b3e647e3958742e5d74374c *6c30516b34506b2d4f6d2b5a6f2b56722f566c2a536a29596f2d5a722e566f2f5c712e5a702f5b *6c2f65782d627c32667233607b3d5e7a3b81996fc4cfcfb5c1c16e8c5052793d476938556c315f *7330536f374f6c2e5677395c7b334f72354d69284a6d324e6d28566d2649682649682d4d722651 *651e4364294c6d35577330526f2a4d7034567432526e325171263e632942632845602b4b642544 *62274765233c611e4a69274869254564284a6b294e672c4865224967204e6c254d6e274d6e234d *6f3a4f6c2b4a6d2b526a2a4c692b445c1f46631f41662b486525536626486821436726475d1d47 *60204966254469284965224a6327466421436627456a344869214567244871334d6f2552702a49 *6f304962274967294f7134416925446a2c4c6e3444672e476a2553732c4d6d2c436b2b446d3348 *69294f70264d75304c6a274d6d304c6e2e4c672c4e70384c702f48692858732c4f7330637d3a52 *752f55783957702f5f79375f752d506e2c547c335f823e54752b5a6e265c7a305a7a32576f2d52 *7c405475385b7d315a722e4e733150762f55702c4d7131536f3054692b53742b5879375177355b *7c38617e3f60844069854267833260813b6987406f853d647c2c4e752e597a3c62792b526e2d5f *82424e75324f6c2a527531577c3f5c813b5e833765844062813b5670265d75285a7a325c7d335c *7d3660782c516d305074325e813552722d5d7b3c607d3c6177365a762d6080335e802f5d80396a *893b617f335d8034668233647f3b618036557726627e355e80305a7a36698130617e3163742e5e *772c6c83395867275c752e5f783d627d305d7c315f823a6a8840587c34547735607d355e80315f *823b688643658540768d477a8a3f76883b6d85396a893b67863f65853c6483396382386387375e *813f65853e6380406f8a496585406483376d853c67833f69834275883e66843a6b823862823d6a *873e6788486e89406b8a406a863e69833f597e366787425c7934607d356a87456a853b66843d74 *8e4c65803a65813c65823a5d793563813e6c873f69823a6a8739748a377b8f4580924071893c78 *8c40768f44768a417794487591457d914980974a818e4085984977955478975478964e829a5584 *99527d97507e985077954d829a5b83974a8199558697488b9d528b9d558e9f598d9d5c8799538d *9d558c9c48899e5b95a35b919c508d9848899d4d81974e8297508d9b528193497e954f8d994186 *9648929f4f8ba05389a154829f5f859c4e8fa2568c9b488a99448c9f4e8597488499428c9c518b *9d4f84994d81974b86944381954885944180923f80934486984a839848919c5187974785984f8d *9c478d9f4c8f994a85983f879d518899478d974581904387994882903681923a7e913f81934376 *903d8696477b934280903e808f3d889a48899238879b4587964089994c889847879b4d8095468b *9e57939f52909d4f8fa04e8d9c498a9c498f9a4e8f9e51919b509098438e9d548b9846869a4a88 *98458c99467a985284984c79934486913c82984c809437899c43819c5385974785974d86944785 *9847758b3f6f8c417c8e387e8b407e9238779243789346768f49728d3f7494497b934382944379 *9040758f447f8d3f7f92477f9147758b3e7e994979913c7c934b7e9548798f437b945280934f7c *94517693487e954c799345778a3e798e3f7d9241778d3f6f8d4481943c73914478904e818d3484 *9547869347798c3a819249839658819543768e407890407985337e8a3c81913d7f984d7d924779 *8f487f96438190427e98477e974f78904878914b68893d738f45738e3f7b944e7a954c79934a71 *914a819145718d45778f4269863c6e854174863a778e3f6d883c6a853b7d8c4268853f778a477a *9148728d4276873871893f7b8f3f728a3974903d7b8b3772894b6b843f708c3f7989407e8f4175 *964f8192427e8e4d7a8947798f417c913e7f994881934884903e7d914279883c77944e718d4873 *8c47788f427b903c738e41778e3c768e466f87456d88436a873e7188457693436e87386d8d4577 *8a47768b41728d3c7191467d964a748b3f778c3d7a8d456c8e4673883d708a44768b3b7b924771 *90426b8b476e88406d853a7d8b3f798d3c7b8d3d6d863a6c87376a7f356a812b6a81326a863c6a *842565802f5e79326280325a7f3a5f7c386b81375b803859712c4d6d294a6e22496b2755712e55 *6f234d732c5274295c73275372224f71265f6f294a6d2d486222576d294c6e314a663055762e5e *7b2d5c702054782d4f6d264b6f31496321506f294f6f2356712a4f7a2d53762e5668285877314c *6722506e23536922576d29536d24537729516c284f6c244f6e245b6a215371274e662264792859 *702e566d234b69255d6d264f6725536e294c6a2857712b5772314d6f254c692e536c2a42642065 *812f59793761712a5a702a57703357601a526d26637f3d4f6b244e6d2f4869284e6b3351612b55 *68234c6c2c4f6e274f7429556c2b506e2450632345692a6577344d6a2a526f2e5f732b5571284d *6a2e4d6225495f234e652e4b622f445b1f475c2174875bc4cfccb8c1c1788c57607d4b53712f5f *72384e6c32576e2d5272315b6e335d6f31566d33506d304c662a44672d47612b47693042662e4e *6a2e4c6a2e43642c4c69264e753254723755723352722c4c6b294e66284f6926445e1e42642549 *6a314b682e435c254863254e672a556d2c4d5f264567274266294a6b2c4d7135546a294e71334c *652a576525526b34506e284d702a506825586c384b632054712e58772f576e294c6d2c436b2b4a *652a47692d4b6a2a52712c5d712f5069214e70274b752a537936527c3f496f324e6e31526f374f *7130506d2f4c6b30496d2b48682b466c284b6127537136476b3659772e57762f536d2d45642a49 *6b2d436a345679334c702f4b723753752f53722b536c2a5272344e75375e7f37647d3367853b66 *7d2f5878285d7e345e762d5571285978325c793656793660813e577b3d5f7f3e627e404e753246 *6d245276345f803f4f7a3e4e70375176324e702751702a50763f5c772e557c3950712e556e3053 *6c335476345a7c385c722e51732f5d77325e7f3f6985486486425c7d355a782e4e76295374345a *6e325c793b51722f4f6c28516d32486d275472274a6b2351732b4d6626526f3155712d55733046 *60284c5f1e43692e4a6f32596c2862732d596e2b5b6d27546e2855723450712a6378265c752a62 *78305a792e67813e687c337f8b467381346d8437637e336b7f326581396a8135698032758c4568 *86426b85427a8d4265833f718d486a8c4569874f72853f768c495f8037527e3e5d813a65803d5c *782a657e34587a35677830687d3e60814d5f7c2c6987426281435b793158752f58743a5d783a51 *773c597a3f607f3c5d7e3b637b306b8031577d3b687c2e5c783c5c76335b793761792766823f62 *80395f7f34637a37678237627d3b65804268813b6a8437758c48758942758b446d894868823f75 *893e7286416a8c426c8d436e904c6f873b72823b658442637f4170823f667f3b6b863f748b4171 *853d748a437d924c7a945780914875914a7f96537b8f467e91478592447d96538094487e93456e *8d44718d4c7b944b7a8d4380914676904d8093438593477e964282964274934880965086995590 *9d5889965186984c86974d819950839b55859b597e924c8192457d91448f984c8c974885954794 *a14f869d5b8b9f5491a1628d9d4e93a0568c9c518197477d934b748d42778b386f9047708f3f7b *923f829c50859d5a829749819b5a849955859a58859b52829b51859b558c9b548aa0618ea2648f *9e54939a4e94a45295a45b969f4891a2628f9b51879f5f8b9e4d86984e8b975386974e839c5186 *954c8b9a4f889b5e8da15b8d9c59959d4c8e99538999488f9b528b9e4d909e53929d488f9f4d8a *a15c8e9f598fa25f8ea05992a35c919e548d9b46919d5989994e889547889a4a83974b8c9d548a *9c4b8f9b5489984c8693438398467d95437a964781964b84953a879749858e3d86954889995287 *9a4985953c87944386994c7b9041818b3b7d8b3a798b36728b3871853075863d76863f73803972 *883b6e80357386386d853a728b30788f3e6a8c3f6d88407690456d863d7783376b8b3f748b3d74 *90476f8b45758940718a3e688d456b8741728e49768a436c7f2f62843f608030748d407e924882 *8c3a6d853b728d32768b39738c40708b4a8693467c8c477e92577995588096527d92487c904879 *9049768e3e7e964d7593577890437b924c768e4878904b728b466a90466d8837768e4478893879 *904a758946788a3f758c437c9141798e446f8d4a738b3f758f3e6f8c46608c496a8a47708d4075 *8c396d863c68873d6c86416d853463854267864366874067893b7990476a87406582456f853d74 *8746738e4577924b6a8c506b883b70834061834368863f688648698545788a428ba06c6f8a5165 *7e336d833e647d38687a34608342697f3c728945738843688340667f3b6e883669823568813b6c *7f3b6b85426b89466b803c6886426c853668792d6b8a45768a437d9141728948788b4471934e7b *9041768d4c6d853b74833672864681924b798a396d873a67894270863d6d8034697c31697f3065 *7e346282375d7f36617e365d7d325f79355e752a6776276380345f7f395b772e5f7c2e5f803466 *8036697e2f5f772a607a326078345c7b3e50773561792b4f6e2850651a4a6423506c2654762653 *69275270315c712b56722e5271285775256271275072314964274e68264561284f6c2b4f692850 *722a566b2347642b5674374a642c506b30516b2b4f6b2d566d2d546d225f712855732f62753058 *7936606f305f6f2c526e2a597126627b3065772e5b733462762e5e71345373354f6d2f597e405a *702c64712a546c285a702b5174285d7e2e5e7731557a3f5c7a39586d246679316076314e682b55 *69254f6e294962274966244c5f1e5368245268244b5e204c6423566a294f6e2c4c68354d682d4e *662e4d66294f6a2b4d672c5e7434516f284e6c32596e3181946ac5cecdb7c1c281873d6f7e3f5f *75305a73334c602b506c30354c1d415824466833436430566a324d642e4661284d6a294b6d354c *6d2d577039576d2f53723652733153703a5b6f325574364c6f3354722c516d295575324b6a2e5a *79365b6e28546b254b6424506b2c4f692b4a6929506926516b27506d2f5e742b4d6a2a4d67234e *692148662b445e254e692e4d682a506d2653702b496c284b692a4d6922506f2e536b264c723151 *7236516d294d703450723a50742d50723655752e53752e537c415c70305f7b375774324b703254 *77334e733c506d33446629506f354f743a5178325a7a3b517333537b40607a2f647f3b506d2f4f *70345274364c70295a783550783a54772f5e7d37577d3f5b762c57752d4d6d2f547a3e587d3f57 *79475875284c713250753351752c52752d4c752e537536496c3352753b53702f506b284a753551 *773d5774305c7a3c5f7a2e5e75346077345d793b577c2f5279385572345475315576324c6e2d56 *7a345c782e58762e688337718336667a316180386a772b68833a71844265823e6a813c6b874466 *85467089436d8843758a4467823c64802d5d7f356f8038697835607e3f5d8131638141637d415c *7932677b34647c3d6273376e874267864270853a6b813772884874823a6e843f72853c718c4d74 *87406888406d843b6e843375853b7884397586377a8544718a46758d4a6983446d89466d8a4879 *89446d873d798d4c758d477291486f8d456789457186437083427b90487691446a874167813f67 *87416b88486a823a6d8131768b4468853f5e85405981406f8b46668c4e678a4d6f8b3c7089436b *853b6d853c6b8d456a88446a8746718d4675914b7187417f92507c8a42768c4377904f748f496d *8b4c688b436e8f4f798b45738a426d823b6a88437590447390497992527990476f8e43718c4470 *8b36748d416b85436a863f728b42698845658545708c4273914e768d48758c455d85436982426a *823d64853b688544788c416e82326784436d8b42798f44778f467290458191427c904684964887 *974f85934979924e82974b7e974779964d859647809b4f899f4c8e984c869b50869c4f859c4f8e *a25d88995f839547929a4f8f9b508c9c51919f5495a0628d9d4e90a15492a05291a1568da0528f *994e97a2588f9e4da0aa749ea96f8da05491a04e8f98548996497b8a3d788f466f8a436984396f *8c47698736658a3f7690467e8b3b7691447490407189337790467591467f974d899a4b7e9a5282 *9b5c95a35c869f578da05c8d9e4e939f60909f5d939f558e9f55969c51909e578b9f558c9c518b *a05c8a9a5495a25691a3538d9c51909c5292a061959a53919d4f909b4991a25e93a26497a45c9a *a55b99a35f93a16191a15d959f6096a36095a05b98a15392a252939e55959e5993a55e8da25b92 *9e4f909e4f819b51909c4c859c4c84974873873f7f954482964480923f81974e879b4986974282 *9b4c919c4e92a15b8f9d59869d5281994a8b9a4c8499538a9a4c7f954877904c81914b7f904576 *90457a9345779145798f43729045718e4a768d436e8e407b8f3e768a3972904975874071833a70 *8a3f75873b7188417d9144748a356d8a3f748842748a436c8a3e758d47798a3d62832f6b8d3e7a *9149788b3c7c8d3c758c317891427b8e3e728d48728a3c7a8e438091437e8d447d94507e97497b *904d7c9652788d3d82924076924c7f9144728d3b798c3e71873f738b3d6e8941718c437483336e *8a3d6e8435748e3f7a8d3d788c427889496d864e768a3e6a844465843b68823a66823a6f8c4170 *8b466d8b3b6b8744728c44758c2f7184335d802f6c86356a8b43768d3c7386407784386a834365 *79356d86396f86356d87406681426187456e823c698440657e337580306e8444778d40708b4870 *8741788f476c8b476c863e6d893d697f2e6a88446986456887446580416a8944657c395d782c5f *7c36617b39597736647e3265844364823b6a7f336d86417d8e406f853c6f853a788e4f6d8d4878 *8b47779045728d42748f3e7e8e3f858c47738a3f65783a60792c72863e6a843f68803c6b8a4768 *7e3c647e3668823160772d607a2b5b78365f7d3a5e7d335a76316678286e80366b803d697f3a5d *742c6a863c608245607d345a763162782b52742e52762c536b265470305170364c692d5f78335a *70275e702d5e78395a6e2c5d792c5c80346386335f79365a782d5c6f28626c245d6f2362782d61 *6a2f6281345e7d35606f325f712f67702c566b27546f2a4c662956682a6273325e7a375f733054 *6d2762782c6475345d78375b6f366673336a8241738540687c2f6576296a7c3767813c65783a5e *7336536f2e56762c59783260843f657d31667b3f596e2c516c2a5271306475286e7e3c6172325d *7226566d365968214d6731506524526d2f697430657f3b607732516f3057723057692d536d354f *672c547031516f42516d37536e38607b3c6476345d73355e763c7e9366c4ceceb6c0c15b833d59 *794c5c752b476a2e58763d4869355567274d672b476d3247672e47682b48682b567534466d3152 *6a274e6e2942692d3d643044632b4565274763254c7230536e294e7337456e2f456b3140682d50 *6d2d4e6f2c54712e526d2d516e2e55712f4c682a4c6829576d2a4b67204b6626485e1f4765244b *70314e6c254e6f2a4c6924416c3a496a295372264a702d4b732f466a2c406227415d224b60294c *692b4b733141672b4762254c6d2f5a793053702e4e6a2d506e2b4d6f394c6d254c7531476e3051 *733554773a50742f4f79375678354f773446703650733a54773e486f2f4d71325175385f7c2f4b *6f2c5a7c3d497332487033496b2b507236517838597c364c6d2b4f70324c71324d773657793756 *7233587d34597b3452774047703654752e527c434b75385782415078314e79335778344f793f64 *803e5c803f5681456586425d833b5f8348627e3b5e7d3d61864b6283356380376b8848607e3f5c *823e5d82355e7935608240607f3b5c73345b78314b5f1f526e33506324627e3b5d7330697b326d *82346d88426781426587436c8d4758792b60813f5d7a3666842d68833b547b3456782f53762b4f *793f52773462803e627d355d793467843f607e34607b3b6385466987406c8b417790437b904972 *8d416e8f456d915d6d8945748f507390497f995478954b82974e7d944c74954f718f4d6f8e537b *924a6d8c466d95466d8e467591486a914b70853e6e914774914a738b447a8f4572934672924878 *8c446789446987445b843f6a8642758e426e91406c8e48648444658d4d648c44658a4c68884164 *8940668a486b90476f934a6c89456d8a41718c416f8c3e6387406d8d476d8f45688e436988406b *8c416483375f844257813f5d7c3461853f58813666842f6a8c4370894b79925d688540617f2e65 *86426a8a3f6a8b4273924c6e8a44778b3f69874264854161843b5a7d3b6a8235668033698d4873 *8c436d904c65884d6788426c8e496789436c904b78954c869a4b83994e839b54839a51819b5079 *99577a9c587f9b4b849c5691a15090a45c84a26389a15c8ca05b839f6c839944829b5381995684 *9b4c93a4648ca57292a05c90a45c87a45d92a46598a85c92a5608a9b5291a25e92a25791a45b93 *a1548c9f548da1588f9e49a1aa67a0a75e93a15d97a25795a26093a14d8ea05a8d9e59879c597e *964f83964f7c934685944c76934d748c487d954d7490447a8f3e7b934781964d81984e899a4a8d *a35a8da25390a35c92a3608ca15a91a055a2b07e8da4708b9f5c869e558ba15a8ba25487a15c8c *9b508497488a984b8797498da2518ca25c89a0588ea358939f4d93a35c96a25893a4598a9d5092 *a15895a15a92a55f96a45494a45d8fa0578d9a4c8e9d518b9d508ea15090a1548f9c5396a35b8f *a2558fa15a919f568c9f5694a35e919d5296a25391a2568da25891a258899b50929d538f9f538b *9c5a869b518b9d58889a4e899e4887a061879f5b899a587d964c7c9347799347738c43768e417d *99486f8d406f8d42728e407c924080944d6c8a456f863a6f8a3b6e893f6c8c49698c4569833c79 *9245789348758f3d76944e749049748e49718a43728e4274853b72823d748c3f7d8f46768d477a *904272914c748634758e40738f49758d437e934c7e91507d8f43788d428297517e914385985680 *944785984f829952809a5781974f83974e81974d78924676914c79944b7d8d447a914a7b934a80 *9349758c457993447691498093437f9343748f48748735758c40728b49658a4567863d69843469 *863f738b436a8744647f3a65823f69834265863a5b87436881426c843465833467854267874267 *833f6885436e8c41658a3e698c4060833460834465833e60803b5d793c69854067813b6c8b396d *8641638033617f2e5c8033657f44577630527a3a587c2f557a36647a4057753a5b783559763156 *7434577b4160742d6d7d2c66813f6785355c7e3168863a61803c627c3b5976325a7f3a62813a60 *80325c79356281365c81406984327087446c883e73904260853a5875316c8030637f3564843a69 *833a68844167853e5d78305a7b345f772f5f772f5c762d586d2f5d732f597535567c3f63782755 *72275f732f647b30587c31617e3d5e762e5d7a384f793b50752b50763b557534487130526e285b *6f2b5d7626647a37728b396b8c446c8743698541627d365a783e6c853c6181426c86366981366a *792c5f7c34698136637b3f577d2f617d3762803e5c8044617c345f79316b8235657e316478305e *7d3659763a577f4155732c506e285b6f2c55723254742e57772e53763a5f81435c7d30607d3265 *8332606d29556e295777345b792b5a7d3d597f3f5e72386283386b7c326e863d616d2d657e305f *76315f7b404f6f3d5a712d59702d596d2e576f26566c3156752d5b792b55723457733157713062 *7d3b5473375c70324969314c69385171345870354f6b374f6b314d6a307f976cc4cdcdb7bfbe60 *71334f68313c5c2b4765244c6d364667334f662a465f2b4e69314a5225445f273655214267243e *5b214166223b5e23456327425f1f4369214567263964273a6423415e293a6024415e234566224d *6524446325536b28607e3e5b743753722f55712a566f304e6d2a576d26546f3150703251732f4b *6b26506b25546d2d546f2a566f30526e2c42672b506f2d497240526b2450722f4d6f32516e3056 *6e2c5972385375305c7638607d3660813c5c793a55752f4f6c2e537a3853722d4e6a2a4b6c2d48 *642e436728456e314f7b3f557f40597a386080415a763e627e3a5e813d59763456793654702b56 *7230627c385d7c4256793d5c823b5a752b597f3c5678345d7e3f537133587e3a607e2f5981425e *844364824061864d6587436984475779366c813e5e8543617f3f527f425d7e355f844261813953 *7434677e36687f3f5d762e5e7831627f455f83455e7f426887486587446583375d7c335d844162 *84445d813b5a7e3b61824165834167853b5a83476c874262833b6c833269854572843c668c4c70 *8e4f6f8d4872934a6f8f4c6e8a47728d476d8a416585436d8f49728c40728b426f8b506c85436a *8b4f6b88426e8d476e89426b8a4669893764894a66813f627931537a3e5c772b5c7b366783405d *83426a8a406d8e476d883c698e46678441798c466885436a8e466e8b446c8c3f69883d6c863c6b *8b4970914976914e678540618c4b6a89416989416e8a406d893f6f874069853c62854269853a5d *853c61823a68833a6686425d833d647f3461823660823e5c7d4066823e658130668c406d8a3e5d *7f365e7b315b7d3b577e3460843b6882436c8e3f5f80366a8e496d8c47738c4f6f8f48658a4668 *89446b91496b934f788f4076903d718d41768838798f4c6b85456c89416a8237728b3e6f884073 *914a75904b708a4473893b698d4c6c924c739248789042788d4f78934d7889427a9253758d4e77 *934f728c4273893d75924276923e78995d7e9a597c9851859e58849c55839a57859f54859d5486 *9b4f879d58859b52829c5f7f98518d9e528a9c56859f51859c4c849a4a8aa160869d548d9d538b *a15c8ba1598ea25e8da4658c9f56929b5085994e879b518b9e588aa05385995481984c8a9b4c7f *9e5a869749899956859a538fa35c8da4648d9a5c8ea46691a056889d568c9846899a52828d437d *8c4679934a6f924a7e953b809a4d8599478897467e924275944c7899557d98547e934580974f79 *93487d96488295448ba053819745849b5a7e9650819b5386a05a859a4e7d9750798f487a8d4079 *904781964781985184994c7f96478697438a9a4a78954c81994b85994681974a819849889d4b8a *9b4e8d9c4e8d9a4d8a9c4a89a35891a05b8e9f4a8da2618d9f5197a56096a15095a35c96a4608c *9c548c9d5593a87195a6738c9f54939b4f909b4790a25292a35090a2539aa55c97a15a8d9a4c8c *995a879848849a497d944d7894427e944d779145738d3f69873c6c9244798a3a7e9345748b3d77 *9547758c3b75904678934a6e8f447292466a8b48728b41768e416f8d3e758a4071873a7088356d *873e7490457b8e437e8b417d8f417c8c3c7d8f42728d4278913f7f924882985189974982944787 *974886995086964d7e96507e9549728d467a914485923b80974b7e95487b92407c91438a954a84 *975083924e7d8d3c81974a808e407c964680974b81944683994e77944e77924b7f95467c91457f *8f467e924a819a558398537b9252889a557f91427a90427f92477b944e738c4b6f904c728a3e7c *944c6f8e407e92426d8e486b8c4a6b853a6485466a863f6c81366c843e6883406d873b657f3364 *833d64853d6d823b657d3162843a6284346c8b3b637f345b752e5f773b6c8845718c4571894081 *93477a934b758e45768f4d7691476b8b456f8e4f798d446c914e6a8e3f6d8a3f768e486a853961 *78316784416885406b89416c8a4e72894b798843769145758b3b6b863c72853d67873b5d7f356a *8d46648544638749627e346b863e597d2f5e7a2a6475296c82366e7c2e6d7f36657e2d697c2d67 *7d37697e3d66762f657a2c6a7e3665762a5f752d6b7e2b688134618230617e2b5f7a2e65813a63 *823f647e37647a2a627f305a772f647b2d5e7830637636556e245c72314f71295d702e53712c60 *7d2e576e2d5f7d325f7132677b31647b345f72285f7a26617e346e792e7079356b7e2b6a84386e *81356682386d824263792a5c6f2768782a586a1f5d6d2e6a762f667430657e37647730566d2760 *7a335a76394f6f325d6f24657e2f70803966804261793456722f55722e5877315d72335675344a *6e335f7a3c57782f667f2f607d32697e30536e2f5b742c60732e6081385e76385e813a667a345f *7030697c3053692b5e6e2f5d722b576c2e506c295c6a2c526d28496527576a206a783560784058 *7135566a334860314e5e264861264c682f556c2d5463274b61294b58274b6a357b8e6bc3cdccb5 *c1c05a724052692c4f763549673253702d4863295371324c69304663274e5f274463314258233c *5f2d4766263c602b3d622e40602d496729466532576a2a486c2749642543611f4c6325446b3353 *6d2b4c6d2b576d2c5b712a677a31677e4a677a3d5f752f5f773a59793b5e75345d712b5a753760 *782e526b2958763260793259733a5a7a3a60753161752b52722e62713653702b5b7331586b2d52 *66275d722b64732f5f7531697a4263793a61804268813859783a6072375c752e608241567d3659 *7d325e713150743a54753152712c4b71344c6f2e4e6d3056713153793753722d5a7a3b4e6f3c5b *72334f6f2c5d7c34527c3f5d79385778445f7a395f7c395d7f4367863e63824357783a5f87426a *833e6b87445f82416e8a42768b447387436d8a4969844473914c6c834372843e6f833e64874254 *782b5e814766813d5e81466b86436e8942677f385d82456d8334648a4f6e853d648037607f3d6c *813d6f82336d8647698540728a486e8a497089487688426383446e8c4874914464803c607c426c *813f6d8240738c41799248718c4f7694556e884976904d718d45829547828f4281914e788e4e6d *8b46637c33657e475a7a376681375f753c5d78315c81375b7931597327617d325b80395a793553 *7b3b597638617b2e6786465f813e63874262813669874663853c6b8a446785405f77375d783165 *82345e7a2f61874860824761843c6a85437a954c7a9146708e4673934d7892426e8c4476934972 *8e4170904a6592536d914f78985c7b92486b8a406c8d4c6c8e4f708a407891507b974d7a914b6b *88437c8f457885367486387a8e437d8e42778e43788e43738a4b728a427e924080914477914973 *904977914881984b7a9146798f4883944b778f42839a4e81974881924c768c4886984f80965c7a *914b78924b78934c7f974a7f974f8698557d9b64809b55869a4d7f974f8695487896447892506f *89417b9047728e46748e4b789047879d56839b6384964d829953889c547e9d4c7b94477a974e78 *934c819857869e62899f53849c5e8c9b51859a4e85954a7e9751798e427c944a728f40768e4470 *8c407d933f7c984e829c5081995880985b859e52859f51889b528d9a4e829b577b904281954f78 *934e7590487990467e91447d914589994e889e53869e5c92a25e8c99508c9c598b9c488f9b4489 *9d50849a5a889a55859b56859c5689995389984c8a984c859a4e7d96488498497d984f7f984e89 *9a50859d5f8199538798428b9e5282944b80944881924789984985984a85984d82974b83994882 *9a4d8897477d924283984d7b92487d9048869b4a7e92427d8d347f944e7b8d437e954087985083 *9b5983964a8b994a87984b8d9945939f4d8e9e4d8d9e4f91a048859b548a9a527d984f8d9c558c *a0548e9f5a8c9f5288985186984b87954581944b8091527e944f899848899b4b889748859b5085 *97447a913c7d923c799148768d3a7e9242788c3e7b954c6f8c456a893a5f854357762e64803a59 *792c62823a6d84326585396e86377088426a8a4078954c80913e7b8f44778e487e8f447d904071 *92477089407d924e7a8f40778c427f924b808f407f944d7e9549809545788b3d7e99508c9c5c91 *9642879857899649889a58929d5c959f5c86914e87985189984685984b8992438a953f8d9b578b *96588d9a558b9d5f94a15685994a899a51879541818e4283964385964b8a984e8298517a904988 *8f4780944a81914b808f4689995c83944c76934682924b7f8f417a8e45678635647f39677b3062 *7a2f6a8c43627e386e873f798d458093427991447b91477892486f8a3f6b8c43748744798d4276 *8c477e90487b8b3e79843975873b6c843b6e88426a843c768e44708b3c75853d6f8c4276883b79 *8f4a80904a7e93567a904a7891467b9350798938748b497a8848788f507a8f42778d43718d4c6e *874267823f6784356b8b36748a4377883677914a788e497d92457f924d7e8e40759551718a486f *854163844277823370854b7181366876335f752c6c853267813a7487356b7f3670843375914773 *8e4175924d7285326b883f75853d6e873c6e8c416a83406d803e6f88446d8a44778b477887386b *813a808d40728b4875843172823970864078853e6d8232677c336f88426a82355f813b70823772 *843e6c8842607d3a6b8032526d295c6d225f71245d76275e75284d6b2954732c536d2d556f2453 *75266380365f773454783360732b6470266b7d347281315e7e326278326a7f386b7f355a7c3865 *7f365f71345b72356071306584396071266980396a8241697a3263773364762857793457742864 *7a29688038647a2f6481326b803d5f7d3f597f376682356c8233657b2c5a733667833763833d68 *7b2f6a7e396471345e7034566d294965214e6c2652722a4c672859662a697530536b2d5b6d2959 *742b64752f5a6d2b4b682a526d284e622b59692c5d6c2f5d6d2b52672b616b29606d2b7f946ac5 *cfceb3c1bd526c334a6b30526f32526f304d6934506d2e4e692a4e6b2b4065344c642d516d3749 *6f364e6d35476a2d476b32526a2f4e6b29486b2e527336597533536a304d6e34516e3247682b53 *712c4b69274b6d2548672646723c517739597937577d3c5878325473385a7a3362813755783556 *7636607c39607b3450763956793e54763b5674385b803257743a577c424a763a527d425f7d3569 *823967823a5f7e365c7c36607f37567e39607e3a577a3862834766833f5d82365c85415a864561 *83405a7d42568048557836557b3b557c334a753950783b4f7c4464823e6382405d803859854364 *88425e803069803c6184495c823c6685426b86476a8745618544608548648646637d4269874b6a *8543648040577d36698847738b486e8c426d874e607a3d5b7b376683435e7d3e60853f6c8a4c6b *894b658a42698c496e8b3f6586456e863f6a88486281366082385b77345a7d3b5e7c3e5f823f69 *853d6681405a824562823c69813e61824467873e6d8942638749607f3a6a874663814265854966 *8643698b4d6f843b68863b6886476288485e8340687939698837738a476e8d43758f4c79944b75 *8d4c758a446d864461874c6e8b466a8c4c5f86476d86475e7e3a6183415a803a768e466a823c69 *8a4366864268853f708a4b6b833c5b81445e7c38617e3e6a813e6987456b8a426384476a803c6d *8a406a883d69833965853c6f925c688e54748c3b6d8e4c768d4875924d7d945071914776924875 *97507297507295466784356e8d40597e3a788e40638a3f7590456d934d74974a7893458093487d *964a6f914479964e7f964b7e934b88995383994f89994e8591447a964e829c6284a0597b98597a *924b7e964f7e9a59829c557f974d7c9954809f65819b5f819a60859c647e98507a97436e914585 *994f8495497696517e985281995e829e5a80994f869d5182995383965679995f889a537a9c5e80 *9a517d9956799c577d975374914c7c9752799a5a7290466f924f77924d7a90476f91457891437e *8f4678954e708f487488436d89487295536e924a6f94507c915979924a758e4375935073914869 *8845658c4c778e406c9043708e4f6f884a879b5a849c547d9a5286a059849f58869c528ba05081 *9547829a5880954a8a995085964186a060879f67869d508f9f558b9d588ca1568ca25f8aa15892 *a15291a35b8b9f608d9c5d95a0578ba15783994f8b9d4f8d9a4a8192417c91478192428898478b *9a4b849444899a4f89995681944581974f71934f849747829c5277974c839b5a8398448292488a *9c53839951859a4c8a9c528fa1608e9c4f819545829a5d8b9c538ca0518f9c5089964d91a15592 *a55f92a150839d518da25b929c4d93a25691a56491a05c93a159939f4f8e9c4e8fa0568ea15090 *a15c95a15c919f568e9d588c9b4c899b4e86994b889b50849648869343849a4b859c5087a15c89 *9b4c8697527e8c3c7b91467991437d904985974b7f934b859d5e7a944f789045768f497190426a *8539708731708d43769047738a3f6f8e3f6888417b8e3a78914a779042718d45768a3a728b416d *88406881356b853770853d6e883c75883b687f366380376d87426886376e8a42738c3c728d4383 *91478396487e93478b9a50829b58879a4c7b964f7e9343788a348b974884974a82944c869b508e *9e58829f5b869a5287a15f8d9c598b985d7e964c7d99507a974787984b879f5d82994c86985387 *984d819851859d5d7d9656839b5e8a9957809a5b7c914a7f8e45768b4276863d6986426b89466d *8a4177954a748f4967883c7293487a8d3e798d4d7b914a6e8b40698f4c738e436f863e60802d71 *85347a9040798c3b778d46788c47799249748f477b933c778c3d698743718d3f7e924b748f497b *8d4182904080964981984d86934d768f447d90427991487d924782954a8192407b93417a904878 *8d44738b4d78914d718b496f8841728a43829241768d416a8545718e40708549657f3d6484435d *7d485e7b2f6d8d43739140708a3b708a406a873a6882346b884165833562843861833a69873c72 *8d4272853b7d9041698440698641698a466e8a436b813c778a4168803a6a83346e893d6b88426e *88406b83406e89446a84396f813a6b7d3365803c6680396f843b5f7831627f35677e306881336d *863f667b32577e385f7d38677e315f7c3656783b5b722e546f1d64803154712d57752e4f763455 *72385373315269284e6a2461762d57712a52732d607a2d6277335c76375e7a355f742f6a833470 *83375d782d59783a59732e64803b5d7f3a52733167873d6a852f6b7c2a5d80316382385f78305e *7f3168823566833f577d396583326082406282455a6a315e7a3b5e752f5f783652743a67803364 *753459752f52702f5670275175396777315f84475b7b3157732c52712e506a2f526d28506a2f55 *6c23526f2f53712e5b6b265e702a5f78345f742b59712b59792c566e38566d3052713456662b81 *9261c5ceceb5c0bd687d434369384c6a375570355a73384c6f304f713b53783c537338546d2e44 *6a2b4867344e6e3853723b52773f4f733b64843657763f53733a4d744053763a50703250733e52 *76384b74354871334c6731597434557337577433567639507239566f375d7a3a5e762e57753a5f *7a3a5a7232637c3f627935647e3e567a3b4e703a516a40537132516f2f5f7d435874344f7b3f4f *7937577a3f4c7038506d2b5a7b3658722e6476305f79365b7b365a763256793a557b2d4d753a47 *6c304b70324969295673355b803c4f794354733850753e50773b62813f5a7f4555783c59773c64 *8038627f3e547836637e38617c3b637f46637f455a7a3c64773e5b7d42527f43628338567f4364 *7e3f5475375e813e5a7c3a5c81435d7f446283405c7e3d6282415c81446f8d4868854a667a3e63 *823a5d80405778436483476a8a50768f5075914d648b4b5f8640688d4c688b4867894a738d3f6e *8e4969883f6c8a48708d43718f4a6d8a3d6c884761884a667e3b657d416f83466f86446882426a *833a6882466a8d4f698d48708848708c4a72935270924f75904380995d7c994f81985281974c80 *955c849a5e82994e8a9a478498556f93527a904b7c9868839052718b4f728c4e81904666884665 *8741668a486e86356b89407b8e4977904c7b924e8297507e9861829b5c778f4a7f945779894a78 *8f4a7e96607f995476945778914e7e954e7e924c7f92448498508a94497687487b93467f924681 *9750839545768f536b89416d853f7593527d914f6c924b759253678a4364803a7285437b92487a *9147759043758f427c9146778e467690497b95507d8e4c78934a6f8b44798f486f8e4a768f507c *944c728f477a92466c8d486f924d73934f6e8f49718e446d8d4d7d98587f95526c904e71914f6a *8746718c48768e406c89406e87447090447e91437991557f954d7e9a5c7c954f7698586f8e466e *863e7a9652708d4975944b6c8c467c904b7f964f7593456e8e4c71904e72914b78955776914d7c *95568199577b96577b93537591507a8f4a70914f778c4a6d8d4f8299537b944c7b924a7b93527b *9759778d4c768b427a9047688446728b4a64844263853f6c873f68853f798e4b7a96528698518c *a065849c67869a478e9a548c99508a98508d9b60959c4e8ea363879f5d8ba4678aa15c88984d8a *a05c8d9a4e8f9a4f8d9e56929f6192a262879a5d8999558d9d5c8ba05d869b5a8a9f6180984d89 *a15d8c9e528e9c4d8d9a498b9d5084a05d8e9a52879a578b9f5e84974d8497568397568091488b *9a598a9e538c9b638c9f5f81995087974f8d995786984d87994e869b4d8c9d4f8a9d4d8d984f83 *984c90a362869a4a8a9b4b8b9a4a8fa05b8fa4638fa05d8e9f608d9e5f84984f8c984d8b9d508b *9f558a9b4e8d9e5f929f568b9b528d9a548b9a54939f5887a06593a25d8da06991a15f87994b8e *9c4c8d9f65909b49879643838d437e90477a914b7e945288944888994c8197528a9a4c85964988 *97517f93578097507e9147808c497b904884924885944f7e9a527f945081944b83944a7e923c7d *9349768e456d8c47768639738940828a3d7c883c768c467b8d4466873e6984427588416a823969 *822f6c8b477e8c467c92497991498693477e91497685427a92477e8e437b8738748c417e8b4378 *8d4c8196567a9146859b537c93448091448493427b954d7d9146778e4f7c8f427088427a8e4276 *8e407890457d8c3d6f8d486e853d798d3e72883c798c41778b426c8b447189426888496a844174 *8c49658b415d86446283415e813b708b436c853c758734728d436484436a81325d803765803562 *7f346980426b84397386387e8b448293487b924b758c487f914f768c487b8f4879914a79924576 *904e779446708f476b8e47718a4b7287416c87447a8d44788d43768b4a6d8040728a4f6d8b4072 *8f49768e48798b468997497a904a73924a79924f809150849553718748778b416e8b466d8c4064 *843e6781416f863d7c93537c8d477c90496c87416d86416f894a78904a64864375863a6e873b6d *863a65732d62813f6584466081426d88496584476a80396c85456c813d6f8d4671883f7c91456c *8b445d83436d85435e803c5d75375c78386680326b884268833e6477375f722c637b3261793564 *7d3a6d863f577438577234566c2a576f3150703a5c79374f7635617b31627e43566f33506e2d52 *6828596a27527538507d38526727627c346581385d793060782f62813e68833d6884405c813d6f *833c667b2e617931627c3067803c657f385e732d506b30556a27516f3555722e537439587b355c *732b58743560732a687d2e677a376a873d6985396c87396e863f677c35607b2f647c3158713160 *7f3a5e753556752d536e2f5871285776355c7936597433526d2a5e7532526d32556c315d762b5e *7131566933596f34557033516c345e71315d7a405a783d5271394c6b2f47682f46662a4e5f2a4e *602984936dc4cdcfb6c1c15c7d4353743a53773c5474315a723466823b56794058804558823e4f *733f536f3b536f3b5570295679406a77336083435a7b3c53753a52783a567a4056794450733a5b *72305773395676334c713c586e3656723159732c5675305a742c4f6f2b4866264f6c3053732c55 *763a52712e51743058722b536a2a506e2f4c6d2d586d285479354d733258713750703155783c5c *7e3b5872335a77345a78374f7039617d3a517d37537b37688141657b32697d305b7f2d607b2e62 *823b5f7d285c7b326078365d73315e7a385e7f364b7531527a3d527e3f557f425e8445617a3961 *79346881416181425f7e3c597c3c5077355e81405f7a3a5d7a34617d3f5e7f3f5c76395d7e3850 *6e2b5380446486405e874d64844b70884863884c6482486a8b4f6b86495c7d3c75884d6f844070 *8741788e42678b436b93476c8d4b6a8a4c7a94506c893d64833b668642557d3c5e894b608b4d67 *8a466a8c43708f4a788f49728842758b4a6382405d824569854a6b8341667f356d81406d854868 *8b48728d4a6a864c70883f607c3369854064813e6485406481426e8e4f728a407791486f924a76 *924e77954a8193447e8e3e698a3f79934a8597538f994c81974a819b4f83994b7d995682924b7b *91487c90467f954672904a7e964e7e994c8697497b964b6e8e4770914480934682964e7a964f86 *9c5a829a55849c5f879a537b9750819958829b587e97457b9752899b4f8493487e974e80974b7c *98508192447e953e758f41768d4278934181974e82924c80945082944d7392496c8d4a6c8c4a6a *82446a88436f8a41748a3d769046758f44768b407f904169863a6a8640678444698a436e8c4d6a *8d486588406a873d6c89466b8940698435708e4e6e8d4b769551728f4b708d4378925269874377 *8c4973904c6a8f5175955575924f74975177924880954d86974f85924a72914d7e91487f924b70 *8e446d89406e86426f884668863d63803c6687436b8b42789248819a4e809b5681985082975586 *9e5a8295487c924380944f83995a819e5e8a9d5a849a4f889a5e7f955080934f83964e7f975e79 *944f78964d7f96508b9d5982995284984a7d964481994c7a93507f984f7895517e985e7b935081 *994c809b567f965b7a924d80985b85944c899b5389974c8c9b5f90a469859c59869c5183985882 *985481954c8796457f8e427f925081954b7c964b89994a7a974d7d954f7e9442718e4d71873777 *92446f8c3f798f4a829149848f47748942758c3d7d873b808e417d913c818d3c798c44778e4a7f *914d728b4a7c9246798f427b8e466a854068843c6c863e718c4274914a81995381974a73904a76 *8c4075893f69863f6d89376a8e456c874372823c67812d698741778e447a8f44829148848f4b83 *934f7c965f7a98508599557e9449788d42768e427c944685984c829350829a5a8399537e954281 *94448696467c995380924e86954b7990438195498193438495497e9450859049849045818e4884 *994e8c994e8898518c9e537a925090974c8b954c7f92497c944e8495457a903f83934783974a7f *8f427e924a7b8b4273904b728c3f728c41798e417e934c7f9443708d46788e427d8f417e943e83 *924481924781994d8b974688995a8e984880974d8090408192427a934b7d954a7e8f3c7a913a82 *9249869343869246829951869e4f85974c859a5880964c8c994485943d8193458193457d954086 *974b83974d84994c82974385984b8292487f934b7891437b944c778d43768a43798c4474893e81 *934582964f80954a799654718e4b7d9659718e3c809145708a3c74944f7b92447e8d407993487f *914179974d7d93487d944879904d8492588292528a92477e974d6e8d427c954f758e4882924887 *97478396577e944b7b914b718d4a7088447186416f8c427290477387416a81406f873e6680326e *823b668134678039738837748c447283417b8a497f8b3e7b8f4d758a43768a42838c4281934881 *904a78884074884074853b6c873b718a35727f30728b3d7089455c7d3e7991486c7e2e6582326d *853a587a3a5f7c36657f3269813e697a3f66792f5f742a5e7a345d7c34627d366b81376e823671 *863e69873a648334657d2f58702a596a2d54712c5575364b6a265472314e6225697f3062742b57 *75335672295e74245d6a2b6a803060844364803c5c782d7179305c762c6579305f7d3f6181395c *803b5a71314e6f275570294d661e536a204e7535607c3d6583456c8939627c37668238677d316e *7c286e8432657e2f6a7e306c833c728441688340647939657128526c29516d2b47692f4866244b *60235171345f7f3c5f7b35636f2c657b326a7b3276853d707f356c8745647a3d5f7c3a71812e71 *85415c792f607d33647d466c813765864767834265843f5a7a3f5f7d3b547a32567435597c395f *7933627a425b7a3c5f7b3f547137537330567b3e4e6f30546c2f54743a6076385d7a3960783c5c *79346174348b9f6bc4cdcdb4bebd6e853f59793b57823953803658753f587f345d74315778385c *84395676395d73395b803f5e77385380476580335270315c79386379354e6f2f567e395279355b *773e64833c657b3b607e3d608338537f40557a3e56753665803f64813f677e36617b3753793660 *793764853c648236598041557e41547e305b742e55742d647e436984396b854965844160814564 *813b70874469843f577a345b71385c7b33526c2b5375376c813f668541738b4071893b6c84375c *752b697a33587a3561833f5881366582406b86416785415f7f405c844761834363864758813b6e *854664874a5f813f5f803b5f7739628643688b496181386286475e8237648543577e3865823464 *86405d813a4e7d3556864362874865884273924d688b50728f43698546718c4c70914b6c8f466b *8a4866894c6c8e546782406d8f516e8f496b884c5f8a3f6b86415d863d5882424b78375075365f *7732536f2559752e5b742b60803d6a863b61823c5f7a3a5e7f3c587f425f823f5f834266833a6d *854064885167905271904e6f883c708b3f6a8647738a43658545698c416d823b728c487991456c *934e70904f6c8d4d75924c6f823a6f8a4763843d6e8341658743758e4773944d859a548199437c *98527095467a94456995496a8f486e8f4d788e457a8f467c944c8294477d954c73914e7792497c *9444819747869548859b548299507d93407990407e924c7293437f994c829955869641839b5c80 *974c7f984e80954c7d9349809b50849849809449709251769451819552799650798e437d934d78 *924c778c3e7d96547a904a759550658d466f8a426a87407e9a5d7e984f82964b7a92477d934f78 *965a7586446a8c4a648745648d43708d41708d48718c48718e466d883a75934479934876934c81 *964d729441768f4a7e8f42718d4261844270924c7692447d9653779a527f8e45728b4581994c7c *9c5f7d96516f8f477a894a73904d779647798c4b7887407389427791537c964a7c97477a95497c *995585994d8399538097567d975d7c975a849c5983995b839c61869b5787995b8093487b8f4a7c *904a78924b7d955578964f839550758b3c78954e808f487b8e4c8192477c985276934a7286406f *8a41768c3b7993476e814175833a77924879904e809453818c417e934d7f994e7d8c4281954b81 *9148768c457b8f417e8f447a904c7d944c8194457f9241758d39758f43769048708c476f884462 *89496a893967873b70873f6c89447d8e426e904f7790407b925078914a6887446a813c728a4072 *863d6a8a3d72863a6c833a6a863f64873c65813c658541617e3863823a5e85426487426d873d74 *8c427489436e8b43647f3a6b85406d823d6c80366d873d67863760853b728c416a883c68843c74 *8942788a3e7a8e437186386b8f4c6b8c476a893e6e84376c883b77893c788b436083426b80396d *843a63834260843d6d893f7d8d43688233758938657b326072276077295f722e4f5e185d712c65 *7e33677b2c6c853470863c738e42778d486a85458290467d8d3e7d9044738c3c7d93488194477e *91407a8b437d904c7c923e7a892f6e7d2d697a285d7f2d677a2a61752a6079375d7f3b6e813c69 *823162823a7e944089974786914287964d879952869c588ba0508d9b4195a05886954378913f73 *9447819b5f81914487954e879c588c9742909c5188994c859b4f8e9b488c994c819643889a4d8c *9f4e919e4b90a05591a36785994a8594438493468e9a4786964085954784974b89963c7a94447e *923d8497467c8e3d79914779934d62904d718d417491497592506c8b447e8d3c7d934b7c923f7d *924082984e7c9344849743849447899a4a859748859749829647819348768e446f883e798a3876 *8e4685934373853b7389396b88405e802d647e306b7f3468853b668536698030637f3066823367 *7e386c7e3b5e7e3e5e7d386a81376a883e6b87426983306f8e3c6c8934668335778a386c7e3269 *833a74862f6e84347e90446f863a7b90437787357b8b3d7b8e4376873f70853a6e873671853658 *7c315478345c7e3365823d60802f5f7d2b62802f6d8a3e6b8a4962843168873b65843c63792e63 *7d39658134677e2d6a843c64863b627f316c833c617b2e63762d61793465803d687e2d6d833768 *8647708a3b6e843e536c2b587932647b3767792a647d32547634647b314e6f2b697c26647d2b65 *7e39607d356c80306678296580306a782c5c7c3057782d5d7d3456732e5371214e6d23567e3358 *742f5a7a325b7d336277326b823571844166843e6c843b6f873f66813e6581425e7f366178335a *722f5973245c7f305f793550723f607c39637a3a6e8741617c346c7e2f6d803a6281406287476d *86416a89486c914f718a3f69894b70873e5f823d5f7a2f597f37587e4065833960854a587c3264 *78366579345779385c773f677d365377414f72405b793b5771385b743353692553753a547a3f61 *7f406e81397185408da170c4cecdb5c1bb657d3a597936537635486d2f5d7b445c7834506f3860 *782959752e5279395d78355c78325d794765853f6e8b3f5c803a68853f68823f6c83335d782a6a *792a6d81316376386280385a7d385f782c637e336879306b853f6f843f6d8b5072864670883b68 *7f33687c3566823668823b5d7a3a627d35537b3b55702c5e7b385d7a3267854269782c6a814260 *763a6380316582456982436982407c8b44738c477d9547708b406783436d894c6c85426a883a6b *8745678437597c2d617e376d813b68833767854766823e6f8944698541647e3a68853763853965 *843c6987415f7d3e63844058803963853962803767853a5f7e40607e38607b31647e41647e3676 *8141658443537e385f7e2f657e30597a3451752f5d7d3456772559803064813772843668823e68 *813a64843769864c6d8a4b68803e67885560844763863e5c7e2e6d88456e843c61743067874a61 *7931648444708a446a82335c7e336c81386c88396e884266843f658139688541678441678a486c *863f6d89446a853d6f8d41698a40788a4b708c50798f4480964c799048728d437d9143838c4080 *8e4881924c7f93538295456a904a73903e829247798b3d708f47798c3f818b387995487f954784 *994d8496488095497f954f6e8e417592496f8e437a933c8098417e9244829a4f8a974b88954a88 *954f89984c8a994c899f4e8aa35c8ea160919f54909e518d9c52879a4791a158869e518ba0508a *984e8091438f9a5087994a899b508a9b4e8496457f9345829843869341809142829246869b4e7e *984381984d8493468197517e95437b98497f944973924b739245778c4d6e8a46748b466d893f75 *8b3e6c8337798a3b778c3e6e8e49748b416f874271874072893c6e853472893b6e89416f8d426f *8533768d4370985b708f476b8a3b67812b69843270873a708c4078914579873d728d4575884077 *903d7591477e924d748c446984316f8d546c854d748747758e477f92447f9340798c35768f3e7a *92527c954e7990458293467f91407f9041778e487a91467d8e47818f4082934881914b7d8e4683 *94467e8e407a914e7a9143748a41728b456d8a486c863c7f954881964085923686944080934876 *924b758d3b698b426c8f4d6b8736768c3f7f954f778b46758f42798e4480944c80994d748f4875 *8f44748d3f7c8f3a758e477992417492467c9550819644819449819447798a3c7c8f37698b456a *86416e8c497289406d8c4474904f6f8e4e7186396f883e6d8b3a60814261834469853f73823272 *863e6a8434768d3c69813c76873b697b2c66812d5d812b607d3a5a7e3959762d687b2f5f7c356a *81396c833e648241798f486f8940698d48758c3b738b3e71893e788c3671863a6282365d7b3768 *822e6a8134738e40718e42788b3c75893763813e668236748a3c6e8d3a758d3e758b40788b3b71 *8d3d7991506d812c6885316381327b873864813c6581296784335e752a7086346e823875893e6f *85306f8538687d26708534748b3b728b4070843f858c337f853a79823175863c788e437e95436c *8b3d798d407c8e42759048798e3c859245809143788b3f6f852f7a85367d812b7383356b843872 *812b647e3b76822e768c37808e2f81923c84913c8a96478097447c8b3a819140798b3f778f3473 *84317e943f79954d79893c8292477586406d92457b95478496417d924385923a8c98448591387f *9140879c508d9d518a97428f9c438597408298448491428b954189954681913e8491437b944879 *923f82913f80933f7e913d7e8d3d6b893e7e8f3f6c8b438190427c96436d8b3b768533738a3e73 *863f7d914e7c974f7e9246799241758b447c8d407991487f964e7a945278863a738a3a7681276d *863b6c8b3178873076883b6e842f6484326e853a6b822b6483376d832672883076893766822e61 *7e3267813e6c863f66813d648233678535718837697c317688337a8b3e818e3c7685417f8e3f7d *86326c7e287187337783346f82327c87416c873a6e843c6b833070833f778430677f35647e2e61 *7f3a5f7d3166813164762c6f80226c862d70843172832d6a833c728a3f748c44738c3e748d4077 *91457c8b4772812d818838778a366e873d658639627d325e8041678035647c276b8131617c3461 *7d366483385d78326d7f3366813e6d802c70802c647d2e7180315d7d2a617e2e7183416676275b *7a295c752a637623647a2a5c7a2668853c6f8235637f3768802f647d306079295d702c51732745 *6d2b4e6f2a4a6a2654783260792a57792b5f7b2d697c306b80375b742a5773305f722e5876295c *74284e6d254d6521616d23536c2b4c6a2e4867295a793253733f636f3063723363722d617b335f *732f5d752e5a732c577141546c2e4f7329486c224e67285068264a671f5d702557722e61722762 *7a305b763062752e6272295e6f2f536e275871274f692f49692f4b5f2553671d516c255d702d63 *803b69803a6e832f77853a97a574c5cdcdb3bebc576d374d6933556630506f3845703254764858 *774b6b863951773f4f79435a78405d7f395573375c713b50753f556e2c6478385d803e5d7e3c58 *7f3a64863968824363813f5e7f4a557b47537c3b597c38587b4564823e6a8540648236637f3a68 *8448617e3b637f3a6883476b8b4e71894f6c823f69804268854563823b5671345b783c55784662 *77354e703b6080375a7635617e405a7c33526f33557d39668037637f4265803a597a3a567a2d60 *7b34618040677e395f712e577435578143698a4769893f6886475881356282406178385f824657 *7b3b687f355780456a85476685405e813b6689465b7e3b628239627b355b7b3b67833c5d7c3460 *7f3d648344718c4b627f375773336c8c4d5f854e5e7f395b813d6080336484476982446f875079 *89476c914d758a446c89476d8b4e61854a65844572904b71925475924f688c597593536c8a4369 *89496b8d446a89436788406c8a3f738d416e9048699052709248739349708f4d74925175914d73 *8e516c9058708b4a7a94516d8b436c925b6c8b4d7d8e47688546708a437491457c91427e96497e *985d72904f79935067894e7c934b6f8e4b728e4f80964e7f96548299587c934b7a955b7c965888 *9d60859c6584965583965084994e8397587592486e8c426f8e3f788d46678a4d738c467e924c73 *8f478196498298528497568196578798527e915188974d869a5281994c81984c859a4e879b5686 *964d8597508099537188487b91446e8c477c8d4487995086974f84974d789248798c466e8d4474 *843a70823a68853a6a8c4a798a41788c436d853c6682445f83455e7f3f5f712f66682a6c77326b *823a617c355a7634688136587a34607f326b82316a7b3071893e7287406c843d6b89456a8c466d *89447592477e90497c9247748a357486426c894c6a854267834363813d6c8a3566833e6e894572 *803b7084356f853b788c3f6e8b45718d44657e3c608137638944638545778b467b8d4f79945377 *8b47708d417e9049778b427c92517e9250778f49798f4b73884169833f6d8c3c7b91457890467a *965478955b8195507996537690486f853c6c873e7086437f934d7a924a7c904e89944a82935278 *9244769354738d48748f4c728b43678445698a41708b43637f3a61843d5f853f6f8c4169894269 *8a466a863a6983436384456b89496a833d6b833e68813f698a417a8d3c7a8b456b8c4c728a4776 *8f536886426f863e6f8f41688a4765843d698d4a7089436781427390466484436c833b66833c62 *874368823e628042708c497691486c8b436a89416786446584406587406b8b4e6283415f834465 *814371843d6485415f7d335f8543648641768c42789648718f4180924c79934e778f4760853b5f *89476e8c48788d437c944d7b90437690427085466c823b6d8b48728d44778f49718f466c863f74 *8e4071823a778c417995536580336483406d8b446a844968843a77914c6a8c47748c3f748c3f74 *853b6c8b3c718d40678b4465863e66853c667f3b72863a728d477b8c3d78893f728a3a718d3e7a *8f3f6b853c6a86397b8a36698839708d45778c406e8f466b88416f833a788b447a8f47778e4a77 *914d77904578924971914a7890408192467f934775944e869641768e447b944780934c6a863d71 *8b427d954b7e9143798f437c9249648a3f66853468853f798d3c748b41748d40758e387b8f4772 *8c3d728b3f7a9140758e43888f3d8191417b8f4183934b7b9045738d3e6c812f6c7f38677b2d61 *823e6884347387396d8a3e73863d708330778a3864843b667c31667e396c83344e7d385c793060 *7834657c31698b43788a41737c40657731607b396b85446f78397382397987476a843f70812f5f *7f36607a344f762f5e7832647d325d752b617d2f5c792c59783159722d5b71294f72365d722763 *7d2d7082336f823b697e30637d30627f3a61772964752c63782e61792d5f7325687a276a73306d *7f3f6d8140697f416a7935667c29687a2f5e75325c7729637d325c7b3b647a3a627c3a67813f6d *84395576285c7e3a617c306a80355c75336479376d7f36647d3f5d7d33637b2d647d3e657e3668 *843f6b7f3b6c803d6d823e6d843a5e7c2d536d2c4b692454682a5a69235d6a28676b248178225f *70295c7533637a275b6e285d7227526e30576d36546a284c6a364f642c526e2f52722e6277355c *6e2c4f6b294e6127547230526d30536826536e2b5e752752692e4f6b27436027475d244f6c274d *632a45632a4465284c64283b5b224462224865294961254a693349662d495e22466721465e213b *5e21415f264c61264d64234b6027435e22476226435c204c66253c602853672c4e6b2b4e692c4f *6d3851692a577d37596f24576d2c517138556d2e546928576e32586c2f667b34616d2b51702d4f *7429617532536f375f7c3d536f2f537230516f30506a2b5b702d566f36566a2e4e6c2f4c663257 *682f5569345a6b275c76416273368fa176c3ccceb1bdbc5f78334f682c4865354f703d58734352 *753b536f314d703d5670325572275f844352753b4c6e2e4c7e3e5c843a4d72284a713959793f55 *763055813852803853722e4c76364b7a3b5178355274304e73334c72364c6b2c4f6a2b577b3a58 *7b314e722d55752f59763057723258772c55712757702a5479315c7d325a823c5c80315b803557 *7e38567b306484446286476c863865863e4f7c3755784060812b5a8245577d31577e3464833a5d *81346281386481336981386c853358763a53783a6a8b3b64853b60863f63873d64833c607d3962 *8642627f39577b3554793064833f62853b5a78346286405d7e396781326a823a6686416b883961 *85406486486c89447b863a6b853a5f86485c834460824067813c608c4a7895527389416d8a406d *8a476f8b3c71914f6a86426c8d426e924970894c6b854c748a476f893a6d8e4d6b8a4d6f8a4769 *8742658136678a3e7486427c8945708e4e738f4873924c728f476685426481406586436c87416d *8541748d3d6f8944728f47738f486890486a873c72904873863d6788436d8a42698c4a708e4069 *894170954e7c904d71924f7b934c6a8c4f7991467a9048768c3f81934e74914f738c45778c4177 *8c3f75914b78934179944b6b914a789249809549799043818f4378904774914a7693497c8c4272 *94547d984c7c955b7d97558094457c924578954c83984d82964a86985080964c80974582984383 *92437f923f779349788d3f728c406d904571975d72883c788e417291496f8a3c71965c77924a73 *8f4c6e8c406f8e426f8942768d447b8e4a768d4273904062863663843165853e6f8d446d8c3e78 *8f47788c3b739345728937758c3c6e8e3f7c94447a92427d924682944675914a78914276904478 *95497e9548718b3f7a924a758d477d8e3f7d90346f8e4781953d768f42718e427191436d873c77 *91496c86365f7f316587385f85356582356b8b406c894771914a708d436a89367895477189406c *8e3e6d924a728f4b7696507094517a8f427b944070933f75964d6f9350698845728e4d6a8c476f *924f7a9147728c3c6f873d748c3b73894168893f6d8a46738c4a73934a7d984983974d7d975076 *9248728e457b964975934872904670904f7b914b799345768d456c8d466d8c426f8747748e456e *8c45768d3f748d4271924d799045728d3a6f8d416589466d883f718e4d6c8e4675914b6a893f69 *8e4b6f8b426983366f8841698843678439698b446d8e446a87376780336d8d426d904767834062 *87495d813661823a6b873360843b6a8c3d6a86416e8543658a4d6e8a43708f4870864168854368 *86426d8641758c486b89466380336386406886426a893d6d883d627f34647f306d894361843f6b *864166883d6e8c406d8c4465804163813c6d8133688439728b3d6f8d446d8b4569883c6c823363 *85416a86406d853969853963812e668a42638838788e3e79863f6c7e336a8a3873812a6b8a3c75 *883b718b3e68832c6885325d7b2a60812f668233678a3b668d407992407992477191476b8c3e67 *853a6b8a3b65893b678b3c7288316486376b8c3c6d8b3d6783336a83316583366a823769883f72 *8e4270914f708f42778b3a7082337992436085406989427c8e436f8e426d842d68842f728d3c70 *88336c8c3a7391426282396c85426c91426a86386c904976853a6a8a3e6c823263812e65893e65 *7b3066873f718a3d6e85367b954974883e6c843c6c873f68863d6d89376686326e8c3b66873c62 *8135638037667d2e718739667e2b677e2e68853869883b67852e64732a7682336c823a7488386a *86316a88396a893a758d3d739147788d466c86396a853b6d8f5b657f2d6b842f7a832b6d853373 *86367584326a843565792862812b60792e66832a65842c6b893471822d7986306a85365f813667 *832e6a883a6e8c3f6c853b70823071873c77823a6f863974853f74823268833c6a86416b813d7d *8c3a6d8236767f315c782f69853a7386406c812e6e7e30597730657333637f2e6d873f5c7b3e5d *7e3b637e3067772d58762960782e5f752e5a7c394e70304e632558773051803b5f83405279355e *8039708139647d3d627c385a792a5c702357772b58762b5471295172305371275374316177295d *7129526e2d56792d6a7d3258752b61792f687f3b5b6f2e506c2d4f70304b68224b6f274f712d53 *7a3c5f7e2d527534456723506b24556c2356742c476b2653722a475d24496226405d233f602652 *6d273d571c42662040652948692f426029466423495d1f425c1f3c62242a4d1a4a66224a672a42 *64274e6e2f5a70244f6c21456e304f672c4d6a254c6c29486f25485e234d6d324f6a264c6d2c50 *722f52713252733262762b66772d5977345d7335546c2a46652559762f4e733e5479305a75405a *732e4c672750692351702b486a2a5065254e67265c722a577430537235526b2f5a6b234e6a304c *6b2b4f702c566c2b5b70335473396079368c9d6dc2ceccb2bfbb4c68364a6238586f2e5d783357 *702e54713353783a527d4557752951723e5f7e3b506c2e607d355c79336a8539537e455b7e3558 *7e395a823c56853b5a7e2e5c79334d763a4b72335674305d7a2e5c752e50722b4f772e54772f51 *722852712c4e742d55733550762e5572205f7e2c57793254732a5b7f335b792c5b7933527b3755 *7d2d5373314e6d354d6e2d5a732b587025526c20547a28557a295c7f3352722c617b3960782d5b *7b366c81316a86375c7b356a802e566f25576f2658722b5f7b2b5581355d7c31577934617b2e54 *7e2d677b2f6478305c792c54702b5d75316178335a7932587b365c782f5e6f2e626f1e53722a58 *7b2a647f31637e265d7c2a647e2a507325526c225e7533677a295c8135607b357087446b863e6b *833d678442748c46718a4c6f8b406e863a728a406885426b812f6d85376880387281386385446a *82386b84396e84376385386a924d718339718a416e87366b863870853f70843b657f3066803067 *84406f8a3e6c8a4b768b3e739040718b4c7890417c954b79924678934979934b739440718d3d6e *8c417990457e954e869952819a567d99536f8c4a758c477e8f4b7e8c4281924877914d80974c7d *985683994c81965085964681975286974d81974b83984e7d96477f97467f914786964a80964884 *985887994d83934c849b4f849649819a4f8da47984954b80984985994e84934289984f85994c7d *9a4e859748869c4c85974280984e6e964378904371944b76974d6d8a347190456f8a43758f416f *8d426e853a6c8435607d2d6781346a85446989366f8e427b9142709043748738748a336582346f *8b35698e3e728d41769144768944828f3b7d8e42768930748e4072842f768c3f7d8e3879954378 *92427e923f7c935278944a81903e7291416f8f416b893b6f8c3b7b8d356e8c4778903a718d4070 *863d698a4861863e6586396e923d638536678a3b6f8d3e778b3c698948758f407b93467f924077 *9142768d4578903c7c9247808f4081954a7c8e44778d3f6c8e4675914a6f8540758b376f803b6c *8a4477914871904982954a82954185964a89974680964b8194417b9753779548899a5185974985 *9b4f889a4d85954c82944d879850869c5278934d7e964f79954f7c91478191407e904680924d7d *8d4a6d8c486c8a45668741678b4267914f6685406c883d6a8b4678964f71904775883e6c85336f *8c3d77893f6b893e5e8442607e386987466686446b8d466b8d426b883d76873665863d75863d6d *863f6a8533758a3c6f8a4267833b5c8040617c356987416c863b62863466874363813b6c843c67 *873b647f3468873f69843f71833864873a658b466b8439627d3d63843b5f7a345f7e3768822d6a *833666823661863e7592466c883c657d2e6e8535768b357b8d437c8f467c92447c8c40738c4172 *8b3c77883c667d2d6c813a68832e6a822d6a863f5f822b79913d7d8b367b8b32728c3c788e436e *90426f8534778b3f748b3f7692476883326a8b3b65803766812d72822e6c893d6f90427a96466d *8f457a8f426c89396c882f6883346a812f5b843a66852e738e3b668b3a708b3e6e873166823179 *8c3a6a8633758c3d6e8a3d798940798b3f728e376c8334738a3c738a3a7a843d76873863813367 *8a416f823a728339738530738530798c3b64803a62823060853c688633617a2d587e2a5f7d3c68 *8538597b296781335e792d5e792968833869812f7083326f8539687a28698538708338647c3064 *7a2b5f7929607b2c64802b697d2b77822c687b31637c2d5c772853792e5f81296d832d6d873062 *87386c80306a81317586336c7d386e83316e7d2a5a772e697d2e6282376e7f3176853b7a8c3b6f *8d2d77913a698a406685336a83326f7d2d6b832b6d88346c832c6183336c853569832e71883a6d *832e6c852e6c7e2b6c802e6a82316e812b6e80337189375b732c6a7c33667c2d6d8233677f3363 *792469813175873e698540798c426a85367b8f497786385d7f3c526b27617f31647c376b7a2870 *823178843570833a768a40657e2d5c6f2a647e346b823a617c2760763166762561742c61762f63 *782e617831687a2959742e4f762c4e6d25547226536b1b5e7127566e284f712b6074275d722856 *76265773254f6a21516f245b6c2453772a5d7627657f2d5b702762732c5b74225b76365e70284f *6c2f59772c5f7723647d2f59782d698030648034617222576c2151762a58702c506b3047702f4e *6a2157712d536c245170265b6929466323516e2d4c6e275576295578325166234c5c1f5262214b *662843651d55722859712f4869334a692b52671f546e25517329486c29576e2853722b5f833158 *7c295f732c5c6d265872255f752460702f5872334561255979324b69294c6a1f4d6c2d3f5a1b4e *692958722c496d2c53752c556d314e6c2b4e6c2c4c64205577325879305276374a622a53692758 *6b24526728576b29516b285870315d6e2d536f3786a16ec3ceccb3bebb46704047652933541f2e *4d1f32502237471c3a532736562b3a5526415a2c4c6d2b4e6c34486c2954722a52772f53722e50 *70385d783558793c57793950763457793347703054742e4f7930496f325576354b713541642444 *6623476f2a4f7027537d345b8340557f3b538043577a2d567f315f833860843367842f61833665 *7f396a8645597e3a577a31537d3954732e5b8130557c305d7c2e506f2959833f5c743a617a315c *7d385c803a658234637d3a567e3f66843c62782e5f80385c7e365a853a58833a5883356281305e *7a355674304f722a5373314f7f32577c2e5171254e6f274d652252702a51722d54783852783752 *762a526c1d56742a59782c5f7c2b5f7e2d6279314e712d567627537a315b7d2d557927607e345d *79305e7d33577f39607e395982405e8437658a4455813d597d346f85426c843c6080355c7c3f63 *843f6080326280336281326b8037607f37617e3b5b7d37558145577d3a5f83395a7c346287416e *873d5f823d5b80445b824167843e5f7f2e5d813d6481346a89436589416f8b4765853c6c8a316d *8d356a88365f8134688e45759357778e4575914b7b944b72904a7891497d984b698c42748c456f *8a47729259708e457890507a995e7e98467b974c6d914d718d447c914a7d934673925073924e72 *904b758f46728f4380994e7a9a547f95527e95497996487e91447990477a984d79944c7d965074 *8d3f7595477693487b914679934c7a934a72914e788f49698c45768f45708c3d738c4064844268 *8a4576914b7392507392466f87406b86426e85446f85406c8b48768f49779448729141778e3c6d *873e718c3f7b8e44728d4976924874904c78964e738e427e9545728d4382903f7d8d437a8e4474 *91447d93467e964d7999537f984a7c9344698a407a934f678d496f893d6d924a78974f79954577 *944e7f91467d93457c90457e91437694487991506d934878964874984c6e934f81974f86974c7f *944e8697487b985782995081994a7c9955849a4d83974d768e427b954a7a90427a9141839c4f86 *9b557e964f83964e86974f7f984e7c934c6d914b73965177954c7d984b7b9b4e889a5187a16181 *9a537892457f985182964c84964a7c914a7a995080954372934e76934576924c72934c7b924481 *994d7997477a8e40788a35738c4366863f60833f6589426d873e709143708e43799349748d4a6c *8c466d8a46668c4e6d88466d8a4464853f6b8238708d45798d426e8a4964833c6b85446682356d *8b43678a485f7e2e69833f63803a5e762f617b2a67853a6181396c873e6389465f82355f7c3a6d *904c64823e6380357d976465814060843a5e7f40587732678b4268823569833b5476355a793262 *7a316480355e813962833e6e8a3f748b426f8b44648a466c8d4569883c708838758d3e718a386f *8c45738f456a853b607a3965843f688540638537738b3c6a843b73883b6e8744869852768a4571 *8c406a80326a8539647d325a813a6e8533617e325c803254803b63833a5c81346589395d853963 *833270883a65884264873e6280315a8230627f2e69843c62894559813b627e2c6a883f61782a62 *81375f802f5870225a7428597c32628234697c2a6f8d3c6f8a3965832f718a3a6b8d43758b436c *8530687f396c843261863f68863167812563823961823a6d7929687c2d6c86346981326083405e *813163813b657f3265812a5f7e2e6a8437677d326881355a81395b7d35627a286c883d5d7f3759 *762b4e712a5b6c25546f265d7f33617c2c6780325e792f6080284f7c365d7c3b607327647f325e *7f30667e2d5c7a335f792d6a873d748d3c688532667f34668643687d3865823b50792d50792b5d *7a335d7b296d833a607e3c66823a64813264863b60823b608337627b2b5e792d69833857793062 *7d3468833c5d7b2e4c7826527e375a762c536c2858682757763456782d4c6e2d4f722f5778305e *7a345d803f5f772c5e79325779334f7c435b7635546d30516e2a4365284b672465823e5c813f5f *873f607d315b7e3a5c76284e793d5678304d6c235d73285f782e5d793558752b587630677e355a *752f6175254c66204d672046682a425c21466228496a2f466a20476a1d4d6e2550682450682650 *692a4f712f5066294c6e2850752c5277295879234e6b264865233b58244568275f77305d6e305b *792d5a702d50702e4d6c23546b2c64782d6180386071305879304a75295c7c2b657d33637a2e66 *883c68813c668137597c3368822a5d792d50752e547b33577a3656762d526e30506e2d4d6a265a *79264e6f2d577329607b2d5b732c5a75305f73335a78355a7d2f678136607531546c295a6c2a5d *732a586e2359702e527034486627517c2e5d82324d7c33487337496f3048692850763751794253 *6c244268214a6f2a4d6320526d2d516c294259244460294b6e3541662847631f4664244b6a2c4e *6b2e4861294b672d4b66324d6b325570345a6e29667b328ba172c3cdceaebbb74f6e3a4f703a49 *6f484d6d354b713645642d43622e3c613347632a49652b3e5e2836501e365323445f2352692a43 *602151672a5b752b547532597b3359793f53793b5f803f5674365a7d445775396180444f763b55 *7e445d83455b7c3b5b7d3a56803b5980425f834152793f5e7c42496f305674385677385b7c3c4f *723d5c7f3c5d844667884e6983486a8545597d365c7c3360823a5981375d8033517531587e3c59 *753159702a5570315775405c75335c7432547738647e3c5c803a57793c6583436481426c824266 *823d60803d647f375978305d78314a6e2e51712d5a702a58793356803d5b7e34547a38587a3261 *7a315464245b773057772f4c6f385a7728637933647e355e7d396184415f79325c762e64834361 *7f365e80305b7e3a5d7c3463813c688132617f36577c39557a38597d3f6585386489436f853d65 *7f3e6988416e884d6f86426b86456e8a496683425e804167823361782d677e3363843f6583406b *823d6c83416786436183406286426c8334658841658a4e72925372925175904a739142778d446c *8a406d8a43678c4d6e883d7491507e914f77915078934680974d819a528195528097588092557d *96538597528096477f995580934e84995784974d788f517c94558295517f934f7f964e81954c7c *94507c8b467b8e4d8696537b924b76935a779353738e477e964d7a964f83975a83975383975385 *954b8098497a97527b954c85964f7b90438196567a91498195567796577892487990506d8b4577 *8c427c8c437d9049788f4676904377904a78935073924f7091507c8b42708a42748c456c8d4770 *8946768d54748e437a95508192497d8f4b80944f788d407b904f7b90487b8d4a7c91487e924483 *96497d914683924b809142738e437691508197517e98577d9a4d81934f7895517a94577c9a5e85 *964d829857869550879e5b86994f8296468e9948849648829b597e99558b9948879d578a9b4b80 *98567f9a647f9c67859a4d839e5f8699528198507a914a7d8f3e6e8c427a955281985483984d83 *9959829b517c9a5a7e975483974e82984a8598517c944a7c90477e93487a954876995078934d79 *964f7b974f7496527992488097507690487590456e894278904b68823b6a8545708d4879924374 *8c486d8d427b8e486c90487b8d4980964f74924b709047718b3d6c8c466d8d44708c4467883c6a *883c798b3b768e4168883e799144778f4a758d44768c426d8e4671893a738c416c863760813c65 *82336d8538638945647e3466863b6a843b6b8742678b46708c3e6e8c456786506283426c844463 *824366843f698a405b813d6185425f7d3864843e678445647d3b637d325f7c2e6a82395d813f63 *83416d893c6882406984426788456a8640668543637f3a6785406583406279346c7f326a843958 *83466f8c40708f43778e47789145768d4678934f68853a6789426a8b44728438758c3b78893b6f *8c427d8c3e738d3a6f8a405f843f6183446f853469802a5f823a6076275473285e732b6581335a *783268873b72883f678d4966833967813662833f61833a668231617d335f7a365d7f3d637a3364 *752c56723557752e6085485571315676335f823d5d742e617d2c6a82326a7a32647f2e68823b6c *80336680346b822b5a802f6079326d853b6e85405d7b2e5d7937587933657d36697b2d5c7c2869 *7d2b5b79315d7c315c783160752d5c7c33697b2a5d732758752461782c64793364772767742168 *792c5f782f566b23657b2e617f2c65824066803960762d6b762c658038637b365b7b2e607c305d *7e2d5c7a2a5a6925617a316d813870803365813c6d853a6b82347688346988346a7e2f71863a69 *863c647c30657e3b5f792a5c722768802b6b80335f7f33627e39637b3667793860762b5e712258 *7a325a782c5a7028566f2355732d496329465e24496725486b2751732b4a6626566a2646653350 *68326176305e7d3259792e617d2d6084425e72266079344c692c506e2e5d6e3353692f6875295d *6f2853742a60742e646c2e5a72325c733a4b6c325467255a702755722f627d3262752d606d2d5f *6c2d4d672c4c6c3054692e4e63245167295269245469255566204b61215163254a652a556c2f56 *6a24586d2750702f556e24526d29566e2d5c7430526c2c537021476629516622536a295e662b51 *6c2a4b5f2a445728536b2e44621f4f72375f712c516c295c6d2d627830516f2c6d8237647b3266 *7928658133567c31607a2f677a3159742d5a7028536b2e62732a5377334b67254e672661732d57 *7133476a2e4e6328546a2c55772b55712a5a713258702e5e723261743565762f637b38637f3956 *7a3758722a5572304c642349692f4e55234d67214d6e3647632a4055223d5c2246631f4d6c324c *652c4b692f486935466428526926486d334f652a495e2449602749622747652a4166334c662c4d *6e344c632a4664284d682a48682952682d5a6a314e68354f632d87966cc3cecdafbbb64f783a54 *6e2f4d7a35416c2f3b6a2f405f2940642e3e5f2c3a5f2c43602746662e446c2b3c541f405d1e3c *682743642b4e732a3d5926405b263b521d3a60244a6e2e4e69233e551e3453174065253e632448 *672c57712e55722954702c4f702b4f6b2b5370285977355571315d7b34577c305a80344f773060 *7b396177335a7d3757823c677d33618749628141678543658240657b30597c2e647e3766813f57 *7c4557752e627d2d5571315d742d4f7527607f37587b32607e335b7d345a7e3a64833460833763 *803b63803e6682426b81395471345e81465d7e3664823f607d4069844563814365854160823564 *8039667d3366802d6a88386084386383366d86446687416886386c7929607d345e813a66823865 *85397285346c863e6081386d85325c783768883f7489416f863f6883397c873e728d44708e4372 *8b466a914d67924f6c90497691476f873f718c42718a3f6f8c476f883a6181376e8c4173873a73 *883c69893e758e416d8b4570904174894075904a6f8d477c934c7791467891437d934581964a7b *91486e8a386b863b5e792e6e883b67873a708d4270863e6f8f477c95477d904284974982974880 *924282994a7e9857849d517e975087954f7897458498488295457c92487b92497a8c417b975a85 *964c8898487c944a81964f86964878944a738d417591506d853f798f467992507b924a82944a86 *995278985c7d935082944778924a8196517592538099627f9653829a607b934e79904f78965272 *8f4f77965376934d768e4c7b8e447e96538093457e9147768e54708b46728f517791457c964d7b *984e73924178974b749143708b39689150728f45749249709045839749718e3b6e8e427a92467b *954c778d48788f4c799147708f46799243839742809949799247779445778e4281995574914676 *904778923f7591447a934582944478934d7c954b7991438096437b924879954d8192417893427c *9143789149768c3e6e8c3f7591407c933e7f933d778f42768938758a3a788d44728c4470893e78 *904083913e728b4078903e7b913b7d913f818f4083964f7d974d8496477a92477a8b406d8b4c76 *8e49778a406f8d4c758b47778e48788d457a8e407d904981995086994882924b7c964d7b8d3e73 *8b3b879a4d84924477954d7d9248708c3b768d3f708b3f7a9146768f4b849445798e40788f456c *8f46799143778d437f964e89984f8794458aa26178914e7e954b749651728c45708843728d4479 *8c45798c427191436c8a3f7e9249728c42818d417a8f49728641708c49798d4473923f6786436c *8c43758c3f768832778c3f6e8835728e4678944c6e9043758d44768e4d738940758a41798b496f *83396e8c47698738768c3f7684336a8942708638728337708434738943678237758c3c6f863e6c *873e657f3464803b6283386d81376c843b6e8c3f6e8d416e8b3c68842f738b3e6c863b6a883d77 *873a6b81376781316c812a6575276e84405d7f2e5c783258752d5e7f3e5d7c33637e2b5d803a6b *81355b78325b782c6376315f7e33587c345b772656762b4f641c4f6b1f4c7125627e3861772d61 *782e607f35607a305e80365c8033597f3459772b5977335b762b5d7c2f617d285d7c2b62803965 *80386d873b5d802e5a7e2d5f7d2f6e803359792f6583396a7c2f5d7629587b33617e3164834365 *782b687d3d62812a617926617539667c2f677a25687e2f5f7b2761782a5e782b677524697e3165 *812e52762b627a2c58782f627529647629677d2d65752e5b732e63782c5e7a29627f2e5d772e5c *7d31647b2762782e68852f5f732268812c6a842e6c802f6d87416e8b3c64863769803a73823276 *862e7b8c3b798e3f788c44778c4173863e6e7d3a617a3d68773064773263762e5a722d476c2052 *6f2554772c5b6e276477306f78285b71285e6f2a5973284d6428556626506526546d2e5f7e3a56 *6b2e6479387085367a85377d8a3b77883e799149758745758640738a42788c3a6e8d4378843573 *8b447685426f863f677c3d72833572874470833a68813f6b81346f7e2b71893f6a712771813c68 *7d3372843c717e32607a325e6d2e5d7230596c2c5c7636506d2d5769255a6f254d6d224a621e4a *6723475d1d44581948591d4a63274e662b4f6323536724526a20556a20546d324e652a576a274c *71354c6c2a547225506d27506d264a6b27536c2d667837606a265c6c2c566b1e487322536f1f5c *73265e7a39527336546f2d506c2b506d2858752e566f264d6e284f6828596f255e742a506c295e *732c55732f57742b576d28526829526c2b596f2d5b6c2d6879346a7c34637b34657e2c506c2b57 *6c24566b2b5d712f637129526925405f224f6f2a4e6d284c7239506c2c587328537331506d2b5f *753c586e2c507336526a2a3f5f1e546f254d6d2852682460723047622f496b36516933506b2450 *65285571305d6d354e632945672d546b2d5f7733536f3054692e5a7230859a71c2cdcdacbbb146 *612b4569364b6b2b3a58213857224364272f613533531e365d263b5721355928305222315d2f38 *592031602132602a3b5e263a622438562333542642682743632443651e456021355a213a571e40 *5d1a32581d425e233f5e214c62224a641a3e62214b6b28436626516a294b70325072294e75305a *7f375375325e7e336575354d6f35638138597027627d3669843d5f85396384385d7d285d7d3860 *813b63843664843f5b82435b7b3959733460752b5779316b823166873763823f6986385781305e *8236537f3b5a7a345b7c375c8038587b325b7c3c5d803f5681425e803a5a7e3669823f63813d5e *81405980406a834568844164883c6182315585395f82346583416b873870893a6c8234637f315a *792c58782b5f7a3458792f537a325b763452752f657e3d67853e6581416d8a436b824467823f69 *86386685366383356585416f883c708d3f708a3a7d964c6f8b486a843f698b4666853a6b8a4063 *8a3f6c8e406a8945758a446785426c842d6a873e6983386d8e47778d45788f3c6f934a7394486d *8d446790417c96476e8c437996457c97486d9154718d3b718e3f7a914d6a8b437d974879964d7e *974a7a994b8597428b9b52809648829a4c7a974a7e91418199568298477c984f7c9948879d517e *9c537d984a82994784984e8197517f954479964778934874904e6d90457b974f6f934a7997436e *8b466e955278914c7e934973934a67924a6989486e8d4d6a8b436b8c45788e42638a42798d4778 *8d415f813b6885336d863d6e893a748d40778b356d8e486082436a873f6c8d4968883d74853f75 *8a3c7b923f73904a76914a7b934a778f436c8a39718732718c497f8f457793477c904581964e80 *95418498508a9c55839946839b4f819a49859a4f839858849147859a558196427a913e7c964b82 *964681954b849a4f839851879f588d9a4c8596477a964a809748819743849c558b9b518b9a578a *9e578d9b49869c6381974b7e984a789854879949929c53939e5593a150869a4c889c50839f557f *9a4f849b588a9d5883994f84974c899c5086984c879b4f8a9b588a9747869b588199538a994b89 *a16283984d85954b81974f7e9249809446819a4d8e9c518498508da05883994985995080954a8b *964c839953819a5c81924c79955286995080985d7b995280964b82995080994c7d99518aa06081 *9a577f9a5281944a7d91458199597f974c81995a8096517797597a944d7f95497b964b728e4471 *8e486c8e49738a3b69803860813e6288446c873b7d8d448295487895457b934c7e8d4a7a935075 *90466d8d4f728e40658d41678d47778d3c768f3e788e43748b43769044779442759240758f4177 *8c3b778a447d9245708c4572883f748d42729344749342778d407084377786376a883f7188395f *843b6381326280345f762d5e7d2d6581395f803a66823b69792c6685385e8634728b3b738b416f *873b6e8a3f718c4064853f6f8540638b4767853f5e792d678b40708b41668b3f6d864069873d6a *8a416c8643647e2f5c7a325e752b607226607625657d2d5f843b607f29677e2764822b5c772f5f *7c2a5c792f5f7526557b315973334f6c234f70274b662259742e5b74265d7b2855772859742154 *71294d732a5775264e73285c793a58742b5c7a2d657f2c5d7e325d83315e7f2a5d80345d783067 *802e57732c66873463843a61803a6081385e813465842d637c28567731607b2f587b3769822f64 *85396b8331607f3168802d6781356b853b698233708b386581336080345e7c38687e3761812f6d *7d315c7d3f667a2a637e35607a2c6678235d8130678c3f67853f748335697c2d6e833a5f7b306d *8431707e2b738b3c778934748f4a66832f72812c5b772c54762a57782e6c8232667e326c7e3364 *7d2d6c7b2b627e2c6b7d296e7f2877863b6c7f3c6a76365e78316a803269802d587d3559752c55 *7027557e375e7c326282387284416e8d426584306c86356a813375853268823463812f6a83366f *8536627c3b57752d6a80316780346c7d2a69813a6d823e55712c5e792c6181335f762f6680346e *7731617e2f657f3957712e5577334b6b294f6a2b4a642a49652b496629566b274e6928526c264f *6b2b45611d405616455c1a4a66224f631c4f681d526e26556a2d546c274768274b6a285762205a *722b4b6d2b5b712853793c5f70315a792e62793b5f772a627d295479324c6a234a68264d6c2656 *75406073295876254d6b2f527a2e4b6c285c732a5a6e2d576f305b6d275c732b55702450702553 *6d2b567224557336516c28556e275a762f607e37667a265d7c3157762a586e27536f2a607d3361 *7e2e60792f61792754753357762e4b64224a692a4a6826416129576c22607326486c265c743750 *702f556c2d50652f5d7a3156652b47662a425b23506926486e295875334e6d2c57712c5571354d *6f3651682b586e284d672949662c546a2956712b60793c586b2c5a753550652d79946ac1cccdb2 *b9af5b6d33405c2f436435426028415c222c53293457253351223952243c59233c642632551f3a *5d22425f1d405f203a6530395829456628405f233b62223c571d44541d4c6022476122415a1f3b *501b48601e4a601d42632249682a4668224766214361214c6b27496323476114405e1c385e1a41 *62224167234c662c4d6a254a68304a691f465a14506f2857722b4f6a274d732a50782f53782d51 *70284f6c25607734627e345d7e3b667d32547534657725587233617d3f547d355a7b32567c2c5f *7e2e577c3057793b51753256793752753657762b5f7a2d5a7e2e5f7e3259803c607f356780355e *7e3e5872386c813c5b782f607b31627e325e7e2b61843a64874268843f64814067853a72893977 *8d456e852f627a2e687f3869844668863a627f2f6275276a7c26607d2f64702e66813970853e69 *89417084316d88446c8742738a39708e4c7489456e8a41798c416a833669893d71863670884371 *883c6a81406d883a6d853e7a893a738e41788b3e748b3f718a417d9043798a3a748b42728a367d *8d358190437a91468191427e9042768b368090407d92497991487e8f45849646829340758f3f70 *86427c94498496498d9849869b538599548397438893498c96478694418a994084944485973f8a *97448a97458a964487994b85995489954680954a80984a7c93427d924d80975b7c954981954783 *984777934c7a8c3e7e954e8596507f954b75954481934b7d90407d9547798e3b719044728e4675 *93537b9a52718e468494437b974d7b975e7796567d934a76944c7b954f7897537b92437c91457f *9242779046798e406f9148788d3f768f417c96437f95517b914284944b8591417e90427c924581 *924a7b8d41788d457a904985934d8a974a7a934d7e95468196478291457e90477e945179924583 *974487954684974b87994781994a8299498c9d4f859b4688984a909c4d86995386984680984581 *954282954385994f869c5d8797468f984982994d829b518d9d528b9c4a869e58869c588198577f *98548596418b9f5e879b588c9d538d9c548fa05c8d9e558c9f59849e5c889a4e8a9c5d849c5393 *a35391a05090a46b91a05d8fa05b8c9b57899c4f86984880984f889d6194a55f91a565889d5080 *9c64879b5b8d9b5385965577914881954c8297488692428296497a924d849d59849b5d82964b7f *98518c9847829a5a8397498299507d94577c8f47808f487b8c3d7f944c778f437791517c914c7a *8d417088396e8849698946688d506a8b4b6c8c3f718c436c853e6b823a798b40788d3f7d8d4075 *8d456a8b40758e3f758e466f8c437b913c7b92457a91437586336c8730678a3d738c4374893978 *8d3e768d3d818f3a718d407288377589346e8636778c3c73883c788e46768d498295487a8b3f76 *8d3a6e8b416b8338677d317086385f7c385d7638788b396c90575f7a3a757d316680316e86426a *85457787426a81336a833a6c893d5f80296077286c863a607c305f79356a862e6e7d2f68894266 *7e2d637d28687c276f7d25607b29647e35697d33687c26698531708535718a33688230768a3b70 *8535728b376680386b792d737e286a85375f7c2c7686436b843c7b8a4276873c6f7f31697c2f69 *852e63792663762a60782467813065812f6f7d2966793976812e617d2972823b6d8932667a2d68 *7928768b3967792b6b7b2b617c295f7927637c2e5d7c2a5b762c5670265264215c732b4f6d295f *6c1d576c1f57691e587530566f305d722c57722b5e7535536e226179275a762e5370276077225d *792f5d7b3153752d506e275773255b6e2060791d6074236a7d3160752d617e306383346c86396f *7b2e7481326f81386c7d32607c3978822f69792e6d762c5e7a31657b31757f2e6d7724707e2b69 *7e3169792461782867792867742a6b6c1e6c7c24707d2565802d627d2f5e7931677b2f5970235c *6e2160752159742c58692a5574235b752c58782e6b782b6876296d761e7879236272215e6b1d51 *7427506d2f5c7a27586b2257671d586c1e536e23506a1d5e6d21536224597b335c762a62732c4f *6520596724606b2b5a712b4c66294d672c506425486426496123485e1f455e23465e22425e1a3b *5b184b671f45661f3c5b1e4351184155183e5118364d133f52173a5a1b485c185067204f612451 *652047631f4a581a526b264d6a2a55732e596d2350762856712654682c4e5d1d425e173f531649 *64264e642252692e4b6227516327475917485c1952631a4c611750611d4c641c4b66204d682544 *561f485a1a4d5e174e6a234b67284c6b244e6820516e224b6c2350662452631d56651d576f2451 *6f29506e2647611f4d65204c5b254c5d2055601d52642048652643561e43611a485e23446a214b *632750672654682a4d5e215d6f24505f1e41591e505d1e425d1d48581e5265254761234c5e274b *5b2044591d475d2348611d455f21506726596d2b5964295268264b5f21515e224d6024899b64c4 *cdcbafbbac466c2c4c753a4d712a4b7233547530476829486d2d456f37446a30425e234d6b2949 *692e4b6024466522436933396420406b28476f3143722e3a6b243e6f24405d1c3a661d355b1d3a *662a3763244567255074314e722246732a4268294c702d456e29466a2a4e6d2547651c4369283d *6b25436826406d273f64244c69284d6f263862294665224065204f6e22425c183f5f1c3e5c192b *551e415d1d3e571e41541c3f6025425f1c73948791a98b5f78285e7a304e6f295b7c2a4d722c53 *6d1f526d1f517935516f2857752b5176295c7c28557f336084385c843553732b557b355782385b *7c3152742d547d2a6680345a8335578337667f30677e2e68833b5f853a6185356e8d4d6d8b486f *964a5f874267893c6b853865843964863f637c2e6383386a8b4367812f668230627b2e5c7c2c61 *7e3564752b64802e6786406c893c748f406e9041758e4175893f6c8a446f8d406f924d7891477d *9045799444768e37698b3f6c8a44758b457b944a8193447996507b96467a90397f913f7f8f4377 *9244809c5f81984d85985286a264859c4d869e5287a35a889d5e86974c869c657e995e849c5083 *a05e89a35a8aa56089a26b91a454859d5a8ca05f889c4c85a05f88a25e879a4888a0528e9f5d91 *9b518c9c4f8e9f54869d52859b4e90a0568b9d44899b4c8ca060849e5c879e5e879b5982974f81 *9a54869d4c7d974a7e9a51849c588697427e96467d9b4a849b527c944a7e9547819746858b317a *96467c994977994d7793427b944c7892527b97517f914d80974d7b8e3f75924581954876974a6c *91457d9340738f47799a4e79964d7c9954809a54719352779347849b5980994f80984d80984483 *995079975174934a708f437b964b77944e73944a7898417d9b577d974e81924579954e758c427e *93427c995185994686974588984d8e9b52879a5284933c8c9a51849748919c4d899e548d9c4e92 *9d5381964985984c85944383984f8da1548b9e53869b4f8a9c4a889946879748859a4f869c5188 *9d5c839d5d899d5a88a35c95a15797a15b919c508c9f52869c538b9f58899d58889d58899c4c81 *954c889f588ea3528c9d4d859d57899a5884994c859948889e538a994f8a9c508596448b9c5183 *a05e869f56859b5276974c889c5181974d839a508399497c924580965377904683974a879b517e *994d85964d88995382994f87974f829a538299508294497c954e82984c7e94477c964677954a7d *954a8197507e914479954b7d9956778d468291487c934875944b7891407e924975904364883b78 *9443778d47769148698b42768e3c6a8e47688b3d6e8e4b6083435d7e3c6e8b44768d3d78903a79 *91407b8f3d828e3b7c91417c9443738c397793477d90437a8f42698b3c658640788c3d6a873d6c *883c6a8b3e6e8635768d45778d446b8a4269843e6a7e2f6786416d8b426786406e87396e8c386e *873f6d8c467590486d8642677f2e738e4064872d6a87316a853a708d445f89496f89405680406b *82386981246f8b336b8939697f2d6b84336d873a6e883d7287336c8c3764852b678638617f3270 *81346e853771792b6e7e2d72873565843a6d81316d89406a8431758a41778f4363813a6173205d *7b286b832f6f873970822f64823f7986377e8c3e6f862f6b86406f86397a8b3865803369833065 *812e648132728a3c77863e7281306b8d42608a4162843c637d3b5e7d3162843262863969832f67 *863b6b84356484396a802d6684355f7b2d61772c6780335b7b2b607f316d87356c84356a893f67 *87386e842d62792b62853a5f81396986386a862d6b8638778f4b65863f6e84346f8a4073893b6c *8738768d3a7987347d93477c8f3c788c44788e3b7a9043788c3e87974a6c8a4478843283913972 *85347c85336378286a812f718330788d427f8b437f8c3979883a72853f7382357487336a7f3270 *84316481315a732a5f7c33657e346e80336f7b3b68782f637c3260752a586c2564772659782a66 *7726597526607527536d235073285176255f7729597223566f22535f185273285f762f66843c60 *7b365d7a325f823c627d365f7228536d2765772b60752a536b245d6d235b7a305c7d3e5c79245d *7c2a65803160823c5e7b2d547932566e2858732d5a6f2e5270214e691c576e234e7227506a274b *6d26496c2e5b783556772d5d72285c732e5c70255968214b65245c7225526d274f723156712d5c *70275d782e5c7d3764833b68843f587c345d7e305e7f336172276178255376304a732b4a6b2a4a *6c2b4e702f5a6f314f662352702649682b5a68215c6f2052722f57733158733056732e5e7c3163 *76335e792f546c2c6272285d662564722f607a32506b274e6b265a702a597322596f2c556c204b *68254c6d275275305d6a2b4f6f26546a254d692a5d793060742763813a56722f5676325f753161 *70275d702e537123556d2a51702f536f2e48662e556a2e54702f566c275d7930627c346472378c *9e72c4cccca9b7a74d70324a7239476d3c5072334a692c4870394a692b4d692f456a233b6b2a4f *7431446c2e4e7833416b2a4769263d67304a722e4f6b204c7131446f2f4c712d426d25436c2e39 *6629345a203760263762223a652c40692a426626406a2747763349742d4870264a742a436b244e *762c3a6827396522476f304c7228476a26466a25385d213d66244566313f6b2c41652b436b2b41 *5f27426d233e6320476923486e293e6b294f74304270354b702c3f65202f551943672337601a45 *622546682b45702c4c712a466e2d4c732e466b294a6a2b4b6f2b58712f547d3a4f7a30527b3158 *7633507931567d375177295578285a792b577226577f34607b2d58863c6886405b8140648a4660 *83386280375f86326486446c91476e8b476d9052708b4570874670915067873f698942638d4e68 *873f7290467d955176944d6c8b50738f4576934e6f8c446b8e4374934b7d94497f984f7791557a *965875944c8199567c9a557d9550718c407891407490437490436e8b44739242708d4c6b8f4277 *974b65924870964e7b9348688d436e974f7092407d9a54769a4f7e954a85a054809b587e975085 *9b5b789654829d578099598198527b974c7d98487a9c627f995f7c9b63849d5f81995d8aa15d88 *a36686a35f83a3598aa4628a9f5c8a9f628ba16b87a368839e637a9b5a849e58869d50839b5684 *984b86a46a7b9a54819b4c819b587d9858819f5d7d9d5c849a5f8aa16d8ba264849e57849b5086 *a35d84a35f879f4d89a157829b537f9c5386984781984e819b54859b5d85a367829d588ea06186 *a060849a557f9b4d839a53859e5d88a36485a06089a053829a4e839a4e7e924b7896587191507a *975173954e6d975076944079944a7d964c768f4576975672955376964d72964d7a964d7990417b *93407d9142798c4776944a6f8e4a7e92497e92407d993e79944075914184934182943d728c4279 *92487e99497e9848819e52829b5d7e98457d954c7d985281974e859a5673954c7d9647819c5080 *96448194397a924d7492477e9b5182995681994a849b48829547889d5b8294447f9650849b537f *9853829b50859d538b9d4c839542859958859a5385a067819c5276965c779759879b4e76994f7d *995d7991477a9649799553748f46698e52769048739348748e416d90566d8d4770884072944c7d *944c7f965076934a809444829c517f95447b96477a92487a9047819a537c954e78974f6c8e4572 *9148698b447a8f457c9149748d4e8597478091457591447c95447d964b6b924a6f913f758f4275 *8a3e7b92477a904576904076914063853a6085396a8b3a688c436a87426c8e496e8c426d8d4174 *853d768d3e6e8c477e9142778f3f6e9045648b43668d4765843a6a8b4463843c738b3976924b6e *93476d9148678a3e688c436d8a3d768d4079924c728d41758c43678b435f863d547f3d577e3669 *83346a914d778b396d8d525b7c37718c456b8c417391416e8a41608238728a3c60843c76903e6c *8a3c7493486a8d3f7a954a708f42738f437091436f8f3c778e3e718e436a8b3c728e3c658e4171 *883a698937718c32798c45748b427887406f884169833f637d376a84326f852f6f8c3c76914477 *863e72853a6c8a3b608231618132648132627e346f8c3b6c853f68843460823c67803a6681396b *893f66832c708239738a466982346a843b5e84305e803464802c58772c5476355f792857763766 *803067873e5a823a6584365e802a5f803b5b83395e874067863e718d426786376b8b386186436b *883961883c6b8c39628d3b668b3e75893a729347728e40648d405b863a738d407293407791406e *873774934373903d768d3d7a873b7d8f4c7a9547708d3477913f788c42758a3d7389477091497d *974c829547738f42668839708a43748b407a8b44718a3d6b89416e89466b8d3f6e8b316b883b6a *7e28667f325e7a2e62823d6e7d3667823d66813a64813b6b81316180306f7d35648033677a2f66 *7e356785416f8d3a5d843f6283365876376c8036607f29608033567b3f62864367843669853b72 *8b396d8232688132637d3b5d7f3c5c7d3a607836667d2e66803364782c5d792b51732647692344 *672a4d6b2256753059742e637f2f6383406083415d7c365578335e7530576f2f516f306074285b *702d5467294f6a32506c294d652b4f702d647e3f5271275a78285e6f305b6e2b64773052782e5e *7f3d50743d56763253772c6881336781326481405e843c607d385e7b366271346276295778344e *6e284d6b2e506c294b7140476828466c2d4e6b2c4e6d305873215a7426627128506425486d2c4f *682a5e722f587939537221517a306173265c6827677227647a336174305674404f70345472264a *733152732f566f3b4f642b4c733253793559782f647b335e8135638436576a2f587137516f3060 *782e617836587d3954733265874066843c667c3b5e7a384a6f335b7731547030556e335f6f3154 *7132869f73c2cdccacb6994363283559222d5a25476d2c4767293b612c4f69264a6f333d601e3c *5520375321446026455f1f3d5f2a4a5f234a6d2e496a1c436a243f62264b62204e6f2a4562214f *681d426428466a28416b2541692a496d2c486c2847631f42652b466b2d4569263d6b28476d293a *69234a6622466b2a436b273d6a28416224496c2f4568264169213f611b40641345611d426a223f *5c1d48692c486d29476420365f244764223f601e41612147642c395d23334d2241612b3f5d2540 *642b42611d425f1e476421435e1d456321415f1c4060224860204c6d1f4d67265e7e2e587a396c *7b355f7c35557d3b567b325a7b2e6282335e803d69874560823b5c7c34627c2f617b325f7e2660 *852e64812f537b2f6679315c762e5679326a7f3d5e813e6c8b416085376485426d8642798c407a *8a50778f4770914c7192426f8f477b94527e92487995547996517e964b849852859b667c924478 *934081974d85934586985082944a7e97577e964a7b94497c934c83944284974883974986964b88 *99518a994f839b5081995d7f9748899a4b78964c7d96407d954a7a92477f98427e97477e98518b *9c4a829b53859a50859a567f9859889a548e9c5e859b5d7d9a5581994f859d5a81994d7c964d7e *92487e97497d9a4c899a4a82944d849f5283994b899d53869c52899b50829953879c4c8097467e *99497d9b578898467f9c5080984a7d94497d974c78994e809858849c51819b5a879945879f557f *995184984d879e568192497e98537e974882994f89a15483944f82984c84994c7b94537a98597b *9858809c627d935178924975934e7e95518398527b96467291417b98547f93497993447e96527c *95527b91527b8f476f8d3f7793498497497c94496e8d45728d427d92477e93437e9241839a5384 *954e84974d819241849847819e5b81974f869958859a5d8c9b4d869b518d9b4c899945899a4581 *994e8b994c859c558a9b518e994b879a50879c538ba058849f4d859b4a8595457e9351859c588a *9f56879a56839a4b7f9b4b8398498394458b9a4884994a8c9a4d8b9946899d58889f548ba16088 *9a4f919d4f8e97448c98518d9d51849852869c4e829a4e899d5190a15c8d9d5e8c994d909b4f86 *995583954a78925273955a7d934f758d497b9149738f48798f42768c47778c4881954d7a92457b *8e3f798f497a924b759150748e49758c49798f4d78934b7691437893417e8d4781904785974186 *95478598507c92507891447d94488596487e95488796477e92477e9959889a538493457f904a81 *984e8196447b934273914d668b40779146769140698d497592457992447193477d95457d954773 *8c3e7d9749789148748c4a6a8644688b3e6a853a65833864843a65803166863764813268863471 *872e6789466a843769883661813668813464813567812e6281326c84326680315f7e346a7e3867 *82396b893a687f2d708b3d678a426c853b748c3d72892b6a8a3c6b883a6e8a3a6c8b4976853d77 *903f768a3a6b8c3e738a2f778d39768d3a7591446e8e487c914779913685933f788e4182934076 *93416f8b3e6983346089405f8943678a41768a3b7c8c4274833577883d6b873d6e843d688c4a7a *92536d863171904077913b728c3c7d8f43758c43759048738d41738f476e884068883f738e486a *87437690467891407a8f3c69893f7389386c8b44738c3e70893a778d3b728a396c853669843662 *7c2962813368802c6d82357586397884346f883d6d883d6a853a788a3d768c44798d4784934066 *833573833c738436789241769149798f3e7a914d85953580963c788e43738e437a8d43798e416c *90447b93438198468396477d923f7c8d43808e45708d437091416f8c3a778e3b7597487b984880 *92428293427d95466e8f438193477d90467591417994497f97458397448a9a468194458095577b *974f6c904381974f80934278913c7a94458693467a8e4372924e788e417697457e9345728e3b78 *8d3b869135798d408689357f87366d863c6b7c336f86316b842b76842d7b8f3f808d44798d4375 *893578843f69894364853d6c84346e7c2865803468813065863a647d2a62752a566b285c73245f *7628506723577029606d2b587b2f55753268874671833d65823459792e647b2e647d3556792d63 *7b375a792b6b833e5f7e41577a2c5c74296273276578375e6e2553752e62752e567a356d854161 *7c335e7e35586c2b5c7838677531668444647a425f79366a79325e7b326175315e732e5b6f3258 *6f344d6e34556d2b52692c5f702d5f782e5b6f25616a2a65723656723d62712a62763a57792f5e *6c25657b316879285c7a39606e23556a255772356576376681367083316d833a5e7933687d386c *7733667431677d3065722f61792b5f7b2f64742d787e2c768340748a3f6c8844708a476a833a65 *7e376582346b83407a8a406b813b71893c65823c6986465c7833687a335c6f2f5f742b64722c55 *6c324b642d81956bc3cdcda8bba735592f4665313e642d355a2a305f273a632d2f5e2c31632e37 *642c305a283d5f223c5f203557243865292e5d2b3e652b40631f2c501d335720385d233e6c2c38 *61203359223961263e632b45602144692d32632747712e3a6b2f3963283d6829346428385e2547 *6f2730612a345c24356538456a2d3e6d323a6223325d223a64223063292e5c1e2f65253665333f *7028356f35486f2e477231476b2b3b69273d6227406729335c1f305e21376720395c2046692a36 *5d23345f2337571e415d1f376526345b1f416426446a284265294364273a642343621e3f642039 *6222486e23496c293f6324516826476d2b587830648141567a3253782e58792958853f587f3c6b *85426885366f8e4d748c43698d476c8e4c6c8c44688b416e87466e86376e8a3f62833a69843d5c *8847648642588237618040698a447591447191566d945872955372974c7a9b537799597e985281 *974b7b8d447b944f76904e6f964c75944475974b749239798d4374934a6f88416b8c496c90487a *975379964d7e9b527293407d9547819240859b567d985076975b839c53789b5179974a7d9c507e *9b53849b4b7e9b5d879c54869d5b7e9d5e829e577e99577a96428199437e984e77975878965a7b *99607c984e74944b74914480964b7e9b5c7c964c76944f799958789b5683a15d809e4d7298497f *984b7f995c759a5d7b98587f9a527e9c54849f4f7a9c56849f4b869f61859e55849d548399537f *9e63869a5a829c5081a15a879d5a839b5a8a9c5985a460869b58809d5f85a25d809d5585a68184 *9b5f879b4c819952799b647e9f6e7c9f627c9a55869d5a7e9c5a899f58859a598b984e859e6485 *9e56819e60829a628ba36b889f58889b4f869950839d50769a5f7798557d995686a3647f994682 *9d5c8ca15d839e5a849e5f849b5a7f9d5f8ca15f8ca05d87a16196a3658da45c90a46a8aa26c90 *a05c8fa26298a35f91a1558fa5628aa35f92a05289a15b92a66c80a164839f5a819c4f82974580 *9c4a7e9c4e859d5882974f849c5a8599547d99577c9a52829f5e829b5781994e8699547e97527d *95447e934384984b7e984b849b597f995b789a53708f4b7b92487290496c90487c96507f934d7e *95477a96507f964c8197527b93457c90507692467b964e79964c6f924d829b5d8a994a849b5387 *9e5b839d587c96507e96527e9b5c81985674945371914771914c71904a748d47778d4a708d4876 *8b347f964577924077924a798f4b7c9551869959739350738e4383964e7e954276974d7e984b71 *91418096487e9a537a91427f9747748d4875964e6a8f426d8b357e8c3f688d447c8c3a7b964e6e *8d477b974f7f94486d954c7190456e8c4464883c6b8d445d853a5e823b708f406f8c3f6b893569 *823a73883e5b844068863c668a406e8e446a8d3b5e8a4272985c6c8d48738e4b738f3c7292486d *8f3b6b92447693426b8b3b7491476f8633798f3b798d40789345708b3b7e923f738f43738a3a7e *944b6c832d5f82396f914272924b6f8c406a893a6f8d40688c446a8936678538738b3f6a864566 *84356186385f863866853d6d853c6a8032728c3d5f87416b8c3e6d883a729349708e42658b396c *91496e8741728a446884396488406688475f87405c80395d81315f7b3d607e31627e3157854354 *7a345c7b2a53782b5381345c853c6782336a83395e8040687e405b8a426785385d7e2f6483335b *74265b6b235d772d6e853c778c407692486c8836738b41648a34738c4470852f789141778f437b *92446c8b43678634748a3b798c3d849147829143879a4d86943c7795427b92456a924570954778 *93437a934c758f416e934772934375964e7596507996497d98467b95457b9442859b537795526c *91466f934b6c934a7a95477097567a903f7b9548788f496d8e40658e4b7191447c9843688d3c69 *8f396684357392476f8d47718b40648c44758d457c984178943e7a96437c91417293426d8c3f7f *9852768d3f7d95487494477c95446984306d8a486f843b6b864364843a6b89436386416d924875 *934769853a72883d6d894a6a894261843f5f81306186365f7f315f83355d823e667e395a7a3857 *772d567b38547a2f5e8030597e3964813560813d577329697a315379395878355e803464853f5f *8742637e32657a2e6a782d557230567c36608132537d3956763162782a5777345c6e26526b2569 *7c26607b33557531597424607d2d547a3459702e576b2c5e722e50732c476c2d4c6f36516d2c4c *68244f6924506a274b64215b6d28677f2d4f6e2e5f742d5073315b7e355a7c3369853769823a64 *82395f7c3e62823c6b7e38678643778b36638646698d476d894d758940788d406c955277904b72 *8d3e6f8d426d8a416b86396a7e396a874d69873965834369843364823564812d6081365d7b3d65 *7a32658541548142617c3a60853e6a84366b843f678841607f426483405e7b33527d3c62762f70 *894164803c637d3693a574c4cecea8b391476c354967292e5727324f1f3560303c5f2339602535 *6228375a232b4f1a3b602c3e5224334e2242602647662b3b5f2a3c64263c672640692b40622233 *6025405f1e3b592749672b46662444652540612a4b6e2a416123416426445e2141682a42601d3e *6623486929486a29416525385f244062273962213d6525395d223b602629591e3a551e415c2246 *6a33496825426427436d2c40692349702c47702d4463233a562348672440601d3b5b21365e213f *64263e6422506c2d4766253e62234560234666264463263e612540672c3f5b1d40631e3f601f34 *5217406424466e30325621355e23385a26405e1e3d6222445f21485e22455f1e4a5e204a66284f *652a517b314c6f225d7c2860802e6981345c7e39587d3d6487476e8c455f864360833765823166 *874163813f647e3a677e34547e425f864c637e4063792e667d336f84385d833e6483476d88436b *8d4c6c8e497797517898537291497e8d4984975776985e8093567f985a7d985d7f965580954d7b *9964829856859a5382985479904c6d96527d93568798547b924880934f818f42708e4178994e81 *97477f974d82984f86994880984b8698498a9b507a924a81944680994e76934e7e944d869a4a7d *954e78955379934d7f96577a924b79924c76944e799448819a4a889852849a557f975485a06789 *a0638d9d548a9e5b869e5e849b538a9e5a8e9a5c889b5f8aa16489a36e7e9b5b839c5890a05691 *9e608da05f929d55849d5d8a9c56859b56899a5c8c9e638a9c578a9b5c879852899b4d859e6484 *9c638a9c5c899f598a9d558ba05b869a55919b5183974e78924c80994d809954819856879c5186 *9a5e8da36788a1627f9856809958849e5c869c52859a51829d59829f5785a15f869b5585975680 *994d7c99547993517e9a638396467e9750819a4d8b9858829b5c829a5c89974a7c985081955184 *9c6b8b995089994f84a05c849b46869952859c538a9e5484974995a45f8a99528f9f59899e5f7f *964d859f5d819d53819956799447869d5482994e8d9e54849d4e7f9b5785995488984c839a4f81 *984c7d984e829c588c99487e8c408694487a90457f93447e9a5f8a9746758c346f8f467f91397a *8c487f8c477b91427a90517f924e77903d7d9047788e487d8b3d77873a738a3d648543688b4766 *8a4868894169823568863f70894a738e46718f48768d427087376d8d44698747779047748f4175 *8f43749041748d3e6f8635748d417590487c9343829745799648748c3f6d8c44678c405d823f6a *8d3f6a8b41648b3d728e477b8c3a80994e7c985477944f7c95486f9148748e447293497f995380 *9650809758849a53808e45819a4b829b547e94487b95437b97517790467a96507d92467c964876 *965077944879913f79954a728e45788f4773904f7b8f40758d457a93517a8f3d7692507b934f71 *8d48799042798d4475863a8595478d9a4c7d99537d9442718f41788c437d8d3b83914080964279 *90458493407c92447b92437d975273894073893d6d853b6f883b718c387492466c8c486a883d75 *8d486f8b406b9047778d426c86417c8e476d8f47778e427a8f3e758844758f47708b436f8b3f76 *8f417e92436f85467287406787436f8a4165853f5a7e4359793b697f346482425f7e38607e2a65 *7e29657d33637b2b647f435f7d2e58793353753358782159762b607b3160762c51692750732a66 *7c2c57722a5e7c2f6081385d7a2c5c7a33708642678239728d48778c416981376c86367089356a *802a7a863677883f6b8a4964823e6a82346d863d6d853a6c85386f8a3c73883f768d4465823a75 *8c41789144728c39708e407f914077933f798d487f9245738e48768e437e964d758d3f7c8d3a80 *92407c8b3b7e9147708c3d758e3e7a8e45719047758e4172883e6d893e69833e658a3e6d883c71 *8d3f6486416d8540718d43698642718d3f7d8b36829646819646819549819244778e4881964682 *94427a8c486d85337a8c4274883e708744678644617c3062782b69802f66853f6984366481315e *772e628338637d2f617d28657e2b5d834054723b5d773f567639557430638139637c365c702c68 *82384f712e5572285d712b6a772a687f4265803b5a7e33657e3765804265762d6a74286b7e3661 *7d36617d355c77325c712e4d6927546e294c631d4b5e2356651e476128526d2b567b3462823c5f *7d315d7a306d83335c7628627e305b7d3b64732d5e78315b6a2b5970265d73314f67254c521a4e *6420496825516b27486a31536d2c526924526b1f4f6b236b7b2d667b3067844066843f65823370 *7d2c69833766823d658131687e2d6381316d84376a7e306982336884336b7e2e72853071863774 *86397289366c8437697d2d718233748231758235677e385e6e2e5c70264c642453692556743263 *7a2e587e395f7b3f5f7234576d2c5a6f2e5b6e2d5f702f5a72305872336d7b2f6f833a697f395d *7029697a356a7e3f6f783f9ba56fc4cdcca4b3853b593638622d48703639683336602d43693034 *652e355b252d5e2c2d602730622635612b3c692936602440662c3d6726385d2140632637622736 *5f2637561e3d6b2f36673c486f3239612f40632b41682e44692f44662a416721456a2e48702d4a *6f354673334170283b6f282d5b1f305921294f1d3e5e223e5b1d305f26416f313b6c33466d3a48 *73353e6f2a3f6a2b3a6c353d6526436c2d4569262e5d2540662f366430486222396522446c233e *6c24386026275c1d346022487533386b2a446f26416a2537612235642946702e3e602037632740 *6c33385b2544632040621f355e1936601f325a1d3c601f365c1d2e612330601f3b6820335f2035 *6427345f1d4063233f6b2e4169264364244a6b22436a1a48762e4e7629507826415f265177365c *8337548139577e305c7b2a5f81345f7f355980365783425f864968843b59813f61832c62843763 *8237617b365d7d3e5f76346a863c6988445984436a864066863f6d8a45709246738d4a7a95587d *97577d9c69829c5b7e9a4e7d97507f9852829646829a587196587a985274944c688f4d799a5678 *94557f9a557d9b5c7d94527c96577e934b7b9854829a5081984580975c80974981974582995d77 *9a56809c5686a066879f5a7f974a7897607b974d7b99537e975077944d7f97567c974c7e9b5d85 *9d5279995f7e985475995d809953849d6287a064859e5b8ea464889b5a849c60829a5380a16c84 *a16b829d5585a26289a1598aa360809d60819b4e829c557e9a56819e5e8399597d9653819b4e80 *9942839c51869c53849a5885a1687f9e5c89a36589a35f81a05a89a361859a51839c5c81944b7d *954f859c60809d5d7fa06085a26189a46888a05b82975c8299547f9a567c9a5584a16b839f5f81 *9a5289a1677b994f869a57889c4c77995f7b99537b9c5d78965f819d6080984f82964d79975274 *9653799965839b5c7d934c7fa0617b9d5978995e7e9c52789a5c7b974e819e6083a060819f6282 *a25b839f5b849f587e9d5580994f809a5a82a05a88a3598ca6628ca45a889d488ba35c8a9f5986 *9b58839d6483a467899f6090a3638ca45c8ea25d8da35b8da1558da56c85a468819b4f85a25576 *9c5a819c517c9949899947849c5f80974b819a4c7c9752788f43738b3a7f924f7b8e4777914679 *8f4467844361874260843b6186425780415e833f6f8c4d6a8a44708b3e6a8e466786446587406c *8742738d56738d3d60813a5e7f365981405e7f3f67853969873c71914f7f96477591446c8e4867 *873f648a3c768e3d678b41637f33628c4d708d43738d4373914d7994476c8c3d72903c5d86426d *8740748c47778e4c7092486d90457c92446b883f708c3c68873b69863f738e4172934178964b72 *944767894066874966864479964b7894507c9550849c527394506d914974934972904576924d75 *924d6d8f477a9141698a41719045819546859b537e964b7997567d9a5281965075914279944980 *9f537f964b77924d778c3f76904575965c7f9b56649346708d40668443718a456688416887415e *7f3d597f385e833d658d456785366f8b3f6d893e62883e67863f6f843668833f63823b6c8a3b6e *8331738e407891476e8c3b6c852e69924d6e8b4b7690436788466c8d47668d40638942738a3a68 *873a66883f68873c65813a69853a60853f578143647f3b65813b597a2c6884376080376a863260 *812f6c823b6c84366c843a6f88376686436c8537758e406f8c35779241668b446785406a813d73 *883c6a8135637a3770873d67842e617d335f7b35637d2d6f8b3c69863b798f44739147718a3f69 *8138728e49799041809243778d3f76904680954878924183934784973f85994c7b96438596456f *8d43778f4f82974b7992477b9a457e974679914b7f964b74893f7c91467691516a8a4572914377 *91447393497691477190477593488196507991447c9753839f517d98507d92466f8d4682994d84 *9b557e954b79984b72914d7693487f97497e92437d924280984a7e9243768c3e738e4871904970 *9146698c4275924d738e4875883f7c924b688a4369813f6785416d8b4066823f6b85407086456b *843e657f3e60823963884266893e68843671863865813d65833e5b7d335c7c3862833f67823a64 *8539688b3e6c823c647f31527935606e24667d3b658338607b356b81316a863c65793d637b3462 *783e67853d6a813558813e517630617b2d62772d5e7b365c76316a84426384337089426b894466 *8b4d65813d62792f647b3a657b33608137597b32557b395975335c7d386183375d772e5f7a2f63 *752e617a2a5e7a2c5a7d3e547d35567e396c812f577226617e2b62762f67823d667c3a687f3d6b *7d3a697d2f6080365b762f697d33608135647f38738540678740617b345d80355d7d3b59742f69 *80316a81365a7a396781386485405e772c5f7c37597c4166823d6a813d6a7a3464844072843f68 *823c61833a6a833c6c833d7382429ba977c3cece9ca871385327416029466832425c292e5a2b46 *6e3442692b3d61283b682e3a56203c5f2932552a364d26355f2f40622349662547662350712e4c *6b33436c2f41612d446333466436476e3c4d6a28456725496a243c612b47653445692d456c3348 *71344d722b4f7028416e31486a2945642c336227365820486b294d6d2e4772244366234c67274e *6a2a4865275b7235466a28475e2b41652953792d50651e4d65294464294b74314d73354766264f *772c4c7326406b2f3e662042601d45611d436a23456c29426a264060264464244c6e25506f2557 *733257732b507b374c7932587b364d7d3b4b74313d60253f601e46631f42621d40631f3b622344 *6725416a2539641d486b2947692e43681d465c164b6d26335a2141602144642a49681f43641e3d *571d425c203e652452722d536d375d79385d7f3461812f5c812e5c7d2f53782d597837667d346a *8136698440708b436e8e40708a407b944675904576873d6e89407c91476f8f4c6e89336c8e4569 *833e6e843569823f6d85436d8f4c698d486b9250738e3b748b40708d3e6c88387a904a758c4970 *905479914d73945177934f859e567f9552839a488197568096507b964780955b77914778975373 *914a718e4880954f7c93508898557b965b7f9e66899855819959839a588d9c59899a55829a5a88 *9c5b919f5f879a5d889f67829851889a4d859a5a7f914b8096537b934c77924e78934e76985282 *9a4f84974d839b52869c5a8099528a9b5d849764849d6d849b558ca253869a55889e6990a36486 *9f648da56d849b5a91a05f8aa06490a35390a46a8ba564889c60869e618fa2668ca364809e6884 *9c5989984e83944e86954a7c994d809b6286a05d8a9f5e819f63869f5b849e6280974c7a914b7a *93557f9650869953849852899c5c88995271924a80954e7e99557e9b5078995273945776935f75 *90406987466c8d4a7c93457c8e4376914b71873b7b934970904c788b3b7d9247728c3f738c456e *89386d88417591507291506e93487597527998547b9a56809854889d4e8a9e5882964b829a4d81 *924a7f92438292487d92487d964c79924677964d77964c7d953c7492447f96407b97467c964a7d *914576925675964c739040788c4a718d496e8536728a43748d42728440788d44758d516b853569 *853b6586427b8c4076843d6b843d6e83316b802e688032697d38527b32628032647d325d794056 *7636647f3761803b5b833565853d648136657c355a793369803c6c8442738b3f6a86426d8b426c *8c46638642738d3d7b914d7b8e4c788d55758f44688a4365863b728b407691417e90428492457e *8f407c8b3d7f96528392497e915275893b7c913f80903f81903f7f8e49788c4370944a79965078 *935078965081985280934682944d859a537c91478396468696468094457a934a76924a7b92447a *8e48769247718a3d768c366f883e738e45738843748a3d7d8d3f6e8d47758d46788635748b3a67 *8b4067914077904c758e407c90407a8b3c7e9147768e4b70852e6588455a7c3d5a8143607c2e6a *853a697e3d68793a6b84446880326b8d456c8b45718e4565874172863d7a8d46748a3c70853969 *7c396a87405e81416a843667803165873d65813a68813365863b607d39627830607f3a587c325d *7127657e276073256182335e7a30628c4862814260803c68813363812b64824260813b6b7b2d67 *7c2a668138678135637f396b843c677f32738d4872863c6c833e73853b6b853a6f873d6c863f69 *88416a854467813e677d376b823e71863f6985416e853772863976913f7d913b788f4c7d914d7a *92427a914b7f92437d944979873a6e8d49668e3b7b924577933f7b924e7f8d4084924373883b89 *97407a9340768d438091446c8b477a90478193497c904177934a6c8d476e8e3f68883c6e8b3e73 *864273853c6f8a4372874269893d758c45738a437f8d437483387c8c3a828f457c9141778c4182 *9042839042848e398186357584386f853a768e4a7a8540718940788d3a71873f6e813674853f7a *852d6984407d8d4e788c4e82904c8392407d8e4575924a78904b7b8f48788d4c6c8442627a3372 *8241718b44728537798e486f8841768a4c6a85426981426584416a80346c85426a7d336f823573 *7f3275823c7988387a863f6e8435607f366c82317c88357f8b437e92467b85326d84476f792e6e *7e3f7689377a8b4276853d70853d60773073842e7386366c84326d89406f86436a7d2d6e863b7b *8d3d6e87456784416680396375355e792f597526596e295d6f2f63722e58793668824064813968 *7537616e2c6274286d81346c8037697f396f863f6d7f386f833e768b4074842f6c833f75823865 *7932627d366172305d773965823466824067742e60702865732f6d732c72813569782f73823972 *802b7a8a35788c407b8b4272863f757f3b73823976853b7281416a7e386f823469813b79813671 *83447a86437b854075833d74833580894a9fac80c4cdcd8fa56b42612838612c456b2c3e652a3f *5b2142692c32652a2d5829335a2a3b622e476927325723304d1d3952204b692a4d6c33516d3b4a *69345d7533577426475723304b1e3252202e461c36511f2f53243b642d3959253c602643632238 *5f22405e233d6833466d2a3861273a68233f601c3a5914315c223d591b3c652939683042642044 *692a3f6221486c2e436e264764263f6525486d294766254e6d2d4269254c6c224b72274c6d2940 *5d20476e2a4c753644671f435f1d556f2847722f4f73254d722a436e2a547a345a762f56773556 *7d34578642567d31527d32557428537b32568041516c2a5874304d722c456e2d4c6c2645702843 *64204b70244e78244c72245072294a722d466c2448672342651f3e6521325d1d315d1c335c2641 *6629385c284769253f6426476922436a2141661e3e6322416c244367293b60234b6d214b753157 *7f385476356282375a81375c79355f823e668842778e377693417991487c9549788c4379954c72 *974e7297517b944c7890427b90316e8a3f72893f74913f6a853871924e6d8a47688a3b6d872b66 *82295b79346489456a8a3f6f873a6889427b914881974d7f9b5d81995b849a4d859c5270914f7d *975079984e7f9a5b79934882974c7e975182954f85964c869a4c8a9a50879c5e84975082985786 *995684964e86954582924a7a8a3e7f9a568199548195477a914a7a91517a984c718f4375904269 *8e476d924a728e457292407f96527d924c7f965275984b8198487f9647819247769044838e3f7f *934485934282984d81995982964a798e456f924d81974d84994f86995882974f88995087974d81 *974f7d95547b924d7c91497b964c839952829a517c944577924477955176924c76914876944479 *944d7792457e91487592447a96467a903c778c3e7992497a903c7d92407a9040768d46658d4e65 *873e7595456f924066893c7e8d427b934c78924974924d6f8d3e6d92466f8d4472924b76874874 *8f42678c3b708c3f788e45768e406791456b9045718d3d608b466b893c76873677934a708d3876 *91447b8e3d7f8c407b8b3f7b8c497a944e728a3f6386336785355e813360862e6a843a6f8e3f7c *98536c8d496c8f37618b3a60833f5f813565823d5a7632688b406586406682396d904575823869 *83316c88436084436a843c68843d64894266873c63863a5e833b627f436a80386c843d647f3763 *8335607e2e617b2f687f2e6a81386f812f6b83387b883c728a456981376e85407c8e39798b417c *8536607b336f853572883c708d4169843b698c437a8b3d6a8536718c317291486a883f708b3a74 *8b336d8a3b6e894360803a6b833369853f5f7c3d758f47708a4178924e749046718f4975914174 *8e416f8d42768d43748d47829447859b55869c567c944780944a88994e859d578498527e934c7f *94457e914b788f3f7e97497f964c7e965080964c7e94497c8d3f6e8b4069863b798e3f79904177 *9442738d406d8b418092437f934b7691447c924b799248718d3c798a436c89416c83346d833b70 *8b3f7b91507d92477790476d8c417a90496e8c426b8d4b778b3d7b8e3f758d4372863c738c366b *85437786417b8d43738a3f7b8a4176944e76904871873a6c8b386a813372873c7485327381306d *812e6182335985345f7d2f5d77275b74256081385b82385e843e647d33617f2b6e874267853862 *7e2d5e822a6b7b3368782e5e782868893e72893b6b8940678c3f708b3b70873b70883a78904b77 *8b416e893d6e8a446a833f67832f758b3b6f8d44738a3c768e397c92437e934c7e96507f93487c *944279953f7c8a347e8839728830768a3b6f863b78904a6c8d436888426f8b386f8e4d78944672 *8b487792467a904b738e4b7a9647748e43728c456e84346a863c71893a648345637c36647c2d63 *8334667f3b61782b647d3167802f75883665853d6b803273873b718a3680923b758232808c3e7e *92467e95447e8a3f8a923e7a92477d9143818f467e8635768e38728a35718b3a648031647c337d *8f337d90487f8f3f6c854679853f6a813a788233728a407386456f883e79924c82924a7e904d7c *8e4372893b6b894c728e54758c48718c437a8b3e6e873273874061843f70883c6d89407d8e427a *934284913f828c39808c3f848e3770893a6d853c75843771854479893f768a366d853173793172 *8934798c4460813773843f72873c718737738f336d8d4b74853374873c7c8a40788c43667d3768 *7e347087316d863e68853d7485406e7f386d8338657e357184377082366580375c7f406a7f2d77 *853368762c66752a697e356276316c802f6a813076883077873176843d7988356d873f718c4274 *893e778a4a5e7a3d677e36667b2863742a587030657b2f5d732e6779406f7e307b883e76872f74 *8740708428647a347d8c48818d4c758040737f376b7f366c82346c80376a823b7c8a3f7d883974 *8744718b49718233708f44748c46818d49848a3d99a87bc4cdcd94a1755c74364771343b703547 *6a3d436f363e642946642b476c354264363a683f3d64313761303a6637476d2d4d702b556d334d *6f3551733946753c4d7032476a354a67384d6d384c6d2e3e632b4c6b2b44692f4c692f325c2541 *66323664283e642a38602b405e2738632e43613043622232582a3c642b42682d3f642944642a45 *6a3231653542602936602c476b2d38693241683146702f486d2d4b672b456f2f44682c3b622741 *67294d70243e5f224266254c6a324b6f364264274d70304d6d264a703a476a26557d3a4f75324a *6d364770304d6e2b436a2944682b42692b4761224c7434446b294b742f4f773753772f53762c4e *6d284d6e2a4b6a264768274c6f2d4f6f264c6d253b601f36582a3b6626406929446e2e3c642539 *581b4366243c5f243f6325437232507037435f26416335406828425c1c3b581f3c5d233d5b223f *62244767283a61264e6d2c4d7237476c294364274368253e60203f5d2241642f5d753655803d5b *8339527531587b3761853e6b883d647d3d6883346b853f65844670894068863d6486465d854466 *88476b8a4d5d803d6a864b658740698c426d8843728e48798d437089416687406d904960854363 *853e66843c768c3d7d924d698d4f748f5079914d7e91437a94447d8f4777924c7a925079904b7c *965784944a7d97547f92487d964f7a8f4a788f49779150738e4c7994527892577e934c81974875 *964c709052778f4a6a89446e85406f8a4174915378905b70914d7d93447d92447e8c3e8697487c *944e7f9449758b48788d4879934f79945485965a77955d7b964c79965a879c64839957879b5c89 *9d63889f5d7f97507b9459839961819a5b81995d7d98557c95547d98527c98547a8d496e874063 *8644738a486f8d4c7d934c7a924578925182964279924c728a3f7e95477d934b7e914a7b8e4479 *8d496e8944688a476685486c87427c924b7692517a935079924974935375934f819245778e4973 *91487d9854709250698d4a6c914d728f477891446d8a45768c446a87426a8e4f738b4377904a76 *94527b964e80964c7d9558758f4a758f4e7a98516f92496d8b4762854867863e6d873c6582406a *82406385435d81316689496185496080405a7d315273335772335d7d3961813c5a79415a732c67 *7d3c647e2b6886425d7b365f81435e7e3e627c3c5b7a3f6a81405b7e3e607c386e8b426282405e *7f3e6379315e7c3d667e3f617c3f748b4370873a6d8740687f3c677c3f66823c6a83436e863c76 *8a3d6a8a3e6f8534768740617d3a677b3367823c658a486b8843698941648a3f6a8e4b73864268 *843e748a3f638546688a3e6c8b40698440658243657d386a7932647c2d6a82366a813967833e73 *883f6e8b4664854461864072833d67833f75914e809859698d4f738d4b7293507491447d924279 *8c3d7283357381396c7f2f667e347483317f883a75873d6f87427b893a718b3d73893b6b863f72 *833f6f833b69853f799140819046759043708b40738e486e884966823f6b7e386c853f687e3b6c *823e7489417a8e487e954e7f954b80975270924f72955171904a6c8443768e51748b47658b4966 *8842788c487488437a914e748b4777884a708a476c8a47728b3e62813f638643738c4767854475 *88406b813c6381416d863a65823362853c577c38648147668a40678442767e3875812e67803a66 *803b7188406e853f698b4073893f73924880934d80914477964f798b406d874b748f4d778c3e75 *8d427b914184924583985a7d9a5d8295487c954e7b965a7a974c8398507f98527f96587b954476 *934f7a8f4a7d955181954e8a9d5e8c9f5877975c82934c6d8e3f66843f6f8b466c8c427a8b427c *8b437c9043798f4b788f447e944b748e527b8f42738e4c74904b6f9349708b3f6c8d446c85406d *8542759140728d476e8b45748a4c7e8f3a768d3d758a3e7c8d3f78863e6e89436d8c496e793371 *8d477188476a8a4184903f788c386c8b476586446582366b84437086406b893f59854269873d72 *873d78873a728a456c883c819044798c436e89346f8d4481934a78934a6b86436f86487589486d *83427285406987416d87436a813f6e8240778849788c486f8b5069884f65823d6b833c65803468 *813a7b914a7387476c823c6f853d6985356a82336b843d72843b6881416f84386f8b426a85447a *8d485c813865854266843c6276366a7d425d75406e8442667c376d80366a80346b873b6a82396a *813f64833f607e336282376a813675854671883f708b437089457381386c8242667934657f3b65 *8143577733647e37607e306579336c80395c73305c7c386b803a73853f738745677f3c65793962 *702c5f72335874365e71356472355e70365f70335e793362702969752d6a7c326e863e718a446b *824377823a778d446c843f768a477a85366c8034717c2d658039688542748b4477893b8194497c *8b407789416c7f3c6d7e4369814972834c6880467a813b9ca979c5cdce8a9d664f70364d6b3647 *6d36486b384d72354f6f38426d354a70324b6c2c4f7747506f334b672c3962264068224a743142 *6c2a426a2345682e49702a416b263c6021395f274d6e2b4168363d5f2837592342662e3e652246 *5e1d375d243e622445733d446e2c4566234a6e2e456c263964243c64243763204263214065233f *67263a5e223b5c2a43662b3f60203c632a3869293765242e5d1f44622149692544642545621e42 *5b1e3056173a6424345c1f3f641e3f601f43651f3b6327436c2b4669264c7135366831456b2d45 *6726416626506f24476b244d6d29496f2a4467294369254e6f2f3f6e32416e28496a2e48641f45 *702648702a446e23496a2948712c52792d537e2f52772a587b33567c2c527d3d508033446d2654 *78294d75324d6e2e4f71284e6d244c712343681d486c1f477127456e1d4f7b2e4573274a712a4e *70264875245379354c792f4b7325436c2b4c76375677335074274d6f264a671d3f5e1b456a204d *752d426d2b41611f4a70294e6b1e4a631e47681d4a681c4e6c23537a2b55742b5d73296180346d *8b326a8837617d30537f3b6983425f813c68863b678d56678641728d387e913f708a406c843b5c *7b3c65843b537c306c8a415f842f5d7e3269812e647e3967843b678e4569893b6b8a3f6e8d446d *8c38728a3e779344738e477d9143768e407695487b95457894477892438392457e944b6f8b3a6e *864366893d6387416e8d476d8d46718c46748c447d934d7c924e7e974b83995482974e82965c77 *9449768d4482954f84985a76924e7a924c7993536c8c497d975778964f789143759042748f447b *92427b944e7291486e8a437288366d89346d863d6d883f748b407390527e995a79944d77934a7a *964b78934278944a7e95508a9c5d8da1658199518a9e61869a57839543859947859956809a5185 *964e80954b7b95496d9658698d427a97467a994f7a9655829149768e4476934d77954875904c75 *924173914675955077914f789140758f447b914b7593487c964675934b76964c76924676914379 *93517e913d7991467a934a718d406b84306282336b9045738e3c768d4178914874914774934576 *8f427d8f41809045748e44738d436c88407590427d924d7693566f8d4773914a768b3f6d85406c *853e69853e6d86435f8334668335628239728c446e84376c863e6b883f64803e6a85406a7f3765 *7f35678440627e2e607d3863823b617e2f6379306a7f2a66802f6f82366a7e356a812e7182306c *813471853a6585426d8a3a718a3f798d4071843b6486397a8d31778b4078914367863c748d4568 *90565e8646698a416c843f6a8e426b8d42648a3d6c8740637f3e778c3e6e8d446e8f4476904a71 *8f4571893f708b426c8a3b6a8c466f8541738d3d718f41738f446d8e406987386c822d68873773 *904f798f497185356f873a67802d6a7b276e802c6c853076883b627a327e873a7281327585376b *893b6f803366742d5f732a6d8135698233708a3f6b83316b81286e8643778a336b863c64814063 *793c66813776883a72863b788d407b9047698233799040768f3c7c8e447a8e3578893e6d85406d *823a68833a6b8139757f2f758e546d81406a88425f7f3a6b8a3f6b863b69813363843a5c844867 *853a6c8b3f60844267863e6d813170873b73853c6b813b6277255c7e3064823471823867863c79 *914c7d94487e96467697487e913e7f96487d9951809b497d9855809a457e974b7e93467c923e79 *95507c9644718d3e7893496c8836788a3c798934768b3f6c8c3a748b3e758e3e73893b798c3b78 *832d788b3a6d81385f7f2d75832a6085406f853b687c3053782862833b6d7c276d7c295f792761 *83396c8639607f39618130647b2f62772f647c235f782b5f84396c84326a8536607e3476893e76 *8d3b5f863f6a8536657f3d6f863765833b698338738e47798a467793497d98507d964d758f517a *8e497489417d8f4a6e863d6a8a3f758b4377954472823b778c47778a3c81903e8296417a954b78 *90497695477e94457e8e4475924680934a6f8c467a934485974d7e954d84914282974d7e92477d *924a728c46778b3b798f44708c407f9248809247788e4b8192447a8d427e8a41798b3b7b8d406f *8c487b914a81944583934d7b8d41748b426f86436e8237758c427e8b42728b446e853d6f8a4679 *8c3e758d406e873867853b6c81366a86406681316e843e73812b718237667d2d617e3a6f883e75 *85406c7b326184316b8131647b3571844b72874170873870864172894273873c6c83376f833f6a *762c67762861782e60792c6581385c7631647a2968832c71843a74833c72873472822f6c813760 *7c325c7b38698335667c306a7c315f7d366e7d26858a3a798a3e7a8d417d8944818a3f6a7f3477 *823a74843a7789407086427b92486f8c4b798b41658435728a4372853d6b80366e853a7f8c3e7c *8d447a8b4976863d758d4a7685416f7d426a843e788b3c7989419cad7fc3cece909f6a5f6e2f55 *78454b703956783a4c7638456d393d673853753a4f702e486c3845662f4b6f2f45692e5274374e *6b2c496b2943662642692d426a284e7130566f304a682c445f2544602d375121415a21375c253f *64273b5f1c4160223f5f253f65294365264364294267293d64273e662541662039612643642539 *6624456c2a4166214368293f65283f6a2f4b671f456a2a3a5f2a3a5c223f64283b5e1c43692637 *672a335b1f365d25436029305521345d2432542031662b40652747652a3661293f652644631f3f *662c486727456425476629406622466320456824486a27506c2c476c25466f2b4b6f2f4766223b *602738602645651d3c66233f692643682e416c2f4d76364a76374e7230507b344976334565204e *702a527324486f26516e2850742e4b67274870274671264c6a2242692941631f52702f48732d59 *814254813c6590435d863d63883a53782b4f6e2e547c305d81314f7a334b722c4e773357742c49 *6e2a577529597d304d772c486e284c762b45692d466921446b1f4d6921506b234e6c24486d2747 *681e476a234e78283f6a22507020507624557323476c234170295c732e648138688a3762854364 *813267823f6a843b6485446989486c813a67853b58752e6984406a934d698b456e8d4378944a72 *90497a91457293476c8f44708e417395447192457291487390486c893c6f8c456e8d417290426f *8b437d8c456a893e6e94516e8f46748a47638d436f924575964276964d7e934d75955f7a8d4680 *974a899d567f97547e9b5b7b944782974e8197567a93437d8f4c6f904a7e984e81995280995383 *99577a924a8195487996577b924a79944e7f94427f94547a8f4283954f878e4572904682924a7f *974b7f954a82964e85974b7f964d86994e828f477b8f468195417691477190476f8c4070924376 *91337f934881923f8591457a90467389497c95546f924c849a5d7691457887366f8d476d8e4d7f *935071894f76924f7988406f88416b863c769344718f40708c41728d436a90456a8941698c4773 *903b6a8d44809550778e44738a426b8641758e436b8f45628944728d40799347758f4a6b8d4865 *8b4473934366813364843c5c7d355e8234597e366086436f864065873d6e853e6d8b44678c416d *863e788c3961853e748c466b8d43788b406f86367084366480376683396f874174904a6d884362 *8a43658d47718d496b8a466f89427f8b436782367486406182397688376a82386e803f7184406c *7e3d697e3d647a33627f34638648708036667d2f6987376e8540738b41728b40758e45648c426c *863b69802e6b853a6d87396e873d7a8f546787466c863e6d8d486d81386881356480365f7e3d6a *863b758b4a698331748c466e883c778c43758e4576873a728b42738d3f798f3c798f417e8e4472 *89426a8b4365894274883d7991456d8435658947768d436f893e6c7c38647f3a6b853a6f823b6e *8942728c42818d3d7c89396d824171843f66783563813873833b7c8b3e758a437b8d3d778d4471 *873376863c7d8a3b798d466c863f6a8a4a6d85396f8d4378893c64873668883f66843d61813a69 *833f6680416c853d798a43768a3d788d4469873d758e46738b41748b3b738d42738a3c69833373 *8737648136768e3c7d8d3d668f49768f4362863d708c4769884365893c708d4873893c76864973 *873978964c77914c799250729047718d3e7491517a92477d924c7b8c467c8d4274873a7a8c4375 *87347291536f8d456e8d48748e43708739718f46749444688b4075924a788f45769045788d4483 *92427a934d8192426e8b477f8d448590427c85386782397386426d823965863f5c7f3c6180346c *80286c893b708c3e6e863a6d863a5a7d365c783e5a7e3a5f8335647f2f61813475873b607f3569 *873f62823b627b355c75326b873a6581326980336883346c873863863b68823e69833d6687406b *893e6b8030708b405e863c728c47778d476f8c4775863e6c823969813069813b808a417b893b6f *8333818d4478884c7d8d446e893d6f893a748448708244728c47798a486f86487e8a41738f4575 *8e427b873f7b8335758c426f853e6b843c6d87437b89427c8a4286974b7a90447e8e59788b4780 *90457f8f43768e476887476d8c476c85406b803272852e6c88376e81366f8335567b426f813a6c *823e6f86376e813475893a65843f66813f6a843d64813d7387416f81367d893c7388486d7a3e73 *853e6f87427685466a813e6c85436b874269833d7280426a823d758739687f336e85426f843a6e *833a727e2f6d82336e7e3760803960793f6373346e79366b7e376d813f6b84336d8132647a2b63 *7f366b81325f7a3967803a70813a7581416e893e6d853769802f6e7e316c7d416b85426c793665 *804275863b718635818d4764812f5e86426d874178833d728742748a41768d496e874f6379416d *834070813f697834667e3772843e6e81466d833c6d80406f843c74854393ab7fc4cdcd8ca15f44 *69363d6435386b3849733d537a353d67314b6c32477335426f32436c2d466d2e4d6c2251763250 *7f344e7634467130456d325174314b7330446c2e466c2f466f3450742a4a6d2c416f363d672735 *64283c6327476d2f4e742d4d732c4a6f234267233f62264165243e6726426723466d2a46662743 *6c243e65214367284667254267244169253d642330602338622241682d4466243b5f233f66203b *6220416c24406520426c3240682b3a5f1e436623426522425d1a3a602343622140652d49703640 *65293d6927335a1e45672747722c466a234d6e2544702a466a244d6f26436e274f6d224e772e4b *712c467437527b3362813760802d537128557e2e50782651782a4b6d2552742d4d762f446d2b57 *8036507f394e7729507b2b5175244c74263f6d265177304c76334c762b526f26486a244f732847 *732c446e2b547e385a803f57823f4c7734517d32557e2d4e7b334a722b49752d4c772c4f782856 *7e2c4b77344869224c6c2e51762a496e27557f2d51712545712c4e78324470304a772e516e2b4b *6f274f691f4a762a3d6c2348773443702a4c6f284b6e22415e184a6d2a486d3051681f48762d48 *7625506d27446a26516d24435c1a42682453792a507326527726537a2d5d843f6385366b8d3b67 *8d3c6c8e4461853769853764853c6084335c81366287316481396f8a3e69853b6e853e738d3f77 *9149728835698c3e668e3a6f89337c93467a904476914d7a93457f964673903f6d9141728d3b77 *92486d94517c9243658c43708c3d6d8b42798e406b8c426f894176924e6287436f954b7692436b *8d4074924e7b9b4f7797557f9a617b92467b944e839953839449829952889c5c879c5981995583 *9b5788984d8a9c4c869a50899b598da0638e9d5392a1568ba3668c9b47919d5a89984e7a92487e *964e889a5585994c8b9b578499527d9448789145788e427a913f738c3c6f8d4a798f496f92526d *9147738f406b91477d934577955069853c6d8e3f72934a6d863865813268873b67863e6c8c3e6a *8d46788e417d934b728f4775914c7c944a76954d6f9144738e3f758f416f8e4376964d74923e76 *93437592457d9141698c40678b40648d3a73914d768b3a768f417292457d964681984e7a954e80 *924c7e92497a92437d9549658d4d688b42738b446882316e8b3b708d467790457c8f416c8b4175 *8a4b728f4772893772873373893b6c8939657f37647e3e72833f668141738840727f3773864168 *83366b8835758b3b798b39758b3f748f4a7d913c7786307b8d3a6a853e6c8d4f6d8b44778e426d *8f446a8a406382366585406e8c4979924774843666833f71904a72914a749143718b42748c3965 *83346b8b4267873e75904b728d4683934f7f8d3e8191457c934a738e4c6a8c457990457a904575 *8d45778f466c8d3d70893b6e86387e904b7e91457d8e3e76873a7a8b427a913d6e833678883f7d *8e3c818e406f89457c924182984378924e738d42818c3f77913f7d914b81954681954884913d75 *91487c964c778d428491497c984b809a52859b4c859545829b4f70914977914a7e95476e833c68 *863e6c8f446a893d698b3d798e43758c3f7e8c427a8b3c778d3a6f8c3d7e9140708a43788c4078 *8c43748c4b71863c7e94437b9246768d407693467495437b8d49728d4c758e46788f43758a336b *81316988406d86346e914c6d924d8093457f985180974d7f9344748c437a8942798b4080934482 *9747749144798e467090437a91456e8b416d8c3c638131708a386b893a778d427a8f3e7b994e7a *974681914682914278974f8096557991428092487e924d7a943f78923d768d42768840788e416d *8b3f6a8f3b6f87416f8d3d5e883d6a853a587a365d7b296685316a8535768c49718c446c8d3e6f *8c426b883f6d8a3a7888426987386e883d69893f6e8a3f749046728a3b6b894373873f6d8a3b69 *873f6c823c6c843e68883a6989427e8d44718b3e6d85406c87406f813a7084386d8a49838f4281 *933f7c92427692496e8a34788a3d6d803660853c718a42708c416c873c78883b6681356c8a3e62 *824370863b778a3e728a3e6c843f6981336d86376b8b466d85446d88427886316f873b6b86425f *7d336a813067833d677e3c647f3265803f6a7d3e617b31627f375c803465813c6b7b2c5c742e60 *782b6a79286786326981316684355e752a687b3568842c6c863070893568842e71893d72853c7d *812e7489366f8542617d39697123637d3265792e637e33697e396b7b3474813776853f667a3061 *7f2d6787406a833564813a687e37607c326c7d2c69812a6c82376b863a6b873f6a87417085366a *813d6a803268833a59763169843357712c6274296b803868823864813f6681356c823569823669 *76316e833d5c7e3d6b863f7983356d873f6980316d89346f853d75893f6a85487186406c7b376b *803e6b8645708337647e37687b366d853e7389426f90496d87457b89487c8d4a9eae82c4cdcc8a *9c5d516f3149713e659150578042456b323d6b2c4b70384f73334368283c592545682b43652236 *652a365f234465304c6f2e4169254b6a3047653043652d3c6a3442652945652a4a682b35602744 *6727406127436629396626446b2e4368283968273559294461264d6d344b68263f602044662338 *5c233a5e1f3d65233f65253b6022476b254264233d5e22315f2230582041671e43692540652543 *6a283b69254467213a64213452152f4d1642561336631d3564273b64273a5f273f66253e682b45 *611e365d1c2e581c3b5a154268274166284966214267214065224564244a6a2248702b547b353f *6b2f49712e496d254f712b4b71234e792c527a2e4f71274e723449722f4f72284c702452762f4c *6d2348722c50762a4d6a1e4e7728567b334f78325e8946538136546f26507c324d7231557d2d4c *6e214f73285378294c752947682847712b4a713248652956712c577c3c5880375c7c27577d2658 *8132547932517b35527d2d4f73334c7b3048702c52742b4d7224426d2744772a3f671d4366274b *72214d742d507226537a2b456d22456c24426828426c264f792e4a792b497527527524476f2d52 *7735527d3053772c436a2d4064214f6f2d506f2f5276234c6e214b6e254667244f732d44691e4a *681b50732d5275254d6f224a61194d6a1b4672284b6c204c76244e732b586f2a4f76295e7f3562 *7f2e5b7f2c5e812a64852e5b782b678d3c6c8b446f8d446e8c3f708c446f91445d863f718a326b *8c3e6a8a436c873f6a8931728c3e6c8b406a8b4166893962863d6089466f8d406d92476f8d4663 *8a416a8d476d8c3f6d8e46718d40688c50728d407a92496e9348708c47728e427e8f427c914481 *974c87995c8294407395488197507e934c7d94537b924a7792497592477d954378944e79954772 *944681924a7c92497f924c758c47789149748d46739650799149788e396f8f4a73894276904779 *974d7d934081953f74893e768c457c90497690487d92497d91457f934d8196558297577f995483 *9a4e7995467d97517994467e91438393447b92407a8f3e81964d7090446b8a3d758a4277893b72 *8d436d883b718c407292426f9242648b4377914f718e4776904a7a8d4977923f7d974c7f914373 *8b3f6e8a3b748e3f73905281974f79914b76944585964978914475914882964e79914d80974c78 *944e7493527691447d9657758f4589974b7e91497e914f7b924a7a9650798f3e7992417790458a *9949858e477592427e90487d904c80975174924379924d7691427e91407a8f4b788d487991477d *91477a9046758e437b8b40708c4c758c44728d446f8b406c8c3c728f488193467e9652798e4d75 *8f447f91467d8c3e79914f7c914179924b718e426c8d45718a41728a4573843e718232718c4273 *8736678c416482336b8a436a85347289397b8a3b788d4475873a6483396c853c758b3e7d914579 *8d4773914e799148768d42719042718d42768c487792497c904784943f7e904a859147798c4475 *93436f8c397990477590447e8d417b8f467d95557d91417e98467d974d7b8d3d72863574904c6e *893e6e8b426e8f4270853c69823f708d3e738a3b738f3e748b45768d417790427b8641768c4374 *8a3d6c8a3a697f2e75853f6e86426d843d6d8a486c863971883376893f708a4072863d697e2f72 *8240798b427b8c3f788a436a863869842f6b853376903e758c4472863e677e376e8a4076852f69 *85396a85377188317a893d6f8c426e883e6a7d30637e3b6b8230698b3a6580396e853b768b3c73 *883d758c446d873474883a758e41647d347288436d823a617f41758f41748b44788d4c7c94466e *8d3d748b416b853468833d7e893f738b3b738943758c3576903d708b446a833266803969893f78 *8f447892427b9042768a3b7585306887377283316d8a3a728a42738e446e843767823f73833a76 *833c5f79356b772e6b803271883a6e8a3b607f3f6b8238677f3b6d813b6c853571873a6f843071 *863f6789426d8d4062873f698d3f6d852c5c7c365b7e2c64802b6082345e87437287446d864370 *86377a8b3a6f8434628138637d37527a346184406f833f637f37668440708a4968843e597c375d *7c3555722f5e753168843669833e677c326b813c6a80346a7d2f66803d5f762e64762d6a7d3367 *853b5d77325f6f28597d325f80385c72325976325c81356b85405c7e35698331577a3d54723066 *7b2a6a812a5e732e5879285e7329607c2e60742a65792b6b81326c84367383346f85426e843a66 *7b32617a345e7e3164792c63752c58722c65702d4d68286071346073276b77286a7d2d6d83386c *8a43667e3366722a6f812e6f873669843d5e793d5e79306b813069823d687e355f7c315f79365b *7930648032647a36617d305d74315d7a385d752a657d3261782f6c7d306d8940698134617b3364 *854265792e6a85437489416d803b6385416a8640758a486782427b863b6e824273854393a477c2 *cccc7a91524c6f334b7236426626426a284e6c214c67274a6a2f3a6c37426c2e496e3942642f4d *713149743b4871324973384e6d2643692b3b6027537234446c2d466b29325e24486d2d476d2946 *6c2a406b2639642c446b3041632a476825416a253e68274668243e62234768224665254364283a *5f1d36641f355d1f3a6328355b26386427305b2a2e602a45672d476b26376221375e1b3a602642 *6427415d1e435d2343672c356121395e203e5c132c531c365d1c376424486720406929426b2f48 *69234569244069243b60213462273b612144621b4063223e66234269243f612449651f4e6b2350 *71274a6b22406822496927547d33476f224871275376244c7734496d214e78314e7d3252822f4a *73394a792f476f264f6f23508038456a274c72214d752f48702d527c2d5b7d294c732460802564 *7f245782355d8332557f31557c32637c285270245778335483335782334f7a294a77284d73294d *7725497023547826526e224f7824486b1f4f71274d762c5479285178284b772c466d2646742947 *73224a6e2450742745631e466b1f3f6f1f47702547671e436b264169263a6f2944691f4669203d *6a243e66264e752d46732349762f4e7c3650742e5280354b78294e7d2752782a4b692451712a48 *6722446f234b7522497830496d2740652247762e4d732856793553752a566f284a7324446e2455 *7d2a537b32577a2f537329516e295178324876314a73254c75285a77235e7620526c223e64224d *72224b6d203c661f4a6e22426720527e335b792a5f7f305978255780315f82394f792c587b2f63 *873f5f8942658a406b8d416688336e94476c924369884275924176975076974b70914471914374 *903b739643708d43789448728d427c97466f913f70894775954d6f8c40688c3d6e8d427c965167 *8943758e3d78984f7991447088336a8335758d4a6b8b417e91428393447a90438497457e8e4077 *903d6d854068914d678b43658937748f477592457890467d9146819750849d5d7c97497f975080 *974a819d5683a268869b59829a59859b557a985179964f83974770914278955377914c73934d75 *914875914d76914b78954e7d98537d99496d924d7d9451809143748f4e7d9849819c4e77934977 *93477c944e7b8e40758d496a87367d8e3b6f8d417b8e407590417e974d75924d7e95488296507d *9850819c51779542788f3d748e4476954a79934e6f9544739344728c40718f4176934a748e3d77 *91447f95537f924b7c9753829a4e809a4c74913f79955c7d964b839a4a7c964572994c7b984e7e *924680924782924881984b758e437d8d3e75894068893f798e46738f44748b436e92467c8e4b79 *9247798d3f7891427b8b40738d477e9243849a4d7f964a85994a7c974d789646738e45778f487c *9553778e45768d427a8d3e6b8a3b6a873b788d3e6a843e798b4272812d5f812f688531658b4075 *8c3f6c864c6d874876914f7d9246788e477e8f35838f437e9750788f488095457d934d75863d79 *8f437b914179913c7c943f7c92447a8d40778e467e91437e91457790466c8c367b8c3c6f833a73 *8b3f5e81376a81365f7a2f677c316281346a87376781326a83356b823363803557762a67802760 *8028597f2e66802d6685347e9441708d3b798c3c6f813965813a69822a6b8a3a5c7e3a647d3269 *7b335e813f6d833a728d3c698b3960823a6782386d8b2f76863a658339598039617e365a7d3662 *813268812a6c85347b883a6f873472863d64802f5f80335f7e38597732648331667f30697e3275 *8c3e6b8645607d345a793062792f5b8340647d33687d315f803c5880385d7a2c4a6f285980395e *8433607c3264792d5f782c59793b5b7532657529768131647e296d812965772664813062772560 *7a2a637b27778532657d2f70843b6f8a3e6e873d768b3d678334647d35688240687a3271803671 *843f647f36697b2b71822d71833d73883f667a32697d3a697b2f67843d6b8a4369853f637f3159 *762676842f5c772c50792f53762b50752568853f6a883f6383306584365b782b627c2b51732a5c *77355f80425d7c376f854265803a718541607c34627b2b55782d5d81336984366f8f486b8c4076 *86337c8b3e6c82356b82306c883c6f8c4771904677944c70893b6b853c67823664802d6885386d *832d67823665863c62823d67802c607c2f5c7c2c5c6f245c7a2661833f607e36657d3d6b843564 *7b31697f2d6873346a7d2c6c8132658637617f355d81305f7e3f64752d6b7f2c617b2f617d3264 *7a2c5b782f597f345f80326783365673335a6c2756752f65792f697b2e68823f65843863833564 *7c2c7287426a86466a843e738639809041738d3d708942748c4b7488437085336083396081316b *7d355f75376481385d7e2d6489466c8137697f3967812e728c3e778938788541708a49768d456c *864c677d3c768b4374893b6d893b7a8d406f874e6b82486d87456d86355e8341617c416d7a3b98 *a878c3cdcd648b5345753b5079444c73304c773a4f762a4c71374b672a3a622434642939673039 *663336612b34531f345f2b3b662330672b39662b456c2f436d3941692b406a2c436e30436d2b36 *6226496a30456b29406a2c37602933622b365e28376725406e273a672f406b2a3c611e446c2644 *6a2744652b47762c40702b325f213161223f6922476d273e662e3a6c33416b333a5f27356f333f *6e263b6521436f2f416b25345d213b642d406f2c4268273a5e193f6d2e3861243667273f662747 *6d34426d2d426c293c6d21426d25416d274b70293e6622386024416e2b486e2c456d29496e284f *6f25406318496521446a233f652c436c28466d23426f2348702f54803b4377324270304d6c2b48 *661d426f3445772f43712e40763040722b426c2d496e2249691f406f2a5b80425b884243762541 *782b43732b486c1f4d7327547c364c7b30527b2d4e7a2a4c7a2b5a81285d822e5c8128527a2d4b *772d507d314a772b52792f547f34507a2b5c7a2451742559762a50782654753050732b4e7a294a *79274e772350762752782b507d314e7d32507e264d7925466b213e6a244267204c6f27466a2b48 *7530486c27446e2c4c752e487227597d27476e234f772a5a7d334b6a23436a204e73264674244d *772a4e762d3f722b4a782f4772264b782e577a2c4c72274a7024527a2e5c84385d7e305b813662 *83405c81405d873f5f813c548134608c495f874459823a5a7f31507e354d73205b81374c7d2947 *74283b742d52792a5781314c772c5e82385c86334b783650803e577d2c4c7c2b62813c5c7d3b68 *873a3f591540691d396a214668214a742c4c71244c74245071225472244b6d25456429416e3049 *6e24547b385178335b8136587f2f638a3e65863d5786425f8740658a3a648d3e658c426789366a *903f6d92486a9447749548668c3f6d8d43668d4065873b698a3c798f426f903e7693476f975073 *955776974871954b6e944c7297467e96478396477a934374903c759349719345829d4f7997477b *92497d96497b95466c94497a8d357f964b7390446c8d36708a387692467c923f768e3e658d4a74 *9754738d437a994b7698527492497d95447f9a4875984a849d56869f57829b527f9c5c81964976 *9849809a4d7e98518a9c55809b5f7b944b829551849d617f964c7f99537b964779944376954876 *925076955278955178964b7895497392446f913f7494457191496a904d608b4c6a8c416e93506e *974d82984a7c954c7b975384964d8197527e98517da15984a26c7c9e5a7d974673914375935573 *954d80985081974f7293477192457a97476a8e436a8e43668942748c3b798e3d6c883969853b67 *8534658135618740768b3c778a37708f4b738f407e9b5a73934d6e964971944878984f77954d78 *944b7290426c91467a9b547e974d74964685984e798e3d7c8e4276984f748d42738d43788c3a78 *904177873b738a4b667f41748d4d718b396a832d5f853f758c42748f4082924685974d91a4638a *9e5781984d758e418099527f97457690487991427e9646748d48749244748d3d738d4879934981 *974c7e954c768c3d8092497d91487d9049738b477a9044788b3e7796507e8e42768e43768a397b *8e4170873d778f47778d427c943a6c8f3f73924373893275823f768d3d759042708b3d678b3e6a *8a3c6a8a3b67792f617d3174863a6d82336a87406589475b7d2f5b82345e7c2d5f792d617a2e60 *6e22647428647e2d68802c6986377183345a752c5078374f74295a6f2944682a55742b5172305c *7229667f2d627b335976294b66265a762e5a75264e77274c7328517527587a2c5569284a6a275d *7623496a2e5f8035607e39597d2b527730657d2f5e7e2d577a2e5776274c78314a732147723252 *7c2b50793051742c657b305e732e5a742e5f7b3257732f607e3458772b607d2e5c732c5c7c345a *70295a6c26627f3b6583416581396a853d70893e6c8a4263853c6a813c6878336a7b325e7d3a62 *823466863b5d8540647d3169844563813c607c377387406b863a5f853a557e3a608029547c3664 *812f5f824468824165843563843260883d5d844357792e527534677c2a53712e66762b627c2d54 *782f627d3d66843d7081326c84337085357889476a85356b8b3b6d8e42748e4273894264853665 *863b728b3b6c82335e7d2d6f884e6285425579375c7a33536c295c792e57752b4b763154792655 *783356772d5f853660813467813b5f81345479344e7a3b5e87445c773653672a56702a5a743157 *74295b80385a762f526f2a4f713a4d7331476e3153742c647e2d5d8238647a315e742d51743652 *743651792f6681375c74316484355d854764853e678b415d7940618543658445658a4d65864564 *86426088436181365f813d5d7f346682385d7e3a5f8140618134677c335f7832677a364b723054 *7e34517636557c3c547d3a6382356a81306b80385d7a35667e2c67843c5e733351753e5e7c415f *763590a67ac2cccb6a8742456f3557783847652d4f722e486222496c2e446d3447662a43682847 *6b2943662c41682b48722f486e324b68314a72284d72314a6c3052732e536f2e4d692a50723249 *6b2e4e6e2e4d6b254667224e70264d7123496924465d244669294569254e6c2c496e28456c2848 *6b285773314e6e2a4c66234a6427547233496926456622476a25466e2746622042642545662d49 *6c324161243f5e26425e21405c213b5e1c5268254f6f2d4765253f652c48682a425d1e4b662545 *6721476728506b244c5c2c4d6d2238682d4a6729486d2b416523476c274b6d2b45611e41682b52 *7237476829496627446d2951722c49702a4c6a2d4c6e304c682955692b4d6b2b49622b4d6c2a4b *7525446c234c6927466625406526425e1e3f6826416a2548671d43651e42671d4a662455752847 *6f2a3e68263f65284c7a294f7e304c7a204d6c2362792e5b803c5d7736517934517d32527c284b *73284b7a34628337638034608340567d3856802d57833b58822e6288375d8a4160843864863d5e *863a5b843e5f84375c8431607d296785436287335d7c28577f2f697c335a7a2c4d742852792c60 *7c325a7d355f792c516a26526f224069225b803b517c3b5b85445f8130588540607d3456752e53 *78315173314971254f762d507e345b813b658c436c8c4e748d416b84415f803a62813064853b60 *83345d833c527f30537b2c4a7c3d5b7a2d587727627d2b4f7f334c7931507d2b517b3251792f4c *722a49793a51804148732e517d2d4f7f3d4d80364f772e516f275e792e5b7c2e4b7b3c4d6a2b5e *813150782b4c78285c7e345f782b5f7425617d2e50712956762e507a324a6f254e6d2448692654 *6b285a71255972234b70284c72254872294a6a204e6d1d4a661e415f1b4e6f283b5e1b4062163f *5d1b315b1e405b154f6a214f6f255b77274a5f1d4f692a506d275d72275f782f4f732f5d773069 *8540678235668a416386456e8b3c6b8b486a893e678d405f833364883e6e88426683416a8c4469 *8c44708e43768f41708a397592487e94447a934c77914a6d8d467b93467c97567c92477896496f *914c6d8e4771914275964b7c954380924a79964a77974a77924a75914778954c748b3c758f3b7c *964c73924b7990447d914576914c798f4378872f6d82346f8e486c8d4a77904a77974f8292487b *94547a9351849346879953819a58859b53859b557b914a829a4d8496518297497c914e83964e7f *964c7a944a7b9455758c46808b417e8c3e7d913e728c4b6887456e863d7a8c3f72863d7d863b75 *86307790426c863e7d914a738d46718a39758c386884397f8e3b6a873f6a8b3e7284397281326c *854274863b6f823f74904b718d43748b3d6e8e426f89437c90477c90487993487d90427b8f4475 *8e3e7a9341768843738b42768f467f8e41798c447c8f447894498196498298508093427f935087 *9449818c3d7b914d83944f809141708b41779148778b3f79893f758a427a8a4280934f85944780 *96527d954871853f718b4a71914a7b944c78924a7c9141758e407d9340788e3f6e8b3f748a4271 *8f447e9147778d4c7d99567895548296477e93477c8e42778d407e913d6d8c4168833b6787417c *8f48808f3b7a903b798b338390407f9142798c41768c3a788d4484903d8295487790486a843d64 *7c2c717e3a6b813d768740738a3f788b327380296c85396c813a7381396c814071863b6b833f79 *863074833373873869843c69833f78813e728343707f3c627d3558803a65883d66863970874072 *853d6b8238798b416d87437386427886396a8734748d4068823867813b6e83347387405d7e396c *853a68853f6e89426c853a78822d6c7c2e74822e6d863c78873a6c8940768c3f64803069802a64 *78296581346882306c7c2e6e833b6f844364803766864071883a637e307286346e83406584345e *7f39667e2f64833a617e3a6f81326f853c768b44758b4379854571834870834370823d72824178 *873a7d8e4377883b69813d66853d6380366c853760813160802e6c832d708436757c3171823067 *7d3671853a627e2a6a823a6d793b6b81356b7a3551703162702f5a74315c7029607a2a687c2c6c *7a2a5d7336616f295e6b2a60722760762959792c647b2e758437717b3168702c6a7c3466803363 *7931687e337984376d863e6f863068813470823a637d316d88436084405f7a2d6679276884385c *76216c7a3051702b6079315e7227637a3758753055702d506923506922576b27516e2c506e3151 *6f315169214c652c587023557828526f2959702c5d782b59722f54692f587633506c2a5066273c *4610516525516b2b5765264d62264d652e56672560722e617f395e75346d843f6b7a3559743a57 *7536607e3352783056722a64743262793558723363783254793f5071345c793155743356743449 *6425576e2a60732d516e2c56742e5875316071326782375577375a7635667f426e823f6b823762 *8132516c2d91a073c3cccc5f81423c6737486d34476a313e6a2a416c2e41642740623141672b37 *632f437440476e2d416c30436f314c7229456d24416d2e44743a4d722c4c703549722f4d752d4f *6f264c712b467033446d33426d2a497633486f314773314b78333f692845722d4472303c6b2b40 *692d3c6b2d466f324b762a4c732e4f7a38517b394c71344a7136426a313f702e3f6f3b42763642 *71303f732b4c7831466d2b3a6c293a642d4875343667283d5e1b416c243b682b4a712a496a284e *702548752e49733d50702c446c28436d263d6d2340702f426c283b6a2b396a2f3a672e38602443 *6929406a27436c243c64293f6826365e20436e2f426b2c4268274a6f264e7e364e7a33517d4052 *7e364d793d47732f46703446762f527d375079314c7d3a48752f47712b4362213f611d466a2849 *75254776284c8136416f2c44752f53782c567e3f517026577a29547d2c4d7b2b4575304f7b2b47 *70283f6b2c4b702a4e7d2e4b7a304b6e1f4e782c4d772d5d7e345a7f34568132517b2f46702350 *812e4b79304a7a30507e3052762d4b74325d833556813b5284405f853e5881316389426484375b *7a2d5482345b843c50823f5882354879335b844250813b61843b5c843a6589405381345c792c60 *893d5e8846638847618b495d84465a803960814167883e587f39527f3a5a813153863c527d3860 *80385e823a5278375a7f2f517e2e5081334f8030567f294e7c265284364b762f4c793c52793a59 *81344c762e4777284c74285281365d812f5c82315a843159843a517e374e7e2e517f2f58813656 *792f577b334f7626517629537c3547752e51792b4c762c4f73254f7131496f26436a2a4a6e2641 *732e4c70284a701f4670265377274e742a50792b53792a537a2a46742b456e2c517d3144792e4e *6e224d6f2a61823d5d8532507e344d78315277304e8033526f27476c2e476c2e4e733348752a4d *6d264262264874314d72255a7424496d214c6e254f6b21496623486d314a6c28465d1c4d692844 *66245176304c69263e63224467244c75344e6b294f6b27546f274d74275a7c274c7428597a3156 *7c2f64843f517b3051813c58874360813b5f813a5e7e336a8b4768914c698d4d64924b688a4960 *8e486b924c658b47648136688440758e506a8e4a67873c6f8d3b6f893f708c406f8434708a416a *8b3e668c43718f44758f4578975075944d7f9341829a54829b527d94487c96517898527b985680 *995a809b55809f5c7e985c7c9b547c965c7e974d7d944979974981974984974780934880914382 *9c5a7996597c95507590507d964b8197487e9648718e467c9547788f43679053718f41748d4675 *8b3979903a7f954c818c41758c3f7d91437591437090446d8d4075904380944a79954879975468 *8b486588496c8a426885406688427190486a914874945f7d93467c934276914679964e7591437f *984f8098507995487c9a4c7a8b42798e4d6b8c45768d3f6f8938758f436e8b4779924d71873a76 *8b447e934d76954e7f964b728f4b7995527e95477291417a914d7b8f40759147648c486c8c3e72 *93487f974c7a974a7b9246698c4a6e9044788f4278924d7c965372914377964d6b8d37738c3c72 *90446f8b3b739143698f4c68914d74964e6f9246648e456e8d44798b42728e4873863a7691496e *8d42658b476282386889406685345d7e3e6b87466e853b678b476c8f4668893b72893276964b70 *8c3e6f8a446f88446e813962813a6983366e8c3c7791476e873968853c61843a65863e6384446b *8b416b843c67873a6c8b396c8e3f768950748b3b6b8339758d3b68833464813966803268813c5f *7e3b6e7e356a853b7185346c823f738c48708a426e8e3e7c91427e8b3f788d407a934b6d8d4772 *8b38678b3467883d6586406d8b4a6486426080386182355f7a3a5d833c5a823a61843e6a833962 *82356c853c6a8334677f2f6e8a48668540657d3962844069843a718a437288436d853c6d8a4664 *81436f7f3f6f8a4570914c6b8c4c66843f6386416d874666873b6c8133688535688d417a92417a *934c6f8d4273893e788c45718e4b7991546e904770904466843f6982406986446f874573934c6c *8a476f873d708947748c405f8641617636637d3a6a7c3e7588436e813c62813a6284426c8a3f6d *853e65853b6f8c466e893d6d904e6b904c6a894a6f8c4266843e738d3f6a8338607d3e67844162 *7e2d537f37537e3f597d30657e336c833c647f376c84376d8039687a335d813d66803d6286476e *843a5b7e3f62843f6d86456983396285495d81445e7f406a802e61864162803967813d5772395e *7e3b617f3c5d7f3f66843f5d803e607d2f6a7e3562803b5c823f517e3962823962843f7184365f *87386380326b853a577d36637f3f567330637d3260763154783057772c507b2e55793965834162 *813764824158813f5e83405b823f587d3561803d557638687b38627d375877395976385d833560 *793a5073365c783d92a578c2cdcc5c8247426939456930496a39537035436c3643653238662c44 *69293f6526446d344d692d486c324569284d6c2e406530436e2b456d2e456d31456a295269273e *652a4c7434497037427037486a25425e2349662d49672a487035385a283b6028406a2c48692d42 *682942682b4a6627456d29456a2d4465224c6e2e476f2d497234466f2b4471354a6e30496f3149 *6835456e3b426f2f4364304069303e5e214465243d57224863244467324766224066254a6f2a40 *6f2b456a2343631e4d742a4f6c284269253e65253f6824446c273863243f611f3c5f25435f263f *662f41672c3e6732466628466324405f2147622033551c43672c4361254a69294262254a692a47 *6b2f4263234a6123486c2f4f77324f75314e712e537c374e703a496f2f44702c51783352742c55 *7b2f4d7c424366204e71304d7831436c28407532527a3152792c597c2b4c76364a722b51753156 *80425a8338557f2d567c32567d2f5779305a7e3260813d587a34587d345c803864823e5b7a2f6b *7d316283316784334f762f4d7634557f3b5182385d7f30557e3358782c58772f587b2b50732e4c *742c52783060812e597d356a8236527f315a8031587428527537607d305b7e31657e276081365b *7b2a5d7f3358803d6085476184456182405e7a2e5b7e345f7b2b567e315a7935587b2e5b7d2e59 *7c39527b3b6081376b873f67832f5a8232638335648037597f3a5f843d657c2c597e2a50752756 *792f617e2d587e3b6586415d85465c81355b802b6f8a3a718d31638a3c5f853d6a853a5e7c2b65 *873f67863e607f31698434748d42758a4164853865883562812e5b80305780374f7722507c2f5b *83366385375b7d285f792861833765833460843e68883c607a2d69873967843b627e2f6a8a3e5d *843b5c7f3962792e6589436284345a7f3560843a6681356c873f6a853a6186456985305a792e5f *812e5c803b608135557827587c2c5a7a295a803b5e843a65893f578034608132597d2b5b782f59 *7e3550752e54793157782b52792f557c295c7727567429517729557c3953753052742b4b732951 *7b304e773856752f50742c4d733157752a5779304f752f4d6e294d6b26436b264763254665224b *692953713254772c527b3354803b4d78275e76365d763f5d7c3b5c7b385e8141567c3c6382335d *86355f8540688b4a698947748841728f427996527899546f945070935177935176924a7e94447a *94507092557e96517f9a6073944b809b568b9f5784a05d8095508197507891437e995383964b80 *9c638d9a548a9e63829653818f46809b5e7d985b82985081965284964b81934381984d7e914e73 *8c4878924c72883f6a8f4b7e8c3a6b853c77914777852f76853970853c6b843d73873d63803362 *7a3364803c6a7f3777893c6e834064813961803767853f688241728d436e8d45728a3e758b3f6d *8b4c788d3e65853f64864075904b6d8a4275914371903f7891437f904879955075914d79934f79 *8c427f9650899a4c81964c859547829248778e4c768d3b6d8d44758e467994467d904379894473 *8b406d853e67843e768445758d46668d49698a43738b4271853c748a4272904776904676934b75 *8c4c7b8f447b8f437c8b3a7a914174893a6d904d76914e738b476e7f346b853970832d7d914472 *88426c823e708439667d3f647f3c657f3f6d7f3a6a873b6e853b6184396985406981316d863e68 *8842778b3f748b3d6f8b3d7182316c843f65823f637e375d7e3c6a843e6d84406f83396e803b69 *82417384377a8232778a437a8d4175893d7581326a8a3d71853469813466802f74822e7e8e4078 *8e46798f427c954c6b8740748d3c798932728541828d43798b427e8f3d78893e78853a7e8e4273 *833a6a8b3b73893d6d823b668845688343607d3e64803a627c326d843d62843c6380406c853c75 *8d4561803766813871823b697e2d6e87316f85326b873b728841758d437e8f49728b41758e456f *8540809243818e3c778f3f7e924276894a6f8a477b8b436b853a7386405f843a6b83336c854565 *80405c833e6f8a4a648340758e4d5f814266863f7186366b833e778a466b8d4f72874579884371 *8e456a893a70873a6a85466f7e3f698444647d3e5e824562813f76863f7188397d863a78894c6d *8749667e377586436785456080436d833e6681357e86456982376d87426b8542758a457b914e70 *874472874465803f73843b687f3d6b8540748e4b6e864070893c75883f647f3b6a814075854572 *833d637e406882416083466885476c86326d853b6f813966833575813268823b6183455c7d3264 *83386485416b85426d883b647e3e577b326b84356982436e86476786416b863f607e406a823f6e *843f697f426d80446c8b3a5f854278893c677e3570873469823a62803e5f793962803e64763169 *7b2f6d8035728b326f874b6c83435b763b5b793564803b6e85436e8744697f476682416e7f3f63 *8043637c41667a3363783e92a97cc2cdcc648239426e3342692d4f752849702d456c263a5a2142 *6f2d3565273664283a65303e71353d642a3f733a4a7333447035476d2642682a486b263a672953 *722e3c682747702741692243713048752c4c722544732f456d2d496e254471294b6d17416a2445 *67223e6a2b436c2b486b2e4b712f4b752b45722b476d1f426a2a4770244169294b732d4e753548 *7637577e2b597e304b6a2246723248742c4f6d2549702b4f7233426e2b426f29486c27446c2749 *6c2b4c6a2b476e27406c273d6424477322507f3b47651d53782a41611b44681d3e621c41692444 *69284971254b7328446d26466d2c486c27436f283d6a2a406d2b4668234d6c1f4b70243d69294e *752b456a204c752d48762f487036487a3047722a4d7f364c713158792e6585304f7c33567d3350 *7b365b7c2e527825517f285380294d782f5178304d743a4977334c7c344a71244879275179264e *77294e7a2f5f873a487a34518041537d30527e2a56853055802d52803b587e336080356488405c *823361863b5d86304f7925587e2a4f782a5e813c497630507d315274274d79264b7c295b7e2550 *732753762c597d2a43773050782e527d24507f32578029547f3560812b608335587f30537f2a4a *7b265b7a2653772050781f5c7b235a7b235870225f7d355980335c83364f7226557d3350782b62 *893a688b3763893d6283346282305c84315f863160862e6e8d385e812e5782325d852a5d852f52 *79315c87405d8630618c3c6d8e3a758e4266853c70893f6a8c3f648b3f6f923f6b903e678b316e *923e6e9242738e33668835698e456d893664893d759531739232698f3c6782305f85355e863464 *853a5f8637638f3c6c913c729044728d3e7288406b88376888426a833167853d66802861813262 *853168893f76893b83995b7792406486315d812b6f90346c8a326a852368892f647e2f64872e65 *8a3a6a873a73843b57812c67882862833067862f788e3d6e923f668d325c822d567f2a5b85375f *822c6a8b3861832d5f8636628837547a2f5c833160863158812d587f295a7d2c577b2a5f7d2b4d *74285a8034567d33557b2c4d7c2e506e265a81215376265a78365374254c7828537727647c2363 *7f31657d28577729566d205e7a2f537e324c79335169245f73283c5a1646621a43641d63681d54 *6d224b651a4e72204161214256195271293a571d53661f4865234466214a7528547c2e557d3355 *7c345c7d3d63833c5f883e64844262853a718c3f6284366b8d367c8d3f72904371904e7a925073 *91487a954b7d944879984a7b984f71924279954279903f7595487e9a52829c4c7e9a54839f527e *995a849a567d99506f9145758e3e799847718b3d78955a7d9c627a974f7d964d809547798d3b78 *9553769550708f407691466d8c3f768e427997437696427c97487d9343708a3d7f8e3a76853a71 *8a41758b457890437c933a76964e728e4376914c79925875974779924682984e7491437e984480 *9958778e4772913f7d9643849858839955829952758d477a954180934c89995b79934980984e80 *934e8298517c974a7891457c8f3e809854819543819747889c53849c567e9656829b4b7d9b4582 *923f7c904282974473914181953c7b954381934e809b4d829c4e8499447693477b8b3d788f3c78 *93437d964d7e974780974c7995437c90396a8231768a3a7f8f377a903e748f437e943f8090407b *8c3c6783377b8f3d7a9851738c3e6f8b3a6e8a3867822b6587366f84356a80366a7d3068824364 *8037638442657f30727e2d6c842b6681326980305f79296a85415a783462823f69833d6a882c72 *8a2a75883373883372873b6a823d68833e68893f69872e798c2e6f833a68822f6983335f7e3064 *852e6c853261803963864169843969863a6d893868832f607f3267853b6c883966873364852f77 *8e366781286c82327183326c80286b7f2b6185365e7f2f537b36557c2c5b792978862c758d3660 *85436a8d3e7a8d4367802f68872e7484277186366d823158752e50753457712c5d762b5e7e315d *8035728732637e2b61812e65823a5e792c617d365f81335c7f2c627e2e6a863d788b407784376f *8e42708e3f738c4a6d8942768e417088396982346e833a677d3b5f7f2f658137617c365f7d3461 *7d2a677e286882356e803064823f607e386888426a88446a88426587376a85336a813b6d842d6c *7a34657d416b812d697d2d687e33708d4868844266813d647b2e6a7a2768803270874071873d66 *843a66853664833b6a863c6d803073852e6885396a87416384406882386a822c6582336281305b *7b366382366b883b668336597c335f823160812c657e2c627b2b647d3d597e2f60842f5e82345a *782d61762a5980396484366d842e627e2861863c5c7e3a67813e6181316e83326686426a823665 *813461812b738935617c2a6082315b7d36617e2a59793060803e75863e687e365d7c3662763059 *723059752c6681315279365c753398ab7cc2cdcc6687444c7237476c3143642c4b692d50702b43 *6b2c47672a526a2a426731476a2d477231446d2e426c3149692f47662c456c2b39692a436d2a43 *662e506e2d456a3240662846672741652b41612849692b446b2a39642a416a2c436a2f4d712f44 *66294365283c66214a6f36446d30446a2a4b622a4067294166253c5e2c3d5e213a61223b65234a *692e42672647622c476f2e426725426d2c406827497136426629406a324a703b45672551722a4a *752f406c2b4e6f25536f2f4f732f4c7330486e2d476f32436a274870304a6d27446b27496e2542 *6223446d26466e2b486a294e703c4a722f467339467332476c2f4d6d2f5275385979354b702f4d *78394b702e4b6d343b6b32507236506c325a78324c7d41517d364f762a4f722c5879325985435d *7d3e4e76324f763d4a79384c7c3d4c7e39557d3f5c812e56782551752e55762c4d77315479394c *76344f7a385c7d2b5481344f752b50793654722b51702a4f7a3253792e4a7a345c8032557d3361 *7d325c7e38618437537d404f793c5479355782405a823b59802c587338556f2b50782b527d3b4f *7d36527a3558792c4d772d53782b60803f637d3061823b647c2f648636527f35568134607e2d59 *80375e804157773266792c60813765823351792d5680325b8436597a2c5a7c2c547d3b5077335c *7a3467883e6587415f84375f85396783356f893a6484435e7f35607f3467873968843d517b2363 *80324f772b5678354b793652752b5a792c5b7e3855813a668a446e842f5a7e395f803b5c7c3a55 *823d63863e618339608c426d913d65864066832d5c802a63883f5f7f3a6b8a386d8e4460842f6b *92406f8d446b8b386487426b893e7482356b85426b89406e873d7184345c7a2d5d7b335b72284f *70285f752d5a772b425e216267225576266b883c798e3c75914b6f8d426486395c8b4a62863176 *91446078257590487b8c3f718b456a8a3565823f6287426f8f3d61893b6a84306b813b617a3356 *70285c8131698b475d823d6c8a3b64863b688531607d335d7a2e627e37567d3c5c7d355b7c2f5e *7f325e80326181355c83325484434c7c304f7e305381355578335879314d6e2e556b295978305c *7c2b547b32637e35608032577d3c537d27607d2b4e722f58722a4e743158752c5079334c6f2553 *78255177305874254c712d517232516e2d4f70304a6a2b4e68244463254a64224f67284c5d1e44 *5f21415522465d1e465a213f591b49591d4b5c1c455a1d4c5217536720596c2d53621f4e6a2d4f *641e456728456526567028537a3a52762e4e7a2f6c8a426d8c476a85426b82395c7e4068854175 *8b416f8e457d964b688c45648942668b4763843d648340748e437b964c7d974b759259799a6076 *8f4d81995581954583954b7f90447f9952889d5b88995286994e869b50819c5b87994b80984e81 *9850829a5b7c96527c954b8299517d995e78853f81975b7d924e7b964d8093467d91477c975a7c *974a7f9345788c44749048799048759052779758738f47798c4b7793507e923f859949819a5784 *91467e954b80934a7d97578396437b9344808f4078904e7a90497c924983984b7c9451748f4978 *8d3f72924778924a75914774934c7b96517789407d9044798d447a9148748d43778f437991487d *8d467e8c4a7d904379914d798f437d8f477d8a4b758a41748c468293448198518192427d95497e *9243758e487e8c3f7b964e788e44768b487f8b3c7b8b3e7384377186456b88437b924a83914879 *8e41858e44848e417f924b809450718a497e934d80944c789043748a417790497e893f748a3c7a *863b738c42788c487d924f7e9041738d466a7e33748b4368873e6c864163813b68833d68893567 *8843728c4a657f3c6979316f813465853b6a823c64833e61803459772c61772b627d316f762763 *7e31617d2e5c7c2f5e8332607f33637f3770803464802f607d2c5d803064833c64813578934773 *8f3d6f8b3e6f863b6c813a6e863c7184306c833e6d8d4369863e5c7c346a81376781456e813069 *8639698944718a4a718746678a3e708b33657e3c6c802f677f366b83426a873e65824272813c76 *8d406787406f86396782376e83417189435f804565853a588036627f2e6a832d677e2e677f3668 *80315a783465782d6482386984406b8c3d6a853e6f863e71813575823f6a824a657e42687e3d6f *853872884068843b6a853675874d687d307f8e477f8646728b426c8746798e3c69853e7087407a *914d768a4c7e89517c8d4e6b894a6b87476a7f41778d4575873f7285456f87406d7c4466834779 *843f6886426a884671853f78884870853d617d3d5c7d36687830677c3f6c833f677436627d3669 *7934697e3962793f697e425f7c417289356984427e85386c7e366f81366d853e6f87436780466c *87486084426f85446f7e356a87426a884d6a864669823e6d8340628547637f40677e34667f3e6e *7d33697a3d6a82426382436c82446c80409aa978c3cccc648842426e314a773b4972354769243d *662647682849722e436e2e487231476c25396525496b2b50702f46672e496924476e2938672440 *692a3560233a5b1e3d6622436a24476c274169254367263860293a6d2a3b66283d631e3e672049 *6f29406c244467223863264063234269293a662440661f47661f406c23466b2244642546672242 *5f1930662d4f752e46752d4c702b48641e3d63294967234565233b6625476927476c26496f234c *6d2e486c233e6225476922506f234c7022507d2f547c3244722e537c3d5f7e35507727416d2c47 *74394c752c4b7a30497e444b753348722d4a702c4469263b672343692c476e2c557a3647723842 *6e36507530577f36507a3a4f7e364a723354793154813b517f2d627c365c813a597b2b54792a4e *80314f7d344b7e3c51783451792f4f7e376086445d823c4d7832456b25557b3a49792e52802260 *8230587c31507d354e7b33547f3c507c32527d2b4678314b76265a7b2d4b7c2c53792c4e7c3452 *7e33557f30597e2f4e792c517d2f537b2d5778324e7b2c5c82304f7931607f3c45702454803351 *7e2b6387375d813e54813b517f3c5e813b5079374978355181325280364c6b26466f2d4c752f51 *732f527d314d7932587e3a4e7b315d7a2d52752b5a7b335177274c782c6286385d853459833151 *7f2c608336608538668431618c435d843c63873855863a6289385c82326a893d6486405e862f65 *8f44708d3b6e93416d8d3c658c306c913d64853366823169873b5d823b648c475f873f57813369 *8c3c6a8e346d903f6d873b63843862873c5f812c5f8a42668a3b5c7f2963872c5f852c60823365 *823b68863f5e7e3d5d8135638c3c5986386c8e426c89326e8a316a8b3a61883e6f8f435d873a62 *852a5a85326e8e3c7192416f8d4571954565893d678a3b6b8e355f86306f914866883a65863768 *8733678a3a658c466c883c628740698733648c4061873b6787405d85325d81316c914f61813661 *853068862f6086305e80265f812a637e2b66833269832c5d82345d812c5a7a2c5b7f3466833260 *84335c792c5f7d30547f33547c2d62843c65813069852e5c7f28577e2b6c85335a7a315578334c *782b4d6d21587d265f82295b7e2b54793b53732a557a31567e3b4a752a547d31557929507d2b5a *802b4d762e48722c557c314f7d3055792b4e7a304c7b31547426456e2953752759802e4f7f384c *7c354e7023456e22426e2151742a5b762d576c2857732d52732d496823536d2061762a56692743 *652946611d496521496c28486c29476d2147671d506c1f46652053651d4a63204d601c3a551e38 *4b154c5d22475820576d224e641f5c8134608548638745618d446f924d7b9b4b76964a77923d72 *8f46788e417993427d9245738e3b79964e7899567c964378943c7795437b964a77975279944c7c *944d81984f7d9b4b7d994d7d994f7e92487b9141839247829342829c5e7894517d99487e95447f *984d7f964f87994879915077954c7d99537c9d518098487a934c72914d7890477d9346768d4075 *934f6a8c427e964a79964d86a05a8b9c5087994f889b508393478092427796507a944f7690417b *9045738b436e83357d8c3d788b43708d3f789148708e3e79944c7e8e4074924380914778903a77 *8c4069884071883c698d4070914b70874375864079903e7a8d3f678a3b758a3d6c8d3376964672 *923e7d96477996517d954d71934c719044668b426c8a3c7191416f8c3b7586366384376b893f71 *883484944582943f8698467f933c7d943e7c91437992497e93467b974c778d3e79904a738b3b6d *8b4273892d81975b86994f829348738d457887336f862c68823466863e6a823170843c71873967 *843b768e4079964d7d91467d95427f984c768f45718c437e8f46758b3e6a873c64883b70893b75 *8d3c66842e6983306680356b84366d8837738a3570833d6b8038678633778a3175873b768b3c75 *893f768d4272893f6e863b6a8a4975892f758f3d628035617c2962853a6085316e863b6b863472 *8d4071852b6f893c6e8c4271843a6c852e6d81346d853a6d8a40718e46758a3f738d435f833f68 *873a6d86436b83396d833e6b8b3d64863b618943627f3664863a56792d5a7f335979326378335e *7d376b884062833664843766853176883176894073873770853366822d66883a738a376b8c466a *7d366f88436681387a853b6b844c72863771893c778e42728b3e718b326c8b477889466a793266 *89436e893e7c8a3e6c8b4d728c3f6a8a486f874367854b75873c70883e708c3a6f8a4769873b69 *833d6c8039738b4675873d6e814263844365802f70853f70853270883a6d8546708a46758d4c78 *8c427f8d45718d47738b3f819037808b407d994f7e994c7d965b729153769145778a4485934673 *8e49728b3f788e40778c475e8842758b367e954f758d40728a3d758a4373893b6b833b7a893f6e *8a4c6b85486a823a6a883c6a843e70843e65843a97aa80c2cdcc57814a486c3a4f783e436b434a *6d364a783d4f722c4c6d2f4c6e2c52732c4f742e46642a4b75394b793856763556783149752e4a *63264c732a50762c4370363a6e2c4f7234456d31436a2c4c6c2a4b6e2c4a7035406e2d43753542 *7037426935456d2d3c68263f6a264169283a68263564233a682a436e2b4579364c742a4368263f *64234065293a68283f6a2a406d2f426d273f6322536d263f6820406b314c6e2b4c72344d6e2e47 *6a243f652c426a28466f214a6b2a4d6e273a6c2d416a28436a2c48702d40652a466f2c45692539 *60233e672a406727466f304c752e4d7233466e354e752f4c73315a7b324a6e27497b33517b314f *772e51762d47772f53792f4f7c354c7e3b486c255274354d7d3f5e812f487d393d692d426c2f47 *723a53823b527b314c75324d7e2f457235528134587e2f527b344f7e3652782d4d7d2c47742d55 *803c527f405682455c803f5e7d2b5884315e85325f8641557f33557a314b7735537c395a7a2348 *793a557f34537f31537c33567f3a507c36547f3e5480445c8a4c5b89485a85464e7c324d782e5f *84485a7e2f52803b507e3b59812f5385445f843e5878364d7c3f49732c56783e587b3646733555 *7c2e5f853f5b80335e8032537d405178364f7830557737527a2e527b3b557b3a55793451753452 *7d38537c3b4b75385077304e813a5c823a6384405e80314f782d537d375779314f7d364d7b305c *81374b7a2a638c3f62833a52813363843660853f678e4e628337678c415f843b58813169893b5f *853b5b863c608d456588486d853a6a8d455f873b6182286280326d8e436483315e833767883f5f *7f3560823061883b6085376285325d7f3852803e507c3b64823a577f305980366489395f802e60 *8137547e3c5b843a648a425d83345b873a5d8e426586335881396485355d7e2f567d3b5c89465d *87415f822d5b8131508340517a325076305b8131567e3a5887434e823357823e5989455d86365a *7c3053792c5c7b32577c386685415f87406684305c843c5b83396481346286445e81375281445f *813d5e843d5e83425b893a547b295b81385d81355f843a59813c547f305d853c5483404c712758 *782c5e7c32587e345f873f6084425e772e406a29517730547d2b4d76235282346085485e782a5e *7426507933547126577a325c803a537b3b5879355576364f6d2d536e3148652649752f4c79324e *7d37466b2a4d6c2f4d6f3053773152702f42652e546f234f72314f752c5b6f29577b33547e2c56 *752e4f6f2a4b742a4c702845742c4f72285d76344e71274f6e295071274c7128507326456c2647 *6922465f20506b294e733058762b4c71294c6e294a6c3a4e6422445e1c4b68224d672359782555 *76295a7d335c7e3b6f833f5c7e3b62803a6d873d61894b62884468883a64803164874474864173 *8a436d853a688b4575904c6d8d40759148788c43728c40768e4374863f819250768e42788d4679 *8f527d94417e8a42728e4879924a7c954c69914d7591407293507a9249778b4c8191487e99537f *94457e96538195557494516a8b5071924e748e487393537f9a627893577e9650758e45708a4573 *8c4d6e8a4e7990516e8b42758e427a924b728d4872823869833d688238698c46718846738f407f *96466c863b6f8b3a758e48698b446984446c8b446d8e4e76904174893a718c447787396c8d4d7c *8e3f6e8a406a874263844073884075913f708e40769047739140758c49688846618e4a61884367 *8d4d7a90497992497f964a71904a688a416487446589477b914f7e934378904776914372924767 *86496081347289476a8742798c3e738b40768c436f924d698d436a8c4966894c6586466e8b4b6f *904b759347709749769446708e4c738e48738538698941718c437387386b8d3c6e924c758d3e69 *82386888406d8b406987446a883e6a8537718b37688538608039627e35577d3669863e5f7f3960 *7a2b6381316b8844668a426c81326c823e5d7c3b6181434d7635607e2c668433627b31647d2c5f *7e2c66813262883e5a843a72853d70833b66803c607a346a843a627d3768783a61702a6075385d *793752782e647a2f5c7f315d742c5e792b51702f597c3f5f77395f7c3a5571285e80315f80345d *7830637e336179386c8543587e3a6484446d8a3f728b3c6c843f5f84366f873b5d88406a893c6e *8a45708c436d884268873864792f76873770853f739052708c50788a4c69853b6e8a48738a3e6e *8c486a8c4e748c427585406e8245697f3a6a883e6f8a456687427387486b8241667d3b63803f5e *7c4164823e7588377c9044758a46788e46708b4d6e8844738b4b7d904c758d4e7186516a88457f *904469843f778c3e738c4c768b527e8c446c8a456084406f843a678b48738a40708c5070924f69 *8c50658b4861833f738642678637607a396480326386426585426f854a6684465e864162813d69 *833a6781406a7b3b5b7e4364844367884862844367824398ac7cc1cdcc6581485a80344d793a57 *7b35497433537633526d2a547b3450792e5378234e7b36576c255576355370295278305c7f354f *7b344f76385373254d742e5373274c691e5072244d64204a6e244b7127436a28536f285074324b *6a1e4e6b2445672f466b283f693141692d4369243d622243682044641d456423426924506e2a4a *712b49752a486e2d516f2549713142631d49641f466822497026426d234b722351762d567c2853 *6f294e6a1d507224406c2b4b6c274b6c204271244a6a1d436a234a6a273f6a264e6b24436b2743 *641f4763183d62204d7226507c2d466c2a426e31466a28496e2f476e2c4c70254669215273284d *782d496a264c70274c6b244b70275f7d2f4f722450792a4f6f1f526b245a7a294f722549682251 *75325d8440557e32557a3452813d4f71284d6d2d4c6f2a4b762e4c752e4d691f4c7b3151813b52 *7834517c2e4c753052732b5c7d2b537729537928597c295e7f275072205877305a7d2c5a792458 *7b2a4d7935577d33537f314c79355476265f8439567f2f527930537d2c5e853c52802c4c6e2856 *7f34597d2858853b5f802f457732547d3e617a35577e2e597d374e7a295b7d2c57742753813b65 *84435d843b5e81356789436481366487365d7e30587c365d7c2c56762b60833f59833d54853a5b *812d577a28537d325f79305d7d2b5c7d2d567b265a7e315c80335d7d225f833262863661843352 *7925567b246082276484366887316a8d39627e31638d4361812f5f802862843963822d5f813c65 *853566863a6889425f883b638d485f873c67812d5b7d39758c4369883b6c8f3b6c8b3964873861 *86455b813260832f5e883e66853868873969892e6d883b65883d5f863765873d6288406a8f3c68 *8b3c66883b6d87326c882e6d91446d8c37618b365f87335984306484356a89305c8231647e2e66 *8127657d295d8331608133587a2a627a25607e296080275e83365981344e7c325579236b842a67 *8a435576235f7c2f5779245678214f7724537829577a2a557c38597c3055712253772d4972284a *6922446a27446c27506c2c476d283d6624466b1f496f254870314b6f234a6b22446f2d48783452 *7d3d547730477228456a1e5b6e234c6c1e4f753144692b436928506e21547a2c4776235e7e2760 *7c3555782d5078265b7d334b7b3652752d55782b5a79245d7e235a78274b6b2655701f59782656 *7726557d324f763656772961833e607a2b59752e657e344e783358762a58752d5b802766812d61 *83335e81394d783b557d2c55762d567c34486d2653782c5b78245a7d2e5475274c7325537a365d *7d3963812d647d25557a276180295c782b647d265c7b2f5f7b2a647d335d6f2c6877285a772761 *7a2a5d7d275379305873295d782c5c792d547a2a587a224e631c4558174b5e1a55691c5d732159 *73275779315d76295f792c63782a5f7c2e607e3472893f68803f6f8d3e6c812f718d46718e397b *913d708b3b78903b7e8d3a7d9350738f4c79944e6b8b41708d437e924685984b889849839a587d *96487f9549808e4081934585934e8193477c8a407a8b46708d43768a3f72904479914d7a8e437b *914a748c43758c4373924e7c8d4479914978954d729147778d40798b3c5d783a75863170884380 *8c41849d5d749352728c3f6e873b6c8b34627e39708b427d8a3f7f90477d8e4b77945284965685 *9c58879a577d9956728d3c7b92488292477c9247859c4c789646809240748f4575883a75853865 *812a7588396a8740718d3d6e8f4c769147758f40708331697a2a657f296e8d3d75924c708e4479 *94436d8f4780913d7e92467790417f923c778a3986954879924c6f8f437692507891437b8f446f *8a456a8d40768a3a6486396c8d506a8138748e3e7b8d356c893f7091476f8337728c39718b4573 *914964873b6e89367689307f8b3c73883c6c863465813e6681375e7f3b677e315c792e657a2b57 *762868852f6f8331698a3d6c91436685346c883b6c812b6c81395e7d2a6f893b65833168823a6d *853d7084357389296485366381216d822b69873f6e84336d843b6381366986347384376b84356a *7f2c69842c6885426c873f6f883970802f67752a687a256c7f2a71852f6c7f32637c345a782c6a *7b26617f356e822e7d88307885326a8c396f8b3e61843d6a84366b7f37647f38728b3f6f89387e *9148748b457089347088447186467e8a437f8a427f893d808c3b7e8830728a3e738633717f3476 *803a6a812f7386307c8c397086357483366e842c778433688134708742808734798533707d2b70 *7e37718b45848d3d7e884178904d889b4b85974982934481954c7a8e4683924a86923a768d4674 *873f85944b849245819856849850819750858d418092497687397184457b8a407990517c91437d *964a7f8b477383397989407989346d843f76863f769347768f487889426a85476b803d727f3d68 *82406a85457085406b843b6e88497189476b844274834073854598aa7cc4ccca5d815553793a4a *75394772364a6f2e4a6f304a6a344a783d4b6c2c4a7338496f2b48723547753a467035486d3151 *7339527b3b487135487936506f2a4872313e703443702a4e72305073374a712e50722f4e742e55 *81364374334f7933426e2c4a6f2c476a2d4c722f4568273c692a37612342672943612d496d3148 *693040652c44682b426b2f416a2b3d6c2842722b436b3243672443602641601d486e36366b2740 *6d3047722b4a712f4b6e25546c2852732d456e2b4f7a284c762b436d2549722e48702d49652745 *6a28516c27426a243e672a3e67243f6a27466c26456e294a6e26456e2d52732f4d7e3d46712f50 *792f4a78354a752c5077314b772d4e7836507c33467931527d334e792e4f6f2b51792b507c2c57 *7d2e476c304e6c2f4c70294e752a5372264479325376314c70324c762e567c355075304c7a384f *75285e7a314f80344c79314e7a395a823e49722d4a742d4e763452803550803358833f58834154 *7937587e3153803a4b7d31588336537c30577e305a7e2e60884462873e597e2e4d77244d7d304e *79264775264b7e344b7c3d4f73314f7f3b557e2f4d7b35587f3f5b82356682285881365883405b *7d415881365e7e2b5c863b5c822e57853e4a8347698c3e5e8a485f8645548140638c4062893b51 *81385f8a455d833f5b833958853f5a87435e823d5d863f618234537d34587a2d527c3b5c83385f *803b4f854758833a5d813161842f5a8235698d4358823a6182355b813a4c782c5b823660843458 *8036587e3558863450833e577e325f823a5885355b843a608b3b688d30678d425c8b43628c4163 *883d6289426786325e82315a7e2d5b85376089466689305d843750813b5f813761893865822d5f *87345c8338628336658a4166883d678e4b61882c60893b68914761813268802f6287425d853962 *863b5e8d4c608a425c7f3e5f7f366485395d7f3b5e803c5d843f568040718a3b6084345f8a4163 *833662873b5a813a557f2f5b843354823e597d2f5e82346085384c722f5679354d723051773648 *78344f7b3a4e6c2950732a507a304d6e2549682448692c477128486f2c4a7630487630556f2547 *733045723349672449712c4d75264d792c4974354f702a446a284767254b74344d69214d72275d *7e3a537e364874304c752e50762e5378355b80335e8334598431527a354c742d4b7433446d2a56 *72224a702846742548752f5c7c2b51742e4c793048722e58823a547d31607b2850762a5a7f365c *813a6081365a843c5f7e3d577d3f5f7f3c5682335b7e325b8646577e2f61813b5785475e7d3666 *822c5c88425a7e305f8a405d84336983335d823865853b5d813655852f5f853d5b833958823b57 *7730577a2f5e83345f7837576024536c235f752d4d6b2452681e53752852762e55772f597a345f *7d355f7d3a617b2d597f2a55732955762a58772a587c2858782f636c25606b225c6b2b4f5c1949 *621e596c24455d205373305174325369265a7e3c5375395779335881346892466f964971934c78 *91476c8b4a789047738d40819f5f859b517c9655829e57869f5c889d567d934882954e869a5280 *9e5b81974a7a944e8096567e8e407b8c3b7788437a944f70904a7a974a80984d788f4877943f81 *964f85974985964f7e994c809b5786994b7f964877975183944b7b99537896577c964b79914579 *8d437291487d964a78954c7b975078914683934280954d76934174924781974c7c964771914570 *8d406a863c6e88406a873f728c406b8036798b3b6c8a3d6a883d68853d68843a6f822f67874267 *833b6c884b6689436e8f3f738e4268864a788d406e843875833e73874065893d738f4a6a90446a *8739768640788c447c954a698a446e8e436f924b688642678b427d90447c8d487793497c934371 *9244718b48668844648441718e44708e4f7b91507b91447a944c768f406f8e416583426282336c *8c42748f456384416c8a407084356a893c698d436a8643728c436d813a69813562813b62842f62 *813b6a8634647c2f66843f6b8e3b6f8c3d78934c6b83376e89395e884859863e67853b6d86456c *863f6d863c69844271864064803e6a813b728e4071873a708439728e3e788d43758b4466843b6a *813071883d6d833e6e873e6f873f6e8c3c6f8f48718f4e6a804179843a75873b687e3b738a4262 *7d3e6a7e406e854276853d6e873f7288437e8c41779245768a42748c40728c377d934a7e935376 *86327c8b47748a4d7892486c8c43708a3e6e884168843e6b863c778d4a7d8d43779246808d3b7a *8e417490447d91467a8940738943758a3e7b8e3f72813974853f73843c6583376a86416c864b71 *873e7786357182336d8135698240738135718946798d446f853a71833b7087366a864468864071 *883768874381924e708d4b7889397c8a4773824572844372843769864a6d863e68874373874271 *88466b86466688425f7c3a5f78406172306784416687436476407585429cae80c4cdcc587e4947 *693d4b7340446b3b445f353d653e3b623444643746693751733a4d6e31426b3b45642e3a64353d *63283a613048692b4d6b2d4f704049713a446939526f314a672e4d6f334c682c4f70334e71344b *75404d6f304c6f334d7234496f3b486b36496d304d6d2d4f6d294c6a2d5478384e6e304f723650 *6d2c49712d4672334d72354872404c6c334c6f2f4f6c2f496a32486a2b43672e3f64233f5d2340 *622b48672c496c2b496a2c4e6b254b6a2c4e6d2b567d31546f285269275075354d71294c672c56 *8143497638537a2b5270274b70304a6c2d496526485b22416022426a334a682e4b6c2b456c2651 *69254c68324c702f4d6e2b4a702d4c6f34506e2f5177305276314c71344670394a702c4d733356 *783b50793b50712d507734537e334e7231667e32567c374f6f34436a2a607c333f6b2a446f2850 *772d53732c54783c516d2b4c662f4b6b2d48622a446a2946682d4e68204e6b27476b2a4b6e2d58 *793660813c59813a5379344f7e4052763b5c7b3b5c86395f824267863f5d7f36538243517c2d60 *8437557434638542587e425f7837577930527835607e2f4d783e577b30547e4e6488435b7b3566 *854765873f5e7f3b5f873d5e893d6882326083405b7d345f843b567b375c81335d82325b82475d *7e324c702b5c752d5a7a325e7f32587b3f5b79324d76355b823757823c5881395c7b2c5b803556 *7a3a6082395d7d365d80325c7930477a315a7d334c712b557b385c79334d773159803d5a7f305c *7f2b587d3c57752f5e7d2e527c3c567b33567e3f5c7e3a637c2e57792d5d823f5f82415f85445e *844465894e6183395c7f396084355e82446382415f7e2d5c7d395779304f7630496d315e81335e *823362832f5b7f2e5e7b325e7d3e5a7c36516f335380425c854850772f5c7b30587730637f3359 *813c58813954792f567d435f792c6481315c7d345877295b7630537e345778275f8033577c3055 *7e305c81375d7f32577d315d7e3c6185425c82415c7f36517d3e46702750763555793d5a79375f *7d305779324e77304b763055782c51772f4f7c3753752e5077354c6e27527939537c404b74374c *762c57763050732d436e3052692b436d3641693245692f536c274c723a49692d51793549692d55 *7339567842476d2b4c76354d7c3358853a54772f5d7d4155722f5b7c3a597a3a516f315a7c3d52 *682a4e75344d743850783f5777385e772f53772d55732b58772a4f7834486d2c466b2e5373244b *722e4e6e2e57782a57803c53793a5a82485d8549547844596a2c647b3463813c567a334b712d53 *7533456b274f73314766274f722e5b7c3050742e4e74335c80406784365884396785336b883f6b *883f64833e6184426d8f4a6186435d7f3767813f60813263813a667d395c8137567c3a62814262 *803b5d813a698438617e2f607d284f733055752f5d7b325d8539618538587c38637a2c59752956 *752a4d72295473285d71235779334d6526536b2853752c5d77265170264f661d4e67295b75334a *6630455a244a5f235266255e712466803960792f5661225c772a6b8837698b456788436e8b3f6f *8c41627f3e6a833e6c904b7b985d77924e7d9753829a52819a517a985781923f8495487a92497d *975282994e7e924e75925a7e935385954881954d7c8c3e6d874070863f7c90467791437c924383 *9753788e467f924f82914a79904482964580964d7e9653728d417892437d914782944c7f8a427d *91538093527e90477f985481914b81914a8191457f924c79904d6d87487a914f77924e798e4667 *8c526c8d417c8d4a7a8c4c79914974914c7289406486407288457384326a8a43708b3973843464 *81396d7c336885436b823c7086397890486a84406d7e32627a3d607e3e69843b61833b7a8b4073 *8a4b6c893a667d38667c3867813f68833e7184386d84416781416a873b73843a72854374874470 *833b70853f6d823c64884c6f864769873f708a3f6c7f307280396d7c356a7c3a607d3769854063 *874568893e6e853b657a336f853c698341677c316a7e3c7386387583416a833d596e2c607f376a *7f2c687c336c8245637b3a64793b627939677d33637b3971863d7a853c6980376a782c667d3d67 *7d37688037618442687c346c813b6a7b366a803c6f843e66823b72883b6e8a3c74813f6a7e3872 *7e37647435728539647e3c7281376b8139667f316e853f6a823d5f7a337178366881386682436c *7f3668763461753462823e66783a66702a6a7b3262813b6c85426f81386f8741728b4075884881 *883d788b4b708947748a45758f4e7186456f8c4c6483436f843c6b84427a88467b8a446f854470 *8b487995566c8547788b396f83406b84487085417a8847778e4a798e4d798f4b7d8d48798a446a *844277873c71823f6d84397086437b8a3d798d4670843c69854773853f6a84407f88456b874a72 *87526b83496d8444668446627f3e677d407483476e814078823a69763b6b804194a67cc3cbcc52 *80454a7b3f47713146692e4e70303b6b324f67304370343e6d333c6a33396a274b6f2c4d692e3d *642a436c2a386f3649752f456c34486b27486f2a43682f4d6c2c43753d466f313f66283e6b3142 *6d33446a30416529456726446527426a2b47732f48722e486f2b45732f4971324377324d783f4f *75304272393d6d2d4a78354f74334a742f43722f527b3a4973374f77344d7a3748752e4a722e4d *7b3746713459823b5b7c2e587e364f722e517d2f46793a5a7e2f55812e4b702a4e7d2e537d2e59 *813d52803b527d304d742a4874314e7b344d762b4a712854743750742c557b2a4a7132537d3255 *7a2e5179305578305082445780344a75304e75294c7a2f4a7c344d742f4c7a34507d3a446e334c *78364b752b4368224c782f47621e4c7028446d2d4e75204c7122476821486e2747702e496c3040 *73284c77344f7627526f2d48702b507c2c4b7c32457838446e314c7a3b527f3949762f4c78364d *7931577d385a823a4e7f36538039587f3061863952722b5e82306286395d87345c82304f7d2e5e *85325f7f315382325a7d305f7d2d5f81355c7e3f507b2d5f813e5a8033577e3858844765894466 *8a33608f3e5f853f62813565893b5c873c648c3a57884b528547668947678e475581365480335f *873f62893d5682375183366084366189376084355a823a54813659802e5d883a4f7f355a883a4d *7d30587b304e772b51813a5c842f4e7f365079334876344f752c4f7d2a48722c5f792b4f752b56 *7f354c76284f7935507b355e873a4a762e58853352792e56833a6181385c813d5080366a934e4c *84375f852e587d34507e2c51833a5780375c823c5d864257802f4d7f2d52822c50812d6482325e *85355c853f577f3154792f58883c5e87385a82314e79305c8435557d305c7e315d823a67853d4f *7b3952843c578335577d30587e305d82345c792b59813060853b528946628735547e31617b2860 *802d597a2b5a802b557936537f3d557f3757833a587c2b4c70254a69294768224364215876294f *7e3b567b2b507a2e557f3c597c2e4c782e426d2b436d2f437133456e2c48732d4976254e732746 *6621486e2643732a537c2f466e32456e275878293e6c2551783846732a54722a456a2f48732847 *71294c792b567f33507d2e5179305a853d558242577e335278315d7e3966872f5b833950752c50 *702b4e6e2951772d58803d57792c4f80335381335b7f2f507526476e2a4a7231486b2753773056 *732b587b2d406d284b7224436a274e722b4c78314372254f752c477228497029547d325774285a *7831537125407535497532567b3d4c7b4254802e5073254d79384f773054782f4a762756803252 *782d4b7327547a32547b3b4c7930497534537831577d305882395881355e843e6686375d803366 *7e376588415f863b5d823b597d2e5b7a326d863068823361802e5f81385f84295b7a3b5a7a2654 *7323537a2b5a7b255f7e255d7d2852782d567a2e5d7a2c587925577c345f74295c75284d752a4c *7831607d2a56854253783b5a7f36627933618232637f2f5c7c2d5e7b2d607d324863215673275d *742447692352762a4f6f216072205f712c546722596e23445b16475d1954641f607a2b5c7c2864 *7b274e601f5a7d2e6a7e2e6d994c7799507d9b52799948799340859c5b8b9b57809b4b819a4f7e *944686a16686a052869f5b7a92487d93427d9741688e45708f46718f43728b3b7393467b97557a *94497e954d6e8e426f8f47648f46718f4477944f758f426d8c3e798f476f8d416b8e427a974a7e *954676934779964c7c99537a93497a8c4076954876904b8097417f8d40809645799446758c4881 *94487e903f6f894765854270883f6a8d457a8d40788e4b69833b67843a718b347486356b85406e *863c6a823a6b87416e833a6e873a758e3d718d467188376e8d437b9648778d41739046718a467b *9247798b45768e4170904271873776833b6d854268883f758139728a3b728b3c76883c6f8d446a *863a69862e718d435f853e6a863b67853a65853a64842c5f7a2969843b667f30587f3b5a83426c *813b6d7e346a8941718b386e7c35617f365d7b3063803767844171843f6d893f6b882f69873365 *7f325f7b31627930627e356c853a5e7c3361812e6a823b69893d6786436a82336481366e853e75 *8b426e8a3f7087337092376a80336a853d6f8537768f3f7585397088416d86426c8b356d8d4368 *84377581397387435d7c336c81346681386f8932718b4070813b6f823c6e853d6984386b82456b *8845657d475e80366184396c842e6a8039627e376d7f2d6a873c7589416f894674893f7e933e73 *8940758a3f6d88356f89467388457a8d4974934a798a45748c41718c3774913f80954a798c4580 *934a6d8d456f883768893c69833273883d7083347190426b8a476e863a6f894765843d73894072 *883e6e883e738b416a87446d8b457c8b436f8d4f6d873a70883a69873d65824267854498ae83c2 *cccd50743f4069333e673133642c3764324972324762293d6b3a426c333965283467363c632c3c *6a343a5f3039612e396e373c64323d6d39436e2f376c2a34692a3c6c38476c3341692c3f632b39 *60242c632e416d2b3b662b3c682c406e344366303a6223416c303d692e3b6a2c38642f34622935 *6a363e6e33446a2f39672a46712f3f71313c662d42682c497235426c3247722e3f6f33436a2c48 *6d313664243f6d2c3b6a3a426f393f6a2c36632e476f25486d2c4d672a4c7229456f284f6f3252 *74294f722e476c304674344c732f4b7635476e32457036466e313e6a2b446b2c5177314c712c4c *75344e7432486c2d5077344b7637497e3d466f36447238406b2c3f6a2b3c682a426f30446b2343 *72324679364f7e3a47702c486d2e4d793a4e783d4f7e39436e2c446f2f557a3a517539506f2c54 *792b44792d5478294775365c803e537933487d3f4f7a39527a3550782b5272284f7a314a742e4a *702c4d7135457231517c2f46712644742b4573274c772f4f793748732e4d782a49722b4d79284b *76284f7d354578293f6a2b587d306d732b6869265c803a487233568029517a30587d3d58762c51 *76304d7b32527b42577f3b58824266883a5a81376486436d8b4057803f688a46628538648c405c *853566853763833e6481365a80314e7a2c597e2c507c31558034587f2f537e3047763048702655 *762e4d76304a75294b7a3150782f58873c567a325a824053813548813a5b863761813557833d49 *76295c8231638a406587474d742f5c802f5684315080334d7733587d2a567e35527a3b58802f52 *80374e7d355b853e64833b5c833d59893e568430587f3761833a55792d567f335c843d53863f5d *85405d8432568137527c3c527b3255722f4e813d517a31587b2c587a334d772d53772d5f823258 *7c2f4f7d3e4f7d2c517b2f57833b5e813565812c63813a55843a4b7940557e39537831517b334f *752f4872284c75284f712c436f2f58802b628636557c30547d31547e3b618235577f354e763152 *7d3350833e567c35587932527f324e792b587b2c547836547e394f7f3958853e5a873656813653 *75255b7d3253762e51742c4775304d742c4e6d2a587d3547792b597d3b4e7d3e446e2c57752d4e *782d4d732c487633447429436c2e4c71284e7e35577c2e4366274872314c752d40722e446b224d *782c477329527c324c702f567b34527c32517f3c4f763d466b2d5476224c74254f7732557a3047 *7934517c3e537d3b57782b5075364a742e52782a5f803c587b32587b2f4d782b51843b4d7b2c43 *6d2348752b446d2a406d2e48773a47752e4f752e436822426525416d3344733445712e486a2958 *77324e6e224e7026557427466c274574294d7b37486c264f742d446e2a4c742e426a294a712b4c *6f2f4e6d28507936547c3f437236507631547b3054772e4f7e3e51712354581d73672490873964 *773359792f4b7833577d3a5c7727597f3f56792c5b7b2e5b762d5b7527577c3f59833c59833c54 *823f5f84395a8340567a325f7b3453772d5c7d29607a2d627f3c6882325b7b2f5f7d2e5e7c355e *822f658030587b2d5c7a29608736658c416a8e475f86425a803f68863a73883d6f8d3b678b4365 *823460893f6c883f6582396f8d436385315f75265570285c70224f6b266278316180345d823b62 *813e57762f4b6f2d487a3a5f7e3c668f436b8b486d8d44688b3e769146739148738c3a6e8b3c73 *8d4473934579945375934b628c446c8939718e3c6a8e49678744718e4c7d944d7d98557b924579 *93466e92497b9049748f3e69863e728d3f799246759251758b4d718d42658a3c748c3d79914775 *8e437d944c7b95498190436f894976924e778e438395447c9249738e536c8e426f8e436c8d4775 *974d7792437e974e728d476a8b4a78924e738e477a974f7f964c7e954d7c954b7e95437c954d75 *94508195427d924a75985671924d7993437f91467a93507a9347718e4c768b3f699144778f4a6f *8e43768c4272883f66843f7688307c8e456c8b4b7d9142738f4a6381335f853e657d2a68803e65 *843c657e306286405f89476184436982406b88386f894172883e708a466f8a4568823d67843b60 *7936738436708337657a2c5d7632637c385d80345775325f7d3a627b335c7b305b7d2a5c702860 *853b6b833768873e728c3c698a486c8a3c628b43758b3f7088346a853d6481486585485a7f4265 *7c316584346586396c80366c8139657c3666894262863d6687466d894567873f6e883f60843860 *803c687f3c647d375f8443607c38598246547638557a3660772e587a3a5f7a35637e39597c3961 *7d3063813f6981335b793061843d5c8039607a3061812f5f813269873e5e834965893a66884366 *85366d883e7089486785446282405f87436481386c8a3e748740658a476b8a3d5d84426e8b4471 *8d4278944e78954872904d73884668813e698a3e678641688237577a3763803d526f32627a3a96 *ad83c1cbcc4d713441652a436928415e2943663137562d41662f4167344064264363254b62293b *5f233c5e2f3a652c2f602633642f396835335b2327582636582540652e44612d3e5d272a5e3035 *5f2c2b59232f5620385a263c5e2240662f4669263d65353a662a416530456d2c476e2c466c2b46 *63293e5825335d28405f2435612d36612b406a2a3b65274a6b2f44682b3863284f752c3f6a2b3f *6c2c38622a3b6623375f2240662b446c34476834476c2f476c2c456a275070284d6a2c486d2d50 *793a45712e52752b406f3841682f446a304563224769254b7234466d254a652449652c45682b3d *682e466b2d486f2d466f3650732e466d284b6e33486e31446b32476f394d702f43692c436c3d37 *692f3e67304b6e354c6f2e486c31456b2e47722b406d2e3c63284370344f793657722d4f7c3f47 *703a4779344e78405278385675374c74285a6a2352763746702d4d782b537c2f51762f52803c5c *7a34507729557b355879335d80364f78354d7835547f425a7c2d4b722a51752d51702b486d2a4d *74295c802a4d7a354d7a3753783251762c68842f507d375d8031577c2c4f7c2a547b3050752d53 *73285068234b6c2f4d7529577c374c76374c7c3b527d355280406083485f844165843d5d7d3460 *7e345b7c2b5c813c667f355d7e2b547e3b63823b567c27617e355a80326580355b80315e7e2e5a *7e305d8033587a2c5470265a7b2c5c7d31577d2e5f7c315c81325c7b2f577e2f5d793267853365 *7a2b5e812b5980385d853b5d803353822e50783457793763813a5b802f62832e5a7f3862823c5c *82405c833e65823a5f813565883f5c84356789425e813e608439617f375477295a7f35527a2e5f *80345c833c6585435e8141557e3e637f304f7b3056782e59772b587b2e5278334c75264c732d5b *7530566f2d5e762a587e2e58792b57752e51732c5779335e7f334c7530597e355b7c336485445b *752157772b51762f597c3e54763d507f3d587f395a7e354e793b5f823e5d7f315c7b2f66812e65 *85375e8432597a355b7d35527b364e7a2f517c325776295480415c87475784415a87415d853a5f *82335b7e365c83335a823362863560803450843f5a762f526d285778314d763050752f426d2c51 *793c5676375b81365a73315673355576365c783a4b692649733a47642c49703251702f4d702b58 *762c4d742a51792f59742b456a2e4a6b274a732d516e23466e254f6e24406523507531507b3b50 *793a4b7132446a34436a23567223476c21496b2a50712c507b2c5578364c773255712052803e55 *77354f67255770244e712a507625426c2e4a752e49782b507e30406a264e6d2756712e4c6a294f *752d50773b517c2e567a2e547b30556c21527629427331476c24496a234d6f2648742c4b722d4f *6b265c752c4c6828446125446624426524496d2c486b244d782d5075295a76306b7e296e8a3674 *8d3c637d3a4d772d58762d4c722b54793b6b7e2e627a30627b3260813060803452743051733158 *6a2858722a5575305f7e38576b24526c24586f2c5e7c3560883e6b81306c89416c85366d843167 *832e688438718742627c2e607e2c5d782a5f7a2b7186336c7d35668437799250889f7462843b66 *873363833b657f2b60853e62842a65873d649049688a4270913a5e873c728c4271863c738e4d65 *802f62812c5b7e325a81326485335d792b69812a637d2965812858722057651f54662148601f52 *6722516f265667234a6421445f1c41641f486d27587e3660843a547a3b617d316f8d436c8a3b6f *8d44749042698a3d7390457b9657748e447b904c7c92438b9d5782984d78934c768c3b76873f74 *8e4780934883994f7e924877914673884980924b7e90478096517a934b80914a758b4d7b91467e *8f4878934e7c95508298567e92517d8f44819554819651829a518598517f9952809a5279904a81 *964985974a7c974b7f99538299528095497d955579934781964f7d8e3f7d934b798e447a8a457f *87467b88407b8c457591427a9244798c487d9145798a43758d447f92466c8942738d406f873f72 *893675913c78934f7e8f496f85417c88426b85477a8836798e437d9048718f447089437283426b *863c7284396d833a6b7f386784406682366981397082396b8233617e34798942798a42738b4575 *8a396d803b75823472803b7c873f6f87416f82427085457086416d83356d8030708639677e3a6f *803664782d667f3366813a6c813b5b762b57742e647d3665792d5d7836607c3660763c5b763454 *712e517a2e547030506f2656712761742d57732d577a2d59733061742d5e752e5a75305c6c1c5c *6e2b5d6e2a546f31617227576a28557d395f7639578138607830708441657c31668440657d346c *864168823a7287385d7f43667f3e6d853f758841658947738f426d893d748d3f698a497e8e4370 *8a4969843f76883b698647638040647e336b83446d86426985407183465f782f6c84436e834367 *8a5299af86c3cccd45753e33693d3262383c6f2f376a3033642f436b3835622e345a2936603539 *5826375b2a2e5d26315d2e3058262c55272a552d2d5e343c65283658253a622b3b5f2743692e3a *652f36633035602f325e282a5b2c366733346931315f2a396c2b3c682e32642d426a313d693531 *642f396627345d293668312a54262f5a21365e24386023315b272e5b263367322c6627336c2636 *672b3c6434345f2932552834652d346a302a5c243a672931642440682537642f3f6a35436a2d4a *74373f67323d6a2f3a67233d6d38366a303f6830406b3b3f672e315f2c346a313d662637642741 *6b243b6a2a3d672930632e40692e3d6e39427131416b2e366c3a4171344a6f323f6b3e476e2b40 *642c40713f4a76393f75384b7a395080344a73334b793e5476334779384b7f443e6f2c4377344d *7b2f527e334f78333e6c344a783f4e7a464a6e2e5381414c7f3c45743e406b32476e2e496f3642 *6c2e46763841672b4777304b793552772f4e7132547f395c7d375d81384e80404e7b3453853f52 *7e345c7d2d5c823f53803e537d33517b3746793c4f812f61853d4e7d305a7e37588137507c3857 *823d57752d4e7a344978303f7433527d3455742a487734527e344f753049723453793054803b51 *792f5b82355b7b2e547e396181375c813b527b31597f354e752f517e2f5082354f7d325a7f3e62 *88494a793049773a57853f5d874557863d59813f5883335d81405a7a2e5277315a7e32507d2952 *75254d7c315a80305a7a295d813552813c577e394f7e3b5a864451833c5b81365d86395f813958 *7b3459803f4f77335783345680385685374e7d364c763b5a823d4c722b48752e5b833b56833d5c *7c264a7d2e5b7f39507c3849723751732b4c773446732b4e80364a803f4c8044477d3e5377304f *782c5d7a30507d3b537b3a588142587d284d722f49762d4d77315a7e2e547b3a4d752f52732462 *7b305780335c8235507d3956803e5a7f3e55733b5075325c84465e864755843e58793849773755 *8039537b3f58813e517b3a5179355476314b7627507c364d78344e763758772f5177334d7b3a4b *772f4778304c7e33537c2f4d782f47712e46732f4b7b38437129487432446c2d4d712c507a344f *732f536d2b517a314d7a345275334d762e446a2b58782e4d7c2f46722f53762c4c6d2848732e47 *72384878334a752c4e772c4c74264b712e4b7334447330537e343e69314a73324a742b4e722c44 *6e2b4d73264f762f4c75345073314d76334e793a4c7330416b2c47763a527c3f4d7a3957843f4d *723155813c597a2d49792f5b87364f7a254672344c752e50782943692f4c7a3a57792d527b3446 *6d1d477329426b29456c264a7336486b2b4169234267223a6225426f2840692a47692f4d6d2b4f *6f264d732a4a7434426a283c6b2d47712d54762e537a334b722752772c537c3a517a2b3f712748 *742f537e38456c3244712f4f773355833f416b28426a254d69215f7f31537a344d79325c7e3a62 *89485b85395f803a4c78335b81395b7f3b5f7f3456783f587a395c7a356a823f64853e6c893e64 *893e6888326486386985366f8840768b446387436c8f4873924068883b6c8633678a376a863c71 *7e3862863b5c81396a8d4c6a8738658d405a832e6b8c4767853b6c853a60813c668c476a7b2565 *863a648634527c2862813a607d3a5579275876275a7820597925607d2855812b5b833257792d58 *792a50742b4c742f597a2c597f304d78285b7a26537328496a295e782a51782f43742d4d6b2048 *65234268254768244a6926475d1d41591a4f651e4863214b72235a76264e73295c792a525c214b *5b1b40612051722c4a782d507a344d70315d762d63772c5d7e3164863b628132507d3c58813c6c *8c3e63853f6a863566843964843b6a823a6c834064894361873a6a85366e8f436e893d67884066 *863c7390467191466689436f90417693497894476f91477d933f7192527691426a8a4668893e64 *85316b8c4e6e95516f8d447f90477492426f8f51799146789551738e3c7897486c90476e8b4278 *8f496f8b44738e42758e4270883c6a91506d8f456d823f6a8a46708535738d497b894070864271 *8f566b894261833964823a6a7934697f336a7f336c843768803d69883b718942738b416f853771 *843b758a3b73863c718e456c84376f883b607d326986405e7d326e7d345b803266803358834150 *7b3664813470823b5d7d335e7e315d7f3c69802b667c366b7e375c7b3662834161863a69863b63 *7b2e5173305f7a3653712e637e4157803a5b7f43607d3c617f345f813f5c7d35567c384b723a5a *76315f7a305c7c2e6b813360803a68803364783a6280355f803f618241617e3850752f5580305e *752969762a69823e65804064813e628443657f3a56712d55733764782f637b2c65813169854070 *87406d8842607f3b6983376c88415d7e32678439637f396a873b688444637f3c6a853e597c3557 *79375c76338fa77dc1cccc476e3934632d35653541653a3860394569324d672c2c5a262a582340 *642849652c46622a3b64333c5d2f355d3838602a41612e3a672c36632e4065303b5b2a3c60343d *65324467333d673640682f46753a456d323e5f2740632c416427365d2c2d612d477239416a3438 *5d2343682e43662745622845653040632543672b426e303b622f3a7031416a2f416f3647713546 *6d2a456d2f3f6730406a393b6d38426a273a5e2f435f1e476221325f2234652e38662e4267252f *5e2c3f70413f642d385e2a365c29315c27395d2c335c2a2c5b28355f2d406024336234345b273c *5f30456831395f2b3c643240652a3a5e1e376127416b383f6b34416d34446c32426d2a3c62223b *6b27436e334472385172344c7237426f3c5473304d783f547a384c76404b783f52793c4375374c *783c5c79425a7e395a82444e7a3a4f83424d81464e7f3f4c7832557936577f3f547a38517f3d51 *7d36456f2d406e31456e31527c374f7b3e4d76404c7639466c294e7a37457337507e405a7f3c4b *76374f7b355a8041638a4259813c48763c587e38507e2d4f70264d7f434973345781364e813644 *753648723449732e517c3850782c568036547e3f58823b477e3e587a385a804058803a50814752 *80404f7d37537f3b567b2a557e3457823f5c81345e834252803f5584465e843d5881415e813e5e *823a5e803a517d3b48783258783a5a7834517d3d58793f5d79355c813352813b5a7e3d517d3c57 *752f4f7b3652712c4d7630577b2b4a7c2f4e773357791f4b6f2c4f7a3345763b5279424b752a40 *6d2a4d7631506f21497f3a5276305b7f335b7a305675334978394e7b314e762f517a33517f404c *773059782c537330557b34506e29507b335076305a7c374d73285e7f3144732e4e71324973364c *743546712f50752b4f6d2d4d752f527d3d507b354c722f517c3d52762a5a742658792a5f813452 *7c274c732c507331516d30527b365b7e30537c2c647d30688b3b5c833b5b7b3d5d813e5a7f445b *7d3658813b4c7b3a587e3b4b7b3d4d73314d74384d6f2e527931466b2a436d2e4a71264b752a4b *6f2a517a384f7c3a55723153793641652743702549752a497d354d79354b702f415d254d673347 *6e2f4d6f364469264e7d3b5279294d6b215c6a2b58793a4c71304e793a446b2548712f48753955 *76324f713244692c45682a44733248773c4e762f49722a51762f557831547329617e345a772b55 *782c4c732c4b712b567e40668f5a51722f44693152752e587a35547a3e618031527a2f507e3158 *7d325d813159793c6387455f8649537d3e5375335579325c85434f7a3c49712b4f723144642450 *722b4d763e5976324f722b486c224a6f254a712a4768284c74304c69224c6c284b753650682848 *652654702d4f6525526d2d576a294a6a2f445f27496c2e4f722a4f7a33507933426425415f2740 *5d1d4972213f69243665234f752d5778264f732549672448712e4d681f576a244c6f2a4165252f *571a436828415d213a602048733a5b7732557833517b3c5a7e325f7c3850752b5c79255d7d335e *7e396180315d7c2964863673904768833c6c8b3f607d3b67884168843763813c6e884467884070 *883561822a5d864064893f6a7c394f722c62782b64842f5d7e3969862f6a83385f813a64813069 *853d657c375a7f3a6a85395c6d275b7f2f5b7d346080295a782f54702857782b50712f506e264f *6e26507328567023546c24607d2c617e2f5c722e5f7b2951742b6780345978325d79315e7c3063 *8135657b2e5072295b722b547527647d2b4a72254c6a23536b2151712650732e54692c546d2e56 *712a4c6c2a4b6a233f631f42601f4365265867274e73345d752a4465204e70323f561c4f631e4c *6c2c5e782b5c7b2e55703254772c4767274c66214c651b4e681f4869254d6f244767295066244e *6a235b6d213f611f4659183e5a1748611e4053194a6222354e203d561d324f1a4364222e48183e *561a33491e3e4f214864255e792e4d77335873205476245c7b2d638b475e7b39627c2a5f833c58 *7a315f80325d823c607e3866853b68844567844467833c6c87445c84446c8b426b86366d843d67 *82466473347088446b823b67823e6f8544657f3e5d7b356b823565823b647f3d667d3f6a824165 *7f365581405f7e386a7d3b6a84426a8332727f30657f325f80426f8840728c486d834562874862 *7e345f7d385f77316a833f63803e67804366792c627d3c6f8b47587d2b6c853671863d6d853c67 *844857783862772e6a7f2d6783356884395f7f3869853e6a7f3769803a5e7737617d366277315f *7c3161822e58753661712f63742d5d7d31607e3d5d7c3960813d638638677832647839657c3660 *7c356581416d853a677d39617f3e668539667e385e712d6981436681346c852d60752e5a793059 *7d3c5d833f6986446f864072833672894868834269833e5a733b617f335c783557743363813d60 *793b5b783963823890ac7fc1cccb4970474567333a693b376a38305f2938683d3d612c3b683536 *5b283866312c593230572838642e3b6335316335396b302a52303755294063313f6931436b2a38 *602f4272344764253e5c333f652b345f2c3c643239623043672739633337662f396133466b3f40 *6a3036622a3962303a642836672b3f642a416a2b3a6a323a5e2d436a31385e273864372f5b233e *652a37613136652a355926355f2b43662b36602b3f652841603637602c37682b3a642b37653035 *5a233f652f3164314471433164303e6d29446f303e69273c6a2842692b4972363b69343e6c323c *69283d64253d6627436c2e3d642a3b683241622742682839662c406a2a3f6b284067233d682439 *6521476a353b6a3533612a406e2846702837611e3f702e426f2e446a2a426a2f4667314465263a *6f303c682b42752b466d2d43652b466b32486d2d466b35416e2d40712942702a457b3748712c45 *7132496c30446b2c466e3149722b46722e4b7738507e374e7d3c54793a4a7733467838407a4254 *7e3e4c7a3453803952814753813a607d2e52803b4f7c354e7d334f8036538135587c3a4f7b3b4e *7b38577f3c4d703042772945652649702748732a5576284f79354f7637577c3a53823f50803c49 *76404d79304b75304e7a395c7f30547835537831517d3d537f385b7c36587d3247712a52783050 *7b3c507b3c517d394e793048722e4f7b385c7e384d7e474c7c34527b2e5b7e3e507c3a5077324e *79284f7a3051782b4e843b507f30567b31537e35537e364d78334f7c34587d3d60813656793650 *763157763148753b4a733249763a437031557c2c4a732a4c6d2f4473304a7b3e4b79364c773749 *792c56813a4b782f4672314c793c557b355180386080345b843f5b813753782c45762a4871274f *7c37567830517c32486f285278345279314f793151782b4d722b56752e5d772a5c8031517d3150 *833e567f3560843d708b45577c355782415a7f3b58792b577e31557c3652712d5c7f37527c3a56 *7d325b81425e83385a803b4a743249752f4c773d4b76375f7a3345682443702a51752b4b6e284b *7133456d3141693345753a487229456522466e294a732e52722845692648762a47733153712d4f *782f4d7d304a772e4d7631496525506f2a44692358763046712548783258702a436d2b4265294c *6d274d6e2e42713c4470313c632246712c4569254770225b742d5d7e375a80374e773d5c7b3a66 *85365c81395d823a567635597833537b3e547630658348617f3a5d8a2f5e802a658a3a6081365c *7e3c587e3c5a7f345b82436080365585445d813c60853b61853a56813d59752c68793855803050 *7c2c5e82335f863c5f813b587e315c8037587933547735517430547a2c577d325478274f7a2f5c *7d33577a43536e2f52773b4d7229507d365173284d74305175294f6a2d55732e5974274c712e54 *70294f762f4b73255c79284a722858722f4f6c294a702c57782d5373245a7928527626446f2b49 *672151722e49743b53763653773d48722d4777303f692e435e224d6f294e722e58773253743456 *7c30507e3254792d4f7326577b2d4f7a32507a3e4d7431587730587e2b5b802e5f843c5883345a *7c2b61843d5c7d3460833f5e853b59843b62863c5f863a607e3269853a6d8b436b813c68803368 *8b395a762654782c467d2f607a2d63813f677f3f5c76325a7a3355732c506e294d6d2353782653 *7526567127486825557228557327557d30577423547223487026507126586f216176235e792e5e *7e36577f2c6381295d8228657f2c617d34607d2a60803b49763249762b4f7e3458791e56792c64 *7f325b73315c78335e79304a722e51772b436a254d6b2257722256782a6580316b843f5d73305b *7f3b4d6d2755722b48762b5072284a63234f642056752d627c2f60833e4f7a2e5d792f51742750 *712d53651f55681a44601f4d6d21436a2c5169204e692151762f486a2349651f415d2543601e44 *60254c6c2a43601c4f682746601c3f611f406821586a1e57621e516520546c20526c2646611a48 *6321425b1445611a475b1c4c64183f5c14475c16436425324b132c4b153147133d49143a4c1833 *4b19304c182d4412465f1d425a1f37511f3957204160284668255275314c702a4d75304670225b *7e305a7a2c58813c5f80386f853a6c863563843469823e5e802f5f823a678145717a3169834466 *7e39647a2f6a84335d752e58772c5e7c345d7732677f355f80376b853c6a86405f884064853e69 *894464854168863e6b83396a7e356683365f8139687c2f62813f5c7f3658782d56742f5f7c3562 *8042647f355e80356a83355c7e3b67863e6485396d87486e7b3462762c597e406780325b7d3a5d *7c2f5b7f3a70853e6f8741627a326381345b7e3e578134617e3462813c587931678633607d2c65 *7e35557e395d834b5a7736537c3651772b637f35537034536b285e722a5f7b3356733654783c4f *7332647d2e647f33677f3e97ac7fc2cbcc486f444a6d33526b2f4164323b672d426c3938643241 *6d3338642b34602d31643731572e41612a3d5e29315a303d693b3462333e6635325f3246602a49 *642a476c3738603043652442642938662a3c622a3f5e2d40643547612c3d642e3d69373a5f2b3f *62303d62333f69353860314a6d3641663240662f416a30466b343a6532426a2b3b612d41613046 *682a3a693549662e3d672e3f69394364293a6837406424395c23415f2643642e43692a43642943 *6a28426334436429305b2b3e62274160243f622936602a375e2742622c3b682d3b642d3e672741 *632f496b3243662a456a2c4870393c6b36446b3245692a466f3644632b486c304061233c63283f *66304369343b632733612845662a3b632c43662c3e6a2b3c662c356b2f446c2e436c2e486d2c48 *6d2f4d6f344e6f3a4770354d6c36476d3045692e466d2b466e374d7338436f3a3b6934476d3b4f *77414b743447763a4e712d4a6f284e78305f7c365480434c753d4a7137567c3849793b517a324c *77364a79404d77334b76365a7b334c7e3e517b3c507a3c53772d4d73304c753b4f7e4052772f47 *7c3b5f813c4e7a2e4c79325d7b335a782d51752c557431527635446d344d7a3b5a742e4a763252 *7c3d507c404a7433597b404f783f547433537a34587b32557b354e772d4d76375177304776354b *733a4a7640647b305b7b2f567a2d59822c5d8036617f375d804050793e61853a4f7b25597e3850 *762c4f75344f772d5e7d33577d354c733e4e722e527a3361823b5d812a6284405c7d365c7d4158 *7c3055773251752f4773366886475e8132587936547e3c4e763d5973304e76314f742e4e702b4a *6e2d476c325277384f7736476d324c7330456c2c4868264c772e4b6f31455c1f4d6722476a2d4f *762b476a2e4c73324a762a466d294d793b53772e5d7528617a355c7c3c58763557773361823665 *8641568139648740627f3f5f7e3e5d793b5f7e385982375c813b5c8136677f2d5d7f3c4e78355f *843d6283415f87405f843a537f3266883f5b853c61864063843a67823e597e415d803b5a823f5a *813b5a7d3b5275384e78364b7836547235456c3544692a4a5c23766a284d7834537a354d6c2b5c *7b3558762a54722848732e3f6d2f44732f517634506d2a54783b5f7a365f72305c81484c7a3952 *7a344c7b3a4a6e2e4766294a662a506f304a6c284a7333587b3c58803b547d3e557f37567a2f5f *7f3d60823f5f7e34598344587f34577f39547e3a5f7a37597f34678c4760833c64863d5d8a4667 *8939648a405f843a688643708c4874843c6281355d8342648a435e87404e81435a7b34618a455f *803f5e853f6087415d834558833d61863b5c853e5a7f3a62814166834157793c597f475a7e3d53 *7e3a597a31587e3b5877355d7c32587c33607c3c5f7e35517637587d455f803d5a833e5f7e3c53 *7b386582494f7c3a557c40507739547b3b567e395f802e5d7d3f64813f5c7d3361833c5c7d374d *6b2e537833587a355f8539597c3a57772e58752e566c274d7830507831547f354c7b33637a3361 *7d3b57753357732c4b6e304a762e4e7835536e24586f2c515e234e4b115c6e2b547730587a385b *7b305a803a577d325d7d29618a39597d295d78284b7632567e34597c355d79325e7e2f5f7e2a63 *843c57762a5f7d2e4d7d386081385f8a536c84397486326384386180345f7c3069843454762961 *7e2a6b843c67833d5c7c2e61843a5f8231627d346280415d7e355575385d732a56782a647e305d *77395b742959752f4d732e577628587f30617d2d71873b607c3258732063813760792b607a3363 *7d3a70813856843a5d812d6080305c792b5d73295e7b345c7433597f415a742b506b306480355b *823258803d4c6926516c214f6c2d4b722e50702e5f7827648136587c30567a3059772e4c763a56 *763155762c5f782d69843d59802c5c7a2b516c20526a2558722a5c7a305576375a74305c742f5c *7724567b325b722d5972285d70305f6f2a4d65335272276275275d6a1f526f244e661e3f65274b *6a294f6b244e6a295469225b6d20566e204e6622516b26456422516e33515e215569244b611e50 *631f446424405b1d5263285169244a62244c64253e531e415b194d5e15425d1948611f4463244d *6323475e24425723526a23405619445d2143581a484d16425e26394c1a43591d3e5a2536531a3b *5e213e5a1e4d6a284c6c295a6e335073375c7134607a4354732b607d345d772d5d712b5f74365d *78315679355f773c5777375a7b335e76285d732b5676306b81325d763557722d617332546a2d5e *732c627a3369732c5f732d6a77276b7c3358733167802f667d35647b39648437637e3364722b62 *7a3b5e79414e6c2b64742d6981364e6a265274385770284e723456763263783c576f2a5d7f3662 *82354f7338647a3958733668792e5a6c365f73366075316574317584346d834371873f6a7a4368 *7e4756713a62702e5e6f32637d389daf8ac2cbcc476a3b3a6a353a6e39396731386f3535602732 *632935653e396a3033663a3b6b32336434426d2f4369333d672b39652f3767383a7040386a3b42 *7436426f293b6c2741712e416732426b37376a3d4467272552293c6b313a682e33651f35692d41 *6a293e6d342e5f2c325e2d39682f3d6e2f446f2f3b692b3766313e66313c6a3035663733662c3f *6c2c426e283f6a2b416f31426f343660293f69344f6d32396a34396c3237682f366b33406a2c3f *6a303f64243b6d2e386a2b36652738642e31602a3f6e3b3f6d2e426b2b477033406e353a6b333a *6e373d6c2c3c692a3d6a3241682c3a672f3e692a356d3c356930456a2d39672d3b692a47722c40 *6b2a3a6e2e346830446d2e47723240783a3e6d363f6c3242712d406b2e4270263c6a2543693847 *793e547e3c47763946702b487631376b2f43703341783f426727456c284c753e4072374067253f *70324a7a37426e3141753a507f3e4a712b4d753045753250833d4277324a7637497b3a4070324b *71364377364a7b3444733353813c4e80395079374d732d4f8140557a3750864852803f5285454d *7f345c843f4b7e3f4f7a3053824a4d7736477634478142587f364b752b4c7d364f773154783751 *792f4978305382354577364c7f39507e34577f3c49752b4c77314d7e384e7e3a4a763849783055 *7f315d812d5d7f3a517a3452824f557d404c84424f783f4b7f3f5d833d4e7d314e7f354c803159 *84424f84455a843f5986475386394e823f57873050813a5d81346781365f853d5686425d864055 *7e365b8b444f8445587c2f598145597d325d813d5e7f3b5882395b8b41588032558343537c3b5c *813b507533507c37517d385981305586415f8b38587e395b8338578039517e3d5283435b864051 *7f2f52823c61813557823e4f7a40487a3a4b79374c7f39517d3b57844358853c58883e65863e5d *833c5e844445793a4d7e3e4d802f5280324f813f577e305b7a3b5574305b80355a81415a854b5a *853d5b8840608a3e5682446088425983415d853c5d853f5d88415881345b8634578135587f2d5e *834062833c567d2f587d3c5b84365986365080314f7b2f4d793253733564813e58813b4b7d4356 *8030577f3e58813a63813e59803e567e37567c334e773b4a75354f762c5b7e3054823f5580354d *7e44587d2f4c723c4c762f4e783c52803c4d7e4051783361874750753752742f476f2d48743549 *722e4b793a457730507939527c32497728567c3857803c4f7c3e5c7c2f52813b56803d4b7b394e *783f5c82325d81405b8b4c5785395f823d617e32477833587e36558139497d324d823f5e85425b *82454e833f557e2e5581395880315078304a7b3154812f507a334c772d4d7c3f467330547a3050 *742b4d782d4a732b4972354a753b4a732b4678334e732747722b4f74304a7835486e2f466c294a *70304b733b5377244f7d3b5981394c7e3f4a7f3e4e7523527739587f3a587d2c5380355b893b5b *7c3a5b833d5980315b853f5582405b813d547e364a7d3953833759792d4f722d49722e557a344e *772b587b3c54732853773552773b4e7a36577f38577f3661863c5b833f59792f5c732f597d3656 *7c345d7f345d8030617f3d5c7c3455782c568442557c325f7831557e2e6086335679325e7e3350 *76285374314e76304a762e4f7d32537d33658c40677e2e5d853c688a396081326081325d7e315a *81376b85335e803348772e597a375c7d345f843e618b42668c375f853959853b5c803269833b5e *81375f833c6184314f7b2d537e3862812c69832b647f316e853169813b657d275e8233537a286a *8e435f83385b8638547d31537526627d315f762b59782b648138608233557926586b275b742d6c *8a40637d2765813a5777324c732959732855752c677b2d63813255752f54782a446c2b426b2644 *6b205979344d722b5574255f7a245c8038637e384c7335597b364878285174224e6d1e5b75225c *7628486c224e6d2a4365224e69294d772f557827466c29466d274e70274d782c506d24456a2c42 *661e3d601e44681f4e6b21516e25516e224f7a334675314d6f244965284d631b5072244b712c58 *6d2d57773a4e6d2a486b38486b36476a26517122577b2f4c6d2854702f5670333d5c233d612243 *6220496e294a712f476c2640631f4465274764214d69273f672c3f5d1a42601234531532571a43 *5c173c5d1e36511e2b4d1c3f6a233b6829465e1a405e1d4a621844641e4c61273248153a4d1c2a *430f1c410e1e420c1e3e0f293d1226330b283c0c203d1020381126420e28401119300a203b0c2a *380b284312253e1735481928451826480f21420d2d4b0b38561c3a4e122c4211425216274e1a27 *4018314c18264d102c5616314811344b163558203048183b5b22344e1d314d153e561c31481d35 *4f16334817344217434318334f1e3e581c465d204c702c44722755772e556d2e526d2e4b733c43 *6a30355f283859233c5c204462234b6a288fa57bc1cccc527340476e3342694038632e37613c39 *63343c682f426c343d683e40643131562f46683035622c385e2a386329446f3545692e44663140 *59253a65363d6829416d3147713b446b37446d394669334368383664303c6630406632425e2c34 *5b2843662841652e426b2942652940622d3f662f44692c476931515b22466432446b2f436c273c *6c314670363e642a3a57283a60273d653341652e436c2c3a602e4266394a6527366236395c2c37 *682f416e33446a2e43642b48733a3e6a3741673a4f6834436a2d366836416e3238652e3d6d373e *622c3f65324162253f672d4264303b683c396b38456d2f4b75374c743a567b384970354a723344 *71334c70354c6e324c72394c793f4777404d6d365072344a783a466e38406d345072324e6f2d40 *6b2e4d6d34437235446c28406a294575363c693648732e456d324b75394c79394169294b702d43 *6d313d6a38466e32466c2d47733e456e2f4a71344d76394672344c7538476f3a4a76414e723946 *742d48703349713b517b3c4b77354e7c3b4d7a3e5282465582404c7833587e424e7e3e476f3048 *732d517a3c5a7a3b4978304d7729567d3b51722e4d762e52793f527e3e527a36577636537d3b5c *7b36527935537e365b823f567b3e557b325b823d54702d50782d5a7a344d7a3a5a8237597c3150 *8043567e39668238598042567d395678304f7f43577f3b608641547f47607f3f75935d597e3e4b *7c3a527d365c824d5c834073904d658845537c4054813c567e3d4c7c3b49762e607e3048782f5c *7e3a637e34527b2e5a7a33577e34557e364f7d2d52782a5977365b7c405b7f41668645547c3e66 *84376483334d7d3848733757782f5a803e4a6f30587d38567b2f538038517d325d84365c7c3b63 *843e61824658844b5f834060833c5a833a4e7c37497d3e5382425c7f40658135518440537f3f57 *843953853f58814049762e577f3e527e405b824461833d597c3e4e85425a803a5e833e63813d68 *83406384435f8c4660843c5e87415c833e6083375e853c5e813558814159824a5983414e7e3d53 *833f5f853e61863a5b813d6c884166863e698d416589435c8645598241658b4062853b698c4271 *8e41728d486a8b437a925492b1a4638d4d5a894561853167854263854258813e5b7f396485425c *8039587e315c80335f8142587630567d3f5e7938527b405b804764894b597c375b7e3c557d3d5b *7c3f527d4456793c5479395477405576394f732c5476315d78385675365073315b763354783a58 *7b36587d3b587d365c7b3b577b3659732e667d315776315b743459793c4f6f3344722a5a7a344c *72294c742d4f742f507733477638507d2e50752b47752f4a752b466c2f4e6f274a6c2c4d793655 *7c35567c3b4d78324b742d4f77354c6b2d4c5e2746642a45682e3f6531466b2e506e2d476f2e49 *6a254f742b4f7331576d2f57792e4c76344f712850743448732e4a6d284e6f2b4f6a314c682e53 *6b2b4b71304769273f6820457832426b264d702b5273314f6c2740743a4c73324d66264c76374a *712d48702f4e6f2b5b7c384c733250753253782f527831537c3366844163834962804363803a5d *82376087436987475d7f3d5b7a3c657d3d708b426a813c73893a6b8a4058803f55814368873d69 *87385d8c506e87325b81315a81375d833b5881346d833f64803c6480346b863f6784346382405e *772c4d65295f712a617a295f7e336481365b782d5c7c316c8635607d2d607e2b5e7c325b7d3560 *7f36587d2c4b67265f783666833f658139587c2e5d7e2d6180365b7f2f5a7e39667f2f6786406a *87336d843964853d637f39637e2e5d7f315e7e29678644648139597830637f3360884964844360 *7e385777325076345f75336d7c2d5975305c76326079355d7b39597b38668435637c3051732d62 *6f28577434507836536a275a6e2b5c772b59702a51742f5c762c49662e516f2b5064235d752e5c *6c285169234961234c612052762f57732b546e2e5569235b752f496d3150601c5270274c6f2252 *6a264b5f1e4f652147642252743e466626395d18546b2a4b65204c611e4861285773305c783f51 *6e294a61234d6c2b4a67285b773c5262275d692f526b334e682e42602b43581c4d6a263f5d2132 *541d4659214c642547692c4f6a2b4365274a6b27486a23516e284f6726506e2f405e234d5b2143 *5f284969294c6a244964223e6026415f2446501b4b602150662654723252702a4b68234767263f *551d42531e43571e3a4b163e5b2248632a4465213e5b20425f203b511d3b481834511b334b152d *4f1d38511c32561c3b5a1e2d49132b4f1a315015365119374d1a3d53202d4e17475311425c1d30 *5319394a1d44451835461c3c4d1a355c2334521f345e1d495e10314b152f561d37522138552735 *5221365c2235511931541a506a2d3e5a223f541d4456203d5221445c23465b22364f1b3d561b39 *571d25471635471a3b4d1e3a5321304c1f3f502086a479bfcbcb4a7037447036416e3b3b632c43 *622440692e3b652c356131406d3642642e376c3a3d6b2f46692f4c702f537231446b2e3a723335 *602e3a632e436a2a3b6b2e3b6927376329466930466b2e3d66333b6c3c376331456e2e38672f43 *642441692a4c6c34426331436c34476c30426f35476c2d48723842702e3b6f33496e373d693a3c *6a2c4072374a743846672b4b7336427031496c2d43692d406f3243652a476d2e406d34456d2f3f *6d3e4261264f7433466e36457038456d30476729406f314d754042702d426c31527531416b2b44 *6c32417037426b33416b29406b2d416b2c487736466f33497b43487134496e344a763e557a344a *702b45732d4579324d77354574374778374172403f6d39507f3c4b712c547c2e486e2f5070264e *794249773b4c7a4052783f49793a4a74304f7e314e7a3358783c4f793d4c7c4151753f527c264f *7d405486415d8138547f364c7f3850804153803e587f34558041537d365b863b5a87405c7f3d52 *80405c83485b823f5b83425c834062894465853c5e8e4c5c7c36517d3c537c335b7c2e537d3352 *7d32537e32547c375b823b5f81324e81425882355381354c7e385d7d2f587c31517d315b7f344f *7635608143427738487e3f5382315c8033527d3456853b5a863b507f304f7c38527e3a51823c54 *7e35587e305c823b6485335b7d44537b315c82335f844559813e537d31598240557f325f823658 *772a4e762f5a823b537d3c57823e5f853b53814050853c4e803353803f526e274f7e3353824554 *7d3a567f3f56772f4f792c5f843e587d4050793c4f722c5c803c5a803b5e823c57813663833c59 *7c30537c35507a3c537c32597e3361843c52843c598437578844507f364c7c38577d3161873b5e *81325985405b843b598235578c4e618b3d698e425f884960884662863c5f893f6086355a863452 *81325c853b587e2e597e3c4f7d3059832e648d4662813b5b812c56813d5c843b5f843060833f5f *853b5c863b58813b5a84415c84355b843660843256762a62863e5d823f537e334e7c3158853a5c *802f49763355772850782b4d7f34567e3e597f38568036567e2c5c833d567a2d4c742f49772c59 *7f3a517836457d3159823f6682415f85394f83474e783c537e3a5c81435e813b5f853663812f5d *89415a863e5f82405d8242577c3d5c75315d84405d8434608133587b325880385a7c354a78364d *79374f7d3c5e89425680315d833f62833d68863a59803e5d8234588344558038557f405f83395f *7a3b6a854259803658853b58823a547e335881405a833f5e843c5c853e598a4d5f873d58823952 *7e3353793b53813a4f83415b853950803357762d5b7f325b772b577825567e3f4b76394973324c *7027547829507d3154792f4b7732597b384b702b4c78314e7a345175334a71275075314d77364c *702b4f7431477039446c2b50772f4a72314f7b33547e3748772d53772f4c782b5075294c6b274a *6f2b4c6f3a496f26517e3d4f742754702d48662342732b50752f4e742a56833d527528466c284d *70324d702c4e6f2a566f2a4c6a2142702d496b27486a224f671d4673284b752d5a7c3548712652 *7830507825527a2a5c843a64822e5a833e5c7d385b833d587d28537c315f773a5b79315f824263 *884061834261833f5f8137638f425c7e3a537b325f863b5a853c5f8439597f3354824256803f60 *7a39577c2f5f813b66873a6c8d475b89465e853d5d864357803e5e82376c8e40728d4064863f61 *84355f823f60823d5d8137587b2f55792c627a325c7d2a5f80285f80305b7b2d527a2a5d7b2c5c *76206281275e812c637f265d7d2a5071265d78214e6e2b4f6e2f5c71205e752463802b5f802d65 *7f325b803e677e306780386e853b5c813b607d2e587e2d6485396480345f7d2a6480356d843766 *863b647f326284356786306b8a3a6b833564813b627f356a843c62833a5e7d2e5f7e3060792e60 *77245f6e264e6e2b50742c4d6a244f6c275870215776224d6e1b507325496a29506a234d6c254c *6b255c7c31536c225d762561812f607d375d85434d6f2752722c52763c48662848692e54722948 *6c2d41621f3b65213e64284a692452702e4561214c611747601741631b435d2142591546641d3f *571f425b17435f1a415d194a6017516a1a546a1f49702d426c2a436026516d355a752f40591e46 *5a1d4a651e4e65273b60234e5d1b465b1e47601d4364214b652340571e4258194a601c46611e48 *632045691e3d5812455a1842621f425d1c3d53212c4a174359103e561c395c1f3d581846601a46 *5a1948621f475f1b4f732e4c631b405919395a1b495e1b456120526a2742601f3d5c1c42682640 *5b25355e1c34521f405f18496826425c1737571e39521a35521e3d541642561c425d1f3b572045 *651e4865234a68273f591e4a54143e5c21436622415f1f37591f45632340591642551c3c531b40 *60213f6221315820385d1d4157214d5a1d4d5f204c5d2387a479c1cccb3b5c2e325d3529542a4e *85704b662c2a522a28502421502a224d2e1a48242b5e36376533396630315e2e33602e2a5a2930 *582e32673534623336673034662c3e653135653d335c2e376435306330305c343d65323c673138 *6933386637336636386635326230336132285a2f2d5e3240673035673131602f2f612f33663643 *6b33416f352c632b35642d31602d446933375327335b313a663a3460293f6430436527426a2e39 *643439622d3a603342683742683444692d43672e3e65323d6731436a3140692d4469383d6c3241 *652b3c6a353b66313c642a37642c366a3440672d386335446d36416c34487130486d33436c3441 *6c2f406a38416d3848794042793c426f3a4870304871404c7335436d3f3f71425271385279354c *7c37497937456f354d6f3748702b4b7b4f4b753f446d3744714047753f4a7537456f3c4d6c3c44 *732d3f70384770393a6c3a417445427736467a374a743553815f84a27e5077384d7e46597c3f58 *80445883435e83415d85455886454d844e577e435d864d5d823f5c874460844353834451803f5d *874d527e3e4f7d485181425b81464d814f577d38527a30507d364d7d3f497c415683414d7d444f *7e414a7a445480425880434d7a3a537840527e3c567b3f558240577d3c57833a567d31587e4355 *78335f813f517e38557b4056813e5f88434f8341507e3e5a7e3c5884414f81405c844059823e5a *7f3a4d793a58812f5c843c5d813b507c34597c3e6284445981485b874e527e435c7d425074304c *7d434c733350753143773c4576354b7c4250792e4c7c3f5777325176324c793345773a4b753a52 *79415a8344577e40567737567f3b4f773642793f55783a527d444f783a497738577d3e4f7f3b4a *7837537e40507f384e7a3c5281375082415b7f3c5980344e80375081435279394e7a3d587d3353 *83485580435a81345e85496386406085475884435c813b65864b5e8541587e465c813b5a79325b *81445881465b7e3d5c7e3d5e83385f89475886405e833f517c3f4f76334e7c3f4a7c3d4b71304f *712c55793547723548783546713a4d75414f793c4a7739587b3a517b3a4b773a517630537c395c *77354e7b3b4b79494a772e48783d5b83484f793750813c58813356762d527b334b6f2f517d3d58 *783b5580475881425e823f5d8145537d3d547c325e844358823c557a38577f3452783457813b63 *7c34597c2f567a39527c3a537939567e3b5f8538597b34517a345a813758813a52803b5c853e5e *833f508035578a44577b3b5c81445f80395c813b5b864a618e485382465081484f7a365b7e405c *7e3957813f507c43558140597c2e577e3a547e434d7f3f558640547d4158813e487635527b3c58 *7e32598139547f3f517f425b83445f82375d8238567a354f7531567f3f537d3e49783b557b3854 *79345b7c2b50792b507e3946703045722c4a752f507831497831486d2b53763e49712f46723a3e *693145722a4c722749732e4e733351733056833d4a73335677335d823e587730567f42587b3e52 *7b394f7b3050782f4e72305b742c577f43597e3a537c37587833557b3a507a31537d2d53793b5e *70285c7c3049733b4f742e5c7b38587b3055813b5a7c345772285b75255a7e38507d3152803e47 *733353783a5f83455e7d32587e42577d3b5a7833638142587f4a587f3b5c753456772a5780335a *793453752e5c762d4774304c71284b6c2d466d294e71274672304c66294063274a6a274a662541 *6028416524456a234c69254d6a2b4260254467294469334771354d7b3649763456803e4f7e344a *79334f7a3a6183345986485e813e61813f5d823861843465802d5d742b62792a5b733367722a51 *652250742b5b752a5770265b762e627e38577a2d5c732b5a722a57732b6381355e7d2a587a2f63 *7c2c68843c5879315c75295771275e7827597d2c617f345d7c3267833e68853f61883d5e834965 *844758803b5c8036577d355d802f5f7f326477285d762e6289405a7935518130577025687f3566 *7f2b64873f78904861853f63793d5c742a6e823c6082355e7d335c6e2e4b682a4b66253a582338 *5722495e224f6c2a5160225669264e601b476420445e22516e294361274767254667214e6b2945 *651e455c1b435f1e42611d34511b3c62284e732940581d435e1b32501b45571e3f581b47621f47 *5d203f571f4868254a6d285169273e5e23435d1d335c1d274917314e1847571c3e57244a611f41 *571e49672d406126425f27425823405c243e5528375727425a1d3a58243b531c37571e404e1941 *4f1f3b4e1d3d5620415c214f6023465d21475519475820516221425f253d5f204769254962213e *6522416633416222385519385d24425c20435d22314d1e41631c30521d30561e3f5a21495b244a *6f254c742d476d35445d223a4f1a3f4d1d3d4b1a394c1742541a445b1d4561223b562047652a4c *5f20465f213e58253d4f1e45571d425c25435827445b2d4a59248ba480c2cacc2337201e3f1a17 *31132138111d381a1c391632491a1a2a121a250f1736131e3c0d194315234c2723421e1f431812 *31101337131d3f151c4014113e141a381116310e1e41102c4b242c50261c320e0e2c1612321014 *2d0702150606260c0a260a151e0710330b0719040d230c0719021e3a1315390f183f1a2e4e2428 *44181c3511152a0a102c0b1d471c091f06102c0c031a04000f020a1a07203d162b431a334a2420 *4416294e261f401d1d390e1e35122e521e1e4520193c121a481b1e4524173611142c0a193e0f22 *491c284d1f2c4e2137531a37602c244f1b1f4f212b522628552843692c486c30325c272f5f2a31 *5e202f5c1f2857222956262c5c2437632c4061264166294c6f2d42702b40642a345b313b622c2c *5c274f6d293f6c3743682e4b692d4c752f3f602f3f633444642b3e662d426d2e406635436b2842 *652e457136456d2d436e2f416725476b2f496b2b3b683e42743f4b79424a77334e773748703151 *7d3f5780414b7a3d537d3c5a7f434f7d364f7f3750803a4f7a3a45763c6281354c7e3f4c7a415a *854654813247803d45762e4e803447783e5a815253803f4c7e405a7e43427440497a35507d3e52 *7a375779364b7c42537c355d814051813c50803e48762b4c743147773547763a4d7532496e2f52 *7c3e507533577c30557b2d467337507731537b394b7c39537a31547b35577e3a4c732a60813356 *803e67833d597d2a58823b57833f49783c587b345c7d3b4e7b305178294e7a2b5c803a5d803b58 *7c324f7a3a4f793d607e2a547a365a7f354c7930567a345e7d35567e3753763e50783358803c54 *7a2f51782c5c7d3e54793f4a702c567c384f763f4c7d3c54823c5c7c38547c335f803a597f3453 *7a39557b3e527a41608335547732567933527b2f58803e507839557830426b334f7535496f2658 *803c5983405b7c32587e425f8139517d3b5282435d7f345d843d67863862873f5681416087405f *8437637f345f8540668a426187455e85385e853f5d8230587e30597c3362813f5d813a6084395c *84385f83375780365c80336189435f863d587f3e5b83346188395479285f83385c81335c823a5b *81355b823f5e7c324e80335a812e5781305c833f5d82435c8b4a567a325782335a83415b813f58 *8234527d2c577c2b507d345c81394e763b557835567531527c385a7f35557e334d7a30547b325a *82404a752f4f78355984435e843b527f394b7b336281335b7c30557a38598543587f3e5b813f60 *7f2a5b862f577f3a507b3b5b894765854364843e5c82406687405c863b447c365e863f60863c53 *7d3a5c823a58804464853e5f7e365384415381375c813a5b7d365c8040507f415d803d67863f57 *7f2d4b7f324a762d567b4051743a4e7a31507b3e5a7e3b5c7d36568441548349607f39577f395b *813d5b8239577d365e7c3e588440577c2f567a2d537e33617b315072284c7531557a2e587a2e50 *7b2f547c3a5d7b2d577b3d4e6f2a476a324a763b4d732b5375315f773356814057742b557a3453 *7f3f5080395075305b7c365c813e547d30517b26547a2f5e83345e863f5c833f5a7e3f5a7a3756 *7b35587e34517e31567f4157803d527a37507b39597e3a5b7b336183315e8643557e335079345f *803a61803b5f833e65802d6985445e7d36617e2d4f78306077265f7e345e753150722f5b7d3357 *7b315275325a76285a77314d6b2c4d73244f72315073305477364e6d2c4b76354a70264b763a46 *712c47682248672147672348692343632247662244642240591b2e47172e45112b3a0b1c2a0a1e *2c092e430d263d15253a0c1524042747112f551a37501a32511d3f64234367234d752a668d475f *824865823c6987476d85406a863c6c8e48647b335f8034627e3365853f64833c6b802f69823765 *813562823c69823b6582385b7e355e7d355d75295d76275f803d57782b526f295b7f3a5c7d3355 *792f566f2a596b28537428627c295c7d335e78275f8032667c3060833a6182325176225378285d *7d315b802b69893f5e7f3263812f6483345e7633627e3361844065803a5c7f3a50782d61782a66 *7a2e54752d4d6e2d50712a576d284a6c2a4c6d274b6f294567254f631a536a1f4b6b224a6c244d *6d285169244f6d2c4e6e2d4e69235064175269205b7822506c244c6b294d6f2b506a2757762644 *6526465f1d485c123b581840581a42601d42541e44622a4d6222425d1740652c4d6c2042692542 *601e4d5f1640611e3e5b1e3c611e3f5a174056133c54194556154360203b5b1d40561b3a501944 *5b16425e2141611e45622041571c37561d3b561f475e23466120415217405618425e2644632138 *5a18395c1f395b1e48621f4063283f5e224a6a203f652447641f3f64214868244767283c612442 *5f24425f1e395d203b5c203d5d25374f1d3751172e4e1d385621465e1f375d1d3852193a5a1f3b *531b3554173e5421485c244f5f25435b1c39571b3b4d1634431a46551b8ca17dc0cacb4f653141 *5829303b23292c1c37431f4656364a4923415233314c2631532b486339385828324d231f3b2022 *431f1d3f1b273019212c101f321a3945234c642f525f293b5d2c2740252840240e1c0f253e1d29 *3b160b140601030416200f2230172b4a22142b0d020f03020f03060b0010180405180227431b45 *55283654291c2709030901000f0600090110200d152b16040b090304051f271623331d445b2e26 *3e181d21111a230e182b0e1d34191e46171f4013051404010d00000d01051308081d0d25341016 *210b0b230a1f41131e45251e442308250f0006020319091b30132c491b1630090c1804172e0a0b *24070519040b1b0b142a0e233d191b421720421420441f265027234b1e2b4d261f481e163f1814 *391a0c280f0b220d0e2e0c1b32160f260b1b2f0f0e2d1015240c0e11040e16001d23082b421f29 *40161e3d18284214172a0c21421e17401a1937141b40181c431c2049232953223c63282d592535 *511e414f1b425e25345a272843122a3d122b4d1e274817132c0e11250d27380d334410304f1d2a *4f192d471a29461412380f285521264f1e294a153f5d242e561f244d1c2348182d4e1d25471d2c *4d19253f141c380a162d0b1d3c1029501b183f161b3d19143a191a451e1630131c43162d501a38 *5e1f32602134632d3c622837662b2a5b2e405c221f4719224d1b3d5f28305f2c3e652b40692a3f *713442693746722f477438466c2f4e7e334574344c7a40427635437033507a3547764145793c4c *752a46763c437c394d7d40568242487f424c7940577b324a78424b73314a7836497232587d375c *843c5c8441598137567e336584345f824054803950813c4e7a3e4c7c3e577e39637f385a81354f *7930517b2f5e7f366588405c833f58844257823e5c844c5c84495e8449608643527f4259813958 *84465f8240537a3c668845608140588034507f3e5b803e5675324c762c5d813b5276365b793a4e *813d60863f5a824c5c874c66893e6481385d8540597a335b7e345880395b7f325a81315783375e *81315a7f38617e375c792c4e782b5b7d335a8344527d336182385b81315d813c55803c58843a56 *84435b85475a7d3c658a385884416081325d823d5e84406a82346086395d854363883f69873e6c *8a41618636668d3f65833f6585365a8243587e3b4f813b53803c568235547e3358762f56782f4e *79315a7c34597928547b345c823b5b8544537e435b7c355e7c33587f375183496082375484435e *7c345e8540567f3360843d6083425582345c843560833062843f5583405f873c5a81345f854159 *83365f813b597f3b547c325d7c3b63833965843b5c7e335f803b557f38507f3d5079344f7d3053 *7b364c732b547d34577529507b3653732c5680325d78294d7b2f4b752d5578326083386180365a *7934567f39528341507c38587b324b7830537a324f7b3d597c3359813c50782a607d2d4e7e3d5d *7c3d537f42597e2e5c81385c82355a7c3957813964844060804057823f5f893953803f5d7f3756 *7c36557d3a6182325e7f3b607f3962863862863c5681375e82385d7f375a82375e863152843064 *8b3c618c3d56834159813a5f833e5f813c578136508340587f37657e2c6186435786485e853f5d *7d3b63813c587f395e853b5e80315a8031598240577f3a5e82305d823e5e7b33548232607c2f58 *7b4653722d4b70334875335676315d7529577939537734597b38597b3a5877404e773a52762e4d *752b4e6f274866254d6e214c6e28456d2b456b25446d2e466c284c783a4a66224c6d2c4a6d2b3e *622040692447692440602949702d4469293b582333491b42521d274a1c1e4115172b0717350d17 *280c111e0c040c01121f051f2e121a2a0d1d2d0e1a3c1c455f214f733c4f753d55793f70893e75 *8e45748c466f8b47698c4a7492506b8643778d46768b42557f4168843b6b82386d864263803b5d *80405d824763803a55732d5d6c2f5475345e7834446829547238597931647f315c702655722652 *78335d7d2f5d843d578034637f35688443517a395375276080374f7327567336486d2553722f58 *6f285274304e7a314c67265f7c365a7d38526d214e71295879335572284c742f5172264d6e2e48 *6d275173244d651e4867225678304e6d25597228556c20537a404f681e4965264f5f174f631d4c *5f1b4f67234c61244c69254b681d4a5f1d4465204c691f42642348682451682248641f4f6a244b *67215c782a506c2258793152702c4c6d2c52692a556926586b2b546d2a47651f4b6d24455e203e *5923365a1e3f531f34491c425424354f202f4d193d591b3a5f2442581c45683143642d41522943 *591e345521334c1c3f64283f5f214164244a5f1d4a6a27455e2235531f4264203e6023537d3d2d *461e2a411725400c3d450f25470f314c162d4e122a4b1c2e501637562034531d3d581e34501e46 *591c425e213b5c2336561c37591f3e581e3d5b233d6027445f26435c1e415d228ba87dc0cbca5f *614f443b23384c3d304331405c2e657246454d3d505038404e3443503b5360522f332c3b455023 *3b2d324c383b4d313b4a23374a2d253f23495333424c2a5d61484a644b1120140c1a1220241037 *2f1139421c17170520260d404726324c212e3e272d3f1c22280c1a1b09100e0507130b16240f43 *562b434f2c2a321833351735360d0e17080412072735102a4420274824484d283241223f4d2133 *4a241c1d09020300060501151d0f173322344c301d371d12240e1115050a1b060513062c3a133f *4a1e101d0a050c0923260e2f310b150c01090600090f002935102340192748201121100c17070c *220d0002000000000412080b200d0e1f0d17260c1728141e3a1721401f23421a1e411606290b02 *1a080007020003040324110f2b10244723152b100d230e041405142211171610020a08101e083d *391626290a263a121e461b1332100f2d0f13280f0b19090216090d1504132a0a1d3c1518351310 *2c0f20421d244a251a34190c1f060c1f080b1f0b162c11294c21294417283a0f28471b22421d28 *471a2c572434431426401600160514371a0f2d101e471d0c2e0c061804172c152948171d3b0d21 *461826461d1f3e1e1f391912290e1833151c2f0d071e040015051c3e1c1231110d2e0e17311011 *2b091e4110264f2012390e1b3e181c4319203f191c39110d1b0729401e2f461543521d2343101d *3b0f07250805210c112a1027391a3b54202c4e1b2d491a224e1c18401a1939190c351d0009020b *1a08290c011d310c152a0812360d21471623481a1c3f162444172745161b300a000401000a0312 *30151c431c255023224a20234e2227491e47652928471d203617234a1e43672c47653249643626 *4926123515173f1a2b492a2e53233562283b65313e632b3767313a6e3647753f4a6d2f396b3732 *61292d693c40722f4d7a3c4c803f5782484f7e43587d3c4f793d587c3d5880305c813d5383425d *80435d8145617f3a64844060803a6180315f7d38537d3753732d597e3d56752c4f753250773a50 *772e5a7c375580395b7c325c7c3f577f3a527a3f5372395a7e3c5a7c3a4c76364f7b39587e3c55 *7939597e30577a35566d2c608436587e3562813e5e853b5c7f3e62854254763e5e83435e85445d *844162803b61803b65843a5f86455f843a5a8042577b3e60823d5d80394e7c355d782f597e3654 *80405e7d33567b315879365c803b648237587f3e61873f547d3a5a81415d7f36587e42547d4765 *7f385f833d5d7c355876346077354e783255762c5e81355f7b3462824260843e5d843661843560 *8c42567f325679345478395a7a3060803b66863f67863c5f8541597f345d824250743856814154 *762c56793651753c567731446d2a416f2d5a75335d813b5a81415e803d5d80365a7f3b50793251 *7f444d7b3b53773a4a73325a7f3d5d7d3562863e5682324f803f4c7a3a578134597a325b80404f *762d4a74385375384e782c4f803e587d3161813b588a43597d3c587f364f813950783b5b814057 *813c557b36537d34637e405d8142537d3b5b7b3457793b53762a527e33547c2b517e3f5f803759 *7e3d5c7c32638438537d2f5d7f2e6381345f8041587d4055793c5280465980406d863e4c76345c *78326085395c82425a7d3a5f85425a814365854165812e597e3a587e345b81395883425d82435c *80415d833c5c7d3947732c53792f48782f53782e53783e57773c51722a517d305876305971284e *6a23496f33476c2d5372304a71305776364f6f324f6c2a3d662a476326486827476b294c72364c *743c4a723b3e67273b652b3f6c31406e2e4b622742642c3e612f63793d40612d2f45182c421526 *4012202e08162407132107121e06071105060700060c01040e0111200a081e040311031116052c *32142d3217303d19303e1e415e2f537b44618449517d4961823f5a81416584416c863a617c3266 *813861803364832f65843f6487485f7d436776356381435f7f3952733153752c637e34567a3060 *792e57783b647e316a7e2c6d7e316b82356480335f7d3361834169863b61793a627e345f7f3664 *7b26587933607e3c5a7f3558783350752c567234526c28556e23556e215072313d5d25566c2946 *6b2844662c476216496520445f1c4769294a6723446b26516b28536d274c69244c6a244a682345 *6926435f2446651f466423355b2c436223435f24425f1d44621d506d254065264a6d1e486a235a *7d2a4f75305067335362224e6529517336305a223b4e1b33541e405e1d4c6525455f223e511832 *4e17314714344c193f531929451032561b2c4719374b19355115395a18244e19274c172d490e37 *5b1941611e3d511e3c521d44581d455f233a61233f5b1c37662945672f3c602943652240591d46 *5a1e445d1e37521a47631f3f5f1d405c1c3a5c183a5b2440541e374d21385b192d4d1c244b1537 *5519385d1e314d10304f1a33501734501d31552322491e28471030521b364c1b3753247c9d78c0 *cacb34473729363127251029252b4a50454541372e352d272928263c2b42341d3c352d303c391c *262e2c363d3441402a342718231b13200d090c04404437443323504c2c22230b010c07040f0828 *32283a45242524060f0400332816505222314a204a4d28322d0f2b290e2a2a142023082f2d1a51 *4c235d5e2b372f0e080b051c1d0b111a051514011416052537174050284a51204f4a1f3d361d4f *5d27222b0e1616020200000500001b0f0f181d0c22210b180e04110e05020b0209130629361641 *45212f3b1129260b23290f403e183e300c39451c354218383711444e1e2b4719243b1c162d0e0b *1b05000800000300020400070c0817150320240727310e354a1f2d4d222f411b243a181325120a *0e01040400000000000700061403041f0610250f1414050a1d0b1a240b1a3a11152c0b0e1d0724 *260c2d310e2d391b4b5a25293815293d0b232a0f0a1c0a10220b1f3517223917263f1712280b17 *2506232e0d1c2f0a212f0c2434130d22060b1e041a220525371451612832441626350b2c461931 *491c475922475a1a4664291a2808091601142206223f181831101225090817081c210825370c32 *491d435025425b263c410f1d1f0a0915030514040009000000000000000305010509010c16030f *230b121d081a290e2b471c29461429451d2543182e4d20264a2113200517311321441d223c180a *21050d15000b1500102504244d202d481c3f5721375d35204517162c092d3f0e2640160c240801 *19040719040f35180822080a250c172a082039083d41152b572521491e091b0602140800000002 *04000e22000e1d00272d0b1c2205304a1f33552d1b3c16091d01152f09263b0b3f5422455b213b *5222212b1307160b061e091a320d3651212d4a1a335321374e1d294018152e172e4f29243b180c *1301071100030c00101a052835130c1e0d24290d33421a203d0f152d0a2f4e2442622c40592143 *4f203c54252d3a163c59245560266582474768394b5828545f28466a384b6b37517238556b2e4c *702b47703a5a7028536f39536927446d2f49713b496f3b496e364b783e43753f426a275c733156 *763a4c732e50763a587942577c355c813e698336607e3a547b3b5d833c597a3559813b5f823661 *792d5f762a4f813560772a5c81405e803a617d365d7e3d607f3e5f8343597b2e54752f5a7a3153 *742f557b34557c345c712d557a315d883d56813b5c7f39547c3659772e587731547831537d3a5e *82345b7b2e5b7f296086356a812f6b8238718a425d8235648d475e8a3a688c43678a3a5b7e3458 *7b34577f3f61802e64863a67853a5b803b62863c5f833d577e2e5b802f6b843965843261813365 *823e5e7f365f823557833c5d84415a7a305c6e295b6d2d5b7c375b7e2b62802e62853e5f843e6a *862c6481375f8137567e3a5c833c5e823f5d82345b782a62843b6184385881395f843d607a285a *7e41597f385b7833587e355c7d315c78295a7e324c7734537a3a54793a54782e587f3c557e3f53 *7f3b55793154722b53712b4a742e4e7a32527b35527e396180315a803e597f3257782951803f5f *80345b7d364f7a30567f39537c325e88435d7f356a863c5d853a537f415e853d5f84435f823c6f *87336683406a8b475d813a6483335f85316882285c7e345b82376281345b7e33597d3861863e63 *8c426c873957843a5b874658823b5b82396181405c7d2e5e81345277335c83335d7f32607d3651 *7a2d4e732954773a4c753250762b5a7e32597e4152763841672d50702a586e25576c285c75274b *6c28516a224c6e2d4f66263b642740672450692c475d1e3e5d1d3a5f1c3d581d405d1d305a1e3a *5b203d5b203f56233d571f324a1d374717234414242f12222e0a243d081d2a091420051e25051e *290b2d3b13292d14131d081019000d19040e18050e0f020d13020515050514060c220e19381118 *2f0f31531c47641f5a7536617e3e658648678450718e476485415f84356685335b7d316d80315f *7d2960803e5f7631587d3b507632598035557526617e3b65803e5e7c2f586b2c607c3c58772e5d *7b2e697e2766782c62782e5f81375e7e37587a3358793b4f7c3959782e55782d54762d55783156 *73245471234c742c46662148611843602146661e4f682246601d466522486a2e4d6b283d632343 *6a2245641d48671d475c1d4d671f445f254165253f5f1a4c6f1b4f6b1d4d6c213f5c174965224c *65203e5f2d414f1647531e47581c445e1e3f510d3b4b103c4e194b5e1f4462224a65204c601d45 *5a1e3f5d143c5f19304f173a50182d4b1840601d485f243e5d1f334c0d345d1f3150193b561736 *51183e5f1f3554183d59213551203c5c1a304e19415b1444591e3d50174158113d4b1642562131 *5016455d163e5b212b48173d51183f5a1639501d415c1b2f4e1d354b123e5d21395c1d40511139 *4c15374e1533511a324e152348142443102c4d2128491325420f2b4416314b192e3d162c431f87 *9e79c1cbca2129280d1b23070f162f2c30372c1d29221a131b1b2518183a4043442d1f362a3529 *2c28141911212025182f3b10100f0e090b0b0c030000000e1d1835351d0f160700040100000000 *00040f1116050a0e0201080c0c0a2a311a262e13161c0f2f2e140a06020509040707061f160c44 *451e454a26544d24202c120603000300000803011d190a150f070d090536331348442158532948 *45212d2f0a130a080509070000040000030f0e061110031816040706030000000000000f0f0a19 *130a161e102b2d10313f24484a1f444421363117404126454b2a4243263d4e232834111e391817 *21111929120e1e0d0d200e272e0e1e1e0722300e363a174c5a295458333f44222d392c40462c22 *281d1e1d10010401071607081e0d21341210250e161d0a312f121d3015283b1e3a4d290f280f24 *2a112e2c103d3f1633481f464a2531401a2a3d1b3c3a161e260e22240f232813162c130b160508 *11040c1c0e1418080a1d09131f082f441d2c2a112f391625371628391d3a481e2f3f1334471f4e *672e4c6632494a20425733434c1812210b17230d21391720421a28411e2b401f33471d2236202f *451d40461b586c36575e295c5524181c081114050101000507040000000000000000000000000b *1f0d2d3e1a2c41192c35184a5a2f24401d213b18081f0a1b4120173c1d17220e2535191f3f221f *3216091c0b182f152d4b2332582b33552a395426586e40404e203949223b532345532c42441d0a *18070516030311021221080b1a070c240d07230f1d310f373f1a17270d20321207140100020000 *0000000501001505111e0c2e391b2931131d2e09283d11212c0b1e2f131c371b172b123d512742 *602b26431a161f09091507141a0712291523421f2a42242143251430180110001f281033401424 *3915021506001107000c060e240e2c381021220c2b2d0d202e09181e0a1c22113f58353c4a223f *512050622f404e214f4c21595827716c355b623f3f402a3a3f28454c2b43563c5f6a4664703d62 *663858593166613058623a3747263238171212071e1a083c2a0a1e1807141e09161e093832125c *4819453e1847401c35421746431e474e275863324c502c4a572e4a53244c50203f4d1d47592935 *461a5861316371324e5e2e74865c4e642c5c652e4d682e5c7245405a2e516431405b2d4f633448 *663f4d764a49713c53794e456636395c2b335e2d315c2e2f5d2c35622d3b632e437230476c324b *6e2a55692e6180415a7a4059793e67793c78853f667e356d803c60782b587540577d434a764040 *6d3d4974354c7732597c365e81404e71394b7035507d3d4a7a3c4f783a4d7c3c5784335a884162 *8132537a355a7a30557a3c4c75384a7732548140548340537d3d537d3c527d3f5a7e3e527f3b5b *8340507d3b4c7c384f823e587e3f4c793d4d783e58803b5579385085485b813755844056853f5d *844358803f597e3d557a3a567d3a667e3b56823d5d863f5c7d3f57844253762d5a80344a793b56 *7d3358773c47773455752d4e7b3d4c6a27466c2e456e2d4d7535416f2e5478374d74354a77314b *773a4b753c5074375678394774354a763c557c3e567b3e4f7a364d7e464c793f567a3b587b3c56 *793f58783c537e425a80425b84405f88435f83425d7d39527e425b7f3858843b5f813959823c61 *86435d844456814c55793c5e813d567a3a6285465f7f3b547b3c44702c4a733646733153752e53 *7e4251793c436c32457334476d2e567c3f4e743953763f547b3e597f46507f414c6f364f723b59 *7944597e4154772e537c3346662654702e5a783844652e446d2f49692d42642b4a6b31375d2933 *5e2837561e3d551d3d682f3d612a3f61272e5b1f405f273d5c233757223a58233c571f20431630 *4e162b4b1a26390f1c260a090d03090f040d1808071107232c1122280c0a170501020000000001 *0301010400091909020e050510040f180520260b24310e1113050713040a1d0a1d350f1d3e1c31 *60334370344f7e3e527b405f81456b833e537d456581415f813f5b793357732e5a77304d6e2d5a *7e3c4d6f3354783454763952743350722a49672646662b446628486e2d4c6b243f632747703141 *5e214263204a622048621d47672249601c3e5e2646672344692449692b43632046631e4266234d *6d214e6820496929436222436d2b4b6e2e4a69265a762d4c691f4f6b224b6724405f253f60223c *5c243d581e4365234864234c6720516728496b2d4564244e66224f6e31516b234565295c601d52 *7230476226436025496935455e23476925426723425d213e5f2445601c3a63233d5f1f395c2234 *512041602245691a3c5d204462224657223e58234b66234d6222426222335d213d61214c601b43 *5e26466025485d224d692e45652341682a3e5518394e1e3f591c3e59182e4f1a3451222e501d35 *532035501b2b4c1d364e1437551838511d2a4f212d4b1c3c4d1d4a5f22325c2032541e2f502230 *4f1b89a17ec0c9cb1e1c180b060c0c02091c1916352a20121215100909191a1d2728213c292233 *1f1f4445401d1a1d1f2c2413202324201a212737060c080e070a18151428282703050400000000 *00000000000000000100020c02042f1c132116090c09030a03032a2612030000000000180f083d *2a1f2a1f0d47391b322f160b0e0207090701020201050a050300353a282f270616100a210d0829 *210b1f1c18110e0d090000080100080000140d010b1d0900020000000000000200000002000000 *00001b13051d0f070f0f07272618352c13150f082f1d09211307342c0f160e061d201417120b05 *070715100b23221231472b414a2a424122444e2b44431f5c4e246a6b454f5331322d1e312e1c2a *311a27230e333222212a190e280e283f1e515c344d542b504c21414323464c294a5232524c3a3c *392345391760542e5c57264c4725504017261f0b2a0d09545128483f21424426343a19171c0821 *2510393e1f424a242020062120092f341e414522615f324d4d1f393a134136164e431b4a531f55 *5b286461335c592e6850225c50205758242f391a393f1b3a280c3e471d42471e2a3d1e43522f4a *522c505a236a6331726f3d49412547432626200d382715211f07171d0414170109090104040106 *0d04252d152e3117404c28615d2c4f5529263414111804040f06000503010000332b113e37183c *38103c431a2f41193f4523475c35526c3e405029474c25524d1d4752295c68333b3e184241252f *30151b1b0d0e13050a12091a301006260d11250a18210b444f20373f1520250f383a1c07130800 *07000207000706011a17043d3413474d233546203c472049562a3f4a25405d3541552b32431c36 *4a23212813060605081d1212200c0a12030b11053f4d3141441f363b1c1e1e0d0812082524103b *421a1d27081015051c1e0524320d3e481e4f4f255951304c532c5b5c264853214a4e2158622e4d *5829606430646c3c626136706e4a6357297d6a37525b33484c263e24134d3f21504e2b5d492565 *66474d49294834194d431c35250b201a0d24200c110a0419090030230708090014210a31361d45 *31105948214c471f2f22092727084b391b3b3d1838250d361d0c3f361f443917433a1841431f50 *522e2a2b105442205747294430176344274827103038262d1d123c2f1d1e2117423b262e211a27 *180b301f0f4347341e1d1637413423231a1313070c1009050100090200100a0716180e0e100d12 *120e211a0e5b53375544255d4c2267451d79693d8677407875477964335a491c4a390e4f49322e *382b160f08393d314947295d4f2e5d5f3f3f391d2d371e2b361929260f201f0c0d0904221f0c21 *2e14373d182a3413091f08080a02060b030f1005020802080903090d0400050000030000000000 *000009110a1a2c1a0d0f04120f040003020007060a17091d21090d14050f1103131b0425401845 *5b271c21071a290d1928110d1d0b243a1a41532d3744203746185d65363942203e33193d532b37 *401e405b295365344b5b2e3b4822364f21354f232843273954282c47212742182c4621294b291b *3b1e1a3a1b2e4b2a2b42212c431f304b22314a272b401d3b55332f5025293a1a273f22263e1b22 *3916264021243c1a22401b203a131f371d132f131a3f1d1a3a1814381726481d1d42231d381824 *451823421d344c262e47262e451c192f0c243918273e171e3f16173f191f431c1a401e17341a20 *3c142443181a3014122b0d192f103c582c314c273b46213951292948221f3c17263e192d37142e *3c1e3c4e22334a24344f214059244a683347662f4d723c57753b516d2d4c712c5c723154753b4f *6f2b486c2d52742b4b722c436924476c3b47682a436d2d436c344b652b4463253c50203c561c30 *5822435f24425c243f5b233a52223c5824426022405a243a5128263b152d391020280922260d12 *1d08101702171d040b1103101b03151a051618082e321b211d0d06000001000003000000000004 *0000000000000000010100030e050c14001421041c290c2c4c1c476525496a2a43602950682b46 *6936436a285975295c7432627832607f3f58793851723552753853732f49651f586b22576c254e *6d354e6d2f476426496c2b4f6a254369223f601a4a6922546c244968224b66244561244c621d44 *622b4c6f2357651e50672643601e425d1a4e63244a671f435b1e4868264462244b62174d5c1a44 *58184e65223f5817415d1a50641d4f641e51702c4f6e1e47611d52712f5069274e65254b692b45 *6323436522465f1c3e581c354e19364e17475c1d3a5d243e5b1d40541e3d5e1f3f4e114862203d *62204c6824486b34476723476220485f1d4d66213e5f20556c244c642337521f475a1e3f522042 *5f27435521335d213953163e561d32521d3b4a1741591335551a3a5615465f1c2d52193e531845 *501e384a1b384a202e3a1737502436552336551f36522236561f365023405c243a52213a501f3a *4f1d415e267fa47dc0cacc1d1d1910170f070f0d0d190c0b08061110080904000203062d2b1421 *2e1f2b2c313e3e4530322f18201f282110272f2e0d1116172537161e1f08040000050000010000 *00000000000409030102000101001719091110050a1107080800060502130c020909060a0f0419 *1607150c05090500382c0f1a12020306000003000005000000010001000503001113001f1e0216 *0e021d1000100e02120d010c0e000e1305040b0208060000000000000000000000000000000000 *00000000000915010a1302040300271706231603120b0024200b282d1e20291003010007080019 *16000406001412071d180b363b243a31233d3d304b452c4843246b693f655c3f4e4924392c1a36 *2f173b342c2729262e3b2a3f38183f3f14424f37424d2e433a17504c2f24200b3a3b1e3a300d3c *3f153f230d54411a5d4219554f27473a1a43421e2d3a141e1f044a4422554c29504d293f2c102e *1d08493a165d522a4e602a393a12434b185550236865356b642f5a582c473e1d7665316a6a3562 *5b25635e276458226b4f1e796e27644d1d6c56325f4a1c40260a7857276f6c3f5a561e3b3c1765 *6d496681556e6e447578387e703d322d0e3e371b33300a2b26102c2c17424824424820252e0920 *2c07253e153d461a4c5826362b0a505230343f1f183113181e040418050d1d07080a001d1c0546 *340d554b252521133536124d5727616b3f4e5728293212200a042d270f52432142471e40320d22 *2005171900080b07120e00191705111c0a080b05191d08424b195650214e480e3832153e3e1e1c *1f072122091a290f414a1d4b4c1d6065325c76453c4a23476031484828505531414f28344d271b *2c0f2337161a2e190f15040a0501141b08060600111b0b2743241525091f2b18292b1422280d25 *260d2d38152b320f40543151643d56723d4f5933616b436a633f58582d5f6535656f32605c2f58 *5624525d3c6c673d4f4323766b357a7e5b646c505c5b3b4450323a381831401e454c2948391266 *5a2d5c572d4440243f371e3229161921091a20041d19021a1a031b1d0731240e1412031f260a54 *532b4a461542491f3b2e0a1d1b052d1f092e2a0d212a0a2c1f062b2e0d414222312d0c2e230b37 *3f333c2e1c261f0d422c0e2c2b11301f0c423a16301f0a15140a211e0f24211c141209181b0d12 *11051a1f112426170f170a080b0513211b1a2928101c11071307010700091208122518060e040e *1305121f131b160a575930554d29514724695a338a693b816032784f22734f2d533c0f4a2f0d28 *2c0f03060108080324240f404018384936543c1a434a2b263f201a24151e3822101b0b18210c16 *16082c2e1022391c1a291808040104070100000001030000050000000004100700000000000000 *00000100000507000108000a0c00000200000500131a070b12061b1907070d0300060004080008 *0c021323130d0800191f11101b02060800263117272a0a3b4316424f24373e243f461f30381e3d *4828404424273814424720213112293e1d1a260e23200b1e210d1c2515080a07090a040b1a1413 *24170311020d1406181806111a0a080f050e170a101b1017210c151f0a1318091b230d0d0e040a *130b1115120611140f1416090f0400090202040000000000000001050000000000000000000000 *050000000000000001040012170200000000020205090711130101070000090008090005070002 *00000206001a2b0b010600071400080c00263e132d2d0f393719312d101c1d0900000001000000 *030000030004090114190a24320e1b29171425111a25173e4f211f3615141b04291e073f3d1536 *401d445a312a4a322a4e233f6a27416d3b4e77395877335f7b384c692c4f6d334778394b6a244c *69214b6b2942692045662242621f46601a425a20405f2b486a2b426d25467130476c2c425d2148 *6029485d23363f12304919294414234111223609293909343b0d180c010d0b000a1a04111e050c *1401171500141c001213000b16000c1a010911011820090d1705141c0235400c273108252f082f *3b0f201d08253a1426290d404d1c3d57183d6922416626486420516f3335603245652a4e71334f *6f264d6f2c4f732f5378315d75335c7d2f67813355782f547b395b802f5274264c6b2743691d57 *77275671284a6b205871324a6a24486c18466a1d4f7225567e3164762a51701f4c681d536a2140 *5f1c506f1e4c6e2254701d5b72265e7e264f6c1b57702247651c506b1e335f224970274f6c2151 *66174966254f641a4a651f415d1b3f55194a661b4c6f2746651f4a641f4b67203d5a204865213a *602139611548661f4d721f50722845611c41651a4c611e4c6c23385e2745662037642444681e3c *671d3f5d2342652140641f2b4c113b541d345217445c213f5814405e193d621d4553182a4d2135 *5a223853103952184364212f4f172a4815344b143646132549182d4210344c1a254b1d304a1830 *46152e43123a4f1b82a07abfcaca190e1210171e0d0709060512050b120d0e0e110b070e0f0b31 *2625231c112f262733251e39352b2a20283a2a2132231e191a1d21212627374019171b0f080a00 *00070000020001040f16080c06030c0403190a0b1a160f05000200000009000013060105000006 *00001d08050800001604063c2c1114050103010000000002020000000002000002000106000029 *1d0a1c0f090d0302110b071a12030d030003000209010205000003000000000000000000000000 *00000100000000000a03030b00000906031010080f0b060b07071b1506130e0407020106000001 *0000000000060303050103281d132d261a4334243322183c2c213b40324b5c495a50394332262f *2b282d25273b2a2531333a373b34464b4c4751433a392f3f35234a432b56431e150a082723162e *261d3e25222d1d0f533d2d573b1f4b311142311e211205131109291715504424644a263a27172e *1e0e23180e453c215a3b1a4d33193013084326137c5f3f675c2f5f47234d4622431b097056337a *653b5c41206d4d22673b1b65411d6c501d693c188065325d4a2254310f825d306c5c355d4a2645 *472465674365664369673b7057267361321e1c12312f1e251f0f27241430311d5a643f4c481d2f *301a312c1d4b502a434525434b29382a10343b1e28210d1a0f0421241615150d11130d00000100 *00002529143233162e311d362311584b224c4726403f2a282d222c1d0d1e18065042192a200d48 *350f28140b21070516000519150f1e22141b1a061f1e0d2f2513524b276a6334757e52555c3631 *351b151c05262f13454a204f622f69633d7d74466861304b4f354d53354145234d5e3f272e1628 *2c1511080836341e342b1b0b0f0c0f190d2a37191513082d2f122e3a1e26281930342539391d1f *231e2c270b2f311938472b4f5941475133586c4453603f6659335b593b4959434f57355e60395b *502a5544294f3d1e656a495e4f3655563a56523563502c523f1d2d2d1d241e102f26173a311f32 *261e4a4022433c1c4741333725133124131e1002170b08101208190c0c181209352b0d1e1e111e *1d1054492c2e351825211517060a1308081e1605131606303216272110140a053729164d3a1a28 *201344462c271d0b2719042f17052b160c2e1d112e180d1a0c0a201a1315170f222a25100f0616 *0b042111071b1a1118110b160c091311100d0b0c1813061414080507050d08080f0b0d15080b10 *06031107050704051f1d0e443d234f3d194d391e78623c806f497157336452365347203738172b *2f1a1e1a0d0f07081002031d100f231810201c13424729171604110903080c07190904180d0318 *150a171d0d1a1d0b1e28133546301a1b0c1008050401010a0b0a02020700000502010600000000 *0000010000050a040c0b05020000050000000000010000222a12161509161a0a0709050c070408 *04012f301f1d231523220e2640241d230a282c152820143f2c185f643d3f41273837204c52403a *4026505241545f4a2a3a1f53443230371b211e16383b26231d1213130913121217161414161412 *161a1913100809040f0c070f1721131c2116171a0a0f0b0a0608110a0e1105071c251c222a2115 *0c0c0701010803051207030604050c130e030b0104090700000000000100000000000000000000 *000000010403000000000000000000000000000002020104020007090200000000000000000000 *0000010000070f00000700000000101a070c0f0504050317160645482922160612120806010000 *0000000000000000050905282a1e181910182016140c072921154044222e2c1f0c04032523132f *35251a1105100b050608060a0300141707181e0c272d18313b1f3d482b303f222d4320223b2040 *5a2c3d5d2c5569325266374a642d506b324d6a29566d3160732b4f712f586e29536428425e2944 *5e264361274a6c2a4c6a244b6c3548652b455f26455b234058263e4e1f434c1e42501e3347182f *3f0e2e39143b431b3e381a24200a232b13112508232a051f320c1d1d041e2c08293c132235151f *3b172f4624334819263814394e1b3f582236481a2e44192c3c1c364d241925190a040019160142 *2d0d1f1a0b111508191d111b2211252d13415522415d2841652842602c476b3d4b682e57763256 *753e5c7b354c7433516d30607a3d4c6a355b7535506829637229546d2a5c76375370275273334f *6a24506d25496c314c65204f6e264e6a264a6a2b4e5f1a536c1e526a214d6c26466d2c495e2150 *62234363264a69224465224a5f1b48621d485f1a4f5f1f5162225467234e6424476323415f1e40 *6120445b1d48621f4960184f672b43552137521e2e521a3c5f254364253d5f2641531c384f1e4c *5e233f64273f5d23425a1540601e4653193e56283e501d36541d475e214061253a5d1d3f5c1632 *4b0f44551847521d3b521e2e451a2939173545152d4c1e2d43122444132f4618314d20394e2042 *4a1d354a1d364c1c324b21859f79c2c9c913231608100e070e0e0b0d0c110809272a2412110d17 *120e26271a161a13332b22201e1326201134201c3b321d32221e1f22160e180f13282811110f05 *0a06010300050e0404120f1b13071d1e0f2f230d302b15242a14010c010007011512071b0f0610 *0f050602001e1a0a120900130701302b0e120f021b1a080b060006010003000000030002090007 *18040a0f001d1c0b1809021a1d0d161206050502070d0302080103080000000000000001000002 *00000000000000010000000000000000000c0a0000040003000001000000000000020000000000 *0000000000000000050200050300281e1b1e22121d291825291b2d3725353f39434a3f47422d48 *4a3353442a384443232216222e262e3f34404e413f42362e2d1d323e3a39301a463b211c1c0c3f *32103b290e443f1f22150b40331a58471e2d1d0927170d27271c150c001d18063c3f1637311438 *3b2834251a210d07301d0c4634112f1c02361c034b310e857248523e174a250f4d3f1e4d391e74 *612a745c284d2e0965481b4b280d623c20653f1a5a3f1d78522d6245136b4f187560275c481e4f *47214d441d4e451e605d316e622e695d2e5f58282d300f303610181a06241d083d4029444f291a *2a161e210a36451e425c3c38341534411f29240d23210e2a2e191d220b10221109170600060000 *00000000000000000704021c2819414227202408242a0a1721070d0900110c010d0705392a1418 *0c0631200d2114022115031209001e1f0a1613062121141c1d113f260d3b310d4a55271f26064f *4b1e1e1807160d04392d1750471e5a4a19675f306b6a3774764849441f535237575532524d332a *24142129141a2710192d111f2b0e1c26141e2d12394e34252b1a26341934451a253e1c282e1131 *411d2532102d2b144d593b3c482a4e54363f4e222d401b4c57354441205f4e313c433146402043 *4526513d164a4c1b4d4421514828524c28483b1e595b3d47422a48382a2b24152224122a30162b *240c25200d3226122b230d3a2b19272018221d0d1926130e0e030f1509121a1214150f1919091e *1f0a20130736492a162004080e000a0b001614051e25121410041e2115151c13191c0f231f082a *381a423d202e24131f1f171b1309281e0d1915092f1e0710100215160a1e1b0e16150611140709 *06001509031a10020b0f07080f040c180610130a0c0a03140d06160f070608020707000a150d0a *1b12030501101715120e05505038473c21443e204c421f5c472367582d786a4a604d2a473c2220 *1306171c0f0c12060004000a0c093a301e12180d1f1f14232a1d120f0506080406130e0d1e0f14 *220d12170a221f101c14033842203a4325222e180b140a0208030b1106080c011a241001020000 *00000100000006020000000000000506000a0f030104000c0b03343e2309140b1c29170d1e0804 *09001f2f133c4d2f30401d3a41203d3c192130172a361e1e1e0c393b2049582e4a5232332f183a *3f24404a2e4d5d43404a3b23261729401d1b23141116042b3a221e1b0b110f06121209080e0911 *190f0f150a0514090a0d03050d050901000704020d1418020b06091108000807030a0008030005 *030010080410110a0a11130a1111060b070511050206000c1e050f170709040000000000000001 *010005120400000000000000000000000000000000000000000000000010150000040008100014 *14000404000201000001010000000002000715010510000000000a0d0010180615170705040300 *0000000000000000000b000209010a1d0e0805010b12060a0b0424351d3b451d272d1808120129 *1e041d1605130c03090b040d120c171a051318051a260c15220f1f1e0d3727124a4a24171e0c14 *1e0c101a07202007182607394e232d3e1f1d1b0b11100322321c3852263f552a354521405c2738 *5c4533531f45622d2f512140632a466223476e2e3d662d43632342632e4669334c7234496d2f47 *692e45652942652c496b26436324486a2a4f65263c61263b5d272c4f202d4b1a2e4a1329450935 *4d1434421536481a354513264c1e36511d2f57152a480d1f400c23410d28430b273e132f441e2b *4218272f11141e0120330c2e420a38411420310c2e3e162337112f461d32481d2231112a3a0f44 *501b4d5f26536629405a21405c233c5b24406729435f1a43661e476c224b69204c72414d692b4d *723163773350702a4c6e265c7a2857722d577637486b28496c24536b234e682548632141642940 *642242641f475f204a6620486727425d1c3f622746611e40631b446921496b253e5f1e465d1c3d *581a2e491b304c192f511134591845651b436117445b173c5e1e395a18526c254460263453183d *621d47671c48641642632147631a40541c45631f42571d315213315316305210385111305e1a43 *570f36591d26490f2f5316345a1d2f4f1c2d4c1c35541e2c43192d481630431822441b25471728 *45192f48133a4c1d304b1b3d4f1e94a986c1cacb1911141211110d151417141410181a2a261d19 *100f1e252a1d200e130e0d301f182a201d2520233a3533433f21352a1a24272011110a10162209 *141a0d1918000f11000011090608281f10372b12322c140f0b09000006010007120c0b29180c04 *00000906020600001c1306251a08221a1742361a1c0e0506060003010005020000010000000102 *0207070001070606170e0d1106020908020703010b140206000000000200000200000000000000 *000000000000000000000001000000000000000002000500000000000000000000000000000000 *000000000100000200000200010102010222281c2a2d1e1d17092722141817111f1f1c44474638 *3d2a2a2f22282e21353a2f2015164041315349363c3e4034413f2e2f2b2f2e1a392c1a32230e3d *24124d2b10403c21343a211f0b0f4132193c2c16382b102c2714231a0b150a04190c092c271c32 *231826110529170a2910054335152a18062f190b351b106d4d2f7b6438492f164d35155339174d *2d176649275f44205a412565481d5632155430146b4315603a1b72522c593c1d5a482b62462552 *442a52431f4745214d431f5c3f1d614a2d7a5f3c494b222d3e1e2e3016221b09282d164143242f *2c1b18170a2a30192c3c1c2228172e2c15161a0a1a170d1e170e080d0a1b241a040803010c0800 *03000001000000000000000c0f0b28321a353f231009040907030209070303080a05001e0d0226 *120a2217061a0c04210d01150302190d061d170d1310061c11031208005344294d3e1d3f2b1c25 *140a3c210f1f0b031707001a08002413024839175f46265e4320695c344b402444432a3f341b33 *2a152223131f1f0e0d170c1a201419210f10110c232d1432431e242d162d3a2521331f20251b2c *2614242e2338321f4d4f34515f2c4259303e4727304229313b204d4d32503b264e472b38301b2d *311d403c21453c1d4747244c412140351c493d24403f262f3120413c2f3a2a192e261a20190d1c *1d19271e133823172f23142922132023172d24122a200e1a1b0e1506050201040703030c050307 *07031504001213061f2311100e070c0a0a0504080b03031713080c07010d1308171c0a2a221a2f *291c120d0b2c261d14120a0c0600160b040b0701231a081c150d120814081213110e14091e1501 *0600100d050d130a1e1f131308090d0e0f0e0b0f080a0c090c08191b2010140f0f130814171116 *1b240d1117101a1f0a181e1110094240244346323d412e3d2c1d6a57484d3a1d55482b554d2832 *351e1c180c20252018211a130d0c2b282a18121710080b1a221e0d08040500000803030d04061c *15140502070410150610131e241b1019131d1a0f1420100b08020407070f0e0a08110922342608 *0e0a0f160d21261a090c070400020000000406070000040c08081e1e0d24331f1a23161b311f1d *2417252c1e1f240e1e2f223c4f432736185d643f29351d262b17292c153a422149472a42554227 *261c32281e303b21151e1327291f171818232f2d10110912110b282524100d0f13100b0a0d0704 *070a0a040104000108040205010402020001060303090603101106010304000304030501000203 *0208050c09040000050c0b12151308100c100d0b070406070404060d0c09160a00050404090001 *020011090c020003000000000000000000000000000000000103030a0504060509060400050201 *0303000a0401070200000000000104050012110220330e091203000202040e04060a021c180405 *010000000005080200000008180d0000000000000704001d1305090100181c05212e1707080509 *130a0c100b221d08090b001009010200001017051d1d1b0b0603030305090c05150b031f180810 *1204090c0b0300032628132f230d2323150d0f0a181f0f090d07313314393b32485247344a4a21 *35331b2b1b0b1a0b020600000400000000181c0e263025060a0902020100000000020009270f23 *320e3842153f54344b5f50567458465b40485e3d405e32476c354765413e5b37425c223b64353e *5d2e3f5f2c425d2a4762234c642c4764283d582234572333521e3e5e27365626344f2229481a2c *4214344e1f304a193346192d43182c411c2c401c2b4b1a3a4f23334a22334a1c314b1a34451d23 *3f202d3f21404c1d3b4d1e32501e3b471e36582a304c1e3757232d49233e4d203a5222465c253e *5a28425c22506c33416443475e35364d233f60274f671e4a68284e682744632253632545652b48 *713b4d642d48602c536629435c204465294e65204564284960214d5c2048672b3354223f5f2345 *6629415c1b37551e4b6627425f25405e22344f1f334d1e445e1c44652840631e405e20314b1840 *572141511e3e4f233a5020394e193f5016304d1636521833530e3e4d172f471c244a1d2a48181d *3f0a20450d274d16244310263e111e3e18243e1b243d161927101b300e1f380f2341142d451827 *39162439172e3d1e394e292e48273049208caa85bfcaca19151318170d0f150e06100f080c0d10 *0a07202727271c112c2a26382921403a1f1f1c0b3b210d3a2a1d554f2a353425181e2118242809 *151e0c1e260b1d230a0c0d0d0a100d15161f220f423f1b14120306080800010007050414070023 *1d080d0a050708040f0b031b09011e1202251f04432e0f2c1d070d0b0303000002000000000002 *0000040500171506100400110d010809030708001d08000702000c09000304001a230d0a040000 *000000000000000000000000000000000000000002000005000000000000000000000000000000 *00000000000000000000000100000100000c07000e0f070606031517091513050b100d22281e27 *22202f3221110d05100a031b14082c2a21333b3e3540224130283e4241222e20221d152f2f2130 *241649342152320d3f341b352109241b0c32240e3823142a180b271d0c2622141f130e3e220b2b *1e0944371930200629210824160843361a2b1102271b0b281907725e31705224341c064e3a1952 *34126249245c4220583d1a694e234c360b523d194d2e0f614a2158260e635a32604d21584e2152 *47164238163f3b1e4d3c1451432060461d61421e6149272d2c141b1505332e1721230f31301540 *43331e170b201f0b1f210f1e200a1212032a3b1f0f1708141204181308151808141609100e0407 *09010105010511060000000707001c27162a2a181515090e12040d08000502000502001c0b0028 *10022a1406331c063719091807003016052416040d0d010a0600251200311f065c391643330f4a *290f39250c3725051c0d001a0b001e0c0043280a5d4c26573e13533d13503f224a42243d422b27 *311d15160a1a2014181b0f121105221a0418190b0f1d0f272c172f2b1c141d0e2a3725171a0d1a *1c052d260c282b144a4f29526545576c525f5e3f2f2c173b4026242d1a444120333513443c1f2e *2610362f18403111453a1f42361e3a331e40391c392c183a2b1c332618473f1e3a271331241525 *1e0d29200b25261331270e311d0624190b2a1c102b2715221e121a1509100d0208030009050007 *00000c05030f07070b0403080d0b0c07000c0800090b00090500100b01100f051c1d0517100812 *110a212a1a25200b302916171a140b02000d0d0a150f141a222216211e12110c0d0d020c010010 *0b020f06000b020016170b161a11130b041215080f1405182824222720130d0c0c0d0f17110710 *1c11070f0a0e11091d201208090519160932321f3537292c31294637215b4d2c4947284238223b *301e26231d1d1a191e18141d230e171713262b200f1c0c1a14170c1514090f130401030400000b *0d0d0704000504000401000900000b05020d0909181406171f140809070707030b0e041314023c *442d1416041b1d1032371b1d281c19241a0b0b02040a000e11052023142e371739391d1e260f16 *201318211424210d1f2d1e24241537492a2e36166076661e1b15485029212317141b0e2223132c *2a161a170715190a1113090b13131c19131b150d2023121410031b14041d1e1312090a090c080a *0d070b05000c0904080400060a04050100040100020507030000020201020300080c0208070009 *07040000020400020606040913120710120a04030c10050801030904030b0c0b1017131b200b12 *1e05020702040a000000000b0a000000000000000000000704000000000000000c0c001917070c *0b0000070012180015200b0000000101000a0700101a04111c030401000c00000f09000d140012 *1a060201000300000100000e12020300000000000000000106021c190716200e2232170c07001a *1a05100400292d0c1b2a0a1b230814170c0d08050a09040b0b041d18050b10030512081115052d *290e1b2c170d0c011c1504303a182c2919282c2621260c2535242a27135a67414b4e4354595f24 *35400f0303070f0c0d1002172511000300171b0a4d503d364749110e06111001020700080d0015 *17021e1e05292e134850434c474843422f4d5645424f4c334724384a424a47423e4e4c424f5243 *5c5d3a4a483e4241333f36303e3c28382e334d54475c5f3b4c4d3142393e58573b4e5344514948 *604d4862513d53523c4f4d445f5a506362516b4e46594942554441544938433d4a594d3e4f5332 *3743374a3540524044564f47564f3e534d40535c3c4a5638484f3b4544425248354742333b3a35 *383724242528332b2f393d3949452d2e26363f22474c374c5c425466544c644f47544c435b4a41 *4c37445327445a2b425436374c3433514523322437471f454a2f414f2c445a2c4c6a38415d3441 *5623486124465e2245531b446c2a5072294d702b4662244560294a642447692a47642847602543 *561e43612237561a4d6c2642642339581b475b18405a1a37561c3f5d21465d1a3e5d16354e0e2c *47072c500e354e0f42591d2948183b511e31461727480c2d480c2944132e4615283c1032420f35 *4e1d233913324813334d1a3659253a501e314b1c7fa17fc0cacb1314190e20200e100f070e1a05 *080a0d090a12151a2526222924203743323a301d241e1128271539432d33362138371f191d2804 *0d13000406000a11020e12000d1c00050b040b0d0e170d0a0d0700050600030800000200050609 *0a0a0e120b0b0700030300030000131106150f042b2e1d45352120190f0d0d070a0c020b080003 *0200000200000000020001050302100a051108010d170207080100050000060000010003060306 *0e0a02000000020100010000000000000000000000000100000200000100000000000000000000 *000000000000000000000000000000000100000009130602060101040600050b01040601050b17 *2e261822262c381c1f14042515092b28161d221d2a231e2b45492b3b31313c36263a25202f2d26 *241d2e261d483f2b3e331f291d111e140a2328181d130a351d0b251c091b13033a291822180b2d *251d1a0d0631331d120d0411110634220d271105190a000e040022140a624c284b2b0e2e1e0844 *35144b311346321a533814442c1352391b32270a402a14462d10663b154e2f15513c164e492668 *5c2f3d361c2f260b57482b3f2c135c451e4f3f275448224137141a1a0a070b04181c141e1f0c18 *201314180e16120f0e1a0c1c1a0f141006191b0c151f0d0f10030e0e0614150b10170d050a0609 *1307030f0704100a010a03000301040504030a08121b0d0912080302000409000f13010a0b040d *0b021e0d08230e042d1c08251305401c0634250f1c140a12100a1e1407361f163f2d1c573c1c49 *311444390f2e21082c230d2414043929093723133028175f481f5c4a2350432455451f3f3a1e2f *321a1d1c0e16150a0e180c0c160e0c0f0b10180c08130a171f121e2f1e1a1f0c0a100907150d0b *100a09120a1f2e182a24103d402e4c53354d5c3b3a3d221b170b2c29162a1f1443422737321c2b *301f21271c2e2814332e1c3f391d302a1938281d2e321e2e2a17332c1d1f25132c301e23251723 *201717190d1c1e0f19150a232618312e1e201b0a1e1d122624141810040d09030c070103020403 *0706030406040502010100040403040704020905090301070c07050809080c090307020b120815 *19081a0c040b100522362f1a20180c0b0e171208060c03060b060708031512130b090c0b14140c *0d0f0b15180b1e1e070b050d1009191d150b100b080c07090c0b131e1a0e140d10130a09090312 *1a090f150b081009070d09151f220e14141a1a16212d20191c0c1c1f132b382b2d281c3b3f2a27 *2c1c252d281e190c1d231f1316100f1f1a0a252203100f04060b060f170a1010060a0205070300 *0002000000010000000200010804010003050401060300030502060502020401000c04070a0712 *1508263625061511050a062c3c243637241f24102e4323111b0c1b1b1523321f2a35183e554421 *371920271516250d2938182024111f3417374b2e2d391d3a54441c13091e1d190c0c0615130f19 *1e161d1a14100a07060a06161e0e13110c0a0f0c0c0f06080907050b0b1016120a0b0c0508020b *09020a0705060e090b070402090b000409020707020f0a060702040b0b01030400000000020600 *0002000104040204000400060700070501000000000b0600010501040306110c03090907140507 *1a020b0e0402130d0001020808020001030602030912071212030b1604040600000201111b0715 *230a06090400040011220c081d04000400071104030c010b15060207000d12030a0e030612050d *1c0b0a11010f1509090a020e0a02020204000000000001000904020300172517071a030916090d *10030b16050a160b111f1311200d1822181c160b1e201805150a0005070d1a0b151e0a09110632 *391a251c0e2424121e290f23200f2d372145421e2325130f190a312f1949482c606e5962666c4d *607211181a2c3c34030c0b2d3418172b30120e04445b41445e7a294259070b09070e04080b0328 *2f121f38223f3f233c4b2e2e261e41585b485c634f604e283f49312f163c433e445f623a404e3a *474f3342503f585f3b494d4955493f56603947483f4b515064794f5f65476260474f4e414b5242 *58652e48573e4f5435465e1e2d3e2832313d505c374c5a38444a2b48533f4d593c4c5b404e5c2e *3d5032383f404452354e5b2e414d314846374c4c3e4e51354c57484849354248354654454f533b *4c50313a361d2b322b392b2628262f4350252f243c3432322f273743324d5d603b48443b43483f *45443b45463242463c3d2e3543393545572e393b33453433413e29312c3336202c3a341f2c3427 *2f301e34411f35352a4236334a362c49273a5329384d2141531e3f56233b5b2338531d3f571d3f *652b3d5f20496622475d26506a29476a293a5e2c405f2837632a36612135511a2f53223c56183e *60252c50223556233c53153f571c435c1f46641e2f55212d522338542131562130481c32541e37 *581b334f193356293653263353243c6235405d2e3d572c83a581c0cacb221a0e0f0c0f0d0a0b04 *09090702061a10101a0f0a30261a31291c394028372914241e102c1c113833214639234442321d *2e2d0b110c0b0f130a111305080d102525040506020206080c0e070c0802080202000001000600 *010200000018180e2f260e140c02080900161805252004281d062110042813091b0f0a02000003 *06040103000300000400000000000600000f05000c0800040903050401030000100b0209000003 *000004030000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000201030300000000000003060100000006 *03030f0f0c1b22272b30253434243c301c433f213b2814403c2b2d342c28332a1c292b20292121 *34271a1e0c1c1e173a3b274832182c1504272929201d0a341f092d1a06371f0c271a064231182d *180c462d10241407221b040b03000e05042f25080b04001706000b0000301b06533c174c27073b *1e061c0f002912044733133d2e0e361b05614b223423063f250540200b5c38144e250b5a3b144f *2f08645221402e1047311d241b0b362f10423e1e4e3d16463b0c3d331d1e07040d0c01191d0616 *170c1610051110061211050c0b001111050d0804120c010e0b02190f000d0b02130f0208070217 *0d02101a0b0e1a090d0e07070a060c0b070509060b09040202000e12010903000f010008020008 *03001508001407002615062d1e062b15034c28093a22072922071e1202200803401f0842270a64 *57204937133a23093d18035d411c381e07261d0738271443350d58421969541d54451f5247292f *291826241211100c1215120f13081116080e0701130f040909000a0903080d07060905050d0c0c *0e060a0d02130a061a19101d18091e190e1e21142827152526131d150834402729211b393a1f3b *391e23270d2e2a182d2b18303016383a0f3c280e31240f2d2316292d182f382e23251f221f141d *1d0a171705211d0f271c0d22160921181423211a1e170e1719111d1b061715010a02000a010009 *05000c09030702000b03000602000c08000b06000c02001009020707000d0705100d0513140a18 *1b0d142115161d0d1a120b0c080217100d1313180d0d0f0f0d101a120c1214080a0d0c1309030c *0d09111a1b11140f1717141210090a1c1410160b1012100a0502080c050607050908081216170f *201e121e140b12060b05020c0b0507080511110c0b1a12111d1510181616262425190c281c0b15 *180a15130b121814050605060b0d0409080509030600000a0001060603070a0904010103030400 *00040202030404000b040004000000000000000007040906050704050402070206050003020106 *01000d0d0511190a0703000e0d07111a1141452626321f293421414733212f1e4041223e472d34 *48321f2c1a1c260a182217272520262b1b29351a182009423b24181d131010070a090014060015 *0f070905020c0a040808040a160e110f0c0a120b1717091a120f1409050f0d050e09050b0d060a *0806070c050d0e060911020906010b0501100603070a0501060001070008050002040002000005 *000003000000000000000000000002000004060402090400010001000002000009090509030009 *0b010210070407000707010c10020a09000102001016080803022324050b0d020208020403001b *1e0a0715040204000002000c0f000d1202060e00141b07080c00151a070e0f011b1e081012030c *0c010c0e020b0b010911020e0c020f0b040c08000605000103000503001a1805111d070002000d *1702201f041c160b1017070503001414020003001417042d352611140b060000191a07233c231e *250a4b573a24271f1d200a383f32454533363425464d412c3a24383c2153685f4b636b585d5861 *7276444d5340473c191c1c2e2f1e28373e0d0b043b3b2253666d455b663f4d501b1b07161e0a2f *2e1b3648311f1d10404d3357696f394242505b574e66794464792d383849584846555f485b6140 *4c543f40503d42483b4a5b465163505e6140586c3e474a454c67354d583d4c4a3f535c3f545c37 *4554414a51333b47414854344141242a26363c33434650454b4e44515e3c424a43434d3c424d37 *3e423e4b4c2c3f44424347404f5a3247563641462d3c333b474a3c46463d4d5b4750603f464840 *4957404d5d4048653f41483b3c423e50633c4a513c3f3a404c5837251e3a3a34383f3d42464d49 *505a42526f48595643525f454c5037424b3b40443f414c3e4d533646483d46462c2524282a2a28 *32361f2a39181f2410242816242f101d220f1e201a20191f1b172126201e352d293f25334b2b38 *5127434f19435f2342531e45562138501e355120425016344f192e4316314c1624501a2c49172c *4a15304d1c2e4d17394c192b481725471f324d1b2b4e153f4f1e405a26325220314d22324a1c42 *551f4f652e4a682b445f1e43591f455f284b63244c602d4a662d8ca98ac0cacb1e201d1d231d09 *0b0c111e1a131a0e26221f291c13342d1f3732223031284245274d42234d422553493044462a18 *1f1a0f272e051521030d1809141a10282001151409171e080c0e040b10000b0e00070d010b0900 *02030000000505011a1c0c25271219180b10160d15160a3b2e0f29290d291f073834182e240a0d *0302000504000301000604000103000200050400090d0111100504010004020202020309080400 *0000060f030f1d0604030000000000000000000000000000000000000000000000030000000000 *000000000000000000000000000000000000000000000000000000000000000000010100020500 *03020812090f1b0d2433290e181621302d3b37245d5c466254343a402f2237371c281c1826250d *1816222a230f150f1d1d171f180d442e1e2d1f09342e111814061f1606250c0b4a361e26251624 *1a0a3b290d2a1f0a0b11030108000b0903161007130b070a01031209041712043b38114232113b *250a44311c1a12022a1d07271d0823220b382a0e483c162b2106421f074d340b4c380f4b331052 *3b164b441553481a2924092221101d1307342c1d3e260f52320e312313130e040b11050612010b *0905241f0b1d1005120e081118150c1009131408090c030b10060d0a010b12030a0b0309090107 *0d0812120a0d1c0d13220b0d140415221212170b0c1005010c0606140d12160c191c081118041e *1506261a06231704170600211204451d0a3e250d4f44183f3f163823072c220d2b1e042a1b062c *2306433f1c413e1a48421e43310b4c36173c200a48320d442713504720504823433f1d3029142a *2a0d191a0b211f1214141008140a050a03080e0909190804190d06150d0a0f0a00040502040203 *0303030803071b0c080f0708110a1a241d161307181a0d1f2217151a0f181c0c11180c181e0d31 *301c392f1720221a261b0d29200d3838212f32172928142531262324172b291438382122150817 *1a141f1d14171b0f1a1d15191a0e201e0e1d1a111d190e261d0a1a1a101518080e1109080a030b *17090c0a02120c04090400070701010503020201010402070800100d050a09051712060c160909 *0c0b181d140c180b101a0b1118151115050c17160c0b0812150a0a0a0809090616150d0d15130d *160a111e160b110d0d08070f1009131e11151d191517131a20280f1c1e0a13080b130a10170c1c *2c2a0b1413171e1a06130d0b151705130c101615171b151617130d18140a120c0519131b1e1d1c *201c0c160d091c1809140c040f13131e23070d0d000905000b0e0003040d0b0906090b0806030b *0805091618070708000b0f01040a00000000040004060105080400020000040000000101060307 *05060e10070e1408070902050b04060c041416101a201422261b18221a30462e242c1120250e32 *3e1c232f19121b10191e110c120a0d160c3e463216260c0712092945360b150c080a0904040409 *100f040d05040b04000b040b0a04040a070b0f0805140f111a12111e1a1516050f110306180a07 *110c0e0f070c0e050c0601060b06040b0604130801080303050100000000000000000002000200 *000300000100010000010000000000000000000000000200010004050302030005060002010000 *0000050b01060602000706010c05050c050409040406001822061010050f180309120500000003 *0d032235120b1f0c0011000007000b120209100113190a060b06000105060f031117000d16020a *0e02030901111c08080d050c110718140b0c0b05040200090e000e1a021a26121a220f1a180c0b *0d042a35181d1e120c1b07182c131d180b161e0a0b1605263b1a36433d1e25140507011d2f182b *422742572d3c463224302920240e4957544e635250696a3f4635425d5a51635961787b63718355 *636d526e793d4839344a5a33371f455f6b171515424929616d66596c7a5172833c4c571f291431 *39223a444f2324194545474050464f697843647a425e683a4f5d34565b1e1d163d504f30494d43 *4d443d57613c49543b495139475145566748586546656f47617141475343585d3f586a3f52663b *4a5c4454574150593c505f43545341516143505d322e2c3544443e51533d4b513f404843515243 *464835414b31485333454e444f493d504c2c3f4e3b40422e3f4736403f34484d31383340434848 *5d602f3e44374b543a3d473f44473f4d4c26324126251e352a2124251e1c1d17282f322f251e3c *444a3b4a573540453b4a4b324850343e432f454d303f4a353c4030333322303323353522333425 *31441c2e3a18252a1620291f27261e3035101e200e13130e20200e1d18151b1e18263218231e15 *221f0e2321172c1d1e2d201d3a2722312638431c374e2931441a2d4418304d21283b16223a182c *4e2634582d283f1f354c1d334e202f4e1f3356242b4e28394d1e3a4a28384e252f4c2431502033 *4b19334b18364b1b335123335422415f294062283b5b2a3e5a29455b278da988bfcacb4b34262f *1d1d170f1d0e101d201b14332f294b2e204e453c4d2c264e4a334d402b6b535060553f464c4333 *3f3f16242c0b1b230e11230c18221622370c1c25080b13080c1207111b07080803020205070701 *030a0400040b0a1115130c1c180c31211448391a23160a2c1c0b4933182d19093220194137211a *160d15120b030300080400010102010805010000030001100d05100b0a0604000205000a02040a *05070200010700010c040803000400000300000100000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000500000200000000030200 *00020a0b0e0d0c090303070f1a200e1e241a21223b4239575847545c4425201d151616222d2827 *2e2d17242a0e14091e2b291415112f1c0b4023104843243023182017161814092c20082a1d0c21 *140a200b03331d0c35261a0d060607090a0e0c092f2208301d070d0602230b021a0a03281c0a2a *14083c1f0d3f240f1c0b011c090017100527200b3f29164d3b173e260c46230e543a1b5a45174b *2a0d4b381b5446235b471d2d20151706082323143b2909604c274f291842290d0e04040805090e *07080e060911100d0e120a1e160a09090d120c030d08060604070d0b090707080a0f090a0c060b *07020807040c0c08080c070a0b0a12110d0c11090e11080f140816130c1a1d0e1211082420172c *1a0a29180b3f2516311e0e240d002e1301452909453013593f215c4b24472f133725163b2e1633 *280330260c4439144833104f3e2250381a5129114d4018684f1c6c4a2b815d2a6b57234236201f *1d14221f1c1218161312090c130d080f070b110d1217150b070d0d090d0a030505070f04020406 *090708070d060d0d0a0805100c080d0b111311140a070a18161316120c110d0611150b0c100b31 *261e211a16222b26171f14181d172a261e272b1d21251721230f25171025221f2422171f291a15 *1e141e1c0f251e15231c0a1e1d121b171a251b141c1a14171911120f0a1816180c0c0a14110814 *0606160e0a1206060603070508070906021003060e0a080b0301090603180c091209060d120f12 *1c16080809131b1615100a15161415150a151211141813080b0c0b0d0e101b16100d0a1e1a2014 *13171211191c1f1c1d221c222f2f1d28251e1f21141e21120c0f14161c151d1e191a1b13181810 *1b160e1d1f122122131a1f1a1c2012212a14171e131a20091412111e21111d210e17140f16140e *0c130c101c0d0408050d0e031318020d1301050b04090d0f1c1f0302080707090f0c1b02081400 *000101040a000808020b0900000104000404010206030402080c00000200000704000402010001 *000103030807010305020901040c0101030205050e0e0714130a090507090e0e1820121e1e1b05 *090a162119070d09050f051d231809080a10130c0e0a090c06080909091514150a040403020006 *00010c09040d080706000504070e110f0a0a090a121809070a020c11061507090b0a091a180b09 *0d0a0a0b0c0b0706070a04080e040a0c0a0f070608020307010201000101000100000000000000 *000002000004000005000001000100000100000400010201040202000000000103000205000404 *040900050a00030700040200040b0809060a09070604001721091118090c110b09100901080502 *05000c0b011d240c060a050001020400021521130b0e080d0f02060400010000080801100b030f *0d07131f0d030003071106090800060600190603130401030204080c040e120a0602080b120b03 *0703070000262e1818140a151608232b1715161422210c2c2f183a513a20191d3a3f3e0804083a *311d3b2c1e565d484d5c484144571e1f1b46504f5669715f65755b617166727c5e718c6378855b *687d616e7c5866794b514e382a2659636053637b2e282350656b5d656f5662724f5e74303b5329 *27193f535c1f1c1c445d474861604f5d5c4f63754d5773536781494f6648636b2f3a2b4c637640 *5064415061545c5d47526c4c5e7a49576345557042546a485f7048636c3e4e54475955404a5748 *566241506b3f4f59324b5e2b434e2e3f45344d623949582d374b30384845484c43546737495c32 *3f483a48542f3c4c2d3a43352f363237482f2f3625292e3a4146353c35324545373d512637473b *404c4047524950662d3044293e533d424a2e3a43333b4835485640484f4447463c3c40353f4336 *3f433d44433548443b414c3a42503c3c49333440292d2e262f3c242f3a1c263726313528313926 *312b303d3b2e283125333116232d1c1b271c212d0d131a1012171511131b1821171e2b0d0d2210 *1e250a0d1d0a171d101711170e0f0c0b1609060c131617060e110f21210e17170f1c1d1d1d1514 *1f1a1f3022273d23233e222f4b31304b2d3850312a4c2931482a354e26384d31253b232e412233 *452633482b31482143532b3d512a3c4c244048284750332f443929342829372682a38ebfc9cb3a *473d2c362c1e29241c262a252b2d55524649492e5254435f5d3e5b604739484f2b3e4b4655482a *31432a37421f22250e202a18343f151d150e2928080f0f10231e1a251e130d0a130e110b181709 *13110a0c05010e0c11170d3331182b2415322c10322a1532230f4b340e4e3d153f2d0d453d1646 *3c151713030b06030703010303010304000104000202000701000a0600100a0008030002080003 *03000b0b000a03000307000904000d080010010005000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000002000000000000 *01000107020001000d20230b0e080c19151a1d163340323c3a2338422e27251a293c3a1e323321 *1e12303f38222417202111261f093f3a1d4d452260431e443711434318312c0f2d19073516053d *2b122613053a2a0a40330f3e2e152a2e1f0f0d000c0700231403221404180b001c0e0023180323 *16002c1a003e27073e1f063a21071e13031e1802251900564620463b153d350b3921024a2e0d4f *330f503f1a594916493c1b2a2303110d001112021f10034737134e3f163d310f3b3d180f0d000d *14051217060d110513090515150d141510191305131209121906090e030f1306141208120c060b *09010a0d03060906101206090f05090e000f1a0b120f01120e04131706181c112a362424281425 *1b07362e0a32260a4e3518574219412c0a3f2307433615533b16503a0d5e5e224b370d302b1033 *2909463a0f533f125e481a3f2a05684f21433c0d4f3f0f5c3b146a582e5f4323795c3f6557323e *412324240821210c1e200e181508121c0d131b0b0f1c18090d050a13080c1203061104060a0507 *07060e1417090a0913120e0e0e02090e010c1301101c080a0b061a1b141217060d140d11190d1e *1f0a17210b292d131814041d240e24291e2a2f212f261d21200c1f231925301b211f131e25131e *1f1d1d2515201e131e251f211c0b251d09191d121b200c1c1f111a1f0d1f190e190f011d191013 *0f000d0e021419070807001506000f08020f09070d0a090b09061512040708000d0c031b1a1518 *12071f1e0c1d23172122181e2524152620151e0f161f141a22171d1707161c101718151114190c *151612170a171b1c1b1b1412150e181d0e1b1a1718140f090d0d0e180f141808161909131d1217 *180f141816122229141b16101d1b141910131c100e160913170c11140c1514121c212212171314 *1c1c09150d0610050813040b100905060310121a0708050802000b170b060d05070b0709141000 *0000080200090d0505040505070500010000000001020001020001000007050307040001030103 *0300000400000400000603050200050703070600030400000606000b090103000a0c0203040006 *11050405000d0d01060500010600151b0e0005010308000506000304000d0c00070a0007070007 *03050205070b0200070900070602080701100b00140901100a070f12050d1105111203120d0214 *18070f16051115060a0902130d040a10040c110706070006100404040008090006010005000004 *0300000000000000000100070a0003040100040003000008010002000001000001010000010000 *0500030d000d0600090300040100010801010402070b001218041412020f16020b0a0009020009 *00000004001f2c0b060b020208000909030d0f00060902070701111907010500050600161c0213 *10001215000a0f010702000d0a001416000d09000e12030404000204000c1702121e0d0e0b020a *04000d040116160425290e1915070b1503243e1d261f0e24240a3c43413f48384647343d4b4215 *17072e300b41492d61797c636572646d7c4059673b483a58686f617571657c865b7483616c7c5b *697b6377825e7082667b8b6478874d59526474795c7178485349596d6e5f6b805b6c7a4e657331 *3a3339432d232b294c4f3a51636f505f6a5c697a586d825360674e5f5f4c585d3f5863313c243f *56534e5a6846505d44606a3048554248483f4c56394c4c475051464e4d42576731445a3e505f36 *404c414d4741585b3f4546414e584057653d4e5a2b374c34464a364245424b4c3f453e3f4f5137 *434b363f392e4142313647363d44434f493845472b3c3340484c4442603f4d4e293c4a3b424336 *3b36464d503e48523f53553a4854505a64334c60334046424349414c533d3e3b354542343b3f40 *494c40485145505f49474d41494c3a42433b484f323b3436424b33404b29314335413e3b475232 *3f3f2a392f273c302938402935392c40461d222f1822211e23261f1f24181a1c1f2220191a161e *1a181b1d171c1b1a1e242118272c1e2a2a0f121c0e140d0f181215150b21231c100d0717161113 *211e0d171721161123201e1d3122232825232518263029161a1a1d28203243403242372a292320 *2f26262914252a1c28322d222f2e2c322e282517252d251d252621272328251f2d282092a78dc1 *c8ca272d2e1a25381b2a3f091125061b331c313f28343f27384726424e40495530314822395425 *4b7325436528485e1f3d5719324322394d132a33161d350d243d0d20301226420f282b0b1b2712 *17260b0f19080e15071423001420050d1c060a0f091312393423482f1f665f3f3b2b1741321e3f *362510171902070d000205010004070606010505020407000d0d010008000a0e020b090c0e0c05 *0a06050b0702000107070b0003020c03030d040305070600000100000100000200000100000100 *000000000000000000000000010700010400000000000200000200050900000300070f020c1000 *000302131b00030b000004161e25141a1e0514131025321b20261b2836293f4b272e2728293524 *2c371e332f222f311c27211f332e4247325c532a685d4b51492f3b38284843280d140f2120213e *412e4338214233245c46275c54353c352020231e161d1e130c0b291a0f3e2b153a2c0f38280f39 *32193f29103f2a114a3c1f4e37185a3e1e4a3a152d2710413d215841233c27152d26151a0f072e *1b09422b0e644f1f53401d5447203323100d04060602080b080a21160922210e211c0c1c18080b *0b0905000b0c0c0c0d111313140a0d1815090c0d0d130d0a0d0a0b0909130e150b0d0e0f101812 *12100b100a09140a101910080b0905080b08080d06060d0b121a090c0c101c1b0509071e201710 *150c392c1d3c3b243d2b164f42264f462c42381840300f65451f6c532c6f55237c62345f4f2c38 *200d422b0e4e40186d56355d48214f331b4f3f234d442537211164462665522c3d200a6d482b65 *50341f262613181b101b1a141920121a1c0817140c18110a1412050f0f0c0e12090a110c091103 *090d08121406110e070d0c070f14090b0c08060a0510160709150d111d0418100b110c0c0e0d0a *070b161517150d171f18161d1815252a1b1f251c24392a26221d211c1e23261d231d102329251e *21222029291e2a261d22171e16151e140f202121201c18172327131717141e1e171d1a10101112 *0f0f110b0c160a080e08101114170f0c11070d080d0c071415100f101916100d110c1112151312 *1d1c10161a0d222508110e19262515110f121820171a1009171411141e0a17180b1310111e1a16 *1e201d1d2216191b121a1f171e26161c2112120f1724230b1e1e0b1d20131d241b2428191a2116 *12201622290b1f2017231f11201d12171b1a1a1f17212f1219200e1a2106151914131616252c14 *17130c0e16080b170c101e0a0b1913171e091317000d0c051614000a09070b10020b1c03060f00 *071800091001080a03020800080b00000600060b00000106000500000500040800000400000300 *000000020003060504010200030500040200000600000300000000000400030e00000305050503 *0204000002000003010104000001000002090906080707030302010004020304000402040b0a02 *03050000040503030304070a0f0b010107030b080709090b130e100b0f10090a0f0f0b0b090f05 *0d12090d0e090909090b0c0a100a0912151417190d0909080b0700000000030301010300020300 *020400000200000000020600010600010801000200010101000000000102000100000200000000 *0003020002000003020303010203040b0601040401020414160c11160407160a00060400040700 *040b000002080405070b0400000200000002020403030100000200060503110700030307050203 *00020c10070c1206000704020101020c07080a07111a090c0d0703020201000105060304090802 *0705000503080d0a171f05161a0c131214171f131a12133a3a313b322432341f4e646e46566042 *4c472e36263e3f3a2f2e29565f65505f6e63646f576479384251495c6764677f68758f5160825a *6e8a6070836472805b6f805b7084596b835e667757606d596775526c7e55667d5071815a697c4d *617639393122282c47585c4c637b4961724d6964425766515d6a49546b41556c4e546748556731 *3c3b384d533d494e3a515c4256694962764d444e454c65404c5d49536935505e435e6942576a47 *55674b526441535d4447613843523b46633d4e564054673d4a5d3c454a45535b3e566e394a5940 *47553e4c6038475a2e445437455c3b41473649553c485c2e354e37495a3b4a60314246283d3f27 *2a323a404148494c4340563c415d3b48584648623c41474247503e475d434d5d414d654248583c *485e424d5c415353364d573f4d4e4048563f44483e4a54444a522f4962334452373e492c414530 *415120292f2e3a432e3b4836475f303b4d2b3c47233542202f352629391c1d2d202e4023272c22 *2d3c22374b293f4313262e193748273a3f252e3928222f29273a1d2d391e2d390f25330b140d1f *28252733342836441e212a1d1e2716232d0c182d101d27111d291823281b202d212430302f2e26 *3248272c3a25303722333d202f322c3e4b201f322321242c36371c26352834422b324723343c87 *a394bec8ca2e434212242c1324341e3a471b292f1d2d45262b3d272e4a28394e27404831495f26 *445a304f573849622c42501f35481d3147243a491e2e391c30420e1f2a1c2d2d1e31370b1d2b12 *213510242d1225340814180b191f0a1f1e0d171d202527090c0e171f2023221f2a291324221b17 *1a0d0c1407070d0205080307100c07151e060b08010907060d0b070c04080b050a0f070205010b *120e0508090a0d0a0709050c0f050a0d0005030005040002010000000000000000000000000000 *000000020000020200050600000200000400000403010500020101030000040101080500000000 *040b070c0a030204030e1304141010202319312d090e10202d31201e1e212b3929372f1e2d3929 *3e3a1730371f3e312d2b2c1f2b2e22241e3c474f524c38332b29221f18514f423f391e2125251f *24222a271b374221453a1f63533152553b32371b171f1d1f1b15252e253a3a2660522b725b2d67 *5422654a23755f255e472061521f5949223d34152d1e0c482b13694c263e33103d3914231d0a1c *0c00351f044538104e461d644c21736438201e05070900090604070505110d061215091e1a0930 *26160a0c060d090411120d12120b121213131310141a101117131217100e130f181d0a07120b09 *0a090f0c0b1014140f141108100f05090f0a120c0b080a0c1c170f170b0d0e10040e0f0f100c14 *130c08130a1f220d3c291d513f2178673e6f53245e3f0f6d4d2c7955215d4c20665b2f79663364 *4a19533a156a552b6856275046245148273d2c18513e18534017564413584a26574a29553b2586 *6d49433e3217241f212b241b1e0c171f181a1a12131b160e15130b140f070d100b18110b100a0c *0803060f0908120d080906090c0b041110090a050c190b1417100b12090d17071b130a141a150c *1717181c0f1a19081d1e091a180d1d1c0a2a25212b3526232c2a1f221d1e1e1624281326261826 *261f24271f2825171627221e2a1d17201d202a1d1e2411231e111f1f101f1a091e1c10171b121e *1c1712150f11150a161c0c1416051c20141a231f1314140a0b0d141b1112161b08120e0f110816 *1a181d2a2e141a18241f190c0d0e141e1c1d241f19282c171d171e2020263430292e2f1d2a3117 *25281527341a252a241f182026181c2517151c141b201e1e1f1916201a2032321a242715242018 *221e171f1a252a28202320252e282238451c2324162022171c161e242316232316222715222314 *212a10212d1022290d181a0f171e121f130d221b09161e0c11170813170804080a061203100d09 *120706100d0409090404020204070004050106040002040404010a070304080900010000000000 *020700000000000102030100020002040000030002030000000000000000000101000000010000 *010000010000030000000000000005000004010200010002010006020000040007070006090007 *06000003000c0807070c080404040405000709020605040606050c0603060705080b0f0b130c11 *09010f10091511050f12081513081012070808080807030a0903020600030500050b0304020002 *00000200000000000000000000010604000206000002000000000100000b010501000400000000 *0000050600020500060701080302080400010700000000000805050b0605160400050006090404 *020200000202000009100703040400010000010000010001000003000004020000000000020004 *0200040700060b001117010201000600000b02000504010d0e060707020001000003000f0c000b *02000400001313080c0d0c1a200e17201d1f270f1a1f10302f1e362f1f313b3a3a403448585a3d *46413b4d513b464559626241432f5760625d6c7b4c6c805f688059738542525465757e5e6c7765 *7886647b915d6c7d5773804e657c596d785a71725f6d795a5e645c68655866694f5c695c6c775a *6a844f6275343a294d54415f6f835162715462735a647c535f69506e8947566d4b5d72485a6845 *5b6d485563404f5c54647b48515a48586c4d5f5b4c585343555c3f5d6c455f6d46606e4c5c6a3e *4e69415267495262415366424b504c4f5640424b414b52364354425760404656414f5c4f575f46 *515f434e543f4c5249494c404f574a616f3a4b573b42434956653e4c5344505742464d404e5345 *4e54424c4f4243563e415b4a59644b4f5f535962555f68436680526683465e684e62714752574f *504f4d666d515f6c4e5d774b5d5f43586a49597147536643535547525a4b515253606c474e533b *4e6c32414a4550604652603f47562a414c2d30432c34471e2c3e212b3b26323e2636432537441e *2729242c312134371e2733171f2a16181e232c311e242c1a22261b263426272320283a303a3f1e *28391c1e21222b3520222b2235322f3a381d2a281c272b1f23281b282e1418211a23131e333320 *28281a242e242a2c292f2c20262e333b3422293e1d25301a252621313221292a2a3f452d3a482a *2a3687a68ebfc8ca293345232b331c2d371c2f492137421d353f2d424f2a424c2838451e3f5e22 *3a4a22425f3253702a4b5f29434a2941591f3d5b263e501f324018304628394d1d35491a2e320c *2b35142c3a1b31480b1e2a0f22221227370b192209191e07141804181e0612160710160c0e190c *181e071c1d09191208161b061212061717080e0c070e0b0a0f140c120b050b0d07171706151702 *0f0a02080001090e0c0b080e130c050a0a050508030a08020b08020f0a07151700090e00070600 *050200060c00030600030e041308020a0300070300060b071411000905010308010813030c0e00 *070e04111100070b05181800090b0412180a181e1c2c322236361f2e29294b4d223b4824424731 *4449303a363346452f4142374b52334a4a283f432f42422f43471b292826322e292d321e282320 *373114292a161c1e242e25302b244c4e40292c24192e2b1a2e281d29291b2629202a2a47442d69 *58427c6d3a6652315a53346f67444840282826130f120d111312504320644c2233331930331026 *240b36270a543d1246310f54421b5d4724615b38271809040a05050b0605120a08070614120b29 *2618483d2128180e0a0b080b100d09140d151a1712190f11151317170c0a180a111d190b150d0b *141104100d0b1b18090e070d0d0d0a0608100f0a090f0e060c0508120a050e0d000d0d0a0f0c0b *0d0d0f131113151021291a1f1a145056404b573f5d4928655d3d7d6c48745a29574c256a583b78 *632f695d35605a324d51374d4b31695d353b3b2a26281d43432d5d62353e3f26462d1b6d522f85 *6a407465472427211b2014131e151421210f19130c191a0c130b0d11150f15100d100c05131105 *1713070b0d05181a081318070e0c0b1a1f0c0f0d0c100d09151105191a101d1c0c181713171518 *120a141c1e1f1f1c181f1f171e14172d2b1a1e202127232b251d21251a292d1c2a2e1a202a2422 *29292427221d2021232921202b1e1e241e1c20172122231a211f1a1e1a18211b1f1e1219271f20 *271614221d1a1c16141b11131e14191f1a181416070e10090e0d0c150d0c1211141618121a1e0c *1b18122028131e25121d18172927172927141c1c1f2321152723171e2516242a1e28291228300d *23211e37321d1f25181818151e191a24271e2f3f1f262e1b2a3a2537361e251e1826322121171a *2724131e1f1923221e2c321727281c2b2f1623261827301c24271b2c3017312e0d263115323e10 *282d0a151b0b100c1315130b1514070a0c080b15020e120315190a1e23080b0c050905060d0a02 *090f030a0d00020a03090d010809000703040a0602060202020100000003060b00000400010300 *060600070101030105000001010100000000020300020700030400020100020200000000010300 *000000000000010200010100000200050200000000000002000003050304030302080400050702 *060200080000080202000108080a05070303030501110b09110f010403070b0a0f0604060b0808 *0b04160b09030f0b11120e13120a11150809160a080c0b0a06020f090406080604050301060500 *040800090400010003070200000000020000000000000700020400050404070002060202020004 *080200040000080803060900050401010200020502040000030000000000000000000300020500 *040500030400020000000008140b00010000000000000000000200000300090201060000010000 *0101000000010000060a0309030000010200020100030000000102080402030000000000020005 *0d07000506020d040e170804060318282424241513170d2a2d2a2039322f2a1f42413042565244 *433a4f564c44494a4a483f506a7838463f4c5d645a626d5a6c7d586e885c6266505e5b5a6b6565 *717860777c576e7d4d556359646b5f747e5c67746272844f636957647157667556647e4a678057 *697f4f63795a5e624b4f404a62655362704e627c4e6379465f70526b7550586c4b5d694f606c49 *55713f4c62495f645265694f5b6c4d606c4b5f71485d654a646d344a60414b554a5f733f596847 *5c5f4253613e5163414c5d495356435c5d404a593e5159415c5e3c53664253674d5d68444d6048 *57614855644c5f704a5e6f4e5f6c525f6d52607340506a424f63445564475d67495f7042526c44 *5a6b436268475a6b3c5160475060434f62454f6044536a5365764e67734d53644f525d525f6d4c *6a7b485d62505c6f4a5c644c5c6e5361694b5a684e5d6545446046556d425c6738506a41546342 *4a543a4a53484b5642475f42586c3143562339422630372a424d2941482c383f1f29332021271d *242f22323d2036401e3333182e3e2c3b2d223a35212736171a241d2629142332212b27242e3a15 *273a13221c1e2c2c1b2434171b2614272819221e131a1e0a1a1d1d211b1a28262026251a1d2726 *2a310f172a0e1925192020182b2e1a24212b3231252e3425252922282a141c281e2931151b2519 *1b232a333082a38fbec8c7273d5122435127333124334d263a51273850273a59294f6832415322 *486d2d50742e4c61324d6d304061313f58334258304a622331481e2f4a20475822364d213a532c *385d2030431e304f1e3550182b3816313c1931461a2e41151a24212d3a1313230d192614242713 *1f22141d150e18201c212d161c1c17222a1b27361520220d191b111d2109201d080f1f0e1c230f *212b161c1c0f1c1a0e1a260c1c211521211118121a2823181d120c151b081310071016060e1503 *0b0e09151e050d080704050a12280a0f1506070904101c010c170815181214160f1a130d111911 *1817050d130711120b141b0812170b1b25212e34192226212d322f484a243b46254452324a5d2e *47523e525938525f304f49384c5530434e323e473e586b364d5f314c582940463a58682c38383b *3e3e30434b2633362836322437412b382f293233262c321d1e24222b2b323e3f2233381b2a2f2b *34293c412c3341282f3a283b392239341b16150f0706090c0f15181f1b2e311a48331845411e38 *321a2e250f4d3d1e65471d5e421f634927433b21493e173d301a130d0d120c090c08070b040517 *15104d40276a5f2e47433115170d1d150f18161a171c1c1b1f1e1218161d22231113111b1f1513 *100e16161512191e09141a1212140a120e040b0b09141a0c16101a13140c090d0a0c0811171608 *0a0a0412100d14150e140b121415120e0921161413100b1f20202a301e2f2b1f4d3f2358461e50 *503c5c49363426211e1b132e27263e3528313d351c18201911091d1e181417163025194b472e76 *6743706a4f3b432f2226261e272325251d21241a1b191a151b1813191e101b1f171c17161e2515 *161c0a11101213151012120c171a1115150a151b0e1d31131e1d101a1a0f1d1f0e1d2016191318 *23231917161f21201a171b2223161e170a2b291f33291d2a2a2c222a2a1d2c282e37272624252b *302f293027282926262f232629222d241d23281f2a2a2127262919241e1f261d1f2a2329261e20 *231f1e1f131e1819141e1c1c201d141a1417180f1b171a14140e1d161c1511130c141319282a13 *1e1c131c1a1a2728141d2111202512232e151e2b0d1e1e131e1a1d251e1c221e0d181716181e19 *222c1a1e1a111723202c3b1925291f2226292935282f362535411e253028262c22262a1e242c1f *2b2e1f33341d33322125271d272e1e282f1c24261c212a20262e171911171e1e1c25291d292718 *242b162629141c250e151e141a210b101008110d151e1b0a0b131117100c1a2504111e04070e0d *14190610130606010d171e06111404070804050803070f01000600000005060005070502030202 *030405030500000800020800010500060800050201050000000000000003000702020802010600 *0106000000000301000301000000000002010104000002000000000403020400040701050a0407 *04060707070505040302030603090b08080410030609000f06030a09050c0406100a05080c070b *0b0d0a100a110f0711130b170f0b0f06051b0904080b02080b08090d0b080b0a0a0702090e0703 *010006000103010300000102000001000000000000000003030005000005010202000000000300 *000200000200040401050005050002020204000400030300010401010002000000000000060000 *000000000001000000000303050800010200000000000000020000000100000103000000000000 *000000020100030006030207080106000002000003000206060302010105030001000003010001 *01010700010c0301070401070b00151504110b040c0d0b1c1c162b232135301e413b31474e5245 *48474a4f48464f4c4647464b57623c49524e57425f676f4c5c695d666d576c7f5a6e79586c8358 *6c7a5c6c8a626c70606a7a58687657606f4e606d596777556f7b5f66765766765d6a804d5e7348 *5b6f526e7b5767815e6773526266586378516a7b52697e525a684e657c57667a4c638053666957 *5a6c505b644e64794c647b465a6f4d63784d5e744f6580515a63485d644c5d675060695b5f7348 *576f536572525b635c606f516672415b654f606c565f6d535c795669804762724e63795762724f *64705867775063794c5e7950556541576a4f5f6e595e6a495c73434e534e5d5d4d56694d4e5653 *5a6c485c69425876464d5e3e506a4b586a464c6459536a4d5b6c55617357626d525b654a5f6f45 *5768475865505f704f646d525b6b4e64694952645c657059697347526c48505145576a4b52613c *4d5c44606e445d6f3e46592d3351262e3a303e372a3136263b4a272a29192839242a3c202f431b *2735262e2f18242a1c2d3318272f1f3041161e370f1824181a2c15141c1e2018161f240c1a1e18 *212322202c0e0d1205060c0a0a190406070e0e0a0c0c091515150f13191816211009161113250b *0e170e151d1b1f1d0e121c11161b0b0b160a0c0c171c26221d281b1d26272724242c2c1f1a211c *1a26140c1517111e859e8bbfc8cb204269254359223b6221455f2749622b4a6a2d445c2e49672d *5076254a6a2a528230537f3a547b2e4f783850762d4d722f4c72284c72264063324a7628476c24 *4060253f502547602348601b384b1d39571d36561e38561c28471839531a354b172c491730441a *36531a314a1d2d412440501f3740132f3f1c364a1f333717212d1127351b37461c2d33162e2f13 *23301a2936163045142a381835401729310c23300b1c2404161d0d1f270514210a161e07161c0e *1e26081c1f07131a0719240f22210b152004121e081b270921200715160516210b17210d202909 *16240e1c25091c210c1a2e162b351021311526372440501f3247223a55304961335165314e5931 *5867335772324f653348603b53643551652e4f5f3f4d5d3c53643f58613c5a6337596b3048663b *586b37485e30475f3246572d52672e4f653b436134464d21363f24384128404e294356222a2b29 *3534283d4323303a1d2c331b28291827280d171e0e1e270616170e22361a1f1f121b1d21221d10 *1914262827202c32564a2c6f5f366550334b3e292c3629191b1d080a13111f280a1c1a0714150b *1d2214190c1d2a352a392b1a1d22111b21121f281623231d261714292c191c1a161b200e1e1e0c *2126171e25142021172223101a1d101c19121f210c171e0511180a101c071b270f1d1e0c18130b *1a0f181b19191a1b151d1a0818180b141f15162111161e0b100f141811141d1e0b141424262115 *212517232c111b271623250c1d1e141e201c1d1f161f2214212a181a201d2d331d171a26373b1f *36333b463f39403c182d2c1f26241d2a2f162933121f201926221327260f1e201021230a1d230e *1d230b1e30061e1f0b161c0f23230f20230f1c200e1a1e1218211823330b1a1f0a1c21131f260e *232e1a2a2719292813242914222218292a18201d1f2a2e26272a28313624291e2a2f221d313124 *292d2934301f2a2a2c3128212a2b1e23222321251e29211e2a281f2c2c1b1f211b25231d231e1e *25211d211a141b1b1e1c1414211914232b171f20171f28101d271317141b282611120d191d2319 *1f23121b1c151e1b0d212b101d200c1d1d17222d141f211625361d242f17353b13273514272c21 *2d30161f261d232a1b25211e3d4520314021231e1d252e1e2e35202f3021394228303a27353c21 *34391c2b371c282a1f3d511b3342273b421d2c3b24353f253949243f45273d471827361927350e *222f0f20251023280d171f1923290f232d0513170a141e0b1a1b09121a07111509151c0c121000 *061002131a000b0f03171c07131d031017030b0d03040700000400020000030500040503070c04 *030502060500050900010700040400090600060501000201030300020300030600030300040200 *030200030300000400000200000200000200000200000100000100000203080600000103030303 *0205000004010b04020b09020703010a0607090708030401000006070806090504070a020b0c09 *0b0c06140d120b0311130c08080c100b070e110a0b0d0c0e1112080c0a06090a050a1407040208 *050403080302070d01030403070702040100040600010100000300010800000400000100020200 *010000020100010200010300000200020400000200000000030500010000070200000000000300 *020200000200000200000000020000050600000000000000000000000400000500000200020201 *010000020000010100000202030501000402000102000000010003050001020104000000000000 *00000000000300030303030002000308010711080703021f241a16080a2431242d41432118133c *423e3740433840294b5055383a32455557384142475c6a435f76555f6d495e615a6e7c556f7b5a *67835b6c7d6177805976815a72805c6a795569795a69844e6b83596c81517289586b805a6c815d *6f8d647384566b826368794a60714d6777506478575f7359667350697b536d7a5b728a536d8345 *64815c688b586e88405374495f7f4964794d6180495b6f5064704c58704a61814869854d67814c *5d7a475c6953696d586b78515e814b658052647e4f6c8b4461774d667948637d4a5d704a62834c *62804c608143607349647b506a7d47667749606a4857664d6072485e76465564536179525b6c43 *5e734d61725365684b606c4457724c5d7d4a5f734c617549637e475c724863724c687d4c646450 *60744c5d6b4a5f704a5f72445a75465c654c58635d5f643f4e643d4c613e4d573f4e62444e573a *495840515b3041442c414e2f363c28333d2030451322360d1d27131d2c1c232d21242421333e0e *1925091f32050e1e0b13211318230b0e110a090b07120f1115150c0b0f030e11080a0b010c180c *0e1e100f170f140e131d19161a220d0e1a00030e040c0e0306110e141d191d27131d200c0e150d *0d0e0b17200e23260c1c29040d170c12190d140f0c1b1c1c1a1e110f1c0d141611151d140f1519 *1e29191b2020232d2a1d268da18fbcc8ca2d426229486023435d263856234570224a783153712e *527c30456f324f732e55783259842f57782d497f2d527f2a4a782a4b6f335279335073294f7330 *517135527728496b244b6028436623465f2443621c3957183452223b5020374d1a30501a325118 *314915384a1a334b1832461e33491f364a19344b1a364b1d3040162840172b43152a431d2d3511 *28441930401c32451926341a1f371221341725260b22320e212f0e212e1a28350e203508222d06 *1c210a1b200e1f280e140e040c1a0f2b3a1623330d161f0e1f360c24370d292d0f202f142f4811 *262e1124341a3543132e3911203c273f511c2c3922394d274b5b263e5b2e4654364c5d2f4b652d *4e64485c7235506d334b643c5877475f7d3b5373355a76436383415d76365166484f61415e6d36 *5072425c76404f662b4f6b3f546f254769324c6c3452732e44512d40512c4b69284452243b4d24 *404f2c3f4b334550222f3b16353b1a29320d1e2c0d19280f141c07192e0c1b24101c260c151718 *221c111b291b1e27111f24181d1f29382d3a3a283130260c16100e0b0d0b0c0f03070d030d1d07 *1e28030d10051a1a0e191f0c1a18100e1a171d23161e2114253021304215252720282f1e252c1e *29252121280b1f27131c180b1418141d230d1c221627300c1f20121c20111a26080d100819200a *191f11131a141a2113242b1528241d1615171b1911181d0e1c200d202611262f0a162117252514 *171d0c171a0b141c0e1a1c0a17250a181a0a1a2417283115231f18181a131c2613272b1224271d *2d401e3142263a3c27352e202d2b1821231f313f132736142c31182b3515212f18283118263116 *1c1c131a191018190b20251019200b18270b13231722260c1c24101b1c161a28141c24151b201a *29320c222817293b20323b1d27261f2d2b1e232d2421201a30311b2e2b2b4254202c2f2939332a *392a2f3a3f23272e222a272736452236312b292926313a2623202230302322221f232a22222120 *2423252829161f1b1b1f1c1c221f1821171a18151d18141e2023191e2014292c18232f131f2c14 *1e1d1622271d2322111d1e142022122b3d1727311725301b1f2c23373c273b461e2a3317282811 *202915252f1b3852253a441422221228312137401f2d36172d3d26303c1e2e36172c3528394625 *283923314b222e391b323a1a2c3e1e232d2036421f33401a2c2f1b2c321d262811292a1d223819 *2d351122331527400f1b2c12222b0e1c1f08141b0c1f2b0210140a1821070f14071625010b1404 *182403141e00030b020f0f08111503101800080d02080a00070d00070d00090a03030002040800 *000002050200000000020000020500000100000000010000000100000100000000000001000000 *000400000200000000000001000000000000010100000000030800000201000200020000050200 *0000000406000001000200020600000b0400040001000303010404000002070907040404080a03 *080c080a0c0c0b0e0407030b11061015120a1413130c050a0905090a0c07020109080503040202 *050307020200020000000000000000000000000000000000000002000000000000000001000000 *000000000000000100000400000001010000020000010000000003030100020000050300010000 *000000000000000000000000000000000000000100000000000000000001000000000000000100 *000000000104050200040600000104010002000000000000000000000000000000000002000004 *00000100000100010000000001020706060301000606030b0d051309040b1104191a1314130c2f *292428383a2a2826303b3a3b412f47534e4249494b5a5d4e4d635065754a5f5c4c5f6c4e5f6c59 *656f5973815d6b80576a7a5a5c75596d805c656e5a687c56687b5f79865b6e8b5d668e5566824e *6179576c8352748a6075895766795c647b576b85506c7b5368845063754d62795d697b4d69804f *5d734f60704c5870495d72485d734962784968814c697c4e678155657e4e6164465968434d6846 *5f72475770394862485a64426081435a6a4d617c41536e415876486377436778415e734d5e694b *5d6e505f7649607649667743586d4359614052713b4d5e385161314d633546533d445d3f465436 *5366405c693c4c604857643b4c6d3b4a53435b6b4246503748504652613b5269344755374c5f36 *4c6040536840424f3b4b60404b6037506033474a2a3c4a324c55324850273940313c422b3f4625 *3548273944253840252f3e2436462036351e39401d2229151e2b151e220d112008101c101f2a05 *101c020a0c0e1b1b0909100c0d100804090b0d0e0e201d0613220a0d1e04070c0a090a0b01060b *0b12061a20040f0f03040d07060707090c0b14120d090808091000020907090e070b0c10171d0d *191e030a101f1e1c1a1b1d11151c0c161b1a1c2a16151f20262e1e212f11171c0c0b0c0905080b *0c180e141b19222c22212d231f2583a490bcc8c92c43642e42552d49752a486b2e455d26467128 *48703353712a52843652782e4d742b517a395a7d355081284c77294d712751752d5670284d7231 *4870384b6f314462324f7624496f2546701a40681e3e62244268283c55284260233353192d501b *2b481d38511d3f5518394a2037561d39571c273c223d5718364a1d324a1f394d182d4c1d27421d *3048182e461926471a2d3a233a4f1e2f402327371428361d29381b262f1e30361d2c46172c3a0e *244017364f19262a0a1d3510233510262f153047182848182b421f2d3e1926341027311729411c *2325213037203f56223b4d1220471d3d5b222b4b243b52284a742a405b2f5477364c5b34516a33 *4f732f57724258724261814459714a6c925269883f536f475d75435c6f394f6c405e71385b763f *5a6f3c57773c58743c56712a4d803b4e6e38526c39506a2746692d3f552841633147512d3e552f *40572d48622b4a5e37506423404a19293d1e2e431d243d171f2d192630101d2b0c1b230d18250e *182916283b11213214233516242b141e23131f240e212914253118252d121a230a16210c151a13 *1e300e131a0a17270b141e0e14160d1a2a091d240c1f1e171e17161918151a1c1623301d293218 *1d2d1c1e261d21201414140e1c1e0e1f231620340e1f28192126121d23141d24091c27141a200f *111a0f141b121b1a13181a1317270b18230a191d121215141f25151a1e15242c11181816211f1b *2b2c0b1f2416202c0b1721151724111b20162d320d1e260c1f28111d291821331b1c27212c3a1e *24271f1f211e2c401e362b1d30351e27221d27351e263b1c2b391f2829223233162b2d1220250f *1f280b1922151b1f1724340d2133172a2e1d2a31202d311024320f1f220a192f0e1e30181d2e1d *252e122f2d1c272719242a1e22221e2d3a212622202c2e1e3a3d1e383b2426262f383f2e3b4330 *3724293e4026373c2e3e432836352e3a3629312f222c311a24261e2e302331341e272524353126 *31391f2520292b26192c331f2e291d26241723221d27291b2225161d1f20242e202026101a1419 *25281926291c34381d29381b1d29212c2e19232c1c2e411b262d202d34101d26172a3c20323222 *3a4821363a20272f2535341b2c43182d461e34422833421e30361c2b3b1e364d1c282e20334916 *2d43161d291d2a2c1d262b1b2b412031411927321e26291b253317293619283a1620281b2b3414 *313e152e351c2b31171b240b1929112031121d240a18210c1b1f0d1318081a230d172401091701 *0c1600050d000304040508030a13020808020c09040b0b01000000000300000400000000020204 *030002040106050302000000000000000003000500000201000002000001000003030002000001 *000001000100000000000000000000000000000000000000000000000000030500020001000000 *01010004050204020602000c00020101000003010003000002010200020805050403060b090409 *0802050504100a080b07060a0b070a11081011090d13090b0f0e110c010f06000707020b030305 *020208050107030306090009030000000000000000000000000002000000000000000000000000 *000000000000000000000000000000000000000000010000000000000000000400000000000000 *000001020000000000000001000000000000000000000000000000000000000200000000000200 *000002000000000000000001000002000000010201020203000001000001000002000002000003 *000007000101010200000000020000000006000101010100000007090519181518120a2732391d *1c153b3c292b2828444947383c3a3c454c465d64485d654f5b4c505a6b52627250677e59616e5d *61705a616e556984637585606f855d769157687d53698354606c5b5d7050576a5a6b7a6477885f *62784b6179545572505a67515b6b52657b515e7d4d6876536782515f694158754e697e48607a48 *60794f607d4860765060704f5d794750724e5c6d425c7244576544566b435b70455f6e4f506152 *65814c6686495d6d4a63733f5066435375404e5e3c5264345068434d593c4c613e4a60424e5f3d *4958455b653546593c46513f515e3a48513d43543b4867313e52303f4124374a314452323e5130 *41522a3c472d3d473b3c44293f4f2833422c40443d475d22374b3c40443040482e33441f3a4323 *333f2c3b57243c4b222a392b29411e262c25252b1e20261e20262125331f343c2638401f2d4022 *2d4121293a1723311f2124121e28161b2a0f141a0c102009151e10151d0d0d1911191f12121a0a *0e1405020a060b0a08060605050f08050e04080703060909090b060a090708090e1b200f0e160d *0b0f070911060d170c0d0b070d1003000400000100010502030604000a06030d09080609060603 *060607080e0c0b150d0d1d11161c0c111811080e0b080b0b090c080a1609090a06050c05011407 *030e0504110604060a06060d070a170f14779b83bdc6c9344c753251712e5b803859752f53813f *60842d4c6b3259823b54852e4d7b3453843457823155823a598132588239637c37578229577f2d *557b2b4773294d702c4d6f2e48663055792744682b4d701f47712b466b264159193d6923486819 *3b54214267233d5a2840561d384f15365114314417374f122f4d19354a1b354b20405e172d411d *364c143154142b4616333c142e3d153558223f541a2f4d20344317374e21434f2443601c334b11 *304f162843152c43182b41263a461a304a0b26390e2b4a0d2a4e2643612135472442571f3e4f1a *3c4f1728421f3f5521465b25405f1c44682046742d4b652b465d2046682c56742d52743b5f8636 *4c793f5f802f5c8b4468884b5d7d446688435f8544679044628a45688c40678c3c5d8743596d45 *62753a5e764056793e5b812b4d703e607e3c50723359713354663c5475364b602e4e6c32485e31 *49662f4f6c2a465e273f5e25415e2333421f34441422351c3644132333112235101f2f0c223608 *21360c162011212e0f24340b1c2c0c1d26091823091e1d0e1d2616262e0e1d2d0c1c1e0a212707 *121e081e280e2a3b0d181f111d210d2024091522141c2115202516202d132f361d2724151e1d1e *2121162021152228142027191f2f18242b10252a1a272b0c1e2311192014233213212d0b202910 *2027142332122222171f20141f210c1d20112126141c251527321922290f1c17121a1b1c252218 *23261a2224111e1d1a1f2e0d1f2612252a12262e14292c1b2739111e281427361b2b3b161f241f *30331c2d2e1e383c2031461d3741262e3b21312c22323e182b2a1b313a20374219323d1f303317 *26311d252e151e1b20202410262f0d232e0e2836132c3e1327390d1d27152a3c0d1b251022320f *1e2d11222a152435142d35142a311c283722302a282c2c1b272d1a272c242a2e1f2a362b383628 *3442324246283b3d263b3f2a27252d323c253934243c41212e282e2e3524322d1e313a1c271d1d *322e1a2b2b273336242f2e252e261d272a1e252c171a1419232213211a131d1b1521201423260f *121c0a1b201625271b27361b2f4116232c1429311520251e27321e3d4919233a192a3320252d1e *2734273e521e373f16384315253e1d2d4b1f2c48192a3f1c293a172c401c2d451b26321d2b401a *314212293f1b2b3e1e222718263b1e313a13242d1629361321281722251b2932172128121f2310 *262f0e1e290c2028081d21091e1f0c1b1e0a161f0915200d1e2705152001111d08191e03112407 *111504172002090f070d0f00060a00060d010610030b14000f0d00070700070d03080802050500 *0002000004000001000303000003010d0c00100f00010400010300030400020100020300060200 *080300010100000300000300000100020200000000000100000000010100000300000400010302 *0204040304000001000402000401000306040905020a0906070203080c00060903060305060a06 *0d0f040a0a0809080b0b0a0f1007131107111507101e110f16130a100d050a0c0f0c0a0a0f0709 *0b0705110a07090300060500020302040500000300000400000000000000000000020100000200 *000300000300000000000001060200050000010200010300020300010100030400020500020300 *030000070200010200030200000001000200000600060500040500000000000000000300010000 *000000000200000200000000020101010000000002010000020100020201010302050502010102 *00010304010000000105030201010000020004060505050407020b090305140e140b061b1f1a21 *2d26181e18252d26272d2937342d3d43453c4f513840443b4a4d434f5a4b5c6647596c47626951 *64785d646f5c676d5b697c56727e4a5f7357748b5b7a8d4a647554647f4a586e495c6e4b67814a *58714b667d496475475e7248626f475a6f435a6f4b5c6e55637f4d657a4d6587435c6f40525f45 *566639586833495a495a79424d633f5a72434c603b4c67425f733f5a683c4c6442526b3e4a5d33 *3f523d4d64344c5d424f673a4c5a34414f2c4656304b542d405021374d3240482e434d2c424f24 *44522331462e3c4b303d4226384b323b49243f4f303f4729404f283a442a39441c2d3d2e3f4b1a *27361d3e431f2f3a223e3b213f4d232e3221252e21262d282b35161f36152935141f2f0f223215 *2a36212c3d202b3b2322271c2e391822240e1e270b1d240b262d242c40212a381b18201829370d *1e221d273417252f0b1e2b141d22151e201b19210d0a0f080b1302041300060e030a0c0c10180a *171d07061408090c0f0a0f07121c050c1a01020804040705060905090a0309060d17180f060c06 *0a0e01080e050e0f02080e01090e081015050d17060a0908040b00030d040209080a0e06101d09 *080e04080f0b04070c0c17070714050b10040a0e000d0d04080c030f11010912050a180c080d19 *1d2207091d03050a01070e040b11060e160a111f7f9d8bbfc7ca354b723c5978425873374f7135 *52783655893859873a5c89375785395d7f3b52773a5685344e792e4d87385185395885354f7733 *517a334d7b374f7133486c2d4c7d2e48732d4e6b2b496c21426223416b28506d203a5d243a6222 *3d581f3d591e3660203c5d1e3d511e3d4f1f384d1f325723375b243756203d5821384e1b303d1c *33461a3350223b5623334c1b3550152f501f40591a394e192f50203a4d183341233f651d35531c *3052183d571f304c2037551522391d3d61172d44223a591c2c4a1c2d471a2f49183a591f34461a *3f541f415a2439591f375a2a405e23375329425f27486d223e622d4b6e2844602e546d3a527139 *4d7c3655763e59803e5c813d5a8741658a3b5c803d53723e648b375c8946658a3c5b8c45658d44 *5d6f3f61853f6587435c7f3e58843b4f84434c6d34587735577c364c69314b5f304266284d762f *4c6e304d6937526f26415a2a466525405c2943521c33471f303d1922281625370f1c2815233213 *25340b16220e1e27161d280f1425121f26061a2a0a1b29141c29081c260a1c1a141e29131d2713 *2129161f2714171f08141708121f0d1c2d0b1c2b0d1e1f0f161d0f0c1015161f131e2e15202b14 *1f2f1e28371c29291c282d171e2314192215232d0c1c270d182b0e1f3b0917251a2533191e2414 *191b0f14160913140c181d0a1d21121d2a131d26131c1d1a232419232912212c15252b161d2418 *253b1c2836182b4213232b0e222c16233716242f0d232e1b202515273a172531161f28202b2922 *2e3426303e1e3144223b4c233b4526303c1b2c291d2e3018303f212e431c2d36141d2d13233118 *2b39192b3e14282f1b242e192c3818212e1a222212283215283a16242b1119240d1d2a1b23331d *272d191921181d261829371f2c2c18202c17242a1d2f3221303227302f282f2f2b3b3e263b422a *373d272f482a3f4d242c332c2b2e2c352d2c2f30283b45283139243133273c3f25313422212622 *26282e292329383b2028322127251d2d3712201d181e1e191c12202726181a1c101d1f101d1d10 *1a25181c2018232c1a1e231e1f1e1e221e232c321d1f2518223112272f17253a0f22301d2c3b1d *28381b1e1c201d26141f23111c27141d2618314618293913222a0c22231621261e222b141c2e17 *263a1d25361924231923341524331b20311a1e241e2027131e280e1f2f1e243914232f14232b11 *27290c232915242f16192606090c09191f0a1a280b1c290c1c28040c15000b100a160a09101704 *0208040408010105060d1001060700040800000000000100000000000000000104000203000201 *000000010500020000010300000002000000000002000100000000000002000001020003000004 *000302000000000000000000000000000000000000000000000000000000000001000000000000 *00000100000301000002000000000300000100000902020600000204020704010405050501060b *03030700030802070406051110080a0b070a110712110915120b100a0b0e05030a09080a0d0a0b *0c0407070507010202050105060001000003000001000000000000000002000000000000000004 *000001000000000000000000000100000300020000020100000102000000000000000000000300 *010300000400000001020001000000000000000000000000000000000300000200020000000000 *000002000001000000000400000000000100000002020004020102000003000000000000000000 *000000000106000001010000010006000005000101010207090b0b02000d110c0f10051a0f071d *1d121d242825313f1f1e2729302e2a3a3b3648523d505945535943464e49535e4c5e6a50607047 *58624d6a7e56607e56687248515b54647b4f5b694d5b6d5872874d658454616d445e7b48606d4d *5f6e47507744516d4151683c4f64354455394a623a49563e4a65414e5742495e425c7037495935 *48553e3f512b405631475e274958444a5c3042532a404e33444b3c444e2f486a39475c2a3f5a31 *39402f4759323f542d3b47253b50273950273a44333b4f263240242e2f2535491a233d242f3f22 *262f20304120313f27313d232b361e3540292a371921291a1a23141e2c13213419202a171e2612 *1a2611121a17131d1f1e251419231b1b2b161c21182337171f1e131a241614171e18211b2d3114 *111f171a21161e27181d231621280f19231d132018131f1a23290c1820151d230f161f0b081c0f *090f0e050a170c0f18111a1319220d1c220b101707081705020e02000607020408040705020000 *020601010b0000070300090203090402060b0a0b0b0a0f08060805060502030507060906040c08 *080c09040509030304000006040901050903010c050b10020009080003060103100f1e140b0f09 *060a07040604000207010705080e0301060909090b090a13050b0102100901070b070e08081807 *070f090a0e09070d10050914060c08050d08060e0c08107f9d8ebec7c9305b852e527533598434 *5b7934526143567a3f557a345780395788335a8a2d52813458823660843c577e39577d3a57843d *64853b52802a57803a5572305d7c2859812649782c4e6a284465244c771d3c671e3f6c1e426426 *466822436428496a28416325425a1e3d611d455d1a415b1c3c5221475724405a264055273f5324 *415e1c3a4b1a416c1f42671f3f4a1f465d1f3560263f62233f571c3b4e1f3b57273b47203e5a21 *4c641a365c1e3e561f40621a36461831481d375a1e4158193650193c561b3e530f3357233b571a *384d1f42671b3d501c496d18415c2443622b465f223f5f2e4f6f2a4569254f6e234d7030526731 *5373345a79355278315674395b773f658a3e62872c597a3c5f86425e86396287436783405f8142 *60793f577547607d3f65903358703d5d843a52643559753253792957722a4c5d32557632587233 *4f6b2a4f732e506a3954642f577128435d21445b1e3c481e40560f26331528331e293c16283a17 *2f490d1f2705181906202b13232f06223508222f0d1d230a22300e1e270518220c1c1f0a1d2608 *1d290823260b151c152225172a270d21220b203008111e061c2713212609242c14202511242617 *2524151e1d162c2711242811202a132137162d3c193135162c2c1a2a380f2030182531121c2308 *1f2b141f2a0c1f2209162712202411202b0e232817293910223117233719253211262c12242d16 *262f162027131a220b212613232f1729310b1f261620231d2e2e1725230d252e1426310c233116 *2a3f1729412337321a2a241f3f4215292e2e32331c3d43252a311e292a202d341d242f1d2c3224 *3a42182c3518232a151e2109222e12232b15242f1228200d2a390f2125101d27131e240f242e16 *1e1f152c2e1020221c211c161a1e111e1f1d27261b2632233c4a1d27291c2b2d1e3132253a332e *383a26302d2a2425282c2d252e2f1e2d2f2627311d3a3d1f312b273a331d2d2c1f27282827261f *2933212b2c2233341c2929202e2d23262221211a1e2a20161d251a1d19181d1b191e1c13201318 *2a1f121e1a121d221615111718171326300d1919131c27152d42222e2918242916232f1b242b14 *222d202f3d0f2021071c1e12211e1121281725301b26311f2f410c222c1a2f450b2c3a13222213 *354118303d0b253a101d231623360a2433122c3a0c232b1224240a21280a21311513150f151f11 *1a220820290b2129071a1e071f2705161a051724030e1b050d14061821041018000912000b0f00 *0d0900050a00000104010603050300070800040400040500040600030000000000000000000001 *000000000000000200030400000000020001000000000000000000000000000000000100000100 *000000010000000001000000000000000001000000000000000000000000000000000000000000 *000000000000000400030703060200070000060105070002050003000004040201020201060408 *04040204010608050b08000b0a0a100b090a0f0709130b0e130e0a1406091409070d0509090814 *0a07060a070a0b03060c0306070201020000000200020100000000000000000000000000000100 *000000000000000000000000000000000000000000030000000000000000030000000000000000 *060001000000000000000000030000000000000000000000000000000000010000000000000001 *010200000000000000000000000000000000000000000000000100030400000000000000020000 *01000003010005010001020000010001020400000201000406060a0e071007030303010f1d1411 *120e1a2220222d2022251e2a373f29372d242728394f54323b403743512f475341596f424b5037 *49544150633c4d5f3f5060405371425d694d6a7b435865435b67425d71445366434d5e3c485b2b *394639494d304053344759264248263d47253a50343d4b2c3d502939411e3e4926353e1e384923 *3a452d3a4d26384a2132431d2835112d471e2d3b2433481623331f303f1e2e3627393e1e334413 *33441e2a36222d401a30361d26281a282b1e232f1b272b0b0e140e213119242f202d3f171e271c *262a152322191c24181c281527351a232f13212d1220220f1f2a16262f1722261c20241a1d230e *171a0c10181612170713190d1e1d11160f1a1d22141a1d0f111b0e131f040913071215030b140d *121c0d131817202b141715161e1e060c1500080a07191b081717091d1c020c0d0b0c161514100c *0d160c181e0e1e2607121c030912040c120a0f130709130c14110b181a030c0f050e10010c1300 *0d0e000504040708050a0c05090a050b16010816000b10040812040b0e0d130d0508090406080a *0b0b090810040614080910050a0c030e110a0b0b07091606080f091216010910040a12030b1c03 *02050a0a06090b0602010105040b00020900010700000301070b03060b00040401010703010607 *010500000500020c00021100040b050d0d040d1304050a07080c7a9f8abcc8c93d5b802f48763a *4e6f3a54792e4e7a3657883d547e335d793a5a803b527f39558d3b507d2e528b385f8d315a8d2d *5c8b3955802d497f334f813652792c5e812f4f75294f72244778274866244c6a2e456b2e476c29 *44711e3f5c23466d24446f223d5c283d572237691f416b20416320416820396326446b2143621d *3a4e1f3f581c36581c3457253f5a213e5b243c5e25415e233b54213d4e233f5d1f486c20335511 *3153223b5c25425a213f5923425d233c4a2035531a3357182a45102e512134541832510f2a501f *3758223f561d3b4d1c355923436824446f23406d294465274a7123416821455e24466a28406338 *55863557853e537b3b4f75345d7f3657803b628c3f5f85426287405e853b5a843f64893f648648 *57724465834562854362853f58824356793058782e4b6c3150783e53723050783457852d4d7932 *4361294f743049672c486327476e2743632c486b34475e293d59213b4e1f27451c274118213d0d *1a311127360c202d08162510152a11152312182e0c1a25101f330a1a2a0b1e28061f2e0b202f0c *202c0820380f1d3b0c142111212a0e24330e2126112c38141f2a0d1f310d1e2c1a181e151d2611 *1f2a13202d1d29340e262f141e29131f2f141d2b1d25241e212312222a15242617263a1122320f *18251a202819262c161a1d0e1e2f1c25291b1c1e0c14231d2936151c2c131a281c1b221415160a *1e200e1b1f131d27161b2513172017222f152026162d2f1b293e111f2a0e1e2b1622300e1e2918 *2025161f231e292c25273c1e374618242815222f282d2f172633172e3d1e262b212931212a3c1a *25321221321c29301a2f3e15212c18242d182423101a241620250d1c210a1a2011182117242d11 *2121121f2b1424331a1f2b191f20141e290e202816293018262f1a28261f23211f29271e282c26 *2d3124303b2639402e3b42333c3429373424413d23282b333f42292c2c253636212b331c202b23 *27201e251e2228242123272325241d201f1a1c13161f1e14211d171e1a162624181a131d181914 *1415131d1b111e28192429171e251421211b23281a18151c212d1925361e273a0d1e2a17222915 *2731141618121e240a171e132227101d261423300d192e171f331326321623280b192b15171c0d *121b141e2a0d19270918230d151a101e1c111813101517110e100c1216080b13060d1c060f1a0b *1d29081d1d04161405101c0612180f1925030d1e050e1a030912000b0b05141100060904000602 *000604000500000400000500020400000000000000000000000300000003000000000000020300 *000600010000000000000002000000000000000200000000000300000002000000000000000000 *000002000000000000000000000400000100000000000000000000000000000000000000000300 *000600000000000000000001000002000001010501000000000400030902060204020003000000 *0005040002040005080306030505090a0b0f0f03140f0413100a0806051011090a0a0c0f080b10 *0c080a0a050a0b0306080206010201010303000300000100020000000000000000000000000000 *000001000000000000000100000000000300000000000000000000000002000000000002000001 *000100000302000001010001000400000000000005000000000000000000000000000000000000 *000000000000000000000000000000000500000300000000000000000000000001000004000000 *000000000000010000010000000101000000000004030200010200010500000305080b06080712 *0d080402040f0a0c1c1518221513131a1e1d1f1f2e38382c3a3d2737482b38473c485b272d422d *3b4a28363c39404e374857284c642d48503947542f445b3242583a43583249573445532c435428 *384c222b3f203545283246242b341e31431a293e1a2d352438431e2d3e1c2e4c1a2431242d331b *283c112535182e411c2e371d293a182a3016253c141e30171e2d19232f131c2b17212f16262c1c *263120232a20212a21272c1d152108151e121e291216251517231a121c12171d15181a18141714 *14210b0b1a0a151e0d1920161f2b0d15200a09120a090d101218181d1f0f1c270c121e0706150e *06150b111010151a0c1217121521060b110d0e110e171f0e1d27080c13141218140d141312150f *05080907160509100d0d150f13190d0d0e090c1409080f0a0e1e120c130d131505121e1322290a *0e1a050309090a100f12160c0d160e0d1203041105070e040613050a0f00040801000605000606 *0410070a0f03000800000700000803020a03010300000003000604000302000701000800080e01 *060f00060904040b04020508000604010406060f00000400000d00000800030700000500000503 *000406000500000a00000200000100000500000000000200000002000001000700000500000900 *000800000200000100000100000004000403000401000601000d02000c7ca18dbfc8c93d546f36 *50702d50782e4f7032506f3b50833146793a5a763d587e335876345e7a3c577e3b537c3f52793b *567531547e37507b3158892a537c2d50722d5276314c7232496f2f51782b5079294a6f284c7424 *486f2a476929415c28435d2440682548671f425a1e3a632540641e414f213f60283f4e2736432d *3d542241521b37561e36651e3f531e3a4d21426520374e24445a213b531a37591d35521c42651e *3750233c5d23344f1e3c4f293c6423335324426429437321445e1a3b521b37561d3251193a4f1e *4161233e611d3f601f3c601d4152213e502545691a3b592a456d2f456d224a7330496b2e527a29 *476e2d55803052743e607c3c5a843c618c34537c295079335a853b6285375f8b3c57784860823c *506f3b5f813d59773258763765793857874460772f59803e587b314d763f4d7030557737567832 *587e2b5375284d69395d7c26486c2e47642347622e49682642611a324a2043561c2d3f1d272d1b *243d141e280d1e2c082234051c2f0c1a21101e2e141d250f1d180e1f2912181d06121f0611170b *17210a202e0e1d220a171e161e221b2321181a2b0b151a0f151a11131a161d260d181d131c1a0d *1f1f191e22151d2b1722211a2a3e1e232313282913262d16201d1a1f21191d23141c2a101e2d1b *1f2a0f24381126311520210f2021161f2a1c2023161c2314191e1718220e171d14242c16222514 *1c1a0d1f1f11171e1c2224161a1d151d210e1f230d1a221223251821271114202225360d22281b *253611283c1823291e27271623211b2b3a1d292e1f2239243a351d283a21313b1d273017282b1d *29231c2324181a1a121c1e18202d14232d112329151c26202722182a2711232318252d1f273215 *1c27191d2e0b14201722261d23271626221b232d1121211f2d361b1921212a2c22333623332128 *281b242c1e2129202329262930302d2c353c36331f2e2c1f27322530311d27252327211c282a1b *2126231e1f1f28321f2520222c251f251c1f201e22211e2223231c21211d211a191d13191e1918 *190d101b1712211e1a21241a20240c0f110c1219080e150b0d0e07120d09181c0d131d0d141410 *121a0b181f09151d0d15230d181b14120c09191e1012120b060910130f06090a08090e010a0e05 *1318050d0a090906100f08120908080909030b100b131d070d110a0e060d120c0a120f02070a0c *04050b0f0c050c0f010b1603100f040e07081008090e0c06090c06060c02070f00070d020a1600 *000200060604040000030302010905040400020300030101000200030204030100000004000000 *000002000000000000000000000000000000000000000000000000000000030000000000000100 *000000000000000002000001000000000000000000020100000000000000000000000000000002 *000003000001010000010000010001010000000000040001060005080404000001050400000501 *01050603020409030403030a05020807010b08050a0a07100d091212070c0a00060f0a110a0407 *0909150d05040a0502060206090106040205000001010002010000010001000000000000000103 *000000000000000000000000000001000001000000000000000000000000000000020000030000 *000000000005000001000004000100000002040300020000000001000002000000000000000000 *000000000000000000000000000000000003000005010000000000000000000000000000020003 *030005000006000000000000000000000000000000000000000000010004040208000005070604 *07070303000b1c1a0b110f110d1216171010141a111e182026271726301b232f21373f252b2e21 *2b3923292f242e353a3f57263c41263e4b2c3c502a43581f353324373c2d31322a3d4630304420 *30391e263b1e223416293d16243b161d221c262e1f2835151a26131920131b261b1d2912222517 *2023131d26152535191c261a2228131d3112151e0d1a241422252120220a131e0c0e1714141912 *13170d171917202712202b151c1f191a150f14140f161d19130f151e240c111a0d1c1e181e2817 *181d0d20230a121c0f0d150d0f110c111e0a0f170f121a0e121b0f23291c2526101312111a2b04 *090f0913170c0a130d121b1115151a1810120f0d0e0e0c060b0f0d0e140c131e161d2214131e12 *181e1314150d13141c161c0f0e1a0a131204040f05010b07040b0a0501050a090a0c0706090c05 *060a06020c04070f06081005050b090d0b06080800040705010809071405050c01010900000500 *000003000000000000000100000100000200000000000000000000000000000001000002000000 *000004000003000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000002000000000000000100000000000000000000000000 *0000030000010000000001000005000000000000030100010000030000070003799b85bec7c93d *59823350782d537d30568b3056852e547d3a5b81305772385f7f36537c33528438567e355e8a3d *60893860892a518231547d365280214c753150732e4d7b2f517c29507d2b4f67294b7023486825 *4a6d21426a2943641f3f64214366143a591f38541e34541b3f611b3a5420406219395d1e395328 *40591d405c1b3e592039551e41541c2d5023416a21385d233f621d36581e445a213c5321426020 *3b59234060173d66213f581c345920415f2146611d3e5d1b3b552143601b325c1c3c662749711d *43760e3b571939601f3e6319415e1d3f641d44681e446e1d3a601f39691d416a2149722b4b7f2a *4d73294e792a55852e55873759812a518636608c31598031607f3f608a42648936528046618934 *5e943d668e3b60782b55733453803b587d3d5278374f7833578c2950752c567628597c345c761f *497733577e27476d324469314d6b274c6c1d3c571d405820426d27424f29324416293e12253b0d *1f320d2338051624081a2b0b141f0a1018090e1a09152507152002152706151c031e34081e2c0b *1d270a171e0912210b1d2c0d1a240c0c17061620101a1f0811150c181f131c2306141f0e172216 *1d2811181c0c24300b1c25182732121827141e290c1f30141a2b14202e0a131d0c182608151609 *191c0e1d271124320e1b2908111f0f1b1f07171d0e1c1d0e2328091d2714171f161e2c141f270e *192213232d0d1d1d132530081f2c091a190b151f071a230d1a32111b25061a160b191e05171e0a *1616142027161c1b0d1826131d261520210b1d1e11242c142e3c20304123313b1c263121252a1a *30371c2d3412243216232b10212c1025300f1f2b102127151d2610232a061b1f0b1e27121a1c0e *1d241120240b0e1e10161f0f191a141d2b112127142228142b331726280a1f230e262b1d282b1b *1e201f23261d2328232c2b26313e1c272422393a2c3126242820242c2121323d1f24231d20231b *20221622212029221e222a2f1e1c201a1711201c1d191b11111810150f0a1510081716100f0c0e *07080b141813151816171a061112041317111d1e0a15191212130b110e0f121304101a07172112 *121a080c1009141c05080d0b161e0b1619081a24081a170b1d1e041016070106060709080c0e02 *0406060c0a040a1704131c0714140913160c120c030609091018050b10020d1707162203071200 *051101061006111505161f08191e04090c020910010b1400081100060f01081403111900111600 *080e00010a00081001040900020e00020900000100000400010000020300000600000300000400 *000400000000000000000000000000000200000000000200000701000a00000000000000000000 *000000000100000000000000000200000200000000000000000000000000000000000100000100 *000400000300000000000000000000000002000000000200000003030400000402070300030400 *0303010000000206010809000308020208000608020804080c070f0b07090a05160b040a0f0805 *080e08060c03060703070601060306030007020104020204000300000300000300000000000000 *000000000000000000000000000000000100000000000000000000000000000000000100000100 *000200000000000000030000030000010000000000000200000000000000000200000000000000 *000000000000000000000000000000000200000300000000000000000000000000000002000000 *000200000000000100000000010000000000000000000000000000000000010500030400010100 *010100040000030203000503080d000407041118010c0c020a0a121518141e1d11151513141317 *1018191d1f111e2718222f1a28331127390b1e2a1023321121271f273b17202e1422280f23311a *2c350d2330141a2d161c261c223214222c0c1f2a0c213c0b1a23111f2b122830121e2e0e1b2519 *19231318240a111d071014121b210c1d1e0c1a1e0c1a22131317121d2b121415141b29091a1f0e *181f0b1818080e1707111e0e0e230c0e1d03090e0b10180d171c041618151a1d0d14180e0d1206 *1522040b0d00131f020b1500080c04131402091106030c0c090e09091201070d03080c00050900 *081000040802020b02060806081001020800010801020501061203120e060d0d030e1301000700 *000503030800090b00050f000a1000010500040606050900000200000600030a00000800000800 *000100010300000702000100000500000300000000000200000200000800000200000000000300 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000900000000000000 *000000000000000000000000000000000000000100000000000000000000000000000000000000 *0003000005000000000000000000000000000001000002000005000006000007000005799683bd *c6c840618a2e5f8634537e34507f38588a354d7b384f7534527637538033568032527c3957803c *5479355173335772335781304e772e4a762f4f6f2f536e3154742d4f7b29477536507225466d28 *496429486f22446e243f5c1e3d58213d571e3e682543631f3a541e406720415e1d4166203f5520 *38581d3a5c1f375a25455e1c3b5b1e3b571f3f5c253e5f244366283658223e6b21405229456420 *3c641c3e552046621d406621425520425d1a344c1d3d5920365a2039571c3e5e233c5c183b5b14 *37561f3b531e47651d3e5f26446f2a466e23416421426729476a264b6a1f40641f496d2c507925 *466d2b50822c4b6f365a81355b7f3656782f587d314c7b335981425c853d64843762824061773b *588442598640618e42668e3f648a38527940607f2d50762b5274284c6a2f567433516f304f7b2c *4d772a54812b50793058852344622d48682a4364243e552442601d426820394d1a28371a2d4315 *2633131e2b1021350e22310a13250819220718240a18270b1b1f0d192509131607172006161d08 *172106111d0a141d060b0d020a1508131d0c171e0a161e0715150b15190c1e260d19260a1c2813 *171f1d2323182526172222181f271d242b141e270e1b1e181f250915170e151e0613160d161d07 *141a0b12150f1c260e151c0a161a0c1a210e1c270f17190d172012141d17171c141a1a0d1a1c06 *14190f1a1c141f1d10181a131c170a152213191e121a1713202e0d1f230b1f2a171e160c171e11 *1b1d141a181720250f1e260d2028151e26151d271c2627202d35233040202a401f272b222c3a14 *2a37111f24162929172735181c23161f211c2626141b21111b200f1c250d2127121f190b13170c *141b1418190d151f090b120a101d1220280c11110f141111171d172629171a1b171a1c141c1d14 *1f1c1121231c211e1f24191d1e1f20232522242524191423252425242225241e1d251d21211c24 *251c1c1f16231d1a1d1e1d1e13191c20201920151820131d1a0e1c17181818141717150f140f0e *13110916130c18100b0e0a06070c0f0c0c161215080b160c151b10162007100e0b19150515170b *0c180b080e0d100e0a16210b191d0516200b181f0a121508151a11131311171e101e29081a200b *1116070b19080c18071315070b130b0d0c050908080909060b0d031119091628010d0f03131404 *060706071507101304040c040f1b020d1704131805130e071722050d1b02040903030602091a00 *081701081600081704090c00050703040700030501000600000500040600000800030000000300 *070600000001010000000200000400000100000100080500010000000000000100000000000000 *020100000000000000000000020100000000000000000002000000000200000000000100000000 *000000000000000000000000000100000000000000020500000100000000000000000002020100 *00010000010007030006060001000101050506070806050409070707080b0a0a0a0709140a030a *0f080f0c07050804150a070e070307080403030406030102010000000002000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000001 *000001000000000000000000000003000000000201000001000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000001000000000000000000000000000000000100000000000000 *0003030000000003000200010307020605060b0b050912120c0e09080b090f15021213081a1807 *1212141a1f161d25131b171d1f291e2b331e202810202e0b1425111d2516232b1a273511192a13 *1e200d1c220a1c2d0b1a2406152003132008141c0e0e170a0c0b0c0f0f0f0f15080911060f1601 *0c1a030a1008101300070b04080a0812130a0b150c131d04090f00020902070b00090d00090a01 *050e080a0f07050804070e000409000309030b0a060805040b12090b0a08081301000302020501 *070b00030500050600070602000206000101000001000105030500010700000500000300010000 *000202000400000000000100000100000500000200000000000000000000000002000000000400 *000500000800000000000000000000000000000000000000000300000100000300000000000000 *000000000000000003000100000300000100000000000000000000000000000000000000000000 *000000000100000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000200000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000300000400000000000000 *000000000002000101000000000000000200000600000300000000000004000004000106000481 *a08cbcc7ca374c843152833a577d2e4e7534547d34507338507e2c577b2c5681425f8b3759843a *4e7f415684375a8139648d31577f2d5c8133507a324576315781304b7533557b2c4d722b52742a *4873294d702d4a702541642d435f2e445e24456d2448671f486a1e405d223a5b213f5f1c3a5a1f *3d5d223e691d3f6219415d223c542440571d47652242622134652540632043641a426c1b425f23 *436c2144641c3e63213f6e243e5c2b3c541a3d6b1d3a521f405c2646611b42642242641b3b6422 *3b5d183b541633521e3c65204662224065254b66214066294a6e27416a2647741d416820416628 *496f2a52782b4f7a3356822d568934537b3353812e5a88395c89345a7a306181325f843760873a *5d8c3a5a8635577d435f783c5e793855702f58823253734353763c5371355d843650713a59782d *47703150752c587d2746692948702b436c2a456d1c3d5e21435f2547611f44621c30491a2a4417 *25341a25371514270a1c27081b2b091e220b1f2409140e0a101e0e0f18070a16070e19051b2100 *1516050d15060d10060808050a0b0c1110091217040d1f05121c020b0e08171b0813100a161513 *10150f111b11171d0b15180d1e1f101a1e161a1b131d2318241d141e210d1929181d2b0d181e0d *181b0515170a1e1d0812120a1219111521131c210f1b220811160d151d0b181c0c1a1814181f0e *19250c1627161d2f131a2013181d091d1a0c1c1c0a1a17090b0f0a17120c110f11161a07112108 *13190d1a190a151d0c1a1d0f1c191518181721271b1d24182823132221131e201c201e2f352e21 *26321c1e1f1b242d1a2629161b22141e1c1219180f19130e1d2409111310172115191f0e141607 *172011141904131b101811121c1b15161c16151117151208151b09141d1820230a1310181a1e1e *2014151f1a141c181f1d171620221a221d18140c271d13232a262428191f271d261f181f222929 *2e2c1b22201e27241e232423211f1b201c1a1a1d1a191c1a1a1b19141118190f17140c121d1818 *1d150c150e0c0d0e07090b06060b08080b0b120d0a14160f0c0f0a0f120a0e1a13141813171c17 *1d1a110d0d061317111f290c1d2108130f0a15170b1d1a0a0c0d06101508191a0d131f0615160c *1a2009181e0c14180e131e08121b0a0d16080d1d121116090d100913140910180e12180c0f160b *161a0d0f13000b1a000a1b01091603080d021211090e18010917010a18010516030510010f1806 *100b03090801061000020a00020c00000801030d00000600000400000000000300000000000200 *000100000000000100010400000000010100000000000000000000000000000000000000000000 *000002010000000000000000000000000000000000000000000000000000000100010100000000 *000000000000000000000000000000000000000000000000000103000002010504000201000200 *04000002000002000200010000000200000300040303050306050209050307040f0b08100b0a0e *0807140a0516160e161111060c0d080b080907011002040b060207040401000304000300010300 *000000000000000000000000000000000000000000000200000100000000000000000000000000 *000102000200000201000800000000000000030000010000000000000000000001000000000100 *000000000000000000000000000000000100000100000300000000000000010000020000000000 *000000000000000002000200000100000000000000000000000200000000000101000201000200 *000000000001000000000000000100000001000101000403010700030300050503040200070a09 *090c06030a070b15090c13000913040b110e0d18030c0c050c0c09070f020507100f1505081400 *061100060601090a00010103030606010a00030b05030a04041301020703020501050604040102 *000201000500000400000700000800000000000000030401090501010801020703030a08030a00 *000800020500010400040100060703000501000603000902000100000300000000000100000000 *000300000003000100000400000600000200000000000000010000010100000100000301000400 *000400010200000000000200000100000001000000000000000200000000000000000000000100 *000000000300000000000000000500000100000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000100000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000200000000 *000000000000000000000200000100000000000000000000000000000000000000000000000200 *00037da28fbdc7c9395b793b5a753058773553832e4f773050803050753b59813c5a79405d853b *578233598b355878365276315d8144577c354e79354e7c304c6433526c2b4d74314f6d274c762c *45692f486a2e466a26457221456a21455e2b466329446e27485f264568223f5d233d5b1d3d5321 *3d62223c572240591f365424374c213d591d3f59223f57213f5e223f631f425a2542521c3e6525 *3c52223f651f3b5222476a1a3c5d2346651a34531d34501f3f52233e541e4267223d58233f531a *3552173557264252223c53153a641f4266223c651d3b63203d6222476d20425f21476a20416720 *3c672443671f4160274d702d4f7130546f2f49713456753c50733d5277395c8631528a455e8445 *527e325f853653783d67883f63804264823f5585375a852b4c723a597e2e4f693a5d8432506d30 *597d334772335672384c752c506f2943541e49641e3d602a49651e3f592241572b445f21394c17 *3846192d370d26350c2227092023131c220d17220f121807151a060f1404181e030f0d05151611 *14130c110d05100e06110f030a13081210091a1d06150e070b080c15140f120f0b192408090d05 *11160313150b180f091d1a152721141e17151e1e131d2318171d0a1318161d150c1e1e0d1c1c13 *1a1412121010151918161508131c0a11190f181a0c160f0a1711101c0d0b0a0d1516140e131608 *0f130a151111130a081a170b12090e16170e171813221d0b1d1d0b151a0e180d091a1504171a14 *1a090c161d0c111d11171f091b251218160913090a1e13151913151c131c1b0f1e221e23262a18 *20281f1c17111e1d151f17162016161a0e1314100f0e121916110e181a0b14140c16181017170e *150e0d150d11100b0d08100d181a0808130b09080a160f121f1d0e100e160b09211e14171a1517 *1a1318222a243323242c1e1b24201e261618231a21262427200f251e1c2420122129171f170e20 *2a18251f0d1e1e1017171318170d16170f1417171d2012181d16202213161a0c09141418130a0f *1b1612180e0f130812160a090a031111050b0e0712090f140908120e12090f150b0e130d1a1a09 *130f091c1f10161e100c0f110b0f0911090905000310180a1e1b081c19091a1e0b0c0d0c120c10 *131b0c1117060a10070d0e091014020d0c04151d09090f0b00030a0601090d0a080d1300060605 *080806090606060005060c06030403070605060800030800030200030300050601000003030800 *000000000000000200000100000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000010000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000702020101040200000300000000000101000c0300050400050a01090d060b *150e0b0c02110d04150a030b08030b0800100a030a09070d050203030104000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000002010000000001030004010002040400000201000000000000000000000001 *000000000000000000000000000000000000000000000000000000000001000000000001000100 *000000000000000000010000000000020000000002000000000000000000000000000000000000 *000000000000000001000000000000000000000000010000020000010000000000000004000000 *000302000001020002000000010002080002020507020605000300000500000000000000020004 *010004020002000300000000000000000002000000000002000004050001030002000003000300 *020700020500000000000000000003020001000002020007000000000400000202000000000000 *010000000000000000000001000001000302000000000000000000000000000000000009000100 *000000000000000000000000000000000003000001000001000000000000000100000000000000 *000000000000000000000002000001000000000000000000000000010000000000000000000000 *000000000000000200000000000000000000000000000000000006000000000300000000000000 *000000000001000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000006000006 *00000a0001859f89bec6c83553862a48823453803a598432527e3253822a518134558335568133 *507e3b5a8b34528a30507e2e4e7932558b355784345083334f7e30527a2c4d702c4f7e2e4b7328 *4e78254a7b2c476a284e76294a702a457226476f22435e1c426d2244711a40612142621d395d1d *365b243254173660213f6922395b1634591f3b5e16306022426d24426f1d3f701e436c2342661b *375b213d5b223e64234466254473253b591a37631e3c691837671f3b701d3b5c1d3665283c6820 *425c243b571d3561163c6a14415b15336518375f1d3b661e3a6024446f223e601d3c651f426f20 *3d731f4474204879234b7a23486d2a4d77314f82284b832a4e832c5080324d75395b8b2f487f38 *56803258733b5c7d3b56803e5c853c5a8d365b7a3257803f5b7f2e4b723858863552862d466b2d *4b763348702d4b72264b70344f77294f7327427126486a27498222426c1f395b1d3e5b1f436622 *395223394b1c2e541321310b1f38061327081321081424050a13020d1807111909091902071902 *0613030b1f00071003050b03091409050d01020a09162300091a05070f090b1706050c05050c07 *110e110a080d060e06040c010b13090d0f110d1b0b1815121317181e1b0c151d06121a0e151a08 *1419080e1f0b111b0b0d0f08140f0c0e0d0918180b0b13110b0f0d0f1a070c1709080c05101710 *1310040709030b0c08070e090f120e0c180c11140b0b0a03090808110c000c09070d1607030c07 *0615050c22090a13040a0f0513160b130e0d1d181014131412180c10141011191316161523231a *1f1c1e1f201c1f1e181c25161a2815121f0d131e15151614191f0409120a0e0f0a090e070e1b0e *0c170c0a181017220f0e17030e15040b100a0f0d0b0f1307081204040a07070e120e1a1217170e *121411141416170c13110f15150f1307111d24251c170d211d141d191623211a241b0f23272728 *1e1a1e19161e1d1d181b1a1f120d1215191e1e1a2225141214181f1a171613131115140d090a13 *1310120b0b0d0f0906080d0c0e110a03080f040806080e05080e04090603060c08090d06030504 *030904020700020a00000c03000302020004000301010500020b01030901020906060f01000300 *000002080902060508030b05081005000501040900000900010500020403070b02020600000301 *000402000404020900000600000200010801020800010601000600000600000100000400000700 *000602000701000000010700000600000100000400000900000400000000000000000000000000 *000000000000000000000200000100000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000000000000000000000000000000 *000000000100000000000000000000000000000000000000000000000100000100000000000000 *000000000000000303000301000002000103000000000004000305000400000404020403040410 *0e070f0e0f0e0505100802110603100a0909060e0a080605000409020304000002000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000100000200000000000303020100000101000304000400000000 *000300000000000100000000000000000000000000000000000200000400000101030000000000 *000000000200000001000100000100000000000100000200000000000000000000000100000000 *000100000100000100000000000002000000000000000000000000000200000400000500000000 *000000000000000002000204000400000a00000701000102000400000103010305000000000001 *000500000a05000800000700000000000000000000000000000001000100020b01000900000701 *040a00000401030600000000000300000500000401000900000000000100000300000000000200 *000000000400000300000100000000000000000000000000000300000500000100000300000000 *000000000100000000000100000000000000000200000200000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000200000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000200000301000000000500000800000000000505000200000401000004000506000504000d05 *010d0300050d040b88a295bdc6c935517938587c415c8038587d34578132577c3562833957842f *52872f537d3360812b628b34638d37558031537d3158802c5084264d7230517a3457763353732a *4d702e4f722f4e76264a6d2144682d516b294b6320436625466b27446727486d1e456926496320 *466d1f3f6a1740571e4666224256204062213c5b26465a203e611533531e436922437025486d24 *4a62263f6226465c183d5c20436d1f416225466b1d3f5023456226465b1e394f1f42641c3e561a *3d59183c58163a651f405a113d581f3e5d1c3d62153757173f57153965173c651e44681a486f1e *4c7225446823385f1d476c234b6e1f466d224e7f2b537b314f772f557b38517c34537f3158852a *538b375d87416486335f883b6483345f8a436689355c852a53812a51812643752e53802d4d792e *4d6f2b53722b5877274d6e305273224a6b1c4265204a6c274c6e234860234358234162163b5521 *3e5a2341571a2e46122629101c220d1d200b192007121e000a1403091b061720010b0b02111003 *0f0705100b02060601040000030203121c01040b01070d00090805120c07090806040205040204 *070b00080f030a09020d09040d090f0d06070a091608050a140f0c130c161e1a0a16160a100d09 *170c020909090f0b0b1013031411050e090914170b11130b140a090b070e0e06090a0507080604 *090b060b0b0a0b0c070c08060a02050d0707150e090e0b0a11040d11140c0d0b01090d0a0b090a *0b0202120b0409020408030b120e07140c08151805131207130d14150f0c1c131c1a140a0d0f1a *1e17111a10181f1a192021131e1c141e14111a0b121109120d140e100b0b070708140e020e0d06 *100906160d0816100909030008060f140b0a0807050607070e070a0903050e050b120714130e14 *17120d140c0d140a11120d0609090c10050a16080d150e151409161a060e110813130c171a0814 *11060c13050f1a0a0e1108130d031309000c120e0b160e0d0e09081509070d04060c010a0f060f *0802080a06030703050403030803010300010400070b0607060208080603020400010100030004 *04020202000100000b0803040100040403000605040b05000c05000400000600010c03060d0604 *030403000101020500030501000000000400000000000001020204000002050900020000050000 *000000010000000000010100010202010000000000010002060100020000000001040400030100 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000200000001000000000300000000000303000002010202010402000502000d09010c *0b04110f050f0f07121912070c060d0b00100a010404000607000f040002020000010000000000 *000000000000000000000000000000000000000000000200000000000000000000000000000000 *000000000000000000000100020201050000040001030000020000000000000200000400000000 *000000010000000000000000000000000200020900030300000001000000010003000000000000 *000100000200010300000000010000010000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000100000000010100000000030000000001000000 *030200000300000100000000000001000004000007040004060002060600000200070a00030a00 *040306090403040207050300010100000100000000000000000000000000010000010000000000 *000000010000020300030500000200000000000000000002000000000000000100000300000100 *000100000000010000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000010002000000000000090f0806030e04000605020401020402000403030503060801030906 *09080c070d09060c0c090c84a390bdc8c8305a832e58753a55742962823052882f557931568630 *54812c55812f527f3b5e8b2753832e558534608a31587e35598731578a3153832b4d8231568430 *527a2953752c55763054762848702e4d6f2445672b4770203a6a204672274c7021476924435e22 *43672141611d3a581f3b661d43691d456b1f49601d46701f48721e3e65233d61244065203b5817 *37532443681b355d2443671d3e641a35671d406524486a204269183a601a375b1d43631a426818 *4569173b5b1e3b551e3763143e4c143959183f66143f5c123c621b40661d3b5c25425b2040611a *3e6716446d16436c1b426c1b3b5b163f642e4c6d254c782a487a2b52782f5b882c5589284e7e37 *5b8335618c335b823b5c71375d85375d83395f862952803552832b5b822f5378364c71334c722c *4b7528507627537a244c79244a781f4466244259274e752342642244681e426b1e48731941691a *466b1c405317374d152b421b253f1e283708232c06141e051423040f1c06121202090b05060d02 *081600071502040e000409000c08040404000708000408020804000a0e02070603060600070800 *0909030c0b01100f070504060807050a0a030b0d070e1707130f090e0d07120d1215101112180e *13160d100a081210000b1201080c04100902090203050507070502090602060600070605060700 *0907080e090a09070f0a0708070706040803060b05050701030602090a070c0507040710090405 *0c0500070a010c0d000a0f010c0808120a0a100a0b0d0f091a181315080912100c161b11121417 *19171017141826161a1f1d161b14171710141f1e091417030e13030c07080f05040c0305050602 *050301030400010500030500060a09080500130902080504050206000006040500030401050403 *0508050a04000808070906050505040709070808111009030b0805160d1113050c11080c0e0c17 *130b1d1e0c07110a0a160d061210120c0a1012050b0c060d0d0c0707030f080403060500080c06 *0c0c00050601060104050102050100000002020100050401020700020600010100060001010100 *000001000000040300020300000100050400000100040000030500000101040400030800000102 *030500060900060100040200020300030507050700030501000000040100070801070500040100 *040200000002000000000100000000000000010000000000000200000500000000000100000000 *000000000100000000020000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000400000300000000020002070000030300010200000000010700020103030402060a080a0b0a *0a0a12100b050d07040b050a0a090f080c0b0a0b060c09050a0800020100000001000000000000 *000000000000000000000100000000000000000000000000000000000000000100000000000100 *000100000000000000010000010000000000000400000700000700010100020001000100000200 *000100000000000100000200000600000000020200010300030400000300000700000400000400 *000000000000000000020100000001000100000000010100000500000200000000000000000000 *0000000000000000000000000004000000000000000b0400000000000000000000040300000300 *000400000300000000000000000000000000000200000000000400000400000500000000000100 *000100000000030c00000200000500000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000002000000000500000000000600 *0000000000060c1800000800000404080f00040d050d1200050701030702000305020806041303 *000707050a03030a0000030a060685a693bcc5ca415376365685304c78305479355a752d507a30 *4d7d33597a2e4c733853813c5c822b4b763b5b833a587b294e76335e7f33558233587c34517830 *547f324e7a365079344d772c4b7d274a6f2945692d496d2c496c224b6a2b487229486f1e3b6620 *416d26335d24446725445f223d5e263c55243e612240621e3b6327456d21415e1e3d5a1d3f5f1d *3b57223b5b163350193250163b5b243d621b3a651c314e1c3b522137511f405c2942652436531f *315d183c601e3e5c1c36541e4266143d66233f631129521d3b5c1635561f335a1b395a172f5617 *3c6222446b21426521416024436822426628446c23496a1b46712b4d6b2f4c712b4b712b50802f *57842e5c8b325385385779335f89284f723562852d5079375182324f71355b812f58742f537327 *4d77324f752644682b4c82334d7a1e477e284869214969263b5229425d26425329455529435323 *3b5f2241641b35521436541a2d41182a460e24390b161f091321080a1b05060e00000601080805 *0908040a0503060a030106040105030306000000050b0700040700010000050601040300010801 *00050b02020000000000000007010103000008050300090400050e06040b04080b09050b0e0e0f *0d02060a050c07080d090c0902030a0001090402040504070702040b0506060203020403010005 *03010500010406010003030105020504010006030202000a00000a05070a020003070302070301 *09000506090605030300000a02000601000505030403040608060402010714090807030c0a0709 *0e0c1d190f251e16181e13141e141a170a17170915160a0b140c0d030004020504080706030401 *020400050000030000010000000000000004000000000000000100010200020001000007010008 *05000805000b00020d070403040008130a0a12000c07000a0b0810070213080111090110060108 *07090508000c10040c0801090b02130b050900010804020c080a090c04050d030407000e040106 *02000a040008050206010006020000020401010001030000000004000001000005000000000000 *000000000000000000000000000001000000000000000000000000000000010301020001000001 *000003000004000000000000000000000000000001000002000000000000000006000000000000 *000100000000000000000000000000000003000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000003000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000000000000 *00000000000000000000000102000400030001040300040100020100000400000503000904000e *030309080406090b0b0b03060a050d0a04060a030b030004010304000002000100000100000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000000000000000000000000000002000001000100020200010000 *000000000000000000000000000000000000000000000200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000003030400000000000000 *00000000000000000000000000000000000000000000000000000100000a000006000100000000 *00030000030100020000000000000000000603060a000005000100000401000200000008050006 *000105020303000005000103010900000100000000000000000000000000000002000203000000 *000000000100000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000c0e170000000500000600080600000f11220000080000070b060907040a08 *0808110e0f0703100502050b000408000a819e8dbcc7c83459892e507d27518138537630557531 *5c7d3a557737597e2a50832f5783365880294f822b50753a557b3254853657842c4d782c4c7237 *5e802c528529507b264976234a7524517e2a4e7125426c28446b1f48761c436c1a43711e446920 *42631a3e5a164260193a5a1c4263193f601e3c6b1c3d611a3d6622435f1a446e1a3e621e426720 *466c1d3b67193658213e631f3f55193b5816365b183c5a123d6a2242651a37560e3158183c6d1a *3c631b3553183a4f112f50204363153a63113b5c1f3e6a1c34590f3c561941581a405f18385317 *34611b39601b3c60153f63113c66153e681b3f67214b752043702e4872274d73264b7420507c25 *4e7027547e2a527e3059883257813558822b4e7a28507d2958852852702f577f2959842d4f782f *5176234972244c812950822657791d456c153d611f435f223f571d3c641d43642343731737581b *3755203c551d34472336421d3a4c1225400b1f3501192a06141e000a0a010d0c00050501010501 *000100000500000500000900000000000000030000030000040000000400000200000100010200 *0000000301000100010500050100000000000005030206000304000500070900030c030207040a *0c0d090105040106030309000401010b040107040103000a0e0505050200010200020400020600 *0703000602000802010a0701010101000200000000020200020500040000030000040001040002 *04000005030000010006050000030004000002000001030104040c0c0509090a04040800040907 *0b0d080906050e0a1415081a1e1b1b1a120d160e0a100a02070901030400040300040001030001 *020000000100010000000400000100000200000000020001010000000000000400000000000300 *000000020100000001070100030000000100000100000200000100000003040100080204060007 *0b04040103090504000401030303070401000505000b0509020206090604040500030500000100 *010300000100000000000200000100000000000001000000030000000000000000000000000000 *000000000000000000000000000200000000000000000000000000000000000000000000000000 *020000000000000000000000000000000000000000020300000000010100000000000000000001 *000000000000000100030100000000000300000100000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000200000100000000 *000000020000040002050003060402000200000400000200000000010000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000003000000000000000100000000000000000000020000040400050801010300010702 *020600010700000402080900000600000000000004030408080900010800000602061800020500 *000700010100060c03060702040d000005000001000509040409000003060c1002030900000403 *0609030c0c00020501000200070400000400000300020802020800000002010500010301070700 *000200000001050d00000600000000000002040800030800000200000000000500000000000000 *000000000000000200000000000000000000000000030500000400000200000000000000000200 *000000000000000000000000000000000000000400000500000300000500000000000200020601 *0309030005050a1300000a00000401010605020587a292bbc6c93a57803a587c384e853a518129 *4e7d2a5379304f81305384345d8a364f80344e743a557f395881304d7a2e51883a5a8a2c56892f *51782b517538567925487a244373214d7e264c772c4b6c25457120467324456424405b21406524 *4d761c395914355c14385f183756193c5b1a3f5b1b36591731541f3d5a12315c27406618335b1e *46651e415f1a34532040571f385822416a1f35641d3c56213f5c203f5c2344611e40591b37571a *3b5a183662102e4f183565173b621a314f1b334d1a374d172f511731571d325b1d356112386217 *375a1f3c5a173f681b426825436b18416e23416429446c1f416f224269264b6f214e78214c7c2c *50772249702c4c772a51812a53822d4d7f294f7b2e55702e5282255289325681304b783053882b *517d30598624476f265076284d6d2241662644661c406b223c65153b6a1d4267203e5c203a5426 *3257203c521a2b461d3c5e192e4719313f10242d051c21091320020b1001070801080e00000500 *000300000000020003020001010000000000000100000300000300010300000000000000000000 *000000000000000100000200000200000400000000040000000001020109040606040407050608 *06050509050c0b030508010a060409010000000404000101000102020203020002050000050001 *020200000304010101010006010101010400000001030002030006040008010100010103030500 *00020006040207000000000501000400020a000001030500020001070701040501030105050307 *04000c0d060f08080a0c090c14101a1513171c161111040a0b040707040b030104040000020000 *020500000200000200000000000001000000000000000000000000000000000000000000000000 *000000000000000002000000000100000004000000000000040000070000000006000300010000 *000101000103010001000002010104000001000000000000000000000800010404000000000000 *050400000400000002000000000000000000000000000000000000000000000001000000000000 *000000000000000000000000000000000000000000000000000000000000000000000001000000 *000000000000000000000001000000000000000000000000000000000000000004000002000000 *000000000000000000000001000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000400 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00020000010602000f090f110b061917091612170a101302010a01000500000000000000000000 *000002000009000105010400000603040c08040c040608070a0d06080603020808051004000c07 *010d06030c04050c01040100010014170b0301070000000401040000000000050003030d120d01 *0706000507000000000000000002030b140d0b0c00030600010501040409000500000300000108 *071100030c03030a0c1c2300030902060605010410070a00000200050b04050408111501060c04 *01040a03060b01030a080500030a00000906041708041503070d0d1b1d08010a06000400000600 *00010309100b131d0c1218080c14090d1402040c020000000002000309060107060104140e0b08 *05030a080903000000000102010903000304010302020c01000701000706080c07030400000800 *00050000000000040404070000000000000a080e09040a03000300000300000000000000000003 *010500000101000002000800000000000000000000000001050300000500000300000004000200 *00000000000000000000020000000a080c000000070b0b11050d01000300000000000000000403 *00080a020918171d120b1408030503010505080f07030787a897bcc5ca37577f2a4d762c4c7232 *5276355374314a6d2a487731527731527f314f7833557d39587c305a7c395889405889375a8b35 *558631568c3155762f50722c53722848693448762647792b497425426221406e2243651f466216 *3d5c1b3b67223d6421416a273e5818335c1d365a163763163a671842672542641d36560f315d1a *375e1e3e611a3e651e3c571c3e581a31531c35521a2c521d2f531e4655172e4d152a501735501e *335b153154203a621c30590f2e481035560d2d4a0e3059143d621536541a3a551e36581c315211 *305116375d0c284f112e521a36571638531d41641f3e5d25446422365d1f446d264470294c8022 *456f2852802848722d507037537b264477274f762d4f82254f822757812854742147692d527e2b *4e8933537e264a7526477024457822446e28406620436d26437521405d183e561a426420405d1b *3c5b1a3b5f1d40571935541b34501d374e162745202d400a223808172108101c000a0d04010301 *000000000000000000000000000200000300000200000000000000000000000000000000000000 *00030000000000000001000100000100000000000200000400000000040000080200030906040b *08000e06020c090705050704050205050808000103000001050104010000030202000001000000 *010203000100000102000003010000010000000000000000000001000005060200010000030200 *030000000000000000000005030000020500000400020100030104030102040203020306040507 *00040a08090e070606090007070615120a16120511120a0c0d0d02080d05010800020800000000 *060000000000000000000000000000000000000100000000000000000000000000000000000000 *000000000000000000000000000000000001000000000000000000000000010000000200000000 *010000000000000002000000000000000000000000000000020000000000000000000000000001 *000000000000000100000000000000000000000000000000000000000000000000000000000000 *000000000001000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000010000000100000000000000000000000000000000000000000000000000 *000000000004000000000000000000000000000000000000000000000000000001000000000001 *010102020603040c07091106040506060203000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000200000500000400000900000000000000000200000705040b *0604080706110d071409071105081c070713080a0400000a06030300010806020604050d04070e *00010300000b090d0605060a080401000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000060e0302050000000000000000000400000000000000000000030100030400000a *0700201e1e0a080a17191620312d20241d2f3a3a2329301622231b171c0c071000000000000000 *010403000706080e251d1c1f19150d0c0c1414120f1a23171d211217250807130a0c0e0b0a0b0f *090d081019141b1d080e10070d1c1311151e232e0d08160301000c130805060507040b12131a17 *141c0505100c0a1c01000805000106060c09060b08040a080a080408160608180b071303040802 *020604091104070b03010705040a05040907050d04030d08070f0003080205070905030a0e160d *060c0203090000070a0814080b0d0506070907080d030b06010a03020601000800010b07020f0c *080f00000008070208080f08040e0709120a061202010f00000100000004020008040e0b090d0e *0a0e060a0a02041003031004010704010707080701000100000300000a03010a03011003000804 *000304020300000004000002000201000200000300000503010f04010700020005000002000506 *000400000100000200000300000200000000000000000000000000000000000000000000000300 *000000000200000000000002000000000000000c00000602040600001100040805010603000505 *00050300030200060a071406071304040901000400000207000188a294bcc5c7395f7f2e506a2a *507f3953742d527d29507d2c4a6f3055762a5084334a75395a803855833355892a5084395a872d *4e7529527e2e55763151702d4d7823467d284b732e4a752c54752b4c6f284e6e1d456b1a3e6a24 *446522445f213d651a375822436d1f40680f365510365919375815325111315a19304e13324f1b *36571630501c365b1535551539581b3a5818375c17324e0f325311344c1a334c183b51152a4f15 *3c501a2c520e2e49172d4b172e590d354f1a34501029491825390c21420c2c4f163b5814325813 *305018315b163a6114315216304d18355d1239661e416b183c6c184260254158214063224a7125 *476f223e6c26497429497d274e792b4e722d5f892e4d6d335c833951782b4776324b8229516d29 *47743253812d5777234b692246633149682b3d5f1b3f6a1b3a5f2040651d425e153b5217365117 *2f531e375317394d143c66193b5618354e152c41142d39102a440e22320b1625010c1a00050e00 *030700000300000000000000000000000001000000000000000000000000000000030000000000 *000002000003000000010000010100020800020200000000000000000003000000000200030106 *06050b0c0a0a0704050b020607080e03030a050602030100040201020401040604030000030000 *010005010004000000000000010300000100030000000000010000000000000000000000000000 *000000000000020100010000020001000002000100000101000100000501060900040201070105 *07000503011108030906000b07030404070b0b0b09150a0c110604010000000003000000010000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000100000000 *000000000000000000000000000000000000000000000000000000000001000000000000000000 *000000000000000000000000000000000000000000000000000000000000000002020008090516 *22180f130c171a13130d0a0a090803010000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000000000e11090f *150d181f212c323637494f3a4a602f4a631d3d4d213640121a21080c1003010301000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000001 *050905101709120c0f100a111316070c130408090704040f090f1a1e1514181400000005151525 *23242a2520232c1f29262222302e1c28261f20172921131d110a140c08190f07120a0a251e171c *13141d1e1e17151224251d1c180c1a191112130b01000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000002000000000000000000 *01040302020000000005000000000000000000000000000000000000000000000000000304040f *120b05020400000300000300000101040500000303020000050000000000000005010507020701 *000200000201030b000000000000000000000000000000000000000000000001070c0b06150f00 *0100030004070307171617080b0b020407020d10010703040c1100000304050012040714060a13 *0d0e16121324373d1b2227151d23243b4a202419323b382023291f253018222b0a061001010000 *0201080301070a0f20100d2322210f1d2d151f221521281e292728292b1c11160b0709080c0b04 *030b08121e0d15270d1c250d130f222c29181e2422293d0a112207041309111e0a12161d1a1c0a *0e0c1c1a1a151413161416130b0c11060d0e101415161d171e1a08090808090d0f0b1709010508 *040e02030d01010a03071100070800030604040503050c06080d040e1705050a09080c0206090a *0c080b1a1b130c0c14101210070e0b0c090c1015060a1206050d080b0e08041009050e140f0f08 *0b0f090e1d00000305050c04090b01040809080b06040607040b06040400050506070c0c0c140b *09100b0e130f0b1009030504050a020513090a1103051502000a0100040100020d09070b09100b *0e0d01040b00000c00000601000301000003000004000505050707000104020606040404000200 *000006010702000004010304000000000400000000000000000000000000000000000300000004 *000000000200000000000000000000000205050501000e00000009050800000200000000000400 *00020000050000010000060200030500050104060103070001060303088aa596bdc6c8345c8137 *54712c527a2e577532548436526f324f762e4c792c4f78275277324b7c30557f355a8130597f33 *54832c507c2f537b36587f30496c324c6530526f2a476d284b6f2f4d73274a6c224469152e501e *3d5a213f6b1d40601a39501734561933581f3a53163150172b4d1839501333501630411d395614 *2a410f2d511834571a3b4b173a58243c591d3d4e143a4c1e344f1d3654152f4b1c39541731480f *3051113a5a1540591e365217334912304c103257102544153050112d460c324c162d4f152b4c1d *2a4d1525440e3a530a2b4c0c2b4b1d36560e2d471528471b3153162d4e1f3b511d42611c426417 *37561b41652555752d4772274a6f2a4a77214e75284a75244f782b4c782b487035586f35596b35 *527724476a274b702c5076274d6926507029475826466d1f3f631f3d631e3852243a4c1a325713 *264c2c415718334b263941223f5d193047182d4a17314c1d3042123140112639071b1c02151500 *060400030300000000000000000000000000010000010000020000000002000000000000000000 *000000020000040000040000050000000001000000020100010000020200020200050103030002 *04000f0402101101050c0301080201060701050500050002040001070002000000000003000000 *000000000000020002000000000001000000000000000000000000000000000000000000000000 *010000010000000000000000000000000000000000000000000000000000000000000000000000 *020102040001040107050000030000070000020100010104030100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000003 *00000000000000000000000000000000000000000000000000000000000000000000001a1e2017 *231e374b533947483855621a2c2c293a2722251a151f1401000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000005101620 *272a2742481528261839331c3a441c323319332a0d1d1e061619152a3314303b061a2204191b00 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000001 *01000706070c0e0e0b09070c0c070a0b0a030403020804050300000000070c070804070000000d *0a0809090a0f17132929241f241b081012080f0d14151219140a1e20151f1509131707120f0d35 *2d2e222220171d1e1306021c24260b110d08130b0e18130c14090c0a0400000000000000000000 *0100020405020609030001030401040503000000010200000303000b070102000b0d05090f090b *120b080806080c0d070d08091913000205030707040b0b070c09100a0508000004010013171323 *1f1e171112100b07060c080906020000030706050607080a0c0a0310160c0a0a02020317191c0a *130e040501090e0c0c1618000002010000000000000000000100000000000000010103060b1105 *10160206070810110614190b130e111518100c0b07090909030709090b0000000000000d110d11 *16121a160f1e1113282c2b111b1f1622291220260b11141f231d1a2525293b2e2a2b3b12121a05 *0607000001050b060307090c12100f1e1b1216171a17132a3238252a2b242c30141723100d0c0a *07030305000e1114131d240d1e231d282a1f282f0e1719171f26030808090d09020b0f0a0d0e07 *1213171414171d320b0b141214161716160c0d0e0d0d1017202217251c0d14140d0b170e17150e *150f0c090a0b0b040505030104050704070d0a0d07030e0a060c080a08110e1106000509100c0e *120d0d080d0a0b0d151b250e0d190a07050a12100d110e0a0b10050408060204080408070b0d03 *0706020a0f08060a00000000020000000006040600030b02000002000000000000000008030307 *05050b060306070d070909060a0e070d080105050802010a040608040402010300000403020905 *040802020207070702010408040406060c00000200000200000300000002000105010206020002 *040001000000000300000204000503060300010000000000000000000000000000000000000100 *000000000005010000000002000000000000000000000400000200000100000100000002020003 *03020100000000010000050000040000000100000203010202030100010600088fa699bcc6c835 *536f325472344a762e4d7d2e4f802b4c78325c76315385314e7534577f39527c3a5d802a558935 *5d8534577c3158782f557f375578234c6d284978294f7c1e406d263f67284e6722456e2542611f *3f5e193a681f396420355c1b36581a42671e375d1e3857102b4b132d4d182f5618395419314f12 *2e4918334416374d0e2b520f2d4f1c365916324a172647113152172f49112e4217355010324f1a *315c1c2b48172747112b49182b4414263a10324d0a243a1724331a2d490d2131142d430b254509 *223a0725440c284a0e273c0c25420b25490f2044162f4f0b2543112d461a324c163b531f3f5c21 *3e6524415920466a27416e214672294d75274768264c6d2d50752847692e5773325279324d6d24 *4b782750732e4f72244270253f5d2e496d264b6f2945622441602744661f4a711c41621d405815 *1e401d3a60183f6d213a4e273b5f1e2f481d3c5b203c52153252193b58172f440f2a41060c1e02 *061300030a00040500010000000000000000000000000000000000000000000000000000030000 *010000000000010203000009010000010100000000000000020300000001000001030005080500 *0002020407040704070b0406070004030100000000000002000000000100030200000000000000 *000000000001000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000005000000000100000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000100000000000501000b *00030a00000801030000030000000000000000000000000000000000000000000000000000000b *29412049612743593150642849643042571d3e53264a6224496c1f374100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000004 *09050a160d0a1b110f170e121c15171a1f1e130e1b231b0e14130000000614110d13121016130f *1d1600010000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000090c0e131d1d060808050405070a080000000000000000000000000000000301000c *0c070c050704060a10010011120d0c1a160000000000000c12041d1c16241e1d1d1a10171a1324 *1e1c26160e0104050906010507051c1f1713191a120b0c1d191312100f080e09060c0c00000000 *060a0e090d1e1e1c161e210f0c1406060704080a0103020708060a09050a0b0b06000202000008 *070510161a091c1a09100a0c17160b0b0c01000204070410090b0a0807010004080c0e1119181c *211e12181e10171b1210141512110a1c2415131516180e121d1b171c1d161319130c100b0a1519 *15190d0e130b161408110c0c121600000010090902000100000000000002040c0000040c12170a *13130911140906090306090507131116150b0a0c11101316181b09100d171a1b0a08070703051a *0e0f1a15140d10141b1a17202b23171d1f11161e16132121232c170f1d111a2118212725313a17 *1f1e0202020301010c07060d0e170f050a04060d090809161a142837372125241a202516171e0d *080c0e0a0e0c0c10111c21120d140807090909060b0b090d05061d141e1c1c1c0a0a1200020818 *1c1f01080c08161a1d1f27110a0c1915170a0c1608070c08090a08070a130b080c0c0a0904060a *090d0a010c05020a00040b0004060004000403080d090e150b0d090c140c0f0e0c151509090e09 *080c080d080c100c0e0c090d0f1a0b030d08060c0c0b0e070508090b0808080306000104000d0a *040b04010607031006070d00000100010003040300000308010601000602000304030400020603 *070a060a0d0801030502050b06080504080b060c04000b04000806090a091613040a0801000904 *000201000401000400000101040802040801040a00000300000201000003000501000501020b0b *0d1605010104040203000206000004000102040500000300000500000007010000000000000000 *000000000003000400000000000300000000000000000200000001000000000100000400000500 *000400000000000000000000000100000200000300000605020a0300050000040100058fab9cbd *c6c8294f6f264764284c7231455d2d365d314e7c2e557f305984315982375e842d507734577837 *51812e57842e5576284865294e75294f72294a722549772d466c2137521d2e4f213f5f223e561f *344f1d3a551d3a511f3b4a1c3341172c4518324f1b293a0d243e112644142b4517324b17293a11 *2b3b101f3813253c12294414344c172d57173b582039491d3f4b2137431d2e4a1c27481c2d4012 *1f39152b4617334b1b2b451c2b40152e441834491128390c2640193b55172a440b334d10293c0b *222a0e253a0c1b38092041102e480d294b102e4d0f2844112c50102951162f5119335b13335513 *35581b35611b42651b436d204262264b6f27486f24496d264a64234c692248642d5177334f6e2b *57762a4963294c6a265471274e722c4d6b2c4867283a5927475c264562243f57234067253a4e18 *3b5c1431530e2a5019384f213b4f1a374c1d37481d3c501429410d283f1a2936112d4904151e04 *030400000000000000000000000000000000000000000000000000000000000000000000010000 *000000010000000000000000010000000000000002000000010000000000000000000100050000 *030000000000000001000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000001 *0000150d0005030000000000000002000000000000000000000000000000000000000001000000 *000000000000000000000000000001000003000000000000000000000000000000000100000000 *000000000000000000000000000000000100000000000100000000000000000000000000000005 *000002000003000104050401000000000000000000020000000000000000000100000000000000 *0000000000000000000000000000202d301d060825312e0606030000000000000000000a040103 *00000000000000000000000000000000000000000000000000000000000000000203020303050f *1c1c1e26252b3127221e10130d050d120e00000000000000000000000000000000000000000000 *0000000000050a0410140c161f1d2228241f2b2e28352e2940432a3a4019313d00000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000070d0e1f393f1f455619454f193e571e48651643590b385201132500000400000300000400 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000c0a040d1414080c0e000000040804030601000000000000000000090b0800 *000304070b0000000201000b0a030c0c04120b05150c0503050506000029271721211330270e2e *28142a2622201a120f00042018101b18121a201c161e1e1a1e15251f120e100a15150f131c1805 *02030104010305080708070f110b0303010e04030000000000000003020c120c0b111000000000 *000001060903070214171412171e10141204090e00030009140d0b160f1b17110a0b0d0f160e1f *2d250f222115161a161f250c14170b16131414182027211c202717201a20252e1f28250e180e12 *13111c15101b190e17161414160e080a1006060516181b08040102000008030116130b070a0d11 *13180f18191515180d100d1c20240b0c07111b1816130b1b110b09100d1a1e261e26221f1c2404 *0308070600040300161f1e15121c161717171b1e14171e1f292e04070506120e171d171c24222e *3637232a28110f120501060d171111191211130d1b2022171214232c311f2d36191e1e21292d1e *1f1d000000090906141d0f0f0f0f1d1f200f10100c15140b090a0a0c071c1c181d241e1c151204 *0003100c150506060500080c0c0b0d0e0d040707050a030f090612020f0a080b080b0908060908 *04050f080301030307050506020104010109050204000a09040c1213140c0b090b0d07090b0909 *0a140906090a090e0b07090f0f140c0a060c13100f150c080e0c03030209090909030301010607 *0b0c141216030803060c0804080901000603000204000307010306010301030004020000000003 *000002000005030106000107000003030304050004080000040802000105000004000605040700 *01090402030505040a0a0900000001000001000106000303000100000003050007020100010102 *000003000005000003000007030700000301000003000000000000000000000000000000000000 *000000000000000000000004000005000000000000000000000000000001000200020200000000 *010000000000000003000300000300000600000302000006020004010004000007000106000395 *ab9ebdc7c720436d274c762d50702543692a4d6927496a2a4e773750742f4c7534527e3b52841e *4480255689305d7a294f7d2f4a743447732c435f284a6f2b4d601c436927446927415b1e415724 *3e4e24335a1b3b600f2f550d233d0a284c132e570d2648142a4a18284e11214913274809284b0e *31631c3050102c441d38491a2a411629471c304d0b223b071c380e2d4c0f26421a32421127421d *3242121d45172a3f0c284a0e294d0822470f29380d253e0e273f0a1e4011263f0c214205204507 *132105142b0c284209243a071d351221451221440e2b5709214507254f1435591129430d344a08 *1d36071f3e1e345a1f3c5e173a62163655233a621d3c5c243e591f3854233f6924436c1d446625 *4c73294d711f455f1f4a69264a691f476e23435a213f5f1a3f6a1d3c60173e680e3a5c183d601f *3054182e541a2a46152c470c25430f2c400e2b540e274219324e102c4b13274313294b010f2600 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000002000106000003000001000001000004000107020303000300000000000000000000000000 *000005070401000001000000000000000000000300000100000000000000000002000008010409 *090a0d1615110c0a140d0706040000030111171401020300000000000100000000000500000000 *00000100050c0c0709000005000306040500000000000000000008000000020500020300000003 *00000000000000050000020000000300000c070307020205080800000000000100000300000100 *000100000103040600000100000000000200000200000000000303010300000000000000000000 *000000000000000000000003000000000208121011090a05111600000600000403000404000108 *0701050a0800000000000000000000000000000000000000000000000000000000000000000000 *0001000000070e110e12121b1e1f1f221900000000000000000003000203000100000000000000 *00000000000000000009060c100a051317040c0e070b0e08130e040b0b0c170f070a0a00000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000201000c0a070c0b09110a07130b0b09090b02010803000402000100000000000000 *000002000002000000000000000000000500000300000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000a0f0d1616110f0d1400000004000600000000000400000000000013 *1916130b0509000415100c08080c1c14131210140b0d0c1d1e181e13081d0f06271d181a10131f *1d1d2316142718171a16090100001f1d15181612010001000000000003151e220c080c10100e0c *0e0900000101000607010403000700000400000400000000000000000003070a12191508070e00 *000005000605060a01010006100e0d16171d2021232a2f1e1f21171d1e18222811172002041306 *0404203038130a0e1913171c1f231b1e23080a1207100c09110e1010131417171d1d2305090e0f *101417182011152008080e09100c1117150f141712070d130d0c0d060b0b060f0c1f210b181704 *070b16181708070c0c0408110503111c260f101a0d0b15040b12100b070f13171723210f0a1c0c *1118050412080d0e090811181c171d20210c171713141717070c10091404000b09030811101821 *222016211d100f0b06030c060001040105060419090c10131223090b0e080c140f11130e0f1718 *13200e131f09000409040b14100b060f13090b0b111310140a0f110e14110a0f141515172e3e0d *1a210c070905000c00040600000305020b0805040f0c140205090a0803010507090b0b08000412 *0b0905000203000609091300000506020401010608040409050a0b070d080e0e040a15080c190a *0b110907080a07090503091007020e08080b0f1907090a120c100401090a08090c11120b0d0b05 *040c05020b01031008030e00001200000a00000503020606010600000300020803081800000400 *00000000000f03000a04070300030100050702060c060804050900000303000709000301000606 *030705030800000603000401000004000100000202000702000203000600000600000400000000 *000005000305000605000502000403000600000401000000000000000000000000000000000600 *000000000000000000000001000000000100000100000200000000000000000001000500000100 *00010000010000040000040100010c010202010500000400000607000608000703010805030706 *040c90aa9dbec5c72c48582643572c4058273f5c243a5c2f3b5a27426b2e5277334f7533567734 *54792f5681314f7c3053752d4c702446671f3e681f3c611a374c1f2f481a3a52213f5b1933501c *2a4d142c3c0e213b0f27451326380e192b0d1a390a152306142d06213c071c380821430f24370d *122012181d0c162608172d15273f101e2f0914210515220d243c061c2a10212e062140051c330f *1e2d14222f121e2c0c252d111c211a2036171e370d192c0f2035031b38070f2e0814270815340b *1e2c112440081e3f011a37051a3805172f06163209183006193307193d091d45071b3c0c194108 *274c08204013224713294d112a490c25481628451a2d57122b561434571d37540f33571d385817 *41591532571f325f18395d143a59172d4a1b385a1838530a3050192a4c0e29490e26480d2a430d *21400f1f2305162602182400102800091e03070e00071600030300000300030801030600000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000040000050b08000000030203050b0605 *0c0d1c202422242a181a140200001c17130a07080c05050b05090302040000000000000d01000e *030200000001000000000100000000000300000000000000000002000000000000000000000003 *01031716110a0702121108130d0a06080102000003020008070700020100000000000000000000 *0000000000000000070b0700010300010300000000000000000000000000000000000000000000 *000100000100000000000008010008000007020204040200000000000000000000000000000001 *000000000000000000000000000001000000000001010004080500000000000000000000000000 *000000000000000000000007040004010000000000000007000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000003 *00011013120401020d0707110c081e0b09141b0c0000000000000202000708050402000604000b *0606010000000000000000263f5d253c4d2a415d2447622945542240522b475d2a4359203e5400 *000000000000000000000000000000000000000000000000000000000000000100000000000002 *000000000001000025313c3a587e425f8342597b415e82485e77435f8046607b40617f040c1829 *37463f5d75405c7940627e101b2100000000000000000100000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000b0c0f16110f0a080b090c0b0c0a08110404140c0913130e18 *1c151a1a1814161c130d071918161d1d121a13151708051f1b0d221c1b2c2a18231e1325221725 *1e172a151a17130b1c100e261f1e0603050000000000000a0300060200000000030001150d0b15 *110d0b0d0d0000000000000404010201010000000100000609080a0a100b03051006090f090419 *10081105030100000304061f160d110703161f211e1e1c2c343a1a21242429251c1e24191e2103 *020a07070d11181f161617121615171c1a1017240c070e11090916141a10090e0d100e0c162200 *000008080616171414101a0b070404010307070b131811080e0d141c191412100c0c0d0a090a04 *0605080809111b230303070302010b160d0c0d0d090b061918140e0b0d0c090316120a1a17151c *1c22181e1c18171d1307061e1e182d221e1b1d1c0b090e0a0609141d210b130e05070a0f0d1213 *0c0c1719220a0b0e0208080000020301020704040701040804040c0f170500010609090c0a0519 *1a13140f0c0804070e070d110a0718140903090b00000002020307050508060313130c0c080506 *00000c0008000000000000000000010002090a0a0801060800000c090c0b120c05040806070d05 *0a0706040a0403050604060a080a0e03030c121007050802030505080b080c130909120c09130a *0a08130c0d14070e0f070704040500000403050b070307150c0c140d0c07040906070904050203 *080b00000900000401020600000005000308070403010000000301000300000301000601000602 *000000000005000002000004010907080b02000502000303000006000007000007000100000001 *000102010303000502010800000002000004000002000304000000000000000005000201000600 *000000000001000101000004030500000301010300000600000000000001000000000000000000 *000000000300000000000300000000000004000002000000000000000000000000010b01000600 *00000100000300000200000101030000030100060000030100030200010600000a000009000001 *00010400058fa89cbec5c9263a571f37591d38581d314f1c385824355f1f416c123a681d456d1c *4673234772234c7a20497821406c234270213c6d1830631a3f5e152f530e273b0c284612283e0b *1e470c1c480b193b061c3e03173e051c32062041091c3d05162906173703194504122b020a2603 *1338041c3f03122f031332081a2e0b1d3f081d35041d3403203f001534041a35001d3802162b08 *232f07142c060c200821320a1e3b0d2132051c38051a320a1e2b08152c050c2403162c00142f00 *162b000824030e21000b17000f1c000c22000a2000062802123100143b000e33010d2f02092301 *1630001536000f2b000f3300153200193b041e43021f42011b3604213b062247041d42061e4003 *1f4a042042021936031b2b0412340d1d2c062035082240000c1d030e1e000a18000b1d000a1500 *0d11040e1a00030a00000900021000071500000700050f02010800050801030403050a00081100 *010600000000000000000100000000000000000307020204060303030501030700000300000000 *00000000000000010604010000000002070000010003060000060200040000010002010b060706 *0b0b030b0c0c0d10141d2601000304000316161315140d0b111013151500040600010f00030b01 *040600000000000105070400000000000000010700020800000000000100010400000500010600 *010200010600000806060c0a130d0a0f0a00010000060200000000000100000000000000000000 *000000000000000000000000000000000000000100000500000100000000000000000000000000 *00040000000000000000000000040f0c0a08121102060500000000000000000000000100000400 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000100000000000000000000000000000000000000000500000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000010004010205090c0c0e1816070a0a00010100000000000000000400000202000303 *00030004050000010000000310193b5f7b3d5e7b2b4e6f25537a3157722c5b73275178355c7726 *4d6500000300000000000000000000000000000000000000000100000000000000000000000000 *00000000020000040000031627323e5b7b39577a3a5d7442637a3e617f4663773d627a3a5a7b00 *020c19273741617946668a465d7a0b192a00000000000200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000b09100e1113050e100508100c080f0c14200b0d1303 *0d0311090510080a1213121a1314181e1e11181a181f1f0a0e151c160c1e17132a21201d1e1b20 *211816121318140f21262520201a261f11150a0a11110f12060800000000000000000000000018 *1f1d0b0d070a010100000000000000000000000000000700010700020600000000000000000003 *050509090c101015140b1516171f1a1f17171416121b1f162225232e2f12191e0d151818151710 *0e0e06000512110d11161a13151e0d1012121818161723181f2310110f0c0d090b0c0e09070b09 *161d080b0d080f1613232506101a0105040f0e110a0d0f0b0d0e0e182003060c02030a0a0c1618 *151c09181e04060c030309000000040d0a0d12100406090c1a28020a0d080d0e13141013080a19 *20220c17201115181d1f2e0a15181513151d22240915110c0b0b0404080c15150d262f02060a00 *041204040c0a060909080d0700020000070000020a1416060a1701050b0004070601030403030d *0d0a1c1a1e091317070709050d160c0b0b0c07080506060f101208040b00000300010509030a00 *000803010700010500000000000000000001000306010a030309030a1105080a0508090d0b0b06 *0b0d05050800030a0001090302090104100d0b0e10140b090e0f030d0d00020707010a0807100d *0d131b1a1f070f120b0d0e030b0d03020602000300000100000602000a00000500000000000004 *070700050802000700000400000400000901080c00040800000202010501000300000200000a00 *000500000300000000000000000003000000000100000000000500000600000600000500000900 *000000000400010403020c00000400000700000900000000000200000001000401000300010700 *020900000100000700000500000100000000000000000000000000000500000000000000000000 *000000000400000300000000000000000000000000000100000000000000000000000000000900 *000900000400000100000200000301000705000b06000a00000700000000000300000500000602 *010606020504020b8eaaa3bbc7ca2a344f2030551e31501d2e53203a531a3a6a1827461d29511f *375e234073233369204072233c73163266224269183960112c531b345716244d0e224d16233e10 *23420b1e3d091c3b0a1b3104122604132805153a0d0e300a1236040c2b0b153a06133204102903 *1629041935060e2a0a0e2f040b25000c2a040a21000b1d010a1a000620000118060a210c0b1e0a *091d040b1c000d2204131e050f250a121b060f1c070b1711132509122507121f08152f010b1d00 *0a2505071100061201041702041100061d01081e01071800000f00071900051200020f01061900 *021100041e00031700041900041900001602031d01061b000720000d2900072b00031a00081902 *0818010c15021118000a1c081324040d1a0f0f1e0b12170a141c050d12030a0b060a12070f1104 *0d1a02081e090b1d0a12120c111a0a2020081c250811270b1e290917250f252e17252c11232c1a *2c3313262c00000000000000000000000000000002000404000002000003000004000302000001 *00060202030101040405090c0a0b0c08080303010300000502030a050818070d180d0b1e0c0d12 *110b080d080100031c0d09221e1b1c11131a212b222a2a2c2a25312c29151b1201000000000005 *000b06000408010401000306030400000000000000000002000000000000000000000000000000 *000003000000000000000004000107000108000202000100000000000002000000000001000000 *000000000000000000000002000300000000000000000000000004000000000000000000000000 *00000000000000000000000000000200021307080c010605000400000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000002000300030900000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000010002130c0c2225280703030d04040000000000000000000200020701000b *01010300000000000000000000001418222d48521d3d40213c4a2b4a522c425a2e435d2f3e4f27 *455f27415200000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000030000111f2f3153683c62793c5b6f3f5e7e416079405e74405d7a2e *4b6b0000050b202c3a5874395e7f385a7f12182400000002000000000100000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000401060402060000010c0d111214151e110f22 *090a241e151b140e0c0a0c12130e130a091312142112181f171323120e251d211b181d352a1f44 *4230353424241e1820151523180d2018162f272b1212111a1a151a110e0201020a010410010205 *0000190608120d0f06060400000000000000000001000300000502000304000201010a04000100 *000000000005020008030c1816171e1e1f19131c1a1f1f131317151f341e212708080e0b070611 *11160404090a010509020a0804110b07071115100c0b080a030a090a0b141a2114080d110b1109 *080f0a080d100f110a0b0d0a080a07010a0c00060e0c150100010302010d100609050706000215 *0c0c0c0b140e0d1504081008010b0300030806080914170806080f0d160602040b050505030b11 *080b0e0c0a1a141415171e1e161f100c1216191d04040c0b08180a091009010605020704000007 *00000802040400060b1313060a150000000300000800000a02010b0203060206110a0816020909 *00040b080a080a0b0907040a01021412140903060a0004190b08060307050c0f0100010a070c05 *050706010306040e0000010000030000000000000d0d0d03000305000301000002000409020009 *01090304060300000405080c080b0904041306080800050a00080a000803030803050803050d06 *040e0500040b000409030908030804050c04000200000000000000000004000503000607000001 *000000000000010300000000000300000600000102000009030800000300000001020500010401 *000400000000000001000002000000000001050300000300000000000100000107000001000106 *000601000300000100000100000200000000000000000000000002000300000000000000000001 *000002000001000200000000000100000000000002010300000100000000000001000003000000 *000000000000000000000000000000000000000000000000000100000300000000000400000000 *00000000050400000100000100000000000000060801060201050100010000000100000800010a *00040a010a04000703000b90ada3bcc4c7253d5a1a30471c314b173a4a112f4c142a511030591a *345b1e335b163e5e20476e1b436c1d3e5f20425a1c405f18386811335d0b264d09213e0723390d *273e031f3504142304142a000a1c02081500091d000e1d000b1000080c00091a000a1a00011300 *041100051d00081f000914000c1700040800000700030c00010b00000800010b00040b00030700 *0b0a000b0a00030b020810000815020610030b1a000b10000b0600090c000d0c00020c04081403 *0809020808000c1b00080f00080a00050400030700000500000500000801030c00041000050600 *0a0f00060700030501080900060900020900050e000b10000917001112001314000714000f1201 *131e021821081623000e1e03141c031f29071d2c02172103161d071b1d07131a0b1c2902131e00 *161c041d24001f2800151d061e2f0f202f0a1e2d00152a00122101162b06242d00152303142309 *161e0116270c1b2500000100000000000200000000000300010600000206030600010000010200 *0705010a0a000708000809000608020509050804080a09060a0b061c1d0a17120c161e181d2017 *151d0b13150507080508091c1e180f181c08090a0c0b101620202a27242f3a321c14150b0d0901 *0306151a210209080a161102000101010004000000000000000000000000000000000000000000 *00000000010000000000010e1215030e0e00040500000300000000000000000000000100000000 *000000000000000000000000000000020d05000000000100000000000000000000000000000000 *00000000000000000000000000000000020911090d0f0807060404020100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000000000000 *00000000000000000209090203050100040d11110f1513161c1600000000000000000000010600 *040b0400050000020000000000000101010010171e3c4f16364b23424e2344501e3b5b21424d1d *3f56173e4719314200000000000000000000000000000000000000000100000000000000000000 *00000000000000000000000000000000000407071614171e1e1e111113181319241f1e33201221 *1b11070c0b0000000000010c0608170e0814131205030300000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000030512020b120500060b0b151c1d140c *130f17170c1b2210142116101c1d141c201e18172625221e23261e20141c2016181e182a2c1d43 *372452473b4e4b402f221e1a1d171a1c121f2612211f14161a1c15171a2318190a0b0f00000007 *0c08010201000001040b0906090b05070a03030807050700050904050501110905080204090b08 *090e070c1510121311101504070a131b1c0a181802060a050c1313110d141215181a20150b0f17 *181d0811090b090502030207080a03020a0b0004081013050b0a00050502130a101b1c060c0c04 *0b0c08050a0f090c12111c020610000504000a0700080c0204070000000400030303080b091600 *030e0305050f0a07060e0905030106080705000409060a04070c01040202070702060606090904 *08120001070002060000090000050b151e080b0c121b1607090b00071503090c05040a09060800 *0406000508040d1200020600040504050b0000000000000302020102050205060107070001060c *1213120e0a0606050605050406050b120d0006080502040d070a0a0e0c0304061405060a060812 *150a0104020b120c00010100000001000400000000000205050300020500060b00000303000300 *0505010305010004020506040205030106000003000508070a0b06151009141008091101010402 *020806071400000202010a070d14040e1100030501000600020900010500000400020b00020100 *000000000000000201000200000000000300000100000000000000000000000001010304020a00 *000000000500000100000000000000000000000000000000000100000100020c08060900000000 *000100000000000100000000000000000300000000000000000000000103030100000000000100 *000300000200000100000900000400020200000000000000000000000000000000000300000600 *000000000000000200000000000000000000000000000100000000000000000000000000000000 *000000000300000500000500000000000000000000000000000200000800000200000200000600 *020400030400010100000600000490aca0bcc5c9232f471a2b48223052172e511421482035511d *37541b2a4d17375c21374e1e2c502540702339621625440b1e3507172703153304142901030f05 *071a06030f00041100000900000700000400000400000000000600000600000600000700000000 *000000000000000000000000000100000200000300000300000000000000000000000100000200 *000300000600000706000700000500030300030300040800060801040b03020b0606140b080e02 *0713010c0d04141a02131a03121f030b2406152a060c1d07151d021627010e1f020f2102182b02 *0f22030c24081733040a2304071d000612000b1a00041100061000000900000800000c00000d00 *000400000300000300000600000000000300000600000600000500000200000200000100000200 *000200000400000500000a00000900000000000000000200000100000100000200000501000900 *000300000300000600010400000000000000000000000202000504000900000201020b00010203 *020302030c04040904000100000102020901030a0001070d14180a19180d151e171a2118111d12 *0c181412170c12130506070a0c1216171e140e1b140d0f1d1a1c21272b29332e271f200e101507 *0b100502080b080a06000500000603000500000600000300000100000400000101000300000300 *000000000100000200000001020305040300000000000000000000000000000000000000000000 *0000000003000000000003000001000000000006030007000000060a0a00000000000000000000 *000000000000000000000400000000000000000000000501040b00000800000100000000000000 *000000000000000000000300000000000000000000000000000000000000000000000000000000 *000000000200000400000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000b000004000004060b0a0201000400010a070b01040500000000000002000009 *00010d080500000000000000000000000200030c04000c180d091c1c0b190d09170c0523170d2a *220f18100f120b0e10070800000000000000000000000000000300000800000000000107050402 *00000300010000000000050000030000080000070000051b170f1811071908051808043430183c *331828231307000400000000000000010100000113140b01000200000005000500000000000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000106080d130c0b0607070d131216 *151705050a171e281c12171f1616280c0817080e1718221a1c2a221f1d12131d1e1e251b121c28 *1a134f3d3033241d2b1f1b2d2b242e211d2728251a101524080c1d171b1a1b1a14131400000109 *0906231818010003000000170c1601000000000100030900010706090f0a060e06020b06000408 *010804000401010600070d05090a181511110c1e1411180b060f0900060d111700000014121f1a *1316050b0b0200050407140a000e10031704020d090b171310070c070803070b0709120b010c0b *07190a0b14090715191e2013181f0b080c07050b05070e0b010a0b031407000605050a04020500 *050901050600000807041111141e05000e01000500020d00020b03050c05060600020803041306 *0d1a14060f0000040000000000000001010500050c000a1008100a00040500000b0c0b07080e0b *192400071300000500000b0b000f02001405041006030a0000000103060103090000050f080e0b *05091108121c1f270201060500050601040a00050500090601060f030610070a0903090a091404 *0308080d0d05020c01000800000200000100000100000300000605071005040800000100000000 *00000000010800050802090000030000040302050000010000020600090502100b030f08040b08 *060a0a0c1303040a02000803000403010307010a03000200000700000600000100000503000c01 *000901000a01000004000100000200000000000000000200000100000300000400000100000100 *000100000200000500000000000000000000000000000000000100000100000100000301000803 *000503000300000500000600000300000000000300000000000000000000000200000300000500 *000400000100000100000000000000000000000000000000000000000000000000000000000000 *000000000501000300000200000300000000000000000000000000000000000200000400000400 *000100000000000000000000000000000100000100000400000700000500000100000300000400 *000600000602000b00000d00000d02000797aaa2bcc4c90b1e31071a2c0b1d1f082230081c2b0d *22400f223f0c29400f28401229470e223c061e36071a2e021823000c15040f1e00000c00000500 *000400000000000000000000000000000200000200000100000200000600000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000100000000000000000000000000000000000201000000000100010000030000000000 *0403000203020a06040803090a0907120f020d0e030b0a00080c000a0c030b0d00090e04070c01 *090c00070b04080808040804020000000002010000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000001202900000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000010300000200000400 *0000000000020003050405050a07000a060004020308080104080809060b1315171e1a191a1d0c *0c0d0a12100a151215190e0a07090a09120c090c0a0a0e0f0e0b121d16262a2f242d302536261a *1c1b0e040412171700050500020500030402040101030100010000000000000000000301000100 *020000000000000000000000000000000001000000000000000000000000000000000000000000 *0000000000050003010002000000030602000400000000040a000002000000000300010000001c *110c0c0b0100000000000000000000000300000000000300000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000001000200000c080705070a0c0a180d161800000000000000000000 *02000405020405060801000000010000000000000000000000000002000000000a12091108060c *0d0803090303020014110000130400000000000001000502080e00040500000000000000000000 *0000090b040b120d00010404020600060700050000030000010002140a000205070e0a1621100a *140a00010000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000105070811110a0b0b15 *13150808070000000b0d070d1c140f13051e1e101a150c151c141a16120c0d070001000a100e1b *1c1315171c2c29294349382e39263b3325403c282b2d271d1e12242a1e23221c1d1f21070b0e00 *0000040a07111a14000000000000121412060e0d0000000000000000010607051a1d10080a0c09 *0e0b090b0b00020700000009050315110b1115170f161a1b1c1a04070b11190f0b1b180b11090d *111206080a0702030000000000040002010c15100a170e090a0f030608040c0a08090c02040903 *0808090a091222250d171a060c11090d0d04060b020509010605000207111104030b0702090701 *020600000302000504060b04020601050b01070800050503060809070705060d0003090a090903 *080a080c0b14140a00020000000000000000010207070511131c0a12110c120d0004030a0c0e04 *0305030307040003000003000000060404090d07061210070f0601000201020606020603060907 *0a08000302051107040c08010503000000070607030d0b060206000501080a08100f0a090a0906 *02010e120f05081305020a0b060c08060800050300000000000000000000000002000417050f00 *000000000000070a03030000050006010601010500000c00000401000001030600000000060600 *0b0800020700020700000a00030d000304000905020c0b01080400000000000200000200000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000100071500000200000000000000000000000000000000000000000000000000000000 *000100000000000000000000000000040500000000000000000000000000000100000000000000 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100000000000000000000 *000000000000000000000000000000000100000000000000000000000100000400000300000600 *000400000300000300000200000400000101020492aea6bcc6c90f1c220b1019040b1f080b1e01 *091a01071d03061e05091c070c22010c2202051400011100000800000300000200000000000000 *000000000000000000000200000000000100000300000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000602031a09031509011f0e03240f042018071f150520 *0e0c17080b21170e3121122c1e072f1f0c150d05291a0829140a1d0c0609050711080a180e0923 *1a09200f06170f02291e0e23130a2923140b00041e1713171105060302170c091c130a1a140a21 *150b1a090502000500000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000300000500000300 *000000000001000003030908091107051305010a04060b0002090004071413081916141c24201d *242714191f0a09100e0d190a100e000a0e070c120d0b0e1d24231e1f2026201e2c302624362d2f *29231f1f1f170c0d0a03080c050608050d05010603000800000300000100000300000001000005 *000103000000000100000300000600000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000001020c000008010003120b0a1408011a040024 *150e3f3f3a28242215060f11110f07050300000100000000000000000000000000000000000400 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000400000000000000000000000000000000000000000000 *000b0000000b040501000300000000000000000100000000000000000100000000000000000000 *000000000000000001000008000500000401000302000207060a03080b05030200000000000300 *00050200070100000500030502000000000100000000000000000000020000000303002127181d *240e172214251f13202517121c1500010400000100000100000300000100010600000003000300 *000100000002000304060900000100000000000000000007000100000000000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000400000000000000000000000000 *00000000000000000000010000000000000100000000000000000000010000000b08130b050d06 *030a0a090a1008080000000600021f1c1d130d0b1614151d0a0e110c0c17140a0b090300000007 *00011a12151e0e161d121734251d3d271e443e2a3f2e231c04081a040519121320171721121616 *0c0d00000007050600000200000011090d1e1a1d04030b0000000000000105060508100f0d0d0a *0a110e07110c091202040f16151d1b24211e1415080b1512120a1d16130d0407180c0b12131015 *1215080b160b08090707090100000500000400040100080f0a1500000600020400000006020503 *0509100b11120b16120a0f13101b0a15220e0d0a05050704000006000305000708000900000906 *000a010005050002000003010000080004010002000009000611080b16071014020706030d1004 *07060704070c0409100c1d06060a08030300000003000408030910090d0d040613090b05061109 *040d09040800040307050900000000000200000801000703010c02030b01000000000002010603 *00030702020300070f010702010902030b07010309020200000003010304010504000404000500 *000503050604040a0901030000030b050a05030801000000000100000803010800000500000003 *000000000000000105000005080a00000600000000000100010700000001000000000008020a03 *041202010b00000100000000000005020502000407000a04020a04000800000500010700000100 *000000000000000001000400000400000100000000000000000000000000000200000000000000 *000400000300000000000100000001000000000000000000000000000000000000000000000000 *000000000100000000000304000300000800000400000000000000000000000000000002000101 *000000000400000200000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000100000000000000000000000000000001000002 *000000000100000000000000000000000000000000000000000100000000000100000300000501 *000400000300010802010703000802000700000503000a90aca5bcc6ca00000800000600000300 *000000000000000000000000000000000000000200000200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000b0900111403090c0a140f082b3210201f0e07 *0701070803090f02150c05261c0c100d050d0f060e150c160d070e1407080901131001121b090c *10060e1303150f020f1002090904061006181a0a04060313150a00010000000000000400000200 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000060300000000000000000000000000000000000000000000000000000000000000000000 *000200000000000200000200040602070904070705090b0309050b0906080d0b0d0a0a14151714 *1d2212211d0c1d1d0a1312130d0c0d1115050b0e06111011161813292b1e1e201d1c13181c1322 *262124201b2121273c3e3b1f1f1c161310091209090e080a120a0d08060b070702060403030400 *050301040700000000000000010200000003000405030100000000030101010000000000000000 *00000000000000000000000000000000010000030000000504011415101c110f272c252c3d2e2a *1e1a2b29262d3029363b2d392b201d1f16150d0809100c00000000000000000000000200000000 *000000000000000000000000000000000000000000000001040300030000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000005000100020c00000300000000000200000000000000000000000000000000000000 *0000000000000000000000000102040a01000000000000040002161612130b0900000000000000 *040107050108050003000003030308050402010800000000000100000000000000000007140819 *2014181c1612140b1322170b16090c120301010000000000000000000000000000000000000600 *000100000304020003000200000000000000000002050902080903030101000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000040106000000040400070605120c0a0b070200030300000000000300 *00010000000000000200000501000000000000000305060000020000000000000000000b09060a *0c0a040501040b0a1413140b0808100f0b120f0b16170d12100813140d0b0a071014141511140a *070a161216161d161b221d322016463623403f3144423a5446344840273727163f412e333c3f21 *18171315150207080000000000000000010c090b131b160a0c090000000000000002020203090a *0605091016060c0906090800000010110f1116190b161a010909060d1213130f0c0b07090f0a00 *0000120c080b1b1810171604050b00030900030402020a0000000a020302000202040203050404 *010403010e0608080a0b0d090507080d0c0712130c110b0a100f01040900020401040301040408 *0e0c06080a060907000004000001000000050006020106040707040e08080c0e02091303040e0c *060e07050509120e070c0b0b12130b100a140c090c1213070a121516150f0c130c0d0a120d0905 *161609070901020a00000700000102020400000103090704030104050307040600000600000001 *00000b0407030002010200050a0400070705040802010500000001000000000000000000000005 *0a0d0408080504090401000200040a0b070402040b130d02000300030901010401020c00000000 *000000000300000000000100000000070100000000000000010300010500000000000207040304 *030100010000010400000400000000000000000500000000000000040100050005020401060c00 *000400000400000200040903020803050300000000000400000000000000000000000000000000 *000000000000000000000500000000000000000100000000000000000000000003030400000000 *000000000300000600000100000900000100010400000002000000000000000000000000000000 *000500000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000100000000000000000000000000000100000000000000000200000200000000040400000100 *000100000600000400000800000402050802080904050807020597ada4bcc5c900000100000100 *000100000200000100000200080c00000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000200000000000000000000000000 *000000000000000000000000000100000000000000000000000000000000000000000000000000 *000000000000000000000000000100000300000000000100000000000000000000000103130d00 *0004010907000001000407000000000000010002000001000001030005000001060f080e0b0508 *0f0b06130800060400040500000300000000000100040700000600000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000e1d1800000000000000000000000000000000000000000000000000000000000000000000 *000000040600000000000000000300000000000000000000000000000000000000000000000000 *000400000401000401010503020900000700030a0001060702060b0a0d05060a09080e0a10130a *0d140f1218171a201d251e12171e070c150d121a0c1213010a0b070d16131e2622202615131b14 *100f1d1a15272a281f242727211e1c1e1e191213150b070b0a0b171a2112121409091004040800 *000104010502010300000000010301020300000301000700000600000202020401010403081000 *010500040d000007000005070e0d020106040001030404000001030001151a1e25291e2e31343a *3e342e281d303a3a382f30362f33323a39454348283b3f40413d17121007040600000000000000 *000000000000000000000200000000000000000000000000000000000000020300070700000400 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000400000000000000000600000000000004000800000000000100000000000500040600000100 *000000000500000500010701000000000000000200010500000000000000000000000400000000 *00000000000000040604080709080302000502070d080904000000000000000000000008040a08 *0c091c14071112080c0700080000090b0601000000000000000303050908030500000003000800 *000500000400000300010500000600000000000000000005030400000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000003010500000100000000000000000500000000000000000000000003000103000103010300 *00010000040000000c02050d080e070205000000010202020c0f06060c0904000400000602030d *02040200020200010000000002050a050802060a0100050600060a020500000000000604020800 *01090709140103050d080d1e0d0a19110d100c131017161d170d120c0b080c0c060a0b0c030713 *0d121e282e16120d16160f1512152a2d284240323b29164d49494e4a3d523d2943363a3f2f2447 *2d1f2f28281614100d0a0b160d10080001000000000000040a0b04050c0000000000000606070d *08100e081206050d0000070000040000020a0a12050206020106000002170a15051013070a140a *0c1504080f070b0a0c090c0c0a1401000700000604020800000200000500000204010907000408 *030800000a03071006040501060d00080a041618060c1308091804050f06010802000500030601 *040301030e000002000004000004030001040001000105000006000009090d1100020d00000a01 *000303070b09100e06080b02010801040b0a060e1216160d050a0805040b0c1213111815131811 *141803090e09060e00041403060d01040b00000400000400000200000703040b00000300000604 *040402010505020705000806090c04030a0400040e0b1103010800000006000300000200000000 *00000000010000060004080002080a04040100040000060e121404091305000302050f00000600 *000306070a0000040000000000000600000401070100090000080000020301050000010000000c *0b0f03010500000200000502000700000300000000000000000000000100000201000a00000700 *000400000000000000000000000000000000000300000300000100000100000000000000000000 *000000000000000100000000000300000000000000000000000000000000000000000000000c00 *000700000000000100000000000000000000000000000000000300000100000000000000000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000100000000000300000400000000000000000000000001000000000200000600 *000600000a00000200000000000201000300000500000b01000d03020e9cb0aabcc7c800000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000200020200000000000000 *000000000000010004010001000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000010500000000000000000000 *0000000004000600040000030200000000000000000000000000050400080a0205120404090300 *0303030c09000f0500000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000090700000000000000000000000000000000000000000000000000000000000000 *00000000000000000e260d00000000000000000000000000000000000000000000000000000000 *000000000000000102000003000202060b0000010607030e12090a0f10070808090a07080a0b09 *0a0f120d16141c230e0d0816120b0d110a0c130f131d1f06050b07090e0d1b1e1e2322151f1411 *0c0512150d1c1d1422282125231f1e1e1d34261e221e18221d0b212219201d1714101304000106 *000008050502040800000000000000000000000000000100000002010600010303040400030103 *01010200000000000a080300000100000001000602000104000113120d221e0f26201e1c1e162e *2e2c2a29222428252829253f402b3b3f2f3d2e243e43353e3e32625a5d5247331c131303000003 *000004000000000000000000000000000000030400000100000000000000000000000000000000 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *000003000003000000000000000005030800000004000604000100000000000000000001000000 *000000000000000000000400000000000001000002000002030300000000000000000000000200 *00000000000605010b01000300000000000000000503020402000400000401010000000902011e *1c09222610373b2124231514190c1512031208011e1e0c00000000000000030302000004060606 *080500000003000005000001000000000000000000000000000000000000050304040200000000 *000000000000000000000000000000000000000000000000000000000000000000030800000000 *000000000001000000000001000000000000000000000000000000000007020003060404000513 *08070604040404030407060707050907080302000400000700000b000002030802030006020011 *07030b0702090903080a020a010404000004000004020300000101030101050800000004030104 *0001020105050306000000080402120d07120d0c12120a0a0d080d070510060411150d140d0a14 *170e1b16150f11131e180d1a0f0a1a0f0a361d13362d1c4a3f294842305d443e5c453155432b59 *525157483a423e322c21211c1914120e1017191502040200000009090800000000000001000212 *0a0b0b090c0c03060b08070704040400000500000e0f0c0500040600030f0d09100d120c0e020b *0d0a0b0d0a0d0909040202100d0907070901030801040600020000000000000000000014070e0d *0c1407060e02030c0006020008070803050c08050c0a090803040e0d1105060b04020604060502 *060305050203010300000003010204000503020503000300000303000000000103020201010400 *00000402030d050c030809080a090904000604040d040009080b040d0d0d130e10090e100c1304 *030204050101080500000000000003000101000700000a00000004000001000002030202000001 *00040203060802030602070608040000000204030000000b070300000002010700000400010400 *00000000000203010600040100030400010403050d080d04010604020408080500000008020306 *090a08090712040305030800000000000000000308020801030300040803010500000200000600 *000400000002000200000000000000000001080b00000100000000000000000005000003000000 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000b00000200000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000100000100 *00000100000000050000040000040000030000010100000300030400010903049ab0a7bbc7c800 *000000000200000200000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000070f10040b0500000000000000000000000000 *0000000000000000000000000000000000000100000000050604050301000a01000e07000d0900 *030300000001050000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000040000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000020000000000000000000000000000 *0000000000000000000300020605060303090000040103070d1104070b060a0a02090d060a0304 *0d040809080d0907140b0c12170d141d0f0c090603080b0f160f0c160906090b130d0e1a201e1a *181a080a080a0b0a15130e151d182c2d21231d1e38382f253028181e1421221e21281f232a1b1b *211d0e120c060401010001000105000001030000000000000000010702020001000000120f0c03 *00050208060202030002000000010001000201030200070504050204050d0a0a1e19131c23241c *23202e3a252c2622332e1e413328322d22292a2729251c36403f2d2e2a685d4c7e766a26160e11 *1e2102060301040201030600000000000004020208030200000100000000000000000000000000 *000000000001000000000000000000000000000000000000000000000000000000000001000000 *000000000200020800000000000000000000000002000007000000000000000002050a00000305 *040006090401000004000000000100000100000000000001030200000000000000000006000000 *000000000000000000000004040208080002000000000001000004010300000000000000000006 *09002542162f431b2a311021260a1728100c1a06232d182a371f00000000000000000000000002 *03040101060000030707080007050103000506000d070616120a0d0a0200000000000000000100 *00020000000000000004000309000c140605080400000000000000010000000000000000000000 *000000000000000001040500000300000001050004020000000000000000000000000300000100 *000304090503020001020304080504050a02080e0505030400020502000a0b000407010200020c *020212090703050603060305080a0007060302010709030201010401010803020b060600000002 *03060101000007040001020500010701030f0b040c0c0e140d0b0c070804090309090512100c14 *090217090917110c15130c1c1b11151a15251e1535281841352c513c2b473f1d4c473a58482c5e *523f6e65536255474b4339392f2c1c1a1817191414110b0e0c0a030001070a0700000000000000 *0000010403060708070d0d0c0910070a120c09091a1710080809101007070500070b0910110e10 *131806090e100a070c150f12100412121211140b05060400000300000000000000000002030200 *040508050700000b0100000102060b0b1305030806110a050b0b020605070b0904000100000206 *080605060a010102050e0a00000001010000000101000002000001010600010400000000020300 *000200000000000003030307050a000409000004020605060a0a090b0605120e16140e0e0a0f13 *141d08060600000302090800000000000000000003000402000400000205030700000300000000 *00040001030502040300010b060704000200000100000002010001000001000004000000000000 *00000000000000000000000b0f070f07020001000300010a080a05050a00040800000102040003 *04040004020502050a040505000005000503020100000000000000000000010000000000000000 *000000000000000000000400000100050700000000000100000000000000000000000100010500 *020404090900000200000000000000000000000000000000000100000000000000000000000000 *000000000000000000000000000000000001050500000000000001000000000000000000000000 *000000000000000000000002000000000200000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000100000400000000000000000003000002000000000200000300000703020608040a9eb1a9be *c5c600000100000000000000000000000000000000000000000200000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000102001a220e06040004030101000000000000 *000000000000000000000000000000000000000000000000000200000500000100000000060100 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000007120c00000500000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000a0e0800000000000100000000000004090200 *000000000002000004000100000300000300030b000405020b0a0307070200040800060b060d08 *0b0d0a0d0f09050614120d14130e07070804020514140e11120b0a120e0d16160c181d0a120c14 *1a171205091605030901031619151e1f2125242629231e1d1e1729231d1f16212b2823291f1e22 *1d1c171d2a272216131a0e1717101518160c050712070405000401000101000001000001040419 *121201010300000000000003000105000004000005020114120a0c08051306061d141126201f2d *2a21211b192b2c2132352b333f2d3b3822393a2e2c28212a27243a322d3c403a6a503c85775926 *23180604060200020500020b00030c010300000000000000000000000000000000000000000001 *000000000000000000000500000000000200000000000000000000000000000000000000000004 *040407020001000300000000000000000003020803000005020809080c09000100000000000000 *00000100010100020000000000030103060000000100000000000300000000000000000e0c0f02 *0a0b0000000000000100000301020c030305000005000402000303000006000000000000000000 *000000000016210d26411e28471d1d2d17213e172640173e3d1e06070200000000000002000001 *00010501060301040000000000010000000300000000030605060100040300020805010501000f *04040400000000000000000000000a160c0e200b010b030000000d1303060a0604080700000000 *000200000600000000000008040203000001000005050400000400000300000200000003000003 *000008030107070505000308050605040a04060401000008000004000004030309040104000304 *010603040a0506080e0b010806060706060b0b090a05080c09100101070600040705090a040500 *00000302040402040500000100010609100b040609080a12100a170d1210080915080913051216 *0c0d12131314131316120a130e0e11070c20181627211834221836221e422b1e4f493b4546335c *4f3c594a315d5240818b814a4b41372c261c1815181a1312120b1a1c1d04000006000500000000 *00000000000000040000000b0709160e0f130101120d0f1a191a09050907070a08060b0b060812 *0f090d0d090d080b16081208010a0b070f13070a0d12090804041109040600060200030400020a *0008040512070107100d06161e1f03000207050702000a0a000202010907060702000400000100 *010202010401000500000200000200000600000600000300000000020000000000000000000003 *000100000503000403020904020006030403010503000000000000000002000004090c130d0c04 *070a08080e1312150804110b040c0b0b0a05090a00000a03020702070702000107000000000000 *000000000000000400010004080904080a00000201000302000209020b05050c00000300000000 *000000000000000000000000000004000005000000010500000100010404000003000306000005 *020b06000500000000000000020804010305020000000305090803000300000200000000000101 *010800000000000000000000000001000301000100000000000000000000000000000000000000 *000000000000000000000000000000000300000000000000000000000004000200000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000200000000000000000100000000000000 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000101000500000000000000 *000000000000000001000000000200000500000603020704000501000305010507000508000a99 *afa7bcc5c900000500000400000500000000000000000000000000000000000100000000000200 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000300000000000000000000000000 *000000000000000000000000000000000000000001000000000300020500010003080307150600 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000030001343b2200000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000035 *4e3705100503000000000000000400030600020406010806020a00050a00060402030600050802 *0c0a090c06060b090c03050d0d0d1210090714130307080a161619221e171c0f17110d110d0d11 *0408151d180b110e0505080108031d1a0b272d1e1f211e21241d2b251d1d21202222272520181a *1c1a21281a191e1a201e1a181518100e0c0a030a06080f06070700000004060706090505020607 *0105020104040c110706090101000001000005010808040505020e0b0b150c0c1d171518241c27 *281e2527252024212f332c333029302d212d29232f2a1a2928252b2c1d262f233a382a6c635e8a *8672403a3212121601020900000001050303080300060301000401000000000300000400000000 *000000000000000000000000000000000000000000000000000000000000000100000000000000 *000000040a0000000000050000000000000000000000000203020000000a030300000000000209 *0c0a0000000003030000000000000200040000000001070100090000000000000000000000000e *12110000000000000000000800040400000c08030508000a070002010001000001000300000300 *0001000000000000000100163617172d0f213918233c1e1e3c1710270b00000000000000000000 *010302020901040507080e0900050802000707000706010106040100040902070902051309080f *030a06040700010100000200000000000000000006170c101d0c1d2b180b200a011c0800010000 *000001000000000000000000000007000308040001000000000000000000000001000000000007 *0104000000000100020505080a040201020a0c0b07050307000402020507050603000004060206 *01000500000c0201170f0a0e0808090708090f0909070c050607080d1001060704050802040902 *030c00000400000000000000030500000100000102010408010a0708080f0a0b090c080d14180b *0b071515121515121a0d0c1413110d0607131312130f0b1e150f221e163d3d3245403c47362a4a *403351585c59584a5d5c405a57494d4840322c20211f1d19171a100a08030a0b00000000000100 *000100000000000000000004070608050c04070701030a00050605070803050504040504020103 *00000504070105080d06090c120d0a06050d0d0e07090a120f0907030405070a02020800020407 *070402040206070501020417131106091100020900000000000706080e03010405070402040600 *000000000100000000000200000000000000000001010000000500000000000000000300000100 *000000000000020200020400000003000400000800000100000300000000000000000002010408 *050806060506060e0907130a0d0f0b0b070306040a0a0503000005000409000509050c060a0e09 *070502000000000003040304010101000005020500000502040900020500040304040100000000 *000002000400000700000200000100000000000000000001000001000003010701080a00000500 *00030a0e0f000101030604060a0800000300000400000200000503010000020200010002080300 *000205000600000400000100000400000000000000000100000000000000000100000100000000 *000000000000000000000000000000000000000000000000000400000000000000000000030000 *000000000001000300000300000200000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000100000000000000000000000400000600000600000501000900000802020401040601 *05099db0a7bdc4ca03050600020200000500000200000200000600000300000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000003000106130600000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000050a041e2d13010004010002030008000109000309000203000000040e0c00060404060903 *0408040207040408090c0c050704051109131e18010a0d040304150c0d13100c0c15171c201f0a *060404090b0b140f09130d0500011e130a1615101614172e281e2127181c1f161f241d231e1628 *24202f28282626251c1a1c18171a1e251f233129131d150f110b0503040904050a030a05050a03 *04050a0c120607070607050a10101917171215180a081309000500090511120613120d15221d27 *1f1a222427222b262424272e2921202b212a2f262c2e29313b2e302d2028211d32201e3132316d *534d9295813938292c312a080c0509050a08050602020600010900000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000600000000000000 *000000000000000000000000000000000000000000000000000100000000000000010301000000 *000001000000000000000000000000000000000000000000000000000000000004040901000000 *00000000010000000000000000000605000406030c040909020802000100000001000005040100 *00000000000000000a030603000301010310290f152b102a44210c210600010001000400000500 *00040b0806130c020606011107010c080622150f24190f120e081310170a0701140b08120a0410 *0a071d1a0d020101030001060001010004020000000000000000060d03243b180a1b0a00000000 *000202000202000000000000000000000000000002000007000002000503000200000200000300 *00000200000000000703030b000609050c0b01050604030000000203010601000d020107000411 *050a07040a0403050200000d0a091009060f0f08100c0906070b09080b0d08120b0405080a0d01 *09080107050000000000040000020300020000050000000706080a080a0d10081c1e1500040901 *0001070300120705120b0a0b120f0a1b1b1a1c1516151e262722433c3a3e2d27403c3f3b302e33 *403a4642313f483d4e4340594a4361605f5d5a5243413c3939241e211c1718180f111003000002 *00000000000000000000000000000000000505050000010d0811120b0c0b060800000004070b00 *0003080403050105020209100807180d04191c1d06080e00000002030806090a00000003020500 *00030a000002000000000500000900010300000003000200000002020203060e01000705040800 *000200000100000200000200000000000100000000000000000000000100000000000000000000 *000000000000000000000100000000000000000000000000000000000000000000000000000000 *0000000000000000060b0507121208090a0c030708040602070a00000101010410121409080a07 *050803000200000204000303000400020a00000001010300060500000107020700000204010203 *0002000002000206000100020100090b0707030d03000500000e00000c00020500060502030002 *070906010205020b0a0b0d050409060411000001000100050c0700020100000006000300000204 *000400000600000100000000030500000000000200000000000400000400000100030200000000 *000000000006000200000000000000000500000100000000000000000000000000000602000000 *000700000100000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000200000100000000000000000000000000000000000000000200 *000200000000000003000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000000000000 *000000000000000000000000000100000400000400000000000000020400000400010804000500 *000a0806139ab0abbdc6c60804070e0c07060c0900030600000100000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000100000000 *000000000000000000000002010100000000000200000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000004000400000300000000 *000000000003090000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000120e0738422300000300000000000005030003080300000000000000000000000000000000 *000400000000000000000000000000000000000000000000000000000000000000000000000000 *0000131c1412160e152016020005030505030b0700070503050403040e02010a09000705030b0a *040806070b19130b12130e0a090a0a070a140d0f13180f1314160d131415130c211f141720182a *22160a04060605080000020000000000000a000404000604000229291d2f2c23252a1e2e282220 *17171d1819243328212622211f1622231f243036222b2a1e2b27191b190e070919100c15120c0e *0c0515110d130a0c0e080b0a050d10070f0406030201020000000200010000000c0d0914110d23 *222022252222211d1f262a22221e22221a2e26122d271a393825362922372010291a0a25282a29 *2a21574539928d804e3f333a362d33261d140f0b09050500000000000000000002000002000701 *000600010400000000000000000000000000000000000000000000000000000000000000000001 *00000000001d202100000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000002030000000000190f0e3d *412a0a09030000000000000000000000000501030a06040300020401010200000700000500020a *0408070003000000000000000000000401020000050000131f0f0b140b00000000000004040406 *010100000011120e130f0b170b0b1e14172017141d15161d1409191e0f1d120919080f27140f20 *13081f160c180b07140e0b01020302020105000103010100000000000003000000000000000000 *000000000002000003000003000104000000000000000100000200000104000001000000000002 *00010000000300000000000203030004030607080b060707010006010110070108090900000201 *000109040507080b070100060204110609100a0a0d05050d0d09090c0b0e0e0c090b100a03070e *060905030607020a0100020000050000000000000000000000000a050709050a0b0305140a0b08 *0b0d08070707080217100e090b0c1a130f0c050b0f04071111131e2128262723231e192b1e1729 *1a2033261e3f36314238273a3f3144453c53483f5158484242374e3d33472b23281d22160a0f04 *030504050400000000000000000000000000000001000003050b08111905070a0000000300010b *06070800000801090803050406091911090f080714101206040708020008020002000000030400 *000201030702010200060000000004000400000201000700000800000500010300050701000003 *00000000000000000000000000040000050000000000000000000000000a010301000300000400 *000000000000000000000000000000000000000000000200000000000000000000000000000000 *000000000000000000000000000004030b0d040c0b0d0c03020404020705040d08070300010b0b *080d0000090000000004000100000300000000000000000400000600040700040000000000000b *08070b0604030005020103100f1105031101020902070d01020700000800000100000301000000 *000201040f01020e050b1408070800000305020602000200000307000102000100000500000000 *000003040901040900000001000300000300000800000000000000000000000000000000000000 *000000000000000100000000000000000000000000000000000000000000000000000100020200 *000000000000000000000000000300000001000000000c00000000000000000000000000000000 *000200000000000000000000000000000000000000000000000000000000000000000000000200 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000200000000000000000200000100000000000101000200000300000200 *000402020806060f99afa9bdc6ca251d121c2d1413230908150604160907080508040302030407 *080600000000000000000000000000000000000000000000000000000000000000000000000100 *000000000000000000000000000002160b00010000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000512040c1d0800 *070200000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000090b0000000000000504000f26111a332500000100000000030600000000000000 *000000000000000100000000000000000000000000000000000000000000000000000000000000 *000008020228351c000000000000000000010304070b09000005000006030207070e11060e1000 *070a030a0d00070b03060c14100c090d0d070607030a0601090b0a150d0c090c17131114191017 *1d101415140004000b0600010602010201090508090c0e100809150c0c232924262914181c152a *2e1c1408051a1711201d131e1e201c18181c201d1b1c150e16161e261a212925252f2822272614 *0e131f100f15140c1c1510080a0c1616100a0b0b0811110b0a08140a070c0b0c0c0c11060b0217 *131421231e1e26172023201e1f1827241d292e2732231922210f2124163239262e2f1c2f241e25 *221c3a2e264a48429a97824f4533382e243634281d150b0e08090905060a0407110a0a05070902 *05030201000503020808070505080000000000000000000000000000000000000000000b040900 *00030a040503000003020303000000000000020000020700000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000000000105060e *0d0c1f2d2d1f1d2200000000000000000000000004000003000000000201000100000200000203 *010102000000000000000000000000000002000000000002000101000005000000000006070004 *00000000000000000a0d0d0d0603110d0411110d19170d1d120f0c0407140c07140d0518170d1e *140a1a140911120c15140512130702000101000002000004000000000000000001020200000000 *000000000000000004000000000000000000000000000000000000000000000000000000010100 *000000000202010000000107000007000008000307020103010002000006000201000004050004 *02010300000200000000000301000505070b080a0a0a0609090607040209070a10070607070701 *01030a02050a0605050f0c00030200000100000100000000000100000104000201000103090708 *17120101010105040703070c1113100613100a06040302000806151e131d19201d191727221b22 *261f322a262b211a423b27484e41504c4b4c43434a483b483f3944352b574a4272664946444008 *060500000000000000000000000000000000000000000000000000020000000300000100000003 *0002070407000005030a000002030100000605020a0a0a02081400000100010900000100020200 *000000000000000003000100000200000000000500000000000000000000000000030500010c00 *000103010800000000000000000000000000000000000000000104030a03000800000000000000 *000100000000000000030400000200000100000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000020a00030901000700000400000000000000 *010200030700000000000304030404020704000302010100000000000001010000000301050c00 *010903050504040602030300030300000300000000000100000000010601030905020900000000 *000300000000000000040800000802020503000300000000000100000000000000000000000000 *000000000100000300000300000000000000000000000000000000000000000100000400000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000100000200000300000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000002000000000000000000000000000000000000000100000100000000000000000000010100 *040602000502000400000a9ab0a8bcc6c82e44263b543b4254332e583c3752383642241e2c132c *37172947201e29131a210d08110902000400000000000000000000000000000000000000000000 *0002000000010000171e12192a15020c0600000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000050a0714101203 *000200000100000008080500000006050403010000000000000000000003000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000040800000008070200000000000000000000000000 *000000000100000003000000000000000000000000000000000000000000000000000000000000 *000005060417311e0206000100000e050406030809010608010304050a02040703050900030d08 *00080a010908060e090105060102090b0e0b0b0a0003060b010812030d0a0b0f0c091612040511 *0d0d12161004010300000009080f0600040900050a03081c060a1f130c26262733342c1b131423 *1c1a3d38362521201711101d1714171712211c15211815221b171d151b2524202b2728281e1728 *262617171b12150e1c16141a1c1c251a1c1b26271e161d1e1316100c0e1b19172522171b14131a *100d24150e1f161d20161a201614201c10211b183a2d233526162a1d1431201d402f2340302730 *2825372a223f322b5f402fa4a5a64c453e463e423e3935342e2d2111121c0b0a160a0b0d0a0f12 *090f150b131f18181e16111e0b0a19110e14110e1615111d1912231c121f0b0e1e131128161520 *1a1f222121292528241a1a383a2b422821433a3a45424225201c2217140a050c13040e12030802 *000000000000000008010200000000000000000000000000000000000000000008020a0f010415 *080a1a10153b373d2a21240a040400000000000001000001000008000104010701000100000000 *000000000000000001000000000002000002000002000002000009000101000300000006000301 *0003060005050000000000060000100604120a050500000000021e0d0d1709081104000f000016 *0d091d160e180c091203061b0e070a030402000100000001000006000003000004030405000100 *000201000000000004000000000100000001000001000000000000000500000502000000000000 *00000000000000000000000300020200020700040a040105000303000208000306010309000301 *00000b0006040002050000000000010000070000090504050006130b140b080b14080a1204090a *05050901050a080c0b0d0d08060e00000500000600000000000000000000000103050605050505 *000203000a0800070700010100000b020306030501070703000306061307000c1a080f2a1a1817 *110a1e1a201d150e352a263a362f47382756423a524639482f22584f3d493b345b533f6d5c4f57 *403c1a0b1000000000000000000000000000000000000000000000000000000200000002000000 *00000000000000000906050a00060a040d0500090606070400000100010905040707080200040d *000104000002000507091808030b00000000000000000003070b02000200000200000404000400 *000200000000000000000000000000000000000003010d12131e0d0e1400000002030700000100 *000400000200000000000306020e00000100000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000301000001 *000807000b02000a0400040a000004000202000100000100000300000000000301000104000202 *000000000000000000000001000102000500000000000000000005010300000100000100000000 *000100000200000000000000000300000000000000000000000001000000000000000000000000 *000000000000000000000000000000000000000100000200000100000100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000100000000000000000000000000000000000000000000000000 *000000000000000100000000000000000000000000000000000400000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000200000000000200 *000802000b0100070200030400019fafa9bcc4c930442917422517431e254f292951262b573035 *6035345f333156344267382f592e0d2909000800040e0217240400090100000000000203030026 *260f2e380f0e1e0300000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000204020d0e0302 *0d07000000000000000000000000000000000000000000000000050d0200000000050200000001 *0400030400020f050c1d020822060f2d090f250c122d0c0317080d210b11230c0f2d0a09250701 *160000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000030300080e06000d0400000000000000 *010000000000000000000000000000000000020000030000000000000000000000010000000000 *00000000000002000204001d220c1b2a1241412012100001030305090a0308060207040a07080f *0f121a17120c110c000b03010a06060b08090a0b0f1109090c0b0a060b0f0c0809120a06120907 *080b10150c080a0700000000000007070d0e14090b0c0304090416100841422e44381f2c231026 *211426231a3d37302123131d1d1017190a18150b15130d1f20191e1f131d140b1f1e11212e1e21 *200d201e0b2b1f192b2922262a221d1711231f131a2114221f0f1e1b0f1a1c0a2d2d2b363a2c28 *1c1728232029241a0c180b23251717271c111b15181914383a3338362c332a2238291339302536 *2f20392f1e3c3721423e2f564b52999997574d3f3f2e22302c1d343f2e2d37253b3b2e2e281929 *271f3433263021173c38252a2c1a35351e393a27383324443d294846353d3a2843482c262e182e *28142d331822220e392f2143402b4a35185247303b3a202b371e3e453527402f0c0b032d26212a *281e3d32253936253f3d263136242922131b0f010000000e110a322a241c1e1d1a17141e201c1b *2319131e16252c1c2c2a212e2b20060c0900000000000000000000000000000000000000000000 *00000000000300000000000000000000000702000303000200000400000b000002000302000007 *0100030300080400000200040000130c061609061910021508000102000704000c0b011d170923 *1a0d242310170f0c1c0b050b03000a060005060001010003000003000002000005000009010007 *060000010000000000000002000003000001000000000000000000000000000000000000000000 *00000000000000000000000000000000000001000205000000000602010906000506070b040204 *0300010200050503060700060000080603000001030200080603100a080606040105001111060e *100911170e0a020416161c0e0a06070a020000000002010002010000000000000000000200050a *08050000000002000004010003000403010504040607050c070b050402080a0909080c0c050212 *090f11180e181a12262e2b18140e2f3726393d364b482b54573c5b4e39675a43594d3b76664f6c *60546b5e4d59584f1d120f00000000000000000000000000000000000000000000000000000000 *000000000000000000000000030006010000000000000401000000000003020000030010170b0d *0c09100b0511170e0b101202060700000000000003060700000000000000000000000000000000 *000000000000000000000000000000000000000000000000000002000000000000000000000003 *030300000100000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000006 *010207060a00020800060400040100090700040200000100000301030606040609070508050000 *020000040300040000060300000000000000000000000200000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000010000000000000499b0abbac6c902000200000000000000000003080d06 *1d140d25131738201d3822234b26203a230b09020409040000020000060000000000000000001c *352111190600000300000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100000000000000000000 *00000000000000000000000003010000000000000000000200010e0a040300000701010300010b *0307141d0c252a0e223e202d4326345c2b3f643844612c3a65363c62323f64333c622632602b36 *6532284a1d09170600000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000132c1e2b2f121a1d061d2e1c2d43251f321900000000000000 *00000007020000000000000000000000030c080b0000000000000000001b211113160624421e00 *0000000000030406000000000200080f0521291a607554424f271a0f0b10060913110d0907070f *0e08050406080c0b11131316160e0f0d0817080a1a1a181d1e1d0c121209110e0f140c13211a11 *171b16090911050613090b0103060000020804060c08080e080a211d1425140e494228403b2d32 *302720241d20180d2e373029271a281d0e1b1c1513110a13090a1318181006071d1813271e1028 *1c0e201914211b1333271d241e16231f1830251c2a291f3d3a252b24143e3d303b281b2e2a1b32 *2c252522162420142122161f271d191a13251d17291d1a27191d4341342f2d232d2a1c302a173f *2f1e3e3123483f264638203f47424c4c4795866f50503f322e272e2f263524203a252034231f1f *161422170d201c0c1d180e33301c20180b27231f422f1f3126223c262444341c3a2d1d2720141c *150d1b1c1a1f1f2330241d3c3f3c3a4233443f2b3b3a252d301d4a4727403e26302b1e2a251a39 *25262f1e182f3520373520322a1d352c213330203a2d1d2f2c253831263024181c1b171917091d *1f121c1c121e1a182219102114161d171506070600000000000001000003000000000000000000 *00010000000000000200000a00000b08040d00000700001000021808072411081a0d031407011d *0d030d04000c0004150004080002030000110b0919170a1a12050d0d0304030116030214050525 *1c0e22170c1f140a15180d13120c15110a170d06140a0c01000202000306000008000002000008 *08030b070500000101000002000008000000000000000003000000000000000000000000000000 *00030000000000000000000000000000000000010200000300000b0405100b070801030800020b *07030c04000d0d071102041a0a0a0803060200000500000e00000500000c07010e070710080612 *08090d03070600030703020e030207010007060100000400000000000000000000000000000001 *000607030403080704000602000500000400000503000306020508080d070a0b0914120b081309 *060e13080f1612131d1718100b0c1e1b182220262719165d4f396e6058645858563a34624c4167 *5b4b7674596f6254665d534f3e3503000000000000000000000000000000000000000000000000 *00000000000000030200000001000a000200000000000000000001000102010705000009030401 *0507060104070705060d0712131105080700000000000001000000000000000000000000000000 *000003000501000205000000000000000000000000000000000000000003000001000300000000 *000000000000000600000200000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000106040500040504030503020502040708061303000300000001000205000702040b04 *060902000005000202000200000000000500000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000300000000000000 *000000000000000101000603000505000803000498ada4bcc5c600000400000200000200000000 *000000000000000000000000000400000000000400000200000000040000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000020b0700000001050000090000000000000000 *00000000000000010000000000000000000000000000000200000505032a2b110a080816220d17 *18052b270d27270a263f1633492137643b42653b456c3a436b383f6c393c6d2f376e3736683439 *69333f693b3c6a3d103517020b0402090000000000000000000000000000000000000000000000 *000000000000000000000000000000000016120722200d00050500000000000000000000000000 *00000000000000000000000000000007000000000000000000000001000f1d120004030207060b *08020300000000000002000000000a0a031b0e054b4c293e51293b451c2e33120b0d0306090508 *06040c0c070003030b070910090a1a170c12150c0a120f0c1c1b0c0e0f0c0305120203190b0913 *0b080a07020b0c061007060d07000b05011510060b0301140c091711110b0c063032213a3b293b *3221241d0f21150d23110e29302f2c29152623162a2111231c0f1c1b0e231c0c251b0722150d28 *22132b1d10231e0d170802200b041c15081811071f12082d1f0b2e2b1a23200d2b1607211b0a1f *1a0b271e0f1d0b03190d081b11092b251a211e131e1e20241c19171a193e31253c3d223d2f1e43 *3e2a42372a372e233f462e403f2741402e433f349c9d9d4b4c4538312430251d3233262d2a183c *2f1a28220f21120a20110d2818113532203120123234213f3e2e3c36244140314538243726192e *190a2520101b130a1f160d2a251742321e3b27133f3022413a27403124443b2f43472f3338292b *291f393b2233281f2c2e263b2d1e432d1734291c3d302a38372a28301e3f3b26473b250a060605 *020807020201000013100f1e1a1e2822152b1a0e1b130505000001000012060601000000000000 *00000000000000000000000600000a00030604040000030905051c1206101104151a06110d041a *080d1c0c08130a091a08061a0c010507000000000f0c080b01051e0a08160706160a06241e1e1e *1d0d1d16132b281215160a09000006000103000009090b0909070000000000000201000b010016 *01021808030d050402000000000000010004050100000000000002000003000000000000000000 *00000000000000000000000000010800010100000201060200050500000504000806000403000b *03001004010700000304070201040c11080c0600020100050000000000050103100a0d0a080c08 *03030609030a0a03090e0e1308060a060907010807040a00000300000000000000000000000000 *000000000000000200020e00000300000000000000020000040700000502000407010604050a07 *090d06100b07110b0706050c0a141a0b0c251d18261a153c2c235f5042534e3e5342355d4f4f68 *584b55463c59574d604d3e6f5e4d6b6559170d0900000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000020000040300000000 *000000000001030700000400000500000100000000000000000000000000000000000000000200 *000400000000000206050002000000000001000000000000000200000102000002010003000100 *000000000000000101060e00000100000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000102010500000500020500020500010401000200000400000505030504 *010908050c00020500050c00000000000000000200000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000040200030001040001049cb3aabdc6ca00000000000000000000 *000000000000000000000100000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000002 *0501110f020000000000000000000003000001000000000001000000000302020b0e0701010104 *05000d0f01151a050104000000000b17060608020300000000001612051b140223270e00080000 *030016270b0c0e080d18050a09013353243a552f2f5b314368303d6734436730416229375d2d30 *5e3235642f3361353962261e461e071e0300040000000000000000000000000000000000000000 *0000000000000000000000000000000000010503010b0001080000000000000021291100000000 *00000000000000000000000000000203000000000000000000000000001e2f17070b0100000000 *0200090e01141208090c010701000706022f230e4b3f102b3a162e370f424a2242552a0d0c0508 *02021207010d0a05050601060807141d1e16251f1c28290000000c0c070202030911090909010d *0d041212071107011108030c0704120b06140c040705000a0e0e1f1e102f211d36311e29140842 *3e29212314241c0b231d0e2020122024151f160a241c0b1611021b18051f1d081d180918120720 *0d042e2618362b122621101f14091e0b06281b0f211a112b1d122c250a2b240c3931173a2d1e40 *381e3227143823142229141e1c081f1e101e1d0b0e14081618091d1c0e0d0d1115110b2b2a174b *3e262638252f361e3a413b392e1e3a3b33474034422f2b7f84814743372d3021292c20343c272d *2c1c311f162f2311271d0c26200e2923133c3f29383a1f45432b453b1f3c2d2744422c45473b39 *321e3127131f200f150e09250c04312a1e443a233931233b2e243b3a24303120393d25443b1d40 *392b3c311b3c2a193c3b273a37203b3a1c2c341c4030144c432e4d3d1e433f254640302f321f00 *0001000000010200020000190e071d2013322c21392e1d171d1704020000000009050000000000 *00000000000000000000000000000100000600000100000400000200000c00001502021e120709 *04021506010709010100000d07000900000200000400000b0b090903001715021b10031711021d *110b1b110a1308041a170c120d0c0905000a08001213030b01000a07000400000e02020800000b *0501050200140d00090c03030100020000040000130a0400000000000000000001000000000000 *000000000000000000000000000006060300000000000000000002020007010007030106020004 *00000402000805010200000c0800090b020a040104000302000005000005020004010008020009 *0801100c050506000f0a070f080807040a05040304040103040001010000000000000000000000 *000000000000000000000000000000050000000000000000000000010a07000001000000040000 *000003090500010304000811090a0a120b0a090813120c2e2d1e4046306f6f573d34214c3a2956 *584055493e584c385653415b56416e614582715760514e0b080600000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000010004040000000000000000000000000000000000000000000000000000000000 *000000000000000002000004020206050e00020700000000000000000000000000010000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000010300020300000000000203020408010301000004080902 *0c0c00040304070603070301000400000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000003000004000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000001000000000000 *000003060600000003000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100000000000000000008 *000002010400000000000000020000040000000004000000000000000500000001000000000000 *00000000000000000000000000000000000000000000000000000000000a0903180d111b131308 *05100a09100708060a0f0e050b061217131b1a1d1e1a2329282da5b4b0bcc4c700000200000000 *000000000000000000000100000200000000000000000000000000000000000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00052331231b241502040000000000000000030300000000000000000000000000000000000000 *0000010a04030d0a080b010000030000070001050000011018061d1d091d20081d1d0817140505 *00000509090f1f110706000c0e01070a0318250c2d481e425c2f39643236613340602b4068363e *61333d642d335a24335b33375e3328421c10210e02100800010000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000004000003263b231f *2410090f06000000252f210000030d0303121c0d00010200000000000000000000040000000000 *01031d231528301c4b5834384e2e1224091a1b064857351d1a0c3346291c2211313c26394a2c12 *07050e09060301030902030e03040402030500021a201f18231f0000000815100000001200000a *0103050909160d091a130f0906030b04000e05061205021402041305071213181c10111d161528 *1a0f392a1d31251538272025201e251d122e29212620231a0f0a151009160905140f051408021a *0a051b100b2524211b18151b130c1c0a0825140a1f100828190d271b0c211f0e312b20433c2d2e *271d3a35243038252e281a3b312225262034251720191e11141c17170f231f1a1e14142a21152f *2a1c343f33262326263240262e2b393d2933322940453d5d57425a5a5a4949482a33343c312a41 *42323535223728132d24183222163323173c332d171c1c1e1a22241d1819211a151816211a1925 *1813251e1b301d15241d15261f183b2615433f28422e2238231f42361f483a2241391f3a2f2643 *3324383a24292a1e493a21322c203b2a12373a204338203a2f1e483d2e503f2f4139283a46362e *231a0702040000000000040000050f141a1318131b0f0925180f2a1b0e0f060100000000000000 *000000000000000001000004000000000000000000000004000107000301000004000003000015 *0b031b13071a0d09040206040006100709040001100b03000000080b0414090a1d0f091a0d0716 *06091d18141e141717130a1404011610091f0d0a2918111509070b020002000100010102000008 *03040800020500010c05080c06090200020000000500010001030a010107000102000000000000 *000000000000000000000000000000000000000000000000000000000000000000000100000103 *00010402000d00020800040900040002080500030200000100000300000704010200000803040a *04050a04080400050702040702030a030207010506020500000700000700000200000200000600 *000000000000000000000000000000000300000a00000000000000000000000001000104000d00 *000000000000000a00000a000002000000101212110305130c0e192325232a214e595f2d342b4d *44351e070358584c53514e3a241c442a157c735c7f6f5a6364590e100a00000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000102 *000500000000000000000000000004040400000000000400000500000000000000000000000000 *000000000000000000000003010500010200000000000000000100000700000000000000000000 *000000000000000000000100000000000000000000000000000000000000000000000000000000 *00000000000000000000000000010408000c010008140300050005070000000002020400000000 *000000000000000000000000000001000300000000000002000300000002010107000000000000 *000100000001000000000000000000000000000000000000000009101707121d02030600040800 *0206000000020102050b051113011b1209120202000000000001121e14040b0101050400040103 *0701030000000000000000030310222542040803230500411a1a13000000000021160a0a07091c *11134a2f206d594a291b2001000004000000000000000000000200000501030000010000000000 *00000606000101020003010102050000040103010000000000000000000000000a040402040300 *000100000100000000000000000300000000000000010000000000000000000000000000000000 *00000d060507000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000100000000000016 *0e0c01000306050b200a0f301f2e07031000000e00030707050d07080d00000400000000000000 *00020000000000000000000000000000000000000100000b030a0200050101060300000d0a0309 *060c10070809060d02000703000903020b00000a000002000000000104a0b2aebbc5c800000000 *000000000000000000000000000000030200000000000000000000000000000000000000000000 *00000f170408170900000000000000000000000000000000000000000000000000000000000000 *000000000001000003040000000000000000000000000000000000000000000000000000000000 *00000001010000000000000000000000000000020500000100001122131f2b111e1a0a2b39100d *1a03000000080603181d0c20140c252614343413303b1d375128446338446c2f3f653439642e3f *632d4567313d622c40662d415a26375223385825213f140a200a020e0000020000000000000000 *00000000000000000000000000000000000000000000000000000000001c3c1e00000000000002 *08041a2b170a140200000008040422200c30341e47441c171e0f0000000000000000000602040d *0c030103000f18080b1c050208010302001f1c0b28311c132b180f0f02110d00382c0d352f104c *5737070b080503020301010606070506030d0c030c0c082227241d232500000009171700000005 *03020500000b09000f0d000a08050509010e08030c0d061a0b050e06020b0b0322251806030111 *120c12120431372d38312c382f234854475f665b505d56382e1e251d0b211d0c1d1405221d0e1b *1e1416120420170b474435020b110001051c1f1a241b132a231420190a2b210c3923143c2d1d3e *371d37341b3b39262a2b1c332b1e2b251d252e1e3c3b363032230d1c1a0d1519142b3b1e2b3a3a *3d3a1726262c3e31172922212b211e2d2812252f1d2d3d04131a414c603e5350172c312136360e *1b1e3e404240392c332821392b173128182f1c0c3b312c353c3800030606090e06090c00000116 *131d0000000f0d08383c26332c193f371d312f1e413b243f3b29423d2b382e1a3a311a372a1537 *2b183e3223414031464727402e2249402c3c361e3f2f144e4326463a243e2e244b453240371e1f *1a0f302d230909080000000101000001000b100c130f091c150f1916162521171505000f040007 *0100040000000000050000030304000208000502090a0601000000000004000002000000000009 *02010900020800000803000b05000807010b04000c030200000000000017080a1e170a221a0d21 *170720200c1c150821120d1e1a0f291a0c241d0d2017051f170a2b1e071d17070f060207010008 *00000600041108040503000c0907070a0500010100000105000105030405020208060104030000 *00000000000000000000000000000000000000000000000000000000000003000400010a050307 *000009110d1616150108030400000806030c05000602000b01000a00000300000100000601010a *05000d0d060402010500000d04040e05081217110a0d0a0d070306080202060900000000000000 *000000000000000000000000000000000000000000000003000000000000000000000000010208 *00000300000400000f02011706050b00001d0d0736271c43412a41351c352a1c48241e44341f50 *371f7d72586f60527556347e675781593d8f76518c7f6585755f575b40141b0d00000000020003 *010000000000000000000000000000000000000000000000000000000000000000000000000000 *00001e160b1a090312130b130d090408030102001e0b051c110717180e18160e21140b1411040b *0c090b06040b140e00010500000000000000000100000000000703050601010203010001000001 *00000e06011c1204161104050403080600070801070705090400121003070e0404090205110c07 *0b080000000506000f170810100142401d564b2a422e183a381e20230d130b0315100209040003 *00000506000b140711140504080511130d081002181605080f04050b0a070b040a080708030303 *0505090302160a0008030002000000000000000000000000000000000b244054212324221c0527 *210c100d031602002a11042d2a143a3e1c696a644d543b324c1b2d431e323a1220311315170714 *13051316091d1c060a01040900061f130f5a594e4554204f301f631d1d4739200400001a0a004b *5c348592a2a7aab4a7a9b8aaa7a84e422e3b491e3743173f4c143d47143d4a22313b0e34491539 *4e253d50213b5120374c1f39542143511a243213151f0e21261017230d171e0b0f150504070001 *0e0401000000010000000000000000000000000000000000000000000000000000000001000000 *000000000000010100050000000000000000000000000000010400000000000000000000000000 *000000000000000000000000000000000000000000000000000000000005030000030a00000000 *00030102050401070f150c30302e48546f08030c03010400000002050e04041000000400000000 *0000000000000000040402020200000000000000000301020900140e021611082a363320272107 *09120300060000090700040501000605000701000702040000010000000000019eb3afbcc6c600 *000300000000000300000400000000000000000100000000000000000000000000000000000000 *00000000050403060000000000000000000000000004092f46300b2b1100000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *01000000000508060a0b06000002000201000303000000151a0a04070104030408090405090506 *150c0000000200001710082c331e39411f4c482b51663a4b6931406437476a3543663c3d6f3c45 *66314267334667314069394062343f673d446d3842652b35532029451714190c09030200000000 *00000000000000000000000200000e120600000000000000000000000000000100000000000000 *00000000001a0808161a070c1e0f090501000000091f1517291d061409040a06090e10221e0a3f *4724202f19000401000a090005020e17080606032523111a210a060c0821381e3841295165406e *81504a58270f0d040700040504050306060404050c0d0c0b050724242724252403000007171d00 *00030605060f050b060704170c05110b0a1c120b1c100e25130d2112091c151408050b150d0d0f *05060b050518150b292614413e2b47463e59647022262d636a6c44423b2e24162219102b1a0923 *1b101c11052c1c0d2a20145861670000010000002018153a22193824153b26132d27172d2a242c *36253c39293f31253e35202a2b2026271d3a26162a2e1d3e3b353b3f3f0d0c0d05060d0000001d *11173440310000001a1e23000000161a210b101a000000100b0c000000474c5658443a00000004 *11160000043538353d2f203f331a37392835272132291b3e3d2f3b3d3f00000103070703050600 *00000d171c00000008080e4241433c2f2341311d3b2d1e4140304339294235263d382544362447 *39213b3021393b2d3f412e3a2a1a3f372a3f362550493d3b36204c452c3f2d24423127473c1e47 *3b222a2920282e230c0b0b000003020102010001130f0e12130b160b0920180e2623170f080412 *06040600020703060200020100000200010400040903040502080a02050600000c04060c090610 *0a0f0a0a0a1d160a180c0818140e1f160f212324150c121d10080c00000000001712081d120b21 *1c0f1e121220120d1f16171d140a2019080c0b070b090817160d120f081b19191c1210160e1008 *05050a02010a020109050406040302000500030504060c03010200000100000000000003000003 *000100000300000100000100000000000000000000000100000000000000000000000004000509 *06000a0200070107090f0c0700000903030200000c03031203010403000800000f00000a030102 *00010500010102040002080200040b03020b0506130f0707070b0702040303050c080500010700 *00000403080000000000000000000000000000000000000000000f02011d17171c0c073a221f3e *26272a1c1d465043463c33606758685e476f6f676d79764e5d585963614854563a47404a73793c *484b5c7e7c5e7e6f576f755d80915983944c6f83496a73415f5e2f4d471a2a1f05120c0a140c01 *0305000006010005000001010000010201040503090b0607070a050e0b00000300020309060204 *0100090d00221e101e1d091c181615161210090f100d0b1c160d18140e17130b28242121161d1e *16121b140a0604080708040000030000000000000000000000000504030403050300000e11070b *12081913024537135f4a36593c2526281c1c17071817112624190202060b08071e1a0e03000000 *000007010009040404030103090708050559492e816e5b70371f6c523f4a452e181a1218150c17 *1b0e100d060b0b0b150d04322f162f3b1d2d36162f3613334e2d1323152939162e401a2e371917 *180c19220c131709273b2a26391d26331c090402000000000000010001080f192a56523457303f *5e2d3f5c3241543146301e746d5c4b5c333a39236f6744607d6c45652b3c653c39603a4765293f *5a2944592140592438471e35220e6f5d6743332384969a516c3f4f3a1f8a3b2a6b482e15000041 *1f0860714399aeb2aebec9b0b8c4aebcc557754e4a6b344b5722556b36496b3b4b6d3051743452 *70355372374f6d305a70314b6c2f5373334a693941602e3b5e2c334b26294218263b1327461c1d *311a1a3d1d152111030d0601120400010000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000020400000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000c0e0600000305060402040704 *01020906090600041100020f0e0e1b151c1708170000090100090600010400010c080800000000 *00000000000000000000000e05080c0908100a050e1304101a070d19090e171108070d09091107 *040b0902031102020d060705070c03000800000701000812100f04010c0000000000009fb3afbb *c6c600000200000200000100000000000000000100000000000000000000000000000000000000 *030a00000800000000000000000000000000000000000000000000000000000100000400000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000001020404060b030000000001000a140f0b1506081d120005040304051d221110 *14030706020609020506010e0e03383a25363c1e4044213050214c6034345c31345b2e35642b2f *6030335f2c3f672e4a6c2d466c34486d3c48713746683044683d476f3a32532513331506180900 *11040006000000000104051c291e2c412622301700030000000000000000000000000000000000 *0000050506201d0a4a582f051c09000000132e1a04070702170b061d0f172b1a030c030000000c *1d090b12060004050000000000000000000109030f190c404223242e12201e0d3e3e2125321230 *421d4c5b2d394f240e0f090102020001000401000707030806020f09081f2a251b1d2100000001 *130b000000191510161d0f1a0e060a05031a110a15140813140d201d1315130815120c05060908 *04060404050301031b170e1f1d103d3d224447374c5d670200044b63673f382931201031201427 *1c0d1f1a151a11093e352941483b455651000000000000192829445142393f2e26261e31201425 *251b2d32243a2a20342d1b4639253c3b2921251d2f27162f2e212f2c212b454204060500000600 *00001317253a4746000000081826000000050c0c0a130c00000000121800000053464865604f00 *00000912150100012d2d29444b414a4a403f4238403a2c4c4232444b3a30424600000000020600 *050a0000010d1820000000030307364944363c242d301b3a31273e362a373b2a3a382744361e42 *3816403e273b3a222d291d322e1d3b321f3b2d233e2e1c3d3e253e2613393a241e1c172b271d47 *432351553f42402b2c23150d09050000000a070600000218100d1d120b16120f22191220221208 *04020807020000000301000200000000000000000200000d0902040a070701000400000702021c *130e070b11000007080b0d110f0c080d090000000000000909080600010a06070003050807061d *15051a140616090513120d191d1120211728231820170c1c1206111608140e060d090617120914 *0f0906060b05010608000206040202000000000000000500050700000300000100000000000005 *030000000000000000000000000000000000000000000000000000000000000000000000000100 *00000000010600040500020300000601000000000200000b01000a00000800020600030a03030d *09000307030000000000010101050200030502070c080914110709070301000304040505050800 *0107000000000008000105000b0a09180e0006000000000000001110030b0f0700000300010407 *09070b090b00000300000000000002000000000200000000000000000001010004070504070310 *170701090510110a00000000000000000000000000000000000000000000000100000200000000 *000400000000000100010500000000000000000200040502020000020100030300000000000002 *000010140a1a180c0f1b0c040b0b1220180005050100050a06060a090d110b0e05000413150e22 *2714262b1a202115100a0707030300000000000000000000000000000000090402030507060c0f *0a070d0a06413e27635c436f6c527d765c271d2120140d261d122a2e260000010000000b070500 *00000000000006040703050602010600030d0d0a81795c9a958a96927c9091836d645c40313216 *14071a220e1d2713262a1231421f3b46213c572b37582746672b42562232401d44623442632c41 *5a285055383a4c1f2e4019312e142e481d2d4e281e2212100e090201000608061f1a0a35481f2b *411a254621203a182d3014705334847b8743473b32240c858d8d584d35202f1720411c1c3c1823 *472213471a1541211a411d334f2c6e684f808aa4626c53658d934568334d5627846e485661333b *150832311d486a314f6231473319646a4b56522f536d33425b2b3e662e476b2b456f364372344b *6e36456d354e6d384c6d334a65284c6d314b733e4a70374d6f30466d363e673b526c3d40662d3f *5e272a51241e3e1a06180800130500000000000000000300000000000000000000000000000000 *000100000000000100000000000000000000000000000000000000000000000100000000000000 *0000000000000000000000000000000000010201020b0b0000000002020b0e0500000404080602 *06060000040c040a0606150d0d070904030f130e0a0b0b03000000000400000303030705030c00 *0000000000000000000000000000050b0b0000050000070704040700000000000001020000010d *0206000104030709060509060609100d0b04040a000003000000000002000009000000000001a1 *b3b0bac5c600000100000000000000000000000000000000000000000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000130d031512080400000801000303000000000e0b02271d081a *13070203050000010102001f17022d260f43361249461e17230a07270b0c280e102e16173d1b2e *441e193b1c21481a284b1a2a521d335424375e314466364163324a683b446c3842652d33471a28 *3c200c1d0a0306050000000000000000000000000000020008040001030c1d16000a0600000000 *0300000000000000293c2306120500000000000001000000000000000000000001040007180c00 *00000814090702000d050100010000000000000018230a2a3218191d0e2f42282a2a1234351335 *3e0f4135115158295367301113080401020f07030b06050c08010b05010f0a09212a1e141b2300 *000000020600000017160e292009170b01120406100e011b0c0415130d17110c1a0a0411060503 *05020b0b060d02001201001d1d0f221c0f40392651554d424f510000004f4941403e24271a0931 *24122d17072f251321170a28180d2921114d58540000000000001714183a332738241a3b2e1f3c *2e173c2f1e3b331b3f2f19312d2037311e2e27162427221a1c142c2e1e2a2a223a3b3008060400 *0000000000181d2b33454d0000000d121600000002020b0b0a0d0000000708120000003a3d4d6a *6d6f000000050b0a0000003338394b443c4a423c4539274a4a434a443745463532383f00000002 *000305050500000013110f000000040405373e423c2c1e3b37253a3121443f2b3d38263e382a3b *3a2c40381e392e224230223f3c203f2313442a15644f33513f1e4a3f2a4942333d2c132d210f2c *21153f32292d231738251a2920131d130d18130b0b0d0b1005051610071a0c08201f1028281625 *22120500000700000700000000000100000200000500010e00000a06011405020b010009000008 *000022170e04000200000003000306050206070300000000000014080807000011000000000016 *09031604021008030b0201120608110505160b05190d080f0401120b060605000d0c0418090317 *090512080305010205000002000006040201000000000000000004030300000000000000000000 *000001000300000001000004000000000000000000000000000000000000000000000000000002 *00000600000703050d08030900000b05041100010700030600000c00000300000c070107010008 *00030408080a00020c07040902000d02000704020d0f0a0d0f0807020302000002000609070e11 *0707000000000000000000000000020000020203150e0a151c1622180c10100b00000000000000 *000000000004030700000000000000000000000000000300000000000000000000000207030708 *06030301050000000a040000000000000000000000000000000000000000000000000000000000 *000000000000000105040803010600000201000000000000000000000001000200000400000200 *000017100e09030417100a13120a110b080a0b1203050b0b0b0e13120f100402110605130c0b19 *0d09271e1b1f1d1f19161a0c07070300000100000000000000000000040400050b08080e161706 *080a0a08051a160a2d2b1b4751426c725b6b6b591e0b072b190a271a0d2f230d04000200000008 *020100000000000005000214160c1211070b02001f1005867b4b917e5e98876f99917aa29a8f62 *50391c270e251c0b3944234552274c6e3e4a6d37436d2e50753c466c2c4e6a384b692e4c723343 *6a39557138829b9150724155733d7c9f954c714049602d38481e20290c1c1a043045203b583643 *5e2846662f3a5c26415f203d612f3e51233f44253851281d2115070002251e0e32502a33502025 *4a2023431e23481d224924294f22304d275b7a6c495035231e0a3c482c213e182d411a4a593a26 *3c1d2d2714223c1d2239181d3d1a273f181c3c17183a1f233e1d224722274f23305825335a293f *5d2e3a61303a59203a5f2c3f643140623842673142672f4e6f3d466627496a3050672b46653647 *682e4d7042416a2e47692c4261234157270b0c0500000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000004000205000209 *010002000004020002000005000109000709020b140f110f060804010704000000000000000801 *000100000000000000000000000000000002000009010506000301000003000000000000000305 *020508030705000500000603000303030501060b02000501000404010301000600000500000000 *0000a0b2afb9c4c700000000000100000200060500000000000000000000000400000100000000 *000200010601000000000000000400000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000080700000103 *0103000001050807080a050a10000c15070f150a1e270f0c0a020a14070b0d070c0c08292e0f15 *0e070000000000000000000808011d2212322c13444423262d10020300000000000000000b0600 *130707230e0a29161d351a2349231f491a1e46191c471d1d411f254d23305428395f2c345e2a42 *5c212e441d17270d0410010000000000000000000d040302010100000000000000000000000000 *0000000000080804081c100007000200000501002a3a1c0d210d080a080b1d0c00000000030202 *0d010000000d0902252a0f283823130c05000000080e0b3f523a282b102c200b5b5d342a3e1818 *1c0c444d2f3b4d2952673845692d0d1403060400090606130e0a08080615130c140e09242d2420 *261e0000000000000000000b0c06140a05171a0f140901131810131705111d0c1d0d061c030118 *0d060503020e110c1a0d05090903110900251c0b413a2148473f3e484f00000349554742412f20 *1f152a26162e2a152d220e27210c231c06362c1d515f6a020104000000241f1f41422d38302440 *3f28373221392919312a1c26231e272717322b1d291c122420193a261429291e303d33393f310e *110d010305000000201a203847430000000a131a00000007070e1a15100000000a0b0c00000043 *46487d78700000000914140000022a34324d4c3d4440304c4433474b3d41413a40443a3b484e00 *0002020203070a050000000e151900000002050740423c4245323b3729312b1d2e2b222d291e32 *2615383224423a23453b204a331e2c2a2044361c472f1d6d65416e5d275441254d3516483a1749 *31133f391733361e2e2614261c1b23150a2315130700010003060803081b15112217081e160b1e *1e17271e110501000302000a0e050301000501000601000a00011713090a08041108040800000d *02011104002820160703080000000407050003051004040000000000001609040d080210000001 *0000070609050704160a0b22110625150c100c070b03001707061e14090807051808041a0b040a *04000c04020f06060901030e01010d04020d0301030000000000000000040d0300030000000000 *000000000004000202020004030004000000000000000000000000000000000000000000000000 *00000000000703030600050c02030905000b1007080805080101050000120a011002010b02040b *0400100300100c060703030d05040d06040e08060a0105120f10120b060e090e090807090b080b *110f0c070d03030a0000010b0b0d0a0d1109141615211e141b13191f1b141e1813181a04030800 *0000070000060b0a0403000200030000020000000000000000030000000000000000000a080b01 *040605060a02060a01000315120b0803020000000000000000000000000000000000000602030a *0607020001030000020309080808160e0a0000020500040f0205160c04110a030b0805130e0d06 *04040000001418152c2c23241e1d1e1e1d2019161a161522251a1e20131d1915121a141b1c171a *1f2435271f1e211c28221712151308030306040400000400000000000000000001020301020009 *06030102030200010903060a04070d0c072526163c3e2410080318100c27130b291d1a00000000 *0000040402000000000000020200080103140b05170b082d2827796b449387649586699c8d7fb1 *acab281c1a1718132e3818354e313a60313761273a5e2a275d353d683b31643a3f65363a694140 *6e3b43733b4c743b4a753e486b354e66304e633b4b743741703d42622b4359253f502039502536 *54253b55283455282b4d242351252a5e2b29592f274e2a28511e294b1c3e2b13374b222a532f2a *522d3d592a375a20385e252e5722264f1c2e512c28341a2b4721355429355b273b572239572330 *4a213c63353c582b2a4d233f522b335b303057272d54272d5627324d2126492922432232482726 *491b28491e2a44192a3b16253d1b26461f2142202a422022451f2c4c23284b27294a1d234e272b *4e1f3052242d4f211e46231f4c272b522e2b532c2b492809160d00000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000004010505 *02030000030002060b080509030605000303010500020203080506090906060703000403030209 *02080000010000000000000000000000000000020700000a040410030400000102020402030400 *00030000020100040507090a060c0b010304030802000800000303000008000508020107000006 *0007060006a0b4b1bcc5c800000400000100000600000400000500000000000000000000000000 *000000000505080a080f110000020000000000000000000000000000000000000000010b0a0800 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *03010307040000010002060a16130815100f1b0b000000010905050903060b0508090101090803 *130e0000000000000000001f190b080c050a0e091f23113f4225101808060d0a04020200000000 *00010003010005010001010e1e1104211900160d00130b001109001e0f00281a01291606311616 *421e1b47211747241432131c331b1e35200c271301070621361d0d16080a18051521090d14040f *170a000000000000000702000505000000010d07323e261a2b10010a0800080800000000000000 *000000000000000009201228361b1f240f1e3a210006010d11074e46224349214a502b5b6c382d *2d143237174850264f5d2f49673b3564330612080103040707040603040904050b0a0502020325 *281d242c2a0000000000000000001d1513060101090c0d0908040e0d081216101e120914130c16 *11070d0c07050b0c050e0f03030600000005040320120b3c321d43382341504e0000064e575e30 *301e2a1e0d2a24193b331e2d21132a230f3020103d433e4d5f6c0000030000001c293333312834 *261730241c2f221c2f261d2e2813383721272f2528393e2b28232f2e1e2b2c262925192d2a282d *3d3c1414160000070000021a1925424547000000030a0f0000000000070b161700000008181800 *000042374378857c000000000e0f0000002631314757493c403c4b513a403e2a413b364a524931 *3e3d00000100000300090e0000000d111a00000003060a2c423f3b4949353f312d2a26302c1d30 *3022322b212c31254037253837223b29163c301e3c301a4235278479508463387861426c593a66 *553b5b482e413f273927193d32242a2d1d36352020211d1a1109070404201c14241d1325291d1f *211b25200c1e221b0e03030908020d0c060803040000020002070405090803000c02040c070b03 *00000904040b07071920180003070000000005000000010409040000000000001615140a090a0d *0908070000120c01150c090d09031a1107231a131f141311110c1a09070b0b061106021f180a17 *110a0c0e0706070416100d0603090a040618080414030206020100000100000400030800000000 *000000000100000000000000000000000200000000000000000400000000000000000000000000 *00010000000000020200010500040404090c0601030000060602000205030b0c080d0d08000402 *000400010309090310100f0a08090d07030b07051109070e0303060e0a07090905080606050508 *0505030a0d030a0c03080e0000000001090000050004080101040105061b1f211c1e20161a1c00 *00000000000000000c0b0607000000000200010400010400000000000200000000000100000005 *090601030708090e00050900000509090d00000500000000000000000000000000000000000000 *00040c0f08010006040003030204060200090e120601060e0507130509140b0b1a160c0f0c0300 *0405000001000000161a161f2a2600121b040b1600061100000a161c1700020900000201061500 *000400040d26393900000400000500000003000206050700010000000000000000000000000400 *0202000708000203000100000202020506010503090f10060e100000000605041c140b161e1100 *00000000000002040000000000000303020000020c0000351e0e1b13066c563f927c5d9b8d66a5 *9b81aaada42f1e1a1411051f210f202d183f5e33325e323d5c2b3c53263247252d411f24421b15 *371e0b2d14092e1808281404291c0d2b150f2d150d2c1a0b3321123e2611371f1d46201e4e3828 *512b295e2c2c5a2f184b291347230e4526143f1f0f351a0a2713081f0d071a0c07160900201600 *180e001e0f00221e002d1d053118073d2106381d0a2f1d0e3418143e1d13431d0d441e143a2012 *441d1a441c0d3c221a42261d47281d4a261e512825572c1e5c2a265d3a2d5a262d552828532c2b *56222e57272e542a2d582c355e31375d293759202e54253750252748261c361e0c2c140a2a160e *37180e371d1940181f3f1d103c18032b1600150d00130e000c0b00000400000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000300000400000200030500040600030700000200000000000201080709050900080d00 *060803101c000002000000000000000000000000000000000000060908090e1403030701000000 *000000000000000000000200000800010b00010a01030401010601000600000306050800000600 *020900020b03040ca2b5b1bbc5c801000001000005000301000001000000000000000000000000 *00000304000700000a0a02181404000003000000000000000000000000000000000000050f0a12 *2110201e090e1d0501000000000000020000000000000000000000000000000000000000000000 *00000000000000000300000804000d0600000000020100050400050400171d0b22250e09060100 *00000000000000000000000b06001212051513010a06002c1d052b2308201e08253a1b10181200 *000000000000000007000009030005090000000000000000000000000000000000000000000000 *0000000000000701011b0e0a230e0d321a16381e0a1b050000000002000000000002021e3a2c13 *220c050b00000001030700030300060900060a002a271a242f0f00040000000000000002000000 *00000000000000000000000000000e180a0b04000503011e1e0416180652501e443e1a42491d28 *351b3f401f4f61386873494d682e51733d45632c1b1f090a0a020508030903010d07061306010a *0300232c1e23291d000000000000000000120c04070001150e03170b002a280d1912081d120414 *12091c0c061005040d04001304001108010901001506002110042823153c2f193a423e04000040 *4e3d453e172d2008291d0b24190930210d25180a321b1037332852605706040100000020282b3b *4841372f1b302918322f1e33291031311b31261839291838301d28241b2b2e2225231c2923142b *2c1a33423b080a080000000000001312123f4c4800000007040800000004060013160c00000014 *1b1e0000003b2a2f888c7f00000012120f0000002e27264743373c342347301f393b3040403f42 *473c4042350000000000000403040000000a0c110000000602043c4133332d1929241c2c2a1629 *1d0b302615282a1e3a2d21402f22393a1a33281137250a4731183c3a277c6640785f3b79592f7c *653c86784d7a63405c442448371e3325212f21152a2c2232231a221a0b1c1201211e132c1b0e36 *291c251e141e1c0a26201c110e0a151402150a000d00000900000800000700000d0000150e0512 *0e080d07001300001600001e0905000000000000000000000000020601000000000000210d0515 *0000140b030200001211091d1309120b011d1608231508261503271c051b12051c09050a0b0919 *0b0f1a0f062615071904001808000a030005000015080410050002000100000000000000000000 *000000000000000000000001000002000008000001000000000000000000000000000000000000 *000001040400000000000007000003020405000101000002000003000005000000000000000007 *0000020001080001090200120805180d02160b04160b04160902130d080b03030b030410030209 *02000e0a030e0b050b02040900010000000000010000000000000202030f0601191b181a221e12 *1013000000000000000000060b0a0c0500090b160c090a19110f030007060108110b0c09151501 *060d11100f0c0b050f05031107051106050a02040a080800010300000000000000000000000005 *02030403050f05020904021b11141c17141a1317211a17221c0e1e1a111d130a0e02000f030008 *0200000103000000000000130b09151516000000000000000000000000090a0e00000000000004 *000100000000000037292600000000000000000001000007030302000000000000000000000000 *00000000000701000600000700000903000400000100000301000000000000000303030e0b0a1b *0d040000000000000701010300000100000403000000000700001e1b131c0b07878162a79681a8 *987bada086a89d7d3a291526220f32371e1d1e0a202906122d090926100e2c13042b0d0a311e15 *3e1819481e1e481c214f212458342f55292c4821294822213e1d1c2e0918240d121d040f1b0407 *1404060e01071306021209000a02000300000a00000800000501000802000503000001010b0600 *040300080000020000010000040000000000010000010000000100000000000000010000000000 *000000000000050000090500050100080000050000070000030000020000020000030100020000 *1304000c00001408000b03000b00021a0707210c0a2b0e0f3c181a411c174319174c281e452024 *4a1f2349213252232b4c2124421d213c1d262b0906070200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000200000800010100020700000500020000020000000a00001105000801030a *000200000000000000000000000000000000000000000000000000000000000000000000000000 *00000300000000000000000400000000000000000500000300020300010000020000000600020a *0003050004040002040305a3b5b0bcc4c503000907020c170e0f272412221e0d06010202010000 *00000000030000060205080604032d3e1809110500040301050400000000000000000000000300 *000000000000000000030200000000000000000000000000000000000000000000000000000000 *00000000000000010807081b1d0d0f13050a1004030205191f0e191c0d08080801030a00010200 *0000000a070b0b07180a051e1404160d021f1c0817140a1e220c0c0e051e240a28311301040000 *0000000000000000000101050607050502060b0501000000000001070100090300050200000200 *00010000000000000000000000000000000000000000000000000003040016070d170b2e30161c *2810000000000000000000000000000000151e0f091d0608130a0b0d070000000000000000001a *17060b140403030000000000000000000005060512140820291920270f201e103a43264c502526 *260e3233194a4b224e6f3e49612e48642f4b6e33436a3314170e0b0708080508090908160d030c *0f0807080112120d1f25220000000000000000000501020d080317120c0c16081d1d0b1c100824 *170b160b081205050d06060d0c0b150c09120904150e051c08053923143d321f403b273a362842 *50494c432a493e263323132b1e0f2e1c0a20180b1b12052118082a2a234e5a5f0204030000001d *1b2636332032251431271c312a1f3936253834233f3822413a1d3e2d1d211b161c1c121d1e1325 *1e1c1e181930363b17130f130b0809010123241f41434705060a1c2024160d0d1d26253e403a24 *1712382d341b10164848429ca3a74646433a4d4c2a3333424b484549464e4b3942433a3e403342 *3f2c42443b363f3b171e1e0e1f231b2225070e1e1c2a36041419181c2045493c4031232d282127 *29232f311d30201b261e0f25231a3a2f1e3d28132e251c494536342012422c1578664a7977578a *805f8b8b786549357068517a644d5d431e564c2c3a33212d2b1e2d2c21202017191719160f161e *140f42332833211d2520162b271d0f0f090c09090802060d0203080100070000110300140c0a1f *170e221c140f04040e07091707061f0e0a00000000000000000500000001000300000000000113 *08061507001404010a000013151017150a190d09241a161a0b081e120c15160b140c0814070317 *0d0611080512070518160d1a170f131a0d180d091009090a080509010000000000000000000000 *000000000000000000000000000000000000000001000001000000000000000000000000000000 *00000000000000000000000700090d09090100000c070200000000000000000100000000000000 *0000010001070402070200050400060704130a0613050513100c0d0b0f12190e16130a18160d15 *100c090a100e0d1009060605020c0301050000000301010000000000030a050a0b080b0d060c0c *0808050608030300000000000000130408100605100c150d080f0d131708070d0f0a08121c1b16 *1a1f04080c1a0a07170809120f0d12130d22150b1d120612090f01000600000000000000000100 *00000001050705021c0e041c110a1f0e0a1e17101d18121e191424221b1b1615130f0c0d030012 *01001209040604050000000000001c221d0d12130000000000000000000000000b100b00000000 *0000131e1d18221d0b0804302d29000000000000000000030005120a0b0b050a00000000000000 *00000000000702010b05050d0b080803030a08050b05010e040112000003000000000000000024 *110a5d4f3f080403000000110a080a0001090002140c051614091e1e0e170d06251e126e5f3da4 *8f69a08f799f8c78a5a38d454125233117314018283a1d1e301237461d233c1626320f0b211601 *160d01150c01120a00120a000d0700080301070503100902150a042311092f1c1c462125552a2f *5e2b3259273d612e3d5f313a582d2e51272d40201e38182033140f1d0d0b170b07190a010b0400 *0b03000705000506000a0600040200050000050100040400010200000200000100010000030000 *070000020000040100010000000100010300040500000500000800020200000000000000000200 *000000000100000100030400020400000100000000000000000000000000000000000100000300 *0205000501000905000604010502000404000c0400180b00000600000300000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000001010604020d0803090b01040b06020c09040809090100050c020c06000301 *000403000501000003000200000000000000000000000000000201000202000009000008010005 *000000000102000200000602000402000600000303000005000102000500020800000501000401 *000703040a0405050202070b0207a3b5b3bcc6ca0b01080e0008110709170a0d1f211c130f0d00 *000300000500000000000000000017141504030700010600020a00000900000000000000000000 *000000000000000100000000000100000000000000000000000000000000000000000000000000 *000000000000000000000002010300050600000200000000000400000200000000000001000000 *0000000102000000100f0d1b1d16272a1b363a1d2527133a2e1a241d061c10070a000006040300 *00000000000000000000010b06011613050406020d05030e0d070908080600030507050805010c *0c06091809000001000e03000101000003000000000000000000000000000000000000060e0f03 *0c0900000200000000000000000000000000000000000000000000000007000414200f00000001 *0000020401061107232b1d0602051e1e1e3b240d2f2f1c3a3f1d3d381d48421a2d27124a3d1f5e *5f354b442052542e50663e416637476731425e314f6d3f445f360f0f0b170a0708040504010314 *07030b01041003041d1612140e150703040a0c160200000c08000605020c08081a0b0d18120f17 *130d1d160d140a051c15091c1007140c061204061306050e01051a0a0e2312143e2a1a4234172c *271740261e473a31533a22331d0e32291d20130d1b0b061b11022e1e12261c1442413f00000100 *00001a11222c181323231931231425211740291c402b1e32251d3925243f222025150f3726161f *140a1f190e211f1a36353d18202206000c0001090a11184b4c4e00000008070e0000010500061a *1822000001131725000000312d338b9790010001171f2c000004292a2f424946423c3546433047 *443d4339304b49473c3f4500000000000004090f0000001014190000000201063d3838312b232c *1e1a1e1d1b201e1e301e1d1b1b142322163b2f22403a25382d22332d1e2f231d322c235d4d4085 *81596d57356f5836613d21694224745533755935806c5058413130292131241d301d1c3226202e *1f1a2d211a2923222e2b272a1c133621120a0d060900001200010e01010100000200010b000510 *100c2417121e1b13180606120000110003120b1400000000000000000000000000000000000000 *000006070a1000001e0505080000210c08150c061603031e0c0b11070b1c06040b00001100000c *020018110a0b04060e00031701011608051306080f05080b000312000108000000000000000000 *000000000000000000000000000000000000000303000008000008000001000000000000000000 *000000000000000000000000000000000100000200000004000000000100000000000000000000 *00000000000000000800001c0d0a08040701000005000013040910040600000000000007010608 *020a0000010000000202010d01010a000400010500000001000300000200000008050a0b0d0a12 *040a1208080c05060c090e1a0c161d131207061307040014100c14060714071206010d06010a08 *0815120f16010207201c0f170806210707221b1d2d221c1d181711061302011100000000000000 *0000000000030000080204160908121010130b0f1e17112519132f150b1e0f071406041302020c *02040a000202000208000500000000000016120b0d081500000000000000000000000015110e00 *000000000009100f00000a00000223252a00000500000300000007000218090704010300000000 *00000000020000010504021b130b0504030400000a03064c3f2c4f2d201c1a1e0f061303000003 *00000900000e00000100000500004c3b240400020600001107022213050500010f04042017098b *76539b9073a2926ba7986fb4ad9e43432a211c0e101e0d08200d05150b0e28171224140a3c1f12 *3f191243231c4c29294f2e2141222a48221f39161121100d1c0a02140a001407021402010b0300 *0305000205000506000f0c04241708381d1a411e254c24295028305b34325b36385a362d5c312f *4c241b38131f280f0d130808140800040600020600010400010300040000010000000000000300 *000300000100000600000800000000000000000000000000000400000000000300000200000400 *000000000000000000000000000000000000000200000200000000000000000000000000000000 *000000000100000000000000000000000000000000000000000000000000000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000104000100000500000500000907030b09010c0401040903030c000204 *000505000100000200000701000700000009000005020509000103000200000300000403000506 *000503000204000402000000000206000508000401000600000503000500000303000402000100 *00050000060100040000080200050b0009a2b4b3bcc5c9120a071c15051a1d0b130f0318160d0b *000002000000000000000300000000000014210a000002000a0401000000000000000000000000 *000000000000010002000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000100000000000000000000000002000000000000000005010002 *0407000000040e001c0f001e1707362d1b21260e1f1a090c0b0b171f1720270826200d1717081a *18062b230c0508010000000000010b09000815010612021910050b0d080a0f0101050002080003 *030000040000040000000000000000020000000000000000000000000000000000000000000002 *03000f0c001d20082c3d1d102d100000000000000d07002f2e0f272e0a1c250a1a2e110203000b *0c080000010000000b0d012b43210b09050c0c033246243c431d2b3b2c4742185e64354b512656 *59305f68305b7241495e27415b2143623052743a45602a4869294663261e20090d1618010a0605 *04040d08020b0b0306050015140a090a020d100e0b110b080403120d070d040008070013110818 *0a031408061a12031c0c00120b081909020e0c030b0c030f0a030a0a041d12092e281e37301f3f *3b28403f203b2c1d3e3e254743253b230e28140528200f281f0d171504221d0a2b1f1449514502 *030200000013121a3d312128231436342026281a2f261b2720112e260b29251023200e2d201625 *1d0f1e1f142a230f2a1b0d3b46470e1d1d00000000000005080c43504900000000000600000001 *000015232700000009171f000000332e3e8a91970000001e2323000000282e294b58464847304a *3e2a392e1e372d1d43433b424c4c0101000000000308090000000a10130000000002083a3e443f *3a25342a162a22171d1c0b20190a2222172a2214372113342b1f423c242e3820322a1641301b68 *4f31766132744831745e3d6c5c347d61407a6d436e65367c74647d6b436a5d454e3f2641351d2b *29173f41313d3a27211b123c291b53412a39321f0f0a05100c0a0d06010d05000805001309051b *1a0c130706221c121e1a17150a03100c04120b000f0e0500000000000000000000000000000000 *00000000000100001204000f01000700001f1714151110101109180c042018051d0c0017040012 *030019110a0602051203080e04050d05000d0b011c200c1a170e0704031c07040e080700000000 *000004000000000000000000000000000000000000000002000004040300010000000000000000 *000000000000000000000000000000000002030003020000000010090400000000000000000000 *00000000000000000100000d000011010014060000000000010107070708060300000002010012 *05020d04030000000000000100000907080d09000405040000000603000100040000000d080507 *05090d0b09090d05071208060401202012281f180a07030400020d0d0f171d1b1c2623141d1817 *06041618142221140f13181d1616191d111711081e2419262615241e160a090d08040c00000000 *00010001040000000306070b0c0a24180d190e031308071a140e2118132e21131813081312061c *11051409071707020a08030708060000000000000f11081c130f00000000000000000000000010 *0f0b00000000000000000500000001000020292400000000000000000000030506020208030000 *0000000000000000000000010100131008000202010100110701614e3250301c230a0223090116 *01001105041803001606020e0200150400424839020000000000140c0a2d2f1f000000201c0837 *26137e66439d8d659f8e69ac9c79a9a4962f251d323a12131d0c000902000d03000505020b0300 *110a0013080010070212050012040a260f133d1d1d4a27234d21284f26344f2626411911240a06 *1505010b04010e06071403000b00000300000600000702000900001406032c111743201c472620 *48291e482325562920461c32582c254f2a2547251b3d1c172f0f0c20080a1a08031502010a0100 *070000030000080000000000000000000000000000000000000000000300000000000000000000 *000000000000000000000200000200000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000002050300000500000000000003030108030209000006020105010208060b06 *06090404080504070303000303030306090b010103030208030500040700000200000005030108 *040004000000000200000000000000000100000007040002010000000001000003000304010a00 *0007000001000000020300080200080001080307a5b6b5bcc5c9110b0f221c16130b0f20171513 *1a0e06060900000100000000030700000100000905050b000000000000060c0400000100090500 *000000000000000200010c00000000000000000000000000000000000000000200000200000200 *00000000000000000000000000000000000000000000020100050a07051a141307060605050402 *090802040201000109080b1e271c151e0d06080808130d21291811160a120e0a231d1227261d04 *01061420110c200d010b03000001030408160c0c190c0a190904171d07070b0800000100000000 *0003000203000000000000000104000d0901190d00010200000000000000000000000000000000 *0201000000030303424c31313f1f0a0301070a0507030612190c252e151e2e160d120a43432549 *5c35141f1400010514170934280e4142262a240f3c4327535a2b2e502c3d52264f603f55714647 *622e4a6b3f3c582b3a5d2d325b313459273b50243c582f445f2c416239455f31161c13060c0901 *040305030304040806040a0405040000030c060306040300030601000109000103020606020511 *0d09140c0f1c0d0d160e0b0805040b0b020300040a0b0a0d050b19150f150a0a1c110e25230f3a *39254543333e332433291d4038294437242b150c1b0e091a1102271d091a13091b0e0a20110a3c *444100000200000111121730422d282a1d231e17261a16241913332016402e1e291e18201a101e *23181b170d17140e2a1c153227244139351817200000040000000c0b0d3b474300000000000500 *00000000031a282d0000000c1a250000002822268f978d0000001825320000011e1e293e4a4f36 *3625454a324138243c2a223e4644434b53010004000000060e1000000004131a0000000001053c *4342362e292d29232a262020180b27221a262114211e1522221a2a1d183e2e2231241b3c2b2047 *4a348586809292787b5d427f573a80604b7b57397a654a6c542f82806e6661475c4c3766453176 *5d425e4a4553403b46413833241e3a33284c3c1f30271b0a02030d01060e03070903071406080a *0703130908181c192d2c28342e2417060622120b20150e0d000604000000000000000000000004 *00000000020300000a0005160d070b09040300001c180e1a04060c0404170b0708020814020a05 *06040905010b0b010907030a01040902040c0204100206140a0919100c030002181009080a0704 *050508080a0d090b0a010a0700060100000201000000000000040300050a020406000100000000 *000000000000000000000000000000000000000505000606000500000001000000000000000000 *00000000000000000000000000030703020c01000506010000000100010e07020d050600000000 *0000090b0a07030400000000000000000009060906000508010800000200030800000000000011 *0f0b100f0e100b08190c0a22190c231d171e19152023212f1f1316080514161517111a1f1c1e0f *131708030a0c0f1d0f1d2010070f0c060a1615112e221f2c28242b27241a1a1d05070d070a1800 *000100000100000200000006040a12080b231d1226201b150b0a100b0d1510101b09081e0a091d *0c070e07050901030d040413110e0102060000000000001c201d100a0e00000000000000000000 *00000c0c120000000000000000020000000100001d222600000000000200000007010803000503 *0003000001000004000001000000000101110a0c040206060409160f13665d417e726a8e816890 *866e352412200d0729120a111215000002000000261a170300020400002a170318120e0500002c *1f193924218c775ea28f87aaa28fa9a495aa9d7647311f27371d01010300000500010a00000400 *000100020100050000000400000800010500000400000500030000110301190818331b1b44251c *46251d42262545251a2f1910220b071d06021a0900140e00170f00110e00040500040900020300 *0503000c0a011d0d0823190d381c183917143b201543231e3a181d4319264a221c4c251f472318 *3d1e1e3d1d172e130a271700080400010000000000000000000000000000000100000400000300 *000000000000000000000000000000000000000000000100000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000300000300000000000000000204000505040503010301020900 *00060400080a060c01000e060009020301050306090b0a0c050600000801000300000203000b08 *000903030c00000500000000000000000000000001000302000500000400000500010600000500 *000400000600000a00000903000a030008050307020106a7b7b5bbc4c80d0d060810050e1b092f *260f35270b1707070100000b0e0d00000000040000000000000000000000000007080000000000 *04060000000000000000000000000000000000000000000000000000000f0b000e1a0700000000 *00000000000000000000000000000000000000000000000000000f0d00181d080b0d030a120407 *06000d0d002427090a0500010000000200030c030000000c04071e120a262507372607322b0e31 *37180303000c14070000000000000000000603001715050f15030d0f010a130500020000000000 *000000000000000000000000000000000000000000000000000000000000000009020000000000 *0000000000000000000100272a11252b0f2e3a1c151b05243310040903222c0f0c1302120c003f *3f1f3b3a25312e0d21280b4b4e254d5c282b411b3e5128304929283b1d1c331d21412633461b27 *3e1a0f2a0e041b0a02170506130312250922310d232d0d1e2b091a1f0522260b10100308080302 *03010001000200000403000e05000705000f0e010d0e0604020009040308010301000001000006 *01001d14010d05001201000b01000f02000d07020b04010c0a030e09040b09020d040017160928 *180e4833233c3a243a3b1f4f4c2c413b1c3b3a1c2519031e09001a070021180a1612050d01000b *06002e3020000000000000272a2d1d1c12241a101a1c0c100a061a1d0b352e143128182f240a28 *251227180a23170b1b1006181a0d22160b37331e1a1e150000000000000e050935433f00000000 *000000000000000018211d0000001d2220000000211f248f9ba2000000161d160000002f2a2758 *57494034253f392741351b3e3d2c42443c3a423300000000000003060600000003050d00000000 *00002a4240392a193730192a21152b231b271f17201e15231e0f2822092a2214392f1d3729162e *291a2e261049351e8a74528876437c5e31815f306e542e765e31776941807e6663503f75655059 *4b3264542c5f573e7b775c62634b5d472b3a261d44321b38301d06040206060307060011090012 *0c010b03001704021f150e22201c241e0e271b05150a001607000c0500190900170700140c050d *0802110c08180b011506001007002117001c04000a00002d27281e1712100200180d0020120612 *08001d0e030c04000903000a03030f06040d01001109001c11011d14031b1f150900001003010a *00010b00000c03000801000b020010050008000009010009040205000107000004000000000000 *000000000000000000000000000000000000000000000007010000000000000007000103000104 *000100000000000000000000000001000006030011000007000100000000000009030003040000 *00000000000705000501000000000000000000000800000e050004020100000002010200000000 *000211100e15140f12140f17100c18140927200e1a15071f221e2b2519140c0416101403010009 *0b0e0602001a0d080a00020504070300001a121b1308001a110516170a2b260c2f1f13190b0502 *00000000001005031407060000000100002417031b0d030d08041306031a1006170f06180e0021 *11031f1d0a1917091d0e042314091c0b0407000000000000000016160b14121200000000000000 *0000000000140d0500000001000011120c0000000c070726201d02000009030200000004000007 *0300030300000000000000040000010000070000100f090609040303001a0e026e6743968c7a9e *937c99968236180e2509001c140b120c070000000000001f18070600000f040035281d1c100415 *10073c290a261c0b8c845fa89d82a49169aa9b7daca99d45432d1a2716010b0700000000000000 *000000000000000000010000000000000000000000000000000000010000010000000300010300 *0605000f02001b0703210a092c13183d191d451e1e411d2648211b351b061a06010e00010b0000 *0904010b05010203000505000000000000000300011a020d3615183e1c1e3a0f1e48201d4b2118 *411d1c41141f3e0d143a0d16350e223d0f1a3f1d14290c0a251001160800030000010000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000200000100000000000200000000000600000600000d040004 *00000200000400000300000300000100000403000600000a030000000401030100030000000000 *000003020001000001000002000302000300010000000003000000000001020001000004000806 *0002030002010102000001000001030100070804070101070406a5b6b5bcc4ca0b0a0e0e05080c *030b1916151e17050004000000000000000000000000000000020000000000000b11111a200d00 *02000000000000000000000000000000000000000000000000000000001621160f281b00000000 *000000000000000000000000000000000000000000000100000000000000000400000100000000 *00000000000608020d1a0f0000070000010000000505000100001113033f350f38422238311728 *2717494427110c0b1f2b24000000000000041008020b0604080705030800000500000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000811022f3411263818211d09172a1c01040818160817220c23 *2c1d14260f2a3a151c210d272410354b282a3b1e213b1e1e2d0d00140c00180c00180900120700 *0707000102000000000003000300030600070802191a07181e111e1b0c211b07090f0a100e0806 *010001010300010000030006020310010416030610050b06030511130e1417120f0801090b0416 *0c08150b031207051d0c0b09070411090606010009060012180c1d13080e0705140e0a04000011 *06051f1a1239392a3833213e36273d3124443c2f4638241d1f14151a161b1c0a221c07090b0512 *05030901000a0304140a0d130e0f0d0f0b18170a19130a110d0719100b1f1511202013231b1323 *1a0f18150f0e120a181711161c1521150c1d1a1428221c181e1e00000000000000040441464200 *00000000000000000000001a24230000001223220000001a1f2395989e01000017242a00000019 *1d294e4c494d41343d403341483a44452d4a3c2f32333800000100000001060d00000002060f00 *0000000000373a3f3532242e1b15382f2623241e2b2e1f1a140a20231330311d33211937251633 *30243e3b2e282c174436207c65327e683c86663175582e7962407e6d507f6c485b62545c523b4c *412b4f3f2b614b3d6e5a458780745f695568624e615648554b2f4e3d1f0d050311090b1a0c0a10 *0506150a08150803180c032b2615322a2135281f3c2d211e0a051703001404031806001702000d *04001307011501001507091d090510070619120e0f0b030600002020171d16101e110c26170e29 *2717201e181c1d131205050a0600130d041503001b0f08200f09170807100a0d1311100502010b *0b05120b030e03000b03011a060409040605000507040304000002000005000006000006000105 *000000000100000000000000000000000000000000000000000006000500000000000302000003 *0403080b080207070903010800030b050504040b0b06080b040300000000000000000003020200 *00000000000000000100000000000000000000000000000500010a040705020800000102020403 *000104050808080512110a1c100a14080c1b14122e201c15130a181716231f140f0a020b0b0d16 *150e111415050a171c1e1e1a201d081c18101d20181d161407031408051e181318191a1e1d1818 *1d18080c1400010401020201010200000001000808040b1604011807001808001b0b03160e0420 *110a2817122518141d0e0a14140c19150a110a030306030000000000021c181e14172400000a00 *000a010307000004080b0f000b0e0000030910180000040202032b2a2400000000050900000000 *000507030600000600000000000000000000000001010219140b0a08050500030e080644412665 *5c39787b5c8781632d180e19130c22130e110709000002000000261a0d0a010230281118140f1f *12051d0b0b261e0e2a1b0d81784aa49b7da4927da59776a69f8f44311f04020600000300020900 *000200000100000200000000000000000000000100000700000400000000000000010000000000 *0000000201000001000003000002000004000102000701000d08012313103d2118392015412a24 *4524092312031404000c0500070600070600000500000000000000000300000000040300201004 *2d1e1c401f14341d203c181d33141c41170b3a1d1e422a0b36170a2a1709240f08321d0e2a0f06 *1d0f03160800060400000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000001000206020506000600000100010800000001 *03010000050703040400070600040500070000050003070000010000010000040a040600000400 *000002000200000501020701000105040303000101000505000108020704000500030700010900 *000500010301000004000303000303010701000706000b07030a090409a7b7b4bbc6c8080c0d16 *1006080a0017180f0303030000020000000300000000000001000000000000000000000600020e *1a0d0000000000000000030000000000000000000000000000000000000300000e1a0d00000000 *00000000000000000000000000000000000000000000000000000000000000000000000100000b *0300231907181a0b01040100000407090407060016140c1a16010a09020708032d351d323a1a2b *30122f351e283c150b0d0a181d1c0100000400010a060106090500010100050000000000000000 *000000000000000002000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000c0e05212712262d0e4051310002000000000a180c05 *1705141307323a131624090811051d210a1e2919272a0e323a1e061c0c00000000000000000000 *00000000000000000000000000000000000000000c0b031514040f1f0e2738151a3314091a0a03 *0a02080c090001000201000100000203030c090a110f06100a03100700150c04190b0623120212 *0a060c0c08140a010e0901110801170b031f0c040d04001609020d0a0308080406050609070405 *01000b0100130d0a3d2c213e3321353a2b3830254f391d2f29120902000501000d0d0711090105 *0401030004000000040504040c070f0b071108030f08051e0a02221c1222190d1f130c1a0c0321 *1508291a0c3a26132212071e0b0718130d1c1e1730221c2d2f26121e1300000000000002000041 *4c5000000000000200000200000011261d0000001b1d1600000016171e99a1a30200030c252400 *0000231b1d50463c4b463546342148432e34392f41414830393b00000000000002010200000004 *020a0000000000003c454a443d22342e1a2c2510291d15372916311e104131262d23173b2a1b3b *2e16402a123b200c3a39254d452780694d80633d8e7e527b5b2e856f427c6739826a465f4b3360 *614d64452f5e513d7b5d427864427983767875608073556a624674583665523d1d0e081a10080f *08001c1a0d21170b1f180c1b05002b2720382a272b2624292622291a051e0a001d080017060022 *0a02210b05230c051704011c0d0a1e13062019081708021c07000c07001e1710230c061408062d *200c1b0d011b09012012041811061205051e0702180b0619100a0b0b040d0a000a06001404000e *03001609020c04060b00040902010604000201000200000100000200000500000b020103000102 *000000000002000000000100000004000300000000000000000000000002000000020002010509 *07060b03000f01041609071408050c03000c0800160b031404011c0c0b04000000000000000001 *020400000000000000000000000000000000000000000000000006030107040101020000000000 *0001060000030104120d0718150c141714080f090d0f05150d072516082a1a0b2a150c11000009 *0b0c050509050b040305040a170d161a1b090808120f1119110c24170f120503140b020a040016 *050216110f01050a0000000000000000000000000001000808042314052a1505211409261c101e *170f1e1b162321111616091f1a0b171211170a0b0900000300000000000000001a1c170b141200 *000000000000000000000005080400000000000008080800000000000229242900000007000000 *00000203000200000300000000000000000000000000000100001516090806060202000d0f0429 *2e1a292218383429494f441a0e0b20170c34201319100a02000001000020170915060013141215 *09012a1f112c2118120804271005847643a59776aa9670aba284aaa78d3d494003030500010300 *020200080300000000000000000100010000000000000000000000000000000000000000000000 *000000000000000000000200000000000000000000000000010000000000000000040200090500 *0d03002110062d1b153f20193d20143623051e0f01050500040500000000000000000300000000 *000000000000030300130b00150806230808250d092b140e23150a1e0f0b29130c230a04130902 *1306000e03000d05000b0300050000050200010000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000002000403020206060000000000010200 *00000600020700020500020a040908050205080403030402000003000100000000000004040600 *00000000000000000000000700020c00000700000c030006030505040a04030404030304010301 *00000401060100000900030400090600030304020103050601030a00040e060ca8b5b3bec6c90a *080d0906080803071a0c0f0b0b090906030302050000000000040000090000000200031107070d *0a080002010000000000010000040000000000000606030b07020000001a1e1d24422b00030100 *00000000000200000806040000000000030000000000000000000000000000000000000803051b *100720241229261710130500020000000003060e0e03080b070a0000000300010a0c0c1e2b1117 *19080600020e0f0e0200000402030000020002020b160a0d150707140d00000000000000000000 *000000000000000100000001010006010006040502000200000300000300000000000000000000 *0000000000000000000000000000000000000000000401060a07091f1100010200000300000000 *02061519123c481e48643f101e0a1e32233140223d4c282d482a17402106261b000d0400000000 *000000000000000000000000000000000000000000000000000000020100000002000006080501 *00010000030000010000000000010004020903050c08081405080c07080a03070b0b0511120826 *201714140c08040718050414090612070806060d160d0608050416130b11100916080b0e07090c *050b0a000808090b1d170b2f3722393c2e33332047403046432f18070800000000000000000000 *000000000000000000000000000003000700000005000213120c201a0c2022161d120b1d0b091a *0b0b21191718140b26160b0e140c1b1d12090d0b1d171a2f2a2b3a302f181d2700000000000007 *01074345440000000000000200010400020c1a220000001a1d1e0000002016179da6aa0b010628 *222711020821242e4951524b4830463a2148371f3f2f283d2d21282b2d02000300000000000000 *00000100020000000902043e3f423e43373533233d28222f2b1f261f15291a0d38312a3b261d2c *231c2f2b2240251d28170c3a2e1a524a2679764d78653a675e3d6c5d3d817d67756546766d4d51 *43275c563b5c5a46565a5578604b6a5f4f4a4a44433a28393020343724554c4170614b1a0f0e21 *150f1006070f080c1708091f150e1d1b0a1f2719251f17201d171b150c1d0e0b1910090f01030c *03010c0101161410160c09100302190b0a15120c0a0304130a021a0d080400001d0d081e110b1b *0b061108060c07060904050b03000c02000a00030500000706010903030a020509000609040500 *000004010110020302000102000000000006020205040808020500000000000000000002000001 *00030000010100000300090000040000040000050000000000000100020300000a00060c000803 *0306040000080102160d060a05041212130c02071002091508070d0a07120a091309070b04030c *04020804020a0305140b130f06090b03010a04050c06061111140a070e0e060d0e060d04010400 *000000010300010401000108030610100c161d1413080a100205291713362f1f25221a33302408 *020308090e0600060807090908050b0f1306121a040a0f07030913170c1e140f2d140b270f0b1e *15131a1a160b0b0f00000400000000000000000100000000010407010617090724120b16160f14 *0f0b1410090e0c0c17070a1504050d01011108081e15101914120103020000000000001f13181f *1318000002000005000000000000120f140000000000000a040a0200000d000128222600000000 *000500000000000106020204000300000000000000000000000000020210110f0e04060e04050c *050713060415100c1307040c07040100000f0e0a31261f2e1c0e04000100000021150a24201e00 *00000d07062e1c1435292523140e220b078c8472a8a195aaa193aaa69fb0ab9a383c2402090b04 *080600060700020200000400000300000400010300000200000400000300000700000500000500 *000000000000000000000100000000000000000100000200000000000000000000000000000100 *0002000001000005000005000201000903001d0b052e120a371d193d25132c1a04121200030800 *0000000000000000000000000000000001000000000004000002000703031705001d0c00090800 *070502130d000c0e00060900000100000000000000010000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000700000602000801 *000b0501030400040000020a050508030708000803000a01000901000500000000000000000000 *00000000000000000000000000010000050501010300000200030000040203090c010611040b0a *040c06040600020501010c02000702000404000607020902000907030c06040a09070ba7b6b4bc *c5c8080604090705170c0446461b1914041e16070d09070b07090804040c0900000000020a0018 *1c08000000000000000000000001000000000000050d021c1e0a232f14474e260b120b0000000d *110a0d11061d21150c160700000000000000000000000000000000000000000000000003040024 *260e1516060f0d05181b0a070b0c0718130913071013082231131715021610010403000a0d0415 *0c0c252015200e01181f0d1d22090f1803040c050e0e001d2008233713080b00050c0100000000 *0000000000000000000000020001090c0d1519101511050e0a0005000000000001000008000008 *060100000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000061507202a1e05070000000000000000070000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000010002050000010000000000080c060e0e06100b050d050207070114080425 *180a22251d0c07030b07060906010503020d0d030c0900140701140a040e0b030c080606020303 *02050904020a05021408041e1c0d31321c3c331f382a2143412f484e4305040005030209060400 *000000000000000000000000000000000000000015100b0f05021a0f0b1d1b160406080d0d0719 *10071410061b0f03170b0826241515140802000009000213120f39392c31291c171a101c231d22 *221e2b352e3f4f443c382a423e29383b3337312e2225192e332c4b463a3a3b3c4c4a49959ba166 *60554a584d424b3a42463a39392f4447323e3b2d38312630322631383d2023212c231d32292237 *2f1e3d3e313540312c271f2c2e22261f1b3437291f2119231a0d1f1e1520170914170d252d231e *211d2e29111e1509180c0425201023231432291e333a2a352a1c30261c3c271a3d261839201428 *201a65472c4941233a261a43393368371d824923663d22492e195a34165225166c3923836c5324 *1610221d1019140c0e140a0e0b0506060201000000000301000204010403000000000000000000 *000000000000000000000000000000000400000000000000000000000000000000000001000004 *000000000000000000000000000000000000000000000000000000000002000005000001000000 *000005000005000000000000000000000000000001000001000001000000000000000000000000 *00000000000000000000000000000000000000000000000000000700000400000000000200000b *05000404000a02000d02010f0905050309110708150500100800130c00120b000d08030d050807 *00000a00001005020a02000c0700100f07120f0312020119140d16120e1405071007040c0b0406 *07010000000001020402050000010d0809140b061714081b1108201e0c272314281a081f0d031d *1d0e09000004030703090a05090b0a0a0809130f0f191d0101040c0b1a1b1a182a261a211e131d *1b0b2a2813231d0c0c0704000000000000000000000001000000000000070606140a07220f0519 *1006140c020e07041202001505011504001306001c10041d1a131305040300000000000000000b *140f141415000000000000050d0f0300000507040000040403040a12180206070b090423292500 *0002000001000000000000020000050200000000000000000000000000000000080d0605050401 *02030100010506000d0a040701000904020200000806042e1709472f19110402000000211d1116 *0c0d0600002d220f3d3f2919160e1b1004250d03886e3dada49aafa596a99d84a8a49531362401 *0d0700020200040000080000030000090200020100000000000500010200000000000000000000 *000000000000000000000000000300000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000004000000000300000d0005240b16 *451d15391d182c1707130900000100000000000000000000000000000000000000000000000000 *000300000000030000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000305020400000001000000 *000002060208040803000500000000000200000000000009090103040006040005000000000000 *000000000100000000000000000000000000060507000007020209080b01000700000000000000 *000000000009050308020904000501000703010c0103000002020000030504040b070a030008a7 *b7b6bbc5c80807020b0c05221d0e1e1e1121240f1f1c09130f0309050001000000000000000000 *000000000000000001000000000000000000000000000006000016170929361a070a0200000000 *00000000001e16071c250a0605020905020d080100000000000000000000000000000000000009 *0f040209030000000000000904000c01000100000000001116021d1f0d100f072017080e08000a *00001d1303252a0f272610232313161b070b0801040f0b061606050d020d0b0000040000000000 *0000000000000000000000000000010300070d060f11052c2c0f2327110b0a070000000309060c *0d051f1a0708040000000000000000000000000000000000000000000000000000000000000000 *0000000000000707000707080d0200000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000010000000000000002 *00000000000f10000a0d010106040000000000000000000000000404010000000501000000010c *0c031e1e0b171d0c0502000700010600000701000304000301000000000c100316160908020105 *00000300000d0b060400001806031e1a0b29291e3c371b352e1f43402b3536200000000d0c0e21 *2115130b012b2b1a332713332219292b21160b08241910111b1803010016171011110500000002 *01010603000100000f06060e14111216090209010301001209071a0d0a3029211625201f16141d *10090d130b061013040a0821211c24261d221d1f251f171d130d322f36433e432a32294f3f358a *8c8e4731212717171e110d231e14281f112720163b332144443b2d1d12270b05251b13463f303c *331e3e362034341d383822362b193f33223a372c3a2f22201a0d20180d2a271a1f1a0f2b2b1b3a *3f3131281d3b36235e594c5d5e4460625960665b77817898998189816c9e9c99928c8297968886 *8d82857a5d9697866e634b846f4e73694d7e7b6d837e6066654776704c7b7b68787a758c817b9c *866e36220f221c0b1a06021502011f11071101000500000c0300180f09190e06200f0a26190820 *1a0e1807011c0d0918100e372e0f2a230e36291b2d2a1a1a1a171b1812180c131008060a090817 *0b00291206231e141f0c061a0c050c0100090603100d0a1109050b0700110c00150c090e010113 *07010e06030103020303030b0501120300160a052015091815081f1c0c09130b07070507050701 *00000100000701010500000700000400000200000100000100000701000c000008000000000000 *0000070003000000160506100601100c040d0600160f050b100f100b0519020110000010060513 *06001206000c0300120b03140a08130405130507120d101a0b08150e050e09010c050014070509 *01030600010000000000010203020200000906011009070d090818100d14100e1d1b141a140b12 *1006181b0d040000010001040303070807020307080603000917000000000408160b0421120720 *1307181009180b091306040f070a0000000000000000000200010000000000000101000d02011b *0e071c0e001b0d00120b002a1c09201403140502140704170c071c191304000004000000000000 *000016190c1416120000000000000002070000000708020000000000000504070000000000041d *1f1f0000000000000000000300000000000600000000000000000000000000000000000b05070e *06031008071008060b05030903010e0202080000000000030100412613684c24150a0800000020 *17190e05030d0400412b122b2118271209231404251706948a66a69c88aea38aae9e79a89d803a *3723101302050b01000801001205000b01001407000f03000800000b04000d0500080000000000 *000100000400010000000000020000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000050000040000000000000000000000000000 *000000000000040000090200180d051c0c09260b05110800010000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000004000001000000000301 *00010100010000000c06070004070000000000000000000000000905050600020c060507050400 *00000000000000000000000000000000000000000e05090601050103000b030100000100000000 *0000000000000000100b0a0a080903030508020205000004000008030508000606040b08050d00 *0005a6b8b4bcc6c6030d06060c072c332818170b322e111d140c0c0a0a08080600000000000000 *000000000000000000000000000000000000000000000000000000030a08251300000000000000 *00000301020b0d05283a1d152e15030800000000000000000000030f0800010000000000000000 *0000000000000000000000010300060700080302070605030802080c011a13081b170c1e210b11 *0b02060400121a082a2c0f201d0e08100a111f0b233e17000000000200090a0311250c00040100 *000000000000000000000000000000000000000000060816110a2b29182d330f16130300000002 *03000104031f26140f070200000000000000000000000000000000000000000000000000000000 *0000000000000000000300000a0302140500000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000001050200020100 *00000000000002000d170604040000000300000202000000000000000000000000000000000000 *000000000000000003000000000000000000000000000000000002000000000008000004010003 *0000000000030000030205110000180d0b223728414f49464d4a3d4842282e212924140b0d000a *0b0b3636282e392a312b2031352c222724202d26282310252a2112110e1b1b1227221a2f271e2a *281d221d18221f15211f15181f1a1d211a1e1e1d1c1d1d1e1b171b1b181c1615191c152321181f *29281d1c14131d1819252232302a3e40393e41364446353938303e4b4640484c3d3f44474d4256 *5b53929291605c534d5d523f493f44453b4a453a383828484437403d2f3a34323f39253f463146 *4a43463c264b3d27463a2b423a2546422f3a3924331f11303022242414252f262a2d2022201d2d *201a2825172e2e20332f24413a20433c2739322630312042433f8987726c584191805185763e81 *6c467c5e416a5b3a5f5b385c412276665079774d6561444b45324e4628675e3b6e654e71685576 *654dafa18e5e391c3624182013062017081913102316101a0d082308041b0b06271609231a101a *13081d16081d13050207040000002b37350918181d2e2e070d0e000000020d050a010019080513 *080317170c1e19141210050d0b04150c03090a050d05021308060900020c07051310061013060a *09020a0e070b05020400010700001403010b01011508010101010002000003030000000b040b00 *000000000000000000020301050204000300010100000000000000000000000000000000000000 *00000000000803040000000c0100170100020400000000000000000000000000090400170d070b *08051408051308070d07050306050000000000010301000704030f09031e0f0a190b0b06070309 *070605080703080400000000000000000000000307060706110d1011131914111a130b181d121b *110a13080218130c00000000000400000400060400030a0000000000000000000000000b100723 *271a1d1a12151813191107170a070104050000000000000000000000020000000000000000000c *02000c0701090400100d0415140c16110d0d09040a00000d020118070112070013010001000100 *000000000013150c131d1500000000000000000000000000000500000000000000000200000000 *00001d1f1f00000000000000000000000200000001010000000000000000000000000000000003 *06050c07050c0a0a0809043d3a1f342116404029292e2000000200000000000000000000000000 *00002211080906032413053b3a2c110c0d180c0923230f30200f7d70499d8c689f8f6eaa9a86ac *a58732312b000609000400000602000301000805000b0400060400090a000d0a000903000a0400 *010000000100000000000100030000000200000300000100000000010000020000000000000000 *000000010200000200000000000000000000000000000000000100000100000200000300000000 *0000000000000000000000000000000000000001000503000e0100170600250d05200a00050100 *000100000000000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000100 *00030000030000000000010c0b0700000e000000000000000000000000050d0a01000200000005 *050400000100000000000000000000000000000000000003000508000202000600020600000400 *000000000000000000000005030604000703000201000401030800020700040500070a02030b0b *0513000006a8b5b6b9c5c60703050702070a060710080d170f0a121c0c0b0701070d0700000000 *000000000001000300000200000000000000000000000000000000000000000000000000000000 *0001000401000000030902343e2311120514180a0a060302000000000000000000060200000000 *00000000000000000000000000000105030304011714082e2e1d2a1e0b1f140e3a2e1033312033 *3a172d260c2c2b1340452040351d4f47212e2e1631311339431a0d1a0708100800020200000100 *0000000000000000000000000000000000000000000000030f0819110f352f1d39372416180b00 *0000000001000000040b070d190a00000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000001070506070c070a0b04050601090604170e100a060a140f160a *03070a080b0705030d100d18160d161a171610080b070915100d130a060a100c12160915170c17 *1d0d14140d160b061302061a0e151a180f14150e181a0a39371d3c38222e1e1827251f3529220b *0408080b0e3c322430281e2e2916302618251f101f1a0d24201831231f1d1413221d132c250b2b *260e2d1c0c220b0426180d231d10271d1124181020140d24201c251e0e292314221c113029202d *251e30252433261c291f12252616312d183c4336433a2c33291c412a1e312b20474126483f2239 *2e2155452e898c8a655e4b392d2b363025464134484334453e233b3a263a2f1d312619392e1c2c *1f13382b213b312d4548383f412b3c4430363c2b40392a413f37393c29363524292722211c1623 *170d382c283d3e30322d1f2220132f20193022143020173d2c16493221857d5c6e5d3e785e3f81 *634481724691835b71603f69533476583f75562f795b3672552f4f44286b5e4c54463f62523e52 *442c716048b2a59188603b5d52362419092319102318102b1708271c08200f0613060027180a29 *1c11270f09230a062d1a0c0200000000001116150000000303060a03010000000d06081a100b25 *1d091a07011209031713051d150d1d1414130c081d080721120820120519110822130518100616 *0c0518050517080b1008080d01000a0200120f04110a081910080801030600020603040000010a *090b00000000000001000008080200000004000005000007000000000000000000000000000004 *00000000000200000806070000000d0b0a1203010c050107020000000000000000000009020213 *00000900021409010c0b050c07010702000000000000000a00001203040f07060e17111b1b0c16 *16050802030e01030200050000000000000102060003060f0e0b0e100b1409051707051009071e *130e271d12241c142b241401000000000300000000000000000000000000000000000000000007 *0908180b061f10081a0b052104021d150c00000000000000000000000000000000000000000000 *00000603030f0501171309171a141d1a10211811170b081808071600050b05020e070309070300 *000200000000000010120916100e00000000000000000000000100000000000001000002000409 *0705080209181d1e00000200000000000000000001000002000000000200000100000000000000 *00000d09061107061305041d0e1260462d41352a1d0e061c0702190f05130f071f140a2117151d *12101c09083437321906013420111f1a0818130c16070535210f291d1683643ea6967aa69870ad *9978ada9993b3828040505010807010003000004000400001507002113001a09000d0500040202 *0903000906000b0700120700070300030100040100010000000200030700000400000200000000 *020100030000000000000000000000000000000300000400000100000000000000000000000000 *000000000000000200000000000000000000000000000000000000000000000100000400000000 *0903000a02000e0300040500000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000001000000000002000303000204091304000700000000000000000003010307030c05000c09 *03070b050502010200000000000100000000000400000000000307000207080503000400000200 *00060000000000030000000300000707090c070a0a020605090d04020b01000804010703000402 *010a0e0f1a050209a8b7b7bdc4c9000100020b070408060c0d061a21120e160a121e0601070100 *000000000000020000090100050000000000000000000000000000000000000000000000000000 *0000000000000001091006232e1a2332120408001c30181e33130b230a060a001317090b1a0700 *03000000000000000000000000000000000000000909032b2310181e0d12190b111a041720062c *37182d36172a2c1d30331c2a3f20203a1820351b1e2e0d2d3e1729401900050000000000000000 *0000000000000000000000000000000000000000000000000501000b07142a1f25341f020d0100 *010000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000300000000000000010000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000200000600010301010203040301030807120f0704090005 *10060e14070f1405060704070b09040b070c120b0b0c08060c000b1c030c12060207000507060b *0c040b07060d0807040801050e03090e021011051f1e163b34202c291638382132311a31382831 *2a1a000300060c0b393528292720383224251e132b211823260f252515222a131c1e0b231f1129 *2c1a2e291936362935261524281626260f29270f1c190a201e16241a0a21231c0e150c271c0c1f *200f262a18171a0c21281d242c231c251d2f2d2a3c362a3a321c3f391f27281422290f241d0c44 *413126291e443a348e8c966a736d4a4e442e3a262d32263c443a3d301c38221532272336281c24 *1b05372a12303a213536213630213e32323338382e2d25332c1e3a39202933281b200c151d0c1c *1c0e1d180b1c120b3437251f240e20270b16180d3a300f35311f1e16083f2f1475644575604269 *582f755c327d5c337966346f5d347463466c6149726c43716a496b60416a643c524a276a664568 *5740675e527c7860b4ab9c8c7751746b4419140417110223201323261b231505261d0d391d0b1e *14081e1b1222160727170335230b0000000000000c120c0000000b0d09000000000000040c011e *17061e0b03150d020b09001d14051a0b010b0902150c04171509100b031d150515140616080313 *0a040f0b010804000303000505000805010603010e0602150700150c02000707060b09040a0700 *000003070600000000000000000000000000010005080005020000000005000006040007020004 *03000000000000000003000807050000000b0500150a010f09000504000000000000000000000b *06000b0400110600190b011000000603010000020000000000000202000c090212090000000000 *00000807060704050c0f060203010000000002000103000002010c07090e0d09130a070c080310 *0d081a211219170a1e0c0514140d01000000000100000000000000000000010000000003000006 *0000070502140a06130c001d15071510000f0d0301000005000005000002000000000001000003 *03000002000d0e02170e04150d01130b061109020804010a0b001d1308161105180f020e020007 *0000000000000000000000000200090700100b05171102140b0714080810060404080a1512060d *0c040601001a0c04170d08180d0c120d0a0c060701020200000000000000000000000000000000 *00000000000f0f0b0505080b0e0617160670643f887a4a8d866b857e70391b1820140b1e1e142a *20062011020301001a120436170b362215301c0c25160e2620123732191e210f837b3d998c6da4 *9375a5976e9d99862b211c000600001001000502000902000000000000000300000503000b0400 *0c04000d0300110100080000000000070300060200130c00120500050000010000030000030000 *000000000000000000000400000000000000020000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000300010000020000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000002 *030200000100000000000200010005050000030100040500000110050501030200020000020000 *060400020200000002010100000001000000000000000000010000040000000000000000000300 *000000000000000000000000000000000001040200000600000006070801000403010305050900 *0601000200000003000004a9bab8bbc5c6120e0c1206040e03050e05091c0e0d251e10130d0300 *000000000000000000000000000000000100000300000000000000000000000004050101000000 *00000000010500011c1e093032172e3416161a09050c082c260e0603000b0d0b10140f0e130900 *04040004020000000000000000000000000000000300002e280a1e210b1e14092d260e3a1e0b2e *23122d2d1c1c1507192009080d0402060100000000000115211c1a280f11120703080300000000 *0000000002010400000000000000000000000000000000000000040a030c1508282c17232a1103 *000100000000000000000000000000000000000100010200000000000000000000000000000000 *000000000000000300090500000000000100000001030500080700000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000100 *0000000000000000000000000000000000000000030202100c0b0b0602080703050803100d0a15 *0d0d0e0a100b0814151010140f1112130b0b07040d130a1809070805010807040b010209070410 *110f0f120e1c160f1010020d07030f03021208061c100c1c1a172417102a2210261a0e2a251f21 *101429221901000009050639382e2725182424182e2413201e10241d10291b0f2f1a0e241e1e1e *1c0f2b28162b2d1a272b18352a192417122a1c1428130b3526172b20182c281f1d120a291b071e *1f142d251a362d2837221a3436301e22231d1a16393126403e3d4e473b4347353c3b384740363b *31302d292228201946443e7178695f655d51524e584a475759584f4f454a3e2e3c2a193d2f1c4b *4d3d4e4b3847453654483b5c5c5858616851585d545f54445253535d684e62644e5c67272f221f *2624372f201f1c10221a0b2d1a0d1c150f2d2b1d1b1c10332c27242c252a252749452c8c805b7e *78647d65477562497564486f4c2b7d654b806646876a516c533771593d65502f7c654272512d73 *5f425c4941635745776752b6b0a582562d795e43301b0f351d0e29170e2d211d21110b2d1e0c2b *1e0c39221225190e251007300e092814100500010000000909060000000b040000000000000014 *0909200f081f0d072112051109041712041707021207051e0d051f0d051e0b0820190c1c14061b *0f061e0c041f0e07140304170402120c070c0808040000120600160d0412110704040003040c11 *0e0f04050d06020b0000000000000400000700000900001700050d050b03000404000300000009 *02001303000900000000001100000c0506000000130905140d060f040008010100000000000000 *00000600010b0004140201110500150c0713040009020000000000000000000005020306040400 *00000000000302001209030e05030700030000000000030903020a04041e1914301f192920191a *0f0a1f090a1c1513251712200a09281e141406010f09071d0d0b1002021e03050e020023140930 *261d15110c200b031c0a0325100739241626140b2b1a0f281e0f2e1d0d2b1d152d231123140c2c *0b09220b0920140e1a06020f09051508001610041507021d07001d07021f0601210d021f150918 *08030e02020200000302030501000b05081605051405041e100c1f1a1231271425201528210b37 *220f1e19121806001c07031c100a1f110a120b0a0c090506000001000000000000000000000100 *000000000003010006090a110c060e07071a0b046e695b8f897c8b867c95887e372822210a0129 *120b2a1a0f261f270000002310094b3a230801021d14090b0d041a100a1309041c0b0a3d3c2b46 *3d2e493d3947422a827948464b3e02040500000000000000000000000000000500030000000000 *030100000100000000000000000000000200030600060400030100010000000000000000010400 *010300000000000100000000000100000000000000000000000100000500000400000000010000 *020100000000000000000000000000000200000100000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000409070600000000010000000100000300040000090400000100050901000a050508000203 *000109010702030c02000301000001000100000300000006000403000706000800000900000001 *000001000000000000000002000106000400000407000603000001000301000306020307030a0a *000908000a03000a010007030004abb9b9bbc4c8141511110e091a0f09271b0c311d0b2b211113 *040300000000000000000000000000000000000000000009080600000000000000000508100900 *000000000000000001000026331f2432150c10060000000000000106080f210600070200010207 *01000a06030000000000000000000000000403000d1203090f0a23341c262d1726301f200d0c41 *361e3535192d2b0a1818071d14070100000102000000000000000000010c1b0312210903080000 *000000000000000000000100000000000000000000000000000003000015160e1d251014312800 *060700000000000000000000000000000000010700000000000000000000000000000000000000 *000000000000000000000000000100000100000001060300040000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000002060509030109060802010710 *0a0809050c0e140b0b070214170b1a15081408060e04020e0707130c0d090a0a05090508090308 *08000e0b030e0a0616090a160604090607090706171508160d06141408271a0f3129193a241d29 *20181c1e1d1d1d151107021c1a14241f18331c0f1c130e1f1a0f2d2b23251f1a23211a2b1e1725 *1b182619122b2312362f1c3031261f241d221612291d092a1b0e2f2c1a3c2d1c201108241d0f27 *1c14261f1c221f1c2d2c1d2f3a271524230e150d0308084049493b4749415e6e42515220313d43 *59551f2e3b242e2f101e272439348e949545484928374c2638431b232a4848423b35203530213e *322937251f3a352c28241644443b272d310803051e20290803060b040b0d0b110000061c1d1b00 *00000201003d504a2b241721150d2e2014231e133b3a2d3a2c17392f1e2e2210322419473b2878 *5f4f7b5c4e7e644f6c695870603a7e5f3e61534017100f5f5c5c24120d1207055349388680666f *5d3e6c4f2e695847745a46705b4eb3aba47b51337f6e5b30120339291337220f3826122a170e33 *11083d1a0d312516291a0e1c15042013032a1c080f140c000000160d0b02000307080906070905 *00003f36212c220d2618081a09062010081a0a0810080c120504170a05230d01281c0820160918 *0d0e24190a1e140a190e04180a011c0e011510060f0903100302120201120401130d0801000100 *0000090e130308090507080200010300031f171306000000000007040305030203020107010109 *00001205021508030800020200000403030c070708030009000016050013030004000000000000 *000000000008000008000009000009030207040309050401000000000000000000000007010003 *00000000000000000000000504050b0b050604020000000301020303000b0605120c111e130c1d *1914120d0812090219181323160e2e221634261816030312030311060715100b2613051e100133 *1c0a352318210604260801250c032a15062f251133230f2620122b29152f1f172e140f1a100b1e *100b1e130e2114091e12041c0d00140200160200190702170703140603160705130a04170c040d *02001902000f00000500000a04050500040a05030706021108000f03001c180c221609150c0814 *1107160c0b12030615050013050019080227160726100310080504000500000000000000000000 *00000202000000000100000d0f0a08070a06040a130a064c45305a5b516f604c93937838252c23 *0c06331b19311f17150f0f0100002f1e0e1408090300000500000a00000f00000900001702002c *0c0061220768350c79461b876135413f33040c0800000100030200040000000000000100010000 *000100000100000600000000000000000300000000000200000200000200000300010200000200 *000000000000000000000000020300020500020500000200000000000000000000000000040400 *0a0800090500010200000500020500030200010000000000000000000000000000000100000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000004000109050800000400000303010305010004000008000303000204000a08030902 *010b05060406040703050602000002000002000400000200000200000002000000010000010207 *0f160000050f080901000605000303030400000401000204040307000400000200000300000100 *0000020001030103000306000002010005abb8b8bcc5c90d03090e0307210f103b2d1f20181c0d *0a1100000000000000000000000000000000000000000000000002010d00000300000100000000 *00000000000000000000020000070e190f1321110d150f00000000000000000000000100000705 *09130306030f1519080e070000000000000004090001020000000000000000010500000500001d *150b433520423f211d2313080a090c060a00000000000000000002070410170e1b0f0e2028171a *0e0800000000000000000000000000000000000000000000000000000000000000030600050600 *000000000000000000000000000100000100000100000000000000000000000000000000000000 *000000000000000000000000000000000000000100010700000700000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000010401080803070c040807 *040509080a07000812071013080b150408130306140e150302090c141d08151815151d00000812 *090d11040818110e12141519160e140d090b04070a070b1906091a110d251617291e182b1f1c3e *312946413540322f38241c3417142419151d1716241d1a261715302c263d382f261b172e1d0f27 *242126201f30282e1d181d0100070d0f170000010905090d0807130e16322225301f1d22121613 *090a28181232221d3826193b373b28272a00000402000d000006423e3e1709090e02061e171d00 *00002b303600000518171a05040e11070c939196383b2b0c070e1b1c241c0d1649465642342843 *3120412f223225194333244036284f4631332e300501091e1b2105000300000606060e0000011c *213000000603000339413c211919220d0b311b1a261914321e1636231c2e1613281e1d2a2e2440 *2a26807a6788795f898463644d307d62457e4c3b4e3d2f000005484348170c090400045345327c *6c5e8276707b6f5d78634b53453b776447b6b0ab8160448e7b5b442a1632160a3e241635221b26 *1914301c112e21112e1f072c1d0b2a0f09260b091b0a0d0b061300000802030c00000008020601 *000103000312090f1000071d060a13070c1806082c171027150b2b140c1906062915142b141324 *090a1d06041a160a161105190e031c0f0a260f11220508150a0e060004120c0c0f040309080800 *00000000000000000300050600070200040400050c0d0d0000010300010d010805000108000402 *000504000306000007000000000400000000000000000000000200000503000400000100000000 *000000000101000200000101000300000304000303000008020205000000000001000103000306 *00030000020000000000000000000900050f01090a000600000100000401000403000016030615 *0c0b1806051203051c08092e1c13270c13361915180d090903001a090411000217000223100c29 *1d1321180d1e151423120e13050329150a240f0d2213121f140e23120d271a151d0a06190f0615 *09061106090e03081603041606040f00020d02021c05021303030f00031f03041600041702050c *00020800000a03050400000000000500000400021000031501030c00000e00041709081c110c1a *0a07130d041003091500031600021400031700001d090412060504040700000100000000000000 *000000000606000a0500080801051a13101105091102091a080c2f251e25191b3b2f2348403031 *1d1e1e0f062b1e103d1f151808050500002714160100070000011103041207031003031e0d0f22 *0b097d582f9e8c76a49c97a4978ba3937f36373200000600000100000000000200000300000500 *000400000000000200000300000400000200000000000400000600000100000000000000000100 *000000000000000100000300000200000000000000000000000000000000000200000100000200 *000400000000000000000000000000000300020800000400000500000100000000000000000000 *000000000000000000000000000200000000000000000000000000000000000000000000000000 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000004030706040a0700040a000309000703000702000c04010c00000002010405 *03050400030800070d000903000e00000a00000104000900000200000100000205000406000605 *000e09091804030804000601000008010601000305000603000603000802000800000200000200 *000300000204000802000b050008000007000008abb7b9bdc4c80e0c0a0b0a07232210070e0900 *0102000005000000000000000000000000000000000000000000000000050d05060c0400000000 *000000000000060000030000110400070000030800020000000000000000000000060305130104 *11022b382214240a000000000000000000000000000000000000000000000000040c031b281228 *3219030907434d293e431722260515280d22260f0109020003000305020815070d1f0a07170304 *1500020b0100050100050000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000001000303000000000000000c0500000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000010c0e081b231c0f *160c10090313100b130c05060d08050e0a040e07050d0a131c180000000b0a0b00000000090700 *00000602000d0d060e110c17231d1d1a1314090d0e0d080c110c080e05130b0511080422170b2c *28172e321d231d19292e292c371e2120131d1f0e20200914150c1b19121d2019201f12221d131e *190b19261d25281c2a2d23141610000203090b100000000101030604040a111025342d2724181f *1202261e0d17120c211d170e11091d18151b271d0000000104020000003d565c19201700010c11 *1e1c0000002e383500000001090f070305171f258a96982e3124070503131a13060e0d4651443f *3e24373e282a25143d382b332618393320413b22242a1e00030011191a00000100000304090d00 *0001161e20000000000000304341201f19271f153a381e2d2a2030281e24261325241222200b43 *494750463f999a996d6948857b5c7b6c4d796f50755c3b574931000000463c3616080400000049 *3e347066456d6145696d50655837605c4e77694eb0b0a57150388c7257361d0a3a240e36280c2f *2a0c3e2f163926104326122d180b331d10281e09231b070f0d0500000000000000000000000002 *0000000001000000000000080c011d0f050d07001d0c05221106230d0a2016071e1205251d0a1e *1604201a0c2b160a2516141d140c0f0c08181106170e001c1a050f0e0302030109030312050403 *0201000000000000000000030c04070f0509130a11120c04070b090002060300040a0009040000 *020000000000000000000102000006010000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000030000010001000306070a030007080000000000000000000300000d *0c0a110804100905090804090a001618052523151e15091c180e00000000000000000000000000 *00000203000101000805020000010600040912130a0a0206080000030000020000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000200000200000004030400030200040400020300000004000005090407 *130e0202021610073e2719391e0c120402000000191b140000000000001a17091510050a110712 *11071f120472572aa28c769f987da4916ca39d782a1f1e00000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000002040400030300010000010100070405010000000300000000 *000000000500000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000100000700000000000000000000000000000000000200000400 *000000000100000100000000000000060600000000040aa9bbbabbc4c817080c1e110c1e0b0609 *0203000000000000000000000000000000000000000000000000000000010a130f1c0a01020000 *000000000300000300000000000200070c0102010000000000000000000000000c0e040b120707 *180c0b090b1729170000000000000000000000000000000000000000000202071c200c1e250d15 *1903020302060003203a2024260f2f2e183130150e0d060000000600000809000c13061a220921 *261705050600000300000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000403020c0600010100010500010500000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000102000000000000000000000c02031e170e0e *10090403030a0a051004080a0a080806091106040e050616080d1d170f00000000000900000206 *0b090000000a05080d0203160703121d0b080300070503181a0d13110e1203061d18121e101431 *1f193937272e2a2033362c201d122316111f140e26150f2314072618111f150c20171620191224 *2a2026241e2b221b1e13102e2726201d140001070d0f1000000000000209060610060b2c272725 *221817130f170d08230d0628211924261a2b1f1d24222000000008010600000042474e0e100f00 *000017191a000003272d350000000a04090000032a2523868a8b2e261f070208090f160c030941 *444b48422f3c3a2843382c362522393c263d2e1f37373b2b2526010000131a1b02000403000206 *0b0900000014141e00000000000043474b271f1c2a18152f22101d1a0f2e2322372e262e1f1827 *231d2f2c2c39322978765f7a6f4c6a532f6f5c45735031634b365c4635000001444341200c0502 *00003a22157a6b4e76644a7d613e725f485f574d706557b5b4ad7a53398e886d4f351c3c1d0f3b *1d09371f0c2f1b0e321c0c3a2a203b291c3c29183a190a381a10221a162603041500002407001e *04000c000010000016050629180f22120a1f080a100403160b08251506231d062917032410072d *180a26120e25150d24130313130917140c120b01170f0614090a1605081f0e0b0e000413060218 *0b010b06000b05030900010c000212080908060b09030106000007030206000009010108000305 *00030600000700050000000000000200000000000100030000030b0408090304100a0f10060714 *0602110c0c0d05040c00010c000010000008000007000006000007000506020405000000000000 *000000000002000003000001000000000000000000000000000000000000000000000000000000 *000004000401000100000000000003000301000204000302000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000004 *000002000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000100000000020100000000000000000000000000000300000700000500000700000b *00000200000b000005000001000006000007000006000005000009000010010009000000000002 *00000000000000000000000000000000000100001001000802000902000801020a00000c000309 *00020600000500000a08054d23157045202a17190000001b0b12030003030000190a041f10040d *0b001510021d080473522ba39281a38b69a088659a927c29171800000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000003000100000002000500000602000009000509000603000009 *02050000000000000000000000000f030205000200000300000000000000000005000001000000 *000000000002000001000302000400000000000000000002000000000000000102000500000200 *000003010104000001000000000002000409000a070008030008aab8b9bdc4c81810101c101325 *1c09020504000000000002000000000000000000000000000000000000000000040a0611210f0a *0a050000020000000000000000020000000410050000000000000000000102010a1b1308181809 *190f0000000102020006010000000000000000000000000000000000000100000b160408150606 *210d0910040004010404050f00032626183831192c240b0000000000000000010b1508101b0a10 *211211180b03000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000005020305010400000000000000000100000000000000000000000000 *0000000000000000000000000404000000000000000000000202000a0b00000000000000000200 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000001010100000000000000000000000002010111 *160f0d100e0708040502050c0609120a0e0b060d150d0808090d0b0e0b1e1d1601000004000a00 *00010e0f100000001305090b04030b070415130a0b0e09170c0c210a0917090b18171a170c0a21 *170f291e15311e182521193424173324163d31243c2b202c241d2c1f0c1d1c0e2b2615271d121c *140a1f1a10271d14272a22232319272922262a22010101080b0c0000000000020a090b0d060b1e *1f161e18081413071710062a1d132718162c251d40382c3237310000000302020000003841480f *110d00000112141f00000529292b000000161a1e020200293136887f8b3b281e0a000a160c160e *0407444e4a514b38483d2b48453339372c371f1b4736274f4942272829040000211a1909010102 *00020909120000001a1b23010000040201393f35332f1e381e1a3021152e17104032243c392d39 *2a182e2e1d30312840443a7d7e5f69624e7861466a66475a49306c5d4056412300000047454325 *241a13070d5c453492836f8679595e5b43695638544731684f43b1ada98560489889794d31194e *241440260c41250e4527104429163f281d2a201a3a26183a2c1e331c0c2e170a3a220d2b1f0929 *180a2312071e11091d090b1a0a0d29170b3b2815231303210c051d0c0a27160620190f1f1e1621 *0c091a14092013081c1404161608140d0914090d16090e18090a190906181004190d0511080019 *0c031a0c06130503110102110508150b07191309120b0608010108040910060b06000305000505 *00030100000200000401000001000400000100000000030600030400001008000b0600130d0517 *0a0412080c0902021906060c090c1a1009130301190b0422140b14090617150c18100a16080916 *0c07130605190f091411081a1106140b0a0d07050f0b0b0f0503110d0a09020700000002020102 *0809100f15151817161b201a12161e18192012152019162626171818131a04030d00040c060d17 *0a0c130a15180b0a1e0b052a190c241c081c0b00120604130a081d07091d130b1a110c1b120b2c *2212351b0c311910261d1727170f1e0b0a200c0b190909130a041005020c000003000204000311 *02041103041004041e161116110d0d0f080f141106030508000206000106040b251c1a1f1b150f *140c1b180e15101213110f1c110e1c1314180d0e17070615070b16070a1e110a271a0f15080a0b *04060b08090600000000000000000000000000000200040b06080c070a0b05070a070b08010409 *02030d0102040001020000010101483820695b4c2c252b05000013080b0200000b03011d1c0d1d *1305140300130b05251c0c745e33a090749f8d779d9180988976301b1e00000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000001000010081207010a00000701000100000405010705030311 *040321171a0e03040200060000000000001c160b00000000000000000000000002000306000700 *000000000000000004000018161802000000000003000000000308010801000300000000000000 *00000400001507090000000000020000070000011a0d05060104040000abbab8bcc4c800000100 *000900000300000000010300000404090700000000000100000000000000000000000406070a12 *1e1419200e0006010000000000000000000003020000000000020505061b1e0e05160700050000 *010000000000000000000000000000000000000000000000000000000000020000080503100902 *0608040707030c02000000091405112109222d1910220900010200000100000000000000000000 *0000000000000000030f08090a0b00000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000300000100000000000000060000040300010000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000000000000000000000000000000 *00030304080b1012080e0e0409040a0f07040a0908150e080e030909050d090527252300000100 *0004000000030e060000000104030907050700070f0a080305000d0c060c190d080b02090a051c *170d20180b3237233b2f1c2a291e272d1a2736312a272422140c28130e201f1429241523251423 *201a272e22282a1b1f201a1d25241f211b2a28271e2320000002080a0c0000000000030e121305 *100f23241e292a161b1d121b1e171f1c142125161f18133932263c3e3b1305071f211e1b0a0c38 *465c30312c1615132b393a181a10363a3f181719293031292e2c373239867a7765636046585441 *5149424b483f3f394b4f485f544154472f473d25453f29504334555e5946433824262128383a27 *302f2434372232371321251e2e3210221f101b2930353537301f1e2022221b0f261e1633352743 *402e322d2027231d2c271b4742358c80667564478178578780646d5c2b644e2e4840350200011d *1d2409070900000046432c8b86737d633c655b3d54432d63563c646150b1a7a179573c7e7b594a *2d0e583b1852341b44371c412f1a432818412f183e311a3c3111312a0e3b260c30250d221b0f23 *160d291f17301d0f221f0d1a150c1511051f14081e170f1b160914130a130b081b1c0e1a160a16 *0d0821100617070313150a130b08150d08110c030f07041106010a0602130806160b0614070409 *0006150a0a0c07020406010603000602000e07050a05040905080802040c020102000000000000 *00000000000000000000000000010000000100000000000000000000000103011308070c050510 *09090906090f0a040a08071a0a050d0c06140b05100906130b051f120e20120c1a0c0112100215 *160917130818180e191007110c0419090717100c0a0909060506120d070c090800030000000001 *0001030005060505080c0e0606060905010c080304070715160c1d1616221c1728211a10060814 *0d07221709160a04140f0621170e3b2e222b2e241a140d14130b10120a1e130a1d1f1517150519 *12091d17152820152e22162226192a1c0d211c041711051e1b0c190d0b130f0d1005070b070310 *0c080c10080f100a15130b1f1d1814100d0809070a0202070a03100b07000801040d0e17170e1c *100e16100c271d161e1408110f05150d052213071c1e0b242112170c0a1a120d2c241a25160f12 *150e0c0d0a090c090b120a0000000000010000000000010000000501030205050809030a07051f *1c122a150a29251523231f0000000000000000000400000000000000001506080c00030600011a *0b021407030004000a04001713056047219a8769a48b76a69a86a09b8b29201e00000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000004040700000500000004000000000200000003 *04070a010217161b0401000000000000000000021f2b1a00000000000000000005000003000300 *00050000000000000000000a050c10141703000200000000000000000004010000000300000000 *00000000000300010c060f0000000000000000000000000d0706010005020007adbabcbbc5ca00 *000500000900000900000200060a030a10040a0a050d0f00000200000000000000000000020900 *000407140f0e150d0d160c0000000000000000000002040000030000070e281f01020200000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000113170b14210b0001020000000000040003091d1f1601000300000000000000000000000000 *00000000000000000100030b180805010100000100000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000200000200000000000000000000 *000000000000000000000000000000000000040700070b000000000004050a0601050c00070f00 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000100000003000000000000000000000000000000000001 *00060100030603030a0307070403080a060c08090b050c0c020c08060c0a070515130e1e202000 *000000000900000100010b00000004000a0d050111020117131014160d0d0b0a09010804000415 *04081f140d2a291b3a33213d3526281d1628231d29291d261821271e1d261a1a221a0d231f1d2a *251c36332121180e281d171e151320221d1f2024271a1b29262a050608070a0e00000000000108 *080c0604112424261f1d211f150e1e130c141c172a2622392824423a343a394001000a22272604 *0000464d50262627000006080e1c00000e22213000000100000300000001000072798040352e18 *131e2120250c0208353d364841374a49404749304f4f324d4132524c444f545132383c0703030b *151c10171a0403060d0e180000041817280700070500023d4451393b30221f0f1f1d14241c1d29 *241e272524382f2a30352c373122524a408d8d82797261775a4258473c4b3f2e60503b21191300 *0000090509000910000003271c1e5e534885796669513c624e3c664d35554432ada79f80655189 *755b4c302054351d4d29133a26123f31193623173a240d3b1f143f261c2f1b0f3d1d0a351b0f1e *0a0c22160f24120b221914210b0b311d15281c17150b0d1708071a08021509041809041e090517 *0609230906180c0d1d0c141404031805031f090c180b091308061708091f0a0a15030615080616 *0c0a100304140b0a19100a0f08051401040e0103110003180a0d0a000500000406000104000500 *000305000201000000000000000100000000000100000000000000000300000008000015090a13 *0a09120b060d0404160f1309040a170907251b1723180e17090a140b09180d0d160708150b051b *1a12160f0a1c130d170c070c05080c080b1307070a040913060b11070b10070b1d0f070d010400 *0000000000000001050003130b0b16100f14140d1912141a0d131c131019170e2a1e1e201b1526 *130e27241c22140c21130b28191232181a221212200f0a1c140c1c15121f1a150f07121b050921 *140e0b0b0b1d0d081f0f0e1f160e1e13081e080423120a170f0e1f0d12231e1c1d1b1814080511 *06031b101115090f1c0e1215070d1a15171209070e02050e040509020305000207000510020b26 *1b171d191c16110917170c1d1105241a0e1d180c1c140b231e1b221115200d111a16142d262323 *1e1d160b08120a04090005130c0b00000300000100000000000000000004000105030406040810 *070f44332663524f1d08061c0a091402030a00001406051201070f00071b03044f392b13020001 *00000d05051408010203040400012d1414664d299b8569aea190a99d77a39979261e2200000000 *000000000100000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000200002f1f184742380a061900 *000000000006040428242b03000106010409000200000300000000000000000000000000000000 *000000000000000000000500000200000004000600000000000000000000000100000400000201 *000000000100000700000501000301000000000004000c0501100a0416000000020001acbabbbb *c6c90000020000000002011a290d0d1f1104070401000001000000000000000000000000000000 *0000100d0a141c0b1626140d1e0d00000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000002010613050811050302000000000000000008060b170000000000000000000000000000 *0000000000000000000000000000030e01101e0e0c0d0206020000030000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000002030007050000000408000909020d0b020c11060a0e0a061908000b0800040100 *000000000000000000000000000000000000000000000000000000000000000000000004000000 *00000000000000000000000000000000000000000300000806000c060200000101030000000007 *09000305000000000404031115111510080a0e0a0f070d110d0d1315130e0a050d0a0114140513 *180f0000000000010000000000010000000c10080a0200201d060f0d080e0b071b110409010804 *02000b0b061a0d00221608221b0f1d110e2a25233c311d201c15262c18332317281f092a210c1b *160b271f0f2523152a271c221a10251c111e1c151f1d111b22212122160001030d0e0900000000 *0000060c09010406232c1f272a1b1d1c13141514231d0c2e251e322f272221152e402600000019 *23260500034d5452222c350000060e0d0f000000252a1c000000030105000000000000696a7438 *35300e14131a29200c1009424e4f4c4a3c484f3b342f20443a2a4a45394142283d3e3030423701 *01010b0d1b0c0f10000000100d0e000000141b220208060003002a3c3e2929233c30184032222b *2417292f213730212a351d30361d42381e4438337a5c406e4f3b64472a6241224a3f29463f214a *3a200600001f1809150d090800001b110d808184887c5e6563475f51376a5842816044aeaaa081 *673f9688565f341642270b4125083f2d163c2a16432b124127163721153b291c302112381d0641 *311a371c042a18082115054841262c2614301d0d1e1101251405230b0527200c201508200c062a *160d27180d2510012e1f0c26220c21150621110a2310092924242b1f0e2a190c201a10160b0120 *1a071e1d0e1207011c0d071b16101c11061e10041f18070e0f04140f07130c07150a05160b0516 *0703130a021b0a0105000003000000000006000000000002000008030000020000000002000002 *0a0d1006040b05011c0b07170605150d0a0b0f0925271f1c201c120f061e11032014091d18081b *0907211c10211e101d1a101b0f07160a03150b041508001a110518140d13120b150d03130f0409 *08050000000000000300000a04020b0604150d0b120d0c160b0c18100b1e160d312918231c1125 *1e12281c0a261e0f1f1c0c28230b372c1f2e281d3b24182f2b1b2614071d07050f0f0b1f150e14 *05012111081d1d0c2a201625170b271a0c22160a1e0e041f0d07160903261d132e180a1c0c0226 *180a201506130d0b0e110a110f0b1b0d041709030d02010700000b00000d06000b07030a03000a *01032118092a1f0e352c1a2d281b2f240b2a25151b170c201405211917291e0c1e1c0b231d0928 *140a210a05150d040f0b090b04090704070000000000000000000000000000000602010b020111 *0b0a150b033e3115836d55836b438f774b43281b0f06043b21113c281a31201401010039280c15 *04010c00001e11061700020000000000001f10046d541ea19178aa9c82a69279a4937e2d1e2100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000003000107000024231212211900 *00000000000100000a00000f152100000000000000030605000003020004000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000000000030000ac *b9babcc4c700000300000207030c05070d00000404080900010300000200000000000400000000 *0001000005141c10132a1f1d28141a250f0a070217142a00000000000000000000000000000000 *000000000000000000000000000000000300000500000000000000000000000000000000000000 *00000000000000000000000002000000000000000000000000000f1a1000000000000000000000 *0300020301070c03171d0b0a140a0000000609040b19081d2711040b0600060500000000000000 *000000000000000000000000000000000000000000000000000000000600000000000000000000 *00000000000002010000000402031d140e322c252f301a0e10080c170e0f20180c140d00040500 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000903010000010200001513070c0e0300020401040300 *00000b070303000100000102060912090505050810120f0c05070f070817181c1d14111c1a1318 *13131813080000000000010000000000000000001807060a0408110b090c0b030e0b04111a0b19 *120f12070b09000427140c2c230e291d0c21170a272421353123301b172b25193f332a332d2024 *1e1a30362b2a22201f2c21292820231915231e1423241b2123221114152a2d290000000a0d0802 *00010401020e0c0b000001090d10171521202016151a101a1f142924212b22213e2c1d212b2f00 *000608122100000636424b1f31300000000a0d1c00000218182100000500000600000000000052 *58622d2c270c0b131a242c05020b4a484a49443b4740273f36273d402e45413c4d3f304e4a4734 *3a4505070f0c13190303050000000f1312000000070613000001000006302d3a2c2a1727281c31 *3e223b382b2a1a142e251e3b2c1e312c23423e32473c36807655787460746a4d7c6a476b4b3a56 *3f2e63563c4c351f503a23594b2b5646365f4e426f6960837e69614d3b5d3e335e5d53656457ac *a59a79593796815e6242244c341a452b19443c2650351a4527173f27124024173527233e342a3a *2d2141352c4a30213a1f123a22152b1d092a1d0e2c1b0c3716092011092f1e1b322e1f251c0c28 *190b2e35253521142f1d142917102d1c172c1d1d3a2c22180d05271e0a23200d28271e432b2228 *19121a15131d181b160b062a160924190a1c13081e0a081505081d151015181a15020415080912 *0402130b04140905120a0f0d040901000307000310080b07050303020101000003000003000405 *000208000a0b020d0c0306180b08170602110304020000000005030002120b0c1f1512281c0d20 *1c0d14100a090810040b100d090e080b12131010170e0d1a0e0719110e1c1e1e1d1f1b1b160d11 *0908080507010003000004000001030000090404101013171313180c131505091c131526201f26 *211d1e140d1d180c291b0d2027212e2823272b26211c201e1d1b25261c232522201b0e0f0c091d *120c170f12180c0f1915182d261f2b302c25242516212419211e31281c1f191819121e24212421 *0e0b1f170c1a1209130f070f0b0b11080a13050c1703090a04070a040406000006030306000308 *04050a0a05382d29393123303a2b26312d2728162334261613141d18151f0f172116131c171d36 *352e27312d1b1f21201d1f170e0d10090c09030900000200000000000000000000000018191519 *130c150a0c1a060745331e9584758a7661a098845c3c3a1203003f31233824192f242d01000020 *12140501040200001904041d1204000000060000231009634a2aa2885eb09f96ac9c97a0987846 *3d3d00000200000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000009000004000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000100000001010008070604040a06000400 *000000000000000500051101020a00000600000008000001000102000301000204000006000300 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000100000100000000000000000000000000000000000100000400000503 *0002aebab8bcc6c800040600050304080819221107090300020000000000000300000000000000 *00000000000000000a1c0f3636181d240f0c1c09112410000903020c0701040000000000000001 *00000c190a00050400000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000001000a130100030000000001120500060400010000000000000000 *000000010001170d000907081307151e0b0515040c19011f2d0d081402070e010c1b0d00000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000061311030e0d070a09060300060603070c040d160300 *080500000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000003000708000d0a00040d030b090100 *000000000000050100000000000001010006030312140e0a0c0e0201030d140e12140a1d150521 *2208190f00060b05030403060000000000040406000000090d09121304170a0b180d09130b0b14 *1a0d0e0b080509070c0d041e200a2a2617302e133e30164833295b392740362b26211530290e1d *1a082c301b3f3d2e45402e2f2e1a30291b3029192f271621251d1f221a0e0a041006040600010b *03040901011305031009000606011208011d110a1508040c0906120b041e1c141c1a1637423c19 *1f18000000000000000000303836120c0f000005071215000000101d2305060500000000020700 *0000585058413b3007070b0e1a10000400363d3648492f3f2c1c403e35403e303a352a4847333c *3d252028260604050a0709050305000000080c1300000002080402070100000033434b272a212b *2016231c1431251a2a24153c3a1f27241225301e3c361e372b237877626a604676694f5d4f3b76 *75547a7664614e2d493f2660563e6d58406c65546d5d457164467e826c5b47346a584457463977 *6347aea8a28d6f479a9074664c1c563d174c381345341c523f2045270f452d153a21154a3e2745 *3d212417053b23104323155941244b3f293b251538291542351a3b301635240b3f2108503e1b33 *1e091f10063d371d402e1e31260f1c18051e19082f1c0e2a27182316081b170d18140c1b150d23 *1506231502251605281b091814091c140e120c08190f0b160a051009000b070012090015130718 *190e121812070b090703041108030707000a06000303010405030c010103000000000000000000 *00000801000c0a03120b0b1404001a0c06121008090b050000010000000000001a16071d120624 *12061e0d051714050a0602020001020000000000100a05191009170b010f08040000000003060f *0c08100f060c0402010000000000020100060602070605050f0b0d10091209030a0a041c12071f *16072215031e1107181612171c100708070003000a0b0100000001070703040c00000311140c20 *150f120b081a130d150a041b1509222225030505000002000106000000080d0700000001000013 *130d150e06190f051710091a120f15110d0d0a08120a001009021108021407031a11060c0b0900 *0000000204100d05353e282b392f222a26141416171b0f130c05140d0c14130f1f1f16201f1e16 *1c1d29262019151200000003010404090612160b12110400000000000000000000000000000002 *0503040a050405060a03032c24106e745c908d789c9b9149332d13040035311d261c0f1d140b02 *0000211a10140904020000170901150b05000000000000291f0c765a3aa39d88a48e67a19179a0 *9a9131283200000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000c0a000b070403030000 *010000000000000000000000000000000000000000000000030000030003040004040009040006 *06000a010000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000020000adbabcbbc6c800030c00020d04070c040b130f1811000c0b00000300000200000200 *00000000010000000000040d20181a2e1d1e2b1d040f0d06100a00000200000400000400000000 *000400000400000200000000000000000000000000000000000000000000000000000200000000 *000002010100000001060700000000060503100c00090700000000000000000000000000000000 *00000000000000010000000000000706032837270b140c11130a16241216211017231b0c1f0f00 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000300000000000000000001000100000100000103030300040600050600050500070503 *080403030502020200000200000500000100000000000000000000000000000000000000000000 *0000000002000000000000000000000000000000000002000009000006000207000b0700050200 *020100000000000000000000000000000100020d050c090d0d08060705070407100d0e16101610 *131217171a221e1217170b0e150a131610221f1e0d0d0b0a060914110d17151c11131809060412 *110d171c0e16080701000804040a1d111424201e2b220e5047346d6453858164534028221e1823 *1e1d2327241f23222f2a183538262c2c192622141f15151f151124221a24232320190e1d1d1420 *22171b1b0e161411281d1b1e1718252120272d2e13160b19220f17110a211e161e241e1e1c152f *39341b292f000005000002000003213133070d0b000208101d2200000e262a3d04081000000200 *060f0000005c55525e58490100060b101c0000051f23232e30222f2e233e3c30343020343a3136 *40343540321f20270201030203090002080002031219180300050a101109050b1309131f1f2924 *2624211f15272b1e38381d30382b3c322a3d3a353e31201d22142830206b6b5c6258394e432f58 *43327f6f557e7b6a686253756352736a5f69665678674c5e5747513e2f8671627666506b6a5966 *5940676855a8a89e91755a977a65664d2d583c204334243421164c38223e2c1544381e46391f57 *4d414039312e1e123a2a16351d16271f1635190e27160c311c09291c0e301e15392a202a261929 *221c1a10062012062d1c1724170d27130b2109081a0909271d181a160f1e1d172f342b1d17161d *1309292218231e18190e0a0a0a0c08050618161018120818151014121218120d12100f0302080c *0b120b0b0b0c0e0d04040703040c05020b0c000504000300000100000100000000000000000004 *000000000007000700000404060f110b0a040307060b0c0b0c0a0000050000030500051a100917 *120d1e160d1f120c1f170f0e080a0000020000000100000807070807080d0b060d0e0900000101 *04070d090c10080c0e080c0000020000030000020000010602030908080c06070b0b090d060711 *120c150c0310160c15170f16161316130e040002000004060c1600000300000700000700000014 *140c1418161c1318221c1b151b1c1e151816182100000900000000000300000000020700000000 *0004130d13160b0e110a08100a0817180d1a110d0f0a0e14070c02020c06050a1305070f09080e *0b0b0000020000050e090e2e2e341e2e47212b341014171622231014170c1617121e251817171c *212d1a18232c2c2e131d2100000203020409060917090714080900000500000300000300000000 *000000020502030a0100090601040a09081a191c2c2e1f595347292026040201231e1f2213101d *07090200011b1111180d0b0502001a0d0618130900000004000327211c6a4d26a49681a6a386a4 *9d8ea59f8e47433f00000400000000000000000000000000000000000000000000000000000000 *000000000300000300000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000000503110e070d *0907050a0900000000000000000000000000000000000000000200000106060b0a030208080505 *0a07040b060005050000000000000000001805023b242b00000000000000000100000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000203060b05020eabbabfbcc4c90002070c230e010d000a160c0d1c0d070e0307110400000000 *000000000000000000000000030209160f1f2f1a1d241a0c1a1000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000020000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000508090406080c0e07010501051710000000080e0600 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000001060404060208 *0b01040500010000060e0600000000000000000000000000000000000000000000000000000000 *000000000001080107040000000000000000000000000000000000000000000000000000000004 *010000000000000002010001000000000000000004010006040105020100000100030701070c07 *08050e0f041f1407160e031314080d140616170e190d0b0c0a081314031a160512130b160c0317 *150b181a0b11120611150c0002040b0b011d150a2c2317382e1a4d3e2887785e918c7f50472930 *281e2f38202e3a252c2a1e2d271b302c1c252824262b242c241721221a242620262a1e1e0f0b22 *1b19332c2b21262117150f1a160a1b1b0b1e1c12251f152821221f0c081d120c201d14101c0f1b *1e1a263126272b2a0000000000000000000a0a18050406000003070c100000002a2c3107000000 *00000800010000015a59547c715f0e050315100b03000020181331342a29282525271e1d1b1c37 *2d243d3c2e322b172f2311301e0e432a13412c18372a1b3a36253b352b2e2411271f0f2c17062a *291d271a0f241d0c251f1e1a1e152a2c192f3a2a3c3d262a221620221a3423167b5f47805c426a *503b7860447c795e624f39715e3f5c4731645443564b3f6d633f53482f5452426b664c6f634647 *39245645276d553da9a49f927a629889716d4f3058471c464027381709543b2047381d472e1b47 *331e4a442c3d331e23210e3413052d1f092516033b1c082a1e081e14061a15091f2513261b0a21 *1c0d22120a1a0c061908001e0c0a1d161116120f19100518160c1a09001d11081d10081a190c12 *160a100b06141107151809120d05070200040100030b09040607070c07030001040506020a0900 *010300000100000000000003030302010100000000000000000000000000000000000000000000 *0000000000000000030400020400140b080c04011606050c06061c12080000000000000000000a *0c031003011e12081a120b1508070a04060000000000000000000c070110080319080310090101 *0000010102060b070709010a09030000000000000200010e01010803030b040509090b06090715 *0c031f1d12291e0c1e180e1f1c1320170f1a171407010300000008120900000000000000000200 *0000110d0d121a0f211d11201b0b16180821181621171c00000001000006030800000100020700 *00000000001a190c140e031b09031807020e0a070d0a070c06040b120a05050202010008000011 *03000c03040000020000020b0b09352e2b353d321d2b281416161d251f0b0b12120b0f141d1b15 *150e253827171d13233230212323020000010000070406090a090c070000000000000000000000 *00000000000000010002050000020000000201011c12061c13092c25171d050306010232281e4f *321f4636320300002812062c11050d00001f1207301709000000030000281e0f645427a38d79a8 *947faca288a79e803a2c3600000300000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000004000000000000000006 *030009090000000000000000000000000000000000000000000000000006040503040105080300 *06000d0b020603010000000000000000000000001c0300251e2000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000001000206030fafbbbcbdc6c7040409030a100b060d09191609181100000300000000 *000000000000000000000002000418201a30381e313f221a1d0f00030200000000000000000100 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000006010005000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000500000301010f141608060602030000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000300040b0b1304010500000605000002030000 *00000606000f1306090b0900000000000000000000000000000000000000000000000000000000 *0000000000000000000a0801060200000000000000000000000000000000000000000000000000 *000000000000030201040305060109020004010000000000040202000402020305040409020405 *000205000315110e120c0a110f0b0a0c0718150e1a1c1d19130e1c0e080f120d16150f14110d18 *17171e190b16190912110b0a0700080303160904231711261c0d3f2c1c46312d86765e6f6d5543 *3022341e1334292331221625241d2f2a1d292a192825163127152d241d221c1a221818292b281e *15112818101f190b221c142015101914131e1c19231e141517161d22172421131e1504241e161c *1415271d213f35243336340a080b000000040000161e210901070800011914171b090d1c17201f *12171009091a1509121314645954a8a2958a735a675e5d4a4e4c536053273323232719221a0d1c *14122c211f323026362e322b2b2823262530342c37392b232b29271f182b2924201819291f211f *1d1d1d1a1e302e232c271f231c181e150f211a1431211e2b251f241d1e282d1e45312588887882 *725876674a7555497a73606c5d5269604a61483575654860594c5e46215d4932644e39765c4468 *5e515e4b365f5652625a46aa9e92926642967d615d402843311f2924251c09082623133924142b *2010212729231f1e1d1517160c0d1613130f09040b0a0604050507010304000000000007000004 *01060200000000000000000500000100000c00040700000400000000050000000000000600000b *00000a00000300000300000500000000020200000200000000000200000d000004000001000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000502040100051408091608060b07072214071e0c0201000004000006 *0000100409200d0a190902180b041711080f08090100000000000000011004091605021608021d *0e060200000203090a070b1303060900030000000000000200000400020800020d060700000000 *00001409091a0c0e19110918100a2117181a16181e1912070004010000100b1000000000000000 *00030000000808051e0c0620110e1a110d200b0d1a0b0a1e1b1700000400000004060900000006 *030600000000000018111022150b231810190e080d0b0b190d0b18070b13020810000812040417 *09021603000e0304000000020002090a0b2a261a1d1d201c242710110f1b1a2017101210121412 *181e100d151c1d2311090e27262a1c22240000000103030604070c050906060a05000500000000 *0000000000000000050402040100000000010000040000070001160b060e080908020009000029 *0e086d4e304428180c0000241711271b100601001310041005030000000c0000371d0f6a5f389d *917ca19684a49d79a396805d464607020a00000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000040300040100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000001000000000005000000000000 *0000080700000000000000000000000000000000000000020000000000000000140a020905060e *0107100e071e180b0f09010000000000000000000000000a00002a050e00000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000010000aeb9bbbcc4c7030006000000010708040a0800000000000000 *00000000020000010000000000001d241a3a472c4653332c2d1c16130903060600000000000000 *00000000000000000000000000010000000000000d121600000000010000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000003000001020c0b0001000109030e1d1006090500010000 *000000000000000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000200000000000000000000000002000000 *00000500000200000d0a0d1e1b1605050300000000000000000000000000000000000000000100 *000000000000000002070202000101000000000400000000000000000000000000000000000000 *0000000000000000000000000100070b0000000000000000000000000006020802020601020505 *0a080001010001030d05051d12091d0d04140904121208130d0e14120e1d130f120b0616120613 *120d0d090b16181d11110c19120f0001040404011d1f0d18150c1e1a0f32261d4a46367876576a *5c423a2d213a2f2a252a14272d182c1e152c231a2621222a2421373524322e172d322932342c33 *2e2f1c12141f1717211d1b28261d201c151e170f2427191e1d0c1f1711150d1115110e14110f18 *1e171a150c2a2a2025322821241c1a1d25221f2925222526241e2e31292730232a332f1e2d2532 *423f2f302f1e24212823222b2b2944413f959ca190979854514b21242e2123211c1e1f272d2521 *201c29291e2427272c2b293a3c2f3f2a22352420251e1924231f23251b211f192b281f2932262c *2e2d2f382921241f2d241c2c2b1f1e16152a25213330223841272b2e23403829372b1d4c433391 *8c727e795f6c5e44807750716c4e78725a6a6348706047755f4a695d5d6e54497e6a5c7b7c7e78 *6b5276664b6c5d4b71614c78645aa6a1a58c755984704d3f33153722112d23142e221c291f1d34 *241d251e1c3c3128372e1e2d27151a0a011e0c021b02021f07041709090900071a08041000000d *02001101000900010b00000d00010a00031a111415140e0c09060d060017110918100a1a120f1b *110f241b181c1c1c100b09171109100906170c07110e071203061106070e0e0d0f0a080f090612 *0c09150e08160b020c040405040304040504020803010000000006000004030106000002000004 *010203030605000a000003000000000000000000110b0811090912100b1d0c0c1b1c1400000101 *00000505021404072315081c180c18170f271f0e1a15120d08070903020401001a130a1e100a1c *140f1c0f0c0200030000020e09050e070508020300000000000004000204020509040815130900 *00000000000c140c26190c251e123c2d2737352727181a1e120904010000000006080b00000000 *00000000030000030810111f2016281c0f171208110603180f041b202000000000000004040d00 *00000303050000000000002519102d221b221a1722161113080a1d150b1207060a05010e050011 *03000a03020800020606070000000000000603032728210d1c170f141308060a01030802000907 *060a02000208040307121b0a120e272b2d17111a0000020000000200030a070306020000000000 *000000000000000000000004020a0606070000000000000908010d060218060512020500000000 *00003527123c25141e14070303011f0c101b05041200021d130a1f0b050000000200001e12075a *441aa49783aca08cada492a4998982635b13171d00000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000100050800010002000008 *07010c0f0602000000000000000000000000000200000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000001000002000006030009 *00000700000600010200000200000000000000000000000000000000000000000400000b0a0906 *0901030600030000000000040000000000000000000000000000130200362f2901000300000000 *000000000000000000000000000000000000000000000000000000000000000000000000000100 *0000000000000000000000000000000002b0bcbdbcc4c801000600000100030c02101400000400 *00000000010103040407080400040603071b2011333825232d141d2d230a150b01060900000000 *0000000002000000000000000000000000000000000000000000000000000002000000060f0900 *020800000000000000000006050103000000000000000000000000000000000000000000000000 *0000000000000000000000000000000001000000000000090c05010200000000030d0b00040000 *0106060d0700010000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000104 *02080701060c0e0514160a322d2a668182636568181b1700000300000200000000000000000000 *000000000000000000000000000600050900000000000000000000000000000000000000000000 *00010000030000000002000000000000000000000000000000000000000000000003030104010a *04071412110602020907081317161d231f130e0a16170f0f0e06130e101608081711060b0a0808 *090f120c0f0808100a0d0b1d1e141a140d000000040305140c091a1712332e242e2d1d4545326f *5d3f887e6c4f47363a3a2d23271e232726232620302e1f29241c1f1e17281e18302a262c2b2228 *27252d222725241e251a1824281e23221e29221b27201e2320171d222623231f211f1a11140d1d *190d181d131a1b182c26212b2c372c29262e2a281f1f171b2c261c23271d25202a2a1e2e17172e *3027545b504d554a585d4b5b6a615d676079766baeb4b6b5b6b58078713d31292728261d1e1630 *2919453f32252b251d20192d2f2a372f2b3d45452a3a38292b20322e28362e243b33273a342c36 *382a38332d28302b2d322b2c31263c372b372e273b382d3b362238261f23242227252226232244 *3b2e81776185805f736b636e4f34634c33796f576a67556c655583734e5f5f485c5d5669695e7d *665858554d4649406c6e5a76775a655034a097877b6042897159583a274630203f34233b2d1d48 *3e25483b263a201e3b38313e33292e261b3020172e20102a211d363021212518180d0a221a1721 *120c21120b201c1216160e14110b1e170d0e150b17140f1e212023231e1b0c161f120d1115180b *120e181a14241f1c220d14150c0f100a0b0c0a07160c0c121214140a0a10100e130e0b13060a12 *0d0f170b0716120b0b0e0e09070901050908040506020a02000204010109020400010500000500 *00000100060004030402060000000000000300000000000605051c0a06090807180c09210d0e00 *00020000010000011307091c100a21160a13170f24180e100c0c020000000000000001120e0a1c *130e2210081c12090a070608070f150d1317040709050800000100000003030700020404030712 *110d050002000000140b0c10100c18160f221c16222518221d12200c0a12070f0501050a0b170f *060c0710120b12150905071412092c2115241a15140f091e120d130f0a17181c02070606101110 *0d0f0103040f0c10080a0f05090c161d1d242e3121291e14130915080a140a0a1d140e110e0f14 *0f0e0e060b0b0a0a0501000601020a040a060404130d0a1c2125151113131213171d1f1412120b *0b0e261d1a150d0b211c1d15151d1c17182f363322291f090d0808050b00000007000105000200 *0005000002000003000000000000090303030003000000050105231d12422e2223231b1f312c04 *09080000000000000000000000000000002b1913180b070c0300160b031a09052007071e080828 *17136a522fa39b88a89d80aa9d709e917652424405000600000100000000000000000000000000 *000000000000000000000000000000000000000200000000000000000000000000000000000000 *01040d0f0c02040800000100000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000010000020000000c030000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000001000200000400 *000000000000000000000000000000000000000100000200000800000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000100000000000000000b *00040e06011a0d002819021617070c0b0500000000000000000000000000000000000000000105 *0001040300070002000004000105000000070a0600000000000105040913121c01000c00000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000006adbdbfbcc6ca00000200000000020000050609 *0c05060a010c0a030502000006010b160a1c21132b402029381516220f1c170a0b0f0908090700 *00000000000000000000000006080000010000000000000000000000000000000000000816010c *1e0b030e030300000d0b03000200000000000000000a0200000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000010180e18 *21060e0f000a0401110e0800000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000040309190f07 *110c1101013b1a0b4a4a457e766e9ea6a67e716d756d6749473622220d151100070a0100000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000000000000000000010000000000000000000003000005020202 *0000010004060d140404040505010b0b060d0b0c1b120b130e0813100d14160f1319140f100506 *09060e1214110b0c1c1508120d0b13120b121d1a000000000300060b062410092b1f1727221647 *311d87816d9493876e5d4138332818160e1a221d2927172320191d21222223242c31263338262d *40322f342633332d2a31232a251c261f1e3925202d2925261c1227241a22180d1d160a1d1d191a *221e1b16131d1c162b2927262f1d2229201e1a0f1618131a11160a1214171218383a2a2b322627 *2b193d382244381d362d263c2c1e3b3b2c36323253443aa0a4a4aaaead9f9a8b5f442d363a2d2d *37292625222b2b2a2a1f1a1f1e142129192935292933352b2c22292a213131312e3529352f1f28 *2e2032301d323526292618181c162a272029261e26241e222825262c1c303c332a241b2e291d39 *2a192f2e287781784b514239362c4c593d635c446a6046483b253c2c275157474c3e2b38292336 *37253c301a47381f3a2e2132271d4130236460529b897c7964469283675440204637223d341f41 *381f4340314839274930204d452f413b1e342c21362d183d382039201239261c2f21172b201625 *1a0d2e1e102b20091a130b1d1718161310170c0e1608061e20181e22181b0d061d180917160c1a *060117150a221109140d0f1e150e17120d11100c0c110b0c0b0a140b09110905150b0915120b0a *0e0f0f0c070e0b070a0b050a0405080a0504000004010200000101000300010300000000000000 *0000040000000000020000000000000000000000000000000000050200120b08150d06180c0715 *0805000001000000040000110d081e120821140a251a0a1f10091107080000000000000000000f *0d05140d04190e091813080203040202010d09081209030803020100000000000403030a02020d *080717161002020b000000101109201813291a122f211636221418180c1e140c04050a00000008 *07070000000000020700040000000e0b0813100a160f02131a0b221608211f0f1a1a1f07000000 *0101030c0a00000000000200000000000013160c1f1b131c1107150a03150c050c0c0709090105 *05030d07080e00000d03041d0a06080a090000050101080b0b0a2a28261e1e1a26231e24241f26 *2a2f191a171d342c1d32281e2a27172926141e1e1f20211b1e2104000400000a00000009030303 *00000000000000000000000000000000000503010603040000000607023a341d5a4e35190b051c *06041504060200020700010a02000904001905006467601b120c0f0200251507241304251a0a1e *1e0d27210f60501fa49986ac987c9e9381a69e8655404600000100000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000002000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000070106030300000000000000000000000000000000 *000000000000000000000000000000000000000000000000000002000006000005000000000000 *00000100000c00001c0a00100504030100090a0002000000000000000000000000000000000000 *00000100000403000a090000000001000003000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000001b1bdbcbdc5c600000502000603010908 *070f080709101d0f0d150d040d060d1712273923292d1a20251e2524182f2f1a2525110507040f *0d09132111040c0b0000020000050000000000000000000000000002000000020c130c07150f19 *150b1b270e111308111c0b020c090000000302010c130a0d150e0504070304040103020b120414 *17090e190906170c0e0e070e0b05161e0f0d1a0f07080400000000000000000000000000000000 *0000080003110b0500050000000700000100000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000005 *00021a090f8d8f927d8691989396b4bbc4b1b8c3b7bfccb1b5ba867f8e808b984d52421b251e0a *120f00000201000306050604030601080c0604070000000c170c02080000000000000100000000 *000000000200000401000000000000000000000000000104000211080803000209000503000000 *000000000000000405040a08020b06050b1a0f18180f130910160607061711081618141d161a0f *0a0e05030b11060b060506070504050c0a09080a10040b0d02060a00030b0b0d2628252c261d33 *2627624b366b714c978a6b857d6045423d1f1e242322282a24232d281f262c2122221634332732 *2c292d2c1f23242d3a393a4a40362d2721372e2035382f2433322e2d24342926221f221e1b1823 *1c1614160f26200e232b26282c281f1e2024212c1f1f280d0f180d0b0d0d0c0a20231f2f313321 *1f2722202533313921262c2323222c2723373d47362c255d58619ca1a0999a90858b8d4247462e *27242228251f1c171918141812131310150f0a0f1a1b1e1b1f2612111a1f161a0f110f10121508 *0f1200020d0d0b121a0e1a1314130e1a130a0c0b0a06080b0409110c0d231d1d21272924191933 *221c2f2e242219185232216f3b204a17106f3920602d20876a4b7a735a633a2598805397896a84 *6445836d568e8f89837e757963476756408685787a827ea4a6a2948872878b7e5341304434264e *312a4537294838254135294a4232423a364440333126262d1b25392b1f271f152425182b2c201b *1f16271e182e1e1a1c1013291d121f161b1d0a05150806090405181513211c18241a182b221a20 *0708241c16171714181716110f14130d121614170e0a0c130e0c12050b1d1c1a1d110f11090913 *0b151313171a141411050b13090c1306050a040604020b01000506010909000607010407000103 *02070000050000030000000000080000010000000000000000000900020c00011d1c1714140e16 *0a0913060c0000000000000000000c0a0b1e090e281c103a2a1c120a0709081000000201000002 *0002160708170809191413180a0907000501000511090810070911040b03000200000001010500 *00020607040f161604050b0000001e181623191326211d251f1f2e2b211e15131c13140b041500 *00061207130000000000000000010000000c0d0e171014121009230f0b1a090918070c15161800 *00010000040000040000000100070000010000011214121c181313100c0d070a1005050a000605 *01030c00050b00060a000504000106000007000202000504000713070c2f282427232b282e2d27 *2a2a1a1f2a11100d2326241b1f1f2a1e221f212a19141f1a1d20181f1e00000000000400000003 *00030600020000040000000000000000000000000304030707080000000b0209553521947c6c87 *653d9a8b706b48390f05033c1d17361a1413060f05000128190f130c070200001d0b031e100423 *130c1a0c1329100c583016998262998a6aa69b7daaa49050464c00000400000300000600000200 *000000000000000000000000000000000000000000000100000000000000000100000000000000 *000300000500000400000000000000000000000000000200000200000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000104020600000600000001000000000000000000 *000000000000000000000000000000000000000000000000000000000000000002000003000100 *00000000000000000a0200160a0401000100000007030309000200000100000000000000000000 *000002000003000303000505050d0000040a000000000400000000000000000000000000000000 *000200000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000001000001000002000000000000000001afbdbdbdc7c901000209150d0d *1f1004220d000300000c0c00000301080b1d2c1d4151311d28110d1e0a1a2414243314121a0b0b *09090f1914070d0500020000000000000000000000000000000000000000000406180b061b061a *290a1f391c193b1d0c2210000102000000000000000000000100000000000400050f010e0d041c *270e1c1e0a1b1a0a0d1704010f050b1b05010c040005030000000000050f1a1100000000000000 *07020003000a13080e1c0800000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000002021723317b95a9a7b6c4abb9cabac7d1bbc7d3b6c7d5bbc7d3a3a7ae73716c3c444c1d *242317251e1d211d151c1413220d0d1506011604000a0200000000000000010000000000000000 *000000000000000000000000000000000000000000000000000002020000030100050100020000 *000001000106010302000000000000030300050500020100020200000200000003000000000000 *000000020200000000000000000300000002000000000000020900000300030105110f0c170f15 *160a21221937271c443a2f474d3760684d34292118170e152118181d16231f15141c0f120f0b1b *1d1d1f17121f231c18221a35292339321e1b130c16190f0d090d0607080003030f0f0a221c1631 *3b2a1e1d0f0b090a0700020000020704071f1e1a1819120a080a0806050708061b1b1617181425 *2c251f1a141006062915082924154336214f41364d30206a472a6866638e816a998564a2937e76 *7564292a2325211a1914111c1a1c151b1f1b15102320112832221d201625232123252230291e13 *14111c2221141a131c231a272f2825282221211d29160f242e2431261f211d171e23192a2a2738 *3730302b2e2d30283b39298d8a859c9d9a9991857366477e775e706b3f564b3b756859898a8078 *6f5c8580768379676b56407e7a676f614e696d65665e52444b3c988c7e8c8273817e6e5241254e *3b224f4430413d233f3b273b2f203b2b224137263c33283233242b1f132c26172a170d2b2d1b11 *060805030a0b0c09251a141b1a0d201a1815150f0a0f0d0504090100031d161615150f1f170d27 *221c1c11081f1b0d1d160c271c171c1512160d160e0b0b16100a1207000b0707090e0d0d100f14 *0a0d13090b160c0a170d0611140d171615100e0a18111008090e090d150600050f1410080b0904 *0901040405000000000000000000000001000000000000000000000000181409171609130b061f *150f12080c0201070000000000000000000001001d1706251d0a1e1a0d080b0705060900000000 *0000000000080a03141407150d090f090c01000807010616110d11120505040000000000000000 *02040402030601090b0b0c0102040000001514081c1c091d261d35302e2f25222017141a140e00 *080500000004140f0000000000000000010000001006131d140a1210061215091017071616111a *141600000200000002010600000000010400000000000016150d1106041104030e03030b030301 *000003000014110e0f110a0804010b0802130c090d1010000007000106060808251d1a292a1f25 *2f272e2b2d202928171f1d2630262327212a2a291e2d2c131d1f1e211e14181c00000300000300 *000003040500000000000000000000000000000000000006040a0106070000000b09073e3d2588 *84739a8e7ba7a2996c52471604022a231e201f110c0d0400000010100c180d0b0300001c070126 *140422110221140c261d096a4c22a7a28da5987aaba49ba79e8c5d404100000100000000000000 *000000000000000000000000000000000000000000000000000000000000020100030600000200 *000000000000000000000000000000000100000000020100000000000000010600000200000000 *000100000000000000000000000000000000000000000100000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000002000001000102000000 *000000000001010002000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000010500000100050500000000000000000000000000 *000000000100000000000000000000000000000000000000000000000001000002000203000004 *00000100000801000000000300000000000500010101020300000e090300010000000000000000 *000000000005000106030007040001010001070001070600040400000000000400000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000002afbcbdbcc6ca17170f0b *100d0f0b0c131a11000008000002030404181c102a43264046281d1e151c1c131f221d130e1000 *00010402030103010000020000010000000000080000040000030000000000001115090003030b *0a071c1d130a050b00000000000000000000000000000000000000000000000000000002000418 *1f100908020201000000000000020b0e0e00000200000000000000000000000000000000000007 *0603101306181e0d23331e01040400000000000000000000000000000000000000000000000300 *000200000000000300000000000000000000000000000000000100000200000000000000000000 *00000e14190501032f3b4a697fa07897b0798da891aabca1b4c69a9cb4bdc6d3b8c5d6a8b6c65f *665f3e50541d160b1e160a273324413d382426161a1d0f1b140d01000a00000408060100000005 *020007090b0000000000050000000000000000000100000809030000000603021605040f060611 *05080e0808040a0c070805090b070a090810060d100b110d0d150f1014131914121c1c171e1d18 *1c14221e1a181a181c1920160b15171c251820231a201f14262813161a120c151d1c1e1a171316 *1a1e251d1a57553e8b8a829a9573948e769f9a94636d693a2f263d3c3a2522242a2b1f2b2f3251 *58544d4d405a666a5e60504d4e443a41414c3f2d3c2e2a2e2d213730282c2e272b261f2e2c2c3c *2e38362d31372722292b26231e10151e1c1a1b202021202b2c27271f341c181d161a180d1f1322 *2a222b362837332e3d3b29433b353b312a3d3a2c3b3b303e38332d392e4a3f34a4a7abaeb2afa5 *a095675034382a27212621231e171d1e181c1b17251d1d2b26262d2e1e2d2c272124201e252023 *201c1c1f1d1c1e1827251c32261f231b1c1f1e1a2929273a3d2b372e1e3d3936252221281d1e27 *232138312f2e2b2438312243383578706191948b86877b6b63507f6f637c67506d5d4b70584085 *6f645f4b3f79685b877b6a74644f7e71635349384c3f2f49372647352c90877a79674d70695048 *3f2743321f3d2f1c3b2a1d443b222e21192e241c3a382e3e3a2b363a30261f1b31251f2b231c28 *2a200508080000001a10091e1d1c211c1e1f1519241e1814140c150409160d091e1d1815141718 *171927293341322a2d1f2227120f1d1c172116130c0d0c1712142e1d172f2d2b1f1b1e12161c0e *0f161c160e16140d070a080b0a0e140c0f1f171b1d141c1b1d1d100e132b25290a05080504060b *0b0d0303070901050c01080c171d00000900000100000000000000000003000016090f18140e17 *141616110d23160a0400000000000000000000000b01051e11131e0d11171107100c0800000002 *00000000000100000901061d0f0d23130f0a0606000000030305110e0b190c0a110b0901000200 *0002040109080a0813120c11110d0400030000001e1d1d24241f28302a3b30222a272024201614 *120c050107000000100b0d000007000004000002000000080b0c1d15131d0f0c17050c180a0a10 *050a0f0d140000000000000002050000000101070000020000000d1217130b08170901150a0313 *04020e040614090c1f0a0a1d080c10080b19171112140d100e0b0000020000000a0b1032292a2a *26292534312d29222b2b261d20232326261e222e1e2a2f2d2d33141925241f261e1e2900000000 *000000000008010409040500000400000000000000000000000007050204060700000007080b2d *1e1863594987897898917e664f430b05002a262022191913050a0900001c131b14070912010226 *1c0e241e0c1d0b02200b07250b0a674123a7957eac9780a9936daaa4915c546107000a00000300 *000000000300000500000000000400000300000000000300000000000406050b030b0b00010000 *0001000204000105000002000000000000000004020a08090a0c07060714120e04000303000803 *000700000500000500000100000000000000000000000000000000000100000500000200000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000b000002000005 *0000130f07120d021d150508040a03000300000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000200000509000001000000000000000000 *000001000000000000000000000201070200000000000000000000000000000200000000000004 *00030400000300001e0a040f00020d06080401000600000200000b01000e020607000008000104 *00000306060c0802070709100304190d0d10090708030700000300000200000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0002000000000000000000000000000000000000000000000000000002000105adbbbebcc5ca01 *010200050c00000100030302030103070809150a0f1f11182814242b222d2d22120c060f140f09 *0d0d0000000008090000050000010000000000030000000000000000000100000000000b080300 *000000000000000100000000000000000000000000000000000000000000000000000000000000 *010001040001030000000000000000000000000100000000000000000000000000000000000001 *0000090b06101e06030d0310291900000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000009 *101c1e170e06091017201b0002011f3c452c332b1d2222312632474d4f666c85abbccf93b3c870 *95b1526867576a863052670a1f26233f402e537e37587517201a0002000f1a1313181110070500 *0000131717121e260000000000000000000203000100000603040804040000000204040a0c0108 *0c0214130301030000020304070803080f0d0a12071118080f0d0c120813180b0c130b060e090e *171d0d0c0f0d16140a17130c201a1515060309050d090d0e130c11141414120d161a1d1d1e2414 *1f2015180b1d1f161d1c194f4c476a7671735f56918c8243403b1d231d1a1e181d221c2b2e2021 *2b21222c28212a252d2e2e262e2d1f241c4539204542303e3a25342c222e2f28372f27312d282b *3327273322212716292d1f21362721291c1c100d1b16131f1f1d141d13161a0d08150f13120e13 *1a1c221c172a26253c2f243a3a263e4134303b3137372130392d393e3b3b3631404242a9a399ae *aba7a8a9a29fa7a3393a2c181c161e2b21201b13191614201d1a1d26221d241725281b20211a21 *28232c2923231f1b2a2a1a262d22282a1a1a2217181d1d27282630302d2e2e21322f2d1c130d21 *1d1914291e222f272c2d1e362921373c2e65513b6b5847827e7178705b888a796e6542655d3d87 *80635c51456474657e72617b76606a5f466a6b5b4c4c355e6451443d236169617e7a6d7d6d4666 *4f3c41372626281c18211a2b2018392f273d2a173323163624223f3a262221111e1e10241e0f15 *130a28251800000000000012121023231a181f14262f1f3028171f1b0e3f302b25272b24292b25 *1d1f1b141928221875828a4e46492d2f26181b1d171313262622212020231d152e1f1613140e13 *161b0c151818130e1712110f0805070807091616131a0f14120e18160f2f2a126668612823220c *050807070c070a0f000101040804152015070805000000000000000000000000000000070c0611 *0d051f1c0c19120a1610081a170b1e170d100b0d13150a1412052417081d150c1d150b150b050d *00000100000000000000000f0b00170f031c13050c05040000000300000200020709070d0f0500 *000000000000010000020504050b131416151a101a161615190f1f1d1c282d2139362429211c15 *14150a0b08000000000000000301000000000000000003000000000000050a0a190c0c170b040a *0b080407000405080000000000000100010000000000050000010000000309021412091308010a *07030602010c0401070502120a050d08050707080801020c08020405020000000000040a080e30 *2e3b1f1e1f20271d20201d16241b1117181b1e1e172020111d1b161f150b1c1a1c25281a192600 *00000000000000000103030502000000000000000000000000000000000402030b050506010015 *10091719112b241b29201745433b3d2c210f01012e1f14291809191206010000100d0e07040604 *01001f1608351f122a1c0c231c0830260e79673ba5a384b1a697a9a393a79d9755371e110a1302 *0407010100000000000005000004000001000000000100070c0f000708000c0804080500020300 *0205060606030104090704090507020403000406030b09080d101e1c194f502e95969a58494341 *2924162134050a0b00050500010300000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000000000150e0124 *1f060c0a040c08021013011e1b0802000100000300000000000001030000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000300000000000000000000010003030101010000000000000100000000000204020b *0c020c09030000000000000001001108000403000601000200000c030013020103000108050105 *0600090400080b020a1508030606090603060f10090f0900000000000000000000000000000000 *000000000000000000000000000000000000000000020000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000000000201b1bdbfbb *c5c804050907040800000000000003000214110e000008090b1119261e29432f0e0d110e0e1d10 *111326211d05000400000301000300000100000000000000000000000000000100000400000100 *000000000000000302010700000000000000000000000000000000000000000000000000000103 *00030500070800040d080a0c030000000000000000000003000402000000000000000400000300 *00000f1a0c17211d20311d03090909080707040d00000400050200000000000000000000000100 *000000000001000000000402040602000000000000000000000000000000000000000400000300 *00011d16145975770a132113324401020918203762777c3e4349303a40463431818c9999b2c982 *99af4857844a5e7a31465e0d1b34202020141e1e030c0e00040900000000000704061809203706 *121a00040a0a1a1d01050300000001000000000100000502000506040d1b383f00050500010004 *02010a0309150e0b15080b08040e05080e050e0e050a0d00091716141c13080e19151d10181c1d *1f210b1718140c150a111520181c14101b11121b0c0b0c080c170f0d09120d0e11171811131514 *13170b0c0e1e1813221f212f382f413f326a6256918c827b83804a48351d151a15070a1f131416 *191a1a17111d221e181d1f271e1e231f20231611413c31403e41353027342a1f2a282420211f18 *1816171c171b19151c181a1f161922252b231e161c1d191a1010201e1a1b1a1818141a23111e1e *202b1c12121b150f2c3125271f1a2b2d2a3a36253d2d2b2d2f2e2a27253842472f2e25423926a1 *a5a1b4aca4aca398756d56453d3c281d1c1d1c110d1614181516231c171e1b1b221c172828291f *191e23222325211c22241e1617171922251f1f1e1d1c191e1b2021292620201f1f241e2a272014 *1414261f22222416372b1e31242423222337242161654c75675f5f5a49756d546e634f767c6c3f *3a3169716d4744345c4c408173517b6d576a59414240353e2e25413122403226504742736c626e *675861564440341e2727232227352e2324281c1c2f201b322a26453f3634383224241e2111142e *1a181911172d1e2216100d03020112170f3d27223e292243201e3c1f1d3b372744422f4a2f2b37 *201e3a1f1c391713482a286b73857f92a551453a1c12161a181a1e16184131292b211b371f1d50 *392f371b17220c0e16060b180a12281d1632231d37201731181a1f0607220b0a5b3e396d657846 *34381a111006010605000302000305000111121d291a1606000700000000000000000000000610 *0a0e1e12101c10161d16161e1e19301712271f1a23100825100d3220152b180e29161c231d141c *140f1c1b16140e090c09081a0e13160a0e140a0d2511120e060c0d04050800010c06060e0a070a *01050000040000040c00080c030b120c061d160f1f1e19201c1c25160d251b19382e223b3a2a23 *292811131404040700000300000405010a0d000a04000303000100000000000008080c1a0f0810 *070a10040910010b02000401000400000300000100000000000001010505000b04000312030c13 *0709110301110706170d070602040600000700030500010700040f040502030400000000000000 *0203201e2313181d11151e1c1d2c0c14160d161608151a081215080c121011170609152420260d *0d1e0000000000000000000000000500000000000000000000030000000000000d0b0d0b0d0a11 *1207100d0c0d080b20181820181e2827252716110a010039261b62442c2e110c000001160d1b05 *00050000001508051f13051c110514070427120b604d319597898b918d969a83a5a1924e464209 *060b02000800000809050b02000a0000070002070001060510170d1119150c0f110b0f1d121912 *050c171d232d25246c553c505a5c2a293112182e0d070d16121117131a393230767467a3acb3b5 *c0cca39aa8583d422a151b27171b1e172117050b00000500000400000300000500000100000800 *000500000700000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000100000000000000000000000000000000000008000025 *06020d09090e07030e04001c170302020001020000000100000104000400000205000300000000 *000000000000000000000000000000000000000000000000000000000000020501010700000200 *0000000000000001030003000001000000030004090d060d0b040d08090900080a000304050604 *03040807030606070000000700010000011006040901030800030d0306230a04240e030a020404 *00010700060400000000000000000000000a0d0703060803080b00000701000100000000000000 *000000000000000000000000000000000000000000000000000000000000000200000000000000 *0000000000000000000000000000000000000000000000000001000001000001000002000007b1 *bdc0bcc6ca0f201f0e262000070901070504020113170c070a080c110a081e1c05161100000000 *000000000002000000000000000000000200000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000100b020c03020d05030c080100000000000000000000000000000000000000000002 *03020001000e0f041d230c0a0902040f02040804000000030401081b0d00000000000000000000 *000000000000000006050407070409090200000001000000000000000000000000000000000005 *030003060205192d0e2536020606000000000000141217465b744f62775f727880829693b0c67c *9bb0728ca58a9fb31a1f1e0a04092a2320191f1a00000603040a180c0f151b1500000000000000 *000000000000000000000000000000000000000004000003060107070103050202030600010200 *0000000001080300020402030402070703040605060d1002040705050c050b150e14131116160e *0f0a14110f0c08060c0a070e0d0f08090d07070707070513130b0906070d15140a0806080b0d0a *0c1015141b0d13141b17131e19193730233d3b2b6d5f4f878d7b51442f313a282a2e2717150a1c *1e121712071e1d132a2c29252d2c282d2a3131284d473c282112312d1f212519282d29171e201b *18170c0f140d101214150c22251e24251b2125161a190f130b0b221a14201f1d181e1e201e1d15 *160a161c0c171f1222231d313f3d3b372c37362a2b2e2432291837311e273d2f2f31282020212c *27259fa49bb6b6b5a8aaa37064442b3126332a1b1c201b18150f201e201c1e2124242022271c1e *21191e21131e211c161e142217102d2a22201b15181c1811180e0c13101e24151c211c201d1621 *23271719171613171115131a241f25221f1e27212e2b244539296343305d4c36595743524a3677 *6e514c3b2a655432624a2f63644c4e46376346355f4a3b675440625940382f20473e2854462e64 *5f5b5d5442494632473726312a1e0c090727271c2123182423142a241c302826332925634837a2 *9ea0aba2a09f866969806d272b1c19120d29392c546969606c595f68605b645f393a2437382681 *8d8b8a847b8c8b929c8c8995858098908c9ca4ab969da6775e4b49282045402a545c5730262343 *382746463d5c645c4b534741392f3b332b4d3a2d888685a8b6c2a4a5aca6a7a9a9a6aab1b9c4a6 *b6c76f67675a4e4a40383c544d46313530303b472e40413f555f363c411c23230c0f0b020b0e00 *000007060610100c11140f14110a1b16141914131e1a13231e141b150a181c0f242219281e1026 *1a0c231f0c1512041c160a1b15131e170e1e1510231c0d26140a1b0d05160c0a1010100e10140c *0e0e0a040400000100000009090616171015170b1618131c191416140d1f1c0e23291f423d293a *38313f393027282027281b211f1d26181722271a1d16131e140a1c101626201d1a1d1c10090711 *0c070800010b0d0a15170a1614181c15121a17151618170f170f0a0a02100d0c14110c18100c0f *0c08221b15180d0614100b160d08070204000000040000030003090403180e0b02010400000000 *00000000000b121601020a00000209090d0000000000000000030000000000020000010000011b *111708151800000000000000000000000000000000000000000000000000000000000003020407 *01030400020603040a050317150a211d1417120d10090104000026271c4e3c2624120e00000020 *1c120a07020000000000000000000000000200000a0000120200250c023f100349210c5f381e41 *3a27161418050206080b07040a0907100a0c1412100b0e130b0e1d1918231a143c31263e352864 *5f4d58432e82715eafb4b8a7aebe6d6c822840591a2d2d415857454f3a5c687494adb4b3c2ccbe *cad6c1cbd8bcc9d6b8becdadb3bd9ca1aa9f9fa27d8ea216151e070b1600000600000800000300 *020300020001010000000000030601020306070900000600000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000a00041f06022d *1807130a000507000f0e022717071c17090b0c0600000000000000000000000001000100000000 *000000000000000000000300000000000000000000000000000000000200000000000102000100 *00000200000000000000000000000002080000000000000306060100000200000103010902020b *02000303010000000000000600000c04030200000408011012020b02070a06061f160c14140b04 *070204040000000000000000000000000000000000000400000200000000000000000000000000 *000000000000000000000000000000000000000000000000000003010002000006050700000700 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0101b1bec0bcc6ca0d1d140000070300030003060306100516170000060000040f1c0c08070306 *000000000000000000000000000000000200000000000000000000000000000000000000000000 *000100000000000000000000000000000000000000000000000000000000000000000000000000 *000000000000000000000001000305030304000407010000000000000000000000000000000000 *00000000000000010a09051e1d0e15130c04060304090600000000000002090700090c00000000 *000200000000000302040502060606080200000000000100000100030300000000000000000000 *000002010106010100000000000100000008080c000000020a0d2b31362c3a4c586f7f80a0bf4f *718c42586a62768e44687d241e236d7d928299af8d9ba88896a499acbb7d95a74c5958242f260b *131306111c0000020000000000000000000000000000000000000000000000000a050417130e09 *050100000000000002030704060600000300010503020601000302070301000409090b24231f13 *15190b13130d111d080c14030408050a0f05090b06060a04060d090b140e121517212101080b01 *040509090a0a050b151414171d19171a1d1b1c1a252a264d5b5f7a76656a736037281f201f1d17 *14100b0a0b1619161c1e1b1d2728282b2326232026211b252111131810121b1c141c1e131b201f *1d1a14180e0b070816181b16161a24211d22261e1e17130b0d0d0a110f0c080b17171915130f12 *1314030c0d080c170811121e212529272023201720211a13171823261d292631050d141a1a1e1f *1e2022231e837865a89d959d917a8f836241372d1a19181d1e1b18150d1a19111b1b16201a171b *1c1e1b1b19191b1a0d0f111d222621271e282b25191f171c140b2123222d28262a201d24161421 *201e13201a1417181b1416141617242821292320221e1e262b2d6174795265603830315d594f6f *5f497b786c656661423e2a131d1f4243335d5e485c54495e5e5026211d0e1009191b1a2a2d2b4c *4436504b3d626454433524403d31312c282f26202e28222b26212f3432392f293c3b2443372077 *5c49b8b8acbec0c290928d161d220a0b0b0a0c080b292e0c08061e21171b1e142422142e2c1537 *3725626964abbbc9b4c3d2b5c2cfaebcce9aadc58595ab97aabf84829382757082818a4437352d *211e3a31303c2625271b1534212036211d755f3ba3a5a8b1c2d1b5c4d5b2c6d6b3c2d4b7c6d7b5 *c5d4b1c2d0a2b1c571809c5066734e5867827e814f3b3838221e2c211d1c150f311d133a281413 *050100000000000000010608040a040509060608120c080b06090a06091a0a03120a020d070b16 *1d1b171b180c0d06180a06150d052010081e150d1e1f17201b122521122a201b1e12121c0d0915 *090813090408040500000100000103040d0a0b12160f08211f171e1a1622201d2f271f1f281e3f *3b273b3e332b35301f1413160608150d09281814201912110d0c0b070a1f1b0d2627191e1b1808 *0805130402140d091008090302040800000b00001303051609070e08051305021208060c040715 *0e0a231e15181c16180e08140f0c151312150b0a0e06060707030e0c0a06000102000001000305 *01030300030400000a02020702001203020907011207020d0b0c0b0605140e0c1e0a0116060511 *060b130d0b1c0b0c19110e19110a07010204000002000000000000000000000000000000000009 *07060c080b0b06040804030604030f0609210e070b040301000000000020140929180e0e050800 *0000110b0e0701060300030200041a171516100a1a1002221c135f4f399c9379a49a959d998e93 *96925b58561f2f2d19191d1e161d332d21382f2168624e8478617a6c5f6d5d5493886d968c84a2 *a397b3bfccb5bec8bcc7d4bbc9d7b6c0ce98aabc2f46630f121c10171e2e3a2d4c646a8a8d94b9 *c5d4bfcad7beccd8bec9dabacad9bbc8d7b9c0ceacbbcc869db1272c422f23213833411607080d *050505040800000800010500040c0005080c140606130a00000100000000000000000000000000 *00000000000000000000000000000000000000000000000000000000010000000000000a01000d *05000a03000b03071c10091410090102050204020d100300000000000000000000000200000300 *000201000300000000000000000000000000000000000000000003000600000200000000000003 *00070200000000000000000000000000010000000000000000000000000200010e040809000406 *080a0506060000000000000000000000010500001102020d030210080a0904080f030003010000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *0000000000000000000000000000000000000000000000000000000000000001070804180d0407 *0d0f00000000000000000000000400000300000000000000000000000000000000000000000000 *0000000206afbdc0bbc6c7080a0b0815100e1a09000002000402000000000000040100080a070e *110d17211501000100000009000004070001090500000000000000000407080200040000000000 *000000000000000000000000000000000000000000000000000000000000000000000000000000 *00000200010300010302000200000a05000000000905011809050d06030c040303010004040007 *00000b09000400000a05011b25101012040000000403000406001013050800000c100a00000000 *01050000000000000002000d08000e05000f0c010e0a000303000b0a040306030207000c090109 *09050c02000c05030d07000000020000020000020103000000000000000f3350212c23819aaf6b *9baf223e4d3f4e5d7b99a36e817f758381a8b6c3a4b1c0a0b6c599b0c399a8b67b86974564654a *5c783026203d43443e3c28050200000000000002000000080c0502000000000000000006050113 *0d040b0c050903030301001009001809041e16080d0b0422180e483c1d120b0a453f2a221a0d13 *1010140d0c18150e140c08080705040a0805070817140a1312041208060c01051413160e151320 *150b25130716100a140b061a130d12090a181a0f2d26231c1b1a45231e896a436960426563373a *38252a1f1832180e40271e422c1a3625192e2a252c2d20302d1b3e341d281f142d2119231a1523 *1e1522231f221f165a4c446b5b466458482c282921201c2421141d1e182c4447252d20342b1c18 *14061d1c153c221940281714110d121a1018241c20241c212119151d181f1d1e2c231e25231e39 *2d1e362622292f267c7d67a29d8e807e6a7460438d846a3a32171c1e1822241a7079746f7f7a26 *251c2620191b1411180d0c00090516334d21201b21211d1716121f231d1f1b13423922393b2b20 *2a201f1a151f1f1720201402020604090a182016232b252b2c3128292621170b0d01022116094f *5b57444d4844505b565448283a36171d15303228464c433b31344b453b283a2e0e1406231c1121 *2019261a0f3b322240372938392a363b2c2c2b27271d182120132c231a2d2923393b2f40413035 *2523686057b9bbbbbcbab86a675c211e0f1d271d18170a1529320d170f201e0c22291c232b1237 *39184b441e9aa6a4b2c5d3b5c6d8b6c5d6b7c7d6abb2c39aa9bca3a3a5929aa0a4aab7a8b0c09a *a2af7565565135224c381d887456937857886d4badb4bab2c2d1b0c3d7aec3d4b1c3d6afc3d5b0 *c3d3b1c2d2adc2d4a8bbcc9baab873595a816d55acb8c0a7b8c68287896b594e717777868c8890 *9a9c6d808d0c07090000000000000000000000000000000000000000000202030000000203000b *0b050b0b091006020c000012080b1a0a0617120b1d17091d1d0b1d1a152a1a0d1d14091e150717 *0c0714120917120a0c07040000000000000402011210080e160a1d211b181718141d192a241b2d *2b203c312a423c273c3931231d171d10051c130f19130e1d1d0c1d110227180724180d22150c17 *110917141229271c2c2a1d271c0a20160d180901140905170703160d0b1f180c26191121190620 *180c1c1106221d1026281c1d1a161f180c1611101107061309031607000c030405020409080602 *0406080f0c0b090508080d1c211e10100b24190f1a160d21221d282a232e261f261d111e171315 *1a0e2d2118362d212c272120170e17110c00030300000000000000000000000000000000000000 *00000b08020c0d070b06081810072d1a0d4d311530301d3b4630110c0500000000000001000000 *000000000021110f0e08060000000a01010f0a09160906160907221207513c1a9a8b76a2998e9e *978b93816f8578644b48435f482b775e3e908061aeb2aeb4c1cbbbc7d2b6c1cfb3c1c6bbc5d0bb *c7d3bdc8d3c3cbd6bfcad8bdc9d9bcc9d6bbc8d6b2bbc76450504138254833226f58458c8b84b3 *bdbebcc8d3c1c9d7bfccd8c0cdd9bfcbdac1c8d9bfc9d8b1bccb8d959e535c64767e7e5b697667 *452880643b4f4735181b1d05070a070b0c0709021616090b060302050806040000000000000000 *000000000000000000000000000000000000000000000000000000000000000000000003050201 *00000400001005001c04011e150a05050100000002010001030300000000000000000000000003 *030000030101000100000000000100000400000102000007020004010002000201000000000009 *00000a000004000000000000000000000000000000000000000000010000000001000009000108 *04040003050100000000000000000000000500000a03001205020800010f040008020005000008 *000001000000000000000000000000000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000000000000000000000000000001413052a *3b2e142145070002140c0d13090103000000000000000000000000000000000000000000000000 *0000000000000200b2bebfbcc6c70415160b2017091109080f1001020800000000000000000402 *0a0a02080909140d0d100e09141a04090e000003000002000107030a0900030707080902030700 *010500000000000000000000000000000100000400000000000100000400000100000000000001 *00010000000002010000020000010502060a05020905020803020f0302201a070f0a07100b0706 *00050100040f1304040b03101d0d0c0f0602010303080a1c1e130a0b0b172b1e060e0a00000000 *0000000105000000000002000007180b091e1a0a0b0c00110e0400000000010000000109090708 *0b08090d0c02010200000000000000000000000100000500030f00000600000600010000040b0f *2441151a250d141e374a653b4553586a866e8caa99b0c7a4abb7aabacbacbdcca4b0c09aabb93b *4b4836435140585e37424c4c789022201708050d0000000000040a111203010602020100010004 *04080203040b0a040809060909040a0e0b0c18131e251a0b0f0b201e2866675a1615167b817a37 *382c0d1316211a197f78593a39231a1716080c0d090e0f1d15167045344b493b2c27281a1a172a *1d138878568b877e68553c28282d988b6f786d48242e2225231a938373b0b3b0acb1b18f81696c *64404842347e7567b1bdc8bac4cbb8c2ca5f695827211b1a1d1f28272356331d4b251b755b5254 *61532a22212d343324222299a4b5b6c6d0a8b8c23c3c3b2b2d1e312d252f372a2a352a1f1f1e32 *26200c12171f1b1d694b4e807a561a141418100e222022171613080e0a08100d141f1e1218223a *413f4a42333f41361a1e1a8b877d9b9c969ca7b47b888f575e57323627373632353920708f9c68 *7e751b26281a1d201c1f213c3b2a14140c1e1f191c1d201b2324121210212926201e16332c223d *4336272d2f21212a1521262629270100010505082a23171b1a13211c1a2014163b312015100929 *1712592d1e59321a673d20634f3b07090c030004573b1e644e33664e2f6b4d2a2d2e190d130b45 *3b2880836c7b7e5c787563272e282c25232e2b2424201c221c1d2e252130342e382e252d2c2438 *35292f1f19613b27bab7afbbb7b54c473c37404314171919130c14150d171c0f251f0e2b2a1927 *312526311e2f3a2c748b93b4c5d3b9c6d8b6c7d8b1c6d6b6c8d6aabbcea1aac4afbeceaebdccb5 *c1d1b3c2cdb4c2ccb0b6baaaabadb2c1d1b8c6d6b5c3d3b6c5d7b4c4d5afc0d3aac0d2aabfd4a5 *bcd3a8bdd1a4b9cca3bad1a2bbcea2bccfa6b7caa6bdccaabfd2a4bbcda2b7ca9aaec697a7bc93 *b0c696a9c06481a00d11161210140c0c0e1609090c040403040000000000000000000000000000 *000003000100000400020200010101040806090704070507060a070c0f070f101316121a201413 *130f100c0a130f0b15110e17110c0000020000010609091314100c150d0f1a1c181a1b1614161c *221e352c233c352a3a3821272b2720201e10150c1d170f100c0c140f0d1e0f0e1d15131c1b0e21 *150817110918120b1513091c1f161b1d10251e1b211e0e1d1808221e0e161d1417211a27231a1c *1a1514151415121316110a17100c19170f18170c110e0b16110d0f0307140b0b1009050d080305 *07050106090004060308090d0d13201d16171d1c1e1e1c20180a1c242020201815181315121213 *0b0a160c0c231e1b2b302a343e2a12131310070903040400000000000000000400000100000000 *01000000000f090b0e0c070e06090e0f113f36214144420e09070300000600000803020c000009 *01010800020a00004c41320a0d0c0000000900011d110a14080910090920120c4f301787858590 *7f689e8d79a0938da7aaa7ada9aaaeb5c2a8aaaeb3b6c5bec8d1bcc9d3bbc7d9b4c6d7bbc7d6ba *c6d9bbc7d7bac8d9c1ccd9bfc9dabec8d6bec9d8bbc9d8b7c7d79081869b999a8d8582adb2c3b4 *bec4bdcad7bbcad8becbd8bfcbdabdcbd9bfcbdcbecadcbdc8d9b7c2d298a1b28c89819fa9b195 *97a9acb2b6b7c4cca1a6b958372a3d2a1e1d15131e0e0f35252005080a120f0d0d080c00000800 *000100000000000000000000000000000000000000000000000200000000000000000000000000 *00000200020602050b02031d140a21120b02000000000000000000000000000000000000000000 *0003080c0701000507040401000100000100000402000500000309000112090508020404000009 *000008010308050602000300000000000003000000000000000000000100000100000300000004 *00010901020400020000040000000000000000010000000c06021607050b070306050400010400 *000208040600000100000000000000000000000000000000000000000000000000000000000000 *000000000000000000000000000000000000000000000002030300000000000000000000000217 *151729222402000b0001030e1e2c2642610d132012233600000400000000000000000000000000 *0000000000000001040406b1bec0bcc7c807030316170910150a0d090600000200000000000004 *01060815091721150201000000020000040000000000000b0002201d0f11121c05070701040609 *080200000000000000000000000000000000000000000000000200000200000000000000000000 *0000000000000000000000000000020000040000040000120300160100220d04361f0b2b140626 *1d0b1810060a0800070802080a03202b100d0c0905000200000002030b05030000000002000007 *00000200000400000000000801001608011d1a031a12020b1009120c0700000105040507000004 *010000010000000006000000000000000000000001020000000002000005000044485b11161b00 *000000000214211d354d6a343a433c3c467288985a5c638da4be9dacc3b1bfd1b0c3d3b0c0d19c *b5c92a2626474e604b57532a485f444f440d0d1700000000000000000000000000000000000004 *00000000000000000100040000000000000000000000000203071a100720191e5a695b160d0f7a *837d352819070102291d199c9e953b2c14261b0a0813190a091031130da3a8a15f5f5738443f03 *0d0e302120aaaebba4b7c35f7881302826a7a4a5a3a4a1201d1d281a17a8aab9bbcbdab1c0c791 *95923e31303e3a358c838ebbc8d9bcc9d9b9c8d761615c28110f220a0837201aabb5c1b8c6d1b6 *c5d3666763311d20281e1e3a2725a6aab9bcc9d6adbdc843322a2217151f19172c211d474b472a *1f1a2b1f1c22100a18060853423f93917d1c100a160d0a3e1b135d4b3e08030206070f12090a16 *0c06665d5b413b2c3f3e2f3a221a7c6e5d948e86859ca958524d9376508870527a63424244283d *4b5276909a6a5f425f5b4c665540615f3c16221c11171043554b535f5e4c58575660552e322433 *261d413a28575d51575f5550544d4754430800000b020542423a4951444e5842435e511f2c1f09 *04001e1b0f52533c5d51306c5d3a423f2e0a05030a0b0a3739263f45324544322c383808090604 *0704191816382c23211b180f0c0d120e0a312417262018161618241c1b241b142e2317342a1e35 *3a283a2b212f221c6d5548b9bbbcbdc0bc62422731261f202923212216231e1836220f363c1e4b *462d2c2818201d0f493a21a5a29fb8c7d5b8c6d9bac6d7bac7d7b2c6d8b1c2d3b1bacbb7c6d6be *cad8c1cedbc0cbd9becadabbc8d8bac8d7bdcbdabecbdbb9c8d6b6c6d7b6c3d3b3c2d6adc0d5aa *bccea5b9d1a0b5cda1b5cba0b4cba3b6cda1b5cdaab9cca6bbcea7bccba3b6cd9db3cb96b1c98e *acc792abc58da9c3607c9a090c1208070a0a0508140f090c0407060714090b140c040c0909080c *0c0b06060405000008030009030203010006000000000000000000000000000000000001000202 *00020000000100070200030203030308060000020000000000020b060c0c07090608090b060814 *130f17150d3a2c1d253028261e1b16171d100b0c040006070104000103010000120f07060a0c02 *000100000005010004000105000002000000000000000002000000000101000002000008010403 *070409090205070702000203020103010001000102010503000000000000000000000000000000 *00000000000000000000030000000000000b0a0809110e0b090911060702000005070907060607 *00000700000602040508080805050b151c00000302000000000000000000000000000000000000 *00000000000000000507090607010a030308020725180d362a1d241715321d153825140e020423 *17071d06020701030000002f1a0a0f0503000000060001150908170c070f020422140c53411e99 *86719e8c75a18e81998c6dadadacb7bfcbb8c0cfbac1d1bbbfd0bbc6d3bbc4d3b9c8d5b5c4d5b7 *c7d1b9c4d3b8c4d1bcc3d3b7c5d5b7c6d2b8c6d3b9c7d5bdc9d7bac7d6b8c3d1b7c4d3b9c3cfb7 *c3d1bcc6d3c0c7d5bdc9d8becad7bfc7d5bfc8d6c2cad9c0c7d7bbc7d4b7c2d1aeb6c6aeb3c4b1 *bbc9b3b6c8bcbec9bdc6d3bac4d1bbc1ceb5b8c7a8a4aa9a8e829698a4725f53765e545963622c *222403000500000100000000000000000000000000000000000000000000000000000000000000 *0000000000100000200301190a081d0e0501000001000000000005000009000107000000000000 *0000000200090b0e0a01030100050502040f00030800060800000000000600001208010f080606 *00031704050e000008000006000000000000000000000000000000000000000000000004000003 *000002030005020402000101000007040206000006000103000002000104000104010304000300 *00000000010000000000000000000000000000000000000000000000000a000000000000000000 *000500000000000000000000000000000000000000000000000000000000000000000000000000 *00000a0501413c240e13400401020a020c0000090000000e03010a070c00000200000000000000 *0000000000000000000000000203b1bbbfbdc6c825371f243227213220111c1300000300000100 *00010001030816121c2e20050606000105000405020705121c15040a13435e764d513d171b1105 *0004090f1f01040500000000000000000000000000000000000000000000000000000000000000 *0000030706000000010000000000000000040301070802140f061b1d0f2c1f0d352112372c1c1f *1a070503010104050000010300020a171000080500000000000000000002000000000000000000 *00000003000105010200000609030803040e0b061a1708241d0b0c0e06000501000302070b0707 *0608060206020003160904000100000000000000000000010200081416060f133c555a456c7d3f *3f3d485d520914160007161412111d161844596f3e454479858a8993a09ba7b7b2c6d5afc3d395 *a7bd6f878e332b46555855667f931c211a00000500000400000000000000000300010000000000 *000000000000000000020303000100000005060602050500030003000212190d1b18173d3c3444 *2f2159594e6b50394b3a21343a3c6c7c7025200b1511081a1c1612130d332c239ba5a42a2b273a *36201f1f1e363d3f899ea569889c4d413442362da0a4a6b3c4cc70645b575145b5b6c3bdcbddae *c0c7abaaa8aca99c999e8dabb4bebdccdcbdccdbbdccd8a2a5a0818279817a73847e7ab6c3cdbc *ccdbbccbd9a7a9a89389818a8a86928b7ab0bac3bbcddab8c7d0948e9184816f91897d84847a85 *9b9f322a2e37423b595f466d5034534c486883872f3b332f2e214d4d51586f610d130d211e1d43 *4b48404740565e522d2c264a413b6b5e56898a85a5b1ae535c534456655b80922230311d222760 *72796c7f885851458999a1889799556a741e282908110e0a0f0b0a12100c150e060305050c0804 *0804181d1a272a1e271a1340382617150d00030509160f00000027322d28372f2b392b04060200 *0002000405000108110b05221f0923201345290d3a270e090a09151e102d3c323a585c03090d18 *191115110a1e1d182f251a1817110c080b0906091f1d1a2f2c2b343b343b3a362e2b27262b292f *2720262e2924211d2921185b4431bbb8aec2beb585724f434b35273421282f201b2321171a142d *3e3b48452f484f48484840534a36aebdcbb6c7d8bac9dbbdcddbbdccd7bcc9dbbfcbdac1ccdbc1 *ccdbc6d1ddc9d3e0cad3dec8d4dfc2cfddbfccdac0cfdfc1cedfbeceddbdccdab7cadbb4c6daaf *c5d7abbdd4a2bbcfa0b8ce9db5caa0b8cc9eb7cd9db5c998b6cda0b6c9a1b5cb9ab2cc9bb4cb92 *acc792afc793afc696aec96a8aa51513160b0a0a070b0c08090d0c0a0e060908080c080f0f0d09 *090d130d08201e1f1f221813150c101008061c1319180f0f110c0f0c0a1b13090c100e0705040c *0a0707060504000002000405000402000000000000000000000000000000000000000400000001 *00020202030601020d000101000005020501000403000102000004000008020105000008050305 *02051004040a02030804030603020f03030705061206020505040a07010a050304030204050305 *030109070606040202040004060504030501020403050001020203020606030704000603010102 *020000000000000000000000000000000000000002000000000000000001000000000000000000 *000000000000000001000100000000000003000004000001000000000000000000000000000000 *0000000000000000000000000000020000040000030000170400592506804d25987842896f4a23 *110f30251e23160f09050a000000261308140b0e0100001409032b1e15160907100a0920201541 *3e1c9e9a8da49c95a6a08ba29285a4a69cb6c1ceb2c3d3b4c1d0b8c1d0bac4cfb6c4d4b3c6d4b5 *c3d3b1c4d3b7c3d5b9c3d3b6c5d2b5c3d5b5c3d5b6c0d1b6c4d4b4c4d2b5c5d6b6c4d4b5c5d6b9 *c7d7bac7d8bcc9d5bfc8d3becad8bccad7beccd7bdcadabeccd9c2cddac2ccdcc3cbd9c1c9d6bd *cad8c3ccdbbcc7d6bec9dac2cdd8c3c9d4bfcbd6c3cbd6c1ccd8bdc6d1bbc7d0bbc5d2b6bbc9ae *afb6b6bcc79b92985b443e2f1d1d03091600000600000400000400000000000000000000000300 *000100000000000202010201030306070204010000000002000005040305080801030607040500 *0000000000050c080f1a1b0200000000030300000a02030d040801000003000008000007030513 *070608010306040504000600000300000000000000000000000000000000000000000000010200 *00050200030a0408030003000000000000000203000203000002000000090a0108090400000200 *01010708050302010000000000000000000000000000000000000000000c161715232a2b2d2e04 *030600000000000000000000000000000000000000000000000000000000000000000000000000 *000000000008120b161f2701071b18170b162d460000020000001319131c365602000707071600 *0000000000000000000000000000000607b1bec0bbc6c9080d0c04081003090900000200000000 *000000000000000206070e1a292228271a120b0a0a151a0a101410141c101a20171420252c390b *0c1304060f0000060100010406030b0d0b00000000000000000000000000000000000000000000 *0000000000000004000000000000000002121410140b0a1f0f012218011a0c021f15070a060100 *000100000000000000000000000000000000000001000001000000000000000100000207030007 *0a020b02030b00000c04071e130d180d06140b060e130b151d090b140700000100000001000008 *00010500000500000901000803020b0a030a090806000300010706102611242807080d0b152112 *15181c325826405e1c24200000044e648a6f8986768f914d604c869eb3b1becfb6c6d5b7c7d8ab *c0cfa4b6c35a6e782626302b3b5048688d16182602000000000000000000010a0b202700000000 *02000000010d05090b03030304020403010000000000010905010c0d05141308210c092b0a0544 *1d0f502b1d595146a0aaae758681231a16281d0d251e0d0f13080a0a0a17170f23252142352d34 *2710432c1843433a3d3c344b3b2b7b5842aaabb1b4babab7c4cbbbcadabbc7cebbc5cebccad8be *cedeb9c9d9bbc9d4bdcad3c0cbd3beccd8c2d0ddc1cfddc1cedcbeccdabecbd6bbcbd6bccbd8bc *cdddbeceddc1ceddbecdd9bdcbd7b8c9d7bacad8bbccd9bccddcbecddcbac7d7bccbd8bdcad6b8 *c8d29b9e964033253a3631443e369699967275644c6570241d171d263425251d27392d323b1d31 *361c293b2527231b331b152c25184b473b6057417e604ab2c3cb8e9ea9262e40202e332020192c *4035333f4257757e728a9797a9b66f8e9c2c27295e5e431b110c12130b0c13080f161808020506 *04040803050405091c1b190a0c0f2a2b2b00000000070d000205000005000105000000040b0101 *01020004050405050303040e120e351e14492817613b174a2c13160d09332d173f69740b121005 *0a0d2141451624232521144337213d4130575d5260604156625e27302d10141d26252b3b3b3f26 *17192b2f3235382935281d35271f6d4e3cbdbbbfc3c6c8aeaeb15c62401717112f271e1f1a0c28 *1e172f201a4a3b26a39181a9a4a5aab6b5b6c7d4bdcbd9c0ceddc2cedec4cddfccd3e2d3d8e2d4 *dbe5d0d8e1d1d9e3cfd9e4ced8e2ccd4e1c6d0dfc6cddcc6ceddc5d0dfbccedbb9cadbb1c5d8aa *c1d8aec5d8b0c2d5a0b9d1a0b8cc9fb5cba1b6cd9cb1c996b0c797b0cb99b1cc9bb5ce95b1cb99 *b1cb98aec895acc592adc68aaac77892af1111160d0f0f0c0d090d100a140d0b0d090c09060809 *05050c07091a171527222013161416110c100c0c151016141215140f0c0b080a080c0b120f0c0b *110d130d081b150d0b1010100c0a110a0c130f0f120e0e04060b000000050f120b0c1111100e16 *191b252724202528222e383d4141363036383539393834160f0e080306140c0d25252118110f18 *121014100c1516141e1014171612130a0e13090807010911110c18120e1d19191e1f1f1b10121c *191a171218130e100b0a0e090805080904110d0b140e100d040609070b07070602040706040706 *0200000004020604020000000001000002000002000004181d1a1214151311161e18182c231d2c *29231a150f1214121a1b161e171718120c121411140d15120c151c1d1d00000100000000000000 *00000000000000000000000100000400030b090c0e0b0b13100d242218777657938f809b94927a *615c170100291d190d0e07090409000000271f122514170800001003031e1b0d080d130400071c *0d0b41321fa0967fa09680a794809c968ca4a497adbacbaabbceb0bfcfb0bfd1aec1ceb3c0cfad *c0d1aebfd4aebbccabbcd1aab9cba8bbcfacbccbadbbccb1bbcdacbccdaabdcfa9bccfa9bccdb5 *c1d2bac4d2bac7d4bbc8d6bfc7d5c0cad8bfc8d6bdc7d6bec8d8bfcbdac1ccdbc2ccd8c4ccd9c4 *ccd8c6cddcc5d0dcc6cfdac7cedbc4cedcc6cedbc5ced8c6cddac6ccdac3ccd8c3cbdbc3cbd8c7 *ced9c7ced8c9d0d9c8cbd5c1c7cbaca8b97e5948774e321f0b1308111400000c00000502050505 *030c0000010000000000000000010000030300070800010b01001a09021a0f09080b0400010500 *0001000002070805181f121417100100000f0a05120a0c05040908060909020c0800030c020308 *00000b00010a010a00000000000000000001000003000300000000000001000000000000000500 *000600000000000308060609080104000000000000000001000303000200000105000207030606 *000108020216100b15150e00000000000000000000000000000003010400000100000000000008 *091a02052800000000000200000000000000000000000000000000000000000000000000000000 *000000000007000000000007050400000100000000000800000700000003070d00000200000003 *1a33000007000002000000000001000000010905b2bec0bdc7c704100c00000000000000000000 *000000000000000200000210170a262c15647b836b776c3b33285460527580733b2e322e2b2f01 *01040000020000000000000000000000000000010100010e040506000001010000000000000000 *00000404060000030000000000000300000000000a04011a10021d14040a090504010206090907 *0000000000000000000000000000000000000000060100060c040000000000000000000300000d *0703080502161c1b1d140a0e130c1d181307060303060005050200000000000001000100000000 *010005070002020000000000000000000000000000000000000000000004080f010e1400020806 *080b0e1a1307050405120d0a1c0d061411405164291e2032373d3827259cafc1b0c3d2b6c8d3b3 *c5d3a4c0d0a4bcce60534b31383a2b272d1813161e11071a12051a1c0d01010100000006040906 *02000600000002020506050000000002010300000200000000000001010202000a100312110747 *4f416268575459451919152a271f3020151d140725200c2518071f1d10272a1b35250f281f1727 *230f4238254c442d3f2b1765645f82726ab4bfc8bbc7d6bbcddbbdcdddbbcddabeceddbbcedcbb *cedcbecfddbecddebeceddbecedebdcfddc0ccddc0cfddc1d1dec2cfdfc1d0debfceddbdcedcbc *cedcbccedcbccddcbcceddbeceddbecfdcbdcedcbeccdbc0cedbbbcdddbccddbbacbdbbccedcbd *cfddbbcedcaebec75c5d503b3d31635650968b656d573d3b52452530210816132d2e27211c0e30 *321e3a5848223a25171e1004040504090d09141a131a23574b3f6b91a840595e2b3a2f1923183c *45325a6a5d4344373e4a35828a877b99b06e879a8d9da582a2b52531300a1816040c0a0f100812 *140916210c0b1306030402000000000000221a1500000000000005140500020000000000000000 *0000010406131f101b201d0d08031316083820084d391e4c301d40321724201731443d2c301b0b *1f0f041005030c0617180628211a3d362232291e343026393a2c2d2a2328241c10151118212f37 *3d48424b574a493e342f2a32291e2d231b775b45bdbabac2c3bf8b8689282821211c142d201e3a *392a3b3f34634f35aca08bc7cfd7c9d2ddc6d1dbbfccdcc3cddac4cfddcad2dfcdd7dfd3dde4d3 *dde3d3dee5d3dee7d1dbe3d1d9e2d0d8e2d0d9e3cdd6e0c5d1ddc2cfdec3cddebacadab5c7daab *c2d5aac0d2a8c1d5a6bfd298b9cda2b7cda3b6c99db3cc9ab3cb9db1c897b1cb97b4cb93aeca9b *b4cc97b1cc9ab1c999b3ca97adc992adc97899b108080b0b0a090c0a0d09080a140c0f04080e09 *0c070a0303060b0714170c13150b0b0703060903100d0d0a0a0c0e0c09110f040e0705180e0c15 *120a0d06050e060b110d0d070a0a0c0a070b0d090c100f0f0b0b02000000000000000004040902 *03070d0a0c0c0b0f080a070b0a033f3f244e4c343b39342027261413141e211e1f211c232f2d1e *1e1a090d0a060f0e0b120f130a1310110d120704060305080803111c18171d1d262b1c0e181812 *18140713100a0e0a1213111718180c191107090a090a0915150f17150e100e0c0e110b01010308 *0306000002000000010001000000000000000000000000000000071413121e180f1c18171f211a *232323363f20231b171214191817130d0b1c0d0e14170c191c1416171401101300000000000200 *00000000000000000000000000000000000402000001010200010d080b180b044e452c5a412565 *614b54493c1704022113111a12081c100c0000001d1f1321180f0704010b0c06160f0809060713 *0904221a104c3f1b9d9774a49064a19988a39a8d9da8a4a4b6c6a7b8cca4b8c89fb4c7a4b2c8a7 *b6cca6bac9a3b6cba4b3c6a4b7c99eb4c8a2b7cca9b9caa5b4c9a6b5cba9bacbaab9ceacbbccac *b9caafc0d0b0beceb0c1d1b6c3ceb6c6d4b8c8d6b9c7d2bbc4d1b6c5d2b9c6d4bac8d8bbc8d7be *c9d8bfccdbc2cedbc1ceddc5cbd9c1c9d8c1cbd8c0cbdabdcbd9c2ced6c2ced8c3cedbc4cbdbc6 *ccdac9d0dac6d1dbc6cedbc9d0dac6cfdbc2ccd6bdc9d2b3b8c79c9ca4271c1e0a03080c02040c *090802010706050b1511160000000000000000000000000001000303000a070303020000000402 *0000000100000305050601081814000003000001181d1336313f120a0d03010506000301030501 *000100000100000005030800000100000000000000000000000000000003000104010300000100 *000000000000010000000003040406040500000003000005030318131802000000000006030107 *0102090b08040204191a1a232112171212000000010000211807181a2801000200000000000000 *00000000000e121003030c00000000000000000000000000000007000000000000000000000000 *00000000000000004a4f400e0b1e0a0a0e00000a00000000000000000000000000000000000000 *0000000000000000000000000000000000000000000d0bb4bfc2bec6c801000700000000000000 *00000000000000040000020000090b151d50668f94abbf9bb1c898a5bca1b1c898a2af7584a28c *a2aa21151a261e2322201506040a02060a01000100000e394b6861819f5b6a720e110a00000100 *000500000c00000702011000000800000200010f01040005000811000100000000000000000000 *000000000000000000000000000000000000000000000003000505000600000405010502000108 *00010f0b050b05051014101c1c0f060307161f280e0a0806000005000002000000000000000000 *00000000000000000000000303020505040705040000000000000000010000040002060d090607 *00050b0f1101000002040901020407070e1c1718141d321c1b242c25234a5b69a3b9cc9bb2c9a9 *bfd2abbed18ca4bc7797b17e95a73a322c493b372c25283445531e1e1d00000700000727373214 *170e090c050901040404060000020a03060a0a09070c0b0808020b07040402040b000004010405 *0202140c0e251b1519130a0a03000809051e160d211c0e1910080f0a0318140826251022150c2d *2a1d453020505062434d494a636b697068abbac9b9c9ddbdcedebeceddc5ceddc3cddac1cdddbb *cdddc1cde0c2cfdebecddfc3cce0becedec1cfe0c3cdddbecee1c0cfdfbdcedfc0cedfbfcee0bd *cddebfcdddbcccddbcccdebccfdebdceddbdcddebdcde0becfe0c0ccdebeceddbecfddbdceddb8 *ceddbdcedebbccdcbac6d6635f643224185f574f49402a352f31536770333e2d2a2e1d465c5144 *3d2538433c2a361e1e282a1e2d260c0b140000060000000000043e2a266c857a42433979808a5c *5d54393c354350457f8d878483799ab3c49eafbc67798d65778b5a718537413d2427230a0b0715 *1812212618262d1b13100d02000600000000000018120b00000400000500000300000200000100 *0000000001030203191713243c430102080b0a0717140c2c23161d1e102a36242a3e303d473225 *392d0912100f120c1620131b200a28221b46392530242020171d282422322c2c3930220c0e1100 *000039353d474855494e532a22244141403d323266492ebdb9b5c3bfc3775f4c3b3b252e3b2d4b *412c322d2251432d967d5dc7ccd6cdd6e0ccd7e2c6d3e0c3d1dfc8d3e0ccd9e3d3dbe2d2dde4d3 *dce5d8dde5d6dee5d4dee6d2dce5d1dce6d1dce4d2dce3d1dae4cdd4e2c4d1e2c3cee1bfcddeb8 *c9dbacc0d5a4bdd2a3bacea4b9d3a2b6ceaabad0a2b8cd9cb7cea0b8d0a2b4cf9fb6cc9bb7cc9d *b1cba1b2cd9bb1cb94acc998b1ca91afc999afcb7899b412141c120a0a1e140f221f20160b0e0a *030b0d090e11080617160d231b1a1107070a08070d0b0a070a1209080a0604090805060e0b0814 *1913150e090c0e100a0b0f0e0913151011140f1015120e06090704000400000000000201000501 *010d01010a0e0e170d14150b1511080605402e1f8f7c5f48392b1e1821090d122019151f1d1b11 *12130300070000000000000b080b18131c17141709101602060905000009080b1b110a0a0b1305 *010b00010504060c090a0d1009040d06090c080a0401050a071009050c08080c100c0f07080805 *0404080a0f01000000000006050405090c00000600000500000204000014100a0c0d0e0802090c *0a131c1a16151318211d211e1c131c110f1f16151a0c0d18151a0b0a0f0c0a1206000a04060a00 *000000000000000000000000000000000000000504040c13100d110b0b160e1114070525211d21 *1b192d26203127231402053530243a311b1b1c1703000029201e1b14180100011002031111120b *09090f070729110b4f301aa5957ba49782a48f71a29391a0a5a9a2b3bd9aafc69bb0c6a0b3c69d *aec49cafc59fb1c4a0b2c59daec4a2aec9a1b3c5a0b4c7a5b4c9a8b4c8a7b5caa6b6cba8b8cca7 *b7cea8b9ccadbcccafbfcdaebbcfafbfd1b1c1d0b5c0cdb9c2d2b4c1d4b5bfd2b3c1d3bac3d2b8 *c3d3b5c5d6b7c7d7bac7d8bbc5d6bcc6d6bec8d7bec9d9bec7d6bec6d5bcc6d7bdccdbbec9d8c0 *cadac6ccdbc6cddcc7cedbc8d0ddc9d0dfc7d1dec5cedbc1cadbbfc6d7a5afc378637843312c45 *485543343d51575f6a6877818fa60c0b1700000000000000000003040803040704050602050500 *02010000000200000500020f090a060809000000000000363b401a18182b1f260a0a080600030c *010600000301000200000103000600000300000000000301000100000200000000000000000000 *00000000000000000000050200020400000a00020400020803040801090602090701050100020e *0804090104080605050000180b0b1e221c0810270000010000000a0e0d0c0f3400000000000600 *00000000000800005f533d22131d000000000000000000000000000000000000000006060b0e05 *00001d2a470000020300060b151c00000400000000000000000000000000000000000000000000 *0000000002000317000002000000000000000000000000010a08b2bec0bcc6ca00070c00000600 *00030000030001060000040100040100060a0e1765809e9fb1c9a1b2ca9cb0c696b0c8a1b5c7a4 *bacba4b3c58ca0b77d8f9c2a3e3e00030a00010403020b1d1d234f6c8b54789d4f6b8e26212d01 *020b04051211101929404d04060b00000000000000000000000000000000000000000000000000 *00000000000000000000000000000000000000000000020200000a000405000102060204000300 *000202000105020203040200030805080e060506080d070c0906010302080a0b04050500000000 *00000000000000000000010000020007101d0d0709080a00000000000002000006090300020400 *0607060c0e1222230c0608211a10120b0411140e1d2f330d0e0e130f0d171513242f315365885d *6e829ab1c4a2aec1a3abbb504e4a3c485e435163556d88313b312130410a131505070900000203 *090f0e18290a11150000000000000b0904090804080b080b0b080507070b0b0819130a1a100611 *0b010d0b021a0e031d18082829161c170b0b05040a0708101811233430221b09362a1d3931211a *1c0f251e0f28221d312f2d443c2932291d49585392a2bbb5c6d8b8cadebbcedcbfd1e0bbcddfbb *ccdebdcddec1cedebdd1e2bdcedcbbcedfbdd1dfbfcfe1bbcedfbed0e1bed1dfbdcedfbfd0ddbe *d0debccedfbdd1e0bcd0e0bccee0bed0ddbdd0ddbbceddc1d0e1bccfdfbdcfe0becfdfbecedfbe *cfdec1d1dfbecfdfbdccdcbcccda9faab10d0d150407100705085e6162a4b1b3664f2e655c439b *a8aa6e84853b433d2f2f27323b2f312a1c1f140d0c040a1203052e2d364f3e374f493d7c939db1 *c5cea9bac295abb3a6aea9aebfcaaabdd190a3b8a2b9cca3b7c39cadb394aab3363e3720272c0d *1d171d211d1d2a20323e252b34241c18150003030000000d070803040100000000000317180d00 *010500000000010402030305120d111509050b080a12130a1a140d171a1320171a29232b3f361e *2b2c0d120c121e141022191d2922242d1e362a214a42323b2f23241d17292e2e2a2c21393c3411 *1215030001484d4d4a575b554e4f2e29212c33232c2723513c24bab8b6c1c5c698968d675f4a5a *4e36706450938e819c8976b5c3ccc3d1ddc4d3dfc3d1e1c5d2e0c2d2e0c3d3e0c9d7e3cedae4cf *dbe3cfdbe4ccdce3cedde5ccdae3cad8e3c9d7e3cbd8e3c8d5e2c1d2e0c2d4e2c2d1e0c2d0e0c0 *cee0bfccdcb2c5d8a8bfd3aabcd1a5bcd0a7bdd0a2bcd0a7bacfa5b9d1a7bad3a2b6cda3bacf9b *b6d096b3cc9db3cc95b1cc97afca97b1cb9aafc88fb1c97c9fb9161823090d0c12110d32352912 *0c0f170908170d0a352e2616191a1718161d1d1b3a322b17171719100f1e19131506050d0a0d07 *0809040907080b070e0c08100f090d05090a0408080c130a0c0d0d0f150f090b0b060d00000600 *0306010000010002040506130a0a0c0c0c0f160f453a23958e7d816c5c3735230f0a0715181c11 *161a08090c0000040000040000000302051005070306060602040002070a0b0b151f1e07100d07 *0b08060508020004020004030407070a0c03010b020005000001080c0616171d120c0c07070b15 *14190f0e141411160000050201090700070100000000000000000000020000020b0b1206081006 *0507070605100c060d10040c16130f100d1d161b13151810171c0c080b1209091814180b060508 *0b0e0000040000000000000000000000040100000401000a0b061518140a0c111d1c1c110d0b20 *1f1a1c16101b170e120b060c03002b1f163d32262d2525000006170e0b1e130d0200000a02000b *0a0319120a1418171414174c3b24a099879f9a819d917e94866d9e9d9d9caec39babc397aec69d *aec79aadc6a0b2c99eb2c69eaec69caec8a1b2c9a5b5cba5b4c9a2b5c6a5b7caa8b7cba5b9cba7 *b7cdaab8ceadb9cbacbcceacbaccafbdceadbbcdafbbccb2c1cdb5c0ccacbbceaebed0aabed1b2 *c3d4aec1d1acbdcfb1bdccb3c3d1b5c1d2b8c4d0bac5d4b9c7d8b5c3d3b6c6d5b7c6d4bac7d3b6 *c6d4b9c3d5bbc7d8bfc8d3bbc8d9bdcad9c2cddcc2ccd9bfcbd8bbcadbb9c7d6b9c4d6abb7cd92 *92a39fa3aaa9a9a9a5afbab3becc9dacc3312d5102000600040902040b000204000000070b0a00 *070900000200000309090915151608070901040402030002060a3c464a50434c76768215162208 *111705051400030303050509020508070b01000100000100000000000000000000000000010300 *0000000000000001000000020005060405080507080a060e090605030207010206070602020500 *0003050506130808160c070e0504190c071c120d030000030f1000051400000700000143452b50 *5474160d0c0200020a01004e5a4e4e658c0101110000000000000000000500000b040700000000 *0000000000010001505c3d737c770b051602000600000500000000000000000000000000000200 *000000000000000000000b000001000000000000000000000000041812b3bec2bcc6cb00000500 *000200000100000900000100000503000e10101a4a4f4f869db199adc190a5bb708096828c9da0 *b1c9a5b5cc9fb4cb9eaec28092aa3132342321242a191430282c537ba0334548213c6731496c4e *6d892747630c22340c112c01092900000500000000000000000000000000000000000300000200 *00020000000000000000000000000000000000000000000000030000050302060d06040200010a *060308000600000705000402000000000000000300000508080d0500070302040c0b0506040807 *00020000000000000000000000030300020902040e01030a040400000000000000000000000000 *030a070f0f0207110000010c12171c293c1c160e0f1c1b37393546708d282221211e1c4d402e5c *6a79655a5b718dad7097bb78a0bd2332430913182e373d131e2d060716100a0e00000000000000 *000000000808112100030b0000000000010600040c03011104011409070a0503140607130a080d *070717100d1511050f110a161b0d0d070a0d03090809060d070717080a0f0b07201d142d220c2b *281d291f10271c1d40301d634c46897a69858c855d4b488a8e97b5c3d5bdcadbbacbddbccbdcbe *cbdbbbcbdfbccbdeb8cbe0bacde2bbccddc0cddfbdcde0bccddfbfcedfbccedfbbcfe1b8cee1bc *cee0becfe1bdcee0bbcce0bbcbddbdcddfbdcedebdcee1c0cee0c0cfe1c0cddfbeccdcbfccdfbe *cde0bdcddebbccdebbccdebbcedfbdcddca4b5c11f111316070b170b11655e65b4c3d6b5c7d4bb *c9d5b1c6d38e87856c868d6969537c8e96718192667e9139323e576b6e879aaaaebecca6aead89 *a1b8abbdceb8cadba9b9c7b5c9d9b6c8d5b4c6d5a4b8cda2b9cea8c1d2acc2d5a4b5c8899bac67 *6a5b1b1b1c111c160b0d10162122252420273a2c13080b0200030a0b0d00000000000000020503 *1118000205000000090809090c0f0b120a1f2517211a0f1a1f2211171012170f0913100a0b0c0b *171d09130a393a2a363e221c1d0c1e2a1f2f2d1f2b2d25565a4935352b22231a3028212a231b2f *322c221a1f625957818797798196514d502e202239291d3d332c593929b6b5b3bcbdbfb7b4b7b3 *b3b8b1b0a6b5bdc3bbcbd8bdcbdabdcddebfcfddbbcfe3bdcee2c3d2e1bdcfe1c1d1dec4cfe0c6 *d3e2c6d6e3c3d0e1c4d0e1c3d1e2c1cfe1c2d0debfd0dec2d1e0c0ceddbccee0bccddfbdccdebc *ccdebccbdfbbcbdcb3c5d7afc3d6aec2d7aabed4a9bcd2a7bcd3a5bdd2a6bbd3a7bbd0a4b8cfa6 *b9d2a1b9d199b1d199b1cd98b4ce98b1cc95b3ca9bb4cd94aecb798daa17121c090910170d0f4b *403c120d1503010512060d433e351919181c1d192017144c444223121210071312060847342239 *28251103070e01030d040810060c0a030c0e010b0804080100040c03050d060a0a0e0f05090e00 *000300000600000305010413070c241d1612160f17140b3e261a978d79989298655e531f160f0d *0b0d110a1c00000300000000000000000403010806060d010207040f0d00000203060c09070c06 *020b05040c03000a0202060c0e0a101d1b13131a181715080a1400000000000008050d201d1d0c *1111140e140f0b1811061512050e02010904000805020600000000000000000006000408000211 *050407030a0b0f0d191a171e11180a0c0b07040819151609050e05020a03000207080d090c1806 *010700040b0000000000000000000000000000000000000000030a090a1110130e07101210150a *08100c090a1406050802090200050300002d251d3f231b271918000002201413170e140200020b *05031e13061e120e1b170c1d0c12553921979189a3906aa49c82a2988ca2a2a09aaac499adc49c *aac69dabc49dabc3a4b0c5a3b1c89ab1c79bb1caa2b4cba3afc6a4b3c7a6b6c9a4b3c9a7b5cba9 *b7ccacb9cbafb8ccaeb6c9aebbc9aab7ccadbbceb0baccb2bed1b1bed0acbdccadbed0adb9cdaa *b8cca8b8cdabb7ceabb8cdaabbcfa7bacfafbdcfaebbcbb3bdceb3bdd1acb9ceacb9ccabbcd1aa *bcd1adb9cdabbed3b1bfd2afbdd1b4c3d4b1c3d3b1c0d3b0c1d5b2c1d7b1bed1b1c0d1a9bbcea8 *b6cba6aec0abb6c9b0bfcbb1c1d3b1c2d4afbccd9298b0220f1b02030900010400000508070a0a *0814030003050100100d0c0f17150f1c160619190001090001080c0b0c464c36828f915c6e8d0e *0d1709020c130d1d04010d03000d1a16220a000600000000000000000100000000000000000000 *0003000000000000000000000001000001050305050109150f192f38413334421f14110804090b *0407030004190d08180507060007030007171d170c131d06010400000000000000000000000000 *000a00000c01000109000503000034211c0502110000020000000000010000004f471d70819921 *213500000200000a18060a7780726895b122263d04092602001500000000000005010100000300 *0004000001000002000000000000000000000000000000000005000000031216b3bdc2bec5c900 *00040000000000000000010c0203220c07405b6f41587825363c29395752688c6f778376717092 *a4ba98afc5a0b2c6a6b9caa6b4c98ea3ab403c312531434c608a4c5f701f1c25202430080a1329 *291f494f40453d3f28364a1d242403020400000000000000000000000000000000000100000000 *00000000000000000000000000000000000100000300000000000700010000000100000100000a *03010c0100020605070b030e08061709070200000203050303040601000305011d1405160d0813 *05000e0604070000030000050000100700100a01130e03251d0c23140c04000000000000000000 *00030e0a04050501000000020002202e364253697081825c6a5776858c505842231f113b33225d *606a8799a49aacbba3afb9968f863426221b13121e1408130e13423a305b5d5f353e3816221e06 *0b090005080403040806040b04000f00001c09001a11071d0a041a09031c16081a10071411091e *1c10161508150f0709050015100410140b1e140d27271c1e22121616091615041c190a1d180b35 *2415281d102621143e301d5d6a71788a9790a6bd8ea5b0746b67aab1c1bbcadbc1cddebdcddebd *cbdcbdcddcbcceddc1cedcbeceddbfd0e0bfcfdebdcfdfbccfdfbdcfdcc0cedcbfcfdebdcee0bf *cee0bdceddc0cedebed0e1bcd0dfbccfdebecedfc0cddebecedcc1cfdfbfd1e0bdcedfbdceddbd *cfdfc1cedec1cedcbdd0ddbecfddbecddebcccdeb5c5d2a49985a49c81a5a28db4b6b1bbcddcbb *ccdbbdcedbb4c5d8aaaebd838d89a6b0c39eaeb1668c9d7391a259808b6a604c8b8f9da7b3c4bb *cbd8b2bbbdb8c8d5becddbb7c3cebdcbd9bfceddbbcadca6acb9a5abb2aab8c9aebac79bb0c297 *a6b06f8ca71d30362428251916120e1517232c32232c222a3624171d1503101300000100000000 *00000000000304010c0e08152015111a14151a14313b2a1f29202728292f3a282c38291d2c190a *0a05040a090c100d242a1e232f262b2d163038194b4a2d3d3b29564430403726373023413d3231 *36362a2921171b213044525f77874e6e7f44525c2b2621302b282d241f604437b8b2aec5c3c4c4 *c9d3becedbbdcddac1d1dcbdd0dec2d1e2bccfe0c0d2dfc1d0ddc1d1ddc0d3dfbfcfdebdcfdfc1 *cedfc2cfe0c1d1dec6d1dfc7d1e1c4d3e1c1d2e0bdcedebecfdebed1e0c0d0e0c0cfe0bfcddcbc *cdddbdcddeb7cbdabacbdcb6c7d9b6c6d8b5c5d5b3c3d6b1c1d3afbbd1a7bbd0a3bbd1a7bdd4a8 *bbd2a4bad2a0bbd0a2b5cca2b6d19bb5cfa1b6cc98b2cd97b1cb9bb2c998b0c96a6c742217132b *1e186d74691f1b1f08040a160a07544a3a1e1d0f151709271c15725e3e23100f08040815090c50 *4d3d38362e100a0c0e06062a1f14695b4d2f24250802041a0d0a291a171e1911110b0808080806 *00030300000201020c0a090606071118191d20210b171323211b423d249886779b9386908c8235 *221a10060515141012110c1d080326090617060407080606090c070b0b0400040f0a071212080b *06040803080b070e1006021b0b0512120c02030606070e04060a0402022113071e0c040a020601 *0006020005161012241c1a3229201c151103000200000000000000000000000400000005030314 *1309090606080303070407100a0f23252b150d0908090b0a1d250d100e0c070b0f02031206071b *16130a03020f090f060005010001000000000000000000000000000000120f0914160c080b0c0c *0e0b0c110c260c074330192b130907000000000000000202000302000001000025120c271a0918 *0602130a051d1a111e1e1c130c0c190f05432a159a917ca09a8ba4a08ea09d9ba6a5ac9bacc2a0 *aec69cb0c5a0b2c6a4b0c6a4b3c59eb0c7a2b1c7a8b5c7a0b3cba0b4caa5b6caabbbcba8b8c8a8 *b6ceaabaceacb7cbadb7c9adbcceabbbcdaebbccaebbccabbcceaab9ccaabbcdaabacba6b8cba8 *bccca3b6caa1b2c8a4b6cba8b5c9a6b6cba8b4c9a5b5cba6b4c9a8bcd1a9bac9a4b6cca3b4c6a0 *b4c79bb2c9a0b2caa1b6c9a2b2c8a4b3c9a4b4c5a1b1c7a2b4caa5b3c9a6b5c8a5b6cca6b6cba0 *b3c9a2b6c99fb1c29cafc4a7b4caaab8cba8bcd0a9bbcea7b4c99495a43323221613111317131d *17121a1a1610191c02010504040c050911060802030102070103070200201c123f41455664776b *698c2e21214a42333f4850212123150c10140a0f0a0f1a0801050405060504040b0c0103000000 *0000020000000000000001020001050000090903141006271f1334221b635d4a46545a22252610 *11113331232e2f3521332c2c232211030503000103000200000000000000000000000000000003 *00000400000000002213053540493a2111919a982d283e06030a0400000000000000004c72741b *16340000050400060a0505494425476fa1130d34110d0c1f2c4b00000000000000000042595f13 *132324130e03000000000500000000000000000000000000000000000000000005190fb3bec2be *c6ca0000040000050000060000090b1a383a597c0e1d23071217161f1d4c69625161677594af68 *7d757798ae697f858ca5b6a1b6c9a8b9cb9fb1c45e797d21242e131a29070e1b121a2814253b00 *020706122002112613294200081300011100111d00040500000000000100000000000400000400 *00010000020100000000000000000000000000000000000000040000050000020000000100000b *06010f030510060303060603030b080908060605060700090f0400000000000003050a0b171c05 *0b0f030508131d0c211d0b1b19051a130a1b1706090d0800090d070b12070b1600000000000000 *000000000000061b000b17000001000003000509223834708da0919da18c9ead404238171c1f23 *22224b48457999aa7491a29ab1c698b0c33e5b7e415b6d6790a87381776d7c86435d6a243f471d *323f0f151a0e0c0b050505140e051516090e1a181d352d0f180f071211050202000000050a020d *1009020607050a050205040709040a1008150b07080e0b050d09141610020906060d091d19112b *31242a271439291b3d392b46474b3d383b403734545969959eb2abb9c6b6c6d8bbccdebacedfbb *cbdebbccdebacddfbdcedeb8cedfbecfe0bdcee0bbccddbbccdfbccedebfcedfbccddebccde0bd *cfe0bccedebccee0bbcee0becfdeb9cee0bdd0debcd0dfbacfe0bacfe1bccee0c1cfe1bdd0e1be *cfe0baceddbacedfbed0e2bcd2e2bdd1dfbdcee0bdcde0bbcee0b8cbdcb6ccdcbbccdbbecfdebb *cdddbbccdebbccdeb9cbdcafc4d4a3a7abb6c9d7b2c9d697b3be83919c454b409396aba6b7c9b5 *c6d4bbceddbed0debbcedfbbcedebbceddc1d0ddbdcfdebdcee0bdcddcbccbd8b4c4d2b1c5d6a3 *b4c4a5bccf7a908d3d464c2f494e2233291d2c2c1c29201f2b282b3e2c212d2700000100000300 *000100000100000100090815251a242d1d1f261611140d19242026281a1b171326352a24271721 *25192624171b26130d1b0d1c2e1c16291e283b2a3c5337445e4f333c3a44414235312b342a2028 *2b26232a232e342f11161800000204090e00020920201c3b2c222f392936362e594c47b6b6b5c6 *c7cac1ccd8bed0e0bcceddbecedebbd1e1bfd1e2bdd0e0bed1dfc0d0e2bdd3e2c1d1e1bed1e0bc *d0debdd0e0bed2e0bdd0e0c1d1e2c4d2e3c3d3e3c3d1dfc1d1debfd1e0bbd0e0bed1e1bed0e1bb *cddebccee1bccee1becddfbdcddcbcccdeb9ccdcb7c9d8b8c8dbb5c4d6afbfd8aac2d4acc1d6a8 *c1d5aabed4a8c1d5a5bed4a1b7d1a1b7d39ab5d19bb3cc96b5cc98b5cb9ab5c894b3cc96b1cc83 *84985c4f588b959971675e2624223b32217e7e653522241712142116166c635817191801070c0c *0d05473d25312c2504040a09090d151112656a60363f3e0a0f0f201f1957504e23273307070a15 *1c2102050f07081000040301050b0004030c0c0822312b0701041d1717534229989179a2947d9f *99915c50440d0707160d0c1e1e1a140c133f2f2e353332060707050e070b0807060304262c2b06 *0a0e00020603081111130d0b16160003010200020000020000000000040100061d181d261c1d0c *0b07000000000000010101010108000004060e1600000500000000000000000000000307010400 *000703050b00010800040a030f1200080a12180b0c080c03020300000200000500061101020a05 *08070415150000040000050000040000010000000000000000000000000001030c0f140c080900 *000302000c170f12615f4f2c1f14150a06090202010000010000000000000000000000473a283b *3e2f16180d1808041d14091e120a352a1c363c3b4836259a94829fa3a09c9270a79c96aeb1bca2 *b0c49aafc79db1c49fb0c6a4b2c7a2b3c6a4b6c6a4b6cca4b6c99eb6c7abb9cea6b7cba5b5cca8 *b6cea9bacaa8b9caa8b7cba7b8cba5b7cba4b8cca6b9cea7b8cda0b2ca9fb6c99ab4c796afc695 *afc79bafc798aec499afc994adc59db2c89bb2c99dafc799aec697aec09ab1c89caec1a2b1c896 *acc49db1c69ab0c49baec694aac591a9c198adc097abc397adc48facc398b1c89baec5a0b2c89d *b0c79bb0c79cafc79aafc69bb0c3a0aec29bb1c79bb1c6a2b2c8a1b1ca9dafc692a1b570798e4f *4c49323e3f181a201b141848483d30364400010700030701070906070a0d140e232123697a7186 *96aa8497a9818681727f968093ab3e48533531301a1f25100d160b0a0e000c1600040e0b142000 *000200000106040303050b0600011d262305090d2426163338313f4b573d413b54758d3e546238 *526a0816170f101c14171c2a201c37505f030a1600000600000100000000000000000100000000 *00022e1d115146540c04042a271e180b0e4847409eadbb3032442c3b49000a1a0000060000000a *1a2e1c241e2b2f361f3362030919000918000a1800050b00000700000d00000500000000000001 *080c070f190f182716222f000004000000000000000000000000000002000002000004031b1bb3 *bfc3bbc7ca0000010000000302080b0d0f3541583944540e030a0f0d142131210c141c2b262030 *302f38382b353a2a2c3d375f6e849caec1aab7c9a2b1c186898038323619101e0b0c1e09061404 *0717030b170a111512121a24383e1e201c00000100000300000000020d00000000000011040100 *000000000000000000000000000000000000000000000300000000000004000007000305080503 *000307040a1711110c03070801010300000600000301070000000000000704000d0b070c04021c *06010e00010f0401150c0b0908071c1b0f06020100000000000000000004000008030500000000 *0000000000000108000000000000000000000000080f09030307202643869bb7a4bccf93a6ad4f *606f536159626c858099b2778a9f657d9f5367761e1d29160b0f3027284d697a0d090f0a0a1017 *0a092d1a102b2f1f141509120b08120a171611110f13121910070700010e0d0a08090902010516 *14133743431814120903010300010001020c050510150d0f0c0912080323180e2c1a0c1f1a0a29 *211b1f1d15262e262e2a204c54622d262239291d574d41857c84afc3d1bacadbb8cadbbac9dbbb *caddbdceddc1cdddbccddebfcde0bccddebccce2bbc9debfcedfbdcddfbdcadcc1cedebeccddbc *cddebdcee1b9cddebbcee1bfcee0c1d0e0c0ccddbdcbdebbccddbaccdfbfcce0bccddfbccee0be *cedebecddcbdcddec0cde0bbcbdebbcce0bdd0e0bacde0bbcde0bacee0baccdbbccddbbdcedfb8 *cce0baceddbbccdfbccde0bbcdddbdcedebbccdcbdccdcb6c9d89b9f9fadb6bea29ea3b3c3d5bd *ccdbbccddbc1cddec1cedebecdddbdcfdebecedcbdd0dcbcd0debdcfdfbecedfbecddbbfccdcb7 *c8d9adbcceafc1d4a5b1c770858e30382c2b2d1e302c1e4a3f314f432d39452d11110f01041000 *0005030d0808150a0407090806011f2310202c233a3720382e19292f213e3b1e3f3d2044461e2e *2e1a42432d374040443d34634e3b403c1f49482c4a4b325857315f665066635d868481605c542f *28212d271f3532283832272320231f0e0e200a0b2a232225252728282332312340372e704f35b9 *b1b4c4c3c6c3cbd8c2d0e0c2cedec3d1dcbdcee2bbd1e0c3d0e1c0cedfc0d0e2bed0dec3d1e1c1 *d1e2c1d1e0c1d1e0c1cfe1bdcee2c0cee1c1cee0c1d1e1c2d2e1c1d1dec2d1e1c1d0dec1d1e0be *cedfbfcddfc1d0dfc1cfe1becde0beceddbecbdcc0cddcc1cce0bccaddbbc8d9b6c6d9b3c5d7b0 *c4d7b1c5d6b1c3d7b1c3d6b1c3d3a8bfd2a7bad2a3b8ce9eb6d1a0b6d1a2b7cf9cb6ce9db8d09c *b9cfa2b6cca3b5c9a0b7ce9fb3cb98abbf8b795fa3b1c098a3b180635557493984787173654d38 *241f25160e604c37452d1c1205051106092b161175685c302f3609050b100e0f564c41231d1f08 *060708070a070008000003030006050307050608232419313a3e110208312016625a3aa49a96a4 *a19ca4a19c684f3d1e0c0820211d11050b1103070800090500060300040c151510120e05050300 *000100000006010203010307020700000001000200000000000000000001000008000009070e00 *00060000000000000000020702030b01050000000100020000000000020000000000000000000b *100e0000000d090a0803090000030000000000000a0d0a03040503000000000000000000000104 *00060704090500070000000200000500010000000000000000000000000000000000000a07070a *0a0800000113090b2c130f898371725340653a2157331b1c0d0e251512341c152e19161e0f0c42 *3b33230c080b00001206031207061a171234343122110f4525149a8168978f7293846ea49782ac *b1bc9fafc6a5b1c89eb1c9a1b3c7a3b6c7a4b6c8a3b6c9aab9cdaab8cba9b8c9abb7ccaab9cca7 *b9ce9fb5caa4b5caa2b6cfa0b3cca4b2c8a5b1c89dadc69daec79db4c79badc59baec499aac497 *aac297aac294abc394acc299a8bc95abc49cabc397aac798adc396a9c398aabe9aaac395a9bc97 *a6bd95aac09aaabe99aac09ba9c197a6bf96acc696abc19aaac196abc39facc799a9c19eadbd9d *aec49daec592a8bf99aac197a9bf95acc59dacc39daec39caac19dacc19eaec79fafc4a1b1c8a3 *b0c494a0b282829945404b645a55778da52c2f431717171318230f0c0b21221f32334a4c4e5191 *a4ad9aa7b99dacbd8d97aa959aa49ca9bd555a84403d4e192c3c15131d0f141e0604040b0c0b17 *0a0c0f000003060913111610030820141840443e16110e433f235c646a4842593c2f36514d514a *464f4e4854544737443e36696d59767f964950591e152609030e02000614030513090406000007 *000012000330301fa3b0bb5452734030292e2e4e170e173e5157242d5909010b221d1605000600 *00030000091d201e040a140001042b230908000f00000000000000000000000000000000000000 *0000000000070004111d370c062700000200000100000000000000000000000000000000000001 *1a18b2c0c3bcc6cb0000051608215f5c404e5b685f6a472027330b0e05080b0b11171100041527 *335e476f814c5d4269684d746948969b91aebcccaabbcca8b6cb91a4b25c6c6d18180f01030710 *0e10060307070a0f020c1400010600000200000000000000000000000000000000000000000000 *000000000000000000000000000000000001000000000000000000000300000001000000000003 *030200040302000100000305060a0003090000000d130a150d0b0e0809252a1e253f4c12171217 *1d132f1e0d261d0a231a071c0e011d150715100400000000000000000000000202020008040000 *000000000000000000000000000100000707120a090b040d150a10140d5663679eb4c6aabdca6d *98b73e3d4d3d4e7157626e9499a48e9aa465665d5f4e41271b1d3330222824292e435324261d26 *1f12472e195c6b75726e685d5a46302a211a130f0d0b071512061010050603020a0f101512101a *0f0b1e1c1a0d0b0b14170a0e1d1c110f060d0505110f091b190c2224161d130e1410121f2a1a26 *200e21180c2c1d0928251d44311042301d4c47425f614d878780b1c3ccbacadabcccdbbaccdabc *cbdebcccddb9cee0bdcfdebbcddebdcee0c1ccddbccce0bdcedfbecedebccee0bbcedfc1cfe1bf *d0e1becedcbccfdfbcccdebdcfe0bdcfe0becee2bccfe1bacedfbdcfe0bdcfdebfcee0bccfdebb *cedfbccde0bbcce1bdccdfbfcedebbcde0bbcfdfbbcedebccee2bbcee2bccde0b9cedfbecfdfbd *d1e1bccfe0bccfdfbbcee0bbcddeb9cddbbdcde0bcccdfbfcfdcbbcbdbb6cddbbacddbb9ccdbba *cbdebecddfbdd1debdcfddbbcfdfbdcfddbccee0c0cfdfbdcedcbfcfddbbcdddbfcee0bdd0ddbe *cfdfbaccdeafc1d2b6c6d8a3b3bd74878d4f59434150333c4b304645324855382431241a201c02 *050503070a040b0e00040505110f03090a312a16403b2d3f3a2c2625163630202c2e263b4e5e46 *4d3a3b3d2f282f2e4a4e4953667068879e819393adb09cada98dacb0a4b3bebcb6c6cdb7c3c982 *8c8d312c2d30372e32332d2e312c2524302e2c2b2f34372e2f2f1e221c2a2b29392e2e3c393962 *523ab1b2adbbbab8bdc4cec3d0dcc1d1e0c1d1debdd1e0bfcfe0c0d2e1c3d2e3c0d1e2bed0dfc0 *d1e0bccfe2c0cfe0bdcfe1c2d1e1c0d1ddc1d2e2c0d1e0c1d1dfc5d2e0c1d2e0bdd0e0bbd0e2c0 *d2e2c0d0e0bdd0e0c0d0debfcedfc1cedfbdcedfbbcedebdcedfbfd0e1bdcdddbacbdbc0cddeb8 *c7dbb5c6d8afc5d8b5c6dbb6c7dcb7c6d9aec1d7aac1d6a4c0d5a9b9d3a9bbd1a5bdd19fb7d0a1 *b7d3a1b4d2a2b9cea2bacda9b9cca5b9ce9bb8cfa1bbcea8b8cea2b7cd9cb6cba5b7c9a4a79daa *b6c69aa19f65412a7c54489ea4a070534855372c574633938f7f543c3515090c281a1568544c2c *273308070d04080b0007060000020802040403090807081113171a151e0b0c0e272a275a4844a1 *9a86adaaa79e9d9982766e20141220120d0a090a13130c04020000000003000005000601000701 *04060000010000000605020c09040d0b0c0b020b0d070b0000010501010d0a070507070604060c *080801000000000002000206050405070807030800000000000100000000000000000000000000 *010218181300000a0d141707060b00000000000000000009110c020f1200000800000000000001 *03040603070602030000030000000000000000070000020000000000000000000000000000000c *0e0f04050e000003101011301e138b85748a7972908c7b837466120503291a11322728321b1302 *000025180d160f0d080708140b0a1d140e2e352d26242330231a53483da098949f927baba195ad *a79ba9adb6a3b4c7a7b3c6a1b1c6a4b1c9a4b6caa4b6c9a4bacba5b9cca4b4c8a4b7cca4b6cea4 *b6cc9bb1c69cb1c897aec796acc595aac494abc594aac698aac699a9c09bafc397adc394a8c094 *acc191abbf92a8c091a7c18fabbe97aec396abbe97a8c091aac092abc68ca8c292abc796a8c596 *acc391aabe94aec29badbf95abc396abbe98aac396a8c19aaac09facc49badc197a7bd96aac393 *adc296abc296acc59eaec99baec39aadbd9baec098acc498abc299aac19fabc098aac29bacc59c *afc7a3b0c795acc48d94af96a1b193a4bc8b95b058575f525a5a53545a494947696a5a818c9973 *7f8199acc09cadc0a0aec399a9c095a8bd90a9c28e919e6d728b1a141d212121151519161b190f *0e172d34301d1516241b102a303927180f372b226b685b5f52475b462c5150494b524f4c3f4868 *5a518c8c8b9a9990a7aeb3abb0b8a3a9ab5d615e2e3c402c28302f1b124426158665316e655d73 *5936948d6ea1997e6f6a5a6e79827a8faf313f470d1a280003140a152523252d0b0f1710335c00 *001900000100000305060b00000e0000020d1e2b25426c00000600000000000000000000000000 *000000000000000000000000000000000100000000000000000000000000000000000300000000 *000006221ab3bec3bcc7ca1d162d8e9daa7c8e934c6082799aa21f313303090f0a0d22121c2305 *0912101112343f2d767960a0b3c3a6b9caaabbcbadbed0aabed1a4b3c47573723d323f1c191e11 *161a06080d07050d01020b00000200010a00010700020d00000000000100000200000100000000 *000000000200000400000000000000000000000000000004000003000500000100000000000100 *00000000000000000100030000020200010300021109070e090d110c0b16150e211d2021120c1e *0b0b271f181d130c25150c13160b05010304050708060603020206020200000001000005050400 *0001000001000004000000000003000003000003111b261d21202e2f233633297c899598abc6aa *b8ccb1bccbaab5bf9fa7a78e939c9aadc190abc672848f617d8a7e85837a797e5c4d35705c4376 *818a6a7e8d84a0b3637c977090ae7991aa6b7b81181d2709040b14131406050806060a09090f11 *161a1b140c1c21210c09090a0708080a0d100e170b050e0606091810061d1911281f171a100c28 *1e1838271c382e1b2f2d1e5d6c5e3f3f2f3e2b244e3f3e848e9fb3c4d1b7c7dbbbccdbbbceddbb *ceddbdccddbdccddbdcbdcbeceddbecedfbfd0e0c1cee1becfe4bacee2c1cfdfc2d1e0c1cfe0c1 *d0e0bdcedfbccddfbccee2becde1bdcfe2c0cfdfc0cfdebbcfe0bccfdebccfe2bbcee1bccee3bc *cfe1bfcdddc0cee0bfcedfbbd0e0c1d0e0bccedfbccce0becfe2bdcedebed0dfc0cee1becedfbb *cfdfbcd0e2bbcee2b9cce0bccedebbcedfb8cddebdcee0bcccdcbaccdfbbccdebaccdebbcee0b9 *cddebdcedebdcfe0c0ceddbdd1e0bdd1dfbccfe0c0d0dfc5d1e0c3d0e0c2d1e0c3d1e1c2d1e1c2 *d1e1bbc7d9b3c4d8b0c3d5bac9dca1b5c18d8f7d796a58302b2330302829322d2a2c232b2b1f34 *38271315172b201c8679693e3628181d17202a1c4f6a758298a55b69733e3a40646c7346423b50 *5848687a8151554a322d253b3941526562656255989ca9b8c6d5bdcddabfd1dbbdccd8bbccdbbb *ccd96662632f251d303029302e2b292f2f161c1f22211f2320202425211b1d1c1f201f24201f2d *2021352622a09179bdb1a4c3cacec1d0e2c3d1e0c1d1dec2d1e2c2d1e1c1d3e3bed1e2c0cfe1be *d0e1c3d3e1bed1e1bfd1e2c1cee2bdd1e2c1d1e1c0d0e3c0d1e2bdd1e3bed3e3c0d3e2bfd0dfc0 *d1e2c1d1e4bdd0e3bfcee1c1d1e1bdd0e1bed1e1bbcfe0c0d0e1becee2c0d0e2c0cee0bfcddebc *ccddb9cbddb5c9deb5c8dcb6c9debacbdfbbcbdbb4c7d8b2c3d7acc1d7b4c6d8b1c6daadc3d4a4 *bbd5a5b9d2a7b8d3a4bbd2a8bed3a8bdd3a8bdd3a7bfd3a8bdd3a7b9d1a8bbd1a5b9d1aabed1a9 *bfd3abc0d4b1c0d2b1bec9b2becdafc0d0b2c0ceb1bdccafbcc9b6c1cfa8acb9866c5a805f4ca0 *98917b635a4329282c141218090d0d030a11090c160c0b19110a2a1d141f1815110f0d1d17174c *3c2fa6a399b1b0ada4aaaaa39987583e253d2a1d261811422a1d0f03090f0105401d1634260e42 *290f422c170e03050700004020163f23183a1c0e321e102417120705032109042a160c2c190b2f *160a22140f0401051a07082819093f27183c2110301b0f00000014040624160a230b081001050f *01001305060c091002000307090703070903000600000100000103040705080c04020500000000 *000005000502000b02000b04000000000007000004000000000000000000000100000400000401 *01000a0c0e0e0a080100000603021e1c207c7f848675648e827a8176762c0d062f201d3f281747 *3b27080003241915170c0d1705051e120e1e1d141e1a1823201c483b2f5b54439c9586aa9f8eb1 *b6b4b1b7b5a4a9a4a3b5c9a0b0c4a3b4c9a6b6cba7b6cca9b6caa9b9caa4b8cfa4b6ce9eb2c899 *b0cb9eb2cb9daec598acc698acc594a9c48da5c091a5c090a9c391a7c190aac194a8c48da9c296 *a9c499abc49aaabf98a9c596abc298aac297a9c293a5c099abc298acc398aac699aac198a7bf99 *aac393aac595abc095a9c693aac69aa9c09aabbf94abc39badc196adc696aec997a8c697a8c49c *a6c39aadc298aac19bafc793aac69eadc69dacc99caec898adc89babc49ba9c195aabf97abc79f *acc695aac494aec89bafc99bacc49badc39badc398a9be9aa8b89da8bb959cb08d93a993a2b696 *acc399aec39babbf9faec3a1aec9a1adc5a0adc49aabc69daac18995ad2b2e3f23292e0d162416 *151c1e1c21363435313d445765706677807681807685838d9daaa1a9b3a4a8b19096a78e96939f *a4ac9d9da4b0b9c4b4bfccb7c2cfbdc6d5bcc4d4968c927f706083634cafaa98bdbdbdc2c8cfc3 *c3cac3c6ccc2c9cfb8c1d1958ca470666d555d8115131d151c2d1d1618373542375d8107143e00 *000e04010c28180f6f85874f54571e172b00000007181601062500000d0000030100000a0d0f00 *000000000000000000000000000100000000000000000000000000000000000100000200000500 *0001030001102824b5c1c4bfc8cc06081948507c3a526b2d4a7a1d262203080900080900070706 *110d040e080d171032464562879d758bada4b6cba9bbcca9bccbaab8ccb0bdcea0b1be8e9ca07d *786a30392c060a080504050100030000000000000000000000000707070f1e2100010000000000 *000000000500000000000000000000000000000000000000000000000000000000000300000000 *00000000000000000100000901020c02030d08081a0d061a1b081d0d031d1207190f081d140627 *2210281f0c261d0f2212061415060705040000000405010000000000000000000207040b0b0007 *0503000000000000000000000905000506000005010806070c07252921526d7651688487879aa6 *b6c4afbeceb4c6d8b6c6d6afc1d18ca8c08b98ab9eadb8869185746c63a2aebc9ba4b5acbcccae *bccc99a2b48e98a68795aa7d8a988595937e8b9c3e464f3e4c523f302c3f3323211f0e18181413 *100d0a080a180e0d181a0e201e09181103120b02151207140c081a1409110f072c221122251632 *2f1e4139214b473247402b3a3f2b504d4244381f8d7f76adb7bdb6c6ccbbc9d9becbdbb9ccdcbc *ccdec0cfe0bbccddbbcedfbcd0debeceddc1cedbbccedcc1cedfbdcde0bdcedfbbcddebdd0e0bc *cee0bdcddebdccdebdcedfbbcddebdcedebdd0ddbdcee0c0d0e0bccfe0c1cdddbdceddbfceddbd *d0e1bdcfe1bbd0e1bbcfe1bfd0ddbdcfdfbfcddebdcedfbed0e0bed1e0bdcddfc1d1e0bdcfe0bd *cfddbdceddbecedeb9cee0bdcee0becddebdcddebbccdfbecedfbbcddebbd0debbcedbb9cedebc *cedfbbccdebfcee0bcd0e1c0d1e1bed2dec1d0debfd0debdd0dec3d0dfc6d2e1c2d1e2c3d0e0c0 *d0e0c2d1dfbfccdcb9c4d4bcc9d8becddbbccbd8bccad7b7c5d093917f4a452f36342e201e1749 *5c61494234645b4b95999db5c7d5a0b4bb38443a30352b525a496c78844c575f57737b58656b54 *635a4040323d3d355c62704d453d6f675c695d5a97a1aab1c3d0bbcdddbcccddbccddabbcddcb9 *cbdcbaccd9999ea7342b2736312f211c1820190b36292143382b5a5a485759465f5b4a716d5a5e *68636e7769707464a9a492c0c2c5bdcbd6c1d1debcceddbed0e1c2d0e2c1d1e0bcd1ddbed0e0bf *d1e1bbcfe0bfd1e0bdd0e2c1cfe0bccedfbbcedfbbd0dec3d3e3bdd0dec0d2e2bbd0dfbdd0e0bb *d1dfbdd0e0bed2dfc1d2e1bdcedfbed0e1bdcfe1bcd1e2bbcee0bbd0e1bccee0bdd1e0bbcfe1bd *cee0bdcee0b8ccdeb9cddcb8ccddb4cadcb8cbddbacfdebcccddb5c6dbb2c4d8b5c7dbb6cbdaab *c1d1a5bdd3a3bfd4a6bfd7a4bbd4a8becfa8bcd6a6bdd4a9bfd2aac1d3a6bed3a4bed3a6bed4af *c2d5aac1d2aec3d4b1c4d6b3c4d2aec2d1b1c2d1b3c5d6b5c5d5b5c5d5b8c6d5bac5d6b6c4cfb9 *c8d6b5c4d3b5c1d0b2bbc5b0b2b9aba6aba39a944e3d3a1d1a211d2426363a3a3136313a312932 *2a31574b37a9a39aaaa492a7a39da9a9a85c3b292b221c1d150d241e111c1b14120b091e241c27 *2c263931252c332b23202127271e262b1e322c1a1f201f231e16121c1a1e221c191517251b161f *1d15241a151c151306040408080e1416121c1e18201c1c0e0b110b07081a0f0e332921443a2e2a *25231d1d1c13161322221b1f2a25293d4020232627312f110b08090904161b251222251b2d380c *0d121215171f232d202a29162327080c1203050300020204050900000000000004000002020300 *00010000020404020e111014110f1d1b121f1b154d4636605c486968566a645138291e3c2a1e3c *392727251a0a000124140b110a030f0604190d0a241b11242a2a2124183028185b3e1ea59d90aa *a59ab1aca0adaeaea5aaaea4b4c7a8b6c9a4b3c9acb6caa9b7c9a8b9cea7b9d1a9b8d0a4b8cc9a *b1c999acc192a9c299a8c493a9c298abc295a9c297aac193adc58ea9c08cacc48da5be8da5bf8e *a8c194a7bf94a9c391aabf94aabf93acc29aabc197a9c19aabc193a8c38faac399adc196abc098 *aec598acc198acc09baac599aabc9aaac399a8c193adc79aacc196aec79aaac092a7c197abc199 *a9c19aaec792a7c18ba3c195aac498acc197aabb93aac195abc697a8c196abc193a7c195aac195 *abc195a5ba99aac19caabd98acc195aac39babbc99abc29badc39baac199abc29bacc29aa9bea1 *afc29dafc598b0c697abc0a5b0c397aec5a0b3c4a4afc4a2b0c5a2aec4a1aec367666f3f27362d *2f382325271f1c182624234035354c4d4876838a9aadbb8692a39aa3b1a8afbeb2becbb1bdcab2 *bccbb5bfcfb4bccdb8c2d2bbc5d3bcc6d4c0c9d5bfcad6c1c9d4bec6d2c0c4cec6ccd8c7d1dcc8 *d2ddc6cfddc3cddbb2bed1adbccbb4bcc7a2a7bc867e855750410d0c0e00000407040a0000050c *06070f0a07070908142b3a2845740c172d00001d00000000000000000000000000000000000000 *030d00000000000000000000000000000000000000000000000000000000000000000000000003 *0306000001030203132f2fb3c0c3bdc7c98ba1b07181751d262f080e1d03080f00051304050b1d *29261f252e1014141c2e2b282e2a2a443c4b4e479eb1c5adbeccacc0d1aabdd1afbdcea8bacca2 *b3c78b989c5d5d57332c2c21171209070800010706090f07050d0c121c10203004071700000000 *000500000000000100000400000400000200000000000000000000000000000100000500000703 *00090100000000010300000600011a0a091b120f1c0d0f150f0b1e17181f1e111b190e1f170a20 *160a19190d1017161113100e060b06030c00000000010304060202000100000000000404070e07 *0e0803010300000200000100000200000200050800070c141c1516231f384e40606c5f82877c9e *a4b0b1c0d1b3c6d8b6c6dab1c6d9b1c3d49ea5a39aaabda5aebd8792a072666eabbaccb2c6d7b1 *c6d8acbdd09aa6ae8ca5bc9aaabfa0a7b2a0a5b59ca7b64f483e494e60424047403b35434c3d2f *3328281f12120c0d0a0c0f221c1a1e101033332b2e2d1a18190f2120142421153e361e3936223b *33203e392b56503a656b5d7788916564647887987d76689fa8bdb5c7d8bacddbbfcedebbcdddbe *d0e0becedebecfe0bbcde1bbcde2bacde0bdcce1c1cedebdcfddbfcde0c1cee0bdccdebbcee1bb *cee1bbcee1bccee1bccedfbdd0e0bed0e2bdcde0c1d0e2c3d1e1c0d0e2bccfe2bdcee2bdd1dfbf *d1e0c1d0e2becfe1c0d1e2bdd0e2bfd1e2bfd0e2bed0e2c3d1e0bfd1e0c1cee2c1cfe0bdcee1bf *cfe2c0cfe1bdcee1c1d1e0bbcee0bed0dfbdcddebccde0bbcfe0bbcfdfbdcee0bed1e2bdd1e3bd *d1e1bdd1e1becee0bfcde0bfcfe0bdcee2bed0e2c3d0e2c4d1e1c4d4e1c6d4e1c6d2e1c1d0dfc0 *cfe0c0d0dfc3d2e1c4d2e3c3d2e1c4d2ddc2d0e1c3cee0c0cedebccee0bacadab1c0c8999b8d87 *7d6a9c967bacb2b4b8c8d4b9c8d6b6c9db909cac565c4f686a47888c8791a5b0716e736e756b5a *5d606e736b7077706c7d8a7d90a28a94a2a7b6c1b6c3d3bacbdbb7ccddbbcbddbdcee0bccee0bd *d0debcd0e0b9cddd9eacb539352e352f31343c31232b2324211a211d17272b2837362f341e1c2c *1f22241e1b302928472f29a0978db7b1abbec7d3bcd0e2becfe1bfd1dfbbcee2bdcee2bfd1e3ba *d1e0bdd1e1bdd1e1bcd1e2bfd2e3bdcfe2bdcde0bdcee0bbd1e2bfd0e1c0d1e2c3d3e2c1d2e3bd *d0e1bdcfe0bed0e0bed1e2c1d2e4c0d2e3bad1e1bed1e2bfd1e2bccfe2bed0e0c0d1e3bed1e4bc *cfe3bccde1b7cddfbbcfe0bbd0e2bccfdebccedfbacee1b6cbe2bbccdfb9cbdeb6c9dbb5c9dbb0 *c5d8aec3d7aec1d6adbfd4a9bed8abc1d7a8c1d6a6c1d4a8bfd3abc2d3a8bed5aec1d4aac1d6b0 *c1d8aec3d5aec3d1b2c2d6b1c5d6b1c4d7b1c4d7b7c6d8b8c7d8bbc7d8b8c9dabcc9dbbbcadbc0 *ccdbbcc9dabcc9dcbfcbdbc0ccdcc1ccdcc1ccdbbdcad6736f721d1b1e1f1f2726302e2d353323 *2b2b242a33534132a6a196aba392aaa196a9a49b544032251f201d13171e19191912141d191a14 *181b23191c2e2d222d3931362d2a2113171610161e18151f1c1c17131311100c121014140b1014 *0d11120b0e150c0f100908180a090c05050b0b0b05080c100e1a130e191f161a1e1d263d3d4235 *29261a1511110f120b0a0e070c0a0f11120c11160b07060c090518130f120a0613141312121710 *12120c13140c08110d0b0b141211201718120a0b1a161216130c04090d06090b06020609030400 *00030100000100030d0e101111131b1b1912171819140e1f251e20140c42371d493c2d2d211d2f *231e372f29221d1c0b0309181b1d110e0d271d1435352a3e3428272e2a1618163d373c685b4bae *aaa0acb0aab0b4afb0b6b3a6aeb6a5b7caa3b6cfa7b6cea7b9caa8b8c9a8bbcfa8b7cbabbdcfa7 *b4cb9bb1cc99adc997a9c595a9c495a9c094a9c499aac392a8c395a9c48da9c292a9c291aac292 *aac09aacbf90a8c092a4bf93a8be91a4c08ca6c294a7c596abc59baabe99abc299a8c19aaac69c *aac09babc897aac397acc596aabf9cafc598abc39dacc391aac296aac296a8be9ba9c198aac194 *aac199aac394aabe93a9c18aa8c38da7c591a4be91a8c193a4c195a9c192abc591abc391a6bf97 *a7bd95a7be90a5bd89a8c395abc497abc29bacc499abc59aabc396aac19cabc89badc19aadc59d *abc19eafc5a1b0c6a1b1c79facc39dabc49fadc8a4b0c89fb0c9a3b3c9a2b5c9a7b5caa0acc281 *839a626f843f4e5d5f6475505357738599535b527c7071a2adbba4b1c2aaafc1b1bdd1b4c1d3b8 *c3d4b7c5d6bac5d4b9c4d2bbc4d4bec6d8bac6d7c0c6d6c1cad8c3ccdcc5cddbcbcfdccad0ddcc *d4dfcbd2e0c9d1e1c3cdddb6bcc78a7d859b9da2b4c1cea7b1c0a4b1c67184a71e1a2320142c23 *251e0d131e01020900030a05000606091100000600000000000000000400000800000100000000 *000000000002040200000000000000000000000101000100000400000200000100000100000500 *0006060813110d1f08080a183736b6c0c3bec8ca3f5b7f32363d252d2b25352d0b0d0d0a100e1a *21141c260f08190c2b2e1738482a1d262320312e62686ca6b7c9a9beccacc1ceb0c2d0a8bacdab *bacaa6b8caa3b7c3a2b2c390a0ab697f742d31260d10101f201d201d26374f5c0f121300000000 *000100000000000000000000000000000000000000000000000000000200000000010000000000 *00000000000104020206060007020308070808040e0802120500211507171b0c0c0e061d150a34 *312b48503122210c2e22081d170b140d050f0903100c0700000000000000000000000008010002 *00000003000005020000000001080003080108050410090a17153447363e4631635a398295a8ad *bdceb1c1d3b6c4d1b4c6d5b7c4d6a1b6cc89a9c29cafc69bb1c2aabbc694a6ab939c9da9b3c1b6 *c6d3b2bcd1a4adc49c9cada5aaada6aebdb6c6d3b6c6d3b1c3cea0afbe7b969a8999a97985784f *534b17221f23241d2025102e33274a453d4240312f3d3f272d2b252e221d1a13251e143e341950 *4829554c3d484b434a5a683c454d4e584e6d7d86879398aebac9b8c6d4bdcbd8bbccdcbbccddb9 *ccd9bccedebdcfe1bfcedebccddebdcddcbccfdfbdcdddbecedfbccfe0becce0bbcddebacee1c0 *cee0c0cee1bdd1e1bacde0b9cbe1bdcee0bcceddbecfdebfcfddc1d1e0becfe0bfcfe0bccee0bc *cedebccfdfbfcfdfbcd1dfbed2e1becfdfbccedebdcfdfbfcee0bccfe1bdcfe0bfd0e1bdd1e1bc *cfe2b9cfe2bdcee2bed0e1bbccdebdcedfbbcfe2bacedebccee0bbcee1bacedfbdcedfbdcedeb8 *cee0bccedebdceddc3d0e0bfcedfbed0e0c0cee0c1d1e0c0d0dfc2d1dfc3d1e2c3d2e1c2d3e2c4 *d2e2c4d2e0c4d1e1c2d2e1c2d1e1c4d2dfc2d2e0c3d2e0c3d1e0c5d2e0c5d1e0c4d1dcbcd0ddba *cedbb9cbdab9cddcbbcedcb8cde0bdcdddbbceddb8cbd8a9c1c8aebfc9b7c9d7b3c7d7a4b6c796 *aab896a2a896a7af879ba798999faab9c9a4bbccb7cadabbcedfc2d1dfbccedcc0d1dfbecfdebd *cfdebfd0dfc0d0e0bfcfdf9eabb4403c323a392e3233272a291b23211d2c2a20261d1929271a23 *27222a271c332d27272820373124998667b1a291bdc6ceb9d0e0bdcfe0c0d1dfbdd1dfbcd0e2bb *cfe0bfd2e1bacfe0bcd2e2bdd1e2bcd1e0b8cee0bdcfe0b6cedfbcd0dfb9cee3c0d1e2bbd1e2be *d2e4bdd1e0bad1dfbed0dfbcd0dfbacfdfbcd0e0bcd1e2bad2e3bcd1e3bad0e0b9cfe0bbd0e0bc *d1e0bdd0e0bacfe1bdcde0bbcee1bccfe1bcd0e2bbd0dfbccee0b6ccdcb6cbddb7caddb9cadeb4 *c9ddb4c6dbadc4d8afc6daafc3d8aac1d3acc1d5adc3d8aec1d9acc2d7adc3d4acc3d4b5c5d6ad *c2d6aec3d6afc1d6b6c6d6b3c5d8b3c4d9b2c6d5b2c5d5b5c7d8b6c6d6bac7d9b6c9dabccbddbc *cbdbbdcbdbbbcddbbfcbd9c1ccdcc2cdddc4ceddc6cedcc1cad7655c641c1d19111d191b24241f *2b301816181c19173e3a28a6a494aeb0aaaaa8a3a29d8e4f403a241c1e3d2c2892784e89654858 *413429201f282c2d2d362724232032292d4a2a246a3c1e5f2f1a2f292515181a10141218101119 *100f17110f4838247446216d3d1e2b271e0f0b09080d0a080d0a0e0d0f2218126349305d342c3f *1b14201c1c090c1511120b211e121910081d1c1631231b22121524161214101414120a0d0f040b *080a17110c15080932241858402f433924130a0d160d090b16131416160d0605090708221f1627 *1d1b0000000000000105020509050c0b08100910110d15060b1211130e100e0813100a11151213 *181b20171d281e1c1d1c140c0a0c191b1811180e1f30252e39312b36242617171d171222211d68 *6042aeb3b6a49a80a59e84aeaba6a8a7abaebacca3b5cba5b7cba9baceaab9cbabbdd0aabdd1a9 *bcd0adbbcd9eb4cb96abc298aec791a8c497abc195adc794abc18fabbd95a9c690abc48daac290 *aac28ca8bf89a7c08ba8bd8ca6bd94aac18da7c18fa7bf93abbf90a9c294a9c091aac198aec390 *aac293aac199aec398aac192aac198acc393adc490acc692abc593aac492aabd95a9c097aac28f *a7c18ca5bd8fa5be92aac092aac193a8c192aac092a7c68fa6bd8aa7c28ca8bd95a8c096aac28d *aac394aac297a8bd95a6c099acbe9aacc09aaac19ba9c19baabd99acc39cafc19bacc29aacc29c *adc59fafc59bafc59cb1c7a0b3caa6b1c79cb0c2a4b2c3a3b4c6a3b3c9a6b1c9a4b6cba9b6cba9 *b4caa4b1c78576997f6b648491986d66688d958e8c8c9796989fa7bbc9b1bdccb0bbceb4bfcdb4 *c3d3b6c2d2b6c3d4b5c5d6b7c6d7bcc7d8bfc7d5c0c9d4c0c9d2c1cbd8c6ceddc5cddbc7cddec9 *ceddcad2ddcad2ddc9d2ddc7d1dcb9c2d4b0b6c4bac4ceaeb3c39ea2aa35365846476734222539 *3c322635393a312c0c060901000306080514233400000a00000000000000000009000000000000 *000300000000000000000500000000000000000000000000000400000400000000000000000007 *02011009087f6f36878f95272a311e3d38b5c1c4bdc8ca5f605a3d4a78212f361316141f221c25 *2c22334b4a223e350d0e11272a1e36371e18181250442b8c97a9acbdcfb1bed2aebdd0b1c2d6ab *bfd4abbdceaabcceacb9cba4b6ca9fb2c989a0b2646c723532354a54624e5d5a3b424411060c00 *000003000200000000000000000000000103000100000000000000000000000000000000000100 *0002000002060107040000070000030000040402000000010003100b0d1c131217140c1a0e0823 *2422303027261e1e1b140a3b4246293e2c1108090b06061b08080300000100000402000b0d0d15 *0e0c0700020504060d0f0a030104000001030507090e140e1c16121b1d3c51597e9fb7aab8c6b1 *bbc9b2c3d3b3c4d5b2c3d3b8c6dabac6d59da9b574848e78828e95a6bd869db17f96ab8891a091 *99a5adb6c9b5bed2bec3cfbdc3cebec8d8bfc9d8bdc9dabdc7d8bbc6d1adbac785826b9caab15e *6575414c53342d20252b2326241f2a292573909e343233352920342d1c2d201c261d152f231a4f *56594c4b4a5f5f5c6b767a5c504c625048775c4c9a8d7cacb2c5b7c6dbbbcadbbdcbdebfccdcbd *ccdbbdcbdbbdcfdeb8cbdbbbccddbbcedebbcbdec0cddfc1ceddc4cde0c2cee0c3d0dfc1cedec0 *d1e3c3d0e3c3d0e5c1d1e3bbcbdebeccddbccddebccddebdcedfbcd0e1becfe0c0cde0c0cee1be *cfe1becfe1bbcfe1bccfe0bacfdfbbcee0becfe1bdcde0bbcddcbecdddbfcedfbdcedebed0e0bc *cfe0bdcfe1baccdfc1cee0bdcedfbdcfdfbbcee2bdceddbbcce0bbcdddbdcedfbdcee0bdcee2ba *cedfc0d0e1bfd0e0bacde0c3d2e2c0d1e3bfd0e2c1d1e2c4d1dec2d2e0c3d2e0c1d1e1c0d1e0c3 *d0dfc1d1e0c3d1e0c4d1e1c2d3e1c4d1e2c7d3e2c5d1e0c7d3e0c5d3e1c6d3e2c5d2e3c4d3e2c3 *d2e1c2d1dec0ceddc2cfdec3d1dec2d1e2c2cee0bdcee0bdcddebccedbbdccdabaccdbb7c9dab8 *c9d6aab8c9a8b2c7aeb9cbabbacab6c9d8bbc8d6b9c8d9baccddbccddec2cee1bfcedfbed1e2c0 *d1e2c0d0dfc0d0ddc1d0dfbfcddca0a9b241363039312f352d262023222d2c222422222e1d1f25 *1f1e221e1c221f20241f212b2120392b229a8b74b1b1aca8b3c2bacedebbcee0bdcfdfbccee2bd *d1e2bdd1e2bed1e0bdcee1bbcee1bcd1e1bcd0e2c0d0e0bcd0e2bdd1e2bbcedebbd1e2bacee2bb *d1e2bbcee0bccee1bdd1e0bacee0b9cfdfbad1e3bccfe2becee1bed0e1bccfe1bccee0becfe1bf *cfe1c1d2e2bccfe2bcd0e1becedebfcee2bed0e2becfe2bdcfe1bacfe2bfd0e3c2d0e0c1cfe2bb *cadeb8c9ddb6cadbb4c9dcb9c8ddb7c6dcb0c7dbb2c6d8b2c1d8b4c3dab3c4d9b2c6d6b3c6dab4 *c2d8b1c4d8adc3d8b3c4d6b6c6d8b8c5d7b7c9d9b8c6dcb5c6d9b7c9dcbacadbb7cadcbecbdbc1 *c9dbc0cbddc1ccddc1ccdac3cedec4cddfc7d0dec6d2dec8cfdfc2cad74c4e5b14161809070d0d *0c101514161e1e1f101e1d2b271f7d8186828e90797a8283847b58413d2a202057433bb8c1c7bd *c5cc7c7882291f1e27211c2a282a1f2a243327278b7669c5c6cec0c2cc4d4247111315110b1012 *0f131513151d191b797067b7c1cab4bbc6483d3f120f140d08090c0a0c090b0f211820857e78ba *bec9b7beca423c42100d141b1518373e34241b1f18191d5d503284654955484a2c231c17131311 *0a0d10080e110a12180d176c6760a6b1b895a4b12623251b0d15171118150c14150c161d130e71 *6d525b6a7d0000050000000001040906080909090b060c0b0a0b07040105000101000301000404 *00000000001e1014433c34302b20150f0d1e1e171c17151c1b142d26271e17172c1a1236292946 *3a2f645544aaaba9aaa6a1aeaca2acaba9aaabacacb9cca9b7ccaab9ceacb7cea8b7cbadbbceaa *bbd1a4bbd1a7bbd1a4b4cc9fb0c69eaac49aafc99babc397abc699a9c692a9c496a9c698abc595 *aac296aabf9ca9c095a8c091afc698abc090a9be97aabf98aac38ca6bf97aec693a8c092a8c192 *a9c195aabd95a9c099aac697acc59aaabc99a7c097a8bb94acc591a7be92a5bf91a9bf96acc192 *a7be9aa9c187a6c596aac68ba5c397a7c28ea8c18ca4c18da6c39caac695aac194aac396a7be90 *a7c397a5bf95a6c29ca8c198aac199aac39caec69aadc89dadc79cacc296a9bfa0aabf9dabc29c *aec69eadc5a9b2c7a5aec7a7b2c5a6b1c9a7b2cba4b6cba6b4c9abb6c9acb6c9abb8c9aebbcbaf *bccdadb7c9b1baccaeb8ccafb5c6abb5c1adb8c9aeb8c8b3b7c6b5bdcdb8beceb4bfd1b6c0d4b3 *c1d7bac4d3b8c2d5b9c0d5bbc1d4bcc3d6bdc4d7bec7d6bfc6d8c3c9dac5cadac6ceddc8cfdeca *ceddc7cfddcad1dfcad1dfc9cfdfc8cfddc2cad9afb9c78daac490a7b05d7fa64a484c6a727986 *888570788a5454444b6a8942443c3636361a141b06092905000900000303000403020804090a00 *000500000000000000000000000000000000000002000207000003000100000000000100000202 *0004181a1c5d4f4e9c9f90aab9c7646777495755b9c2c5bfc8cba5b6c26e6148403e2c302c231e *1f1a393823485033575e39363f294b553f5b674d676a489daabbacbdceb3c1ceaabdcdaec1d1b0 *c1d5acbfd0aec2d3a9bed0aabbd2a4b6cca3b5c7a0b1c48497a26d797a596978292d441c232b0e *0d1104000301000000000000000000000000000000000000000104000305000102000003030100 *00000000000103050200030300020506050a0b060f080206030602010306030711130a100d0b0e *0e0c0b0f081b1810302c1c211d0d272226200d061f1618313d362c25241d1408150d0603000008 *070402020000000000000100000600040905130e101915090b0c09180f1a2717303e3270715ca9 *bcccb5c1d1b5c4d2bac5d2b6c6d7b9c7d7bac6d5b6c3cda3a4aa8c8281918a847f69466f583e73 *69608b8073aeafb3bec7d4c0c9dbc2ccdcc1cddbc0ccd8bec8d8b8c7dabbc7d8b4becb8292a265 *697e7b8a9c525e54505449473f31443d273e38272220162d2217585b475b5e54302e1e39322446 *4f4a373524403627564c476e63567b6758989798b5c5d0b8c9d7bbc9dbb6c7dbb5c8dcb7c8dbb6 *c8dbb4c7dcb4c9dbb6cadbb6c6d9b7c7dabac9dbbaccddbccbddc0d1e1c4cfe2c3d1e0c5d1e0c1 *cde0becfe1c1cfdec2cce0bccee2bccee0bbcbe0bbcddfbbcde0bdccdfbbcee0c4d1e2bfd1dfbc *d0e1bfd0e3bfcee1bed0e1bccfdfbbcddeb8cee0bccedfbbcddfb9cddfbacde0bbcee1bacfe2bd *cedfbed1e0bacfe0bcd0e2c0cee1bdcedfc0cde1bdcfe2bacedeb9cce1bbcedebbcddcbed1e1bd *d2e1b8cee1bbcee2bbcedebbd0e0becfe0bdcedebdcee0bccee0bed1e2bdcfe1c0d1e1c1d3e1c1 *d0e1c2d1e0c2d1e2c1cfdfc0d1e1bcd0e0c0d0e0c3d1e3c5d4e1c6d2dfc5d3e2c5d4e2c6d2e1c6 *d2e0c4d0dfc1d1e2c3d3e3c3d3e2c5d1e1c3d1dec6d0e0c1d1e1bfcfe0bbcee0baccdfbbcde0b8 *ccdcbacedeb7ccdcbaccdcb3caddb4ccdcb9cddebacedeb9d0e0bbcee1b9ccdebaccddbdceddbb *cddcbbcddfbbcedfbbcddfb9ccdeb7cddd9aacb53637322d292524241d352f2e4f4a43332a222a *2b2327281e31302f3e46482520202926253a2b23948279a099939f9ea5b8ccd9b8cedebdcedfbb *cedebbcee2bcd1e1bbd1e0bacee1bbcfe0bdd1e1b9cee0b9d1e0bbd1e2bacee0b8cfe0bbd1e2b9 *d0e1bcd3e2bed0e2bdcfe2b9cbe0bacfe1b9cee1bbcfe1b9cee1bbcfe3bdd0e2bccfe1bbcfdfb8 *cee2bad1e3bbd0e3bacfe2bcd1e0bad1e1bad0e2bccfe0bad1e2bdcfe0bcd1e2bdd1e2bbd0e0be *cee1bdcce1b6cbddb6cbddb6cbddb6c9ddb9cde1bbcfdebacddeb7c9ddb9cbdbb9caddb6c7d9b1 *c6d8b1c6d8b1c6d9b3c6d8b3c3d7b4c7dbbdcadbbbc8d7bac9d8b6c6dab7c9dcb7cbdcbdcddebe *cddfc2ccddc3cedec6d0ddc3d0dcc3cedec4d1dec7d1e0c6d1dfc7d3dfb5bbc72e1f1d110a0703 *0506070306050307140c06080609220c0c4e2b1e60391a6f402081532a85785f29211d644639bd *c7d3bfcbd38a8b9a352c242826212b2829231b153a392f998c85cad0d8c9cfdc5c484516161512 *100f0c0b0e150f10211613897f77b7c6d4b5c4d35349491e170f120908130a09110608241e1f98 *9391c0c8d3bec8d55a4c4b1d151114151421191a110d0b261a1e8d8d8fb4c1cca2a3aa392d2a14 *0d0e160f09110b0a15121a1e120f818188a7b5c89db1c42d2b2c0b100c0c0913130d0c0c0b0912 *0c0e77797d3026320400000000000000000000000000020000020000000000000100010601001b *06030800000000000000000000000000030301041414142a24151a110a16110c1b1614251f1622 *1a162e271e56473fa6a5a3a59a89abadaeada79aa8adafa8b6caa6b6cba6b8ceabbaccaab8cdae *bed0a8b9cea8bbcda2b5cb98aec597afc699aec59fb1cd9cadc09aadc595adc397abc092a9c194 *aac295adc594abc698b0c69aafc597a9c195aabe93a9be97abc197aac394aabf96aac399acc695 *a9bf91a9c68fa8c199a7bf91a9c097a8bd8ba8c095abc492aec492aac196aac391a7bd98aac092 *aac191a6bd8fa5c197acc095aac392acc196a9bd97aabc8da5c08fa5bc97a9c190a8bd96aabe96 *adc396adc399abc296a6bc98aabd9aaec398abc39aadc79fafc99aacc398acc49dacc29fadc3a2 *b0c7a0afc9a6b2c8a9b5c6a5b7c6a4b7c7a9b9ccaab8cda9b3c9a9b9ccb1bccfb0bccdb1bcd2b0 *bfceaebdcdb2bdccb2baceb3c3d0b1bed1b4bdceb5c0d1b4bfceb4c3d4b7c3d3bbc0cebcc3d3b9 *c3d3b3c1d1bbc7d7b7c4d5b8c4d5bbc7d6b9c7d6bac4d4bcc6d6c0c7dbc0c9dac2cbdbc5ceddc3 *cfdbc5d0dcc6cedec7cfdcc6ceddc2cbdcbac4d5adb1c6adbaca90a0b55c678221212b1e171f3c *1c1f464e572b2e404e69691d23391c242807081802000300000700000100000000000000000000 *00000300000100030100000200000000020000010000000000000c121103050803060802000101 *00011e231d4546459499989cb1c27694b63d4a6568685fbac2c6bfc9ccb9c3d0b0bec8afbbc4a1 *ada78887729ca9aea4b7c9a7b6c69eadb2a7b7c5acb8cab0bdceacc2d2aabdceabbfd4a9bdceac *bed4b6c1d5b3c2d6aec1d0acbdd2a9bbd0a5b7cea4b6cca1b6d097aac295acc48399b257545239 *3730281f170e0b0b0d04070e090a0f09030502000102030606030000020805060903060c06050b *07060403050003050704070403030c040a0c0c0e1e1416090404060504070d0c0c0c080c040915 *0f07170b02150e0c24231323271f2f4249373b3018150e110f0f444851708fa74d606c2b332608 *0a07000205000406000209060105050607030a0707150c1f2c1a2a422c30312b394a3c323e2f83 *8c91b1becdb5c0d1b1c0d1b4c3d3b5c5d7bbc8d9bac9dcb9c4d5bbc3d7b7c5d6bbc6d3bdc6d1b5 *beccb1b3b1acaeadbac2d2c1cadcbecbd8c1c7d8bdc9d8bdc8dbbcc9dbbac8dbbac7d8b7c3d1a9 *b1b6a2aebb99abb87b7e875b60634d474a979fa8888c935a4c3546442c5147427d89976c7c7b4c *462f423c285849347160418a7e6ca8b3c5b0c1d0b2c4d7b5c8dbb3c7d8adc7dbb2c7dbb0c4d8b1 *c4d9adc3d7aec2d8b1c3d8aec4d8aec5dbb4c6ddbbcadeb9c9ddbccadcb9cce0bbcddfbfcee0be *cee2bfcfe0bbcde2bfcfe0becde1bbcbdcbbccdfbbccddb9cadebacce2bacce1bccfe1bdd0e2bd *cee0bbcce2b9cddfbacde0bbcee1bbcfe2b9cfe2bccfe1bbcedfbccddfbccdddbbcee0bacee2bb *cee3bacfe2bacee0bdcfe0beccdfbbcbdfbbcee0bdcee0bdcfe0b9cedfbacde0bacee1baccdeba *cde0b8ccdfbacfe0b6cce0bdcee0bbcee0b9cfe2bbcee1bdcee0bdcee2bdcee0bed0e1bad0e1bd *d0e2bdcee1bdd1e1c2d1e1bfd0e0bfcee0bccfdfbdcee0becedfc3d0e1bfcfe1c3d2e2c3d1e1c1 *d1e1c2d1e1bfcfe0c0cfe0bed1dfbdd0e2c2d0e2c1d1e0c3d0e0c1d1e2c0d0dfbdd0e0b9cedeba *cbddb5cce0b7cee0b8cee0baccdeb7c9deb5caddb6ccdeb7cbdbb5ccddb4cbdfb3ccdeb7ccdfbc *cedebacee0bacfe1bccde0bacddfbacde0b8ccdc7d8da028262b2c231e332b287e7873abbec550 *4d462225272a26225a44449ba0a644403c2521243630278e85789286729a9ea2b6cddeb8cddebd *cddfbcccdfb9cee2b8d0e0b3cee2b7cde0b8cce0bbcee1bdcfe1bbcee0bbcde2b7cee0b8cee2bb *cee2bbcfddb4cee2b8cee1b9cee0bbcee0bdcfe1b9d0e2b9cee1bccfe1bacde2bbcde2bed0dfbc *cfe0bdcfe2becfe1b8cee1b7cee3bbcee1b9cfe3bcd0e2b9cfe1bccee2becee2bacee1bbd1e2b9 *cee1becee1bbcee0b6cce0b7cee0bacde0bccfe2bcd0e0bdcee1bdcfe1bdcee2b9cee2b6c7dbb7 *c6dbb2c7dbb1c4d9b0c5d8b2c6d9b1c3daaec5d8b8c9dbb7c8dabacaddb5c7ddb9cadbb8c8dcbf *cbdcbfcdddbfcddec2cdddc3cedec3d0e0c8d1e0cbd4dfc8d2e0cad1ddc9d2dfbcc5d1302b3316 *101813121d1d2323191f151b28282a261a423f239c9986989789a6a39da7a08f9a8c79553b2690 *7d60bfc9d6c2ccdc9995a34e383249322a4c34265c3f2a615c49aea17eccd3ddc8cfdc8e6c6f5f *3a285034265235226b593e776046a39d97bdc7d5bbc6d57d6469472f24482d22452d1e442e1f4d *3123a9a19fc7cdd9c5ccda796d6e47322944363239372a463524553a27a1a29ebac5d5b2c0d25e *4d50422a1e3225203a281d2f2722462823979a96b1bbcba5b7c95245452b1b1d3c1e1e3e281e41 *2b1d3b241c95968c546284080a1403050f04040c080a0f0e110c0e0c0b0e0e0c0f0b065240331f *0f101a111a050917000000000000010000000000000000291b17281c1f1f13151d1916231d0e28 *22152f1f172d1f1d403a2c9d9791a7a5a7a9a4a4abaaa6a4ababa9b8c8a8b7cea3b5cba4b3cba4 *b8d1a2b6cea4b8cea5b8cba3b5cb9eb2cb99afc999aec698acc799afc895aac697abc697abc398 *aec496aac497acc59badc893acc497acc796acc594abc399b0c699abc79badc696a7c18fa8c095 *a9c695adca8daac190a8c496a8c09eaac598a9c19aa9bd97a8be93abc48da7c392aac59caac198 *a8bb94a9c18ea7be8ca9bb91aabc97a6bf8ea6c695a2bf91a3be96aac696aac391a8c193a9be92 *a9c195a8c599adc790aabf9caac399a8c295a8c19bacc29babc39baac397aac699adc89badc69f *aec59daec9a1aec29db0c4a5b4c9a6b7cda8b6ccacbcceafbbd1afbdcfafbdceafbdcfb1bbcdb5 *bdd3b2bed3b7bfd3b4c2d6b2c0d4b7c0ceb7bfd4b8c3d4b7c0d1bbc1d1b8c0d6b9c1d4b9c3d7bb *c5d6bdc7d1b9c5d8b8c5d7bac1d5b9c2d2b9c6d7bbc6d9bcc7dabbc6d6bdc8d7bfc8dabecadcc0 *cadbbfc9dcc0cbdac1ccddbfccdabfc9d9bbc7d8acb8d185879c9baab88b9baf6360602f31521c *0d1d26212c2215211d162103050b03000900000e00000600000a00000500000000000000000000 *000000000000000000000002000202000200000000000100000000000500000200000500000705 *00050403082324233246621b202d2d23302317173a353d607877b8c2c5bfc8cdb6c6d3b3c3d3b1 *c1d1b3c3d3adbeceb1bdcfadbdcfacb9ceacbdceb1bfd4b0bdcfb1bdccaebfd3b2c1cfaebeceab *bdceaebbd1aebdd1aec0cfabbed1a7b8cda6b6c9a4b6cea3b6cb9eb3cba0b4ca9db2c89eb2c696 *aabb8996a16c7c8942382a3124213a3a3d3531181911060e0b07140a0b0c02012110040b0a0512 *0f061a160d1c0f0a180a031a0f05160a040f0402110a041c170d160f0c0e0905100b0c10080921 *1814251d12231d111e200f1c201d222d3b3b392f372316524933534d464d596959677b3c3b2e3f *484b09060601000204030a0b08090a14120a08080c1f1f1e322b2d2b22766f5aa7b1b97666448d *8768b0bac9b7c5d3b9c6d3bac3d3b9c5d2bbc7d6bbc7d6bbc9d8b9c7dbbac5d7c1c9d6c5cbd8c1 *cadbc2c7d2bfc7d4c0c8d8bdc8d8bfcbddc1cdddbdc6d8bbc6d7bdc9d9b7c8d9bbc9d8bdc8dabc *c6dab1c1d1aabbcca1b2c299a4af838b868d9b9d97a9bdabbcc9abb2bb9fa19c94877b8e84828f *8775948d7aa1a59ea3a2a7abb3c4adbed1b5c3d6b6c4d3b3c5d8b0c4d8b2c6d6b6c7dbafc5d6b1 *c3d8b2c5d9b6c6dab0c3d7afc5d6b3c4d6b0c1d8b6c9dbb6c7ddbbc9dec0cedebfceddbdcedbbf *cedebbccdfbccadeb7c8dcb7c7ddb9cae0bcccdebecddebccedcbecde0becedfbccee1bdcee0bc *cbe0bccee1bccee1bccedebdcdddbdcedfbacee1bbcfdfb8cce0bbcbe0b9cee0b5cddfb5cddfba *cde0bdcee1b7cde0b7ccdcbccedebdd0e0bdd1e2bacfe0bbcfe0bdcedfbccbdebbcdddbbcee0b7 *cce0b8cee2b9cee0bbcfdfb6cbdfbacadfbacce0b8ccdebccde0b7cfe1bbcde2bacee0bccfe0bb *cedfbcd0dfbbcedfbacfe0bccfe1becfe0bfd1e1bcd1e1c0d1e1c0cee1c0cfe0c0d1e1c0d0e0c0 *d0e0bdcfe0bdd0e1c2d1e0c1d0dfbed1e2bdceddbdcfdebbcddebed0e0c1d0e2c3d1e0bdd1dfbd *ceddbbcedcb8cde0b8cddfb9cee0b6cbe0bacedfb6ccdfbbcdddbccddebbcedeb6caddb9cdddb9 *ccddbacedebbcedebbd0e0bacfdfbccddcbacddfb9ccdc9baab4292e302927282f2b278e989eb5 *c6d3725e564a2f2545322b989b99b0c0cc5754554727215234259a8d86bbc1c9b7c9d5b9cddeba *cfe0b9cfe0b9cfe0bccfe2bdd1dfbed0e2bacce1bccee0bbd0e0bacee0b8cfe1b7cee0bbd0e1bc *cfdfbdcee0bdd1dfb8d0dfbad0e2b9d0dfbacee0bccfdfb8cee0bcd0e1bacee1bbd0e2bacde1b9 *cee0b8cedfb8cee2bcd0e1bccfdfbacee1bccfe2bacedfbdd2e1bbcfe1bbcfe1bbcee0bed1e1c1 *d1e2c2d0e0bccedebccfe2becfe0bbcfe2c0cee0bccedfc0d1e1bfd1e2c1d2e0bbd0e2becee1bd *ccdebdcbdbb6c7dbb6c6d8b0c4d8b3c6d8b0c4d5b4c3d8b3c6dab8c7d7b7c6dbbac9dcbeccddc1 *ccddc3ceddbdcdddc2ccddc3cedec2cdddc1cfdfc7d1e0c8d2e1cbd5e0ced4e0cdd6e1c2cad641 *34331e1f2014191a1d19101e1818272320351e1d42382c9a9882908265a39384a8a08cb6b2aebd *c1c5c5c7cbc7ccd9c7cfdac6cbd3c3c7ccc2c4c7c2c4c6c3c8c8c7c8c3cdd2d5cdd6e0ccd6ddc7 *ccd2c3c7cbc3c7c7c2c6c8c0c3c6c0c3c8c1c7d0c3cddac1cbd9bcc3cdbfc2c6c1c6c6c3c5c6c5 *c7c7c7c8c8caced6ccd3dec8d3ddc3c9d2b4acadab9889a47759c0c0c3bcc3c9c2c7d0bfc9d7b8 *c1d2958496b6bbbfbcc1c7b8bbc2b4b9c1b3bac3b6c2cbbdc9d5b6c3d0abb3bc9d7249bcb6adb9 *b9b5b2b5b5adb1acadb9c65858760c09090401020a09050f0a07160c08180a0d130a0e16080431 *1305310e02390e063812032e0d08310d0d3f16113d19153c14085e51422b1b15130f08151e1727 *282d221e2428241d271e1a4230219e9996a9aaaca495859f92947a75729eacc2aab6cdaab6caab *bacea7b9cba5b8cfa3b9cc9fb4cc9bb0c99cb0c79fb2c79db0c79baec699acc498adc59cafc79b *abc69cb0c99baec896adc8a1b0c29bb2c5a0afc79dabc59caec59cacc4a0acc29ba9c594a8c296 *adc395abc698adc598adc79dacc39faac09baec597adc790aac396abc494aabd96aac198abc38d *abc69cabc199a9c396aac399aac192abc198a8c398a8bf97a6bb99aac498a5bd99a7c196a9c397 *abc197a7bd9dabc497abc09cadbfa1adc2a1aec498acc592aac599adc69eaec59cacc6a7b1c2a0 *afc4a2b0c7a3b2cba3b3c8a9b6c9abb6c9adb6c8acb8ccb1bccbb1bed0b4bdd1b1bdd0b2bfd5b8 *c3cfb6bfd3bac0d3b8c3d0b8c3d3b8c3d1bbc4d5bcc6d9bbc1cfbcc5d4bcc2d1bdc6d9bcc6d3c1 *c7d8bcc6d6bec6d7bac6d6b9c7d6b9c5d4bac3d2b6c5d4bbc6d2bbc4d8bac6d6b7c6d8bfc7d9bd *c7d7bbc8d5b8c6d7bac5d8bbc1d4bcc6d6bac4d6b8c5d9aebbc9a9b6c48792a9929eaa8194aa6e *6e776962587f887f484447433e421f1a150d06090400030100010602001c170e00000007000006 *00020b06020b0003000000171c0a00000100000000000000000000000000000101000004000003 *010004040807040803050e0200040b0606736133b9baba8e8b9a5e7075b9c2c5c0c8ccbbc7d7b3 *bfcfaebed2adbfd4adbed3afc3d5adbed5acbed1adbfd5b1bed3b2bdd3b1bed4aec0d6adbfd3aa *c0d3aac1d3aabdd1a9bad1a4bbcfa2b5cc99b1cb8eb0cc95aec697adc691a7c480a2c289a6c491 *a7c689a1c180a3bd7490aa6b87945a545a60586058657427292c1a15121d171717141d2b2e2e36 *30293639352a2a271e180e1d1d1215140e18160b11150c2e2a1e1f140f1c0a0b1e0a061f170e27 *160b1e0e0e2b221a28201e23252722201d1e17172a1d24585568798e98475d5d3749482340631c *23240a0a1500000700080b09140e08111303080b0e1f132634283733228d8a81aebacab8c1d2b1 *bdcab3bed0bac6d5bcc7d6b8c8d7b9c7d6b9c6d4b8c6d8bdc7d9bbc9dcbbc6dabec9dcc2cbd9c0 *ccdabcc8d8c1c8dcbdcadbbcc9dbbdc7d8bbc9dbbacaddbdc9dbbac9dbbbc9dbb8c7d9bdc8dbb7 *c5dabbc6d9b7bcc99fadb0979eb19db0c3948c938179837c66619b9fabb4c1cebbc7d6b6c4d0b6 *c4d1b2c4d3b2c2d4adc1d2b2c4d6b7c5d8b4c5d7b0c4d8b8c5d7bac7dbbac9dcbac6dcb6c7dbb1 *c5dbafc6d8b0c7dab1c6d8aec6ddb6c7dab4c5d8b2c7dbb1c9dbb0c6ddb7c9debacadcbdc9debb *cbdfbacbe0b7cadebac7ddb4c7dcb5cadcb7caddb8cbddbecee2c0cfe1bfd0e2bdcedfbccee0bb *cde2bdd0e3bccee1bccfe3b9cee0bacee1b9ccdebbcedfbacee0bacee0b8cce0b9cee1b7cce0b8 *cde1bacee1bdd0e2b5ccdeb7cce1baccdeb8cee0b8cde1bfd1e3b8cbe0b2cde1b9cee1b6cde0ba *cee0b7cde0b8cbe1bccde2bacce1b5cde1bacfe1bbcde1bacce0bbcde2b5cce0b8cee1bcd1e2bb *cfe0bccfe3bbcee0b7cce1bbcfe1b8cee1b8cee1baccdfbcd0e1bacfe3bccfe2bbcde0b6cce0b8 *cfe1bacedfb8cee1b7cddebbcee1bed0e2bacee2b7cfdebacee0bacedebdcee0bdcee0b8cbddba *cde0bdcfe1bbcee1bccddebacee0b6cee0b7cee1b8cce0bacee2bccee0b9cce1b6cddcbbd0dfba *cedebbcee0b8cee2b8cee1b9cde1bacee0bccee2bbcedebbcde0b4c6d08f8a74867a658a7c6fa8 *b3babac9d99fa5b3998f8f8d8787adbac4b8cad9989a96949297a7a7aabac7d4bbcddcb9cfe0bc *d1e1b9d1e3b8cee0b6cce2bccfe2bfd2e2bbcfe2b8cee2bbcee0bad0e0b9cee0b8cfe2bacde2bd *d1e2bacee2b9cee2bbcfe2b9d1e2b9d0e2b7d1e0bbcee1bacedfbad0e3b9cfe2bcd1e2b8d1e4ba *d0e3b9cfe1bacfe1b9d0e2b9d0e3bcd0e5bdcfe4bcd0e2b9cfe1bcd1e1b9cee1bccfe2bdcde2bd *d0e2bbcfe3bed1e4bbcfe3bdd3e4bdd1e3bad0e3bdcfe2bdd0e4b6cee3c1cee3c0d2e5bbd0e3bb *d1e2bbd0e3bfcedfbdcbdeb8c7dcb5c6dab1c6d9b3c5d8b6c7dbb3c7dbb5c8dab6c8ddbbcbddbd *cbdfbfcce0c1cfe1c2d1e1c5cfe0c6d0e0c3cfe1c3cee0c6d0e0c9d5e2c7d5e2ccd5e0cbd5e2c1 *cdd643383916161e0f11191519191a181c1a211c3b34274b422b999177988e7baaa197aa9980be *bbc6c5cedbc9cfdecbd1e0cad5e0c9d6e3cbd2e1ccd2dfcad4e2ccd6e1ced8e2cfdae2ced7e3cb *d5e0c7d3e0c9d1e0c9d2e1cad2dfc6ceddc7cfdfc5d0dec2d1e0c2cedfc4ceddc5d0e0c9d2dfcc *d6e2ced8e1ced6e1cdd7e4cdd7e3cdd6e0ccd3dfc7d1dfc7cfddc9d0dac6cfdec7d1dfc3ceddc3 *cfdbc1ccdac1c4cec3ccdbc7ceddc6cdddc5cedbc2ccdbc3cbdcc2cad8c0cbdbbdc9dbc1c8d6ca *d2ddcad3ddc1c9d8bcc6d3b6c3d15e677a0a111505040a05030b0b0609130e0a1312101d17101d *1914827255a09174a292849e897aa69f95766c5ba7acb5aab1b29d9da64f41373628231e171325 *1f1d2a282323232226211e24241e403624a2a093b1a59faaa69da49891a4987aa7b6c1a4b8cca6 *b8cea4b7d0a7b9d1a4b9d1a4b3ca9fb4cb9cb2cb99b1c799b1cba1b2cb9ab1c79bb1caa1aec79f *b1c6a2b1c7a3b1c89fafc8a5b3c9a2b2c9a3b3c7a2b5c9a2b6c99ab4c9a0b3c8a0b1c79aafc99c *afc79eb3ca9ab2cb9bb1c694acc396aec29fadc39dadc49daac998aac598aac39baac695aec696 *b0c395acbe9cadc79aa9c59daec5a2b1c39eb0c49bacc39cadc49aabc59daec79bacbd9baac197 *aac79eadc69dacc198aac19daec19cadc69bb0c7a0afc7a0afc89cabc6a0afc79cafc9a0b2cba1 *b3caa3b5c9a6b6cba6b6cbabb5cbadb6cbaeb8ccafbdceafc1d0b1c1d1b3bed0b5c3d5b9c3d7bb *c3d6bac5d6b9c3d6bbc4d6bdc6d8bac6d7b5c5d4b9c4d6c0c8d9bfc8dac0c6d9c1c8dbbbc7d9be *c7d9c1c7d8bfc6d6bfc9dbbac5d8b6c4d9bac5d8bbc4d8b9c4d8b3c3d6b5c5d4b2c2d5b6c4d5b5 *c3d5b5c1d3b9c1cfb8c4d5b3bfd4b3bfd2bac5d3b5c4d7b7c1d3b0c1d49a9fb2756d6e4f5b7975 *8a99668ba05b79973f476c3d3842303246463b322837491d24200b0d0c151712100d0f0705061d *0f0c1c1e281a121103030c01050403080a020004010003060007010002080109170b092c393622 *201e28262607070f040f1d0a0916070108371c11a89265c6ccd28b85a153676ebac2c7c1c8cdb8 *c4d5b5c5d5aec3d7adc3d8b1c2d7afc1d6aabed3a6bdd3a4bed1a9bdd6aabcceaabed3aabdcea5 *b9d19fb7cd98aec78fabc691a8c58ba5c289a4c1819fc180a2bf89a5c0869dc188a2c0859fbb84 *9fb98aa3bc8ba1ba8aa6bf8aa4be90a6c18aa4bc87a0b96e80955041325441294f412a3f302762 *4754748392626d704247444d4b49383225150f111c16131f170a1d18112b241e1d0f121e0f0a27 *1610281516291d10291d132e231a26191733221c3d2f25564b4d504f5a2e2a27211e1d1615080a *1a26000108000007000003020505070c091325210a0a0d0c1615252725889aada2acbbb7c4d2b7 *c3d2b5c2d3b6c4d4b6c3d3b8c5d5b6c4d5b8c6d6bac5d6b9c6d4bbc6d6b6c7d8bdc9dbbcc9dbbd *cbddbac7dabac7d8bbc6dbbbc6d3bbc5d8b9c9dbbbc9dbb8c7dcb6c5d8bbc6d9bbc6d3bbc7d9b6 *c6d9b3c3d7b8c6d8afbed1a2a8b697a4b08888919297aa8b878fa0a6b69a9ca4b5c3d3bcc8d9bd *c8d9b7c7d8bac7d8b6c7d8b2c4d7b4c6d8b5c6dbb6c6dab3c6d9b7c5d8b7c5d9b7c6dab5c6dab7 *c7dbb5c7dbb4c6dbb3c3d8b1c7dbb5c4dabac7d9bbc9ddbbcad9b6c8ddb1c6d9b2c5dab4c7d9b8 *c9dab6c6d9b6c8dbb2c6dbb5c6dcb5c7dcb4c5d8b3c6d8b3c9dbb9c9dbbbccdfbdcedebdcee1bd *cde1b9cbe0bbcee0bbcde0b5ccdfb7cddfb8cedfbacde1b7cddfb9cce0bacbe1b9ccdfb4cbdfb6 *cadfb7cbdeb8cbddbacce3b7cee3bbcee2b5cce0b7cce0b6cbdeb7ccdfb6cbddb8cde0b8cee0b6 *cddfb5cee2b6cadcbacee0b9ccdfb7ccddbacbdebacce0bbcee1bbcde2b9cce0b8cee0b9cddebc *cee1bccee1bbccdfb8cddfb8cee0b8cfe1b8cde0b6cbe0b7cbe0b6ccdfbacfe0b8cce1b7cee1ba *cfe2b5cde0b8ccdfb7cde0b5cbdeb6ccdfb4cadcbaccdfb9cfe2bbcfe0b6cce2b5cce2bac9dfb8 *cbddb6cce0bacedeb7cee0b8cee3bbcfe1bacee0bbccdfb6cbdeb7ccddb9cee0bacedfbbceddb7 *cde1b9cee3bacbe0b9cce0bacedfb9ccdfb9cedeb9cdddbacde1bbcee0b9cddfb7c8d7b6c7d6b9 *c8d6b5c9d8b8ccdbbaccd9bdcddabacbddbacbddbaccdbb9cbdab4c9d8b6cbdebad1dfb7cedebe *cfe3bcd1e1bbcddebdcddeb4cddeb8cde0bdd0e0bccfe2bbcee2bbcee1b8d1e2bacee2bacee0bd *cfe2bdcfe2bcd0e2b9d0e2bbcee1c1d3e3bdcfe0b9cedebed0e2bccee1bacddfbacee1bdd0e1bb *d1e3bdd1e2b8cee1bbcee0bad0e2bdcfe1bbcfe1b7cee0bdcde0b9cfe0bed2e2bdd0e4bdcfe2bb *cee1bacee0bad0e0c0d2e3bdd1e2b7d1e2bed0e3bdd0e2bccfe0bccee3b9d0e0bbcee2bdd2e2bd *d0e2bdcee2bccee3becbdfbbcbddb8c7dbb4c7dcb0c7d5adc3d8b0c3d6b3c7d8b7c6d8bac7d7b8 *c6d8bfcaddbfcbddc3cfdec4d1e0c7d1e0c5d0dfc7d2e1c1cee2c5cfdfc6d2e2c8d3e0c7d2e2c9 *d1e1c0cad83d3b3f1216191311151611141e1a161e1d183b3e3d3530248f7f619c8f76b2a9a6ad *9c89bfc1c6c7cedccad1dfcbd3e0ccd7e1cdd6e0ced8e0ced6e3ccd8e4cdd6e5ced6e3d1dbe2ce *d6e3c9d2e0c6d1e0cad2e1c9d3e2c7d1e0c7d0e1c8d1e1c6cddfc5cfdfc2ceddc4d0e0c9d2e1ca *d2e2cdd5e3d0d8e3ccd5e2ccd7e2cfd7e3ccd5e3cbd6e1cbd5e2cbd4e2ccd3e2c7d3dfc9d3e2c9 *d2dfc6d2e2c6cfdfc6d0dec6d1dfc6d1e0c6cfe0c9d1dec4ceddc3d0e0c6d0ddc3cfdec7cfdbc8 *d1dfced6e2cdd7e1c8d3e0c3cddab8c3d5737a93120b1508030b0502090d0a101d1610232a231b *211e221b17847d6da4998cafa394b1aaa9a5a6b2756e70aeb8c8a9bbc98f9bb04040362c262a2b *25261f17161d150b1e160e25190f1a1c163f2c1d9a8b75b1b2b1aaabaea29d99968d80a0aabaa2 *b1c7a1b1c8a2b3cba4b5caa2b1c8a5b5cd9eb1c99ab2caa0b3cb9cb1c8a6b2cba6b6cba6b7cba4 *b5cca5b6c8a5b6cda5b1c9a0b3c9a4b4caa3b5caa4b5caa7b4caa7b5caa2b2cb9eb2c79fb2c9a7 *b2c7a3b5caa3b4c99db2c7a1b3c8a4b1c9a0b1cb9fabc29daec6a0b4cb9caec3a0aec39cb2c8a2 *aec99cadc69aabc39faac79babc79aaac6a0b5c89fb1c79db0c79aaac79caec79dacc79eb2c297 *acbf9babc195aac99eaec99eafc79baec89eafc8a0b1c99bacc6a1aec6a2b2c7a1b0c7a1aec9a3 *afcba7b8cba9b6cda9b9c9adb9cda8b6cdaab9cdadb8cbb2beceb5c1d2b6c3d6b7c2d6bbc1d0b9 *c4d3b8c3d6bbc6d6bfc8d7c1cadabec9d9bfc7d9bdc8d9bbc5d7bcc4d6bcc7d8bdc7d8c0c7d8bf *c7d6c0c8d9c2c9dbbdc6dac1c7d6bcc7d7bbc1d6bcc3d3bbc2d1b8c2d2b5bfd4b6c0d3b1bfd2b2 *bcd1b3bdd1b2bed3b5c1d4b2bed3b4bfd3b4bfd1b5bfd2b4bfd2b0bdd3b0c0d0b1bfd2b0bcccaa *b0c1a6afbb6b7074483c437356417060637472545b738222293a2623252c1e186a605382797a2b *24221b141a0c0e160a02050000030000070b0607141719090b1a00000401010300000402000211 *0a0a23150f1a12170400080302082d2522765d409fa4a5b7bcbec2cbd7b9c4cfa1b2babcc5cac0 *c9cdb1c3d1a7becfa4b9cea5bcd3a7b9cda3b8d198b0ca99b2ce9cb3ca95b1cb94b3cb95b2c991 *acc985a8c48dacc680a4c07da1bf81a2bd759ab8749fbc7da2ba85a0bd769fbb799cbb829cba83 *a2bf89a4c27f9fbc87a1bf89a2bc93aabf97abc28ba6c38ca7c18da5bc8ba0ae839db187a0ad8d *a3b690a8bd90a6bf92a4ae8699a46773873243482b3a2d3133282a3227211d182f322c1e2f2c1f *1d0f202518362818282112302a2040261b4e2d2481857799adb58d9899818e93473b2c150d0f00 *060d0000060000030104080a180a162816132b1e0b1911232f1e525239757a5ea7b4c2b0beceb1 *c4d4b1c2d0b0c0d1b1c0d4b2c0d2b3bfd1b1c1d4afbed3b0bfd0b0c3d1b6c6d6abc1d5b1c1d3af *bdd0b2c1d3afc3d3b0c1d1adbfd4b1c3d3b3c5d6b1c2d4b1c3d6b1c2d4b2c1d1b2c3d6b6c3d4b4 *c3d4b1c3d1afc2d1b2c3d6b1c1d2adbed3afbdccaebbccafbcc9b0becdb3c2d1b5c2d3b4c5d5b9 *c6d7bac6d7b9c6d6b8c9d9b6c6d7b2c5d8b4c6d6b6c5dabbc8d8bac9dab9c7d9b7c8d8b9c8daba *c7d7b6c7d6bbcadbbbc9ddb9c6dab6c9d8bac9d8b8c7dbb8c8d9b9c9dbb5c7dab6c7dcb4c4dbb2 *c8dab5c8d8b0c6dab6c7dbb5c7daaec5dbb4c7dbb1c7dcb1c7ddb1c6d9b2c7dbb4caddbacddfbc *cfdeb9cddfb6ccdfb8ccdfb3cadeb2cadfb4cbdfb6cddeb5cbddb6cde0b7cdddb3c9e0b5cbdfb5 *cbdeb5ccdfb4caddb5ccdeb6ccdcb6cee0b4cee0b6cce2b5cadfb2cbddaec9dcb5ccddb1cbe0b7 *ccdeafc9ddb4caddb6cbe1b6cadeb6cbdbb5cbdeb2ccdeb6cddfb1cbdcb9cce2b8cde1b4cce1b4 *ccdeb6ccddb4ccdcb6cdddb8cfe0b6cdddb5cee0b8cddfb9cde1b0cbdab5ccdeb5cddfb3cbe0b5 *cddcb5cde0b6cde0b7cfe1b9cddeb7cddeb6cddeb5ccdeb6ccdeb6cce2b5cddfb9cfdcb6cce2b4 *cbe0b9cddeb3ccddb3ccdeb3cbdeb6cee0b7cde0b4cbdeb7cddfb2cbddb3ccdeb1c9ddb1c9dbb6 *ceddb6cdddb6cbdeb7cde1b7cde0b8cfe0b6ccddb8cde0b8cfdfb7cfdeb9ceddb6cee0b6cddcb8 *ccddb6cbdeb6c8dbb6cbdcb6ccd9bdd0debacedeb6c9dcb8cbdfb6cbdeb3cbddb6cedeb7cddeb6 *cce0b9cde0b4cddeb9d0e2b8cfdfbad0e0b6cfe0b6cee0b6cfe0b6cedeb6cddeb7cedfb6cee0bb *cee3b5cde0b6d0e0b6cedfb8cfe0b8cddfbfd1e1bbd0e2bbcfe1b5cde1b8cee1b7cedfb9d0e0bb *d0e0b9d1e2b8cde2b8cde0b9cee2b9cedfbacddebbcfe1b8cddebacee0b6cedfb8cfe0b9d0e2bb *cee2bbcde1b8cfe2b9d1e1b7cde0b8cee2bbcee0bacfe2bdcedfbdcfe1bbcee1b6cee0bacee1b6 *cde0bdcfdfbecfe2bdcee2bfcee0b8cadeb6cbddb7cbdbb2c7d9aac1d7adc6d7aec3d7b3c8d7b5 *c8dabbcadcbcccddbccbddc0cddec5d0ddc6d3e0c6d2e2c7d5e2cbd6e2cbd5dfc8d4e2c6d2e1c6 *d3e1c5d0dfbdc8d64537381010141a121218171313110a1b1b1f1f2724282a1b887d5a8687689a *9485aaa498bdbbbdc9d2ddc7d3e1ccd6e2ccd7e2cbd8e4ced8e4ced7e3ccd6e1d1dae2cfd8e4ce *dae4ccd6e2c9d1dfc4cfddc3cee0c4d0dfc2ceddc2d0ddc4cedfc4cedfc3cedfc2cee1c6d1dfc9 *d3dfc9d4e3cbd7e2cbd7e2ccd3e2cbd3e2ccd6e3cbd6e3c9d3e0cad4e1c9d5e0c9d7e0c9d3e2c9 *d2e2c7d1e0c6d1dec7d3e1c9d3e3c6d1dec7d1dec7d2dec7d3dec9d2dfc6d1e0c7d0dec7d3e0c9 *d3e1c8d4e0c9d6e2cbd7e1c9d3e2c6ceddbac7d57b819b0c13170208090606040e1211191f1f13 *131b14161317171468644d858081a1a5a6a1a096a4adb38c848bafbecda7b8c64651751f191d0a *090d02040702040c0a1214151e26101d270606071417165a5a686667765a4c534e4c547c615d9e *aec19eb0c69bb0c79cafc8a3b3c79bb1cb9fb1c79eb5c99ab3cc9eb4d09dafc9a5b6c8a4b6cba6 *b5c7a4b7c9a5b8cca5b6c8abbacda4b6cca7b8cca5b7cba6b7cba8bacda9bacca8b6ccaab8caa5 *b2caa4b1caa5b4cba6b5caa5b7cba2b0caa4b1c99fafc9a8b2c8a4b3ce9cb1cb9dafcaa2b1c9a0 *aec596b1c79bb2c99caec79fb3cca1b1ca9aaec799aec592aec09cb1c69ab3c99ab2c796b2c99e *aec79fb0c796adc597adc795adc394aec799b2ca9db3c89db1c9a2b0c9a0b0c7a3b2c9a5b6c7a3 *b4c6a2b8caa6b4cbabb9c8a6b7ccadb8d0b0bccdaebccfaebccfb0bdcfb0c3d3b4c2d3b4c1d6bb *c3d5bdc7d8bbc7d9bdc8d8bcc6d7c1cbdbbfc9dbc0c9d9c0c9dbc0c7dabcc7d8c1c9dbc1c9dbbc *c7d7bdc9d5bec9dac2cbd6c0c9d8bfc8dabbc7d6b6c5d6b7c4d8b6c0d3b4c2d3b5bfceafbdd0b0 *bed1b0bed2b2c0d2b0bed0b0bed1afbecdafbdd1b1c0d1b7c4d3b2bfd1b3bdd0b1bed2abbcd1b1 *bdd0aab9cf8b9bb58b9aaba3b1b9a4adc29daac27384a42727471d211c302b257b8a918aa0b490 *96a28488932931420004090301051508030f0d0c2c2818202020434d500a010a0d0c0600010400 *02000e110d2b3c3b333637140a150700063526168086909a9ea4a8afb39dadc08798af728285b8 *c4c9c0c9ceb9c4d8b4bed2a9b6cca1b4caa2b1cb9fb1cd92adc68faac18caec78dadc78da6c68d *aac682a0c17da4c5799bbd879fc180a0be81a0bd83a4c0849ebb819fbd79a2bd809fbd7ea2be7d *9ebb86a4c085a3be89a6bf8da6c693a9c092a5be93a8c392a4c298aac19ba8c39aacc29eadc7a0 *abc19eb1c79aadc7a1b3c99daec393a4b5878c8b5b5b45585e514c4f565248343e4a3548443e43 *351d282a1e59545368624e5c5c476c6c7b9da2ae9fa6b3a4b0c4a4b3c7a2b2c8a8b4c8a4aec186 *866917180f0305040c0d090e0e0a161f15343c3b4e4325362822646365a6b0bfabbac8adbaccae *bdcfaabacfaabacdadbcceacbdd1abbcceadbcd0aebed2aebdd0abbcd0acbbd1aebdcfb0bdcdab *bacdaabcd1aeb9caaebdcbb0bdd0aabad1b4bdd1b4c1d3b1bdcfafbed4b1bed3b2c2ceb3c2d4b2 *c2d3b6c1d6b2bdceb2c1d2b8c1d2b3c5d6b5c2d3b6c3d1b4c2d0b9c3d4b7c3d6b9c2d6bac4d5b6 *c5d8bcc5d8bdc6d7b7c5d8bac6d6b6c6d7b9c8d9bac7d7b7c5dabcc8dbbac7d8bdc9d8bcc9dbbd *c9dac1c7dcbdcbd9bfcadcbdccdcbcc8dbbdcbd8bbc9d9bdcadbbdcad8bdcadcbbcbd9b7c7ddba *c7ddbbc7dbb6c8d9b6c6dab8c6d9b7c8ddb4c5dab1c4dbb7c6ddb4c6dfb5c5d9b6c6d9b2c6dab4 *c9ddb6c9ddb5c8e0b8ccdfbbcce0b7ccdfb8ccdfb6cadcb7cbddb5caddb8cadeb2c9deb8c9dfb4 *cadfb6ccdfb6caddb4c7dbb5caddb4c9deb3c9deb1c9dbb8cee1b8cce0b2cbdfb4cbdeb6cbdeb5 *cadeb7cce0b5c9ddbacce0b6cee2b9cde1b7cedebaccdeb8c9dbb7cbdcb4c9deb6cbdfb1c8ddb4 *cce0b9cee0b6cbe0b9cde0b8cbdfbacbdfb3cbdfb6cedeb5cde0b7ccdfb9cde0b9ccdeb9ccdfb8 *cbe0b4cde0b4cbdfb6cee0b6cce0b8cde1bacddfb6cadcb6cadcb9ccdeb6cde0b6ccdeb7cee1b5 *ccdebacce0b8cce0b8cbdeb7c9d9b8ccdfb7cce0b9cce0b4cbdeb4ccdeb7cddebbcdddb9cbddb6 *c9dfb8cbdeb6ccddb6cce0b5cce0b9cddebdcce0b8cde1b8ccdeb6ccddb7cddfb5cadab6ccdeb6 *cadbb5ccddb6ccdcbbcde0b6ccdfbaccdfbfcdddbbccdeb7ccdebccce0bacbdeb6ccddbdcee0b6 *ccdeb5cadeb8ccdfb6ccddb7ccddb6cddcbacee0bbd1e2baccdfbbcdddbacde1b7cde0b8cee2b8 *cee2b9cce0bacee1bbcfe0bbcee0b7cde2bbccdfbbd0e0bbd1e0b9cedfb6cee0b9cee0bdd0e1bc *cfe1b9cce0b8cde1b9cde0bacee1bbd0dfb9cedfb8cee1bacee1b8cde0bacddfb8cde0bbcfe0bb *d1e2bbcfe1bccee1bccee1bbcee2bdcde0bccee2bdcee2b7cee1bed1e2bdcee2becfe2bfd1e1bb *cee1bdcee0b8cee1bbcee2becde0c1cee0bdcbddbbccdeb9ccdeb6c7dab0c5d9b1c4d7b8c5d9b5 *c8dcbbc9ddb9cadcc0ccddc2cdddc8d0dfc8d3e0cbd5e1ccd4e2ccd7e2cdd7e2cfd9e3ced8e2cc *d8e2cbd5e2c9d3e1c0c9d74f3d3c1b1514171b191c1b16271c182214192a252a37302c9a8f8086 *754b928d72a9a291b6b6b9c8d2dccbd6e0cdd5e0ced6e2cdd7e2ced8e2cdd6e2ccd6e2cfdae5d4 *d9e6ced7e3d1d9e2cdd6e2c5d1dec4cee0c2cedec3cedfc4cedfc7cfe1c6cfdfc5cfddc6cfdfc7 *d2decad4dfcbd5e1cad4e3cbd1e1ced4e3cdd2e2cbd6e3c9d4e1cad4e1cbd4e2cdd6e1cbd6e3cd *d7e1cbd3e1c9d1e0c9d3e0cbd2dfc7d1e0c6d2dfcad1e2c9d3e0ccd5e2ccd7e0cdd6e0c7d1dec7 *d2decbd3e2cbd3e0cdd6e3cdd8e2cbd6e3c8d1e0bdcad58a8ea41a141b100508120c0d15131212 *100c0c050a140809221916857d6a8d72569d7b5aa89e85a8aaaa9d989cabb2bd9ca1ae3e333032 *21181e0f0e0d00011502010600001304021607081807051f0500683f149260289a6d3190733d93 *7b589eabbfa1afc6a4afc69daec9a2afc7a3b3c8a4b4cba5b4c9a4b6cdaab8cda8b6caa7b5cbac *b7cca8b7ceaabbcfa8b7caaab7d0a8b6cfabbacfadbaccaab9ccaab8d0adb9cfabb7cdaab8d1aa *b9cfa8b8cea8b7caaab8ccaab6cbacb6c9abb6cba7b6cfa5b6ccaab7cba8b6c9a4b5cba6b3c7a7 *b2caa7b2c7a3b4c8a4b3c79fb1c79eadc79eb3cba0aec79baec9a1b1c99fafc999b1c99bafc99c *b1c9a1b1c9a0b0c39dafc9a5b1c9a2aec9a1acc6a3b2c6a1afc7a3b4caa1b1c8a7b7cca7b9cba8 *b7caa9b3cca4b7cda9b7caacb6ccadbdd1adb9d2b0bed1b7bed1b7bdcfb5bfd0b4c1d1b9c4d1bb *c7d7bdc7d8bdc7d7c1c7dbc1c9d6c6cadbc2cadbc1cadcc1c9d8c1cad7c1c9d9c5ccdcc4cbdbc6 *c8dbc3c8d6c1cbd9c2cadbc0c9d9c1cadac3c8dabfc8d6bdc7d6bcc4d4bac2d4b8c0d2b5c0d1b4 *bfd0b6c0d2b2c0d2b3bfd0b5bbcfb0b9cfb1bcceb2bdd2afbccfb1bcd1b6bfd2b3bcd2b5c1d3b1 *bed0b1bbceb0bbcb9c9da2828fa397a8b6a1b1c76280ad6572895c6c743e475530302f696f698d *9aa29eaaba869eb3221d2a18070e1601051c0b0d09050c151023050410080a170e0d16080e1e06 *02080f0607242d2412122638382b757c6d4b46412d2e2c6872778388a37a819b9792928d9aa94e *646cbac2c7c0caceaec2d6aec3d5a8bacea4bdcb9bb1cda4b5d197b0c88daac285a8c58aa6c681 *a5c68aa5bf829fbd8aa2c18aa3be7b9bba81a1bd809fbd80a3c07ea1bf84a1bd859dbd8da6c37a *9fbb849ebd81a3bf86a4be8ba9bf92abc494adc595a5c291a5c293adc494aec892adc997adc597 *afc7a1b4c9a2b3c8a3b0c8a6b4cba3b3cba3b3c79ba8b390909c79939c798688726d5962624576 *85958d979f63614c8c92a093a3b17b877e95a4b9a0aec6a4b1c8a2b6cca3b3c99bb1cba6b7c9a4 *b4c69aaebf8b9b8e71705768664826201a3d392a5e646492a2af9aabb69eaec0a5b6caa6b7cfa9 *b9cdaabacca9bacaaabcceaab9cea2b8cfa6b9cdabb9cfabbaceaabacea8baceacb9ccaabbceab *bdd0aab9ceadbcd1abb7d0adbbcfacbcd0aebccdaebccfb2c1d6b2bed3b1bfd0b1c3d4b5c2d3b3 *c1d6b6c3d0b1c3d5b4c2d6b7c3d6b9c3d4b9c7d6b9c4d3bbc6d6bbc6d5b6c6d8b9c5d4bbc6d7bb *c6d5bcc7d5bbc8d8bdc8d9bac8dbbbc8d8bbc8d9bcc7d8b9c7d8bcc7d7bdcadbbdcbdcc2ccddc1 *cddcc0ccdec0cddec4ccdfc1ceddc1cddbbdcddfc0cedec5d0e1c3ceddbfccdcc0ceddbbcadbb7 *c8dbbbc9ddb8c8ddbbc9d8b6c6d9b7c6dabac9dcb9c9d8b6c7dab2c6dab5c7dcb8c7d8b4c6dcb6 *c9deb5c7ddb3c6d8b3cadeb6cbe0b6cbdcb8ccdfb7ccdfb2cde0b7cddfb8cbdcb6cbdeb4c9ddb4 *cbdeb5c9deb7cce0b6cddfb1cadfb7ccdeb5cce0b6cbdeb6cde0b3cbdfb7c9e2b9cbe0b5ccdfb8 *cde2bacde2bbcde1b4c9ddb1cbe0b4cbe0b6cce1b8cce0b3cce0b7cee0b7cedcb7cee0bacce0b8 *cbdfb6cedfb6cce0b6cedeb7cee1b7cee2b6cddebacbdeb7cddeb8cee1b9cde1b8cee2b7cee2b8 *cddfb8cfe2b5cde0b6cce1b6cee0b7cee0b8cee0bacfdfb7cee0b8cee2bccfe2b7ccddb9cde2bb *cee0bacde2aecbe0b6cee0b6cde0b6cee0b4cce1b8cce0bbcfe0bacfdfbacee0b7cee1b3cce0b6 *cde2bbcee1b7ccdeb8cbe0b6cee0b8cde0b8cddebbcee0b8cfe0b6cce0b8cee0bacde0baccdfb7 *cee0bacedfb7cddfb6cddfb6cedfb7cee0b7cde1bdcdddbacddfb6cce0b9ccdeb5cbdfb5cbe0b7 *cde0b7d1e3bbcee0bbcee0b9cfe0bacde0bbcee0b6cee2b5cee2b7cedfbacee2bcd0e2bbcde0b9 *d0e0b9cee2b8cee1bbcee0bbcee2bbd0e1b9cee3bacee0bccee2b9cfdfb8cee0b7cde1b9cee1b9 *cee2b8cee2bcd0e2becee2bccee2b7cde1b9cee0b7cee0b9d0e0bbd1e1bad1e2b9cee0bccce1bd *cfe0b9cee2c0d1e1bbcfe0bbd0e1bbcfe0bed1e2bacee0bbd0e0bbcee0b7cee2bdcfe0bcd1e2bc *d1e3bbcee3c1d0e4bbcfe2b8ccdfbccedebdcee0bdcee0c0cddfbdcce0baccdcb9c8dab6c4dab6 *c6dbb2c6dbb3caddbecdddc1cee0c5d0dfcad4e3c9d6e3cdd6e2d0dae5d1dae5d0dbe7d3dbe8d2 *dbe7d0dae5ced9e2d0d6e2c6cddb4a44452116131211121f1614241f1e6e4b2c3128292d28208d *85744d3e3a5b443ba49679b4b3b5c8d2ddc9d4e0cbd6e1ccd6e2ccd5e2ced7e3ced8e3cedae4d2 *dbe5d1dbe5cedae3d1dde5cbd9e2c2d2e2c2d0e1c2cddfc2cfdfc2cedfc3cfddc5d0e1c2d2e1c2 *d2e2c8d1e1c8d4e3cad6e2cad6e2cdd6e2cbd7e4cbd6e4cbd8e4ccd7e4ccd7e3ccd6e3ced7e3c9 *d7e4ccd7e3ccd8e4cbd5e0c9d3e1ccd6e2ccd6e2cbd6dfccd5e2cad5dfcdd6e2d0dae4cdd6e4c7 *d2e0c9d3e2cbd4dfcbd3deced7e2ccd8dfcbd6e3c9d0dfc2ccdb979bb129211c433422120e0c1a *16131617153c2718442f2420201e757a7a8185846b625daeaeaea6adb89ba1aaa7b9cb9fb0c941 *475f302d2c1013161817151b1e1d261b1a2924162e251e302c253d2b259c9b92a6a7a0aca298a6 *a096a49c89a9b1bca8b5c9a6b8c9a5b5cba8b6caa6b5c9a7b6c9a6b9cca4b7caa6b7cbaab7cbac *b8d1aabbd3acb7ccaeb6caafbacdacbccdadbbd0afbdd1abbfd4acbdd2acbed2b0bed1aebdd1ab *bcccaebecfadbfcfacbcd1acbcd1adbbceaebfd0aeb7cba9b8c9a9b9cea7b8cbaabbd1a9b7cca5 *b4caa0b4cba4b5caa5b5cba1b5c9a5b4c9a2b6cc9fb6cca4b3c99fb1c9a6b7cba1b3caa2b3c9a0 *b2cba3b3c6a2b6cba7b6cba3afc9a6afc9a5b3c7a5b3caa7b3caa1b2c8a3b6cba6b6c9a4b5c9ac *b7cdacb9ceaebbccabb7cdaebaccb2bbcbb1bccfb0bcd2b2bfd2b6bdd2b5c2d3bbc3d3bbc1d2bd *c6d6bdc7d8bfc9dac0c9d8c1c9dbc2ccddc6cedec3cddbc6ccdcc7ccdcc5cbdbc3cbdcc7ccddc4 *ccddc3cddec4ccdcc3ccd9c3cbdac1cadac3cbdac2c9dbbec9dabbcad8c1cad8bbc4dbbcc3d4bc *c4d4b8bfd2bac3d5b2bdd0b1c1d7b4c1d4b2bed2b6c0d4b6bfd3b2bed0b2bdd0b2bdd0b1bdd3b1 *c1d2b5c0d3b1bfd3b4c2d5aebbcb90929f968b9698a4bb503f4747414a353f54434742505c4b63 *758c88999e6f7ba7414a6c1f1c274236322b1a1f0d060d200d0c3731390b040608040a110a1003 *060c0b07082d2413423d343b251d4f462a5e63834c516646475734405847566e343f49899da153 *74a94c5e69b9c3c9bfc9cda6b7cea8b7cfa4b6d09cb3cd9fb1cd9db6d39fb1cc8cacc787a4c689 *a5c6789dc383a3c18aa1c48aa0bd779ebe82a3c17c9dbd7e9fbf7d9dbb7f9fbf749fc085a2c382 *a2c186a2c2859ebe73a1bc84a4be8aa5c48faac498abc593a8c792a9c58ea9c299aec695abc398 *abc89daec89db1c79ab2cba1b3cda2b1caa6b2ca9eb1caa0b0c4a3b0c79eb1c994aac399aac099 *a9bd9baec799acc19daec19baec696acc793afc990b0c99baac39cacc79ab0c89db1c69eaec696 *adc69baec39eaec699abc59aacc08ba1b06f7a7799acbe9bafc5a2b1ca9fb0c9a3b1cba3b2cba3 *b5cba5b1cca9b8d0aab7cda4b5cea4b5cda1b6cda7b6cca4b5ccaab5cca4b7cda7b6ceaab8cfac *bbcfabbaceacbbd3aab8ceaabad0aab6cbaabbd1acbad1b0bed2b0bbd0b0bcd1b5bed4b5c4d3b2 *bdd1b6c2d7bbc6dab6c5d7b6c3d9b7c7dbb3c5d8b8c3d6bac6d8bcc7d9b8c6d8bbc7d9bfc8dabf *c8dabec7d7bac7d9bdc7d8bbc9ddbec9dcc1c9dcc2cadcc0c9dcbfccdbc0cbddc1c9dcbecaddc2 *caddc0ceddc1cdddc3cedfc2cee0c6cedec5cddec3cfdec1cddfc3cedec5cee0c6cfe1c4d1e2c1 *cedebdc9deb9c7ddbbc7ddb1c6ddb5c7dcb6c6dcb6c9ddb6c7dbb7c7ddb1c6ddaec3d8b1c3d8b3 *c5dbaec3dbacc4dbaec6dbaec5ddaec6ddb4c9deb3c7e0b5c8dfb7c9deb0c7ddb2c8e0afc8e0b5 *c9e1b5c9dfb5c8dcb1c7deb1c8deb3c9ddb1c8deaec7deb4c9e0b4c9e0b1c9dcb5c8e0b6c9dfb4 *c9deb4cbe0b1c8e1b6c9e0b4c9e2b4cbe0b6ccdfb8cadeb8cce0b4cbe0b5cbdeb9cce1b6cde3b5 *c9dfb6cbe0b8cbdfb6cadeb4cddfb4cbddb6cce0b6cbe1b4cbe1b6cce1b6cce0b3cadeb4cbe0b2 *cbe1b6cbe0b2cbe0b5cde1b6cce2b7cce0b9cee1b5cadfb6cce0b7cce0b6cbe1b6c9dfb4cae1b1 *cbe0b7cce1b3cce0b2c9e0b2cbe0afcae0b2cadeb4cce2b3cbe2b7cee2b6ccdeb9cce0b6cbe0b1 *ccdeb1cadeb4c9ddb6cee1b7cce2b3cae1b4cce0b8cee0b6cbdfb5caddb4cbe0b5ccdfb6cbe0b3 *c8e1b3cae0b4c9ddb3caddb5cddfb2cadeb5cbdfb1cbdfbdcbdeb5cbe0b5cae0b6ccddb7cce0b5 *cbdfb4cce0b1cbe1b2c9e2b6cce0b6cbe2b3cbdeb6cbe0b6cce1b7cee2b5cce0b9cce0bacce0b8 *cce1b6cce2b8cee2b6cce0b5cce2b8ccdfb8cddeb8cde3b2ccdfb9cde1bdd0e0b6cde0b9cde0b9 *cde2b4cbe0b8cbe0b8cce1b9cee3b8cce3b7cde2b6cbdfb0cbdfb8cee1bdd0e2b8cce2b9cce0b7 *cce1b7cde2b6cee1b7cee1bdcee2bccee2b9cfe3bacee0b8cde0b5cde1b8cee3bbcde1b9cee1b2 *cce1b4cde1b9cee4b8cee2b6cee3bbcee3b6cde2bbcee1c0cee1c2cee0c1d0e1bccde0bbccdebd *ccdebbc9dfb6c8debdccdec1cddec4d0dfc5d1e1c9d4e3cbd6e5cdd6e4d1dae8d2dde8d2dce6d5 *dce6d3dce5d3dbe5d2dae5d2dae5c6d0dc4e3d441a11191614121a161532221aa59c9640342e2b *231a7773644c3a28584c34917d6da6a5a4c1cfddc2d1e0c2d0e2c7d5e2cbd5e6cdd8e5cdd8e3ce *dbe5d2dbe5d1d8e6ccd8e6c6d2e3bdcfe1bdcee2bdcce1bfccdfc0ccdec1cddec1cddfc1cee0bc *cce1c1cee1c4cee0c4d0e1c8d3e4cad4e3cbd3e3c7d2e2c9d2e1c9d3e4c7d4e3c6d2e3cad4e3cb *d7e4c7d3e3c7d2e1c7d3e2c9d1e1c6d1e0c7d3e2ccd7e1cbd6e3cad6e5cdd5e2ccd4e4ccd5e3cb *d5e3c7d1e1c7d1e1c7d1e3cad2e3ccd5e1cbd3e1c7d1e2c3ccddbdcbdb8c97ae14121845443c0b *0811180e1215101773665d67708d0e0a14584e446d69605e352c8d929694a2b59daec4a0b4ca9a *aec74342561f1d27160f161613141a1715221a181d1c182a1e1f2b1e1e25150f8d8165a29785ad *aea8979b9ba4a397a5aec1a4b1c9a0b1cca0b1cba6b6ccacb7ceaab8cba8b9cea8bbcfaab6cca5 *b8ccacbcd1aabcd3aebad1adbad2b0bdd2afbed0adb9cfa8bbd2adbdd1aebdcfacbbd2afbcd2af *bed1adbfd2adbdceaab6cca7b5cbacb9d3aebad3acbad1abbccfafbcd5aebacdaab8cfabb6d0a4 *b3cba4b4cba7b4c99fb5cba3b2c9a6b2caa9b9cea6b5cb9fafcba0adc9a1b1c6a0b2cca2b1cea5 *b3cb9db3cba3b5cba3b4cb9faec79fb3c6a1b3cca3afcba7b6cdaab6cca0b1cca4b6caa2b4cca4 *b4cca9b6cdaab8cba9b8cfa8b8cfadbcd3b0baceb0bbd0b0bcd1b2bcd1b3bbd3b0c0d6b3c1d5b3 *c2d6b6c7d7bdc9dabec8dbbbc7dbbec9dbc2cbdfc2cbdec2cee0c4cce0c3ccdec6ccdbc6cbdbc2 *cadcc4cbdcc3ccdec3ccddc0cadbc1c9dec3ccddc0c9dbc2cbdbbdc7dbbfcadcbfc9dcc0c7dabe *c9dbbdc8dcbac3d9bcc5d8b9c2d6b6c2d8b1c0d1b5bdd0b1bfd6b2bfd4b0bad0b1bed5b5bbd0b1 *bad0afbbccb3c2d3b2c0d7b2c1d8b1bdd1afbbd0b2bcd0aeb5cb8f95a3554d615340306a708852 *4a625d6879585f78444d534d6085574b438d9bac8599a747434462504547435235342c2520210f *0c110d0a0d120a0c4d4c3e93836eafb2b49c9fa7756d827189952f3a5a161d3c22191f29202512 *15340b0a1f49565fb7c3c7bec7cda4b8cfaec2d4a9b9cea7bdcda1b5cc99b3cc99b2cc92aec991 *abc794aac68ba3c18fa7c78aa4bf8ba6c186a4bf799fbf7ea0c18ca2c17fa4c0869dbd80a3c085 *a3c186a4c37da2c385a4c483a8c586a7c38eaac491a7bf94a9c592aec48facc88faac695b1c99a *adc597acc59aaec69eb1c7a1b0c69fb3cba4b5cba5b5caa3b4ca9fb2cba3b1c99fb2c99eb1c9a0 *b4c999adc69cb1c896adc6a0aec7a2afc59aaec79eb1c69eaec39fafc6a0b1c9a4b1c69dadc4a1 *b0c49faec6a2b0c4a3b1c7a3b2cba4b6c9a2b1c7a3b0c5a4b5c9a5b6c9a4b4caa5b8cba1b1caa4 *b5caa7b6c9a4b5caa9b7c9a7b5caa4b8cda3b6cca8b7ccabb9cdaebaceadb9ceaabaccaeb8ccac *b9cfaebbcfacbdd1adbccfacbdd3b0bdd4b1bdcfb0bed1afc1d3b3c3d3b1c2d3b7c3d3b9c3d1b6 *c3d3b9c4d4bac5d9bdc7dbbec6d8bdc9ddbbc7d9bbc8d9bdc7d7c1cad8c1cadbc2cadbc0c9dcbd *cbdbbdc9dabcc9d9bfcddbc6ccdac3ccddc5ccdec3ccddbec9dbc0cbdac1cddcc2cddcc2cedec6 *cfdec9d0dec5cfddc4cfe0c7d0ddc6d1e0c7d0e0c6d1e2cad4e3c8d3dbc8d3dec8d1e0c7d0e1c6 *d1e1c1cfe1c2cbdebdcbdeb9c9deb7c9ddb5c8d8b3c8d8b9cadab6c6dbb6c6dcb4c7dbb1c8dcb2 *c8d9b5c6d9b1c2d9afc1d8afc4d9afc5dbb0c7ddb1c9deb3caddb5c8dcb5c8dbb2c6dbb0c7dbaf *c6dab4caddb0c8ddb0c9deb7c9ddb6cadeb6c8ddb8c7dcafc6dcb6cadeb5ccdeb6cbe0bdcde1bd *cbdcbbcce0b9cbdfb8c9dfb9cce0b6cbdfb6cae0b1c9ddb9cbe0b5cadeb7c9dfb6ccdeb6ccdfb6 *cde0b3cce0b1cbe0b4cbe0b6cee2b8cddfb7ccdfb8cddfb7cee2b5ccdfb7cce0afcadfb4cde1b5 *cce1b5cddeb5cbdeb4cbdcb6cce0b8cee1b2cce1b7cee2b7cde1b9cedfb5ccdfb8cae0bacce1b5 *cbe0b6cee0b7cde0bbcde1b6cce1b6cde0b5cadeb6cadeb4ccdeb6cde0b2c9deb8cbdfb8cee1b6 *ccdfb4cbdeb1cce0b6cadcb6cbdeb5cbdeb5cce0b6ccdeb7ceddb7ccddb8cedfb7cbdeb7cddfb6 *cbdeb5cbdeb6cce1b4ccdeb5cbdeb5cbe0b5cddfb6cbdcb7cdddbecedeb6cbdeb6cddcb1cbe0b4 *cae0b6cce0b5ccdfb6cddfb4cbdbb7ccdeb8cddfb6cce0b6cde0bad1e3b4cde0b8cce0b9cee2b7 *cce0b6cce0b7cde1b9cddfbad0e2bbcde3bbd0e0bbcedfbdcee0b6cbdeb6d0e0bad0e1b6cddeb6 *cce0b7cbe0bacedeb9cee0b7cce0b6cce0b7cee2b6cde0b7cce1b7cde0bacde0b6cee0bccee0b7 *ccdeb6cee1b9cde0b9cee2b9cfe3bacfe2b5cee0bed1e2bdcee1bad0e2b9cee2bad0e0bbcee2bb *cee1b5cde1bdcee2b6cee2bed0e2bad0e2b6cee3b7cee0bccee2bdd0e3c2d1e3bfd1e2bcd0e2c0 *cfe1c0cfdec0cee0bfcddfbfcee0c6d2e3c5d5e2c7d3e2cdd7e3cddbe5d0dae3d2dce5d3dee7d4 *dde7d6dde7d6dce8d7dde6d6dde4d6dde6ced6de99795f644e42341d1c3c1f18693f2bbbbdba74 *5c463e25157d57306f54316e4528aa9779b8c5cbbfcddec1cedec1cfdfc3d2e1c9d5e2c9d6e3cd *d8e3cbd8e6cbd8e4c9d2e2c0cee0c0cddebed0ddc0cedebdccdfbfccdfbfcdddc1cdddc0cddec1 *cddfc1cfdfc2d1e1c2cfe0c3d1e0c8d4e2c9d4e2c9d5e3cbd5e3c5d3e2c7d3e2c3d2e0c1cee2c6 *d1e1c7d3e1c4d1e0c5d1e1c3d1e1c3cfe0c6d0e1c6d4e2c8d6e2c9d6e3c6d6e3c6d2e2c7d3e4ca *d4e2cad4e2cbd5e0c8d3e2cad4e0cbd3e1ccd6e3c7d2e0c6d0e1c5ceddbecbdb8675822d1c1753 *483f170d0e130a0a23111096988d6a74831c10104d39376055454c2c21795a2e9c9d99a4b3c89f *b0c59baec5443f541c1114150e0e1512141a13131d12132a27252d291c3136243721179b8866a1 *9377aaabaaa299899d917ea4b1bfa5b6cba7b8cea4b5c9aabacda2b6cbabb8cdadbacfadb9cfae *bfd1afbcd1b2bfceb4bbd2b0bfd2b1c0d2b0c0d1b1c1d5b4bfd3b4bfd3b0becfb3c1d3b4c2d1b3 *c3d5afbed0acbdd3b2c0d3b4bfd3b3c1d3b4bfd1b4bdd3afbdd2b0bdd3afbdd2aabccdaebbd1ab *bbd1acb9cca7b6cbaeb9cca4b6cda4b6c8a6b5cba5b6caa7b7cba8b8cea6b6cdadb6c9a5b5c9a2 *b6cba4b6c9a2b6cc9bb3c7a6b5c9a5b6cda3b4c6a7b6c9a3b5caa9b6caa9b5c9a9b8cba6b6c7a9 *b6caaab8ceabb5cab0bbccadbaceafbdd1afbcd0acbed1b0bcd5b0bad2b2c1d0b6c1d4b8bfd1b8 *c3d0bbc3d2b2c3d4b9c6dac1c8d8c1c9dec3cddac7cedac9d0ddc9cedcc6cfdec7cfdec7d0ddc7 *d0dec6cfdec4cedec9d1ddc6ccdec4ccdbc6ccddc4cbdbc7ceddc8ccdcc6ccd9c3ccddc6ccdcc3 *cadcc1c9d8c3c9dac0c8dcbfc8dabcc7d9bdc8d7bbc6d4bdc4d6b9c1d6b7c1d5b2c0d3b3c1d0b3 *c0d2b3c2d5b3bdd1bac1d2b8c2d1b7c2d3b7c3d4b2bfd1b1c1d6b6c3d5b3c0cfafb6c39ea2aaa6 *acb098a9b743435f574f6642453837404b4a3e3990978da0aebc515c7e52544b2633422f2f342a *201f798062675e506457438d7951b0b0a7becad5b8c3d489899f5946643d3645312e3b322b2055 *66711017380307163f5459b8c4c8c0c9cfa0b7d1a8bfd7acc1d4a7c2d5a8c1d6a4b8d296b3ce8e *aec793adc991adc996abca96b0cc95afc88da5be88a3c188a4c187a4bd89a5c388a2c387a5c18a *a4c389a0c08ca6c18ba3bb8fa5c38ba5c28ba6c48cabc891acc58ca9c793adc796adc698adc699 *abc798abc69eb0c8a0b1ca9ab1ca9db2cb9db3caa1b4cda3b6caa2b2c99db2caa3b4c99cb0c9a4 *b4c9a4b5caa7b5c8a3b1c7a1b1c8a1b3c698afc79cb0c99eafc7a1b1cca1b1c7a3b3c7a2b1ca9d *b2cb9daec89bafc8a1b0caa2b6cca6b6c8a0b6c6a5b8cea3b2c8a2b1c8a5b2c9a3b1cba4b6cda6 *b5cba1b4c7a4b7ccaab5ccabb8c9a5b5cba4b6ceacbacfaebbd2afbed1b2bed1aebeceadbaccae *bbd0aebdd3b1bbcfabbbcfadbed2acbdd3b1c1d3b0bdd3b3bfd1b0bed1b0c0d3b6c2d3b6c3d6b2 *c5d7b5c6d6bac8d9bbc8d9bac6d7b8c7d8bdc8dcbcc7d9bdc8d9becbdbc0cbdec0cbddbfccdebf *cad9bdc9dbc1cbdcc3cddac1cbddc5ccddc6d0dfc6d1dec2ccdec1ccdbc3ccdcc4ceddc7cddfc4 *d0dfc7d2e1c8d1dfc9d3dfc8d0e0c7d0dec8d2e2c7d3e1c9d2e2c9d3e0c8d4e2c9d4e2cad4e2c8 *d2e3cad3dfc6cfe0c5cfddbdccdeb6c8dcb8c8dcbbcadbbbc9dbb7c7ddafc5ddafc5deb4c6dab1 *c7daafc5d9b5c6dab0c6d8adc4d9b4c6dab7c5dbafc5dab5c5dbb5c7deb7c7dcb5c7ddafc5d9af *c3d8b0c5dab3c5d9aec4d9afc6dbb2c7dcb1c8deb0c7dcb7c8dcb7c7dabbcbdfbdcadec2cedfbd *cbdebfcbdbb8ccdcb6cbdbb1cbdcb0c9dfb6c7dab4cbe0b6ccdeb6cbe0b4cce1b4cddfb4cbdfb7 *c8e0b6ccdeb9cbdfb1cbe0b6ccdcbbcce0b6ccdeb4cce1b8cce1b4cae0b7ccdeb4cddfb4cddfb1 *cbdeb5ccdeb5ccdfb5cddfb1cae0b7cce0b7cbdfb4cbe0b3cce1b5cde0b2cbdeb4cbe0b9cce2b6 *cbdfb9cde0b7cbdfb6cedcb4ccdfb6cce0b6cde1b3cce0b6cee0b5cce0b4cce1baccdfb2cbe0b6 *cce0b4cce0b5ccdfb8cde2b3ccdeb7cedfbbccdfb2cbddb1cbddb8cbe1baceddb7cce0b4ccdeb7 *cddebacdddb4cce0b4cde0b3cadeb5cbdeb4cbdeb6cde1b3cbdfbacee2bacbddb9cbdfb8cddfb5 *cbdfb5cadeb5cbdeb5cbdeb6cee1b4c9dbb6cbdeb6cedeb6ccddb7cbdeb2cddfb4cce0b7cee0b7 *cde2b4cbe0bbcfe0bacedfb3cce2b7cbe0b6ccdfb7cce2bad1e0b6cee3bacde1bbcfe0b9cddeb8 *cce0b7ccdeb8cce1b9cee2b4cce0bacee2b4cddfb8cdddb7cddfb4cde0b2cce1b6cfe2b7cfe2ba *cde2b7cce1bbceddb9cde0b6cde1b5cee2b9cee2b9cee1bacfe2bbcee3b8cde0bbcde0b4cbe0b7 *cee0bccee2b7cce2b7cee0b7cee2bbd0e2bcd1e2b4cee2b9cee1bacee2becee2b8cddeb9cde2c1 *d1e2b6cee2bbd1dec3d1e3c4d1e1c3cee1c3cfe0c3d0e0c7d2e3cbd6e4d0dce6d2dbe3d3dbe6d3 *dbe5d3dce6d3dee8d6dde8d5dde6d4dee6d4dee7d2dde5ccd2d9b09d92b3a593a69b8ca99a8bb8 *c7d1a9a4aea49a7bb5bab4b1b8bfa29694bbc7cec0ccddbdcee0bacedebfd0e0c0d2e0c3cfe1c1 *d0e1c3cedec0cee2c0cfe0c3cee1bfccdfbdcee1beceddc0cbdebfcedebfcbdfc1ccdec2ccdfc2 *cedfbfcfe1bdcfe0bfcfdfc3d1e1c3d0e1c8d4e2c9d2e2c8d3e5c8d5e2c6d1e3c4d2e1c2d1e1c0 *d0e1bfcee1bfcee0c0cde2bfcde1becde0becee0beccdfbfcedec1cee0bccfdfbdcde0bdcee0bc *ccdfbfcee0bdd1e0c6d5e1c4d1e0c4cfe0c9d3e3c5d3e3c2d1e1bccde0becdddbac9dbb2c2ce96 *7e60999378837a74634b437b5b49aab7c099a1b26d61638b86789b9c969b96949da9b1a7b4c9a3 *b3ca9fb2c99daec848485d27201f1c1e1d1b1315271e1a261f17211f1a271e181e221c2a1e159c *988caba9a8aca4a8a6a3979c968ba4b0bea6b4cca8b5ccaab9ccaabaceaab8ceaebdd0aabaceac *bcd2aebdd2b0bdcfaebdd2afc1d3b5c2d3b1c1d2b6c3d2b2c0ceb5c0d4b5c2d6b4c3d3b1bcd1b9 *c5d7b7c3d4b2c1d5b2c1d5b4bdcfb3c0d4b5c2d3b2c1d5b5c1d3b2c1d1b2c1d3b3c0ceafbbd2aa *bed2aebdd4adb9ceacb9caaab9d0abbbcdacb6cba5b6cea5b8cca3b7cda7b3cba4b3cba6b5cbab *bbcba6b3cca9b9ceaab9cca1b4cea4b3cca2b5caa2b4cba4bacbaabed2a7b5cba7b5c9a8b9cda6 *b6c9a9b9ccaab5caadb9ccafbbd1b2bdd2afbbd2b6bfd0b1bdceb1bdd1b1beceb0c0d0b6c4d6b5 *c2d4b5c2d5bac6d4bdc7d6bec8d6c1c9d8c1c9dcc3ccddc7cce0c7cee0cbd1dfc8d1ddcad1e0c8 *d0ddc9d1e0c9d1dfc6cfdfc7cde1c7cbdec7ceddc9cfdcc6d1dbc7d1dec8d1dec7d1e1c9d3e2c8 *cedec7cedcc4cddcc5cbdbc4cbdac2cbd9c0c9dbc1c8d9bdc6dbbec6dabcc5d9bcc5d5bcc2d2b8 *c1d4b7c3d6b6c2d7b8c1d3b8c3d6bcc6d8bbc6d7bbc7d7b8c2d2b4c1d8b2bed3b3bdd1b1becfb4 *c3d4aec0d0a2aab786724d7d70804f2b30766560624c3775838d58658726264150484a685e5279 *806a42373b7e7d5d7196b3797269afb2b4b9c3d2bcc7d6bcc7d8b2bfcfb1bbc98e9fb1586c8e42 *4a4e4c57722f2b3544423a4d5a61bbc4c6c0c9cc9bb6d1a0bbd1aabbd3a8bdd6a1b8d493aecd8d *a7cb86a3c68aa5c592a9c29aafc891aac798aeca94aec896aec88fa6c592a8c48ba5c38aa2c687 *a2c186a2c387a2c08da3c38da6c68fa4c08ea5bd92a8bf9cacc497a9c498acc799aac59cadc99d *afc99daec99fb0ca9eaec8a2b2cca2b1c79fb1caa1b6ce9bb2cda4b2cba3b4cda3b6cea4b4cca2 *b6cfa5b4cba6b6cea4b5c9a4b5cda6b1c79eafc5a0b1c99db1c8a0b1c9a3b4cca3afc9a1b1cca5 *b1caa0b0cba3b1c9a3b4c9a7b6c9a1b1caa7b5c9a2b3cda7b8cea4b4cea5b5cca9b2c7a8b5cba6 *b4cca3b6c9a2b4cba4b6cda6b2cca6b4cdaab5ccabbbcdadbccfafbdcfb3bdd2b4bdd4afbdd5b3 *bed1b0bdd1aebdcfb3bfd2afbfd2aabccfb1bdd1aebcd3b1bdd4b3bfd4b2bcd1b6c3d4b4c1d1b5 *c3d8b5c3d7b5c4d8bdc8dcbbc9dbbdc8dcbfc9dbc0c9d8bdc9d5bdc7d8bfcaddbfcbdcc2cbddc0 *c9dcbccaddc1cbd9c6cddec5cddec6cddec4ceddc8d1e0c7cfdfc3cedfbfcbdcc6cedcc7cedec7 *cfddc8d0e0c8d0dfc9d0e0cbd4e1cbd4e3c9d3e3cbd5e2c9d3e2ccd3e2ccd3e2cad5e3c9d3e3c9 *d3e3c9d2e5cad3e3c9d1e0c9d1e2c3ccdeb9caddbbc6dcb4c6dab7c7ddb1c7ddb4c7deb2c8deb6 *c8ddb3c7dbafc6dbb1c7d9b1c3ddb3c4dcb6c5deb5c5d9b5c6dab9c7dab6c8dcb7c8dab6c5dab6 *c4dab3c4dcaec4dcb1c5d9b1c6dcb3c7ddb2c7ddb3c7deafc3dbb4c5dab6c6ddbdcbdcbdccdec1 *cedec2cee0c1c9debecbdbbdc8dcb6c7dfb4c8e0b4cae0b2cbe0b4cae0b5cbe0bacce1afc9deb5 *cae0b6cbe0b5cce0b5cadeb4cce0b8c9deb6cbe1b8cce2b9cde1b6cbddb6cce1b5cde1b6cddeb3 *cbdfb4cadfb6cbdeb3cbdfb7cbdfb3cbe0b1cae0b7cce0b3cddfb6cce0b5cadeb7cbdfb6cbdeb6 *caddb2cce1b3cce0b5cce2b2cce0b5cadeb4cae2b5cbdeb7cbdfaec8ddb5cbdeb3cce2b6cce2b7 *ccdebac9dfb4c8deb4cbdeb6cadfb6c9e0b5c9e0b9cde0b5cce1b4cce0b6cde1b3ccddb4cbe0b7 *cbe1b7cce1b5cce1b5cbdfb6cce0b6c9dcbacadeb4cbddb6cbdfb4c9e0b6c9e0afbdd2b5c9ddb4 *cadeb3cadeb3cae0b8cbe0b6cce0b3cde1b8cde0b7cbdfbbcce0bbcee0b9ccdfbacce1bbcce2b6 *cce0b3c9deb5cbe0b9cce0b9cfdfb6cce0b8cbe0b9c9dfb6cbdeb9cee1b6cde0bbcce0bbcee0b8 *cddfb6cbe0bacde1b9cce2b8cce2b9cce0b6cbe1b6cde0b9cce0b6ccdfb9cce0bbcde2b7cce1b9 *cee2b5cbe1b5cbe0b8cbe2bccde1b7cde1b6cde0b7cce2b7cee2b6cee2bacee2b7cde1b6cde2bb *cde2bacce1bccee1bacce0b9cce1bbcee2bdcee2b9cde2b9cde2bacddfbdcee0bacee2bbcce0b7 *cee2b7cddfb9cce0b9cfe2bdcee0becee2c1cfe1bed1e0c1d1e1c4d0e2ced8e5cfdbe7d2dbe6d3 *dbe9d5dde7d7dee7d9dee8d6dde7d0dae6cfdbe8d1dbe6cedbe5c6d5e2c0cde0beccdcbccdddbb *ccdebccddebacddebbccdcbbcdddbecddebdcbd9c0cee0bacce0bbccdfbccddfb9ccdebdcedebd *cee3bccde1c2cee0c3cedebeccdbbecbdfc1cddec1cddec3cee0c3d0e0c3cee1c2cedfc4ceddc3 *ccdfc3cee0c2cfe0c2d1e0c2cee2c1cde2c1d1e3c0d1e0c5d3e2c6d1e2c5d0e2c3d0e3c2d0e2bf *cfe1becee3becee1bfcedfbfcde0bfccddbcccdeb8ccddbdccdfc0cce0c0ccdfc0ccdeb8cbe0bc *ccdeb7cbdebbc9dfbac9ddbdccdebecce0c1cedfc2cee0c3d0dfb8ccdeb3c6ddb4c6dbafc4dbb1 *c3d8b1bfd4b3c0d3b2c2d1b8c3d1b9c5d2b7c5d6b4c2d2acbccca9bacda5b7cda9b4cca9b5cca6 *b5caa2b5cca0b3cca0b3cb544d601a151c1b13151714141c160c15161117101227282b20232726 *1d17948879a49b97aeabadaea9a5978b75a8b1c1a9b7c9a9b4cbaab9ceaabbd0adbbd4acbdd1b0 *bfcfb1bbcfb4c1d3afbed3b3bfd6b6c3d8b5c3d6b5c0d6b4c1d2b6c2d3b4c2d6b7c3d6b9c4d6b9 *c3d5bac6d6bac4d9b9c4d8b7c4d6b8c3d4b8c2d5b5c2d5b7c3d6b9c2d7b3bed5b5bfd6b3c0d5b1 *c1d3b1bfd3afbdd2aebcd2afb9cdadb6ceb0bad0adbbd1aebdd1aab9cbaabacea7b6ceaab7cdaa *b7cea7b8cda4b8ccaab8d0aab6c9aab8cba5b4cba8b5cdacb7cdaebaceafbad1a9b3ceabb6cfac *b9ccaab6cbaab8caadb8cdafbbcfadb8d2afb8cfafbbcfb3bed1b6bed1b3bbcfb3bdd5b2c1d3b8 *c2d4b9c1d3b5c2d5b5c1d6b8c5d8b9c6d8bbc7dac1c7dcc2cbdcc6ccdcc8d0e0cad2e1cbd1e3c9 *d1e0ccd1e0c8cfe0c8d0e0c9d0dfc6cfddc7ccdec7cfe0c7cddccbd1ddcbd2ddcdd1e1cbd3e2cc *d3dfcdd2e0cbd2dfcad0e0cacee0c7cddfc7ccddc4cbdcc3cbddc3cbdac2cadbc2c8dcc2c7dabf *c5d7bcc6d5bdc5d9bcc3d8bdc6dabcc5d6bbc7d8bdc7d9bec8dabdc5d9bbc1d4bdc3d2b9c1d5b4 *bfd3b4c1d4b8c1d4b5bdd0b5c1cfb5c1cfb2bdc9b4bacba19eb199998f5c75a2291723595d5756 *49596c6e804f4f7674696d91939da4acb6b3bdceb5bed1b2c1d2abbdd1a3b8cba6bbcf87a2be56 *698953657677778b8686856963807d8179bdc6cac2cbcf92b6ce9dbdd2a4bfd5a2bbd39bb4cc8d *acc682a4c585a5c886a7c488a6c691abc58cabc69bb1cb97b1c893acc792aec795acc688a6c184 *a3c087a9c47da3be82a4c082a0bd89a7c386a5c390abc391abc796b4c79ab0c798b1ca96b0c990 *adc79bb2c99bb2c899afc89cb0c69db3c899b0c798aec8a0b2c79eb2cb9fb0ca9eb1c99eb1caa1 *bbcfa4b8cea3b5cbabb9c9a7b9cea4bbcba4b9cca3b7cba2b7cca1b5c9a0b5cc9db4cca2b4cea2 *b3c79bafcba3b6c9a4b6cea0b3c8a4b7cda4b4cea4b4cb9db3c7a1b4cba1b6cca4b6c99eb4ca9c *b3c8a3b4cba2b1cc9db3ca9fb6cba3b5cba0b4c8a3b5caacbbd0a9bdd3abbed2afbed2adbdd1af *c1d2afc1d0aebed1abbdd2acbfd1acc0d0abbdd1b0c0d3adbed3abbed1abbdd2a9bdd2a7bcd0ad *bfccacc2d4b2c3d7b3c5d4b6c6d6b7c7d7b7c9d4bbc9dabdc9d7bcc9debdcbddbbcbdbbdcbdcc0 *cddbbecadabfcbdabfcdddc2cedec5cfdec4d0dfc5d1dec6d1dfc6d1dfc3ceddbfccdcc5ceddc5 *cfdec6d1e2c7d4e2c9d4e1cad5e0c9d4dfcbd5e2cbd7e3ccd3e3c9d3e3ccd6e3cad5e4cbd6e2c9 *d4e2c8d4e0c7d3e3c9d5e2c7d3e3c8d1dfbdcce0b7c9ddb6c8dbb9c7dbb0c8d9b2cbddb0c9dead *c8deb0c8deaec8ddaec9dcb1c7dab0c9dbafc7d9b2c6dcb3c7dbb6c9ddb8c8dbb8caddb5cbdcb8 *c9d9b9cadab0c7dab0c6dbafc5daabc5ddb0c7dcadc9dbabc6d8aec5d8b3c5d7b3c7d9bbccdbbd *cbdebeccdec1cde0becedcbbccdab6c9dcadc7dbafc8dbb1c9deb1cae1b5cadfb1cddeafcddcb3 *ccdeadc9dcb1cadeb3cadfb3c9deb1cae1b4cae0b1cce0aecddeb1cbdcafcbdeadcadeb0cadfb1 *cbe0b2cbdeb2cce1aeccdeb4cedfb1ccdeb0cadeb4ccdeb3ccdfb4cbdfaec9deb3cbe0b2cedfb3 *ccddb4cadeb4cbdfb4ccdeb5cddeb3ccdfb1ccdfb1cbe0b2cce0b0cbdeb1c9ddb6cbdbb6cdddae *cbe0b6ccddb6ccddb1cce0b2ccddb1cedeb1ccddb4ccdfb8cedfb3ccdeb6cee0b7cde0b1cce0b5 *cde0b6cde0b3c9dbb3cbdcb0caddb5c9deb3cbdfb4c9deb2ccdeb3cddeb2cbdeb3cbdcadbfcdb8 *ccdeb5cbdeb7ccdeb6ccdfb6cee1b3ccdeb4cbdbb6cedfb2cbe0b6cce1b7ccdfb6cde0b8cfdeb3 *cee0b3cddeb3cee0b3cce1b5ccdfb8cee0b8cedeb7cee0b8cee0b8d0dcb5cfdeb4cee0b5cee0b7 *cfe0b6cce1b4ccdfb6d0e1b5cfe0b2cdddb3cde0b5cce0b4cce0b3ccdfb4cbdcb7cce1b5cde2b6 *cee1b2cedfb6cde0b7cce1b6cddfb4ccdfb6cde1b7cee0b4cde1b4cee1b6cfe0b4cbe0b4cce1b8 *d0e2b5cce0b6cddfbad1e0b6cfe3b6cee2b3cce0b5ccddb5cdddb6cde0bacee0bacee0b8cee2b4 *cbdeb7d0e0b8cee0b6cde1b8cfe0b8cee0b9cfe0b7cee0bacfe0bed0e1c1d3e3c7d8e5c9d9e4cb *d9e4cedae6d0dde6d2dfe9d3dee8ccdce5c0d4e1bfd1e1bed0e0bcd0e2b8cde0b6ccdfb8cde0b8 *d0e0bbcedfb3cedebbcedfbcd0ddbacedebbcddebfcfe0bbcfe0bfd2e0bccfdfb9d1e0bccedeb9 *cfe0bbcbdfbbceddbcccddbdccdebecddebecddfbdcedfc1cddcc4d0dec4d2e1c3d1e0c4cfdfc0 *cedec1cedec1cedebfcedfc2d1e1c1cee0becedfbdd0e0b9d0dfb9d0e3b8cee1bfcee0becee2c1 *d0e2bacee0bbcfdfbccedfb7cedebccddfbbcedfbacedebbccddb6cbdebccbdebbccdcb9cde0b9 *cbdeb7ccdeb7cbdcbaccdfb9ccdebdccdeb9cadbb6cadcb4c9deb4c9ddb3cadbb1c5d9aec3d8ab *c2d5adc1d6acc3d6afc3d6b3c6d7b5c7dab5c7dab5c6d8acc2d4a8bed1a4bcd1a1b9ce99b4cca3 *b5cba7bacea4b7cca6b8cc9eb3c7434956120e0e090a0c0f120c2119181c1c1b100c0c040b0f10 *120b1e180e8f7e5e928c66999082a19d92928678a4b0bdaabacaa9b7c7aab9ccacbcccacb7c9ab *c2d2adbfd1b4c2d5b2c4d4b2c3d5b1c1d0b4c4d1b5c4d6b8c6d7b4c6d5b7c6d9b7c5d7b3c5d9b6 *c6d4b8c6d6b9c6d5b5c4d8bbc6d5b5c3d5bac5d6b8c6dab3c3d3b6c6d5b8c4d5b4c1d3b2c1d0b7 *c4d6b0c3d6b4c1d6b7c3d5adc0d1aebdd1b0c1d1adbdd1aabdd3aabdceadbcd1a8b8cdacbdd3a9 *bcccabbdcca7b7cca9b9cea7baccabbdd2aab6ceaab7cca5b7cdaabbcaaabacca9bacda8b8cba8 *bbcda8b9cdacb8ceadbcceaabcd0abbdcfb0bdcdadbbd1adbdcfaebccfaebfd0b1c0cfb4bfd4b3 *c2d2b1c1d0b5c3ceb7c4d3bac3d5bbc6d6bdc6d6bfc8d8c0ccddc0d0dec1d1e0c3cedbc5d1e0c9 *d1e1c8d3e0cad4e0cacfe0c5d0dfc2d2dec9cedcc8cfdfc7d1dec9d3e0c9d2ddcbd4decdd6e4cb *d7e3ccd7e3cdd5e2cad5e3cbd4e1c8d2dfc9d3e1c9d1dfcad1e1c4cfdec3cdddc3cbddc6cbdbc1 *cbdbc1cbddbeccdabfcadbc0c8d9bcc9d8bec8d6bac6d8bdc9d8bccad8bcc7d9bec7dac0c7d6b9 *c7d9b7c3d4b6c2d5b6c3d3b3c3d4b6c7d5b6c5d6b7c6d5b6c2d3aebfd1aabbcc95a3ab7e8a9172 *73668b91939ea4b19ca7b59fa9b1abbbc3a8beceacbcd1b0bfd2aabacf90a5c16a7f996b85a439 *557e14263e1e202040433f97a1aba5b3c5a6adaabdc7cbc1cbcf8fb1c996b5d19cbbd69ebbd299 *afca91aecb88abc789a6c48caaca80a8c68aa9c884a8c889acc88dabc791abc792abc593aec88b *adc48daac68ba8c791a4c18ba6c58ca4c591a9c68fabc291aac894acc892aec997b0ce9fb0ca9d *b3cca0b0c99ab1c89bb1c89cb0cba0b1cd9eb2cd9fafc999b1c9a1b2c89eb4cca1b2c9a4b0c8a4 *b3c9a2b6cfa5b6cea7b9cea6bacfa9bccca4b8cda3b7cba6b7c9a1b2cca3b7cfa5b5cea8b2c8a3 *b1cba3b5cca4b8cea6b6c9a4b7caa7b3c9a5b6cba4b8cd9fb6cea5b8cda4b6cfa6b4caa3b6cca5 *b5c9a4b6cba1b4cba6b2cba4b0cca2b4cba5b5cca8b9cdaab9cca9bacca7b9d0a9bad1aabbcdab *b9ceaabdd1adbdd1acbdd1a9bbd1aabbd3a7bbd0a9bdd5a8bad2a4bad3abbdd1aab7cfa4b6cea5 *b9cea7b8cfabbbd1acbed6adc0d1b3c1d4b2c1d3b8c6d9b1c5d8b4c5d9b6c7dbb9c4d9bbc8dabb *c9dbbcc9ddbfc6dabbc8dbbfcbddc1ceddbfccddc1cee0c6d0dec6d1dfc5d0dcc5cddfc4ccdec3 *cddec7d1dfc8d1e2c7d4e2cad5e4cbd6e3cbd5e3cbd6e2cbd7e3ced9e5cbd6e4cbd6e5cbd6e5cb *d8e4cbd6e3c9d1e2cad2e4c9d2e5c7d3e4c6d0dfc5cedfc3cedfbbcbdcb4c8dab3c9ddb3c9deb6 *c7deaec7ddb1c7deacc6ddb3ccdcb2c9ddb3c8dfaec7ddb3c9ddb3c7dbb4c8ddb7c9dbb7cadeb7 *c9dcbcccdfb2c6dcb5c8dcb3c6dbaec6daafc4d9b0c6dcadc6dab0c9dcacc6dcaec3ddb6c6dbb6 *c7d8bcc8dbc1ccdfc2cddec0cee1bfcfe0bdccdfafc9ddb1c9ddb2c8deaec9ddaec9e0b4cae0b7 *ccdeb1cae0b3cee3b0c9deb4cbdeb3cce0b2cadeb3cae0b7cae0b7cce0b7cddeb2cbe1b5cce0b2 *cadeb3cbdfb1c9deb4cce1b6ccdfb2ccdfb4cce0b5cbe0b0cae0afcadeb4cbe0b7cbe2b8cbe0b9 *cddfb5cce0b3cce0b3cadfb6cce1b1c9deb6ccdfb1cbdeb6cbdeb6cde0b7cce1b6cbdeb5cbdcb3 *cce0b1cce0b4cbdfaec9dfb4cbdcb6cedfb3cde0b4cde2b1c9ddb5cae1b5cbdeb6cbdeb7cbddb6 *cbe0b5cee2b8cee1b5cbdfb2cbe0b6cce0b6cde0b4c7dcb5ccddb5ccdfb6cee1b4cee0b4cadeb4 *c6d7b7cadeb6ccddb5cadfb7cbdeb6cce0b6cce1b6cee2b0cbdfb5cde0b5cde0b8cde0b7d0e1b5 *cee3b9cde2b5cce2b9cee3b6cee2b5cde2b4cddfb5cedeb6cce0b6cce2bacee1b8cddfb4cbe0b4 *c9debbcee2b6cee2b5cee0b5cce0b7cce0b8d0e2b8cfe2b6cbe1b8cbdeb6ccdeb7cde0b9ccdfb4 *cbdfb6ccdfb7cde0b5cbdeb8cddfb3cbe0b6cce0b8cee1b3cce0b3cde0b5ccdfb9cee2b7cde1b9 *cce1b8cee0b4cee0b8cee2b9cce1bbcfe2b6cde2b6cee2bbcfe2b7ccdeb8cde2bacedeb9cee1b5 *cce0b7ccdfb8cee2bbd1e3bbcde1b7cfdfbdcedfb7cedeb7cee2b6ccdeb7cee1b8cee0bcd0e2bd *d0e0bfcfe1c6d5e3cbdbe6cadae6cbd7e5bed0e1b7cedfb7cde1bacee1b8cee0b9cee0b8cee2b9 *cde1b8cee0bbcde1b9cedfc1cee1bdcfdebacfe0bbd0dfbbd1e0bbd1e2b9cee0becee2bccee0bf *cedfbdcee0bdcedfbecee0bfcee0c2cfe1c1cde0c1cde0c3cedec7cfe0c7d2e0c6d3e0c8d5e0c5 *d2e1c4d1e2c4ceddc2cee1c3d0e2c4d1e0c5d1e0c0cee0bccedfbacee2bbd0e0bbcee0bdcde1bc *cce0bdcfe3b7cce0b9cddeb8cbdfbdcee0bdccdebdccdebbcce0beccdeb6cbdebdccdebdcbdbb6 *c9ddbbc9dcb1c6ddbccaddb8ccddb6c7dcbbc8ddb9cbdeb2c7dcafc4d8a8bdd3a8c1d6adc2d8ac *c0d3aac1d7adc1d3aabed3aec1d4b0c4d8b2c6dbb1c4d6b3c4d6afc3d5acc2d5a8bbcfa9b9cfa6 *b9cca9bccfa8bbcfaabdd0a6bccfa3b3ca4f4d5b1b141b0e0d0c1511111513190f0d130c09120b *070e16150c221c188a786a867b5f90887ea4a7a9847d6e9a98a1afbbceabbdd0b0bdd1aebcd1ad *bcd1aebdd3b1c1d7b1beceb3c3d4b5c3d2b1c4d6bac6d8b6c7d7b7c6d8b5c5d7bac7d8bdc8d8bd *c9d9bdc7d6bccadbbdcad9bcc7d9bbc9d9bac8d8c0c8d9bdc6d8bdc9d9bcc9d6bac5d6bbc5d8b9 *c3d9b7c3d5b6c3d6b6c4d8b6c3d5b4c3d5b6c1d1afc1d4aabcd3aabbd3b1c2d3acbcceb0bcceae *bfd2aec2d2adbbd4acbccea8baceabbbcbaabbd1aab8cdacbcd2acbdd1b0bcceaabcceaabcd0ad *bbd3acbcd2aabbceb0bed2b2bfd2b3c0d0b6c0d3b3c1d3b1bad2adbed2aebccdb2c0d3b3c1d5b9 *c4dbbbc6d7bac4d8bac6d6bbc5d8bbc8d8bac9d9bbc6dabdc8dbc0c9dbc1c9dbc3cbdec6ccdfc3 *cddfc7d1e0c7d1e1c8d2dfcbd2e1cbd1e1ccd2e2ccd3dfccd2e0c9d3dfcbd3e1cdd3e3cdd5e4cf *dbe4d1d7e5d4d8e6ced6e5ced5e5cfd7e5cdd4e0cbd1e1cbd3e0ccd2e0cbd4e1cbd3e2c8d1dfc3 *cde0c5ccdcc4cbddc4ccddc3ccdcc3ccdbbfccdbc2ccdcbecbddc1cad9bec8d8c0c9dbc0c8d7c0 *c7d8bfcbd8c0caddb5c6d9b6c3d8b9c3d4b9c5d7b5c1d6b0c1d3b3bed1b1bcd1abbacfabbcd09f *acc0adb6c7acbbcea7bbceaab6cbacb8ceb1bed2b1c0d3aec1d4adbcd1a5b8cd96a9c35f6c864e *5873526689656f7e474b6c797e82a7b4c3b1bccea9b7bbbcc7ccc0cbcf9eb6ce9ebad193b5cd9b *b8cc95b1cd8caeca88acc889a8c98caac98aa6c680a8c28aaac98caac78aa8c885a7c58fabc890 *a8c784aac680a4c489a8c58ea9c08daac794a7c38babc68ba6c28ea7c498aec894aec999b0c89d *afc99cafca9bb0cc9ab1ca9cb3cca0b3c99eb4cb9fb2cba4b7cd9db1ca9ab1cb9eb2cd9fb3c9a3 *b7cc9fb1cb9eb3cba4b6cba9bacba3bad1abbbcea7b8d0a8b3c9a6b6cca6b7cca4b7cfa4b8cca4 *b3cba3b6cea8bbd1a3b8cda8bbcca4b6cda5b9cea7bccba4b8cba7b7d2a7bad1a4b8cfa5b9cda7 *b9ceabbaccaabbcda4b6caa4b1cba7b6cfa3b8cfa5b6cfa8bacfaabbcfadbbccacbbd1abb9d2a7 *b8d0acbbcfa5b7d3a9bdd1a2b7d0a3b6cea4b7ce9eb7cfa0b5cda5b9d1a1b6cba7b6cea9b7cea2 *b6ccaabbcea5bbcea6bbd1adbbd3adbad3afbcd5b1bccfb0bed1b0c1d5afbed1b1bdd3aebed3b4 *c2d6b6c3d3bbc6d8bcc7dbbac6d9bac9dabcc9d9b9c8ddbdc9dcc0ccdec1ccddc2cedec2cddec3 *cddcc1ccdbc5cedec1cedcc7d2e2c6d2e2cbd4e3c9d5e1cbd6e4cad6e2cbd7e4cbd5e4c9d3e2c9 *d4e4c8d4e5c9d3e2c7d2e1c7d3e3c9d4e2c8d2e1c6d1e2c3d1dec0cedebccbddb9cadeb1c7dbb6 *c9ddb1c8dcaec6dcb5c7deb0c8dfb4cbe0aecadeb0cbdfb0c9e2b1c8deb0c9ddb3c9ddb1c9dbb0 *c6dcb7c8deb7c9dcb7c8ddb4c6daafc6dab1c6dbb1c7ddafc6dbaec5dab1c6d9afc5dab1c9dbb6 *c8dbb9c8ddbbc9dec1cfdfbfccdbbccce0beceddc0ccdfb8cce0b0cadfb0c7ddb1c9ddb4cadfb2 *c9ddb2cbdeb0ccdeb2c9ddb6cce2b3cbe2b1cce1b5cbdeb1c9deafcaddb2cce0b1cce0b3cde0b1 *cbe0b1c9deaecadeafcadfb1cce0b4ccddb4cddfafcbdeb5cbe0b4cae0b0c9e0b5cbe1b1c9dfb4 *c9dfb7cce0b5ccdfb6ccddb6cbdeb1c9e0b4cbe2b2cbdeb1cbe1b0cbe2b2cddeb0cce0b4cee1b7 *ccdeb5cbe0b4cadeb5cce0b1c8dfb3cbdfafccdeb6ccdfb6ccdbb5cce0b2cbdeb0ccdfb1cbddb6 *cbdeb3ccdeb2cbdfb7cbe0bacee0b8cce0b5cadeb2cbdfb4cbdfb3caddafc9dfb8cde1b6ccdfbb *cee0b9c9d9b4cadeb6c9ddb7cbe0b5cbe1b4ccdfb6ccdcbbd0deb5cee0b5cee0b4cce0b5cce0b3 *cbe0b5cddeb6cedeb6cee0bacfe1b5cde0b3cbe0b6cce0b5cbe0b7cde2b6cbe2b8cde1b4cce0b7 *cde2b7cce0b4cde1b6cde2b2cbdeb6cde0b6ccdfb6cee0b6cee1b6cee0b6cce1b4cbdfb1cbdfb3 *cce0b4cde2b2cce1b4cde1b7cce0b7cbe1b5cce0b5cbdfb4cce0b4cee1b5ccdfb6cce0b8cee0b6 *cde3bccee1b6cce2b6cde0b5cee0b6cde3b6cce2b0cde1b7cee3b6ccdfb9cde2b6cce3b6cee0b3 *cddfb7cee0b9cee1b5cde2bacee1bccee1b9cee1b8cee2b9cfe0b6cce1b4cce0b6cee1b8cddfb7 *cde0bbcfe2bbcee2b6cde1bccfe0bfcfe0becfe0bbcfe1b7cde0b9cedebacfe1b8cde0b7cde1b5 *cce0bacee2b7cee0bdcedfbbcfe0bacfe1bbd0e0bbd1e2bbcfe2bcd0e0b9cde0b9cee0bacddebc *cedfbccddebdcee0c1cce1c1cee1c2cee0c4d3e2c5d2e1c5d1e0c6d1e2c7d3e2c8d1e3c9d3e3c7 *d3e3c9d1e2c6d1e0c4d1e1c5d1e1c2cee0c4d1e1c4d1e3becee1bbcddebbd0e1b9cfe0bacee1b9 *cee1bccfe3b9cde2b7cce0b8cce0b9cbe0bbcde0b8ccdebbcbdcb7cbdebbcbdeb8cbdebacbdcb9 *c9debac8d9b9c9d8b2c7d8b4c4d8b6c7d8b6c9ddb6c6d8b5c6dbb1c5d9b0c1d6b0c1d6acbdd1ac *c0d4aabbd3a7bdd5abbcd5aabbd3adc1d6adc4d6b2c5d9b4c2d4b4c5d7aec4d6b0c2d6aebed1aa *bcd1a8bdd2a9bbd0abbdd2a9bdd2abbed0aabbcc464a5f1e171e130f131415121c140e1e1f1a17 *100b1b110e1e140c2920188376578a735b7d78698f887d9c9987aebac6aabbd1b1c1d3b2c1d4ae *c0d4b1c0ceaec2d6b1c6d8b6c5d8b4c5d8b5c4d6b7c7d6bac6d5bbc6d8bac6d8b8c5d8bcc7dabb *cadbbcc8d9bdcadcc0cbdbc5ccddc2cbd9bdc7d9bdc9d9bec8d9bdc8dcbac7d8bccad8bdc7dabe *c6d6bbc6d6b7c5d7b8c4d6b8c5d7b8c1d6b8c3d7b6c0d3b9c3d3b5bed3afc1d4acbfd0b1bfd5ae *bdd7aebad0aebdd0aebdd2b0bfceadbbceb1bed0aebcd2acbdcda7b8d2abbcd1acbdceafbccfaf *becfaebbd0abbed3afbbd1b1bdd2aebad1b1c0cfb1c1d4b4c0d3afbfd4b4bed0b3c3d2b2c0d3b3 *c0d4b8c5d7b9c6d7bcc8d8bec7d5c0cbdabfc8dbbfc7d8bbc6d9bfcbdac0c8d6bec9d8c2ccdac6 *cedfc8cdddc6cce1c6cedec9d4e3cbd3e2ccd3dfcad2ddcdd6e0ced6e2ccd6e5cdd6e3cfd7e4d1 *d8e2ced8e7d1d9e5d2d9e7d2dae6d2d8e6d2d7e3ced6e4cdd7e2ccd7e2cbd4e1cad3e0ccd4dfcb *d3e1cbd2e0c9d0e1c7cedec7cddcc8cfddc4ccdec6ceddc6cedcc7cfddc7cdddc4cdddc2cadcc2 *ccdbc1cbdcc2ccdcc1cbdbb9c8d7b4c3d3b6c1d1b4c1d4b0bdd3afbbd3b1bed3b0bdcdacbcd1ac *bacea7b9ceaab7cea8bbceaab8cca4b4cca6b7ceaab7cbabbcd0a3b9cda1b6cc9fb3cc9eaec98e *95af7c80758fa5ac8e9db17b85a0909a9d9fb0c8a0b0c8a3b3bcbdc7cbc2cccf9fb9cf97b2cc9a *b1cc92b0ca92aecb8baac98daeca8cb0cb91b1cb92afcb94adcb93aeca8badcb82a5c387a7c68c *a4c491abc791a7c687a8c490aac692aac792aac496a8c497abc792abc394adc592aac694abc79c *afc595b0ca9fb0cb9cb1cb9db3cba4b5c89fb3c8a1b6cc9fb4cba1b4cc9bb1ca9fb3ca9eb4cb9f *b3ca98b0c99dafc79db0cba4b4cca5b9cba8b4cba4b8cca4b7cea5bbd0a4b7cca6b8cca5b6ce9e *b3cba3b1c9a9b8cca6b9cfa3b7cfa4b6cbaab9cfa4b9cda8bbcea6b8cfa3b7d1a8bcd3aab7cea5 *b9cea4b6cba9b8d0abb8cda8b6cda8bbceaab7cba8b9cea5b8cfa9bad2aebcd0adbdd0afbdcfae *bccfaabbcfa6b8cfa4b8cfa0b6d09cb4cca2b7cca1b3cca0b5cba2b0c89bb3cda4b1c99fb0cba4 *b5cbadbacfaabbceaab9ccacbdd1a9bbd0aabcd1afbbd1aebcd2b2bed7afc1d1b1c1d3b3bdd4b1 *bcceafbed2b5c1d6b5c5d7b8c7dabac3d5bbc7d6bcc8d9bbc7d8bac6dabcc9dcbfc8ddbfc8dcbf *cbddbfccddc1ceddc2cbdbc2ccdec3cfe1c2d0e1c8d1e2c9d3dfc8d4e1cad5e2cbd6e3c9d4e2c9 *d2e2c7d1e3c7d2dec6cfdec3cfe0c1d0dec6d1e0c6d0e2c5cee0c5cee0c2ceddbbcbdfb4c7dbb1 *c7ddb2c7deafc6deb1c8dfaac6deafc7d8b1c9e0aec9dcafc9dcafcadeb5cbddb5c8dcb4c9deb0 *c7dcb6c8dab3c8deadc8dcb5c7dcb4c8dbb5c9dcb3c8dcb1c8deb3c8ddb2c6d8b0c5d8adc6d9b0 *c6daaec3dab5c7d8b8c8dcbcccddbdcbdcbdcbdebfccdebdccddb9c8ddb4c9dfb1c9ddb2c9e0ae *c9dfafc9e0afc6ddb0c8ddb4cbe0b3cae0b5cadfb3cde2afc7dbaecbdeb1c9dcb2c8dbb4cbdfb0 *cbe0b2c9dfb4cadbb4cbdfb0c9deb5cbdeb6ccdfb4cbe0b4ccdeb1c9e0b2cae0b4cbdeb5cbdfb3 *cadeb6cbdfb2cbdfb3cce0b4cadeb6cee0b0ccdeb6ccdeb0c8ddafc9ddafcadeb2ccdfb2c9dbb6 *ccdfb5cbdfaecce0b6cce1b4cae0aec7ddb3c8dbb2cbdeb7cbddb2c9deb2cee0b0cbe2aecce1b6 *cbdbb5caddb2cbdcadc9dcb1caddb3cbe0b1c8e0b2cadfb5ccdfb2c7dab3c9dbb3c9deb5cbddb1 *cbdfadc7ddadc2d7b0c8deb6cadeb4cadeb1cadeb1cae0b3ccdeb0cbe0b5cce2b3cde1b6cde1b6 *cbdeb4c9dcb4cbe0b2cbe0b2cbdeb4cce0bacedfb4cbdfb8ccdfb3c9deb8cce0b3cbdeb6cbe0b5 *cbdeb6cbdeb4cce0b8ccdeb7cde0b2cbdcb4ccdfb6cce0b6cddfb6ccdfb8ccddb6cce0b6cde1b5 *ccdfb7cddfb5cde0b5cce0b6cbdeb4cbdfb6cbdeb3cbdfb3cce1b5ccdfb5cbe0b8cce0b4cce0b7 *cde0b6cbe0b8cbe0b6cce2b6cde2b6cbdfb8cce0b7cee0b5cce0b3cce1b1cbdeb3cde3b6cde1b5 *cce1b7cee0b6ccdfb5cadeb1cbdeb7cee1b9ccdeb8cee0bacee0b5cee2b6cce2b6cde0b7cde0b8 *ccdeb7ccdfb7cfe1bbcee1b9cde2bccfe0b8cde0baccdfbbcedfb7cddfbacde0bccfe1b6cddfb7 *cee0b7cde0b7cddfb9cde0bbcde1b8cde0bccee0b7cee0bacfdfbdd0dfb8cee1bbd0e0bbcee1bc *d0e0b8cee0becde0c0cfdfc2cedfc3cfe1c2d0dfc2d0e2c3cfe2c4cfe2c2cfe2c5d1e2c3d0dfc7 *d3e1c7d5e1c6d4e0c5d2e0c3d0e2bfcee1c2cee0c0cee0bfcfe0bdcee1bccee0bccee2bccfe2bb *cddfbacce1bbccdebacde1bbcddfb8cde0b6cbe0b6cbdeb9ccdebdcbddb9ccdeb9cbdeb5cbddb6 *cbdcbac8ddb8c9d9b7c7d8b2c4d8b0c3d7b5c7d8b6c6d8b1c3d7b2c1d5aec3d6b1c1d6afc0d4af *bed1a7bed1adc0d2acbed3abbed4a8bbd2a8bdd3b1c2d4afc0d4adc0d0aec1d5b1c3d5acbbd3ac *c0d4adbed4afbfd1adbfd3afbdd2b3c1d3abbed3a9b8ce524d5a30262149372e1d14161c141215 *141716110e807662251d1b2f251e9e9e9890878943301f9c9880a9acb2afbeceb0bed3b1c2d1b6 *c0d3b6c2d6b5c3d7b5c2d6b5c3d6aec1d6b7c1d1b5bfd3b7c3d5bcc7d7bcc7d5bfc6dac1ccddba *c6d8bcc7d7bec6d8c1cbd9c3ccd9c4cdddc1cddcc6cddec1cdddc2ccddc0c9dbbdc7d8bfc7d8bf *c9dbbcc6d9bcc6d8bcc7dabdc7d8bac5d7b6c3d1b6c3d5b6c1d1b7c0d2b5c3d8b6c1d1b4c1d3b1 *bdcfadc1d4aebdd2b0c1d2b1c1ccb1bed2afc1d5b6c0d4b6bcd1b0bdd1abc0d1acbbd5aebbd5ae *c0d4afbdd2b0bcd2b0bbd2afbdceaebccfb1bed1b0bed0b1c0d2b0bdcfaebaceb2c1d1b3c4d3b9 *c3d2b5c4d5b7c1d6bbc5d8bdc6d9bdc7d7bec7d9c0ccdcc1c9d9c0c9d9c1c7dbc1c9d8c1caddc5 *cbdbc3cbdfc5cedbc7d0ddc4d1e0cbd3e3c9d2e0cbd3e2ced3e2cdd4e3ced6e4ced8e3d1d8e3d1 *dae3d1d7e3d1d8e5d1d9e5d1d9e5d0d7e5cfd6e4d1d7e5d0d8e5cfd6e4ccd3e2cdd5e2ccd5e1cb *d3e0cbd6e1cbd3e1c9d1e1c8d2e0c9d1ddcacedec8cedfc9d1dec9d1dfc8d2dec9cfe0c7d1dec3 *cbddc6ccdbc3cdddc2ccdac1caddbbc8dbb5c3d7abc1d4b1c1d6b0c1d3aebfd1aebcd0a9b8cfa9 *b3cda4b6cba6b7cda4b6cca1b6cda1b4c7a8b2cba1b2cba0b3cb9db0c99eaec79db0c7a0afc89b *aec69cadc39badc499acc595adc69ba9c09aaac398aac3627ca498a2a2bdc7cbc2cacda8c1d69d *b8d199b5ce96b4ce91aec992b1cb93b1cc99b6ce9bbbd49fbcd39db7cf9eb8ce99b2cc98b1cc91 *acc88eacc68babc68da9c489a6c28eabc68faac38eaac688aac690b0c993acc691adc794b0c795 *aec79cb0c7a0b4ca9db0cb9ab2cc9fb2ca9fb1cca5b8cda2b5cb9bb3ca95adc69aafc897acc796 *acc691acc796aec89faec696adc89bb2c99fb3caa2b4cea2b6cfa1b5cda3b7cda3b6cca4b2c5a2 *b8d0a4b6cda4b7caa4b7cca6b6c9a4b6cbaabbcea9bbcea8bcd1a7bacea5b7caa8b6d0a4b7cca8 *b9cca7b6cca7bccea4bbcdaabbd0a4b6cca8b6cca9bacea9b7ceaabacfabbccfadbdd0acbdd2aa *bdd0a9b9cea1b1cd9eafc8a0b4cb9fb2c99db0c7a2b0c7a1b1c7a1b0cb9eb0cb9dafc59eb4cca4 *b6cda4b8d0a9b8cfaabaceadbbd1a9bbd1aabaceb0bdd0b0bdd1afc1d4aec3d6b2c3d6b1bed1b7 *c3d3b1c1d4b2c1d4b3c2cfb7c6d6b7c7d8bbc7dbbbc6d6bcc7dabdc8d6bcc8dbbdc7d7bcc7d8bd *cbdcbfcbdcbdcadac1cbdcbfcbddc3cbdbc4cedfc1cee0c6cfdcc6d1e0c8d1dfc7d2e0c8d4e0ca *d6e1cbd1e0c9d3e3c8d3e2c9d1e0c6d1e0c7cee1c6d0dec6cee1c6d2e2c5cee2becbdeb6c8ddb8 *c9dbb1c7ddb2c6dbb2c8deaec8dcaec7ddabc6dbb3c8ddadc7ddb1c8dbb1c9dfaec7d9b3c8dcb0 *c8ddb5cadfb1c9deb2c6dcb2c7dcb1c7d9b5c9ddb1c9dbb3c9dcb5cadeb6c9ddb6c6dbb1c4d8af *c4d8aec6d9b1c6daaec6dab1c7d8b7c9deb8c8debbc9ddbdccddc1ccdebdcbddb9c9d9b6c8dbb6 *c9ddb1c7ddafc7ddb1c9dbb3cadbadc9dcb2cbdeb2ccdeb6cbe0b3cce0b1cbddb1c9ddb3ccdeb4 *caddb1c9dab1c9deb1cadeb0c9dcaec9ddb0c8deb1caddb0cbddb0cbdcafcadcb3cbdeb3caddb1 *c9e0b4cbe0adc9deb1cbdeb2cbddb1ccdeaecbe0b4c9ddb3cadeb4cadeb0c9e0b5c8ddaec9dbae *c9ddb4ccdeaec9dfb2cbdeb2caddb6cde0b1c6dbb1c9dbb1cbdcb2ccdbb6cbdbafc9dbafc9e0b2 *ccdeb4cbddb4cadeb4cbddacc8ddb2cadeb2c9dbb6c9deb3c9dbb0c9deb0cbe0b3c9dfb4c9dcb2 *c8daaec6d66e6b72969ca7b4c9dcb6cbdeafc9dbb2c8dcb2c9ddb0c9ddb6ccdeb5c9ddb1ccdeb1 *cadeb1cbe0b3ccdeb2cce0b1caddb6ccdeb2cbdcb1cbdeb0c9dfaec9deb4cbe2b5cce0b7ccddb7 *cadeb6c9ddb5cbdeaec8dbb1ccdeb8cedeb3cbdeb6c9ddb6cbdfb5cadfafcadeb5cbdeb3cbe1af *caddb3cadfb9cbdfb5cce0b4ccdfb2cbddb1caddb3cbe0b6cbe0b5cee0b5cee1b6cee2bacde0b6 *cedfb6cde0b8cde1b8cce0b3cbe0b2ccdeb6cde0bbcee2b6cee2b3cbdfb4cbddb3cadeb4cbe1b7 *cee2b6cee1b8cddfb7cfe2b9cedfb5cce1b7cee0bacbdeb9ccdfb5ccdfb5ccdeb9cfdfb3ccdeb6 *cbdfb8cce0b6cce1b7ccdfb9cce0b6cce0b6cce0b7cde2b6cde1b7cee0b9cddfb9cde0b8cee1b4 *cce0b7cedfbacddfb7ccdfbbcee0bbccdfb6ccdeb6cde0b5cee0b9cedfbad0deb9cce0bccfe0ba *cfdfb6cce0bdccdfbccddfc0cfddc0cfe2c0cedfc2cfdfc4d3e3c4d2e2c1cee0bdcee0becee0bf *cfe0c1d3e2c2d2e1c4d1e1c3d1dfc6d1e2c2cfe1bbcedfbbcedfbacee0b9ccdebbcee0bacddfbb *d0e0bbcfe0b9cce0b6cde0b6ccdfb9ccdfb9ccdfb9ccddbacddebccddeb9ccdebacbdebacaddbb *c9ddbcccdeb9cadebbc9dbb8c8dcb5c6d8b4c4d9afc1d3afc1d6b1c3d6a8c0d2aec1d3aec0d6a7 *c0d6abbed2a6bbd6aabbd1a7bdd0aabed0adbdd0a9bed2adc0d6adbfd3aec2d4afc3d4aec0d6ac *bed2aabdd0aebfd2adc0d2b0bfd3b3c1d6b0bed1b0bfd1acbece434b5930271f4b3c2b21201e1f *20201710123a261d9fadb82d272e18171286715678604b3a26188c8b7fa5aab0aec0cfb4c1d3b4 *c3d4b6c2d3b6c3d6b2c2d5b6c3d1b6c3d5b9c3d3b6c6d6b5c1d4b8c3d4b9c8d8bcc7d9bfc8dbbe *c9dbc0cadac0cbddc1ccddc0ccdbc5ccd9c3cedec4ceddc6cddbc1ccdac3cbdbc2ccddc0c8d9bf *ccdabecaddbdc6d9bcc7d7becad8bcc9d9bbc8d8b8c6d6b9c3d6b3c0d2b5c2d3b7c3d6b3c5d3b1 *c5d6aec1d1b1bed3b0c1d5b5c3d6b1c1d1b3c1ceb4c1d3b1c0d1b4c0d3b2c1d3aec2d6b1c2d1ae *bdcdb3c1d3b0bfd3b2bfd2aec1d3b0c1d3b3c1d4b1c2d5b7c3d3b1bfd2b1bcd0b4becdb4beceb9 *c5d6b5c2d6b9c4d6b8c6d9bcc6d7bec5d6bec6d4bec8d5bdcad9bdc9dac2cbdbc2ccddc2cbddc2 *cbd9c2ccdbc0cbdac9cedbc8ccdcc7cfddccd1e0cad2e1ccd6e0ced5e3ced7e0d0d8e2d0d8e5d1 *d8e2d1d8e4d3d8e5d4dbe5d4dbe6d1dbe7d0d8e5cfd6e3cfd6e1d0d5e4d1d7e5cfd6e3ced8e3cf *d6e1cdd6e0ccd5e3cbd3e2cbd2e0cad3e3cbd5e0cad5decbd3e1ccd3e0ccd3e0c9d4e0cbd3e0c6 *d0ddc6ccdfc7d1e0c9d1e0c7cedfc3ccddc3cbdbbdc7d8b8c7d9b1c1d4b0bfd1aebdd1aebad1aa *b9cda3b2c9a0b1c7a6b3caa2b0c799b0c69dafcca1b0c5a1b1c9a1acc19badc59aadc397adc499 *aec49cacc49aafc797adc496acc69eadc49dacc79fadc390a4c046567e677c83bdc7cbc2ccd0a4 *bdd7acc1d39fbad59bb6ce9ab4cd9bb7d19abbd2a1bbd5a5bed6a4bdd8a4bfd8a3bfd5a5bfd399 *b9d092b0cb8daac48bacc789a9c68aa8c688a9c78dabc791aec98eaac790aecb98afc899b0c99a *afca9eb1c89fb1ca9cb6d19db4cea2b5cda0b6cda3b6cba3b3c9a5b9d0a3bacf9fb5cc9db4ca9a *aec69aaec99bb1ca9bb0c78faac598aecb9cb0c9a3b4cda1b3c7a2b3cba4b3cea3b6cfa3b7cd9f *b2cca4b1c9a3b5cea4bbd1a1b7cda4b6d1a7bbcda6bbcea6bbcfa6b9cba5b9cea4b6cea6b8cfa4 *b9cfa5b9d0a8b9cea6bacfa6bad1a5b9cea5b7cfa3b7cea3b8d1a3b8cba3bbcfa4bcd2a9bcd1ad *bcd0acbacfa7bacfa4bbd0a2b6ca9dafc79dadc99eaec79dafc79eb3cba3b3cb9fb1cba1b0c89f *b4cea3b6cea4b4cda6b8ceaab9ceacbaceafc0d2b3c3d1aec0d1b6c3cfb2c4d4b6c1d3b5c3d6b6 *c4d8b5c3d8bcc6d3b8c6d7b3c6d6b6c6d8b8c6d9b9c8dabac7dabbc6d9bcc8d6bdc7d8bdc7d9be *c9dbbfc9dcc0cbdcbecbddc2ceddc0ccdcc3ceddc7d0dfc6d0dcc9d3e2c7d1dfc8d1e0c7d3e2c9 *d3e2c7d3e4cad4e2ccd6e3c9d4e2c7d3e0c8cfdec5d1e2c1d1e3c3cddec4cfe0c6d1e4c0ccdebb *c9deb3c6d9b3c7dbb0c7ddb6c9dbabc8ddaec7deadc7ddb5ccdeacc9e0abc6dcabc7dbabc7ddab *c6dbb2c7ddb2c7dcb3c9dcafc8dcaec8ddb0c5dcb2c6dcb3c7dbb1c7dbb6c8deb9c8deb1c6dbb0 *c7dcb0c9ddb0c9ddaec7dbb1c6ddb0c9dcb3c9dbb4c9deb6c9dbb9ccdbbccdddb8caddb8cbdcb8 *c9dbb5c7dab0c7dbafc7ddb3cadeafcae0b0c9ddaec7ddafc8dcb5ccdeafc7dcafcaddb1cce0b5 *cce2b1cadeaec7dcb1c9dcb1cadcadc9dbafc8deb0c8ddb0c9ddb0cadfb0c9ddb3caddb3cbdfb3 *cae0b0cadeb4cde0afcbdeb1cbe0afc9dfb3c9deaec8ddb0c9deaec8deaecadeb0caddb1c9e0b4 *cae0b3cbdeabc8dbb0c9deb1c9dfb2c9deb1c9ddb1c8ddb4c9e0b2c8e0b4cce0b1cadbadccddb0 *c9e0b0c9deb1c9ddb3cae0b4cbdfb3cadeafcae0b3cbdfb4ccdfb1c9deb2c8deaec7ddb6c9ddb3 *c8dfb0cbdfacc7d86f6d6ea3a3a8b3c8dcafc7dcafc8ddadc8ddb0c7ddb3c9ddb4cbdeafcadeb4 *ccdcadcbdeadcbdfb2cbddb5cce2b5cce2b0cce0b2cce0aecbdeb1ccdeb3cadeafc9ddb1cbdfb1 *cbe0adc9e1b5c9dfb1c7dfb5c9dab1c9dcb3cddfb0cbdab5ccddb4ccdfb3ccdfb1cadeb2cbddb6 *caddb2c9deb4cbddafcbdfb4ccdfb2cbe0b3cadfb3cbdeb3cbdfb4ccddb1ccdfb5cde0b2cce1b5 *cae1b5ccdeb5cbe1b4cbe2b6cce0b6cde2b1cce1b3cce0b4cce2b2cce3b7cde2b5cde2b6cddfaf *cbdfb5cce2b5cce0b8cbdeb6cce0b6cce0b3ccdfb9cee2b5ccdeb7ccdeb8cddfb5ccdfb7cddfb3 *cbdeb5cbe0b9cce1bbcee2b6cee1b7cee0b5cce0b5cce0b8cddfb3cbdeb5cbe0b7cce2b7cee0b6 *cddfb6cbdfb6cddfb4cce0b8cde1b7cde0bbcee2bbcde0b7cedfbbd1e0b8cfdfb7cee0bbcedebb *cfe0bbcee0bacee0b9cde1b8cee0bdd1deb9cde0becee0c0cedebdcee2becfe1bccce1bccfe2bb *d0e1bdcee2bccee0bbcfe1c1cfe0c2d0e0c3d1e2c2cddebfcfe2bccfe0bacfe0b8cce0bacde0bb *cde0b8cce0bbcee1bccde0b8cee2bacfdfb6ccdebbcce1b9ccdfbbccdfb9cbdebacbdebacadfba *cadeb9cdddbccbddbbcedfbacbdbbbcbddb6c6d9b3c4d6b1c5d8b1c3d8b0c3d4aec3d8acc1d4af *c3d9adbfd6abc0d6acbed1aabdd1a7bcd2a9bed1a9bdd5a5bdd6a7bcd2adbdd5aec1d4acc1d5ae *c2d6b0c1d1acbed2b1c1d5afc0d3b1c1d6b1c0d2b2c2d5b0bfd4abbccf584c484734255b4f3f1a *100f1f1c1d22201b76694aacb6c636292d2a2325776560817b6f3e261e815432a8a398b6c3d1b7 *c2d1b3c4d4b8c2d3b7c6d6b8c6d9b6c5d6b7c6d7b8c5d9b7c6dbbac5d5bbc7dbbac9d8b7c7dabe *c9d9bfc9d9bfcadbc2cadbc3cedec5cfdfc5d0dfc6cfddc8d2dfc6cfddc8d1dfc5cedec6d0dec5 *cedcc2ceddc1cbdcbfcbdcbdc7d7bdc9d8bdcadcbdcadcbac5d9bbc7d9b9c6d8b8c7d8b7c4d1b8 *c4d3b4c4d7b6c3d5bac4d6b4c0d3b6c4d6bac4d5b7c2d1b7c3d7bbc2d6b6c3d2b8c2d6b3c4d3b6 *c4d5b4c2d5b6c2d5b4bfd3b5c1d4b2c2d5b6c1d3b2bfd3b3c3d5b5c3d6b1c0d2b6c5d7b3c3d6b9 *c3d5b6c1d5bbc4d2bbc7d8bac5d9bbc7d9bcc7d9bac6d7bbc7d6c0c7d9bec8d8c3cbdbc4c9dbc3 *cddec3cfdfc1ccddc2cbddc5ccdec9d1e0c8d5e0cbd4ddcdd5e3ced6e5d0d6e3d0d9e6d1dae2d3 *d9e5d3dbe6d6dbe6d5dde6d4dde6d5dde8d4dee8d3dbe6d3d9e6d0d7e3d0d8e4d0d9e3cfd7e5ce *d7e5d0d6e5cfd8e5cdd8e4ced6e3cbd5e4ccd5e1ccd7e3ced6e2ced7e3ced6e2cbd7e4ccd4e1ca *d3ddcbd5decbd3e1cbd3e0cbd1dec7d1e1c6d1e0c7d0dfbdcddbbbccdab1c4d6b4c0d3aebdceac *bad1a1b2ce9eb5ce9fb3cba9b1c79eaec69ab0c4a0afca98aac6a2b0c7a2acc39cadc79babc79b *acc599abc29eadc29fafc49dafc69aadc89cacc79aadc99faec68aa5b9758ea7829da5bcc7cac2 *ccd0a5c1d4a8bed39ebbd7a4bfd7a1bbd3a2bdd3a4c1d69ebcd3a0bed6a1bfd6a4c1d8a6bdd6a4 *bcd798b8d591afcc8aa5c690acc986a6c788aac993aeca8ca8c993afcc96aac392afcb98aec69a *b0cb9cb3c9a4b3cba0b2cb9eb5cd9eb4cda1b5cba5bacfa6b8cca4b8cca3b9d0a9bacea5b9d0a8 *b8cfa6b8cea1b9cda0b5cc9fb2cb95afcba3b2c9a1b3cba1b5caa4b5cf9eb5c9a3b5cba3b6cba5 *b6cca6b6cda1b3cc9db1cba4b3cc9eb1cb9eb2cca1b1caa4b7d0a6b6cda4b6cfa1b9cea3b7c9a4 *b7cba4bad2a1b8cea3b5cda4b6caa0b7cca1b3c99aafca9daec99eb2cd9fb6cd99b5cb9eb7ce9d *b4cea1b7d0a5bad0a4b4cfa6b6cea1b5cb9cb1cc9eb0c89eb2ca9db3ca9bb1c89eb1cba4b4cca8 *b9cda6bbcea8bbcba9bbceaebed0b6bfd0b1bed3b0c0d6aec3d4b4c3d4b1c3d5b3c2d4b8c6d6b5 *c7d8b8c6d6b4c4d6bcc7d6bbc8d7bfc9d6bac9d6bbc9d9bccadabcc7d8bac6d9bcc6d8bdcadac0 *cad9c2ccdcc2cbdbc4ceddc3ceddc2cedfc3cee0c6cee2c9d2e0c8d2e0cbd5e0c9d3e1cbd6e3ca *d6e5cbd6e4cbd5e1cad3e3cbd8e3ccd8e2cbd6e4c9d4e3c6d1e0c6d1dfc3cfdec3cfe0c1cfdec0 *cddbbbcbdbbbcbdeb6c7dbb7c7dcb2c6ddafc7dcb1c7ddacc7deafcbdcb1c9dbaec8ddafc8dfab *c7ddafc7ddb1c9ddb1c8ddafcaddaec7dcadc8dbb2c8dab8c9ddb8c9dcb9c9dab7c9dcb3c8ddb1 *c6dbb0c6dab1c8daaec8ddacc7ddaec9ddb0c8deb0c8dcb1c9deb6c8dbb0caddb9ccdfbbc9ddb5 *c8ddb6c9dab1c7daaec7dbb2c7dbaec7dbadc9dca9c9ddadc8deafc8deafc9ddafc9e0b4cadbb7 *cddeb3c9e0b4ccdeb1cadfb2c8deb1cadeb3cbdeb3c8dcb2c9deb2caddb5cadeaec9deb2cbdeb3 *cbe1aec7dfb1cadfb4cbdfb6cbdfb1c9deb4c9dcb3c9ddb2cbe0b1cbe1aec8deb4ccddb2cbe0b0 *c8ddacc9deaecbdeadcce0adc9deb3c8deb2cadfb3c9dcb1c7deb1c7deb4cce0b3cadeb6cae0af *cadfb1c9dcaecbe0b1c9ddacc8dcb3cbddb1cbdfb2cae1b3cadfb0c8deb1cbddaecadeafc9ddaf *c8dbb2cadeb5cbdeacc4d8474d5d98a1acafc8d9b1cadcafc9ddafc9deb3cbdeafc9ddb3cbe0b0 *cadeb2ccddadccdbb1ccdeb0c9ddb4cbdeaec9deb1cce1b4cce0b2cbdfb0cbdeb1ccdeadc9dfab *c7deb3cadeb0cbdfb5c9deb3c9e0b2c9dfb4ccdcb4cbddb2c9ddb0cadeb5cbddb7ccdfb6cbddb5 *cbe0b7cbe0b4cbe0b1cbdfafc9dcafcbe0b1cadeb4cce0b4cae0b3cbe0b1cadeb3cbdeb6cde1b3 *cce0b5ccdeb7cddfb6cde0b8cce1b4cbe0b5cee3b1ccdfb3ccdeb8cedeb4cddfb3cce0b6cce0b6 *cce2b2cddfb2cce1b4cce0b6cde0b5cadfb2cbdeb3cee1b7cfe0b8cee2b2cddfbacee0b7ccdfb6 *cee0b7cbe0b6cbdfb7cbdfb8cbe1b6cde0b4cddfb7cce0b3ccdfb5cddfbaccdfb7cddfb7cde0bb *cddfb6cee1b4ccdfb6cee0b5ccdeb2cce1b6cbe0b9cde0bbcddebdcedfb7cee0b7cee1bacfdebd *cfdfbbcee0b5cbe0b9cce0b6ccdfbdcee1b8d0debbcfe2bbcee0b8cbdfb9cce0b7cedfbccfe0bc *cfe1becee0bdd1e2bed1e2bbcde2b9ccdfbecee0c1cee0bdcee0bccee0bacee0b8cde2bacddfba *cddfbbcee1bacce0b7ccdfbccde0bbcee0b6cde1b7cee0b9cde0b9cde1bdcde0bdcde0b6cbddb4 *caddbbc9deb8ccdebdcce0b9ccdebdcedfbdcde0b6c9d9b4c8d9b2c6d8b3c5d7b1c6d6b2c4d3b3 *c6d8b1c6d9aec0d6acbfd5adc2d7abc1d3a8bcd3a5bbd3b1bed3adbed0abbed2afc1d6aec3d6ac *c2d6b3c0d5b4c2d5aec2d5afc2d7b4c3d7b5c2d7b2c2d7b3c1d4b0c1d4b3c3d1abb5bf9c8f66a9 *b0b27d65566a4b3b6b52459b959ab1bbcb76665d827352a8a7a0aeb1b5aaa58ab7b8b5bbc3d1b9 *c6d5b7c3d6bbc7d4bac9d6bbc5d8bbc6d8bac6d9b9c8d9b9c6d9bbc7d8bccad7c0cbdabdccd9bc *ccdec2c9dbc2ccddc2ccdbc5ceddc5cedec8d3e0c9d2e0cad2e2c9d0e2cad2e1c9d3e0c9d1dfc8 *d2e2c5d1dfc7cedfc2ceddc2ccdbc1cbdbc2c9dbbdc9d8bbc9dbbbccddbbc7dab8c7d8bbc6d4b9 *c5d7bbc5d6b7c1d8b9c7d8b8c6dabbc5d9b8c6d8b9c6d8bbc7d5bbc7d8bbc3d6bcc7d8b8c6d4bd *c9d8bbc6d9b7c6d6b6c3d2b2c2d5b1c0d5b3c2d2b4c2d5b6c4d6b7c4d4b9c3d6b9c5d2b6c4d4b5 *c3d6b9c2d8b9c6d9bdc9d8b8c7d8b6c5d8b7c5d5bec5d9bdc7d9bdcbd8bfcbddc0cbdac0cadabf *cbdbc3ceddc3cddbc3ceddc2d1e0c9d1dfc7d1e2ccd3e0ced7e2ced6e1cfd8e4d3dae3d4dbe5d8 *dee7d5dbe6d6dde7d3dee6d8dee6d8dee6d5dee6d6dfe7d5dbe6d4dae6d1dae7d1dae4cfd9e5ce *dae7d0d8e3d2dae4d2dae4d1dbe6d1d8e5cfd9e5cdd7e5cfd8e5d0d7e2d2d9e2cfd9e3cfd8e4cf *d7e5cfd8e6cdd8e3ccd6e0cad6dec7d5e2c7d1e0c7d3e0c6d0e0c3d0e0bfcbddb8c8d8b3c5d6b1 *c1d5aabfd0a5b8cca4aecba4b2cca5b2cb96b0caa1afc69fb3c49db0ca9eb0c799abc59baec799 *afc59aadc89aafc497afc49bb1c59eb1c8a2adc5a1aec69fb1ca9fb1ca93abc1627299718d8dbe *c7ccc2cbd0a8c0d7a5bfd1a4c0d5a4c1d69ebed7a9c1d7a3bdd6a0bcd4a1bdd5a0bfd6a3c0d6a2 *bfd89dbed8a0bbd396afcf8dacc98daac892aac78daec890b1ca91abc796b1cc93aecc9db0cb9a *afcb98afc997b0c7a1b2cc9fb2cba0b6cd9bb5d0a7b9d2a3b8d2a5bbd3a3bad0a6bcd1aabed1a9 *bfd3acbfd4acbed6a9bcd2a4b9cf9bb3cea3bbcea2b9d0a1b6cca1b5cba4b8cea0b6cba6b6cea4 *b6cca4bacda3b4c99cb5cd9ab2cb97afc99baec79cb0cd9aafc999b2cb92aec79aaec697b0c99c *b3ca99afc994afca8cafcc95aec999b0cb9bb1c89ab0c898afc992abc893aec797acc597adc798 *aec898accb9ab0c99db0cb99afcaa0b2cd9eb4cc9ab1cc9cb3cc9cb2c8a2b3c6a0aec7a4b8cea4 *b6cea9b7cfa2b7cea9bbcfacbbccb2bdd0aebfd2b0bed1aec0d5b2bed3b1c1d1b7c3d4b1c1d4b7 *c6d7bac7d6b6c6d7bcc9dabecbdcbecadbbfcbdabfcbdabeccdcc0cbddc2cbdbc0ccdebeccdabf *cddcc2cfddc1cddfc4d1dfc6d1e0c4d1dec5d0e0c5d2e2cad4e1c9d3e1cad3e5cbd3e3cdd7e4cc *d8e5ccd7e6cdd6e4cdd7e4ccd7e4cbd9e5cbd9e4cbd4e6c8d4e2c9d2e1c4d1e1c4cedec3cedebf *cde1c0ccddbbc9dcb6c9dab8cbdcb1c6dbb1c6dbafc6dbb4c7ddabc6ddadc7deb0c7dcafc7ddb1 *c9dfb0c9dcb0c7deaac6deadc6dfaac5dbabc7dcadc7dbb0c7dab4cadeb4c7dcb3c7d8b1c7dbb2 *c7dab2c7dbaec8dcb0c9ddaec9ddaec9dfabc8dfb0c9dbacc9e0b2c9deb2c6d8b4c9dcb3c8dcb1 *c8ddb7c9deb6c9dfb0c6daaec8dbaec4dbaec4dbadc7deaec7dbb1c9deadc8dbb3c9deafc7ddad *c7d9b1cbdeb0c9ddb5cbddb2caddb3caddb6cadeb5c8dfb2c7daafc7dbaec5d8afc7dcb3ccdfb8 *cde1b6cbdfb5c9e1b9cbe0b3cbdfb2cadfb3cbe0b1cadeb4cadeb1cadeaec9dfb1cbdeb4c9ddb1 *c9deafc8deaec7deaecadfb3ccdeafc9dfaec9e0b1c9ddb1cadfb1cadeafc9e1adc9deb2cce0b1 *c9e0aecadcb0c9e0adc9e1b1cae0b0c8ddafc7deb2cadeb3ccdfb0ccdfb0c9ddb0cae0b1c8deb4 *c9dbadc9dbafc9dfb1cbdea5c0d3504c49908d8fb4c7deb2c9deafc8deb2c8deb1cadcb0c9ddad *c9dbb1cae0b4c9ddacc9dfb4cae0b1c8dbb5cce0b1cbdeb5cddeb1cce0b0c9e0aecbe2b4cce0b1 *cbdfb1cbdcb3c8daadc6dbaec9dfb3cbe0b1c9deadc7ddb3c9dfb0cbdeaec7ddb1caddb1cbdeaf *cde0b1cae0b6cbe2b6cbe1b5cce1b0cadcb0cadcb0c9dfb1cbdeb2cce1b4cbdeb2cbe0b6cbe1b3 *cbe0b3cbdeb4c9deb4cbe0b1cce1b0cde1b3cadfb5cbe1b4cbe0b3cbdeb4cde0b5cae0b3cbe2b5 *ccddb2ccdeb9cee2b5cce2b6cce2b4ccdfaecbe0b1cbe0b9ccdfb5ccdfb4cde0b8cee2bbcce2b7 *cee1b6cddfb1cbdfb6cddfb6ccdfb4ccdfb6cee1b7ccdfb8cce1b5ccdfb6cedfb7cce0b4cce0b9 *cddfb8cde1b7cbdfb8cde0bacde0b7ccdfb5ccdeb6cddeb6cbe1b4cce0b6cce0b5d0e0b6cde0bb *cfe2bdcedeb9cde0bbcee0b9cee0bacee2bdcee0b4cee0b6cbe0bbcde0b6cee2b6cce1bacfe0b8 *ccdfb6cedeb9cce0b9cee1c0cee2bccce0bccfe0bbcddfbacee0bccfe0bbcfe1bccfe2bdd0e1bb *cee3b6cde2b8cee2b8cde0bbcce0bbcce0bacde0b7cde0b8cee1b9cbe0b7cde2b6ccdebcccdeba *c8deb8ccdeb9cadbb7cbddb6cbdcbbcee1bfcfe0bbcbe0b8c9ddb5c8ddb3c7dcb2c6d8b5c7d8b5 *c6dcb5c7deb2c5dbb1c3d7aac1d6b1c3d6abc2d6abbfd2abc1d4aac1d6afbed2abbfd3b0c2d6b0 *c5d5b2c3d5b1c4d6b2c3d7b5c5d7b4c4d7b5c2d7b7c6d7b6c6d8b5c4d8b6c5d5b5c3d4b6c2d2b6 *c4d5b6c5d4b8c5d1b6c3ceb6c1ceb6c1d3b6c6d8b8c2d3b6c6d2b8c3d4b6c6d8b6c5d4b7c7d7bd *c9dabac7d8b7c4d4b7c7d8bac9dbb6c6d8b9c8d9bbc7d8bccbddbbc9d9beccdbbdcbddbec9dac1 *ceddc2ced8c4ccdcc6ccdcc1cedfc5cfe0c6cee1c6d1e0c8d3dfcbd4decbd5e1cbd3e0cad3e1ca *d3e1c8d3e2c8d2e2c7ceddc7cfddc2cedfc4ceddc3c9dfc1ccddbdcbdbbdc9dbbac6d8b7c7d8bb *c7d8bcc7d8bdc5d4bcc7d5bac4d8b6c7dbbbc6d8b9c5d5b9c7d4bbcad8bdc9dabbc8ddc1c9dbbd *c7d7bdc6d6bec8d9b6c7dbb9c8d8b8c6d9b5c4d8bac4d8b8c3d6b7bed3b4c3d7bac5d6bac6d6b8 *c6d9bac6d8b8c3d8b8c6d9bcc4d4b8c6d5b8c6d9b7c8dbbcc8d7bdc8d9bec9dabfc9dbc1c9dbc2 *ccddc1cbdac4cbdbc1ccdbc4ccdcc7d0dfc7d1dec8d1e2cdd4e3ced5e1ced8e3d1dae6d2dde5d4 *dce5d6dbe5d8dfe5d6dde9d8dfe8d8dee8d8dee6d6dee7d8e1e9d7dfe8d4dae6d5dbe7d2d9e7d3 *dae5ced9e5d1d9e6d3dae5d3dbe6d1dbe4d1dbe5d0dae6d3d8e6d4d9e6d2d9e6d2dae7d1dbe5d0 *dae4cfd9e4ced8e5ced7e3ccd4e5c4d0dfc3cdddc3ccdec3cddec1cddfc0cbdbb8c8dbb7c6dabc *c4d6aec1d3a9bdcea7b5cc9eadcca0b2cba5b6cb9fb3cba2b1cba0aec79cafc49aaec7a1b3c999 *b1c7a1b0c49fb1ca9eb1caa4b1ca9fb0caa0b0c7a0b0c79cb1c8a1b3ca9eb3c891a9c27d90b190 *a4adbec7cdc3cbd0a5bdd5a7c0d5a1bbd2a0bad59fb8d3a3bad6a4bbd3a4bdd19fb7d2a1bcd7a0 *bbd6a4bdd6a3bbd8a4bbd394aeca89aac789abc78dadcb8ca8cb8fadc88daec998b0ca95b0cc90 *aec79ab1cc9ab3cc9cafcb9fb2cf9db3cda2b5cf9db4cda4b8cfa2b8cda4b8d0a5b6d0a3b3cea8 *b9d1a8bcd2aebfd7b1c1d5b0bed3a5bcd1a5bacfa4b7cea9b5cea5b6cfa5b7cda3b4cea3bbd1a4 *bacfa4b7cca7b7cca4b1cda4b1caa0b4cb9aafc79bafc995adc78facc69baec798aec98fa8c79c *aac78dabc88ea7c696adc58aaac690aac594aec88ea9c294a8c692aac38ea9c88daac78da9c395 *aac78ea9c298adca98aec793a9c792aac393a9c598abc79cacc99eadc79cafcaa1b3cea0b0caa4 *b6cca5b8cea2b7ceabb8d1a7bad3abbdd3aebcd3b3bfd4b1c0d1afbdd2b5c0d1b7c2d5b1c2d8b3 *c4d3bac5dabbc8dabdc9dcc1c9ddbfc9ddbfcadbc3ccddc2cddcc1ccdbc1ccdcc5cedfc4ccdfc6 *cddcc2ceddc6d0dec6d0e0c5cfdec6d1e1c7d2e2c9d1e2cad1e2cad3e2cad5e3cbd6e1ccd6e2cc *d7e4cbd6e6c9d4e6ced6e5ccd6e6ced6e4cedae4cdd8e2cbd4e3c9d3e3c5d2e0c6d0e2c5d0e0c2 *cbe1becadeb9caddbbcadeb9c7dab9c9dbb3c6ddb1c5dbb6c7ddb1c5daaec6daacc4dbaec5dbac *c6deaec5deb0c7deafc7dfaec7e0afc7ddafc7dcabc7dcaec7ddaec7dcb2c7dcb7c8ddb4c6dead *c4daaec4daaec5d9aac6dbacc6dab0c7deacc6dcadc6ddaec8deafc6ddafc7dbadc7ddb1c6dbb2 *c7dbb0c7dbb2c9dcb6c7deb1c6dcafc4d8aec4dab4c7ddadc6ddaac6dbabc4d6aec6daafc6deb4 *c8ddb0c7d8aec6dcaac4dbafc7ddb1c7dcb3c9ddb2c6dab4c9ddb6c9deb1c5dbb7c6dbbac9dbb7 *cadeb8cadebacce0bdcce2bccce0bbcbdeb5cbddb5c9deb1c8dfb3c9deaec9dfaec8dfafc9e1b1 *cbe1adc8ddb1c9deaec6ddaac4d6adc6d9abc6ddaec9e2b2c8e0adc7e0b1c7deaec6ddadc8deb0 *c9dfadc7daaec9dfb3c9e0b1c9e1aac8ddb5cadbb3c8dbaec8dcb2c8deb1c8deafc8dfb1c9dfb1 *c8deb0c9deaec9dbaec7dcb0c7dcacc4db8191a4808393b2c7dbb2c9deacc7dcadc9dcb1c9dfae *c6ddb2cadbb0c7deb1c8ddb0c9deb0cbdfb1cadcb4c9e1b2c8e0b1c7ddb0c9dcb0cae0b4cbe2b1 *c7dbaec9deb3cbdcb1c8deaec7dbadc6dab1c6d9b5c7deb4cbdfb0c8dfb4c7deb2c9dfb5c9e0ae *c7ddafc6ddadc8dcb1c9deb0cae1b1cbe0b4cae0b0cbdeafc9deb1c8deb2c9ddb2cadfadc9dfae *c8deb1cae0b2c8deb1c8deb0c6ddb3c9e1b2cbdeb0c8deb1c9e1b1cadeb0c7dfb5cbe0b5cadfae *c8ddb2c9e1b1cbe0afc9dfb4cbe2b4cbe0b4cbdfb4cbe0b3cbddb6cce0b5cbdeb2c8deb2cbe0b8 *cce0b5cbdfb6cbdcb9ccdeb6c9dfb6c9deb5c9deb7cae0b7cadfb7cbe0b6cbdfb7cadfb6caddbb *cbdeb6cbdeb4cadfb1cbe1b5cbddb4cbdfb6ccdeb1cadeb7cbe0bacbe1b5ccdfb6cbdfb6ccdeb8 *cee0b3cce0b7cee0b6cee0b6cce0b9cde2b5cce0b5cbe0b5cbdeb6cbdeb6cce0bbcce0b5ccdeb9 *cbe1b6cbdebbccddb8ccdeb9ccdfb8cbdfb6cbe0b9ccdfbdcddfbccde1bbcbdfbacce0bbcfe2ba *cfe3bbcde0b7cde1b9cde1bacde0bbcbe0bacbdfb8cbe1b9cde0b6cbdeb8cadebccce0bacce1b6 *cbe0b8cbdeb8cce0b9cbdfb7cadfb9cbdfbbcbe0bbcbe0bccbdfb9c7deb1c2d7aec5d8b1c7dbb1 *c3d7b4c5dbb6c9dbb8c6dbb6c6d9afc3d7acc1d8a6bfd4aac0d4aac1d5abbdd1acbed4abc0d8b1 *c2d6b2c1d6b1c2d5b1c3d4b6c3d8b5c4d6bac4d5b8c4d6b6c5dbb5c7dbb4c3d6b5c4d6b3c4d6b6 *c5d7b8c3d6bbc6d6bcc9dbbac8d9bdc7d6b9c3d4b6c6dab6c6d6b9c7d7b7c7d6b9c7d9b9c7d8b9 *c7dbbbc3d6bcc7d9b7c6d6bdc6d8bbc6d8b9c6dabbc5dcbcc7dbbbc9dbbdc8d8c0cbdbc0ccddc2 *cbddc3ccddc3cedfc3cce0c6cee0c6cfdec6cfdec6d1e0c7d2dcc8d3e2cad4e2ccd3e4cdd3e2cd *d4e3cfd5e1cbd4e3cad2e2c6cfdec6d1e1c3cddfc2cbddc3ccdec2caddc0c8d8bdcad9bac9dabd *c8d8bcc7dcbbc7d8bdc6d8bbc9dbbbc7d9bbc7d8bbc7d8bbc7dabdc7dabcc7d4bcc7dabdc7ddc1 *c9dbc1c9dcbec9d8bdcad8bdc9dbbecbd9bfc7d9bbc6d9b9c6d8bac7d8b9c6d8bac6d8b9c5d3bc *c7d7bac6d9bec6d7bbc6d8bbc7ddbbc5d9bcc6d7bbc7dab9c5d9bbc4d8bec7d8bec8d9c1caddc1 *c9d9c6ccdcc5cedec5cedcc3ccdbc3cbddc5cee0c7cfe1c9d0e3ccd3e3ced7e4ced8e4d1dae5d4 *dbe6d5dce6d7dce6d6dbe7d7dde7d7dfe8d8dee9d8dee7d6dee7d8dee8d6dee8d5dce8d4dce6d3 *dae7d3dbe7d4dae6d2dae5d3dae6d2dae6d1dae7cfd8e6d1dae6d1d8e6d3dce7d3dbe6d2dbe6d1 *dae6d1dae6cfd8e7ced7e4ccd6e6c8d3e2c2cddfbdcbddbbc9dbbcc7d9b8c7dab6c3daaec1d2ae *bfd5aebbd3a4b5d1a5b3caa0b1cba4aec598b1cd9aafc898adc99baec69daec69fb1cb9cafc79e *b1cb9dafc99fb0cb9faeca9eafc79cb0cba1b3cca4b1c6a1b4ca9eacc8a1b6cba6b2ca98a7c19c *a3b4a6b1b1bfc9cdc2ccd1a3c1d29fbbd6a0bbd3a1bbd19ebad395b7d3a0b9d2a1b8d199b7d1a8 *bed5a4c1d6a4c0d6a2bdd493b6d38ab0cb93aec98dacc98fafca8db1cb93afc795aec893b1ca97 *b1cc9bb2cd99b0ca9cb3cba0b4ce9fb5cea1bacda3b9cca0b9cda4b9cda2b9cea2b9d2a5b8d0a5 *bbd0a3bcd0a8bdd0b0bfd2b1c0d4b3c5d8b5c2d6acbdd3a8bbd0aabdd3a5bcd3aebdd0abbbcea4 *bacea4bbd1a5bacea5b8cfa1b3cd9db3ce9eb3cb97afc99fb0c99caec99eafc697b1cb97afc796 *afc791aec895acc892abc38daac68eaac493aac692aac491abc894adc693abca92adc793adc495 *abc697aac78fadc58eacc798adc699adca9cadc795aec594aec899afc89ab0c8a0b2cc9fb4cca4 *b3cca4b6ccaebcd1adbcd0adbbcea9b7ceaebdd1adbdd1b0c0d2afc0d2b4c5d1bbc6d8b7c3d3bc *c6d9bac6d9bdc7d8bdc8dac0ccddc1ccdec2cedec3cfdec4d1dec9d0dfc6cfddc7cfdec8d1dec7 *d1e0c7d2dfc7d3e0c5d0ddc7d1dfc9d2decbd3e1cbd3e2c9d6e3cad5e2cbd6e5ccd7e5ced6e3cf *d7e2ced8e4ccd6e5cbd7e5ced8e5ccd8e6cedae5ced9e4ced8e6ccd4e3cbd5e1c7d3e2c1cee0c0 *cde0bdcde2c0ccdebccadbbbc9e0bccbdbbec9ddb8c8dcb3c7ddb1c6dbb0c7dbaec6ddb1c8dbab *c4d9b3c6d9b0c7dcadc6ddadc6dba8c6dcabc9ddaec8dcaec6daadc5dcb0c7dcb0c7dcaec7ddb0 *c7dbafc6dcb0c6d8afc7dbb0c8dcadc5dcaec6dbacc6deaec8deadc7ddacc7dfb4c9dcb4c8d9ae *c7dbb5c9ddb2cbddafc6ddb2c7dcb5cadcafc7dbaec7deafc7dab2c7dcaac6d9b0c7ddacc7dab1 *c7ddb5c7ddb3c8dcb4c9dcbbc9deb6cbdab6cbdeb8c8ddb9c9dbb9c9dcbbccdfbccddebccddfc2 *d0dfc1cedfc1cedcc3cee0c4cfe0c2cee0bdccdfbccce0baccdcb5caddb2c8deb2cbdeb2c9dfb2 *cbdbaec9deb0cae0b0c9e0aec9deb0caddaec6d8b6c8dcacc9deacc9ddafc9ddacc9deaec9dfaf *c9ddafc9ddafc8dcb0cadcaec8ddafcaddb1c9ddb4cadfb1c9ddb1caddb2caddafc8dcb0c8deaf *cae0accadeacc9ddacc9dbafcadeb1cbdcafc8dca8bcce97a2abb1c7daaec6ddb0c7dcafc8dcaf *c7dcb1cadeadc9e0acc7dcb2c9deb4cce0b4cbdeb2cadfb5cadfb6cae0b4c9ddb4cbdcb3cbe0b1 *caddb1ccdeaec7deb5cbdfaec8ddb2c7dbb1c6dbaec6e0b1c9deb4cadeb1c8ddaec8ddb1c9dbb1 *cbdeb1cbdeb0caddb2cbdfb1cadeb4c9e0b4cadfb1c8ddb1caddb4cbdeaec9deb1cadfb2c7ddb1 *c9ddb1c8d8b0cadeb0c8ddb2c9e0b4cbdfb4cbdeb4ccddb5cbdfb2cbdcb3cbdcb3cbddb2cbdfb5 *cddfafcae0b2cadfb1c9ddb3cbdfb4cbe2b6cbe0b6cbdeb3cce0b7cae0b6cbe0b6cbdfb4cbddb4 *cbddb6ccdeb6cce0b7ccdfb4cadcb6cadeb6cbddb9cbdebbcbdcb8cbddb7cadcb6cadcb6c8ddbc *cbdfbacbe0b7ccdfb6cddeb4cadeb5cbdbb6ccddb6cadfb5cadfb4cbdeb4cae0b8cce0b6ccdeb6 *ccdeb6cddeb2caddb6ccdeb9cde0b9cce0b9cee0b7ceddb6cbdeb6ccddb6cadeb7cbddb6cbdeb6 *cce0b8cce0bacedebbcedebeccdfb8ccdfb8c9ddbbcbdebecbe0b8ccdfbacee0bbcee2b9cfe1bd *cee0c2d0e0bfcddcc0d1e1bdd0e3bccfdfbdcee2bccde2bbccdfb8cbdeb7cbdfbbcddebccbdfb7 *ccdfb8cce0b3cee1b6cddfb7cbddb7ccdeb7cbdeb5cbddb6ccddbacaddb7c7dbb7cbdeb6c9dcb6 *c6dbb8c7ddb5c6d8b2c5d8afc5dbb1c6dcb2c6d9adbdd3b0c5d7abbfd4aac2d3b0c3d5aec2d6b0 *c3d7b0c2d7b3c3d5b4c4d5b6c5d6b2c5d5b7c5d7b6c3d5b8c6d9bbc7dcbac8dbb6c7dcb4c5d7b6 *c7d6b4c3d1bcc6d5bac6dabdc6d8b9c6d6b9c9d8bbcbdbbdcad9bdcad8c0c9dabfc9dbbdc9dbb8 *c7d8bac9dbbeccddbdc9d8bbc9d8bdc8d9c1c9d8bdc9dabdc7dbbdcbd9c1ccdbbeccdebecedfc3 *cedcc3ccdec5cfdcc6cfdec6d0dec8d2dfc6d1dfc5d2e1c6d1e2cad4ddccd4e0cfd7e3cdd8e3cd *d8e3cdd9e2ccd6e2cbd6e2cad4e2cbd5e1c9d1e0c7d0dfc5cfdfc3ccdec3cce0c3ceddc0cbddbf *c9dac2cad8c1cad6bec9dabec8dbbfcad8bfcadcbfcbddbcc9dabecbdbc2cedac1cbdbc3c9dbbe *cadbbfc9dcc2cadac2c9dac2cbdbc3ccdbc4cbdfc4c9d8c2cadbbdc7d9bac6d8bbc5d6bbc7d4bd *c7d8bdcadabdcadbbcc9dabdc7d8bfc8d9bcc7d8bbc8d8bcc9dcbdc6d5bfc8d7bcc8d9bfc8dabf *cbdbc1cbd9c2cddcc8d1dfc7cedec6cfddc9d1dec9d0ddc8d0dec9d1e0cbd4e2ccd6e0ced9e5d2 *dde7d6dee7d8dee8d8dee6d8dee7d8e0e8d9dfe8d8dfe7d8dee8d7dee7d8e0e8d7dee7d8dce8d6 *dde6d3dbe6d0dce8d1dce7d3dae5d4dbe5d3dbe5d3dbe7d4dae6d3dbe6d3dce6d5dee6d3dce8d3 *dbe7d1dce6d0dae6d0dae4d1dbe6ccd6e1c7d4e2c4cedfbbc8ddb7c3d8b6c3d8b2c2d7afbfd0ae *bbd0a1b4cca4b6cea2b5cc9dacc69bb1cc9aafcb9cb1cba0afc88faac698afca98aec59daec89f *afc99eaec4a1b0c7a0b1ca9fb3cb9fafc7a1b0cba6aecba4b3cba1b2cb9fb0cba6b5cca4b9c8a8 *b5cba5b0c5a4b5b9bfcacdc3ccd2a2bdd3a5bed1a2bdd2a3bcd59bbad49ab8d09ebcd39bb6d0a4 *bbd1a3c1d99fbed6a7c0d89fbbd691aec98daec98aaec88caeca91aecb94adc896afcb98b1ce99 *b1cb9ab2caa0b3caa0b2ca9fb5cca4b3caa2b7cda5b6cea2b7cea4bbd3a2b6cfa4b9cda6b7cea3 *b7d0a5b7cfa9bcd2aabcd3aec0d6b5c6d7b7c7d8b7c6d7b2c2d8b0c3d3aabed7adbcd3aebdd2b2 *c0d2adbdceaebfcfb0bcd2aab7d0a1b3ce9eb1ce9eafcba0b2caa1b4ce9db6ce9db3cba1b3ce9c *aeca96adc891aec696aac595afc992acc797acc699adc597abc296acc591acc691aac694acc78f *adca93adc994acc793acc698acc69bacc598acc89eacc69aadc793b0cd9eb2cb9fb4c9a0afc9a0 *afcca4b5cca7b6cbadbbd1afbaceaeb9d1adbbd0b1beceb1c1d1b6bfd7b3c1d3b6c2d1b9c6d9bb *c8d8bcc7dbbcc8dbbfcadcc0cadbc1d1dec2cddec3cdddc2d0dfc6d0dec7d0e0c8d1dccad3e1cc *d4e0c9d2e2c9d2dfc9d1e0c9d2e0cad3e0cad3e0ccd6e3ccd7e3ced7e3cbd6e3ccd7e5cfd7e4d3 *dbe5d3dbe4d0dbe6cedce5d1d8e5d3dae7d1d7e7ced9e5ced9e6ced8e5c9d4e5c8d4e2c9d3e2c7 *d1dfc1cdddc2cddebfccdfbdc9dbbdcadebbcbdbbbc9dbb8c7deb6c6ddb3c3dab1c4dab3c7ddb4 *c8d9b1c6dbb5c6d8afc5dab0c5d8adc4d9adc6dcafc6dcacc6dcaec7dbb0c7dbb2c8ddaec5ddb1 *c6dcb3c6d8b2c6d9aec3d9afc6daafc6dbafc6dcb0c7daadc6dbadc3dcafc6ddacc4daaec6dcb1 *c8ddaec7ddb6c7deafc7dcb3cadeadc7ddb1c4d9aec6dbb6c7ddb2c6dbb3c6dbb1c6dbb6c8e0b6 *caddb5c8dbb9c9dfb8cadbb9cbdebecbdbc1cdddc0ceddc1cfe0bfcddcc1cedcc1cedbc3cedec3 *cfe0c6d0e0c7d1e1c5cedcc5d1e1c8d1e0c5d0e1c3cedfbfcbdebccbddb5c9dcb5c9ddb3cbdeb4 *cadbb2c9dbb0c9dcb1c8ddadc7deb4c7deb2c9dcafc9dbaec8ddadcbdeafc9dcb1c8deb2c9deac *c6dbafcbdbadc7deb1cbdeb3caddb2c8ddaec9dbb0c8dab1c8dbb4c9dcacc9dcadcadcb1c8deb4 *c8dfb1c7ddb0c9deb2cadcb3c9dcb1c9deb3cbdeafc8dfafc6d99fa3aeb6c9d8b2c9dcaec7dab1 *cadfaec8ddb0c8deb2cadeb3c9e1b1c9deb3c9dcb4cbdcb1cbdcb6c9ddb2cbdeb2c9dab5cbdeb8 *c9e0b4cadfb3ccdeafc7ddb4c7ddb3c5dab1c6d9b4c6dcb2c7deaec7dab3c9dab1c7dbaec7dbb1 *c8dfb0c9deb2c9ddafc9ddb2c9ddb0caddb3cbdeb3c9dfb3c8dcb1c9ddb1c8dfb4cbddb1c9dfb2 *c8deb2c7d9afc8dcb1c8deb2cadeb4c9dfb6c9dcb8cbe1b7cbdeb6cadeaecadeb1cbddb2caddb1 *c8dcb3c8ddb3cbdeb0cadfb3cae0b3cbdcb1cbe0b1c9deb7caddb2cadeb5c9deb5cbe0b5cbe0b2 *c9deb4c9dcb5c7dbb8cbddbacbddb7c9dcb7cadcbacadebacaddb9cadebcccddbccdddbacbdebd *c9dcb7c7dcb4c8dcb8caddb5c9deb7c7dfb8cddebaccdfb8cbddb8ccdfb1ccdfb8cce0b7cbe0b6 *cce1b7cce0bacedeb6cedfb6cddeb6cde0b3cadfb7cddeb9cbe0b9cae0bccbdeb6cadebbcedebd *ccdeb7cbdeb9cbe0bacce0bdcbdebdcee0bbcde0baccdebdccdebcccdfbdccdebccde2bfcee0be *cde0c2cfe0c5d3e2c5d1dfc4d1e1c0cde1c1cee0c0cee0bbccddbbcbe1b8ccdfb8cde0bccee0b9 *ccdfbbcee0b7ccddb8cbdeb9cde1b6cde1b5cbe0bacbdebbcbddbdcbdebccbe0bacbdeb9caddb6 *c8dbb8c7dab1c6dcb3c7dcb0c3d6b6c5d8b5c6d8b1c4d9b1c3d9afc2d8aec3d8adc3d8b0c4d8ad *c1d7afc2d6b1c5d6b5c5d7b5c7d8b5c5d7b6c4d8b8c4d6b9c8dabac6d7bac7d9b7c7d9b8c7d6bb *c7dbbcc8d8bdc8dabdc9d9bbc9dabec8d8bbc6dac0c7dbbbc8d8bdcbdcc0cadcc2cadcbdcbddbf *cbddc0ccdcbdcbddbdcbddbdcbdcbfc9dbbfc8dcc2cbd9c1cbdac1ccdbbecbdebfccdfc2cddec1 *ccdec3cedfc6d1ddc6d1dec8d2decbd4e0cbd1e0c9d1dfc8d2e1cbd4e0cdd5e2ccd3e2d0d8e3d1 *dae5d3dae4d3dae4d1d7e2ccd6e1ccd6e1ccd5e0cbd6e2c8d2e0c7d2dfc7cfe0c6cde0c6cfe0c2 *ccdec3ccddc4cdd8c5ccddc3cbddc3cce2c1cbdcc2cadbbec9dbc3cbdec1ccdec3ceddc6cdddc6 *cedbc6cedbc7cedcc5cedec3ccdbc5ccdec6ccddc6cfe0c5cedfc6cee1c1ccddc2cadcbec8d8bd *c9dbbfc9ddc2c9dbbfcbdcc3c9dabec9dcc0ccdbc2cbdbc3cadcc2cbdcbfc8dac1c9d9c1c8dcc1 *cadbc4cddac1cbdcc1ceddc7cedec9d1dfc9d0decbd2e3cbd3e2cad3e4cbd3e0ccd6e2ced7e2d0 *dae4d3dbe6d3dde7d6dde8d9dee6d8dfe7dbe0e5d8dfe6d9e0e8d8dee8d7e0e8d8dfe8d6dee8d3 *dce7d3dee8d5dce6d2dbe6d1dce5d2dae4d6d9e4d3dbe4d4dce6d2dce8d4dbe6d3dae5d3dce6d7 *dde6d3dbe5d2dbe6d1dbe6d0dae6d0d8e7ccd8e4c6d0debbc7d6b5c2d4b0c0d5aabcceacbbd3a4 *bad1a3b6cea0b1cd9fb4cb9baecb99adc99cb0c799afcc97b0caa0b2cb9dafc99cb1c79eaec69e *b0c99fb0c9a1afc8a1aec6a0b0cca2b5cb9eb2cba4b2c9a5b3c9a2b1cba8b7cba9b7cbabb9cda9 *b5cda9b7cdacbacbb0b9bcc0caccc4cdd1a1bcd5a1bbd69fbbd6a1bcd6a0b8cfa4bbd597b3cfa1 *bad3a3b6d198b7d39db9d6a2bdd6a1bbd590aec98daec88badc896b1cb91afcc90aecc96b2cb97 *b2ce99b5d19ab2cba4b5cda4b6cda3b4cfa1b6cda5bad0aabcd3a8bad3a4b9d2a1b6d19bb4cda2 *b5d0a5b1cfa8b9cda9bbd3aabdd1adc0d4b2c2d5b3c3d7b5c3d9b9c3d8b3c6d8b5c5dcb2c1d5af *bed3aebdd1aabed6afbfd4b1bed6aebcd1a9b9d1a6b8cea7bbcfa5bbd0a3b9cfa3b5cea3b3ce95 *afce98afca9cadc996b1cb9aaecc9eabc69baec798acc794acc997acc89daec799aec795adc896 *acc695acc995adc998adc598adc69ab0cb94adc999b0cb9cafcca3b2c99eb2c99eb0c7a1b4cda2 *b3cba4b3cca4b6cda9b8d1abbbd1b2c0d1b2c0d3aebdceb2bdd3b5c4d8b1c3d6b3c4d8b5c5d3b5 *c3d6bac6dabbc6dbbdc9dbc1cbdbc2d0e2c7cedec4d0ddc8d1dfc8d1dec7d3e1c9d1e1c9d1e2cb *d4e3ccd5e3cdd6e4ccd3e0cbd3e2cad3e1c9d3decad2e0ccd4e5ccd5e3cfd8e5ced7e3cfd8e5d0 *d9e5d3dae7d1d8e5ced9e5cfd9e7cedbe6d2dbe7cdd9e5ced6e4ccd6e5c6d4e2c7d1e2c5cfe0c6 *cfe0c1cedebecedebfccdebbcbdebacbddb9c6dbb9c7d9b6c6dcb6c5dbb4c6dbb0c4dab1c6dbaf *c1d9b0c3d8b3c3d8afc3d8b3c3dbaec2daafc3d9aec5d9afc6dbaec4d9b2c5ddb3c3d9b4c7dab0 *c7ddb1c7ddb4c5dcb3c6d8b2c4d7b0c3daaec4d9b3c5dbb3c4daaec5dbaec6ddaec6d7aec7dbb2 *c4dcb6c4d9b1c6dcb6c7deb7c8ddb3c8dfb6c9e0b2c7dcb4c9dcb7c7ddb6c7dbb6c7dbbbcbdcbd *ccdebbc9debcccdec1cbddc2ccddc3cbddc3cedbc3cedfc1cddfc5cee0c2cee0c4cee1c5d1dfc6 *d0e0c6d0e1c4cedec5cedec6cfe2c7d0e1c5d0e2c6d0e0c3cedebfcbdbbac9dfb2c9dfb5c8ddb3 *c6dcb4c9deb1c7deb6c9dbb3c6dbaec4dbaec4d9b1c6dbacc3daaac5deb0c7dfaec7ddb1c8dbb1 *c6dbb2c6deaec7dfaec6ddadc6ddaec8e0afc6dfaecae0b5cbdeb6c9ddb2c8dfafc7deb3c7dbb3 *c9ddb0c8deafc7dcb4cadeb2cbdfb1c9ddb1c8ddb1c6dbb1c7ddaec6dca9b9cbb3c7ddb1c7dcb0 *c7ddb5c9deb4c8dbb0caddb1c9ddb4cadfb2cbe1b1cbdfb4ccdeb8cbddb8c9ddb6cae0b6c9dbb8 *cbddbac9ddb9caddb8c9ddb1c8e0b4c7ddb6c6dbaec6d8b0c6dbaec7dcaec7deb1c7e0afc7ddb2 *c9dcb4c9ddb1c8deb3c8deb0c6deafc9ddb3c9deb1c7ddb0c6dcb4c8dcb1c6dcb3c7dbafc7dcb1 *c7ddb2c7deb1c5ddaec7ddb3c8ddb4c8dfb6cadeb3c8ddb2c9e0b3cadeb4cbe0b3cbdfb3cadeb6 *cbdfb3cadfb4c9dfb1c8deaec7ddb7cbe0b5c9deb4c8ddb4cadeb1c9deb2c8ddb5c8deb3c9deb3 *c8deb6c8ddb6ccdfb6c9dfb6cadebbcbddb9cbdebbcbdcbdcadebbc9dbbecadcbcccdfbacadebb *cbddbac9ddbccadebbcbdeb7cbddb7caddb6caddb7cbe0bacddbb5c8ddb6cbdeb9cbdfb7cadfb6 *cbdfb6cbe0b8ccdfb4ccdeb4cbdcb6cadeb7cbe0bbc9e0b6cbdeb8ccdfb5c9ddbbccdebdcbdebc *cbdebbcbdebfcddebacbe0b9cce0b9cbdfbdcedebbcedeb7cce0b8cbe0bacde0bacbdfbbcddfbe *cee2bdcee1c3cfe2c2cfe1c5d1e3c6d1e3c4d0e2c6d2e2c3cfe0c1cde0c1cde0bcccdfbdcbe0bb *cde2becce1bdcee1bbcde0b9ccdfbacee0bacddfbbcde1b8cce0bbcce0bccde0bbcde2bbcce0ba *c8ddb6c9deb7c7dbb1c6dcb1c5dbb6c7dbb4c4dcb5c5d9b5c6d9b5c5d8b1c3d6b5c3d7acc4d6b1 *c3d7afc3d9b1c6dbb3c6d8b4c5d8b6c8d9b5c6d6b7c6d9b4c3d6b1c2d7b5c6dab9c5dab8c6d7b7 *c7d9b6c5dabbc7d9bbc9d9bcc8dcbec9d9bdcaddc0ccddc2cbdbbfcbdbc1cbdcc3cbddbfc9d9c2 *cbdbc3ccdbbbc9debfcddec2cedcbcccdcc0c8dbbcc9ddc3ccddbecadcc1cbdec3ccdec2ced9c3 *cddec3cedec4ceddc4d0dec7cfe1c8d0dfcbd3e2cad4e2ccd6e2cbd3e2cbd1e1ccd5e2cbd4e2cd *d6e3d0d8e5d4dbe5d3dde5d1dce4d2dae5ced6e4d0d4e4cdd5e3cbd4e2cad2e1c8d1e2c6d0e2c7 *d0e0c7cfdcc6ccdfc6cbdec6ccdec4cbdec3cadec2cee0c1cddac5cedbc3ccddc6cddec5ceddc6 *ceddc8d1e0c8d1e0c9d0dfc7d1dec7d1dfc9d1decacfe1c6d0e0c9d0e0c9cfe0c6cde0c2cddcc2 *cbddc1cbddc3cadbc2cadcc2cadbc2cadac6ccdfc1cee0c4cddbc1cbdcc4cbddc5cadcc4cbdec2 *cbdcc4c9dbc6c9ddc3cedfc4cedec7d1e0cbd1decacee0cbd3e3cad3e3cad1e0cdd4e3cdd4e4cd *d6e3cedae4d2dae4d4dde7d7dde6d6dde7d8dee6d8e0e8d8e0e7d7dee8d8e0e9d8e0e8d6dde8d6 *dce7d5dbe7d5dbe8d6dbe7d4dde7d5dce6d3dce6d4d9e6d2dbe6d3dbe7d2d9e6d3dbe6d3dae6d3 *dce6d3dce6d3d9e6d2d9e8ced6e3ccd7e6ccd6e5c6d3e0b9c9dbb0c2d8abbed4a7b9d1a4b6d0a1 *b2cea0b1c99db0c69eb1cb9ab1ca97aecb99aeca9aaac7a1aecb9fafc79db1cba1afc7a1afc99e *afc8a2afc8a2b0cda7b1cca6b1caa4b2cba2b5cb9eb1caa5b3cca5b5cca6b5cda5b5cea4b8cda8 *b8ccabbacfadb7cdabb8d0b0babfc1cacfc4ccd2a2bfd6a4bed4a3c0d5a4c0d6a0b9d19cb9d39f *b9d69cbad49cb6d0a4bbd6a1bcd39ab9d3a0bbd592afcc8cabc993aeca8fadcb92b0cb90b0ce97 *b1cb94b2cc9ab1cb9fb5cda3b2ce9fb3d2a2b7d19fb7cfa1bbd3a4bcd3a7bed5a6b6d1a2b7d19d *b1cc9db0cca1b6d0a6b9d3a5b9d3aabfd2b0bfd1b3c1d7b5c3d6b5c3d8bbc5d8bac6d7b9c9dabd *c9d9b5c1d5b0bcd1aebfd4adbfd3aebdd3aabdd1aabcd3aabdd5aec1d5aec0d6b1bed4a9bad19d *b1cb9cb3cca0b2cb9daecc98aec996acc890abc69aafcc98b1cc9cb2cb9db1cba2b0cc9daec997 *b0cc9eb1ca9fafca9cb0cb9aacc998afca9caec79ab1cb9eb0c99eaec5a2b1cb9faeca9fb1cca0 *b1c9a4b1cdacb6d0a9bacfb0bed1b1bdd4b5c2d2b4c4d8b1c1d3b5c1d4b5c3d9b6c3d6b5c6d8b7 *c4d7bac6d8bdc8dcbdc7dbbfcaddc2ccdec3cdddc8d1dfc5d0e2c9d5e3cad3e2c9cfe0cad2e2cb *d3e1ccd4e2ccd5e3ccd7e5cdd6e2ccd7e4ccd7e4cdd5e3ced6e4cdd5e4cdd9e5d0d9e4d0d9e6d1 *dbe6d3dde7d1dae6d2d8e6ced8e4cedae5ccd8e4c9d5e5cbd6e3c9d1e2c6d1dfc1d0dfc2cbdbbc *c8ddbac8dcb8c7dbb0c4dab2c4d8b4c6dab6c6dbb1c3d8b3c1d7abc2d3afc1d8aebfd7abc1d8ae *c1d6aabdd7aac1d6acbcd6aec0d6acc0d7afc1d8acc1d6acc3d6afc4daafc1d9afc2d7b2c3d6b0 *c4d8b0c4d7b3c6d9b3c2d7b0c3d8b5c5dab5c5dbb0c1d8b0c5d9aec3daaec5d8aec2d7afc4d7b6 *c6dbb5c4dbb9c7dabbc7ddbdcbdbb7c8ddbac9dbb8c9debbc9ddb9c9debfcce0bdcce0c1cce0c3 *cbdfc3cedfc5d0dec6cfe0c4cee0c5d0e2c4cee1c9d1e1c7d0e0c4d1e0c4d0e1c2ceddc5d1dec5 *d1e0cad4e0c8d2e3c7d0e3c6cee0c5d0e0c6d1dec4d1dec4d0dfc3cedfc0ccdfbcccdfb6c8dfb1 *c8ddb6cbddb1c8ddb5c6daafc7ddaec6dcadc3d9b4c4dab6c6d8b3c6d8aac6daabc6ddb3c9dfaf *c7dbb1c8deb1c9deb3c8deb2c7daaec7dcafc9dbb4c8e0aec9e0aec9ddb2c8deafc7ddb2c8e0b2 *c9dbb1c7dcaec6dbb0c8dfb1c6dbb2c7ddb0c7dfb3c8dfb2c7ddb5caddb5c8dbaec2d5afc5dab2 *c9dcb6cadeb3c9ddb3c8deb6ccdfb6cdddb7c9ddb6c6dbb6c8ddb8c8ddbac9debbcbdfc1cbe0c1 *cbdbbbccdcbdc8debbc9ddb7c7d8b6c6dbb6c7dbb6c7deb4c7dbb7c7d9b1c6dbb2c6dab1c6dbb3 *c7dbb0c8deb1c6ddb0c6ddaec5d9b5c7dcb2c6dbaec5d8b1c4dcafc6dcb0c5dbb3c5dbafc7deb5 *c7dcb3c8dcb2c7ddb3c8ddb5c7dcb4c9deb3c7ddb3c9e1b6cae0bbccdcbcccdeb8c9dbb3c9dcb1 *c7dbb3c6dbb6c7deb7c9deb5cadeb5cbe0b6c7d9b5c8ddb2cadeb5cadeb4c8dbb1c9e0b3cadeb6 *cbe3b6c9deb3c5d9b5c9dbb8c9dcbac9dcbfcbddbbc7d7bdcadbbdcaddbeccddbfcbdebfccddbe *cadfc0cbdbbfcadbbecbdfbdcce1b9cce0b8cddeb7cadeb9c9debccaddbccadfb8cbe1b6cadeb6 *caddb1caddbacbdeb6cbe0b6cbddb7ccddb5cbdfb4cadeadc7ddb8cbddbacce0bccaddb7cbdebb *cbe0bbcbddbbcbddb8cbddbbccdfb9cce0becedebccbdfbbcce0bbcddeb8c9debacce2bdcde0bf *cddfbecddebfcee1c3d0e1c6d1e1c5d1e0c6d2e2c7d2e1c7d2e3c8d2e2c7d1e2c3cfe0bfcddfbd *cddfbfcee0c0cde0becee0bdcde1b9cbdebccee0bdcee1bbcce0bdcce1bbcce1bacce0b8cbdfbd *cce0baccdfbaccdeb7caddb7c7dbb6c8dcb8c7d8b6c6dbb7c6dab3c5d8b7c6d9b3c6d8b6c6d8bb *c6dbb6c3dab1c4dbb3c4d9b3c6dbb5c7dabbc7dab7c7dab6c6d9b7c6dbb6c4d9b9c6dab9c4d8b5 *c4d6b6c5d9bbc7dabac7d8bcc7dbbfc9dcbccadabccad8bdcbddbfccddc2cfdfc3cee1c3cedec2 *ccdec3c8d8c3ceddc1cddbc1cedcc3cbdcc1c9ddc3cbddc2ccdbc1ccdcc2ccdac2ccddc2cbdfc3 *cedfc6d0e0c9d0e2c9d2e1c9d3e2cbd5dfcbd6e2cad5e0ccd7e0cbd6e2cdd6e3ccd3e3ced6e3ce *d5e1d0d7e2d1dae3d2dae4d1dbe4d2dbe5d1dae5d2d9e6d0d8e5d0d6e3cbd4e1cad5e2c7d2e1c9 *d1e2c8d2e2c7cee1c7d1e2c8cfddc9d1dfc6d0dec6d0e0c5d0e0c4cedfc4cdddc7cfe1c6cfe1c8 *d1dfc9d1dfcad1dfc9d1e0cbd2e0cbd1e0ccd4e1ccd5e3cdd6e3cdd5e3c9d3e1cad1e1c7ccddc7 *cfe0c6cfdec3cddfc5cedfc6cddec7cedec5cedec3cbddc4cfddc4cddec6ceddc6cee0c6cee0c6 *cde0c5ceddc5ceddc6ceddc7cedfc6d0ddc7d1ddc9d1e3c9d0e2cdd6e2cbd2decbd3decbd5e3cb *d6e0ced6e4ced6e5d0d9e7d5dde7d6dee7d7dee6d5dde6d3dce5d8dee7d6dde7d8dee8d7dee8d6 *dde9d8dde6d3dae5d3dce6d3dbe7d5dce7d3dae5d3dae7d3dbe6d4dbe6d3dbe6d2dae6d1dae5d1 *d9e6d2dbe6d2d9e6d3dbe8d1dae7cdd8e3c8d4e1c1cddebbc9dcb3c2d8afbdd1a6b8cfa8b9cca7 *b4cba0b1cb9bb1cb9db0c799adca99b0cb9bb0cc9caac99eafc9a1b2cd9bb1cb9aabc8a1b1cc9e *adc89cb0c7a1b2cb9db2cba2b2caa0b3cea4b2cca1afcca3b2cba6b7cca9b5cea7b6d0abb8cdae *b9cdaab7cdaebcccaebcd1aeb8cdb1babec0cacec4cdd2a1bcd1a3bed6a2bdd9a1bed89fbed6a0 *bbd39cc1d5a4c1d499bbd49ebbd39fb9d3a1bbd5a1bed7a1b9d399b4cb8fb1c990aecb90b1cd91 *b0ca96b2c9a0b4cc9eb6cda2bcd199b5cd9fbbd1a1b6cda5bad1a3b9d0a3b7d2a6bcd0a6bbd1a2 *b6cc9eb5cfa0b6d0a0b7d1a3b9d0a7bdd3aec1d3b0c1d3b3c3d5b3c5d5b4c2d5b5c5d7b8c8dabb *cadeb9c9deb6c7dcb1c1d8afc2d4b1c2d6aebdd2adbcd1b1bbd1b1bfd1b0c1d6aec4d8b1c6dbb0 *c1d3aabed3a4bacea1b7cea4b6cc95b0cb98afc999b1ce99b2cc9cb4cc9cb6ce9db3cc9eb4cc9f *b3cd9fb2caa3b6cc9fb6cfa3b6ce9fb4cc9db0cc9cb2ca9ab0c99ab2ca9bb2cca1b5cfa1b5cea6 *b6cc9fb5caa3b7ceadbccea9bbd1abbdd3b2c3d6b7c6d9b2c5dbb6c6dab3c6d9b1c3d3b5c6d5b6 *c7d8b6c7dbbdc9dbbccad7bdcadac2ccdbc3ceddc6d0dfc4cfdfc8d1e2c9d4e2cbd6e3cbd5e1cb *d7e5ccd9e5ccd7e3ced7e4ccd7e5ccd7e2cdd7e4cdd7e5cfdbe6cbdae6cfdce5cfd8e4d2dbe5d3 *d9e5d5dde6d2dde7d1dde6d1dce6cdd9e5c9d5e3c6d4e2c6d3e2c6d1dfc6d2e2c0cedebccbd8b9 *c8ddb4c6d6b3c6dab6c4d8b0c4d6b2c1d1aebdd4a9c0d4a7bbd5abbdd4a8bfd4adbdd2a9bad1ab *bccfabbfd0a7bcd3acc1d9aac1d8abc1d6aec1d4aec0d3abbdd2adc0d3b0c2d4b0c4d8afc4d8af *c3d9b5c5d7b1c5d8b2c4d8b6c5d8b4c6d8b3c5dab0c3d6b0c3d7b5c6d7b4c6d6b6c7d8b2c5d8b4 *c7d6b7c7dbb6c8d9b8c7dbbbcbdbbcc8dbbccadbbbccddc2cddcc1cdddbbccddc0cedfc7d2e1c3 *d1e0c7d1e0c9d3e1cad4e0c9d4e2c9d4e3c7d1e1c7d2e1c7d3e2c7d3e1c8d4e2c8d4e2c7d3e0c5 *d0dfc8d3e0cbd4e2cbd4e1cad5e2c6d1e0c4cedec2cedec3ceddb9ccdebdcedfbdcddcbccadeb9 *cadeb6c9deb7cbe0b5c9dbb6c8d9aec5d9b2c4d8adc3d8b2c4d8b0c6d9b5c4dab3c7dab3c8dbb4 *cbdcb1c8d8b1c7dbaec7daaecbddacc9dcaec7dbafcaddb0c9dfb1caddadc9ddafc8deb1cce0b4 *c9deb5c9deb6c9dcb6c9deb2c9ddb4caddb7cadab2c8ddb1c9deb3c8d9b8cadebacadebbcaddb8 *cadcb9cbdfb7cadeb7cadfb5c9ddbacbdcbfccdcbdcadbbdcbddbacbddbdcddfbdcbddc1cddfc3 *cee1bfcee0c0cdddc2cddebdccdcbbcadab6c8ddbbcaddbbc8dbb8c7dbb6c7d9b4c7dcb7c8ddb5 *c9ddb6c9dcaec6dbb4c7d9b1c5dab4c7dab0c6dab2c6d9b1c6dbb5c7dbb2c4dab2c6dab1c7d9ae *c6dcb6caddb3c9dcb4cadcb6cbdcb3c7ddb5c7ddb4cadeb4c7ddb4c9ddb6cbdebbcbdcbbcce0b6 *caddb6cadbb6c9dcb5caddb6c8ddb9ccdcbaccdeb8cbdbb6cbddb5cbdeb3cadcb3cadbb0c8ddb1 *c9dcb6c7debac8dbb7c9ddb9c7dcbbc9d8b6c8dabbccddbccbdbbdcbdebdc9dcbbcbdebfcbddc4 *cfdfc2cfdec0ceddc0cdddc1ccdfc0cbdfbbcadebbcddfbdcce0bdccdfb9cee0b5cbddb8cbdfb6 *cbdeb5cbe0b6ccddb7ccdeb7cce0b6ccdfb5c9ddb3c9ddb9cadeb6cbddb7cbddbdccdbbbcbddbb *cde0bdcce0bacadfb7c8ddbdcee0becfdebdccddbfcedfbdcee0c2d2e0becee0b8cee0b5cce1bc *cfe0becfdebbcee0bbcfddc0d0dfc4d2e3c5d2e1c6d2e1c8d3e3c7d6e2c9d4e2c7d3e0c6d3e1c5 *d1e2c3d1e2c2d1e2c0cedfbdcedfbdcedebdcbdebdd0e0bacde0b9cee1b9cfe3b9cddfbbceddbb *cee0bccde0b7cce0b7cce0bacbdeb9ccddb6c9ddb6c9ddbbc9dcb4c9debacbddbac9deb8c8dbba *cbdbb9ccdbb6c7d8b3c6dab4c7d8b7c6dab7c8dbb7c9dbb9c9ddbbcbddbbcbdcbacadab8c8d9b9 *c6d8b2c4dab5c5d8b8c6d9bac7dabbc7dbbccbdcbfcddcbcccdbc1cddfc2ccddc1cddfc2cfe0c6 *d1dec4d1dec3d1dec4cfe0c4cfdfc5d0dcc6d1dec3cfe0c4cbddc5cddec3cfdfc3cedec3cedfc4 *cfe0c7d1e0c9d1dfcbd3e2c9d3decdd6e3ced8e4cfd8e4cfd8e0d0dbe4cdd8e1ced9e4d0d9e4d0 *d9e3cdd7e4ced9e3d2dbe4d3dde4d2dde4d1dce5cfdbe5d0d9e4d0dae6d0d9e4ced7e2cdd6e2cb *d6e1cbd6e4c9d6e3cad3e0c9d4e3c8d4e2c9d1e0c9d1e0c8d3e0c7d1dec9d1e0c7d1dec7d2e1c6 *d2e2c7d1decad3deccd6e2ccd6e0ced8e2ccd6e2ced7e4d1d8e5d1dae6d1dae3ced7e4ccd7e3cb *d4e0c9d3e1c5d0dfc4d0e1c7d1dfc7cfdec8d0dfc8d1e2c8d1e1c7d3e0c7d2e0c7d1dfc7d1e1c8 *d1dfc8d2dfc8d3e0cad3e0cbd2dfccd5e2c8d3e2cbd3e0cad2e0c6d2e2c9d3e3ccd3e1cbd4e4ce *d4e1ccd6e3cdd7e5ced8e4d0d8e4d2dde5d3dee6d6dee6d6dee7d7dfe6d3dee7d5dee5d6dde6d5 *dee6d5dde7d3dde6d4dde7d6dee6d5dee7d3dce7d1dae5d2dbe6cfdae5d1dae6d1dbe5d0dae5d3 *dbe5d2dae6d1dce6d2dbe6cedae7cdd8e5cbd8e4c7d3e1c0cddeb7cadbb1c1d5aebdcea4b6cba2 *b4cd9ab1cc95b0cca1b6cb9db3caa4b2c89cb1c996aecc9fb0cc9eb1ca9ab0c9a0b4ce9fb1c89d *b6caa1b3ca9cb2cba3b3cda7b4caa3b1c8a4b8cea6b7cea1b4cba7b9caa3b7d1a4bad1a8b8cea8 *b6cbabb6ceaebcd0acbdd0b0c1d3aebfceaebcbebfc9d0c2cdd2a3bcd4a4c1d59ebdd5a1c1d697 *bbd69cbbd4a0bdd79fb9d3a0b8d199bbd59abad4a0b9ce9bbbd49bbbd698b5d195b4cc94afcb93 *aec992b0cb96aeca96b5ce9fb3cd9bb3cf9eb6d0a4b8d0a6b9cfa2b6cda8bdd2a6bad0a4b9cfa5 *bad2a3b7d2a7bbd2a6bbd2a7bacfa5b7cfa9bcd2a9bdd2adc0d6b2c3d8b4c8dabac8dab7c8d8b9 *c7d8b8c8d7b5c7dbb6c7dab9c7d6b3c3d5b5c3d8b2c3d7aec0d2adbdd5abbcd3afc0d6b1c2d6b4 *c7d8b6c6dbb2c3d8b6c6d5b2c1d3a7bbd2a2b6d099aecc97aec99bb1cc97b6ce99b4cfa1b4cda8 *b9cea2b6cea3b7cea2b6cba2b6cea4b6cea4b6cea3b5cf9fb6cda1b3cb9cb5cc9db4cca1b7cfa1 *b5cea0b6cda3bacfa5b9d1aabad2acbcd1adbcd2b5c2d6b7c6dbb8c6d9b3c6dab3c6d8b7c6dab8 *c6d8b6c7d8b8c7dabbc7d9b8cbddbdcbddbfcbdec3d0e0c7d1e1c8d1dfc7d1e2c7d4e3c9d4e2cb *d6e3cbd6e2cdd5e5cdd7e6ced7e3cdd6e5ccd6e4cbd7e3cbd5e4d0d8e5cdd8e5cfdbe5d0dbe6d1 *dbe6d2dce6d2dde7d2dce7cfdae8d2dce7ced9e5cbd7e6c9d4e2c7d2dfc1cedebccbdebdcbdebe *ccddc0cbdebac6ddb4c2d8b0c3dbb4c6d8aebdd5aabcd6a5bad4a5b5cea2b6cea4b6d1abbacfa5 *bbd4a8b8d1a8b9cdaabbd3aabdd3acbbd1acbfd6acc0d7b1c1d7b1c2d6aec2d7afc3d7b1c3d6b5 *c5d7b4c4d7b5c6d8b5c5d7b9c7dcb4c2d8b1c2d6b5c3d5b6c4d5b4c5d7b7c6dab8c7dcb7c7dbb9 *c8dbb8c8dbbcc9dbb8c7d8bcc8d9baccddbdcbddbeccdcc3cfe0c3d1e1c6d3e1c7d0dec7d1e2c7 *d4e2c9d3e3c9d3e0cad2e2c9d1decbd3e0c9d2e2c8d3e2c6d1e2c7d3e2c9d6e2c9d4e1c9d4e2c8 *d6e3cbd5e2c8d4e2c8d5e3c9d3e3c7d4e2c6d0e0c5ceddbfcdddbcc9dcb7c8ddb9c8debac7ddb9 *c8dcbbcbddb4c7dcb5c9dbafc9ddb2c6dbafc6dab1c6dab1c4dab1c5d8b4c5d7b8c6d8b6c6d6b2 *c7dcafc6ddb1c5deb1c8dcb2c8ddb1c7ddb3c8dfafc7dbafc8ddb3c7ddb4c9deb4c9ddb1c8deb6 *cbddb7caddb7caddbacbdcbdcbdcbacaddb7c9deb7c9dbb8c9dbbbc9ddbcc9dab9cbddbdccdfbc *cbdebcc9ddbdcadcc2ccddbccbdebcccdfbccddebdcedebccce1c0cbdebecde0c2cee0c3cedbc1 *cfe0c4ccddc4cfdfc2ccddc1cde0c1ccdebdcedebdcbe0c0ceddc1cbdbbac9dbb8c8dbb7c7d8b7 *c7dbb4c6d9b6c7dbb3c6d9b3c7dbb3c5d9b3c5dab2c6d8b2c3d8b2c5d9afc4d9b5c6ddb4c5dab5 *c7d8b3c5ddb5c4d7b5c6d9b6c7dcb2c6dcb6cbdfb2c7deb7c7dcb7c7dcb7c9ddb8cbd9b7cadbba *cbdcb5c7dbb8c8dcbbc9ddb9c9dcbdcaddb7c8deb8c8dcb6c7dbb1c9deb0c8dfb1c8deb3c9ddb4 *c8dbb7c7d7b6c8dcb9c9dbb8c7dcbac8dabcc7dbbcccdfbfcbdbc0cbdbbbc9dcbcc8d8c0cbddbe *ccddc2cedfc2d0dfc1cee1c1cedfc1cdddbfcbddbdcadcbdccddbbcadfbccbdebdccdebdcce0bb *cddeb9cbddb6c8ddb6cbdeb5c7ddb1c7debbc9deb6c9ddb5cadebbcbdeb6c8dab7caddb9c9ddb9 *cbddbdccdebdcbe0beccdebeccddb8ccddb8cde0bacbdebccde0becedfbccde2becddfbdcee0bc *cddfbdcedfb8ccdfbecde1bfcfe0c0cee1c2cee1c4d0e0c7d2e3c7d3e2c9d4e4c9d4e3cad2e2c7 *d0e1c7d0e0c6d1e0c2d1e2c3d0e3c3d1e1c2cee1c1ccdec1cedfc0d0deb8cce1b6ccdeb9cde2ba *d0e2c1cee1bbcbdfbacee1b6cbdeb4cbdeb8cbdeb6ccdfb6ccdebacbddbdccdebbcbddb6ccddb6 *c8dbb9c6dbb8c9ddb6c6dcb7c8dcb7c8dab9c7dbbcc8dabfccd9bccadbbfccdec0ccddbdcbdebd *c8d8b8c6d8b5c4d7b5c4d9b5c6dbb7c7dabcc8dbbfcbddc0ccddc1cddcc0cedec3ccdcc3cedbc5 *d0e0c6cedfc3d0e1c3cee0c6cfdec7d0dec7d3dec6cfdfc9d1e1c9cedec6d1dec7d0dec6d0e0c5 *d0e2c5d0dec9d1e0c7d1e1c9d4e2cbd3e0ced4e0cedae5d2dae5d1dbe6d1dce5d2d9e4ced9e4cf *d6e3d0dbe3d1dae5d2dbe5d2dce7d2dde7d4dde6d4dce4d2dae5d0d9e5cdd8e4ced8e5cdd7e3cd *d6e3ccd7e4cfd9e5ccd6e4cbd5e2cdd6e3c9d6e0cbd4e1cbd3e2cbd4e2c9d7e3c9d2e0c7cfe0c9 *cfe2c9d2e2c9d3e1cbd3e0cbd3e2c9d6e2ccd6e2cfd7e3ced7e3d0d8e3d0dce6cfdae4ced8e4ce *d7e6cbd7e4cad4e1c9d1dec7d1dfc6d1e2c7d1e2cad2e2c7d1e1c8d2e2c8d3e2c6d0dfc7d0e0c8 *d1e1c9d1dfc9d2e0cad1e1cad3e1cbd3e0cad3e1c7d4e3cbd4e2c9d1e3c7d2e3c6d1e3c9d1e1cc *d2e1ccd3e3cbd6e5ced8e5cdd7e5cfd8e5d1dbe6d4dbe6d3dae6d3dbe6d3dee7d3dce5d3dde6d3 *dbe7d3dce7d2dde7d3dce6d3dde6d0dae5d1dbe6cfdbe6d0d9e7d0d8e7cfd9e5d0d8e3d0d9e5d0 *d8e5d0d8e6ced9e4cfd8e5d0d7e6cfd7e6cdd8e4cad3e2c5d2dfc3d0dfb7c9dbb1c2d8a7bbd1a7 *b8cfa0b3cda0b0ca98b0c79eb4c99db1cb9dafcb9fafc89db0ca9aabc99badc69bb2cc9aaec5a0 *b2ca9baeca9baecaa1b0c79dafcba0b0cba6b4c9a2b4cda7b8cda4b8cea5b5cea6b7cfadbbd1ab *b8cfabb8ceabbad1aabbcfaebbcfaebcd2aebcd1b0b9bec2c9cfc5cdd29ebdd0a0bdd1a3bed5a4 *c1d69fbfd39fbdd59bbcd29abcd69ebdd3a3c1d6a1b7d2a3b9cf9ab8d09cb8d0a0b8d097b4ce95 *b6ce98b7ce92b1cc95b3cc98b1cb9fb3cca0b5ce9eb8cca4becea2bbcea4bbd1a3bcd2aabccea9 *bcd3a7b7d1a3bbcfa8bdcda7bbcca7bdd0a6bcd2abbed2afc1d0aec0d3b2c5d5b5c6d8b9c8dabd *c9dbbbc9ddbccadbbac7d8bdc9d8bdcbd8b8c7d6b4c7d8b3c3d6b1c4d3aec0d1b0c0d4adbfd3b5 *c5d4b6c7d8bac7dab4c6d6b6c6d7b3c1d5b5c8d5b4c3d4a0b8cf9fb2c9a1b2cca3b5cca2b9cea8 *bbcea8bdd0a9bccfa8bbcdaabbcfa5bcd2a6bacda7bacda5b8cea4b9cfa2b8cda3b7cda0b6cba9 *b8cfa7b6cca4b7cca9bacfabbbd1aac0d4b1c1d3b3c1d4b5c2d3bbc6d8b2c1d2b4c5d5b2c3d5b6 *c6d6bbcbd9bbc9d8bcc8d5bdc8d9bbc9dac0cadac1cedbc3cedec6d3e0c7d3e2c7d3e1cad4e1c9 *d4e2cad6e3ccd8e5cdd7e1cdd8e2ccd8e2cdd8e2cdd8e4ced6e4cfd8e3ced8e2ccd8e2cdd9e4cf *dbe4d2dce5d2dce7d5dee5d4dbe6d3dde6d4dce5d2dbe5cedbe5cedbe3cbd7e0c2cedebbc9dbbb *c8d8bac8dbbbc9dbb7c6d6b2c2d5adc0d5aac2d6aac0d1abbed6a8b8ccaab6c9a3b4cca1b5cba4 *b6cba4b9ceaac0d1a4bfd1aabbcdaac1d2aabdd3abbcd0afc0d7acc0d5b1c3d5b6c6d8b5c6d6b6 *c5d6b2c4d7b6c6d7b4c5d4b6c8dab9c6d5b6c5d4b8c8d8b9c7d8bbc8d9bbc8d5bdc8d8bbc8d8bd *c8d8bdcbdabbcbd9c1cedcc1cbdbbfcbd7c3cedac3cedec0ceddc3cfdec3d1dfc7d2dbcbd2dfcc *d6e3ced6e1ccd6e2cbdae3cbd6e1ccd8e4cbd6e2cdd5e2c9d4e3c9d3e3cad4e2c9d6e0c9d6dfca *d7e1cbd7e2cbd8e4ccd6e3cad4e2cad3e1c7d3e0c4cfdfbdccdabfccdab7c8d9b4c6d9b5c7dbb6 *c4d6b4c6d8b5c8d7b4c8d8b1c6d6adc3d9b0c6d6b1c5dab6c4d6b2c2d6bbc6d5b7c7d7b9c8d7b7 *c6d6b8c8d9b6c8dbb9c9dbb7c9ddb8c9dbbacbddb3c7dbb6c9dcb1cadbb6c8dab7cbdebacdddbf *cfdec1d0e0c1cdddc0ceddc3cfdac1ccdbc1cedebfceddbfccdcbdccdcbecddbc1ccdcbecdddc1 *cfddc1cedec0ccdec2ccddc3cedfc2cedfc1cedebdcddbbdcfdbc3cedec3d0dec1cedec5d3e0c9 *d1e0c7d1dec7d1dec6d0ddc6d1e0c6d0dfc3cde0c3d1dbc2cfddbfccdec1ccddc2ccd9bcc9d9b8 *cbd9b5c6d8b9c9d8b0c6d7b7c6d8b0c7d9b3c5d6b4c6d7b3c5d8b0c2d6b2c2d6b3c4d8b3c5d7b7 *c6d9b6c7dab6c8dab6c7d8b7c8dab8c9dab5c7dab3c7dcb6c8ddb7c9ddbcc8dab8c9d8bbcddcb6 *c7d9b6cadcb6c5d8b8c8d9bdcbddbbcbdcbdcce1bccdd9b8cbdbbac8dab6caddb3c8ddb6cbdbb6 *cbdcb6c8dbb8c9d8b5c8dabbc9d9c0c9d8bbc8dabdcbdbc1ccddc0ccdbc1cdddc0ccdabecbdbc1 *cbddc0ccd9c3cddcc2cdddc3d0dec1cfddc1cedec1cedebfccdbbfcbddbecbdbbecbddbfccd9bd *ccdebcccdbbacbdbb8cbdbbacbdbbac9dcbbcbdbb6c9dcbacbddb6caddb9cadcb9cadebbccddbd *cbdcbdcbdbc0cddcc1cdddbbccddbdcddebfcddebaccddbfcee0c0cfe0c1ceddc1ccddbecedfc1 *cedfc0cedfbfcedebccee0c1cde0c1cedec2d1e0c1d0e0c3d1e1c6d3e0cad6e1cad6e2cdd7e2cb *d3e1cbd2e1c8d3e1cad2e0c7d3e1c7d2e0c7d3e1c7d2e1c4d4e4c5d0e0c4cedebed0e1b9ccdfb6 *ccddb9ceddbccddeb9cee0b9cde0b7cbddb7cbdeb7ccdeb7c9ddbacce0bacddfc1cddeb9ccddba *caddbbc9dbbac8dcb7c9dbb8cadbb6c9dbb7c9dbbcccdac0cddbbccbdabfcbdbbfcddcbfcddebf *cddebdcadbbcc7dabbc8d9bfc8d8becad7becadac0cbdbc0cbdac2cddcc0cdddc1cedbc2cedfc5 *d1e0c7d1e0c6d0dcc3d1ddc5cfdec6d3dec4d1dec5d2dfc9d2decbd6e2cdd4e2cbd4e0c9d5e1c9 *d3dec9d3e1c9d3e2c9d5e4ccd6e2ced8e3ccd7e3d1d9e3d1dbe4d2dbe5d2dbe5d1dbe3d2dae5d1 *dae5d1d9e4d1dae2d1dbe2d2dde3d3dde5d4dee6d6dee6d4dee7d5dee6d2dce2cfd9e3cfd8e3cd *d7e2cdd7e1d0d8e4cfdbe5d1dbe3cddae4d1d7e3ced6e2cfd6e1cbd5e1cbd6e0c7d6e1c9d3e0c8 *d2e1c9d3e1c9d4ddc9d5e0cbd6e0ccd6e0ccd8e3d0dae4d1dbe5d1dce5d6dbe5d3d9e5d1d8e3d1 *d8e2d0d7e2ccd9e3c8d4e4cbd3e1c9d2dec8d1dec6d3e0c9d2decbd3dfcad4e1cad3e2cad4e2c8 *d2e1cad4e1cbd1ddc9d2decad3decbd5e0ccd7e2cbd4e2c9d5e3ccd2e2cbd5e1c9d3dfbdcadecb *d5e0cbd6e1ccd6e3ccd4e2ced6e3d0dae5d2d9e3d1dae3d0dae5d2dbe5d0d9e5d1d9e5d3dee5d6 *dde5d4dbe6d5dee3d1dce6d3dbe5d1dae6d0d7e4d1d8e5d0d8e5d0d9e5d1d9e5cdd8e2cbd6e0cc *d6e3cbd6e0cbd7e3cdd8e3ccd8e5cdd8e5ccd7e3cbd7e1cad2dfc7d3e0c6d0e0bfcbdbb4c5d6ab *bbd1a4bcd1abbbcfa0b3cc9fb1cc99adc699aec69eb1c79eb1c89db6ce9cb1cb99b3c79fb1cb9c *afc89cb0caa2b2c7a2b3cba4b4c6a4b8cea2b6cca5b9c9a3b5caa8b9cda8b7cba9bbceaabacbae *bcd1a7b9d1abb6cfa9baceaebbcbadbccdb1becfb0bacab3bdc1c1c9cec5cdd2a5c0d69fbdd699 *bdd6a1c0d79fbdd4a0bbd498bcd396b9d39ebed6a2bed39fbdd69cbdd69fbdd59cb8d39cb8d29c *bdd49bbdd49ebdd399b6cea5b8d2a6bcd2a4bbd3a3b9d0a5bcd3a7bdd2a6bcceaac0d6acc0d5aa *c0d6aabed4abbed2a9bcd0a7bdd4aabcd2aac0d5acbfd4aec2d7afc2d5b0c3d6b7c6d9b8c6d8bb *c9dabdcbddbdcbdcbbccddb9c9debccbdebdcaddbbcadbbac9dbbcc9dbb7c9d7afc3d7b0c1d4af *c1d5b5c3d7b5c7d4bac8d7b7c7d7b9c8dcb7c6d8b8c9ddb4c3d7a9bdd3a4b3cca0b3cda1bbd3aa *bdd3a4bdd2aabdd3acbcd3a9bdd2adbed1aebfd2a9bcd3aabcd1a8bcd1a6bbd1a5bbd0a6bad0a6 *b8cfa8b8cfa6b7ceaabad0aabdd1acbbd1adbdd3aebfd6b2c1d8b2c3d7b1c3d9b1c4dab3c3d5b6 *c7dab6c6d9b7c5d7bbc9d8b8c7dbbdccddbdccdec2ccddc1cddec1d0ddc4d3ddc7d2dec7d1e3ca *d6e3cbd8e3cfdde5ccd9e6cdd8e6cddae5ced9e4cdd8e4ccd8e3cfd8e7cfd8e6ced9e5ccdbe6ce *dae6cedae5d0dbe4d2dce6d2dde7d3dee7d4dee8d5dfe7d3dde6d3dce7d1dce5cddae6c9d5e4c5 *d0e0bbc8dcbbc9dbb7c7dbb3c4d8adc3d8acc1d6a8bdd6a4bbd1a9bcd3aabdd3abbdd1aab9cca8 *b9cca3b9d1a5bbd1a5bad4a8bbd4aabbd3aec2d3b1c2cfafc1d5adc1d3adc3d9b1c4dbb1c6dcb6 *c7d9b9c7d9bac6d9bcc9d9b9cad9bacadbb8c7dab7c7d9bcc8dbbcc8dbc1cbdbc2cdd9c6d1dcc1 *cfdfc3cfe0c3cdd9bfcedcc1cde1c1ccdec3cdddc5cfe0c3d1e0c3d3e0c7d2dec9d3e3cad4e3cc *d6e3d0d8e5ced9e5cedbe3cddae6ccdae5ced7e4cdd8e2cdd7e4ccd6e3cdd6e3ced6e3c9d6e2cb *d8e3cad7e2cad6e5cbd8e4cbd5e3cad5e4c8d4e1c6d3e0c1cfdebfcdddbdcbd8bac9dcb6c6d7b3 *c5d9b0c5d7b5c5d9b3c7deb2c6d9afc6dcb2c5d7aec2d8b1c5d6b4c4d8b5c5d8b9c7d8bcccdbbc *cee0c1cbdfbeccdcbfcddebfccdabac8dabdcbdec1ceddbdcedeb9cbdfb4cadbb9c9dbb9cbdcbf *ccddc2cee0c2d1e0c4cfe0c6d0e0c4d2e2c5d2e2c4d2e1c2d0dfc1caddc2cdddc3d0dec3cedfc1 *d0dfc3d1e1c2cfdcc3cedcc2cfddc4cfe0c7d0e0c5cfdebfcedec3d1dec1d1dec5d1e2c6d2e2c5 *d2dfcbd3e0c7d2e1c9d5e3c7d3e2c7d3e3c6d1e0c6d0dfc4d1dfc2cfdfc4ceddc3cddebecedfc0 *cddebbc9dabac9dab9c6d8b6c7d5b8c5d1b1c4d6b2c5d5b3c6d9b3c5dab3c4dab4c4d8b3c6d8b5 *c5d7b4c5d8b4c6d8b9c9ddb9c8dbb6c7dbb6c6dab7c7dab9c8dbb6c9dcb7c8dab8c9dbbac9dfb9 *cbe0bac7dbb6c8d9b9c9dab6c7dab3c7dcb8cbdebbcbe1bdccdcbdcde0bbccdebacaddb7cbdbb3 *c7ddb6c6dab7cadbb6c7dbb9caddbdcbddc1ccdebbccddc0ccdbbcccdec3cedfbfccdec0cddec2 *cedfc3cee0c2d0ddc1cddcc1cee1c0cfdfc1cedec2cddec2cee0becbdcc0cbdec1ccddc1cedfbf *cddebdccdfbecddebdcbdebbc9deb8caddbbcbdeb6cbdcb9c9ddb7caddb8c9ddb9cbdeb9ccdfb7 *cadebdcbdfbacbdfbdccddc1cedebecbddc2cddebdcde0bccadebecee0c0cee0beccdebfd0dfc3 *cfdec3cfe0c0d0e1c1cfdec2cee0c3cfe0c6d1e1c3d2e0c3d2e0c5d1e1c9d3e2c8d6e2cad7e4cd *d6e6cbd5e4cbd5e4cad6e3ccd6e2c9d6e2c5d4e2c6d4e2c5d3e3c3d1e2c3cfe2c3d1e0bfd0e2b8 *ccdfb6ccdfb8cddfbbcee2bfcee0bacbe0b6cce0bacbdeb6cbdebbccdeb5cbddb6cbe0bccddeba *ccddb9cbdfbfccddbcccdebbcbdcb9cbddb7c9ddb7c9dcbacbddbeccdfc1cddec2ccddc1cfdec1 *cedfbeccdfbccaddbfc7ddc1cbdebecadcc1ccdcc5cfdec8d0dec7d1dfc4cee0c3ceddc2cddcc6 *d1dec6cfe1c7d1e1c7d1dec7d3dec7d2e0c6d0e1c6d1dfc8d2e0cbd6e2ccd5e3ccd6e3d1dbe5cc *d8e4cdd7e4ccd8e3c9d4e1cad5e5ccd6e3cbd8e4ced9e3d3dce5d3dde6d3dde6d2dae4d1dbe2d1 *dbe4d0dae5d1dbe6d1dce5d3dce6d2dce6d2dde5d4dce5d4dee7d5dce6d3dce6d3dde4d2dbe6cf *d9e5ced9e4ced8e3cedae5cfd8e4d0d9e4d0dce6d3dce3d3dce4d2dce5ccd8e3ccd6e3cbd6e2ca *d3e2c9d3e0cbd5e3ced8e2cdd5e0cbd8e2ccd8e3ccd8e3cfdbe2d2dae5d3dde6d3dce6d3dbe5d1 *dce5cfdbe3ced8e4ccd7e3c9d4e0c9d0e0c9d2e1c7d2dfc9d5e3c9d5e3cbd6e3cad5e2ccd6e3cb *d5e2cdd4e2cbd4e4cbd3e2cdd4e4c9d4e2c8d4e2cbd6e3ced6e2ccd6e5ccd6e2cdd5e4cdd5e4cc *d6e3ccd6e5cfd6e6ced8e5ccd8e4cfd8e4d1d8e3d3d8e4d1dbe6d0dce6cfdbe5d1dae3d3d9e6d3 *dbe6cedae3d3dbe5d3dbe5d3dce7d6dde6d1dbe6d0d9e4ced8e6ced8e4ced7e5cdd7e4ced7e5ce *d6e5cdd8e5c9d4e3cad5e2c9d4e3cad6e3c7d3e2c9d3e3cad5e3c6d3e3c1d2e0c1cfe0bbcbdcb1 *c3dbacbdd0a7bcd3a5bbcea4b6cea3b6cb9bb2cca2b3cb9db4cca1b3cd9aaecc9db1cb9bafcba1 *b3cb9fb3cc9db6c79dafcba2b8cda4b4cda3b6cea0b6cea5b6caaabbceacbdd1aabaceaab9cead *bad0adbdd2a9b7ccadbbcfacbbd0adbcceaabdd1afbfd1afbbccb2bfc2c1cacec3cdd2a2bbd0a0 *bfd69cbad4a1bbd69fbdd49dbbd39cbcd59fbed59abdd3a1bfd6a2bdd49cbdd39db9d399b8d19c *bdd39ebdd599b9d09ebdd39eb8cfa1b8cfa8bdd3a8bbd2a8bdcfa9bcd1adc1d6adbed3b1c2d6b0 *c0d7aebfd5b1c2d7b3c2d4aebfd4b1c1d4b1c2d6b4c3d6b0c1d4b2c4d8b1c0d6b4c1d6b6c7d9b8 *cad9bdc9dabccadbc2cce0c3d0dec2cce0c2ccddbfccddbdcbdbbfccdebfcbdebdcbddbcc9dbb4 *c5d8b1c3d8b2c5d6b0c1d6b5c6d6bbcadbbdccdcbbc7d6b6c7d8b6c6d6aac0d39cb3cea0b8cea5 *bdd3a5b7d2a9bbd4afbcd2afbfd3b1bed6b2c0d5b4c4d8b8c1d5afc1d7abbfd4acbdd4adbdd2a8 *bbcfa7bad0acbdd0acbdd2aabcd2a8bcd2acbcd2b0c0d4b2bdd3b1c3d6b5c1d5b3c6dbb8c6d9b5 *c3d7b1c5dbb6c6d6b6c6d6b1c6d6b9c7dbbcc9ddc1ccdec3cedec3cfddc3cee0c7d1e1c8d3e3c7 *d3e2c9d4e3cddbe4cfdae6d0d8e5cfd9e5cedae4cedae4cedae5ced8e4cdd8e4ccd7e5cfd7e5d1 *dae4cedce6cddae5d0dae5d2dbe5d3dde6d3dee7d3dde6d5dfe7d5dfe7d1dde6d1dde6ccd7e5cb *d6e5c9d4e3bdc9dcb3c5d7b6c6d8b0c3d7aabbd5adbdd4a2b6cea6b8cea7bad0a8bad0aabdd3aa *bcd3aabccea5bbd1a9bacfaabad1a8bbd4abbdd6b3c2d5b5c3d1b7c3d7b0c2d9b0c1d7b4c1d6b7 *c5d7b6c5d7b5c6d9b6c8dbbdcadbbccadcb9c8dbbdc8d8bec9dbc0cbdbc0ccdec3cddcc6d0dcc8 *d1e0c9d3e2c7d3e3c5cedec3d1e1c4cedec6d1dec6d0e2c6d1e2c8d4e1c8d1e2cad6e3ccd6e1cb *d7e4ccd6e2cfd7e5ced8e3cfd9e6d0dae6d1dbe5cfdae3ced7e3ced6e3ced7e4cbd6e4cdd6e4ce *d7e3ced8e4cad8e5cbd8e3cbd9e3ccd7e3c9d5e0c7d3e1c6d2e0c1cfdfbdcbddbdc9d9bac7dab6 *c7d9b0c6d7b4c5d6b5c4d8b2c4d6b7c6dab4c6d9b3c6dcb4c4d6b4c6d8b8c7dabac7d9becddbc3 *d0ddc6d0dcc7d1e0c5d1e2c3cfdec4d0e0c2cedec0ccdbbccbdbbac7dbbbc9dcbdcce0b9cbddbd *ccdec2ceddc3d0ddc6d1e0c8d3e3cad4e1c8d5e3c8d3e2c6d3e2c6d1dfc4d0dec2d1dfc1d1e0c3 *d1e0c6d1dfc5d2e0c4d0dfc4cedec5cfdec4cedec3d0dec1cddec5cfe0c6d1e1c7d2e0c6d2e2cb *d3e2c8d5e4c8d6e0c9d6e5c9d3e3c9d5e1c9d6e3c7d5e3cad4e3c8d3e1c6d3e2c6d2e1c6cfe1c2 *ceddc3cddfc3cbdbbdc9dbb8c6d8b9c8dab6c7dbb7c9dbb8c7d7b6c6d8b7c5d7bac7d9b8c9dab9 *c9dbb8c9d9b4c7d8b9c7d9bac8dabacadab8c9dcb6c8d9b9c9dbbdcadcbbcadebbc9dabbc9ddc0 *cbdebbccddc0cbdbbbc9d9b9cbddb9c8dabbc7dcbbccddbdccdec3cedcbbcbdcbbccddbacbdeb9 *caddb9c9ddbac9ddb7cbddbdcbd8beccdec1ccddc3cedec0cde0c1ccdfc1ceddc7d1e0c4cedcc4 *d0dec4cfe0c5ceddc3d0e1c4cfdec4d0e0c2cedec3ceddc2cddfc3cee0c4cfe0c2cedfc4cfdec1 *cdddc1cedfc1cedec2d0e0c2cfdec2cde0bcccddbeccdebacdddbfceddbeccddbbccdcbacadfbe *cbdeb9cbddbdcce0beccdebfcedfc1cedec1cee0c1cddfc1cedfc1cbdfc0cddebfcee0c3cfdec5 *d3e2c7d2e1c6d0e3c4d0e2c3cedfc6cfdec7d0dfc6d1e1c7d1e0c4d1e2c5d2e1c9d5e4c9d2e4cc *d4e3cdd5e3ccd6e3ccd6e3ccd6e3cbd7e5cbd5e4cad3e2c9d3e0c6d3e1c7d2e2c7d4e0c5d0e0bb *cde1b8cce0b9cce1bbcddebfcde0bcceddbccee0bccedfbdcde0b7cbdeb6cde0b4c9dfb7cbe0bc *ccdebdcedebeccdeb9ccddbaccdcbbcbdeb5c9ddbbc9ddbacbdabbcbddbccbdec0cddec4d0dec5 *cfdec0ceddc1cdddc3cddec1cddec1ccddc4cddec5d0e1c6d1e0cbd2dfcad3e0c8d3e2c9d3e0c9 *d1dfc9d1ddc5d1dec5d1e0c9d3e2c9d3e0c9d2e2c7d2e2c9d3dfccd3e1cdd6ddced8e3d1d8e3d1 *d8e4d2dce6d0dae2ced7e3cdd8e4ced7e5ced6e2cbd4e0d0d8e2d1dce5d4dee8d0dde7d1dbe6d1 *dbe3d0d9e4d3dbe4d3dbe5d3dbe5d3dde5d6dee4d3dee7d4dce5d5dde6d6dee5d6dee7d2dce5d1 *dbe6d2dae6d0d9e3d0d9e4cfd9e4d2dbe5d3dce3d3dde6d2dce5d3dbe4d5dce6d2dbe5ced7e3cc *d8e2ced8e3ced7e3ccd8e3ced7e3ccd7e2ced8e3cfdae5cfdae4d3dce5d3dce6d3dce6d3dde7d5 *dbe4d3dae5d2dce6cfd9e5ccd7e5c8d3e0c8d3e0c9d3e0cbd3e1cbd5e1ced7e3ced7e5ced7e7ce *d6e2d0d9e3d1dae6ced6e6cdd5e2ced6e5ced5e2cad6e2cbd6e2cdd6e4ccd5e4ccd6e2ced7e5cb *d5e4ccd6e4cdd6e3cdd9e4ced9e6cfd8e2d2dae5d3dae3d1dae6d2dae5cfd8e5d2d8e3d1d9e6d1 *dbe6d3dbe5d3dae6d3dbe5d1dae6d2dee7d2d9e6d1d9e7d0d9e6cdd8e4cbd6e3cad4e3cad3e1c9 *d6e3c9d5e2c6d3e1c3d1e1c8d3e2c8d2e2c9d3e1c8d2e0c6d3e1c7d1e0c3cfe0c1ccdec1cee0bf *ccdeb5c6d9b2c0d4afbed3aebcd3a4bcd1a3b5cd9cafcba1b1ca9cb1cc9db3cb9aafca9eb2cc9d *b4cb9fb1c9a0b2cba5b6cda7b6c9a6b9cda7b8cca4b4ceaab7ceb0bfd2abbbcfabbdd1b1bdd4b5 *bdd3b0bcd1acbed0a8bbd0afbdd2aeb7d0adbbceadbbceb0bfd3afbbcfb4c1c3c2cacfc5ced29e *bdd3a1bed499bad49ebcd39ebbd49fbdd2a0bad19abdd395b9d698b6d19fbad49dbbd397bbd39a *bbd398b7d197bbd49fbdd59fbcd49fbdd69eb9d39ebad0a5bdd1a9bfd6aac1d3afc2d6b0c3d8b1 *c5d7adc3d6b0c3d8b5c7d6b7c6dbb5c3d8afc3d7b6c6d8b2c3d7b6c6d9b2c6d9afc3d8b5c4dbba *cadbbdcbddc1cbdec3cdddc3cfdec6d2e2c4d0dec6d1dfc3d1dfc6d2dec7cfe2c7d1e0c6d2e2bc *cbd9b7c9dab6c4d7b7c5d7b5c6d9b7c6dabbc9d9b8ccdeb9c8ddbbc9dab2c6d7aabcd19eb8cea2 *bbd1a4b7d1a2b9d2a7bed5a7bfd3adc0d4aebecfb2c2d5b4c1d3b6c5d4b4c2d7b0c1d3aebed3b1 *bdd0aebfd2acbed2adbbd1b0bdd2afc0d4afc2d5adc1d4aac1d9adc2dab0c3d8b3bfd6b1c5d6b1 *c5d6b3c8d9b5c8ddb5c6d7bac8d8b9cadbbec8d9bccbdbc1cedec3ceddc3d0dfc2d0e2c4cee1c4 *d2e2c7d3e1c9d4e5cbd5e2ccd9e5cfd9e5cedae6ced8e6ccd8e5ccd9e4ced6e2cdd6e3cfd8e3cf *d8e4ccd8e4cedae4cfdce5cfdae6d1dce6d1dbe6d2dde6d2dbe8d3dce6d2dde7d2dde7d2dde5cf *dbe6cbd6e3c4d1e2bfccd9b6c6d6b1c3d6aec3d6a7bdd5aabdd3a7bcd6a8bbd0a9bbcea8bdd1a8 *bdd0a7bdd1adbcd2abbbd1adbbd1aabdd3aec0d4b3c2d6b7c6dbb6c6d7b7c4d6b5c6d9b1c4d8b6 *c6d9b8c4d8b6c5d8b9c6d7b8c6dabacadabbcbdcbacadbbecbdbc1ccdbc3cbdfc3cee0c6d0dec7 *d3e0cbd3e1cbd5e2cbd7e4cad1e1c7cfe0c7d1e2c6d3e1c3d1dfc7d3e2cbd4e3c7d5e1cbd7e3cc *d8e3ced8e5cddae5cedbe5cfdae4cfdbe5ccd8e5d1dbe6cfdbe2d0d8e5d0d8e5ced8e2cbd6e3cc *dbe3ccdae5cad8e5cad8e4cbd8e5cad6e4cad4e2c6d2e1c1d2e2bed0dfb9cadcb7c8dbb4c6d9b2 *c4d8b5c6dbb6c4d7b4c6d8b4c6d6b5c3d5adc2d7b7c6d8b3c5d9b8c6dcbbc8dbbdcadabfccdec4 *cfdec3d1e1c8d1e0c7d3e3c7d3e2c9d3e2c8d3e1c5cedec1ccdeb9cadbbac7dabccbdbbcccddbe *cedfc2cfe1c3d1ddc6d1dec8d1dfc6d3e3c9d5e1c9d4e1c8d4dfc5d1e1c7d2dec6d1e0c3d0e0c1 *d0e0c1d0e0c3d1dfc6d3dfc2d1e0c5d0e0c4d0e2c2d0dfc2cfe0c2cedfc6cfdfc8d3e0c6d1e0c7 *d2e1c8d4e1cbd6e3cbd5e3cbd6e5cbd4e5c9d8e3cbd5e3c7d4e2cbd5e1cad5e3c9d3e2c7d3e0c6 *d1e2c3cfdec2d0dfc2cfdcc1cee0c2ccddc0cbdcbdc9dcb7c8dbb7c8d8bccbd9bac9dbb9c8dcb7 *c8dcbbcadab7c7dbb5c8d8b5c9ddb3c8dbb6c7dbb8c7ddb7c9dbbbcddcbfccddbec9dcbccbddbb *cbddbdccdcbdcee0bbccdebbc9dcbccadcbfcbddbdcbdabbccdbbfcde0bdccdfc0cde0bdccdbb9 *ccddb6cbdeb7cadebdcaddb7cbdebac9dbbacbe1becee0c3ccdec3d0dec4d1e0c3cfdec4cedec5 *d0dfc4cee0c4d0dfc7d2dfc6d1e2c5d0dfc6d1e0c3d0dfc3d0e1c3cfe1c2cee0c5d2e0c3d1dfc3 *d1e0c1d0dfc4d1dfc5d0e2c2cfe1c6d1e1c1cedebcccdebfccddbbccdebcccddc0ccdfc0cddebb *ccdebacbddbbcbdec1ceddbdcee0c0cee0c0cddfc3cddfc2cce0c0cee2c0cedfc2d1e0c5cfe0c3 *cee0c6d2e1c6d3e3c6d3e0c6d1e0c6d3e2c5d1e0c7d2e1c6d1e1c6d2dfc6d2e0c6d1e1cad6e3c9 *d4e3cad6e3cbd7e2cbd7e4ccd6e4cbd8e2cbd7e3cad8e4cdd8e5cad8e5cad7e3c9d4e1c6d3e1c1 *cfe1bfccdfb6cce0b5cae1bacfe2bbcde1bacee0bccde0bdd1dfb8ccddb6ccddbacee0b7cde0ba *cbdfbbcde0c1ccdfbdcee0bbcde0bcccdfbbccddbacbddb9cbdebbcde0bcccdebfcedebfcedec1 *cfdec1cedec1cddec0cddec1cedfbfcee0c5d0e0c4cedfc3cfddc5d2dfc8d3e1cad6e2c9d4e3cc *d5e3c9d3e2cad4e0c7d2e0c6d2e2c7d5dfc7d3dcc6d3e2c6d3e2c8d3e2c8d3e2cdd6e2ced8e2cc *d6e2d0dbe3d0dbe5d1dbe6d0dbe5cdd9e6cad6e3ced6e1c9d4e0ccd6e2d0dae5d0dde4d2dde5d1 *dde5d1dbe6d0d8e3cfd9e4cfd9e4d0dbe5cfd9e5d4dde6d6dee7d4dee7d3dde8d6dde5d6dde6d2 *dbe6d0dae5d0dbe4d0dbe4d1dce5d1dce5d1dce6d1dbe3d1dbe5d1dbe6d2dbe4d2dbe3d0dbe5ce *dae5cbd7e4ccd6e2ced6e3ced8e4ced7e2cdd9e2ccd9e1d1dae5d0d9e6d3dde8d6dde8d2dde5d3 *dce6d3dde5d0dae2cddae5cbd6e4c8d5e3cbd4e5c9d3e2cad3e0cbd3e1ccd5e2ccd7e4ced9e4ce *d8e5d2dbe6d4dde7d3dbe5d1dbe5cdd8e4cfd9e4cfd9e3cdd8e3ccd8e5cbd7e3ccd5e3cdd4e2cc *d5e4cbd6e2ccd7e5ccd8e5cfd8e7ced9e5d1d9e3d1d8e7cfd6e5ced8e5ced7e2cfd8e5cedae4ce *dae5d3dbe6d2dbe5d2dae5d0d8e3ccdae5cfdae6cfd9e6d0d9e6ccd7e3cbd7e5c4d1e2c3d2e3c6 *d3e4c1d2e3c3d0dfc1d0dec0cdddc2cee0c6cfe2c7d3e2c6d2e2c4cfe0c1ccdebecddebcccdebb *ccddbdcedcbac6dbb3c6dbb2c3d8adc1d8abbdd3acbdd3a4b9cea5b9cea3b6cca3b2cca4b5cea2 *b1cca0aecb9db1cca2b2cc9eb5cba2b8cca5b9ceabb8ccacbad0adbacdafbfd1aebdd1adbdcfb1 *c1d3b3c1d4b0c0d5afbfd2acbbd1a7bcd0adbbceadbbd0afbeccb0c2d2aebdceb4c0c5c3cbcfc4 *ced29bbace9bb8d097b5d198b6d099b7cf98bad19fbad3a1bacf9eb6d59cb4d09fb6d09db8d397 *b6d299b6d19bbcd3a0bcd499b9d59abbd39eb8d19cb9d2a1bbd2a5bbd0abbed3b0c1d7b3c3d6b4 *c5d6b8c7d8b8c6d8b8c4d7b8c8d9b6c4d8b5c4d7b3c2d5b6c4d6bac9d8b8c6dab6c7dab9c6d6b8 *c5d5becbdcc3cddcc3cddcc4cedec5cddec5cee1c3ccdec8d1dec6d1e0c7d3e2c4d2e0c6cfe0c6 *d1dec1c9d8b6c6d8b4c3d8b3c1d6b9c6d6bbc9d6becadbbdcadcbdcaddbecbddbdcbdeb1c2d6a6 *bacfa6bacfa7b6cea4b8cfa2b7d0aebdd0b1c0d4b5c4d7b4c3d5b6c4d7bbc7d7b8c5d8b5c4d5b3 *c5d8b1c1d4b0c1d3aebfd2b0bed3b1bfd5b0bfd3b0c3d6b2c3d6b1c0d4b8c7dab6c5d7b8c3d5b1 *c3d7b6c3d3b5c1d1b5c6d9b6c6d7b8c7d8bec9d9bdc9dbbdc9ddbdcbddbfcadec1cddec4cfe0c4 *cfe3c5d1e2c9d3e2cad3e1cbd5e2ced6e1cdd8e5ccd7e4cdd5e2cdd7e3ced8e4ced7e3ced7e4ce *d6e2ced8e3ccd7e2cbd6e2cdd8e4cfd9e5d1dce6d3dbe6d3dbe6d2dae5d3dce5d3dde5d1dce4cf *dbe5cbdae5c8d3e4c5d0e2c2cdddb7c6d9b2c1d5adc2d6aec2d4aec2d5a7bbd3adbdd1aebdd4ac *bdd0aebdcba8baceaabacdabbcd4aabdd6adc1d5b4c5d8bbc6d4bac6d6b8c4d8b4c3d6afc2d7b4 *c2d7b6c5d9bbc6d7b9c8d9bec6d6bdc8dbbdc9d9bfcadbbec9dec2ccdec1cedcc5cedfc7d0e0c8 *d1dfcbd3e0ced5e0ccd7e2cdd7e3cbd3e1c7d3e0c9d3e2cbd3dfcad2deced4e0ced4e2cdd6e3cc *d6e2cbd6e2d1d9e5cdd8e3d3d6e2d2d7e3d1dbe6d1dbe4d0dbe4cddae5d1d9e5d0d8e3d0d8e5cd *d5e3ced6e3cdd6e1c9d3e1c8d3e1c7d4e2c7d3e1c6d3e2c5d1e2c3cee0bdcadabac7d9b8c5d8b3 *c3d8b1c3d7b2c3d6b6c5d7b9c5d7b7c6d7b5c4d5b9c5d7b8c7d7bbc7d8bac8dbbbcbdec1cdddc6 *ceddc9d2dcc9d2dec9d3decbd5e2cad6e3ccd5e3c8d4dfc7cfe0c2c9dcc0c7dabdc8d9bdcedebc *ccddc1ccdec1cfdec6d0e2c9d1e2cad2e2cbd3e1cad3e1c9d2dfc9d3e2c7d2e0c6d2dec5d1dfc6 *d0dfc5d0e0c3cedfc2cfdec3d0dfc6d0e0c6d1dec5d2dfc3cedfc4cedfc4cfdec3d0dfc7d0e0c6 *d0dfc7d2ddc7d4e0c7d4e0ced8e3cad3e2ccd6e2ced6e2c9d3e2ccd4e3cbd4e1cad8e3c7d5e2c9 *d3e3c8cfe0c9d1dfc6d0e0c3ccdfc3ccddc3ceddc1ceddbdcedebdcaddbac9dcb9c7dabbc7d8bb *c8dabac8dbbbc9d9bacad8bacad8b7c5d8b7c4d9b9c5d9bfc8d9c0cbdbbfccdcbfcddebfcbdcbd *cbdcc0cbddbfcbddbfccdebdcaddbdc9dbbacadac1cbdac1cbdcbecbd9c0ccdcc1ccddc0ccddbd *cddebeccddbbcbdfb7cadebdcbddbdcbddbec8d9bac9dec1ccdbc1cdddc3cfdfc1cee0c1cedec4 *d2e0c6d1e2c7d1e0c7d0dfc7d3e1c6d0e1c6d1e1c6d0dfc6cfdec4d1e0c5cfdfc5d0dfc6d1dfc7 *d0e0c4cfe0c3cedfc4d0dfc6cfdfc5d1e1c4d1e1c3cfe0bcccddbfccdec1ceddc0ceddc1cfdebc *ccddbccddebccbddbccbddc1ccddc3ccdec4cfe0c3cbddc3cddec3cddcc6cce0c3cfe0c6cee0c9 *d1dfcad2e0c9d2dfcbd3e0c9d1e1c6d1dec5d0dfc5d0e0c6d0dfc7d2e1c9d3e2c9d2e2c5d1dfc6 *d1e3c9d2e1ccd4e1cdd7e3cfd6e2cdd6e2ced7e3cdd6e2cfd9e4ced7e4cfd7e3ccd7e4ccd4e2c7 *d3e1c3d0e0bcccddbbceddb9cbdfbbcbdfbdccdfbbcbddb8cbe0bacddebbccdeb1c7ddbcc9dcba *cbddbfcbdfbccbdfbdccdfbbccdec1cde0bfccdcbfcddfbeccdebfccdfbdc8dcbecbddc0ccddc0 *cedfc1ceddc4cedec2ccdec1ccdcc4cedec4cfe0c6d0dfc3cddfc7cedfc8d0dfc8d2dfcad4e2ca *d5e1c8d4e2c7d5e2c9d6e0c9d3e2c9d2e2cad2e0cbd2e0c8d1ddc7d1e1c7d1e0c9d6e2cdd6e2cd *d6e1cfd6e3d1d7e2d1dae3d1d9e2d2dce5cdd6e2ced7e5cad4e3cdd3e0ced3e1cfd6e3d0dae2d1 *dce4d2dbe4d1d8e4cfd5e2cfd6e3d0d6e3d2d9e3d2d8e2d1dae2d2dde5d3dce6d3dde6d4dde7d4 *dbe4d5d9e3cfd9e3cfdae5cfd8e2ced9e2d0dbe6d1d9e5d2dbe4d1d8e3d2dae4d1dae3cfd9e2cc *d5e3ccd5e2c9d4e2cad7e2ccd6e4ccd5e3cdd7e2ccd6e2cbd4e2cdd7e3d1d9e6d3dbe5d4dee5d3 *dde6d4dde6d1d8e3ccd6e3cad3e1c9d1dfc8d0e1cad4e4ccd6e3ced4e2cfd3e2cdd5e2ced6e2ce *d6e3d1d8e3d1dce6d2dde4cfd8e4ced7e6d0d6e3d2d8e3cfd7e3cfd7e2cdd6e1ccd6e3ccd6e3d0 *d6e5cdd3e5ced5e0ced6dfccd5e0ced6e3d0d8e5ccd9e5cdd8e3cdd8e3cfd7e3d1d8e3d1d7e3cf *d6e3cfd7e4d0d8e5d1d8e4d1d7e6d0d8e3d1d7e3d0d6e2ced6e4cbd5e2cbd5e2c6d2e2c0ccdebe *cce0bbc8ddbbc8dcbecddebdcbdec0cbddc0ccdfc0cddfc2cedfc3ccdfc1cddec3cddcc2ccdebf *cbdcbdccddbdcbdeb7c9dcb6c7d9b2c6dab3c3d9b6c0d7b1bfd4a9bbd3a7bacfa0b5cda5b4cc9e *b4cea0b3cba0b1cca4aec6a4b4cca9b6cca6b5ceaabbceaebbceaebdd1b1bdd2b0bbd1b1bdd0b5 *bed3b2c0d4b5bfd3b3bed2b0bdcfadbbd1b3bdd2b5bfd1b6bdd2b7c0d1b3c0d0b2bcceb7c1c5c2 *cbcec6cdd39bb9d29dbbd09eb7d19bb6cf9ab8d09cbbd196b6d1a2bdd39eb9d09ebcd799bbd2a0 *bbd19db8d09db9cf9bbbd199b6cc99b5d09eb9d39cbdd19ab8d29ebad193b8d0a4bed2a9c1d5aa *c1d6afc2d6b5c7dbbbcbdbbcccdcbbccddb5cadab1c3d7b5c6d9b6c4d8b4c5dbb9c8dabdc9dbba *cbdbbbcadbc1ccdcc4cedfc1cedec3cedfc6d1e0c6d1e0c1cedfc6d1e0c4d3e1c6d1e1c6d1e0c9 *d0dfc9d3dfc7d1dfbbcbdbb9cbdabdccdcbfccddbfccddb7c7dabaccdeb9c7dbbbcbdcbbcadbb7 *c9d9b1c8dba9c2d8a4bcd3a3bcd5a4bbd1a7bdd3afc0d3b8c6d8bbc7d9bbcbdcbbc9d8b9c8dcb5 *c7d7b1c5d9b2c3d6b3c3d4afc2d3b6c4dab3c5d8b4c3d4b1c3d7b0c4d5b4c6d9b4c7dbb8c6d9b7 *c6d9b3c4d6b4c6d9b7cadbb8c6dbb6c6dabbc9dbb7c7dbbbcbdcc1ccdfbfccdebdcbdec1cde0c1 *d1dec7d2e1c6d2e0c8d3e1c7d3e0cbd6e2ccd8e5cdd7e5ccd8e5ccd8e3cfd6e5cfd9e6cdd8e3ce *d8e5cfd8e5cdd9e3ccd6e2cbd7e4cbd6e4cfdae5ced9e6d1dce7d1dbe6cedbe6d0dce5d1dbe6ce *dae5cbd8e5c9d4e3c4d3e2c1d1e0b6caddb2c5d8aec2d6b0c1d7a6bed1a9bdd1aac0d3adc0d4ad *c1d6afc3d7adbed0abbdd5aebdcfaebcd3b1c2d4b0c5d9b8c8dbb9c9dbbac8d6b7c7d6b8c5d7b7 *c5d8b9c5d8b7c7d9bbc8d8bccbdbbecbdac1cddec1cedbc1cedec3cddcc4d0ddc3cfdec6d0dfc8 *d3e2c9d3e1cbd8e0d2dae2d2dae2ccd8e3cbd8e2c7d4e3cbd5e2cbd6e3ced8e3ced9e2ced8e4cd *d8e4cfd8e4ccd8e5d0d9e5d1d9e5d1dbe6d3dbe7d2dde4d3dde5d2dbe5d1dbe5d1dbe5d1dbe4d1 *dae3ccd9e5cdd7e1ccd9e1cdd5e0c6d2e1c6d1e1c4d0e0c2d0e0c1cfddbecee0bccbdcb6c8d7b7 *c6d8b7c6d8b3c4d7b7c7d8b5c7dabbc9d8bac8dabbcadabcc8dcc0c8dabdcadabfc9ddbfccddc4 *cfe1c7d2e0c8d3e0cbd6e2ced8e4ccd6e1ced9e4ccd6e4c8d4e2c3d1e2c1cddec3ceddc3cddbc3 *cedebfccd9c2cedec5d1e2c8d1e2c5d1e2c9d6e2c9d4e3ccd6e3ccd7e2c8d3e1c7d1e0c6d4e1c4 *d0e1c6d2e1c5d1e2c5d1e1c2d0ddc2d0dcc6d1dec2d0e0c4d2e0c6d1e1c5d1e0c5d1e0c3d1e0c7 *d3dfc8d1dfc9d6e3c6d6e4ccd9e5ccd7e4cfd9e5cdd8e4cedbe3ccd6e1ccd7e2c9d3e1cad5e3c9 *d5e3cbd3e2c6d6e2c9d4e2c7d3e0c7d1e0c2cfe0c2d1dfbfcfddbeceddbdcbddbac8dcbccadabc *cadbbdcadcbcccddb8cadabdcbdbbbc9d8b9c7dcbccadcbccadcc1ccdcc3cedfbecedfbfcedebe *cee0c1cedfc1cedec2cdddc1cedec0ceddc2ccddc3cdddc3ccdec2cedfbfcedfc1cedfc2ccddc1 *cee0becedebfccdcb9ccddbacbdabeccdbbdcbdbb9cbddbdcde0c1d0e0c1cbd9c1d0dec1cedec1 *cfdfc6d1e1c6d2e0c7d2e2c7d1e1c7d2e1c9d4e1c9d4e0c6d1e1c5d2e1c5d1e0c5d1e1c4d1e0c5 *d1dfc7d1e0c6cfdfc5d2e0c4d2e0c6d4e3c2d1e2c1d0e1c1cedfbfcddebdcbdebdcfe0bccfdfba *cedebbccddbecddebfccddbcccddc0cfe0c2cce0c1cedec3cfe0c3cee1c5d1dec6d0dfcad4e2c8 *d2ddc6d5e1c8d3e2c9d6e2c7d4e2c8d3e2cbd4e2c8d2dec7d1e0c8d1e2c8d4e1c7d4e1c7d4e2c8 *d5e0c7d2e2cbd5e2ccd6e4ced8e3ccd8e1cdd8e5d0dae5d0d9e4d3dce6cfd9e4cfd9e5ced8e5cd *d8e2cbd5e2c5d1dec3d1e0c0cee0bccee0becfe2bcccdebaccdfbbcce0bdcee0bacedebccedfbe *cce0bfcee0bdccddbecce0c2cddec3cde0becee0c1cfddc2d1dfc1ccddc2ccdebdcddfc0cbddbf *ccddbccde0c0cdddc1cddec0cbdec0cdddc3cddfc2cddfc2cee0c5cee0c6d1e0c6d3dec9d4e0c9 *d1e1c7d3e1c8d3e0c9d3e1c9d2e0c7d4e2c7d5e3c8d5e3c7d4e1c6d0e0c7d3e0c7d2e1c9d4e0cc *d7e5cdd8e4cdd8e4ced8e0d1d9e2d1d8e4d2dae4ced8e5ccd7e4cbd8e3ccd7e5cbd7e2cdd9e2d1 *dae3d2dbe4d1dbe4cfdae3cfd9e3cfd9e3cedbe4cfdbe5d1dbe3d3dbe3d4dbe5d2dce6d1dce6d3 *dde4d1dce5d2dbe5d2dbe5d2dbe4d2dbe4d0dbe4cfdbe4cfd9e4cfdbe3d0dbe6d2dce9d3dbe6d1 *d9e2ccd4e1c7d5e2c6d3e2c6d3e1cbd7e6cbd7e5c9d6e3ccd6e3ced6e3ced6e4ced9e6cddbe4d1 *dce6d0dce7ccd8e5cbd7e2ccd9e3cad4e0c8d3e0c8d3e2cad5e3ced7e3d1d7e5cfd9e3cedae4d1 *dae3d0d6e3ced8e4cfd9e5cdd7e3cdd6e5cdd5e6cfd9e6d1d9e4d1dce3ced9e3cdd6e3cdd6e4cc *d7e5ced8e3ccd6e3cbd8e5ced8e3ced9e5d0d7e4cfd8e5cedae3ccd6e4ccd5e5cdd6e6ced7e6cf *d7e3ced6e0ced6e3cdd6e5cdd6e4ced6e3cbd7e5cbd7e5c9d8e3cbd6e2c8d3e1c7d1e3c0ccddbb *cbddb6cadeb1c7dbb4c7dcb6c9dcb8ccdebbc9dcbbccdeb9caddb9ccddbccbddbccce0c1cde0c2 *cedec1cbdcbdcbdcbdcbdcb6cbdbb2c7d8b3c7dbb5c7dcb8c2d7b1c1d7afbfd3a9bcd2a9bed1a6 *bccea2b4cca1b6cfa7b2cea5b5ccaab8cdaebbceacbbcfa9bbd0adbdd3b1c0d6b2bfd5b3c2d6b9 *c4d7bbc8d9bac3d5b8c3d4b7c2d4b7c3d3b2c0d3b3c0d0b7c1d2b8c2d4b9c3d4b5c2d2b6becfb7 *c1c6c1cacfc5ced39cb8ce9fb7cf9cbad2a0bbd49bb8d39bb8d199bbd39bbdd5a3bbd59cbcd3a0 *bdd69cb6d39abdd8a2bbd49fb8d29bbbd29abad199bad094bbd49fbdd49eb8d392b6d2a0bcd39b *b9d69cbcd49db9d4aac1d9abc2d9abc1dbabc2daafc2dab7c6d9b2c7dab5c5dab6c6d7b9cadac2 *d0dfc1cedec0cddcbecaddbccadcb8cadeb9cbdebbcce0bdccdebdcadec0ccdec3cfdec1cee0c6 *d0e0cbd5e2ccd6e3c7d2e1c3cfdec1cfdfb6c9ddb5c9deb3c3d9aac2d7a7c3daa5c1d8afc4dbae *c6dba7c0d6a4bed6a4c1d6a4c0daa4bfd5a1bfd7a4bed5acbed8b3c4dab8c7dcb9c7dcbbc9dabb *c8dbbbcadcb6c6dcb4c4d6acbfd6afbed4b4c5daadc0d5b1c2d6b1c4dab0c4d8b1c3d8b6c6dbb7 *c8dbb8c6d9bac6dabac7ddbcc8dbb9c9ddbac8dabbc8dcbdcadec3ceddc0ccddc1cfdec1ccdec3 *cfe2c4d3dec6d4e1c4d4e3c8d2e1c6d1e4cbd6e5cdd7e5ced7e5ccd8e5cdd8e5ccd7e4cdd6e5cc *d8e4ccd8e5cdd6e3cdd6e4cdd8e4ccd7e4cdd9e4d0d9e5d0dbe5d1dae7d1dae7d0d8e5d2dbe4cf *dbe5cedbe4ccdbe3cbd6e4c1d1e2b7c7dcabbed5aabdd5a8bed8aabfd4aac0d4abbdd4abbdd6af *c2d5b5c1d2b0bed1aabed1b1bcd4b1c0d3b2c4d6b6c3d6b9c8d9bdc9dcb8c7d9b7c7dbb1c3d7b6 *c3d5b8c8dbbdc9d8bccadcbdc9dabbcadbbeccddc5cfe1c5cedec2cee0c8d1e2c6d1e0c6d1e0c8 *d2dfccd6e0ced6e2ced9e3d1dbe5d3dbe6d0dde9cddae4cfd7e3cdd6e3cfd8e3cfd7e2d0dbe5cf *d9e3ced9e4d0dbe5cedae4d0d8e3d0dbe5d2dce6d4dbe5d4dde8d3dde7d4dde7d4dee7d4dde7d3 *dbe7d1dbe5ced8e3ced9e6ced8e4c6d3e3c6d1e1c1cfe0bed0dec0cdddbdcddebdcbddb8c8ddb8 *c7dbb6c5dcb9c7dbb5c6d8b6c5d8bac8dbbdc9dbbdcadabfcddec1ccddc4cedec4ceddc6d0dbc6 *ceddc8d2e2cbd1e0cbd6e0ccd7e4cedae6d1dbe5d0dce5d1dae5cad7e2c6d2e2c2d1e1c5cddcc3 *cedfc1ccdec3cee0c5d1e0c6d3e2c6d3e0c3cfe1c9d5e2cbd4e2c7d5e5c8d5e1c8d3e3c6d3e1c6 *d3dfc1cfe0c2d0e0c0cfe1c3cfe0bfd0e0c3d1e0c3d0e0c6d1dfc7d1e0c8d0e0c7d0dfc6d1e0c6 *d2dfc7d5e2cbd4e3cdd3e3cdd9e3cfdae3ced9e5cfdae6cdd9e5ccd9e4ccd8e5ccd6e3ccd5dfcb *d3e2c8d3e2c7d4e2c7d3e2c7d1e0c4cfe1c6cde0c1cde0c3d0dec3cfddbecedbbbcbdcbdcbdbbe *ccdfbfccdfbdcbe0bdcbe0bdccddbeccdfbdcbdcbbcad9bcc9dbbbcbdebacadfbfcbdfc0ccddc0 *ccddbecedec2cee0c3d0dfc4d0dec5d1e0c5cfe1c7d2e2c3ccdfc5cedbc0cbdbc1cedec1cee0bc *cbdfc1cee0becce0bcccdfbacce1bccce0bdcddebecbe0bbccddbccdddc1d0e0c3cddfc3ceddc4 *cedec3cee0c4cfddc3cee0c6cfdfc6d1dfc8d3e2c8d3e2ccd5e2c8d2e3c6d1e1c4d0e2c6cedfc5 *d0e1c7d1e0c6d2e0c7d1e2c6d1e2c9d3e2c5d2e0c3d0e2c1d2e0c1d0e0c1cde0bbcde0c1cee0c0 *cee0c1ccdebbccdebecddebccbdebfccdec3cedfc4cfe0c5d1e0c3cee0c5d2e1c6d1e1c8d3e3c9 *d2e0cad4e2cad5e3cad3e2cbd5e2ccd6e3c9d7e1c9d6e3c5d1dfc6d3e3c8d2e0c9d3e0c9d3e2c7 *d2e3c8d3e1c9d6e3cbd5e4cad3e2cbd5e4cdd6e4cfd8e3d0d8e5d2dbe7d4dbe6d0dde7d0dbe6d0 *d9e5ced8e5cfd8e4c6d1e1c5d1e0c2cee0c1cfe1bbd0e1bdcce0b9ccdebbcddfbacee0bdcee2c1 *ccdec3cee2c3d1e1bfcedfc1ccdfc2cfe0c3cee0c2d1e0c4cfe1c3cedec6d1dec4cfe0c2d1dfc1 *cee0bfccdec1cee0becde0bdcbdec0ccddc1ccddc3cfdec4cee1c2cde0c3cddfc1cddfc4cfdfc9 *d3e2c7d2e2c8d2e1c5d2e2c5d1dfc3d1dfc2d0e3c3cfe2c5d1e2c6d3e0c6d1e3c6d3e1c3cee1c9 *d3e0c8d4e2c9d7e1ccd5e2ccd6e4d1d8e3cedae4cdd9e5ccd8e3ced7e5cad5e4cad6e2ccd4e2cc *d7e3cadae4cedae4d1dce5cedbe3d1d8e5ced8e4d1d9e5d1dce5d2dde8d2dde5d3dde7d2dce3d1 *dbe4d1d8e3d0d8e5cfd9e4d2dbe5d2dce6cfdbe5cfd9e4cdd7e5cdd8e6ccd7e4ced8e3cedae4cf *d8e5cbd7e4c8d4e4c3d1e1bdcee2bfcfe1c1cedec3cee1bdcce0b8cbdebdd1e0c2d4e3c7d5e3cb *d6e3ccd6e4c8d5e2c2cfe3c3cee0ccd7e3d0dae5d1dce5ced9e3cdd8e2d0d7e4d0d8e5d0dae5ce *d8e5d0d8e6cdd8e6d0d8e6cfdae5cfd8e4cdd7e2ccd7e6cdd6e6cdd6e5cfd7e5cdd7e4ccd7e5cb *d8e5cbd6e3ccd5e3ccd5e3c9d5e5cdd6e5ced6e6ced6e3ced8e5ced8e5ced8e2cad5e3cbd4e4c7 *d3e3ccd6e5ccd6e3ccd6e5ccd3e3cad5e3c9d3e2c9d3e3bfd0dec1cfe1c3cde1bdcce1bcccdfba *cbddbacaddb6c8dbb1c6dbb4c6ddb2c7dcafc7dcafc6dcb0c7ddb2c7ddb3c7dbb5c9dcb3c9dcb9 *cadcbacce0bdccdfc0ccdfbdcbdec1ccdfbbccdebfcbddbdcaddbdc9dcb4c3d8b1c2d9aec3d8ab *c0d5a9bcd2abbbd1abbbceaabbcdb0bed1afbfd4b1bdd3b1bbd5b3c1d2b1bdd1b3c2d3b4bfd1b9 *c6d6bbc6dcbec9dbc0c7dabfc6d8bdc2d8bcc6dabdc6d8b8c6d7b7c3d7b9c6d8b8c3d7b4c3d6bc *c4d2bac0c2c1cbcfc5cfd397b5cb9fbad097b9d195b9d197b7ce9cbad1a1bdd38cb7d09bb7cf97 *b6d39ab6cf99b5d09ab6cf95b6d194b8d197bbce99b7d19eb7d199bad09db8d199bbce97bbd399 *b7ce96b9d296bcd29dbacf9ab6d29db8d39cb7d1a0bdd4a7c2d4a8c2d7a5c2d6a3bfd7adc3d9b7 *c9dbbdcbdcb7cbdbadc5daaec5d7b1c8dbafc6d9a5c2d7a3c2dda4c0d7abc1d8b1c8dabfceddbe *d1ddc1d0e0c6d3e1c5d2dfbecbdbb5cbddaec8dca0c0d6a0bdd3a2bdd3a1c0d5a3c1d79cbcd5a4 *bfd6a1bfd69fbdd39dbcd499bcd5a1c0d69fbdd49cbdd39fbdd4a6bdd3adc2d4b5c6d9b7c8dbbc *cadcbccadabbc9dab6c7dbb7c6dbb3c4d6b1c2d8afc0d4abbfd4a8c1d4acc3d7aec4d6b2c4d8ae *c4dbb1c4dbb1c3d6b4c6d7b3c4d7b8c6d7bbc9d6bac9dbbdc9dcbfcbddc1ccddc0ceddc2cedec0 *ccdcc2cddec4d1dec5d1dfc8d2e4c8d1e4c7d4e2c9d6e2cad8e2ccd7e3ccd8e1ccd8e3ccd8e4cc *d9e6ccd8e6cbd8e3ccd8e2cdd8e5cbd8e3cbd8e4ccd8e3ccd8e5ccd7e6cdd7e6ccdae4ccd8e4cd *dbe3cbd8e3c9d9e5c9d7e3c4d0e0b1c3daabc1d5aabed2adc1d4aabdcea9bcd1abbdcfb4bfd4b1 *c0d1aec2d6acc1d6aec0cfadc1d3b4c3d4b1c3d4bac6dabac8d7becbddbecedbb8cad8b6c7d6ba *c7d7bac8d7bdccd8c0cddbc2cddec1ceddc1cedbc0cedcc3d1dfc4cfdec4d1e0c8d1dfc5d1dfc8 *d3e1ccd5e2cad6e2ced9e2cedae3d1dae3d0dbe3d2dbe3d0dde4cfd9e5cddae3cedae2d0dae3ce *dae3cbd8e2cdd8e3cfdbe5cfdce5d1dce5d2dde6d2dde5d2dee5d1dde5d1dce5d0dde5d2dce5d3 *dbe7d3dbe6d0d9e6cdd8e3cbd7e5c8d6e2c1d0e0c1d1e0bfcfdebacddebcccdab9cadbb6c7d9b5 *c7d8b3c5d7b5c5d9b6c6d8b6c8dbbac8dabccadcbfccddc0cedfc2cddcc3d0ddc3cfdec5d1e0c9 *d3e0c7d3e0c7d4e2cad5e2cbd6e2cbd8e3cdd9e4ced9e3cedae5cedae5cbd9e3c6d2e2c3d0ddc2 *cfdec0ceddc2ccddc1ceddc5d1dfc5d3dec7d3e0c5d2e0c6d2ddc6d3e1c6d3e1c7d3e0c7d4e2c9 *d5e1c5d2e1c5d0dfc2cfdebbccdebecddec1cddec4d1dfc5d1dec5d1e0c7d4e2c9d3e2c8d3e0c6 *d2e0c6d3e2c8d3e1c9d4e2cbd6e1cbd8e1d0dae3cedae4cedae6ced8e4ccd9e3ccd9e2c9d7e2c9 *d5e1c8d5e2c7d4e4c7d2e2c5d1dec7d2e0c4d1e0c6d2e2c1cedec2d1dfbfcfdcc1cfdebbccdfbe *cbdabbccdcbcccdbbdcbdebaccddbccbdcbaccdcbacadabac9dab6c7dab5c7d9bccbdcbbccdeba *cbdcbccbdcc0cfdec2cedec3cddfc7d0dec4d1e1c3cfe1c2cfe2c3cedfc1ceddbfcedabdccddbd *cbd8b9cbdebbcbddbcc9dbb6caddbaccdbbaccdbbacbdabdccddbbcbdebdccdcc0cddcc1cedcc3 *d2ddbfcedfc6cedcc5d0dfc2cfdec4cee0c6cfe0c6d1e1c7d2dfcbd4dfc6d1dfc3d1dfc1ceddc1 *cddfc3ceddc4cfdec4d0ddc5d0e1c4d0e0c5d2dec4d2dfc4d0e0c1cfdec3cfe0c1cee0c1cddec1 *cedec3d2dec1d0dec1d1e1c3cedec3cddec4ccddc5cfdcc2cfddc4d1dfc5cedec6d1e0c4d1dec8 *d1dfcbd5e1cbd4e0c9d3e0cad6e1c9d4e2cad6e2c7d3e0c9d3e2c9d3e2c8d2e3c8d2e0c7d2e0c8 *d3e0c7d2e0c8d3e0c6d5e0c7d4dfcbd3e1c9d3e2c8d4e2ccd6e2ccd8e3cfd8e5d0dbe5d1dce5d2 *dce5d0dbe5d1d9e5cbd6e2c8d1dec3cedec0cfdfc3cddebacedebfccdebbcbdeb9ccddbccddfbf *d0e0c0cedec3d1dec3cfdec1ceddc3d0e0c6d0e2c3d1e1c3d0dfc5d0dfc4d1e0c7d1e2c6d1e0c6 *d2dfc6d0e1c3cfdec2ccddc1cdddbecbdcbfccddbfccddc2cddec1cddec2cedfc2cddebfcedcc3 *d1ddc3d1dfc3d3e1c4d1e1c3d1dfc3ceddc3cedfc3cee0c1d1dec3d1dfc5d1dec1d2dfc3cfe0c4 *d1e2c6d2e2c7d2e1c6d4e0c8d4dfc7d4e2c8d2e1cad5e1c9d3e1c8d3e2c7d2e1c5d1e2c4d3e0bf *d0dfc0d1dec4d1dfc9d6e2cdd8e2ced9e3d0d7e3ced9e4cedae4d1dce3d1dbe5d0dbe5d1dbe6d0 *d9e2cdd9e4cfd8e3ccd9e4cad6e3ced8e3ccd8e3cad7e2c8d8e3c9d7e3c9d6e3c9d6e5cbd6e1cb *d6e2c9d6e0c5d3e1c1d0e1bacddeb9cddeb8cde0bbcbe0b5c9ddb0c7dcb1c7d9b0c8daaec7d9b1 *c7d8b6c9dab7cbddb3c9ddb7cbdcbbcaddccd7e3d0dbe4d3dde5cfdde5cddde5d0d7e4ced8e5ce *d7e3cdd7e3cfd8e3cfd9e4d1dbe5cfdbe6d1dde6cfdae5ccd8e6ccd7e4ccd6e3c6d6e2bcd0e0be *d1e0bdd1e0bbcce0bbc9e0bbcbdec1d1dec7d3e2c9d6e3cbd6e3cad4e2c6d4e3c3d1e0c0cce0c1 *cedfc1cfdcc6d1e2bfcedfc1cfe0bcccddc1cfdec1cedeb6cadeb1c7dbb4cbddb3c9ddb1c7dbb1 *c6dbb0c8dcb1c7d9b3c7dcb1c6dbb1c6daacc1d7adc3d8adc6d9abc3d8adc6dbb1c8dcb0c5dcb1 *c6dab1c8dcb1c7dcb2c8dbb7c9d9baccdbbecedcc1cedec3cbddbfcce0bbcbdbb6c9dbb2c3d8b2 *c3d8b1c3d6afc0d3b1c2d3b2bcd0aebfd4b6c3d6b5c2d6b7c2d3b5c1d1b2c3d3b2bfd1b3c3d3b1 *c1d7b7c6d7c1c9dabec9d8bec7dac1cad8bdc9dabfcad9bfc9d9bcc8dabec7d8b8c6d7bdc6d7bb *c7d5bec9d3bac4c7c2ccd0c6ced299b6ce9ab9d09eb8ce9bbcce9bb6cf9fb6d19ab3d29fb7d097 *b9d095b7d49cb8d299b4d094b4ce93b5ce98b7d194b6d199b7d497b9d38fb4d096b7d091b7d195 *b8ce97b6d199b9d29bb8d19fbcd196b5d399b6d29cb7d299b7d29bbad19bb8d29ebcd395b9d39f *bbd6a8c0d9a5c5da9ebcd29cbbd3a0bbd49ebcd49fbcd5a2bbd39ebbd692b9d79bbad6a3bed5b1 *c7d7b7cbdbaac3dab0c8dbafc6dca4bfd6a1bbd3a4c1d69cbcd3a1bcd4a2bbd4a1bed4a1c1d69e *bed896bbd6a0bcd6a0bed5a0bdd49ebcd59bbed89abbd596bad59dbcd3a6bed6abbfd8b2c6dab6 *c7dcbbc7dbbbc7dbbacadbb9c8dab5c6d9b1c3d8b1c3d6aec1d5abbdd4a9bbd2a6bbd3a9bcd4ae *c0d7b2c6dbb2c4d9b5c7dcb3c5dabac6dbb7c7dbbdcadcbecaddc1cbddc0cadcc3ceddc4d1ddc2 *d2dec1cce0c3cfe1c5d1e3c6d2e2c5d3e1c4d2dec9d3e0cad5e2cbd6e0ccd8e4cbd7e5ccd6e4cc *d6e5ccd9e4cbd7e2cdd7e2cad5e3cbd4e4c9d3e2c9d3e2cbd5e2cbd6e3c9d6e3cbd7e4ccd7e4cd *dae7ccd6e4ccd7e2ccd7e4c8d1ddbdc8dab4c1d1bbc2d7bac7d8bbcadab3c3d9acbdd6abbed6b1 *c0d4b1c2d3b1c4d8b2c6dab0c6d8b6c4d8b3c1d8b6c6dabbc9ddbec9ddbecadbbecadcc0cbdbbc *cadbbdc9dcc4cdddc5cfe1c5cfdec1ccdec1cee0c2cee0c0cddec3cedec5cedfc6d0e0c9d3e0c8 *d2e1c6d4e1cdd6e3cfdae3cfdbe3d1dbe3d2dbe3d1dbe5d3dbe6d1dce5d1dce6d3dbe5cfdbe5cc *dae4cbd6e3cbd9e5ccd7e5d1d9e6d1dbe6d3dce7d5dce7d3dfe7d3dee6d1dde7d0dbe5d1dbe5d0 *d9e5d1dce5d1d9e5cedae5ccd9e6c6d4e2c5d2e1c1cde0c4cee1bfcddebdcbdcbcccdeb9caddb5 *c9dab4c5d8b2c4d9b5c6dab8c6dabbc7dbbcc9dcc0cde0c3ceddc2d0dec4d1e0c6d0dec9d2e2c8 *d3e2c9d3e0cbd3e2c8d3e3ccd6e3cddae3cedbe5cedae3d1dbe5cedae7d0d7e3c9d4e1c7d1e2c6 *d2e3c4d1e0c3cee0c1cedfc1ceddc1cedec2d1e1c5d1e2c7d2e2c4d0e2c6d1e2c6d2e1c6d2dfc7 *d2e3c8d2e3c6d0dec5d0e0c6d1e1c2d2e0c3cedec2cfdec3d1dfc4d0dec6d0dfc9d2e2c9d2e1c8 *d3e1c8d3e3c7d4e1c8d4e2cbd4e1ccd8e3cdd8e3d0d8e4d1d8e3cddbe5c9d8e4ced7e5ccd6e2cc *d5e3cbd7e2cbd5e0c9d1e3c9d3e3c7d1e2c6d1e1c3d0dfc2cee0c2cdddc1cedcc0cfdebecddec0 *cee0bccbdcbbcbdebecddec0cbdebdcbdeb9cbdabdcbdbb9cadab8cbddb7cbddb7caddb9cbddba *caddb9cbdcbbccddc1cfe1c0cedfc4d1e2c4d0e2c2cee0c0cddfc0cde0c1cfe2bcccddbbcbddbb *caddbfcbdfb7cadeb9c7dbb9c9dab9cbdcb8c8d8b8c7ddbbc8ddbfccddbecbddbdcce0c3ccdbc1 *cedec2ceddc3d1e0c3cfe0c4d1e0c5d0dfc7d1e0c6d2e2c5d2e1c7d3e2c7d3e2c5d0e1c6d1e0c5 *d0e0c6cddfc4cedec4ceddc5cfdfc3d1e0c2d0dfc2d1e0c5d1e1c6d2e0c4d1e1c8d0e2c4d1e2c5 *d1e0c3d1e0c3d1e0c7d3e0c8d2e0c8d1e0cad2e2c6d1e0c3d1e0c4cfe0c7d0dec8d1ddc5d1dec9 *d1e0c9d1e2c8d1e1cbd4e5cad5e1c8d3e1cbd6e2c8d5e2c9d3e3c9d5e2c6d3e1c6d3e2c9d4e3c8 *d3e0c7d2dfc8d1e0c8d2dec9d3e3c8d1e3c8d2e2c9d0e2c8d3e3c9d4e2cdd6e4ced9e5d0dae5d1 *dce6d2dee5d1dce7cfdae5ccd7e3c9d4e2c6d0e3c7d2e1c1cee0bdcedfc3cddfc1ccdebfcee1c0 *cfdcc2d0e0c2cedfc3d1e0c3d1e0c6d1e1c7d1e2c7d2dfc7d2e3c7d3e0c6d0e1c7d3dec6d1dec6 *d1e1c8d1e0c6d0e1c4cddec3cfdec1ceddc1ccddc0cbdec1cbddc1cdddc2ccddc1cddfc1ccdcc2 *d0dec2d0dfc6cfe1c3cfdec4cfe0c3cfdec6cfdec5cedec3d1e0c1cee0c1cde0c2ceddc1cdddc0 *cce0c1cedebdcedebfd0e1c3d1e0c3d2e0bdd1debfcddfc3cfe0c3d1e1c3d0dfc1cfdfbbcedebd *cce0bbcbddbdcbe0c1cedec2cfe0c7d2e2c9d6e2cbd6e1cdd9e4cedae5d0d8e4ced8e5d0dbe5ce *dae5cdd9e4cfdae4cfdae4ccd9e6ccd9e2ccd9e3c8d4e3bfd0e1bacde1bacde0bcd0e3c3d0e0c5 *d2e2c6d3e4c0d1e0bbccdfb5c8ddb1c7deb1caddb1c8dbb5c7dcaec9dfaec7dbabc7dab0cadaab *c5d9b1c6ddafc6d9b1c5dab2c7dab0c9dbb6c9e0c7d3e2cfdbe4d0dbe5cddbe4cbd8e5cad6e4cb *d6e3cad8e4cbd7e4cdd9e5cfdbe5ced8e5cfd8e5cddae3ccd9e5cad7e6c8d7e7c3d1e3b6c9dcb1 *c7dcaec6dcb1c6dcb1c6dcb3c6dbb1c6dbb2c9deb7cae0bdcde0c1d0e2bbccdebbccdeb6cbddb2 *c7dab1c9dbafc8dcb5c7dcb1c6dbb1c6daafc6dbb1c7dbb1c6dbb0c6dcafc6deb2c9deb4c8daaf *c5daaec6d9aec6dbb3c8ddaec5d9afc8dcaec7ddb1c7dcafc6d9adc6d9b0c5daaec3dbaec3daae *c1dbaec6dbaec6dcb0c4daaec2dab0c6dcb3c7dbb8cbddb9ccddc0ccdebecee0b7ccddb7c9dfb4 *c9dab8c9dab5c3dab5c5dbbcc7d8bac7d8bdc9d7bdcbddbfcbd9bbc7d8bdc7dabbc3d7bdc1d4bc *c3d6bdc6d8bfcad9c1cbddc2ccddc5cedbc4cedcc5ceddc6cdddc5ccdbc4ccdcc1cedec2cbdec1 *c9d9c1c8d4bdc6d3bcc4c8c3cbd0c6cfd497b5cd9bb9ce96b6d296b5cda1b8cfa0b6ce97b6cf96 *b8cc94bbd092b7d191b6d297b7d096b5cf96b4cf96b6cf95b8cf8fb3d08bb3ce98bbd192b6d19d *b6d09ab7d295b6d399b6cf97b9d094b5cd9bb9d19ebcd294b3d19bb6d28eb7d39ab9d09cbad39a *bad39bb8d39fbad19abbd2a0bdd3a0b9d49abad494b6d298b9d399bad397bcd69bbdd695bad597 *bbd399bdd39cbcd3a0bdd69cbdd6a1bcd6a0bbd49ebcd599bcd39bbbd39fbbd39fbbd29cbbd49d *bcd49ebbd59cbcd6a0bfd6a1bed69cbdd69abcd598bad793b6d39ebcd49cbbd3a2bdd5a4bcd4ac *bfd7b3c4d9bacadebacadebccbdbbbc7d9b5c6d8b3c5d8b0c4d8aec1d7aabed5acbed4a4bdd4ab *bdd4aec1d8b0c6d9b6c8dcb6c7ddb8c9deb8c9ddbbc9dbbdcbdebbc9dac0cdddc1cfdec1cedfc3 *cfe0c1d0e0c6d1e0c4cfe0c2d1e1c6d3e0c6d4e1c8d3e2cbd4e3c9d6e5cbd5e4cad4e4c9d6e2cc *d6e2cad6e2cbd6e4ccd7e2ccd8e3c9d6e2c8d4e4c8d4e4c7d3e1c7d4e3cad5e3cad5e2ccd6e4cc *d9e5ccd8e6ccd7e3ccd9e3c9d5e3c6d1e3c3d0e1c6cedfc6cfdec2ceddb3c8ddaec5d8b0c3d6b2 *c2d6b2c2d7afc3d8b4c3d7b8c6dbbac9d9bbc9dab9c7d8bac6dbbbc7dbbcc8dac0c9dbbecbdcc2 *cfe0c3d0e0c6d1e1c9d2e3c8d2dfc6d0dec7d0ddc6d1e0c6d1dfc4d0e0c6cedfc7d2e1c6d4e2c9 *d4e2cad4e0cbd6e2cdd6e3d0d8e5d0dbe5d0dbe6d1dce5d3dce6d3dde6d2dce3d2dee6cfdbe6ce *d8e4cad6e3cbd8e5cad7e3ced8e5cedbe4cfdae5d1dde6d3dce7d3dde7d2dde6d1dce7cedbe5cf *dce4d1dbe2d1dbe3cfdbe5ccd8e5cad6e3c6d3e2c4d2e2c3d1e1c2d0dfbecddcbaccdfb3c9dcb3 *c6d9b3c6dab6c5d8b4c5dab8c9dbbbc6d8bccbdebecadcc2cddfc3cfe1c6d0e1c7d2e2c5d4e3cc *d7e2cbd6e5ccd7e3ccd4e2cdd8e5ced6e6d0dbe4cfdbe6d1dce6d1dbe5cddae4ccd7e3cdd6e2cc *d5e4c4d1e2c5d1e0c5d0e0c1d0e1c1cedec6cfe0c3d3e0c8d3e0c8d1e1c7d1e2c8d3e4c4d2e2c6 *d2e1c6d1e1c3d0e0c4d1e0c6d1dfc6d1dfc7d2e2c4d0e2c6d3e1c9d3ddc7d3dfc8d3e0c9d3e2c8 *d3e2cbd8e2cbd4e2c9d7e4c9d8e3cbd6e5ccd7e3cbd6e5ccd8e0ced8e3ccd8e5ccd5e5ccd6e4c9 *d8e4c7d3e1c9d4e2c9d4e2c7d3e2c7d1e2c6d1e2c3d1e0c0cedfbecee0c1cedfbccbddbfccddbe *ccddbdcbdfbecbddbfccddbccddfbdcbdcbacaddbac9dbbbc9dbbac9dbb9cadcb9caddb7c9dfb7 *cadeb9cadeb8cbdebccbddbacddec0cddfc0cedfc1cee0c1cee0bbcee0bbcbdebdcbe0bbc9ddbb *cbdbbacbdcb6caddb5cadab3c7dbb9c7d9b6c6dbb8c8d8b6c8dbbbc8d8bcccdebdccdebfceddc3 *d1dfc4cde1c1ccddc5cedcc4cedfc7d1e1c4d1dfc6d2e2c7d1e2c9d3e2c7d1e1cad4e1c7d2e2c6 *d3e3c5d0dfc6d1e0c5cfe0c2cedfc4cfdfc3cedfc3cedfc5d1e0c6d1e2c6d2e0c8d4e1ccd3e2cb *d4e2ccd6e2cbd4e1c9d3e0c7d5e2cad2e3ccd4e3c9d4e0c8d5e2c7d2e0c5d1e0c7d1e0c6d0dec3 *d1e1c6d1e0c7d4e4c9d4e2cad3e0ccd6e2cad2e2cad3e0c9d4e2c9d4e3c9d4e2c7d2e0cbd4e3c9 *d4e2c9d3e1c8d1e2c7d0e0c8d3e0c8d2e1c6d1e2cad2e2c9d1dfc8d2e0cbd5e3ccd6e3ced8e5d0 *dbe6d1dce7d1dce4d1dbe5ced8e4ccd6e3c8d3e2c5d1e1c1cedec3d0e1c0cee0c5cfe2c4d1e0c5 *cfe2c2d1dfc3cfe1c5cfe0c6d0e1c5d2e2c6d2e2cbd3e0c7d5e2cbd5e3c9d5e2c8d2e0c6d1dfc9 *d2dec6d1e1c7d1e1c6d1dec3d1ddc0cedebdccdbc0cadec2cbddbbcbdebecddebfccdec3cedfc1 *cfe1c6d0e0c6d2e2c4d0e1c5cfe0c3cfdec3d1e0c4d1e0c5cfdfc3d1e0c4cfddc0cde0c1cddfbb *cbdebecdddbbccddbdcbdabdcddcbaccdcbeccddb8cbdeb6c9e0bbccdebacbdeb9cae0baccdebb *ccdebdccdebbccdebecee0bacce0b8cadebaccdec1cddfc4d2e0cad4e2cdd9e4cedbe4ced8e5cb *d8e3cbd5e2cbd8e3ccd8e3cbd7e1cad6e5cbd7e2c4d2e4bccde2b4c9ddb3c9dbb4c8ddb1c9deb3 *c9dbb6cce0b3cbdfb4cbe0b1c8ddaec6daaec7dcb1c7dcacc7dab1c8ddaec6dbaec7dcacc6dbae *c6dbb4c7d8acc6dbaec7d9aec6d9afc6deb2c9deb5cadec0d0dfc8d6e4c8d6e4bdd0dfb6cbdeb5 *c7ddb5c5d9b8c9ddbecfe2c9d5e3cbd7e3c7d5e2c1d3e2b7ccdfb5c8debacadeb6cadfb2c9ddaf *c7dda9c3d9adc6daaec4d8abc6dbb3c6dbb1c6d8afc7ddabc3ddb1c9ddb3c9deb1c8dab1c6d8b0 *c3d8afc4dbaec4dbaac3dbacc6dbabc6daa9c4d8adc3d9acc3daadc3dbadc6dbaec6dbacc6ddae *c5dbadc6daaec3d9adc4dbadc1d8abc4daadc5daacc4dbabc2d9aac4dbadc3d9a9c3d9aec2daaf *c4d8acc0d8abc1daaec6d9acc4dcadc4dbaec4dbadc3d9b3c5d9b7c9dbb5c9dbb3c8ddb3c9ddb3 *c8ddb9caddbbcadbbdc9dbbac9dbc0cbdfc3cadec7cedfc1caddc1cedec1cbdcc1c9dac1cbdac1 *cbdbc0cad8c1c8ddc1ccdec3cedec5cedfc6cfdec7cfddc6cedfc8d1dfc7ccdec8cfddc7cfdec8 *ceddc7d1dec5cedac3cbd5bac5c7c1cbd0c4cdd497b5cea1bad199b9d19bb8d29ab4d399b4d194 *b4cd9fb6d099b4cf92b6d19ab8d29bb6d195b4d199b6cf96b1cc96b6ce96b4cc98b2cd97b5ce8e *b3cc95b5cd91b2cc93b5d392b3cf98b5d298b7d298b6d198b6d19ab7cf9dbad49ab8d397b5d39d *b7d297b3d09db6ce9fbad09abbd299bdd3a0bad29ebad794b7d494b4d299b9d399bdd694bad69a *bdd5a0bfd69fbdd79ebcd69fbad59eb7d29bb9d19bb9d39bbbd49dbcd59ebdd69cbbd49ebbd5a1 *bcd6a0bed59fbcd59dbcd597bad19bbdd79abbd398b9d39dbbd498bbd49abbd598b9d59ab9d3a1 *bcd4a6c0d5b3c6d7bbc7dcbdc9deb9c8dab9c7dbb2c3d7acc2d7aec2dbacc2d6adc3d9aac0d6a4 *bdd3a5bcd5acbed8afc2dbb8c7dbb3c6d6b6c9debac9e0bbc9debbcae0bdc9ddbbcbddc0ccdec1 *cde0c3cedec6d3e0c6d2e0c5d1e2c3d1e1c6d1e0c6d3e1c7d1e1c9d2e0cbd6e3cbd6e4cbd5e3ca *d4e1cbd6e4cad5e4cbd6e4c9d5e3c8d4e4c9d3e2c7d2e3c7d3e4c7d3e4c6d2e2c6d3e1c7d3e2ca *d4e3c9d5e4c8d3e4cbd3e2cad6e2c8d4e3c8d2e2c6d3e3c7d2e2c8d3e2c3d3e3acc1d6acbcd6ae *bfd7b1c3d9aec4d8aec2d6b3c4d8b9c6d9bdccdbbbc9dbbbc7d8bac7dabdc9ddbeccddbeccdbc6 *cfddc6d1e2cad4e3ccd6e3cbd5e3c9d3e2c8d4e3cad2e2c9d3e2c7d2e2c9d1e2c9d4e2cad5e2c7 *d2e1cad6e4cbd6e3ced6e3cdd7e5d0dae5d1dae4d3dce6d3dce7d2dce7d1dce7d1dde9d1dce5d1 *dbe5cfd6e5cdd6e3d0d9e3d0dbe3cedce5d0dbe7d0dae5cedae4cfdce5d1dbe5d3dbe5d1dbe6ce *dbe4d0d9e4d0d9e5d1dbe6d0d6e4ccd6e2c8d1e2c6d3e0c5d2e0c2d3e3bfcfe1b8cadfb3c9dbb1 *c8dab2c8dab1c7dab6c7dbb7c9dab9c9dabac8dcbdcbdec4cddfc2cedec7d1e0c8d3e2cad6e0cc *d6e3cdd8e3ced8e5ced8e5cfdae4d1dbe7cedbe4ccdae5d2dbe6d1dbe4cfdbe6ccd8e7ccd8e4cc *d7e4ccd6e3c7d5e2c6d3e0c6d2e2c4d2e2c3d1e1c5d3e3c6d3e1c9d3e1c7d1e0c8d1e0c7d3e2c8 *d4e2c5d3e1c6d3e3c7d3e3c3d2e3c5cfe0c8d2dfc8d4e2c8d4e1c9d5e2cad8e3c9d6e3c9d4e3c9 *d4e4cad5e3cbd7e3cbd6e3ced9e5cfdce5cfdae6cdd9e7cdd8e6cdd5e2ccd5e3ccd8e4c7d5e3c7 *d4e0c7d3e3c4d3e2c6d1e2c6d2e0c6cfe0c1cedec2cfdfc2cfdfc3cee0c1cee0c1cde0c1cde0bd *ccdcbbccddb6cbdcbccbdabecdddbfcde0baccddbbcbe1b8cae0bbccdeb9ccdcb8cadab7cbddba *cbdeb9cbdeb5caddb8c7ddbac9dcb7cadbb4c8ddb7c8debbcbddbdcbdebacbdcbccaddb6c8dbb7 *c8dcb9c9d8b7c7dab6c5d9b8c7dcb8c7e0b6c6dbb6c9ddb9c9dcb6c9dbbbcbdbbbccdbbecbdec1 *cddfc1cfdec3cedfc1cce1c1ccdfc2cedfc5d1ddc4d1dfc6d1e0c6d3e1c6d2e0c8d5e2c8d3e2c9 *d4e3c9d4e2c6d2e0c7d0e1c7d0e0c4d0e0c5d1e1c5d1e1c8d1e2c7d1e1cad2e2c9d3e2cad5e2cc *d5e2ced8e3ced6e3c9d6e1cdd6e2cbd7e3ccd5e1ced6e2ccd3e2c9d2e2c7d3e2c7d4e3c7d1e0cb *d0e3c7d2e0c9d1e0c9d3e2c9d5e2c8d5e0cad6e2cbd5e1cad3e0ccd6e3cbd5e3cad4e3c9d3e2c8 *d4e1c8d2e1c8d3e2c8d3e3c8d1e1c5d0e0c5d0e2c4d1e1c4cfe1c6cfe0c8d3e2ccd5e4cdd8e3d0 *dae6d1dbe6d2dbe6d1dde7cfdbe7ced8e5cbd3e3c6d1e2c1cee0becfe1bfd1e0c3d1e2c4cfe2c2 *cee0c5cee1c2d0dec5d2e2c7d1e2c7d2e3cad3e2ccd3e3ccd3e3ccd5e5ced6e5ced6e3ced6e4c9 *d5e0c7d3e0c7d3e2c4d0e0c4d0e0c2cce0c1cee0c1ccdebdcbdebfcce0bccbdebfcce0c1cddfc4 *cfe0c6cee0c5d1e1c8d0e1c8d0e1c6d1dfc4d0dfc7d2e0c5d1dec6d1e0c7d1dec1d0e0c2d0dfc1 *ccdec0cbdfbdcde1b9cde0bacbdabaccdebbccddbbcbdcbac8d8b2c7dcb6c9dfb7cbdfbbccdebb *cfe0b8cadebbcadebbccdebacbdfbcccdeb8cadfb6c9deb7ccdfbecfe0c5d3e3cbd7e4ccd8e5cf *d8e3cad8e3c9d7e4c8d6e3c5d3e2c4d4e3c6d3e3c0d1e2b8c8deb3c9deb1c7dbaec9dfb6c9ddab *c7ddadc7daafc6ddb4c7dbb3c8dcb1c8dcadc5dbaec6e0adc7dbafc7dbb0c7dbadc6dcaec6d7b0 *c6dbb0c8dbaec7dbacc6dfacc6ddacc4dbadc3d9afc6dcb1c7dbb4c8ddb8cadfb0c9dfadc6dcae *c7dbadc6dbafc6daaec6dcb9cadebacbe0b3cadeb0c6ddabc6ddb1c7dbb1c4dab0c6dcaec6dbaf *c7dbacc6dba7c4d9abc5dbafc7ddadc5dbafc6dbb0c6dbb1c7daadc4dbaec5dcafc7deadc5ddae *c5dbaec3d8aac1d9acc4dbafc6dbafc5dbadc6dcabc3dcadc4dbabc4d8a5c3d8aac3d9abc3d9aa *c5dbaec5dcaec5dca7c2dba8c2d9abc3dbacc5d9abc1daaec4dbafc5daadc1d9abc3dbacc5dda9 *c2dba3bfd7a9c1d9aac2dbaac3daabc5d9adc3d8acc7dcadc3dbb0c2dab0c4dbafc2d8aec1dbb1 *c7dbb1c7dcb2c9ddb8ccdeb8caddbcccdec5cde0c5cfddc7cfdfc6d1dfc4d0dec3cddec6cddec3 *cee0c3cdddc3cbdbc3ccddc3cfddc6cfdec1cddec6cddec6cee0c8cee0cad2dfcbd0dfcbd5dfcb *d5e2cdd4e2ccd4e1cbd5dfcacddbbcc5c9c2ccd0c4cfd398b6cc9fb9cca0b4ce9bb7cf9bb4cc95 *b1ce9bb7cd96b6ce93b3ce93b6ce94b3cf9db8d2a0b6d199b2ce96b2ce98b6cf97b6ce9ab6ce95 *b4ce96b5ce93b3ce97b4d09bb4d38eb2cc98b5ce9eb6cd9cb4cd9cb5ce99b6d197b4d09bb5d2a0 *b7d19eb5ce9ab5cd9ab6d19db7d49bb6d29db9d19fbcd298b7d496b8d496b7d296b9d396bbd394 *b7d39dbad59db7d29fbbd29cbbd497bad59cbad395b7d19bbbd39cbad19dbdd4a1bcd59bb6d29d *bad49fb8d5a0bbd19fbbd49ebdd3a1bcd49cbad39cbcd69fbbd2a1bed69dbcd596b9d396b8d39b *bad19ebbd2a3bfd4b2c6dbb8c7dbbac6d9b7c8d9b2c6dcafc3daa8c0d9a5bdd7a4bfd8a8c2daaa *bfdaa9bfd8abc0d5aec2d7b0c4d9b1c3d7b6c4d8b9c7ddbbc7dcb6c7d8beccdbbdcbddc0ccddc2 *cedfbfcedec1cee2c1cedfc6d0e1c6d1dec3d1e0c6d2e2c1d0e0c5d0e0c6d0e2c9d3e3c9d6e1ca *d5e2cbd6e3c9d4e2c8d3e1c8d3e3c7d1e2c6d2e3c6d1e1c7d2e1c7d2e3c6d3dfc2d1e1c2d0e1c3 *d0e3c6d1e2c7d3e3c6d1dfc9d3e2c8d4dfc9d5e2c9d3e5c9d3e3c7d3e3c5d3e0bdcddfabbfd3a4 *b8d1aabdd3aac1d6afc1d7b1c3d9b9c6d8b9c6dabbc9ddbbc8dcbdcadabecbdbc1cce1c4ccdec7 *d0e2c8d2e3cad4e3cbd6e3ccd7e5ccd6e4cbd8e4c8d6e3cad4e2cad6e3c8d4e2cbd6e2cad6e4c9 *d5e2cad6e3ccd6e4cdd8e3ced5e1cfd7e4cfd8e3d0dae5d1dbe6d2dce4d2dce5d3dde6d1dce6d2 *dbe6d1dce6d2d9e5ced8e3d0dce5d1dde5d2dde7d1dde7d3dae7d0d8e3cdd8e3ccdbe5d0dce5cf *dbe5cfd8e4d0d9e3ced9e2d0dae6ccd6e5cbd5e3c6d2e2c6d3e0c4d1e2c2d0e1b9cfe0b2c8ddb0 *c7dcb1c7d9afc7dcb7cadcb7c9dabbc9d9bccbdbbdcdddc2cee0c3d0e1c7d0e0c8d2e1c7d2dfca *d4dfced8e4cedce5cedbe6d0d9e7d1dbe7d2dbe6d1dbe6d1dce5d1dbe5cedce4d0dbe5cedbe6ce *d8e6cfd8e5ccd5e3cbd3e2cbd4e2c6d2e2c3d1dfc6d1e2c4d1e1c7d2e1c7d3e0c8d1dec7d1e0c5 *d0e0c4d3e2c7d5e1c7d5e3c6d1e1c7d2e2c8d0dec9d4e2c7d4e1cad6e2cad6e3ccd8e3cbd7e4cc *d6e5cad5e2cad4e3ccd5e3ced8e5cfd8e5d1dae5ced9e5d1dbe6d1dae5ccd6e1c9d5e3c7d3e3c6 *d3e3c3d0e1c1cfe0c3d1e0c4cfe0c3cfdfbecedfbcccdfbaccdec1cfddbdcddbbfcfe0c1cedec0 *cde0bdcbddbfcad8bbcbddbbcadabbc9dcbac7debdcbdebfccddbccbddb9cadbbacadbbac9daba *cbddbdcddfbacbdebaccdeb8cadeb4c5dab4c6dcb0c5d9b4c6d8b6c6dabbc7dabac6dbb9c7ddb8 *c9deb9c9dab5c4d8bbc7d6b5c4d8b6c6d8b3c6d9b8c9dbbbcadcbdcbe0bbc7d8bbc8dbbecbddc1 *ccdcc1cee0c1ccddc3cbe0c3cddfc5cde0c1cedec5cedfc4d0e0c6d1dfc6d1e0c8d3e1c8d2e1c9 *d2e2ccd4e5c8d5e2c7d4e1c7d3e2c8d1e1c7d1dfc6d1e0c7d1e2c8d2e0cad3e2c8d4e2c9d6e1cc *d7e2cfd6e2ced8e3ccd7e4ced8e3d1d9e3cfd5e3ced8e3ccd6e0ccd3e0cad2e0c9d2e0cad3e0c7 *d3dfc7d1e2c9d5e2c3d2e1c7d3e2cad2e2cbd6e2cdd5e3ced6e2cbd6e2cdd9e5ccd6e3cbd5e3cb *d5e1c9d3e0ccd5e1c7d0e0c6d1dfc7cfdfc7d0dfc5cfdec3cfdec3cedec6cddfc9d3e2cbd4e3d0 *d8e4cfd8e4ced9e6ced8e6d0dae5ced9e5ccd7e4c9d5e3c7d2e0c1cee0c2cee0c4cfe3c4d1e0c6 *d0e1c5d1e0c5d1e0c7d2e0c8d3e3c9d2e2cdd7e4cbd7e5cdd6e3cdd6e3cdd8e3cfd8e4ccd8e1cd *d6e3ced6e2ccd3e0c9d4e0c5d1e1c4cee0c2ceddc2cddec1ccdebdcaddc2ccdec2ccd9c1cedcc3 *cdddc4cfdfc6cfe2c7d1e1c8d2e0c9d3dfc8d1e0c8d1dec6d1dec6d1e0c5cfe0c5d1dfc3d1e0c3 *cedec0cddebfccddbfceddbcccdcbdcbdebccadfbccbddb8cbdcb6c7d9b9c9dcb9ccdeb6c8dbb8 *cbe0b7ccdeb9cadebbccddbdccdebecfe0b8cddeb7cbddb8caddb7c9ddbbc9ddbdcedfc9d7e5c9 *d7e3c6d4e2c0d1e0bfd1e2bccfe1bbcedfb7cddeb9cce0b1c8dab1c7dcaec6dcb0c7dbb4caddae *c7ddaec7dbaec6dab1c6dcafc7dbaec7ddb1c7d8b1c9deaac6deafc7dfb3c8dbadc6dbb1c7d9ae *c4d8b0c6d9b0c6dbaec6d9aec6d9aec4dcaec5daafc7dbb1c6dcb1c9dcaec7d9afc6daaec6dcae *c6dcafc7dcaec3d8afc6dbb1c6dbaac4dbacc7dbadc6d9afc6dcaec5ddafc4daadc5d7b0c6dcae *c6d7adc5daacc5d9aec5daafc6d9aac6dbacc6d8acc4dbaec4d8afc4d9aec5daaec3d9adc7dcae *c6dda9c4dcadc1daa7bfd8a9c1d8aac4d9acc3d9aac1d7aec6dbaec3dcaec5dcaec2daabc4dbaf *c3dbaec5d9abc3daacc3dbaac5dcabc2daabc0daa9c1d9acc0d8aac1d9adc3d9aac0d9acc4dbaa *c6dda9c3ddacc2daadc1d7acc1d8afc6daadc2d7acc2d8b1c3d9a9c1d8a9c0dbaec2d9b0c3d8ad *c4dbaec3d9afc5d8afc4d8b1c6ddb0c5dbb4c8debcccdec5cedec3cfdcc6cedfc9d1e1c6d1dfc6 *d1dfc6cdddc6cedcc6cedac7cedec6cfdec8d0dfc8d0decad1dec8d3e0cbd3e1cbd4e0cdd2e1cc *d5e0ced6e2cfd7e4d0d8e3d0d7e1ced1ddbfc6ccc3cccfc5d0d49ab6ce94b5ce9bb3cd96b6cc98 *b6d093b6cf97b8d294b7d19cb7d19bb8d59ab5ce97b5cf86a0c399b3cd93b1cc9bb6cf9ab6cf9a *b7cf9ab2cc97b6cd8eb6cc95b6d198b6d295b8d19ab7cf9cb5cc9db6cc9cb4cc99b4cd94b6d09e *bad19bb7d19eb8d195b4cf9cb7d29bbad397b7d19ebad29cbbd29ab8d29fb8d29bbad39ebbd296 *bad29abad295b9d49abbd398bad099bad19cbbd295bbd298bbd297b9d39abad392b7d295bad39d *bdd494b7d39bbcd4a0bdd498bbd69cb9cf9cbcd6a1bdd697b8d49dbbd29bbdd4a1bdd49fbdd69e *bcd59dbcd597bbd49fbcd5a7c0d8aac4d9adc5d8afc5d6aec5daa6bfd6a1bdd3a2c0d99dbcd4a3 *bdd5a6bfd7a5c2d8a7c2d9aec4daacc3daaec6dbb1c5d8b6c6ddb6c7dcbccadbbcccddbecedcbd *ccddbdccddbecbd8bdccdcc1ccdbc2d0ddc2d0e0c2d1e0c5d2e3c5d1e4c4d1e0c8d2e1c6d3e2c6 *d3e2c7d4e0c8d4e0c7d3e1c5d3e2c5d1e1c5d2e0c1d1dec1cfdebfcedec1d0dfbfd1e0c2d0e0c3 *d0e3c4d0e0c6d1e2c7d3e2c9d6e4cbd6e4cad6e5c9d4e3c7d6e3c7d4e4c6d1e2bdcee0b6c8dcaa *c3d9a5bdd2a8bdd4acc2d6b6c6d7b4c6d8b8c7d8bbc9d9bdcbdbbdcbddc0cbdec4cee0c7d1e0c7 *d2e3cad6e2cad6e2ced9e5c9d5e3d0d9e3cdd6e3ccd7e5cad5e3c9d5e2ccd7e5c9d5e1cdd7e4cb *d6e2c9d8e2cbd7e2cbd8e4cbd9e3ced9e4cedae5cfdae5d0dce5d3dde5d1dce5d3dbe4d2dde6d3 *dde7d1dde7d3dde5d1dce5d2dbe5d3dee5d4dde6d1dee6d1dee7cfdde7cddae6c9d8e3c9d6e2ca *d6e4c8d6e4cad7e3cbd7e3ccd9e5ccd7e4ccd4e2c6d3e2c5d1e0c1d1e0c0d1e0bbcddeb6caddb3 *c9dcb4cadbafc6d7acc5d9b3c8d9bacaddbdccdfbeccddbfcee0c3d0dfc6d1e1c6d2e3c6d3e2c8 *d4e2c9d6e3cdd7e4cedbe5d1dbe6d1dbe6d3dde7d1dde5d0dce5d1dbe3d0dbe6ccdbe3ccdbe3cf *dae5cedae4c8dae3c7d4e2c6d2e3c6d3e3c6d3e0c6d3e1c5d1e0c5d2e3c6d5e4c7d4e3c8d5e2c5 *d2e0c6d2e1c7d2e1c7d4e0c7d4e2c6d1e1c7d3e1c9d3e0c7d5e1cad5e2c9d5e2cbd9e2cddae2cc *d8e2ced7e3ccd5e4c9d6e4ccd6e4ccd9e5cfdae3cfdce6cedbe6d1dce5ccdae5c7d4e4c4d3e1c1 *d1e2c3cfe0c0ceddc1cfdfc2cfe0c1cfdec1cedfbecee0bbcbdebcccddbfcfdbbacce0bdcddfc0 *cddfbfcddfb6cbddb7cadcb4c9dbb6c8d9b6c9dcb9cbddbbcbdbbacbdcb9c9dcb7c9dcb6cadcb9 *cdddbfccdfbecedfbaccddb9c7d9b6c7dbb7c5d8b6c6dbb2c6dab2c5d7b5c7dbb8c9dbb8c9deb3 *c9deb7caddb6c9dbb7c9dbb6c7d7b6c7dbb9c8dcb7c6d8b6c7dabbcaddbac8dbbdc8d9bdcad8bd *c9ddbfcbddbbcddec0ceddbfccdcc0ccdec0cedebfcee0c2cfe0c1d0dec3d0dfc5d0e0c7d4e2c9 *d5e4c8d6e2c9d3e2c9d5e2c9d6e1c5d2e2c5d1e0c6d1dfc7d1dec7d0e0c6d2e1c9d3e1cbd6e3cc *d7e3cdd8e2d1d7e2ced8e3cdd8e3cfdae3cedbe3cfdbe2cddae3ced9e5c9d3e3ccd4e2cbd6e2c9 *d3e0c9d3e2cad6e3c9d3e2c9d3e1c5d3e0c8d4e2c8d3e2cbd5e1c9d6e0cbd6e2ced9e5cdd8e5ca *d6e4cad6e3cad4e1c9d5e2c5d1e0c6cedfc3cee0c5d0e1c5d1dfc5d0e0c1cedfc3cedfc7d1dfcb *d3e0ccd7e2cbd6e2ccd8e1cedae4cddbe6ccdae5ccd8e2c8d4dfc3d0dec3d1dfc1d1dfc3d1e0c1 *d3dfc5d3e3c7d3e1c9d5e1c9d5e3ced6e2ced8e3ced9e5cbd9e3ced9e5ccd8e6ced9e4d0d9e1cd *d8e3ced8e3cdd8e2cbd7e0c9d5e2c5d4e3c5d0e2c5ceddc1ccdebfccdcc0cbdcc2cfdec2cee0c3 *cedec3d1dfc7d2e0c9d2e1cad3e0cbd5e0cbd7e2cbd6e1ccd5e2cad6e3c9d4e2c7d1dec5d1e0c1 *cfdebeccdebbcddebfcdddbed1e0bdccddbdcedfb7cbdcbbcbddbbcbdeb4c7dbb7c9dcb5c8deb6 *cbddb6cbdeb9c9dbbaccddb7ccddbbcbddbbccddbbccdcb6c9dbb9cbddb9ccdebbccddbbcddfbe *d1e2bbcddfb6cbdeb3c9dcb0c9dcb5caddb2cbdfb1c8ddb1c8ddadc7dab1c7dcaec7ddaec7dcad *c8dbadc9dcaec8ddadc7dbadc7dbacc6daadc7dbaec9ddaec8ddaec7ddb0c8dcaec6daafc7daa8 *c3daaac5d9aac5d9afc6dbaec6dbb4c9dcaec8dcadc7dcafc7dbaec6dcb5c7dbacc6daabc6d9aa *c4dbaec6dab0c6dbacc5d9afc6d8aac4dbaac7daabc6daacc6daadc6dcaec6dbabc5daadc2d7ac *c3d9a9c5daadc6d9aec5dbadc5daadc6dcaec7dbafc3dbadc4d8abc3d8adc4d9acc3d9aec5daaf *c5d9adc6ddadc4dbafc7dbaac4d8acc4d8aac5d8aac4d8abc4daabc3daaec6dbb1c6dbaec4dbab *c5d8abc5d8acc6daaac4d7acc2d9aac2d9adc4daadc2d9aac3d9aac2d7abc2d8a8c1d7abc2d8a9 *c2d8aec2d9acc1d7aac1d8abc3d9aac3daabc3d8acc2d8abc2d7abc1d6a9c2d9adc1daadc3daad *c3d8abc3d8aec1d8afc6dbaec6daaec7dbb1c3d9aec7ddb1c7deb2c7dbb5c9dbbdccddc0cedec1 *cedec3cedec6cfddc9d0dec9d1dfccd3e0cbd3e0cbd5decbd3e0ccd5e0ccd5e0ced5e2cfd6e3cb *d5e2cdd6e3ced8e3cdd9e4cedae5ced8e1cbd0dbbfc6c9c4ccd0c6cfd49ab3cb9bb5cda1b6cd9b *b5cf96b4ce97b3cc95b6ce9cb9d19cb7ce9bb6cf98b3d193b2cc99b3cf95b3ce98b1cb98b3cb95 *b3ce9eb6ce97b6cf8eaecb98b5ce98b2cc9eb5cd9bb3ce9bb5cc9cb6cd9fb3cba2b6ca97b3d097 *b4ce9bb5cf9cb4d09bb6cea0b9d09eb6d09eb9d299b6cf9db5d09ab7cf9cb6d099b6d19cb7d29f *b8d19dbad19cbad39eb8d39bb8d19ebbd19ebbd09abad19bbad090b7cf98b8d19db9d49db8d396 *b7d09dbbd19db6d19ebad0a0bcd29fbbd4a1b9d1a0b9d299bbd19eb8d39ab7d09ebbd39abbd495 *bad49ebcd49cb9d69cbad49ab9d29dbad1a0bcd59fbbd5a0bbd49dbdd59fbdd59bbdd69dbad3a0 *bdd3a2bbd2a5bdd4a9bed4a5bdd5a4c1d8a9c3daaac2daaec3d7afc6d9b3c7dbbbc9dabdcbdbbf *ccddbdcaddbac9dcbbcbdebbc9debdccddbecbdec0ccddc1cfdfc3cfddc3cfe0c3d0e1c3d1e2c4 *d0dec1d1e0c1d1ddc2cedec1cedfc0cedec0cde0becddcbbccddb9c9dcbcccddbbc9ddb7cadcbc *cdddbdcddfc4d1e2c7d3e3c9d4e3c9d5e2cad5e3c9d5e0c1d0e1bbcddfbacee2b6cadeabc4dda8 *c4dba8c3d8a8c1d8a6bdd6a8c1d7afc4d8b6c6dbbcc9debbc9ddbfccdbc1cddcc6d1ddc5d1e0c6 *d1e0c9d3e2cbd6e4ccd6e3ced8e2cddae2ccd9e3cad5e4c9d4e3cad5e3cdd6e3cbd7e5ced8e5cc *d7e4ccd5e1cad7e2cad8e1ced9e3cfd9e5d0d9e3d2dae4d2dbe6d0dbe4d1dbe3d0dae4d2dbe4d2 *dbe5d0dae4d0dae4d2dbe6d3dbe6d4dce4d3dde5d3dde5d1dbe5ccd9e5ccd6e3c7d3e3c1d1e2be *cfe0c1cfdec1d1e3c3d3e0c7d6e1c8d3e0c8d3e2c4d1e2c3d1e0c3cee0c1cfe0b9ccddb6caddad *c7dbb0c6d9b2c6daafc5d9b2c5d9b3c7d8bccadcbeccdbc3cedec3cfdec6d1dec7d1e0c8d3e2c8 *d4e3cbd5dfccd4e2ccd6e3cdd8e4cdd9e3cfdae4d1dbe5d0dbe7d1dce6d1dce5ced7e5c9d6e0c9 *d5e2c7d4e2c3d1e2c3d1dfc4d0dec7d1e1c5d2e0c6d2e0c6cfe0c4d1e0c4cee0c7d5e2c8d3e2c8 *d2e2c4d1e1c5cee0c5d0e0c5d1dbc6d1dfc3d0e0c5d1e1c7d1e0c7d2dfc8d5e2cdd6e2cbd6e4cd *d7e3ccd7e0ced7e2ccd7e3cdd6e4cdd7e3cfdbe4d0dae4d0dbe5ced8e4cdd8e3c9d6e2c5d1e2c0 *cedebdccddbaccdbb8cbddbbc9dcbccbdebccadcbacbdbbdccdfbfcbdcbbcbdcbacad8b8cbdbb9 *c9dbb7c9dbb4cbdbb1c8d8b4c8d9b2c7dbb1c6dbb5c7ddb7c9dbb4c6dbb1c7dbb7caddb5c8dcb6 *cadcbbccddb9cbdfb6cbddbbcbddb6c7d9b3c4d8afc4d8b6c6dab4c6d9b1c4d8b8c6d9b6c5dbb1 *c6d8b8c7d9b8c6d8b7c8dbb4c7d8bac7dbb9c7dcc0cbdbbdcadbb8c6dbbbcadbb9c8dcbac9ddba *c8dbbdc7dab8c9ddbac8dbbdc9dbbac8dcbac8d8bac9dbc0ccddc1ccdcc0cddcc2d0dec6d2e0c6 *d0e0c5d1e1c6d0e1c6d1e1c7d2dfc8d1e0c6d1e1c7d1e0c6d2e0c6d0e0c6d0e1c7d2e1cbd4dfcb *d7e2cbd7e3cfdae5cfdbe3d0dae6cfd8e2ced7e1d1dae2ced8e3cdd8e3cddbe4ccd8e2cbd5e2cc *d5e2cbd1e0c7d3e2cbd1e0cbd3dfcad3e0c9d6e2cbd6e2c9d2e0cbd3e1cdd6e2ccd8e2cbd8e1cc *d7e2cbd6e2cbd4e2cad5e2cbd3e0c6cfe0c6d0dfc6cfddc8d0dfc4ceddc3cfdfc3ceddc5cfdec7 *cddfc7d0dfc8d2e1c4d1dfc8d2dfc9d4e2cad6e4cad7e2cbd3e1c9d1e0c7d0dfc3cfe0c3cfdec7 *d1e0c4d1e1c7d1e1cbd5e3ced7e3cdd8e3cdd8e2cdd7e2ccd7e3ccd8e3cdd7e2d2d8e4d1d9e5d1 *dae5cdd6e0ccd6e0ccd3e1ccd5e2c9d2e0c8d3e0c4d1dfc4cfdfc4cde0c4ccddc2ccdcc1cdddc4 *cedec4cfdec6cfdec8d2e2cbd3e2cbd4e1ccd5e1ccd4e3cbd5e0ccd6e1cad4e1c9d3e0c6d0dfc3 *cedfbecaddbfccdcbccbdbbdc9d8bac9d6bbccdebbccdbbcccdebbc8dfb6c6d9b5c8dbb7c9d9b6 *c8d9b9cbddb8cbdebacde0bbcadebbc8dcc0cbddbdcadcb8ccdebacadeb7c9deb6c8dcbacaddb8 *c9deb4c8deb3c7daaec7dab0c8d8aec6daaec7dbb1c7dcb1c7dcb0c6deadc3d9b1c8dab1c9dbaf *c7dbb1c7dbaec8dbaec6dbb0c7ddb0c9ddb1c7dbaec7d9b0c6d9aac1d7abc4daacc6dbafc6dab0 *c7dbabc6d8aec5d9aec6d8adc4d8acc3d9aec5d9adc4d8acc6d9aec6daaec6d9adc6d8aac2d6a6 *c3d8acc3d9adc5d9abc2d8abc4d9afc5d8aec4d6acc4daacc3d8a6c0d6acc2d9aac3d9adc4d7ae *c4d9aec6dda9c2d9acc3d9acc3d8a8c1d8adc2d8acc3dbaac3d8aac2d8adc4daaec4d8aec3d7a9 *c1d8afc5d9a6c0d8abc5dbaac0d6aac3d8aac1d6aac3d7aac3d9a4bfd7aac1d7a9c2d9aac0d6aa *c1d9acc3daadc5dbb0c5d9aabfd6acc2d7a9c0d6adc1d7a9c1d8acc1daafc3d9a7bed5acc1d5a4 *bfd5a4bdd5aec0d6a7bfd8aac0d8adc1d9aac1d7aec2d6adc2d8aac0d5aec1d7adc2d7acc0d8ab *c3d9aec3d6b1c3d9aec2d7a9c0d5a9c1d8afc4d9abc2d7aec2d6afc6dcafc4dbb1c6dbb5c7dbb1 *c4d9b5c7dabec9dbc4cedec7d3decbd3deced5e1ced8e1ccd6e2cbd2e0c9d1dfcbd1dfcbd3e2ce *d5e3ccd5e2ccd6e3cdd5e0ccd7e2cbd4deccd2dec7ced8bec5c8c1cdd0c5cfd49ab4ce9ab6d198 *b2d099b6cf99b6cc95b2cc93b5ce9ab6d099b3cfa1b4d09ab6d1a0b6cf9bb2cc98b5cc97b3cc91 *b2cb96b4cf96b6d08eb5cf95b5d098b3cc95b7d198b6ce9db6cf97b3d19db2ce96b1cd96b2ce9c *b4cf9fb6d096b3ce9ab5d19eb6d0a1bad19ebad39ebad39db7d39db8d2a2bcd09bbad29db9d39b *b6d19fb7d09ebbd19ebad49dbbd39ebdd09eb9d29ab9d099b8d195b6d19ab8d29cb9d39fb9d2a2 *bdd59cb8d19ebbd19fbad1a0b8d1a1bdd0a9bcd3a5c0d3a4bcd69cbcd59cb9d3a0bbd299bdd598 *b9d39bbbd598bbd392b8d59abbd59bbbd79ab9d29bbbd39cbcd49fbcd49fbbd59fc0d59cbcd59b *bdd7a0bdd79bbad49dbdd39ebfd69ebdd4a0bed7a1bdda9bbbd8a6bfd8aac3dbb1c6d8bdcbddc4 *cfdebeccdcbdccddbbcbdcb8c7ddb8c8ddbac9dbbdcadcbbcddcbbccdebbccdebecddfc0cee1bd *ccddbdccdec0ccdebeccdeb9caddbbcbdeb5c9dbb1c7dcb2c6dbaec6dbadc5dbacc4daa9c3d8a7 *c4dba9c4daafc6d9bbcce0c4d2e3c4d3e4c5d4e5c4d2e1bbcddfb0c7dba6c4dba8c4d8a4c2daa3 *c3d9a5c4dba1c3dba2c1d69ec1d6a4c1d8adc6d9b1c4d9bbcbdebccbdec3cfe0c7d3e0c8d3e0c7 *d3e2c7d6e3cbd7e3cbd7e3ccd9e5cbd6e5cddae6ccdbe3c9d6e3c9d4e4cbd6e4cbd8e5cbdae4cc *d9e4cbd7e5cad5e5cbd5e2ccd8e2cddbe4ccd9e5cdd9e3d1dae6d1dbe4d1dbe6d1dde6d2dde6d1 *dae5d1dce5cedbe3cfdbe5d0dbe6d2dce7d3dde7d3dde6d2dee3d3dce6cedbe5c9d6e4bdcde0b8 *c9dcb5cae0bdcddec2d1e0c1d1e2c3d0e1c4d1e2c3d2e2c0cde0bfcfe2bdcddeb8cce0b7ccddb3 *c9dcaec6dbafc7daafc7dbb0c7d8afc6d9b5c8dbbccedec0cfdec5d1e2c6d1e1c7d3e2c9d4e1c8 *d5e3cad5e3ccd6e2cbd7e2ccd7e4cfd9e5ccd8e6d0d9e6d1dbe6cfdce7cedae5d0dbe5ccdbe5cc *d6e2c9d2e2c4d3e2c3d2e2c4d2e2c6d1e3c3d0e2c5d3e1c4d3e3c2d1e0c5d2e0bfd0dfc3d3e2c5 *d2e2c5d0dec1d0e0c3d1e2c5d1e2c4d1e0c1cedfc1d0e1c3d1e2c5d1e1c7d4e2c9d6e2cbd8e3cd *d9e3ccd9e4ccd6e4cbd6e2cbd9e5cbd9e4cfdbe5cfdbe4cfdce6cddbe2cbd4e3c9d5e3c4d2e0c3 *d0e2bacbddbbccdebdccddb8cbdbbbcbdabdcaddbccbdbbdccdbbfcbdfbfcde0bdcddebac9debb *c9dab7c9dcb5c7dbaec6dcb3c7ddaec6d8abc6d8adc5d7acc6dbb1c7dab2c7dbabc4ddadc5dcb2 *c6d9b4caddb3c9dcb4caddb3c8ddb2c5dbb0c6dcabc2d9afc3d9b1c3d8b0c5d8b4c7d9b3c8dcb1 *c9dcb6cbdebbc9dbb9c7dbb6c9d8b6c9dbb8c9d9bccbdbc0cbddbdcbdfc1cedebfcbddbdcbdbb9 *c9dbbdc9dbb8cbddb6c9deb6c9ddbbcadcbcc7d9b7c7d9b7c9d8b9ccd7bccbdbbdccdcc1cedfc3 *d0e0c4d2e1c4cfe0c7d1e0c6d1e1c4d1e0c7d2e1c6d1e1c4d1e0c5cee0c7d1e2c9d1e1cad4e2c9 *d6e1ccd7e3ced8e3cedae4d1d9e5cfdae5ced9e3cedbe2cedae3cfdae3cddae3ced7e3cbd3e3c9 *d3e2c6d5e2c9d5e3cad3dfcad3e1cbd3e3cbd4e2c8d1dec9d4e2c8d3e2c8d6e2ccd6e0cbd6e0cd *d8e0cbd6e2cbd4e2cbd5e1cad3e2c9d5e1c6d3e2c6d1e1c5d0e0c6d0dec6d0dfc4cedec2cedfc3 *cfdfc4d0e1c4cfe2c5cfe0c6d1dfc9d3e2c7d1e2c7d3dfc9d3e3c6d3e3c6d3e5c9d0e1c4d1e1c6 *d0e1c7d1e0c6d4e1c9d5e2ced8e3cbd8e4ccd8e5ced8e3ced8e2cdd8e2ced8e5d2dae3d1dbe4d0 *dbe5cfdbe5cfd8e5cdd7e2cfd8e0c8d2decad5e1c5d2dfc4d0e1c4d0e0c5d0e2c3cfe0c6d0dec5 *d0dec5cfdec7d4e0c5d1e1c6d3e3c9d3e2cad6e2cdd6e2cfd7e3cdd7e1cbd8e2cad5e1c9d3e2c7 *d1dec4cfe0c0cce0bbccdebcccdbb9cbdbb9ccddbbcbdfbbcddfbccdddb9cbdeb9c9deb9c9dcb6 *cadbb7cadab6cbddb8caddb7c9ddb8c8debbcaddbdccddbccbddbbcbdcbdcbddb5c8ddb6c9dcb9 *c9d9b5c9ddafc7dbb0c7deb3c8dcafc7dbaec7dbb1c9dbaec5d9acc6daaec8dbaec6dab0c7ddae *c6dcadc6d9adc5dbaac5dbaac7dbabc6ddb1c8ddaec6dbafc6dbaec6d8adc6d9abc5daaec7dbad *c5dab0c8dcb1c7dbaac6d7b0c7daacc7d8acc3d9adc6dcadc6d9acc5dbacc6dcadc6dbb2c6dbb0 *c6daabc5d8acc4dbaac4daacc5dbabc5daaac3d9b0c6d9abc6daaec6dbabc4daabc3dbabc3dca9 *c4d9a9c4daabc4dbadc6dbafc7dcaec6d9abc3d9abc3d6a9c1d7a7c3daaac3d8aec4d9a8c0d7ac *c4d9aac4d8a7c1d9acc3dba8c3d7aac0d8aac3d9a8c3daaac4d9adc6d9a9c2d8a9c1daabc2d8ab *c2d7aec3d8aac3d8aec6dba5c2d9a8c2d8abc1d9abc3d9aac1d9abc2daabc1d8adc4d8abc2d7a5 *c1d8acc3d9aac1d8aac2daa5bed7a8c1d7abc1d8aac1d9acc4d9acc3daadc4d8adc3daaec3d8ab *c1d7aac3d9abc1d7adc3dbb1c6dbacc6dbaec5d8afc4dbabc1d8aec5d8aec5dbb0c6dab1c5dbb1 *c4dab4c8dbb1c6dcb3c7ddb5c9dbc0cedec2cedec7d1e0cad7e3c8d5e1c3d0e0c5cddec2cedec4 *d0e1c6d1e1c8d2e0c5d1e0c3cedfc3cdddc4d0dec4cfddc0cad9bcc8cbc2ccd0c5ced39bb3cba0 *b6cc9fb6cfa3b8cd9cb6cc9ab6ce9bb3cd9cb3cc9ab2cd9eb1cca4b6d0a0b4ce9bb4cf9cb3cea1 *b3cd9ab4cb99b8d099b5cc9ab7d097b2ca9cb6cd96b2ce99b6cc9db3cd9cb4cd9cb3cd9db2cb9a *b5cd9eb6cda5b6cea0b8d19cb5cf9fb6d0a1b9d1a1b4d19db9d1a3b6d2a3b6cfa0b7d0a0b8d1a0 *bacea3b9d0a1b7cf9eb7d0a7bbd29fb1d0a4bbd39db7d0a3bbd1a3b9cea3b7d2a0b6d1a2b6d1a4 *bad3a8bbd5a5b7d1a6b9d2a3bbd1a3bad3aabcd1a6bbd3a9bdd5a8bfd6a4bcd2a3b9d3a4bdd3a4 *bed69cbbd39bbad29bb8d39ab9d39bb9d29ab8d09dbbd4a0bbd1a0bbd49dbbd39dbad49fbcd2a0 *bed5a0bbd5a2bdd89bbbd89ebcd49cbbd49ebdd59bbdd7a0bdd5a0bdd69ebcd3a4bed3b1c3d8b3 *c7ddbbccddc2cddfc1cddebac9dcaec6dbb1c7ddb0c3d9b0c6ddb5c7dbb2c7dab3c9ddbac9ddba *cadebacadeb6c9dbaec7ddafc7daafc6daaec5dbabc5daa0bfdaa3bfd7a3bcd7a1bed89cbed8a3 *c1daa0bdd89fbdd6a2bfd7a8c3dbacc6ddaec7deb2c9dfb0c8dda7c4d9a2bfd89fbdd8a1c1d998 *bcd599bbd7a1bed7a2c0d4a4c0d8a0c1d89dc1d7a8c1d8b1c5dbb9c7dbbdccdec5d1e2c9d3e2c9 *d3e1cbd3e3cbd6e4cedae5cdd8e6ccd6e6cdd6e5cbd7e2c9d6e2c5d2e3c6d3e3cad6e2c8d4e2ca *d6e2cbd5e3c9d4e3c9d4e1cbd8e3ced8e5cfdae4d1dbe4cfd9e4ced9e5d1dae4d1dce5d1dce5d1 *dbe6d1dae3d1dbe5d1d9e4cedae4d0dde3d1dce6d1dce6d0dbe7d3dce5d1dbe7d1dbe5c8d3e3b6 *cbddb4c8d8baccdebeccdbc1d0dfc1d1e0c5cfdec0cddebbcddbbacbdfb7c8dcb3c8dcb2c7dbb2 *c7dcb1c8dcacc6dcb2c8dbaec6d8aac3dab2c7dbb7c9dbbeccdcc6d2e1c8d1e2cad4e2cbd8e1c9 *d7e2c9d6e2c7d3e2c9d4e2cad5e2ccd8e4cdd9e5ccd8e3d0d9e4cbd7e4ccd6e3cad7e4cbd8e4cc *d6e3cfd7e4cbd5e3c8d5e1c3d1e0c0cee1c4cee0c3d0e0c3d0dec5d3e2c4d1e2c3d1e0c3d0e1c1 *cee0c2d0dfc6ceddc5d1e0c4cfe2c1d0e0c1cee0c0cfdec1d1ddc1d1e0c6cfe2c6d1e1c8d4e2cc *d6e1cdd7e2cfdae4cedae3d0d8e2cdd8e2ced9e4cfd9e4d1dae6d1dbe6cfdbe5cbd6e5c7d3dec3 *d1dec3cedfbfcddbb7c9ddb7c7dcb6c9ddbbc9dcbfcbe0bfccdebdcddbc3cfddc1ceddbfcddcbd *cadcbac9dcb8c8dbb5c7dab1c6d8b1c5d9aac4d8abc3d8a8c3d8adc5daabc3daafc3d9abc2daa9 *c3d9aac5d8adc5daabc4d9aec4ddadc6dca9c4dbacc3d9abc4d8b3c6d9afc6dbb1c5dab4c5d8b1 *c6d9b1c5dbb6c7dbb7c8dbb9c7dbbac7dab9c9dab9c7d9bdc7d9bdcaddc0ccdbbecddbc2cee0c0 *cfddbccbddbdcadabbc8d9bac9dbb9c7dbbac8d9b9c7d7bbc9d8bbc8d8b8c9dbbbc9dabdcadbc0 *cbddc1cddcc1cfdec3d0e0c3cfdfc3cedec6d0ddc6cfe0c4cedfc5cfe0c3cedfc4cfdec7d2dfc6 *d2e1c9d6e2cdd6e3cfd9e5ced8e3d0d8e5cdd9e3d0dae5ccd8e3cfd9e2cfd9e3cfdae3ced9e2cc *d4e2c7d1dfc7d2e0cad2e0c8d2e0cad3e0c7d1dfc9d1dfcad2e1c9d4e3c9d3e1cbd5e2cdd7e2cb *d6e0cdd8e4cbd4e2ccd6e3cbd6e2cbd2e1cad2e2c8d1e0c8d1dfc6d0e1c3ceddc6d0dfc4cedfc5 *cddec1cbdcc3ccdcc2cddec5d0dec8d2e1c9d4e2c9d3e1c9d3e1cad3e3cbd3dfc9d1e0c7cfe1c4 *d0e0c7d1dfc9d3e1cad4e2cbd3e1ced7e4d1d7e3d1dbe3d1dbe4ced9e2d1d9e4cfdae4cfdae6d2 *dae2d1d9e3d1dbe4cedbe6cfd9e2c9d6e2c9d2e0cad3e2c6d3e1c7d1e0c3cedec4d0e0c6d1dfc8 *d1dfc7d2e1c9d1dfcad2dfc9d2e1c8d5e2cad6e2cad6e1cdd7e2cdd7e2ced8e4ced7e3ccd5e0c9 *d3e0c2d0dec2cedebacbdebcccdebccbddbccaddbdcbdcbfcddebdccdcbdcaddbecbdeb9c9debb *cbdcbbcadabbcbdebdccddbbcbdbb7ccdebbccdbbbc7ddbac7deb9c9ddbbcbdebecddebbc9dcb7 *cadab6c8dcb3c8dcb0c6dbb4c6d9b4c7ddb6c7dcb0c7deb0c7dbb0c7daaec5dbacc6d9aec6d9af *c6dbafc7dcb1c7daafc6daacc6daacc6d9aac6dbadc5d8aec6d9abc6dbb0c6d8b0c6dab1c6d9aa *c6daabc6daaec3d9aac4daaec5d9abc6daaac2d8b2c4d8aec5d8adc6d8acc5d8aec6d8aac4d8aa *c4dab1c4dbaac4d8aec4dcadc6daaec5d7acc2d8abc4d8adc4d9abc3daabc3d9aec3dbafc4dbab *c6d9afc5d9a9c3d9aac3daaac4dba8c2daacc4d8aec4d7a8c2d6acc3d6a9c2d8a8c3d6abc3daad *c2d9aac2d9adc4daacc1daaec6d7aac3d9a8c1d8a9c2d7abc0d8aac3d6adc0d7b1bfd7abc0d7ad *c4d6a5bfd3a6c0d5aac1d8acc3d9a9c1d8aabfd9adc1daaac1d9abc0d5abc0d8abc0d4a7bfd7ac *c0d7abc0d8aac1d7acc5daadc3d9a9c3d8abc1d8acbfd6aec0d6afc1d9aec4dab1c3d9b1c2dbb1 *c5d8adc3d8aec1d5aec0d8afc4daabc1d9aec3dbabc1dbb1c3dcb1c3d9b3c7d9b3c4d5b2c3d8b6 *c5dbb2c3d7aec4dab7c6d9b3c7dbb5c7d8b3c6d9b6c6dbb5c8d9bdcbdcbfcddcbfccddbdc9ddb7 *c5d8b7c9dabcc8dabdcaddbccadbbcc8dabbc8dabdc9dabccbddc2c9d6bec4c9c3cccfc6cfd294 *b4c99fb5cc9bb4cb99b5cb9bb6cd99b6cea1b7cf9bb4cca0b7ce9eb7cf9db3cb96b4cb99b4cba0 *b4cc97b3cca1bacf9bb6cf99b6cc93b7d192b4ce97b5cd96b4cc9cb6cc9db8ce9bb6d09cb9cf99 *b8ce99b6cda1b6ce9bb4cc9db6cfa0b6cda0b9d29fb7d1a4b8cf9fb7cea4b9d1a3b9cea1bacea2 *b8cfa2b8d1a2b7d2a3b8d09fb9cf9db3cca0b7cea0bbd0a1bbcea4bbcea7bbd1a3bcd2a5bbd0a1 *b8cca2b7cca4b8cea5b9cd9fb9cfa0bbd4a4bdd4aabed5a9bdd0aabcd1a8bed4a6bbd1a4bbd3a4 *bbd5a3bdd6a3bfd5a4bed6a3bfd59cbad19bb8d19cbcd09dbbd29ebbd29fbcd3a0bad3a0bcd5a1 *bcd2a3c1d3a7bed5a1bdd79fbcd4a2bdd5a2bdd4a5c0d59cbdd89bbdd69dbcd59ebad49ebdd4a2 *bdd39fbdd4b1c7dab6cbddb2cadaa9c3d99fbcd79dbed8a3c2daa4c2d9a4c1d9a3c3daa7c6dcaa *c6dcaac3daa2c1dba3c1d6a4c1d3a4c2d69fc1d89fc0d69fc1d99abdd79cbcd69fbdd69bbbd19d *bdd69dbed59cbfd79bbdd69abcd79ebed7a0bdd59fc0d79ebdd69dbdd69fbfd49bc0d79ec0d79e *c0d89abcd799bbd8a2c1d79cc0d69cbdd79dc1d59dbfd6a4c3daadc5dbb9c9dcc0cedec3d3dec7 *d3e2c9d4e3cad5e2cad8e3cbd7e3cbdbe5ccd8e5ccd6e4c7d4e3bbcde0b6cbdeb7cce0bdd0dec3 *d2e2c4d4e3c6d3e2c6d3e1c7d4e2c9d4e4ccd8e3cddae4cddbe6cedae4d0dbe5d0dae4d0dbe5cf *dbe3d0dbe3d0d9e3cfdbe5cedae4cedbe5d0d9e5ccd7e5d0dae6d0dbe5d1dbe4cedbe5ccdce4c3 *d3e2b6cbddb5c7dcb2cadcb7cbddb8ccdebbcfe0bccedeb5cadbb3c7dbaec7dbaec6daadc6dbad *c6dbb0c7d8aac7d8acc7daacc6dbacc6d9adc5d9b4c8dbbccdddc3d0dcc6d3e1c6d2e1c9d5e2c8 *d5e1cad6e4c9d5e3c7d2e1c6d3dfc6d3e1c7d4e1c9d7e4cbd9e6ccd6e5cbd6e5cbd8e4cad6e2ca *d6e2cbd7e3cad8e3cbd6e3c6d3e1c4d1e0c3d1dec1d0e0c2cfdec3d1e1c5d0e0c1d0e0bbceddb9 *cbddbacedebdcfdebfd0e0bdcde0bdd0debdd0debbcddcb8cbddbacddebdcfe0c2d0e0c6d4e0ca *d5dfcad8e2cbd7e1ccdbe2cedbe4ced9e4cdd9e4ced9e4cfd8e4ccdbe4cbdae3ccd8e2ccd8e0c8 *d7e0c3d1e0c3cfe1bdcddeb8ccdeb0c7d8b5c7d8b7c7d9b8cbdcbeccdcc1cedbc0cedfc3cedebd *ccdbbbcbddb6c9dab9c9dbb4c8daaec7daadc6dcaec5d8abc5d9abc5d9abc6d9aac6d9a8c3d8aa *c6d9abc5d9abc5daaac5daa9c4d9a9c4d9a8c4d8aac3d8abc3d8adc4daadc5dbb2c6dab2c6d8af *c4d7b0c6d8aec7dbb1c7dcb7c7ddb3c7dbb6c7d8b9cadcbcccddb8cad9b9cad8becbddc1cbdac1 *cbddc1cedec0ccdbc1ccddbdccdbbdc9d8bcc7d6bbc8d8bac7d8b7c8d8bbc8d8b6c9d8bacbdbbe *c9dabecbddc0cddfc0ccdec2cfdfc2cddec1cfdfc3d1dfc4d2e0c5d0dfc3d0dfc5cedcc6cfddc5 *cddcc3d1dec6d3e1c5d4e0cbd7e4cad5e2ced7e3ced8e2cbd6e2ccd8e1cbd5e0ccd9e2cdd8e3cc *d8e3c7d3e0c6cfdec3ceddc6cfdec6d1ddc6d2e0c4d3e1c9d4e2c7d3e1cad2e0cbd4dec9d3e0cb *d7e4c9d6e0cad7e2cbd6e0cad6e2c9d5e2c8d3e1c9d1dfc6d1ddc5d2dfc6d1dfc6d1e0c6d1e2c6 *d1e0c3cdddc2ccdcc3ccdbc4cdddc4cddec5cedcc8d3e1c9d5e2cad6e0ccd6e2cbd4e3c6d3e2c5 *d0e2c3d1dec5d2e2c6d3e1cbd8e3ccd6e0ced8e1d1d8e5d2dbe5d2dbe3d2dae5cedbe6d1dde6d0 *dce6d1d9e4d1d8e4d0dbe6cfdae3ccd8e2cbd8e2c9d3e0c7d3e1c5d3e0c3cfdfc3cedec4d1dec7 *d0ddc7d2e1c6d4e0c7d5e3cad7e0c8d4e2c8d3e0cad4e1cad5e1cbd7e1ccd7e3ccd7e3cbdae3ca *d6e2c6d3e2bdcbdebacbd8b7caddbaccd9bbccddb6cadcbbccdebdceddc2ccddc3ccddbfccdcbb *ccdbb8c9d9b8cbdab8cbdcbbcdddb6cbdfb9ccdfbccbdeb8c9ddb6c9dbbbccdbb6caddb8cbddb6 *caddb7cbdeb3c8daaec6d9aac5daafc6daaec6dbadc6d9acc6daadc6dbadc6dab0c6d8acc5daab *c6daabc6d9abc6dbacc5d9adc7d9b0c7dcadc5dbaec6dbaac3d8adc3d8aec6d8aac7dcacc6dbae *c7daacc7d9afc7daaec3d8a9c6daabc5d8adc4d7abc3d8aec6d8aec5d8adc6d9aac4d8adc5dba5 *c2d8a9bbd3aec3d8acc5d7acc6daa9c5d9adc3d9abc4d8a8c3d8aac3d7a8c4d8a8c3d9a9c3d7aa *c3daa9c6daa9c4daabc3d8abc4daabc3d7a9c0d5aac4d7aac6d9a6c3d8aac3d8a9c3d8acc4d9aa *c5daacc0d7a9c3d9aac3d8a9c1d8aac3d8adc4daa9c3d9adc3d9aac0d6a4c3d8acc4d6abc1d7ad *c0d7acc0d7aac1d8aec2d4a9c1d8acc6d9a5c1d7a4bfd7a7c0d6abc1d6a9c1d8a9c1d8aec1d6a6 *c0d8abc2d6a7c0d4a4c0d7abc3d8a4bdd5a6c0d8acc4d8acc3d9abc1d7a6c2d8acc2d9adc2d7af *c3d4afc3d7b0c3daaec3d8afc3d7aec2d6aec3d6a6c3d7abc3d5afc4d8afc4d9afc7d9b6c6dab4 *c4d8b1c7d8b1c4d8b1c6d7afc5d8b3c6d8b4c9dbb6c6dbb8c6d8b3c6d8b6c8d8b6c7dab6c7d9b7 *c6d6b4c6d7b4c7d8b4c8dab3c7d9b8c9dabdc8d8b8c6d6b5c7d7b4c9d8b7c6d4bcc6cac4ccd2c6 *d0d4a3b6cba2b8ce9cb3cb99b2cb99b4cb9bb4ce9eb5cc9fb6cf9eb5cc9fb8ce9fb6cba0b4ce9c *b3ce97b1ce99b3cb9eb6ce97b4cc9cb5d099b7cc99b5cf97b2ce97b5cf92b2cc9eb5cb98b3cf9b *b5cd9eb6d0a1b8ce9db6cc9fb4cea0b6cfa4b5cfa1b6cfa1b8cfa0b7cd9dbacea3b9d0a4b8cfa1 *b8cda3b7d09bb4cda3b7cea1b6cca3b6d1a5b9d1a0b8cba3b7d0a4b8cea5bcd1a4b7cea4bbd0a7 *bdcfa4b6cda7bbd0a4bbceaabbd2aabbd2aabdd2a7bbd3aebcd2aebdd1adbdd2aebfd0aebed5b0 *bdd4aec1d3aabdd4a8bdd2a3bed4a1bdd39fbbd3a1bbd2a9bed3a2bbd2a2bbd49fbbd4a7bdd3a6 *bdd3a4bcd3aac2d7a8c0d3a6bcd3a4bdd3a4bbd3a6bcd3a3bdd4a4bed69fb9d4a3bdd5a0bbd19e *bed19dbbd49bbdd3a3bfd8a4bed8a2bdd3a1c0d5a0bdd59abbd599bdd4a2bdd69fbcd3a0bdd6a1 *bdd7a4bdd79ebbd89cbbd79ebcd59dbcd6a0bbd4a1bdd59cbcd49ebdd69dbdd69dbbd69bbdd59b *bad39ebbd69cbbd59ebed69dbcd49dbdd89ebcd69dbcd79dbed89fbdd59bbdd699bcd39cbed49e *bcd6a3c0d89cbed8a1bdd8a0c1d89cbfd69abbd6a0c1d79cbfd6a5c1d8aec3d9bcc9dcbecee0c6 *d1dec8d3e0c9d3e1cad4e0c9d3e3cad6e5c9d6e3c9d4e4c6d2e2c1cee0afc3d8a9c3d7adc6dbb1 *c8dbbacadcbacddfbecddfc4d1dec9d2e1ccd5e2ccd8e2ccd9e5cfdbe5cedae4d0d9e6cfd9e4d1 *dae4d1dbe3d1dae4d0dbe5d0dae4cdd8e3cdd7e3cad8e4ced6e3d1d8e3d0dae5cfdae3ccd8e3c9 *d8e2c0cfe0afc6dbacc2d9aac5d8b1c7d9b6cad9b5c9dbbbc8dcaec6d8a8c5d9a7c2d9acc7dbab *c4d9aac6d9aac4d8abc3d9a9c4d8aac2d8aec6dab4c7d9bac9dcbeceddc5d1dec7d3dfc8d1e1c9 *d2e1c7d3e2c7d4e2c8d4e2c6d2e3c9d5e0c9d3e0cad4e2c8d4e2cad5e3c9d3e0c9d4e3c7d4e1cb *d6e4cbd6e2cbd4e2c9d5e2c9d3e1c6d3e3c3d1dfc2cee0c3cfe0c3d1e0c7d3e0c9d3dfc3d0e0c4 *d0e0bdcee0bbcedebfcbddbcccdebaccdfbbcdddbacdddb7c9dbb7cadebcccdfbfccdfc6d1e2c8 *d3e2cbd5e2ccd7e1cdd7e2ccdae2cdd9e4ced8e3cfd8e2ced9e4cedae4d0dae3ced9e2cbd8e2c7 *d4e3c7d6e2c3d2e1c0cce0c0cee1b8cbdfb3c7dbb6c8d9b3c6dabcc9dbbcc9dec0cdddc1cedec0 *cee0c1ccdcbbccdbbbccdbbbc9dcb7c8dbb4c8dbafc6d9afc5daaec5dab0c6d9aec6d9abc5d9a9 *c4d9acc6dbafc5daaac4d8acc5d8aec5dbafc6dbafc6d9aec2d8b0c2d7adc4d8acc3d7afc5dab1 *c4dcb0c5d7b3c6d8b3c7d8b5c8d9b8c7d8bbc9dcb6c9dbb7c7d6bbcadcbdcbdcbccbdcbfcbdbbf *cbdbc1ccddc2cbddc0ccdbc3cbdbc1ccdbc0ccdbc2ccd9c1cbdcc0c9d9bdc9dabdcbd9bac7dbbc *cbdbc1cbdcc0ccdcc4cfdec3cdddc6d1ddc6cedfc5cddec5cfdfc6cedec7d1ddc6d0dfc5d1dec4 *cfddc6ceddc5d1dfc4d0e0c6d1e0c9d2dfcbd4e2c9d6e2ccd4e2c7d1e0c9d3deccd5e0ccd6e2ce *d8e3ccd6e0c9d3e0c7d2dec6d2e0c4cdddc6d0dfc6cee0c6d1e0c7d2e0c7d4e0c9d4e1cbd4e2cb *d3e2c7d2e2c8d2e1ccd3e0cbd5dfc9d2dfcad4e0cad4e2c9d3e1c9d2e0cbd3e0cbd2e1c9d2dec8 *d3e1c6d1dfc7d1dfc6d0dec5cedec5ccddc2cddec6d0dfc8d2e2c9d6e3cbd7e3ccd6e3cad3e2c6 *d0e0c6cedec8d1e0c5cee0cbd4e1ced8e5d0d8e3d1d9e3d2dbe3d2dbe4d5dbe4d1d9e3ced9e3d0 *dbe5cfd8e5d3d9e4d2dbe5d1dae5d1dbe3cfd8e3c8d3e0c3d1e0c7d0e0c7d2dfc7d2e1c6d1e0c9 *d3e0cad3e1c8d3dfc8d2e2c8d2e0c6d1e0c7d1e1c9d1e0c7d2dec7d3e0cbd5e0cbd5e3cad5e2cb *d5e2c7d3e0c1cfdebacaddb4c8deb6c9ddc0cddcc1ccd8bac9dcbfcddfbccbdbc1ccdebfcdddc1 *ccddbfcbddbbccddbdcbdcbac8dcbbcbdcb6c8d8b9cbddbbcbdeb9c9debccbdcbbcbdbbac9dbb6 *c8dab5c8dab3c9dcaec6dbaec6dbacc4dbaec6d8adc5d9aec6d9acc6d9a8c5d7abc5dbafc6daae *c4d9afc3d7acc5d7adc6daaac3d7aec6d8aec7dbaac4dba9c3d8aec5ddaec4daafc5d8acc3d6aa *c5d8adc5d7a9c4d9acc7d9acc6d8afc6d8adc3d8aec4d6aec6d8a9c3d8abc3dba7c3d7aec3d8ae *c3d8adc3d7acc4d8aac3d6aac2d6aac2d6abc3d8a8c4d8a9c3d7acc4d9a7c1d8a9c3d8abc3d6ab *c3d8a8c3d8acc4d8adc2d7abc3d8acc2dba9c1d8adc2d7aac0d6a9c1d7adc3d8acc3d7abc2d8a9 *c2d8aac3d9acc1d5a7bdd5aabdd6acc0d8abbfd8abc3d7a9c0d8abc2d8a5bed8acc1d6a9bed2aa *c0d6acc0d7acc1d6aac0d7aabdd6adbed9a9c1d7acc1d8aabdd4acbed7abc1d6a9c0d8a7bed5a9 *bdd8aac1daa9bed5aac0d3abbfd6acc0d6aabed6a9bfd4a6bfd7aabed6aac0d9a4bdd4aac0d3aa *bdd3adc1d7b2c6d4b1c3d9b0c2d8b1c3d8b1c4d9b0c1d7aec1d6abc3d8afc1d8b2c4d6b1c3d8b5 *c6dbb6c6d8b7c7dab9c7d8b1c6d7b4c3d7b5c3d8b1c6d9b1c3d6b7c6d8b7c8dbbac9d8bacadab7 *c6d9bac6d9b7c6d9b5c3d8b9c9dbbac4d9b9c6d9b8c7d8bbc8d8b5c6d7b6c7d7b7c0ccbbc5c9c3 *cbd0c6cfd4a1b9cc9eb5cda0b6cf9eb7ce99b6cc9bb6cda2bbd1a5b8d19fb6cc96b5ce9fb8d298 *b6ce9ab4cc95b3cc9ab4cd9ab5ce97b5ce94b5d08eb6ce92b6d298b3cf9ab8d396b4d097b9cd97 *b6cf97b5d19ab6d2a1b8d2a4b9d0a6bbd1a3bcd39db6cd9db7d1a1b8cfa0b6d0a0b7d1a1b6cfa3 *b5cfa2b7cfa0b9d09db9cda5bbd1a1b7cfa2b5d1a2b8cf9fb8cea5bcd1a0bacfa4bbd3a7bbd2a3 *b8d0a4bbd1a2baceaabbd1aabdd0acbacfacbbceaabbd1b1c0d4adc2d7aebfd3b0c1d3b1c1d5b4 *c2d3aec1d6aabcd6adbed6a8bed5a5bdd3a7bfd5a3bcd4a5bed4a6bdd5a3bcd4a5bbd3a4bbd3a3 *bdd3a9bcd3a7bcd3a1bbd3a9bed4a8bcd4a6bcd6a8bed4a6bfd4a6bed5a6c0d6a3bed89cbbd4a1 *bcd39ebdd8a0bdd69cbdd79fbbd6a3bfd59cbfd79fbfd6a4c2d79dbdd79bbdd7a0bed79dbcd3a1 *bdd69dc0d89cbcd59cbdd89ebdd79dc0d69dbfd798bed79bbcd69cbcd89fbdd69dbdd89ebcd699 *bcd69cbcd6a3bfd79cbdd69bbcd69dbdd69bbdd7a0bdd699bbd69cbfd79fc0d69dbed59cbcd49b *bdd79abcd79abcd798bbd69dbdd79ebdd69ec1d69dc1d89ec0d7a1c0d89dbcd8a6c3dbb7cadebf *cedfc3d1e1c6d2e2c6d4e2c8d3e5cad5e4c9d5e3c7d3e2c1d1e1bfcee0abc5d8a8c2d8a6c3da9e *c1d9a3c1d7a9c2dab0c6dab4c9dac2d0dec7d4e2cbd7e3cbd9e4cdd8e4cedae3d0dae5ccd8e5cf *dae4cfdae4cfdce6cfdce6d0dae5ced9e6cdd6e4cad7e2cedae3ccd9e4ccdce5cedbe6ccd9e5ca *d4e4bdd0e0b4cbdea4c3d8a6c3d8a6c3dbaac6dbb1c9dfb1c9dfb1c9dbaac6d6a9c5dba4c2daa4 *c2d7a6c3d9acc6d9aec5dbaec5daaec7d9acc6daaec6dbb4c7d9bacadbbfcedfc5d2e0c8d8e3ca *d6e5c8d3e2c6d3e2c8d5e3c9d5e1cad6e3ccd8e4cbd6e3cad5e4c7d4e4c4d0e2c7d3e1c6d3e2c5 *d3e3c9d4e2c9d8e3c9d7e5c9d6e2c8d5e2c6d3e3c5d2e2c3d1e1c5d1e0c5d2e0c5d3e3c7d6e2c6 *d3e2c3d1e1c3cfddbdcee0bdcdddbbcbdeb8cbdbb3c9ddb2c8deb7c9deb7c8ddc0cfe0c2d2e1c7 *d2dfcbd6e2cdd8e4cdd9e5cedbe4d0dce5d0dae3ced8e3cedae3cddae3ccdbe3ccdae4ccdae4cb *d6e3cdd8e3cbd6e2c6d4e1c3d1e0bdcfdfaec7dcaec7ddb6c7dbb6cbdeb8c9dcbbcbdac1cddbc0 *cedebdcfddc1cddec1ccdcbfc9ddbac7dcb8cbddb3c8dab3c7d9aec4dbabc5daacc6d9b0c7d8af *c6dbb2c6dbb0c6d9b0c6dcb0c4d8b1c5d6b1c6d9b3c6dab4c5dcb3c6d8b5c5d8b2c7d9b7c8d9b2 *c6d8b4c6dcb1c4dab5c7dab7c7d8b7c9dbbac8d9b7c7dbb9c9ddbdc9d8bdcad8bbcbdbbeccdbbe *c9dbc0ceddc0cddfc3cfdfc4cedbc3cedec2cdddc3ccdec2cedec1d0dec1cbdebec9d9bdcbd9bf *ccd8bfcbd8c0ccdcc1cdddc2cfddc6d2e0c6d1e1c6d1dfc7d1e0c6d1dec7d2e1c7d1e1c8d1e1cb *d1e2c6cee0c7d1e0c7d2e0c6d3e1c6d1e0c6d2dfc9d4e0c9d3e2c9d7e2c9d2decbd6e2c9d5dfcb *d6dfcbd7e2ccd8e2cad7e5cad1e2c7cee0c6cee0c6d2e0c6d1e1c6d1e1c7d1e0c9d6e3cad5e3c9 *d3e0c8d2e0cad3e3c9d4e0c7d1e0cad6e1cad4e2c8d3e2c9d3e3cbd3e1cad6e1ccd8e1cbd6e2ca *d5e3c7d3e1c9d3e1cbd3e2c7d1e0c7cfe1c5cfe0c7d0dec6d1e0c9d5e3ccd7e2ccd6e2c9d3e4c7 *d2e0c9d3e2c9d4e1c8d4e0c7d3e0ccd6e1ced9e2cfd9e3d1dce5d1dbe6d0dbe8d2dce6d2dbe4d2 *dbe5cfdbe5d3dae4d2dae7cfdbe3d1dbe3cfdae5cad8e2c9d6e2c7d1e0c7d2e2c8d3e2c7d5e1c6 *d3e1c7d2e0c6d2e2c5d3e0c7d2e0c7d1e0c6d1e0c3cfe1c4cedfc1cddfc4d0dfc6d2e0c8d4e0c9 *d4e2c7d3e2c4d1dfbeccdebacadcb6c7ddb9cbddbbccddbacddfbccbdbbbcbddbacbdcc1cdddbe *cbddbfcbddbbccdcbaccddbdccddbbcaddb6c9dcb6c8ddb8c8ddb8c7dbb7cbdbb6c9dbb7ccdeb2 *c9ddb4c8deb1c8dcb1c6daafc7dab1c9dcaec6dbadc6d9a8c6dbacc5dbabc5daaac6d9aec6daae *c5d8b0c5d9acc6d7adc8daafc6dbaec5dbaec6d9afc5d8aec4dbafc6d8acc6daaec7daaac7dbae *c6d9aec5daabc5d9adc7d8afc8ddaec6d9aec7dbaec7d8aec6d9aac5dba9c2d8afc4d9acc6d9aa *c6d8adc5daaec7dcaac3dbaac3daabc3daadc4d8afc4d7acc4d8abc3d8abc3d8aac2d7acc5daac *c4d9a9c2d9aac3d8aac3d8abc6d8aac4d9abc5dca9c2d9abc2d8acc4d7aac1d7abc3d8aac1d7aa *bfd8abc1d8abc3d6aec6d9afc3daabc0daaec1d7aac3d9aac3d8adc6d8a7c2d8abc3d8acc2d8ad *c3d8aac1d6aebfd8aabdd6acbed6adc1d4a6c1d6a8c3d8abc1d9a8c1d7abbfd8adc0d7aabdd3ad *bed6acbdd7a9c1d7aec1d8acc4d5aec2d4b1c3d8aec0d6aabdd3aac2d8acc2d8a8c0d6abc1d6a6 *c1d8a9c2dab0c3d6b0c5d9aec3d5b4c4d8b1c2d7acc1d6b1c6d9adc3d8b4c7dbb5c5dab5c7d8b3 *c7dabac9d9bbc9d8b9c9dcbbc7d9bcc7dabac7dbbbc6d7b9c7d8b8c6d6bbc5d8b9c6d8bac9dbb6 *c6d9bac6d9bbc5d7bac6d8bcc6dabcc8d9bbc4d6b7c6d8bbc8d9bcc7dabbc9d8bdcbd9b8c3d0bc *c8ccc4cdd1c5d0d59eb6cb9fb8d09bb7cda1b8d09eb6d09fb6cca3b9cea1b9cfa1b7cfa2b5cd9d *b3ce9cb4cd9db2ce99b2cca0b8d196b3ce93b8d28cb1ce8db3ce91b5ce91b3cf92b7d193b3d290 *b6cd96b4ce8eb2cc96b1cd9eb7cd9eb8cf9eb9cfa0b8cda2b7cea0b6cca0b5cfa2b4d09fb6cea2 *b4cc9eb4cf9db4cea2b9d2a1b6cea1b8d09cb3cfa2b6d1a2b8d1a1b7d0a0b8d0a1b9d1a5bad0a7 *b5d1a5b9d0a6b9d1a4bbcea6bbd2a6bdd1aebcd3acbdd3adbdd2afc1d3afc0d6aebfd6afbfd3af *c0d3b2c3d8b0c3d3aec1d6b2c1d6afc0d6aebed4a6bdd3a4bbd3a3b9d1a3b9d3a2bbd2a2bbd3a2 *bcd3a2bcd2a2b8d19fb9d19bb6d1a4bbd4a2bcd49dbcd6a2bdd5a3bdd39ebcd3a4bed89ebbd69a *bbd399b9d19dbad39dbdd49cbdd39ebdd6a0bcd79cbbd598bcd39abdd59fbbd5a1bdd79cbbd49b *bcd89ebed8a0bcd79dbbd89ebcd7a2bfd8a0bdd69abdd599bdd69cbdd599bcd69bbad399b9d699 *bad49bbdd49bbcd6a1bdd79bbcd89ebdd69ebcd49abcd698bbd89dbdd899bbd59cbbd797bcd69b *bed79dbfd699bbd698bbd699bcd697b9d498bed89dc0d79abbd39bbbd3a4c1d89dbdd8a2c0d7ab *c6d9bbcbdfc0d1e0c1cee0bccddebfcee0c4d1e0c3d0e2bdceddb1c7ddaac2daa5c1d6a5c1d6a0 *c0d7a2c2d99ec0d8a6c2dba9c4dbb5caddc1d0e0c7d4e2cad7e2cad8e2ccd9e3cbd9e5cbd6e2ce *d6e5ccd7e4ced7e4cfdbe3ced9e3cbd8e4cbd8e5c8d5e3c3d3e3c6d3e2c6d2e0c4d3e2c1d2e3bd *cfe2b6cce0acc7ddaac3dbacc4dbaac4d8a4c1d8a3c1d7a4c3d4a5c3d8a4c1daa0c2dba4c1d8a3 *c0d89fbfd6a6c1d7aac7dcb1c6dab3c5daaec6daaec7ddafc6dab4c8dbbacaddc1cdddc2d1e1c5 *d3e2c8d4e2c9d5e4c9d6e4cad5e2c9d4e3cad5e2cad6e2cad6e3c7d3e2c5d1e4bdcde0bfd0e2be *cedec3cfdfc5d3e1c7d4e2c5d1e0c6d2e1c6d2e3c3d3e2c6d2e2c6d1e0c0cddec1d1e2c3cfe3c0 *cee1c1d2e2c4d2e1c5d1e3bed0e0bfccdcbcccddb6cbddadc6dbadc6dbb1c7dabacbdfc0cfe1c6 *d2e1c7d3e1c9d7e3cad8e4ccd8e3cddae3ccd9e4cedbe5cfd9e6d0d9e4cfd9e3cbd6e2cbd7e3c8 *d6e3cbd6e2c7d4e2c6d3e5c2d1e2c1cfe0b6c9deaec7daaac6dcaac7dbb1c8dcb6c7debbcbdec1 *cddcc1ceddc1cedfc0cddfbdccdcbacbdbbccbdcb6c6ddb9c9dcb1c6d8b0c5d8acc7dbaac4d9aa *c5d8abc2d7b2c7dab5c5dab7c6d9b6c6d8b6c9dbb3c7d8b5c7dbb7c8dbb5c6dbb7c6dab8c7d8bd *cbdab7c6dab8c7d9b8c8d9b5c8dbb8cbdbbbc9dcbdc9ddbbc9dbbbc7d9bdc7d5bbc6d9bbc7dcbb *c6d9bdc9dabdcad9c3cddcc7d0e2c7cfdfcad0dec4cfdec4cfddc1cddec2cedfc2cbddc1ccdec0 *cbdbc1cbdbc3ccdcc1ccddc0cbdbc4cedec1cfdec4d1ddc8d1dfc6d0e0c7d0dec6d1dfc7d1dfc8 *d3e1c9d4e2c7d2e2c6d1e1c9d2e2c8d2e0c1d0dfc1cddec4d0e1c7d1e0c6d1e1c6d0e0c6d1dfcb *d3e2ccd8e3ccd8e2cbd5e3c9d3e0c6d1e1c0cfdfc3cfddc6d1e0c6d0e0c9d2dec7d2e1c7d2e2c7 *d1dec7d3e1c7d3e2c7d2e2c8d0decad3e1cad2e1c8d1e1c8d2e1cad2e1cad5e3cbd5e2cbd4e2cb *d5e2cbd3e0ccd6e0cad4e2cdd5e3ccd3e2cbd2e2c7d0dfc6d1e1c7d1e1c7d2e2c7d4e2c9d1e1c9 *d2e3c5d1e2c5d1e2c8d3e3c7d3e0c9d3e2cad6e3cfd9e4ced8e4ced8e3d2dbe7d2dce7d4dde6d3 *dde6d2dde6d1dce6d1dbe7d1dbe7cdd8e5cfd8e4cdd6e3cbd6dfc6d4e2c7d2e1c6d2e1c8d2e3c7 *d2e2c6d1dfc7d3e0c6d1e0c6cfe0c8d2e0c6d2e0c6d1e0bfcfe1c1cddfc0cddfbeccdfc1cedec2 *d0e0c3d0e1c3cedfbfccdebac9ddb4c7dcb5c7d9b3c8dcb6cadcb6cadcbbccddbbcbddbaccddbc *c9ddbccaddbbccddbccbdbbccbdab6c9ddb6cbdeb9c9deb6c9dbb3c9deb4c9deb5c9dfb2c8dcb1 *c9ddaec7dbafc8dcadc6d9aec6d8acc5d9aec6daacc3d9aac6d9b1c7dcb1c6dbadc3d9abc3d8ab *c2d7adc4d7afc6dbabc3d8aac3d9abc3d9a9c4d8a9c5daacc5dbacc6d8aac3d8acc4daabc4d9ac *c4d8afc4d8aac6d8acc7daaac5dba7c3d8adc4daadc3d9acc4d8b0c6d8adc3d8adc3d9abc3dbad *c5d8aac4d8acc4d8adc3daabc5d7aac4d6acc3d8aac4d8a7c3d8a8c2d9acc1d7acc2d8acc2d7ab *c3d7adc3d9abc3d9abc3daacc3d9aac3d6a9c2d7acc1d8adc3dbabc0d7abc2d7aac2d6abc4d9b0 *c3d6aabfd3aebdd6aac1d6abc2d5aec2d6acc1d9afbed7b0bed9aec3d9b1c1d8adbfd6a8bed8aa *bed6adbed8aac0d5adc0d8adbfd7aec0d6aabdd3a8c0d7a4c0d7aac0d7adc0d8acbdd6aebed8af *bed6aabed4adbfd5acbed6aabed3adbed3a7bdd3adbdd4aac0d8a8bfd4acbed4acbed3aabfd6a6 *bed7adc0d5abbfd6adbed6adc0d8abc2d8adc1d5afc1d8afc1d3b1c1d6b3c3d8b6c8dcb5c8dbb9 *c6dbbbc7d7b6c6d8bbc7d8bac9d8b9c7d7bac8d9b7c6d8bbc6d8bdc7d8bbc6dbb6c6dab9c6d9bb *c6d5b6c6d7b9c5d8bac7dbb8c7dabbc7d9bac6d5bbc6d9bbc8d9b8c7dab8c5d7bac4d8b8c4d6bb *c3cfbfc7ccc5cdd0c6ced2a1b3cb9bb4cba2b4ca99b4cba2b5ce9fb3cda0b4cc9fb4cfa1b6ce98 *b3ce9fb4cca0b4cc9ab1cd9cb4cd96b4cd96b2cc8fb4cf97b3ce90b3cc8db1cb95b4cf95b2d093 *b3ce96b2ce90b1cc93b1cc94b1cd9cb3cf99afc99cb2cb9db5cc9cb4cc9bb3cd9db1cc9fb2ce94 *b2cb9cb2c899b4cda0b4caa1b5cd9bb1cba3b4cca2b4cea0b5ce9fb3ce9fb6cc9eb5cca4b8cea4 *b6cba5b7cea4bacbaab6cda4b6cca4b9cfa8baceaabcd2a8bbcea9bbd0aabcd1b1c0d2b1bed1b4 *c0d3aec1d5afbfd3afc0d3aec1d6afbfd3abbad0aabad3adbcd3a6b9d1a0b8d0a2b8cf9cb6d19c *b4cf98b5d09cb7cea3bad19fbad19db9d19fbbd39cb9d19fbcd49fb9d2a0b8d2a1bcd2a4bad3a1 *bad396b8d19abbd19abad19cb8d29bb9d298b8d19dbbd39dbbd3a0bbd19cbbd498b8d39cbbd79c *b8d29cbbd698bad19bb6d19ebcd5a0bcd69dbbd39cbbd49fbad397b8d299b8d299b8d398b8d298 *b7d199bad398bad29abbd39dbad39bbad49ab9d299b9d299bad39dbcd79cbad397b6d29cbad3a0 *bcd59dbcd491b9d193b8d299bdd89dbbd49ebcd698bad59ab9d398b8d69bbbd39fbfd39ebcd59e *bbd4a4bdd8aac3d9b9cbddb9c9dbb3c6dab1c6dcb2c7ddb2c7dcb1c7dbacc3d99ec0d7a5bdd6a4 *c1d8a2c0d6a0bed7a3bfd6a3c0d89ec1d7b1c6dbbecddec6d2e0c8d3e1c9d2e2cad4e3cbd7e2cb *d7e3cbd5e3cbd7e4ccd6e2cbd5e0ccd5e2cbd3e2c8d3dfc6d1e2c3d1e0bbcddfbac9dfb0c4d9a9 *c4dba9c5d9a7c1d8aac3d8a7c3d7aec6dbabc2dba4c1d8a0bdd7a5c1d8a5c0d6a3bcd4a0bfd6a4 *bed6a4c2d6a1bed6a6c4d8aec4d8b1c6d9b4c4d6afc3d6adc3d7b1c5d9b6c8dcbac6dbbccbdbc0 *ccdcc5cfdfc8d1e0c7d3e0c9d4e2c9d4e2c7d4e3c8d2e0cad4e1c6d0e0c1cfdfbdcedeb1c9dbb0 *c9ddb2c7ddb4cadec1ceddc6d1e0c3cfdebdcfddc1cee0c4d1e0c3d1e1c1cfe0bbcbdec1cddfbd *ccddbccaddc1cee0c5d1e0c6d0e0bdcedfbdcee0bccde0b5c8dbafc7d8b2c6d8b4c7d9b6c8ddbe *cedec1d1e0c6d1dfc8d1e0ccd6e3cdd6e2ced7e2cfdae4d0dae2cdd8e4cfd8e3cbd6e3c9d3e2c5 *d0e0c6d1ddc3d1e0bbcbdbb6cbdbb1cadcafc6dbadc6dca9c5daacc5dbaec6d9b1c7dab1c5dbbb *cbdabdccddc1ccdbbfcce0c1cbdbbdcbdabdc8d9b9c7dbb7c6d8b9c7d9b5c7dab1c7dab1c6dbb2 *c2d8b2c4d7b1c4d8b6c5d8b3c5d8b4c4d7b6c4d8b6c6d8b9c6d9bbc6d8bac6d8b8c5d8bac6d7b8 *c7d8b8c7d9bac9dcbcc8dabcc7dabdc6d5bec7dabbc8d8bbc8d8bbc7d8bcc6d8bec9dbbfc9d9bf *c9dbbec9d9bfc8d9c2ccdbc7d0dec7d1e1cad3e0c9d1dec9d0dec8cfdec4ccd9c2ccddc3ccdec0 *c9ddc0cadbc2ccdac3ccdac3cbddc2ccdac3cddcc3cedec6d0ddc9d1dec8d0e1c8d1e1c8d2dfcb *d3dfcad1dfc9d3e2c9d1dfc7d1dfc5d0ddc6cfdec2ccdcc2ccdac4cdd9c5cbddc7cfdfc7d1dec7 *d2e0c9d3e2cad3e0c6d1dfc9d3e2c8d0e0c5cedec2ccddc3ccddc5cedac3ceddc6cfdec6d0dec7 *cedecbcfdecad1e0cbd2e0c7cfdec8d1dfcbd2e0cad3e2cbd3e2cad1e0cbd0e0c9d2e1c9d1dfc8 *d3e1ccd5e0cad3e2ccd3e1cdd5e2cfd7e1ced6e2cdd3e0c9d1ddc6d0e1c5cfdfc5d0dfc9d1e1c9 *d1e1cbd1e1c7cfdec5d0dfc8d2e0c8d2e0c7d3e2cdd5e2d0d8e4d1d8e4d3dae3d4dbe5d3dce5d3 *dde6d2dae3d1dbe6d4dbe5d0d9e2d1d7e2ced8e3ccd5e2ccd3e1c7d3dfc7d1e0c7cfddc9d0decb *d2e0cbd3dfcad2dec8d1dfc6cde0c6cfdfc6d0dfc5cfddbfccddbccbddbacaddbdcbddc2cddec1 *cdddc2ccddbccbdcbbcadcb8c7dbb6c9dbb5c5dbb5c5dbb3c6dbbac7d8b8c9dbb7c9dab6c9ddb7 *cad8bbcbdbb9c7dbb6cbd8b8c7d8b7c8dbb6c7dbb6c7dcb6c8dbb3c9deb2c7dbb0c6dbaec5d8ae *c3d8aac4d7b0c6d9aec6d9aec6daaac4d9adc4daacc3d9acc2d6aec6d7acc4d7acc4d8afc4d7b2 *c6d8adc6d8aec5d8adc2d8aac3d6adc4d8abc3d8acc2d8a7c3d7abc4daaac3d9acc3d8a9c1d6aa *c1d7aac1d7aac2d7a8c1d6adc3d7aac3d7acc3d8abc4d8a9c1d6adc4d6aac1d6a9c1d6aabfd5a9 *c3d8abc3d6aac3d9b0c3d7abc1d7abc1d4aac2d6a8bdd5adc1d6abc3d7aac0d5aec5d9aabed8ab *c0d6a9bed4a9bfd5aac2d5acc2d8abbfd6acc2d5acc2d7adc1dba8bdd6aabfd5adbed4abbdd4ac *bed2abbed6aebfd6aebdd6aabcd5aabed5aabdd5a9bcd3a8bdd3aebdd6a7bed3aabdd7aebfd6a5 *bbd3aebed6b0bed2aebfd4adbfd1b0c0d6aebed5aec0d6afbdd6a9bcd1abbdd3abbcd3a9bcd2a7 *b9d0acbcd1aebbd0aabcd1acbcd0aabbcfa8bad0a9bcd2a9bad1abbad1aabcd4abbbd2aabad2aa *b9d2aabad1a6bcd0abbcd3b1bed3abbdd1aebdd3aebdd2b3bfd5b1bfd3b3bed4b2c2d2b4c1d7b5 *c1d6bbc1d4bbc7d7b8c6d7bcc7d8bbc2d3b7c1d8b4c1d5b6c1d3b7c0d2b9c2d3b6c6d5b6c5d6b7 *bfd4b4bfd3b6c0d2b6c1d3b6bed0bac0d3b7c1d4b7c3d5bbc5d7bbc5d8bac3d8b7bfd3b8c0d2b9 *c2d3b5c0cebdc6cbc4ccd0c7cfd497b3cb94b5cd93b0cc90b3ce97b4cd93b1cc97b5ce99b6cc97 *b4cc9cb7d39db4cea4b4cc9cb1cb95b3cd91b3cc8eb3ce91b2ce97b4cf92b4cd92b4cd92b0cf91 *b3cf93b5d08db3ce8fb5cf90b5d092b6d094b4cf94afcb93b1cc95b2cb99b5cf99b1cc8eb0cb92 *b1cd9bb1ce9bb2cb9cb5d09cb7ce9bb3ce9bb4cf9eb4cc9fb5cc9eb7cfa1b8cf9db3d0a4bacfa1 *b9d1a3b6d0a1b6d0a1b6cea6b7cda4bbd1a5bbd1a6bdd2a9bbd1a7bcd2a8bbd1aabad1a8bed2ad *c2d4aec1d4a9bdd3adbed1abbcd3adbdd3aac0d4acbed3a3bbd1a0bad1a1b9cfa1b7d1a5bad3a3 *b9d29cb6d09bb6d198b6d18cb4cf93b7d298b8d296b7d099b7d399b9d49ebad395b7d196b7d18d *b7d492b8d390b5d398b6d39ab9d39ab9d39bbbd596bbd396bad49cbcd49bb9d798b7d59dbad39a *b9d397bad497bcd391b8d593b8d293b9d399bbd39abbd697bad599bbd396bad497bbd599b8d69b *bad697b6d598bbd698bbd797b9d48eb9d499bbd29abcd697bad397b9d499bcd799bad699bcd796 *bbd399b9d498bad39abbd095b8d197b9d397bcd69bbdd798bcd89cbcd69fbbd19cbcd494b8d49c *bdd69abcd3a0bbd8a1bfd8a5c4d8a9c2d6a2bed69ebdd6a2bbd3a2bfd8a4c3daa6c3daa1c1d7a0 *bfd89fbfd6a4bfd69dbdd8a0bdd69cbdd7a0c0daa3c1d7b3cbdfbed1e1c2d1dec6d2e0c7d2dfc7 *d3e0c6d3e0c8d3e3c8d5e4cad7e2cbd6e1c9d3e2c6d3dec3d0e1becee1bbcddfb1c7deaec5dba6 *c3d9a4c2d7a3c2d7a0c1d4a1c3d6a3c1d8a2bfdaa6bfd99fc1d89ebdd69abdd3a2bed59fbdd6a3 *c1d8a4c0d8a3bcd89fc1d9a8c2daaec8daacc6daaac2d6a7c1d7acc3d8afc6d8b1c6dbb9cadebc *ccddc1cfdfc4d0dfc4d0e0c5d2e1c6d2e1c7d4e0c8d5e2c7d3e2c8d7e3c5d1dfbeccdeb6c9deac *c6dba8c6da9fc3d8aec7ddb6cbdebcd0e1bbccddb8c9d9bdccdebdcedfbfcdddc1cedeb8cde0b4 *c9ddb2cbdbbbcadcc3cedfc3d1dec3d2e0c1d1e1c0d0e0bbcde2b1c9e0acc6daadc4d9b1c5d9b3 *c6dbb5cadebbccdfbfcddfc6d2e2cbd7e4cfd8e3d0d9e3d0dbe4cbdbe5cbd8e4c7d5e4c4d3e1c0 *d0e0bbcedfb8cbddbbcbdcb1c7dbaac4dba5c4dba4c3d9a4c4dba6c3ddabc5dbacc7d8abc6d9b1 *c6dbb6c8dbbaccddc0cce0c0cddec1ccdbc1cedabfcbdbbdc9dbb6c8dab6c7d9b3c6d9b7c7dab4 *c6d9b6c9dbb6c9d9b7c7dab5c5d9b6c6dab5c6d9b9c7d9b6c7d9b8c9d9b8cadebbc8dbbac7d8bc *cadabac9d8bbc9d9bbcbddbbc9dcbdcadbc0cbdcbdccdbc0cad9bbc7dabfc9dabecbdbbdcbd9c1 *ccdcbfcbddbeccd8bfcadbc6cfdec6d0dfc9d2e0c7d3e0c9d2e0c7d1e1c3d0e2c3d0dec6cfdec6 *cedcc6cedcc3ccdec0ccdabfcdddc2ccd9c1ccddc3cddec7cedecad2dfc8d2dec7d1e0c7d3e1c8 *d4e2c7d2e1c9d3e2c9d1dfc8d2e1c5cedfc0cbddc1cde0bfccddbccbddc2cddec4ccddc6cedfc7 *d1dec7d2e2c8d2dec7d1dfc8d1dfc3cedcc1cedec4cedec1cdddc0cbdec3ccdec3cddfc3ceddc6 *cedec6d0dec5d0dfc6d0e0c7d2e0c7d3e2c5d1e0cad3e3cbd2e0cbd5e2c9d4e0c9d3dfcad3e1cb *d3e1cad5e2cbd5e2cad7e2cbd6e1ccd7e3ced8e4ced6e2cdd7e3cbd5e2c8d1e1c7d0dfc6d1dfc6 *d1dfc8d2e0c4d0e1c7d3e1c6d0e3c8d3e0c8d4e1cbd6e0cbd7e3cdd9e4cfd8e5d0d9e5d4dbe5d4 *dde6d4dce6d1dde6d0dbe5cedce3cedbe5ccd6e5ccdae3c7d4e4c7d2e0c9d2e0c9d4e2c8d3e0ca *d5e0c7d4e2cad6e2c8d4e2c7d1e1c6d1e1c4d0dec2cedcc0cfddbcccdeb7c7dbb9c9deb5c8ddba *caddb6c9dbb9c9d9b3c6dab1c6d9aec4dab3c6d8b5c6dbb3c6d9b3c5dbb6c7d9b7c7d8b6c7dbb6 *c8dcb1c6d9b3c7dbaec6d8b0c7d8b2cbdcb3c7d9b7c9dbb4c7d8b2c4d8afc3d8b1c7dbb1c6ddae *c6dbb0c6dbaec6dab1c5d9adc6d9adc6dbabc4dab0c5d9adc4d8acc6dcaac5d9adc4d8acc5d8ae *c4d8b0c5d8acc5d6abc2d7a8c4dbacc3dbadc3d9adc4d9adc4d6aac5d9a9c4d8abc5daaac3d8ad *c6daacc4dbabc3d6aac3d8acc2d6acc2d6acc6d8a5c4daa8c3dca9c3d9a9c2d6aec3d8aac3d6aa *c1d6a5c2d6a5c1d6aac2d8aac3daacc3d7acc6d7aac3daabc2d6aec2d6a8c2d6aac2d9a6bed8a9 *bed8aac0d6abc2d5adc1d4aec1d6a8bed5a8bdd6adbdd6aabed6aac0d7aac0d4aabfd3aabcd2ac *bad1acbdd0a8bbd0adbdd1a7bad4a5bbd4a8bdd1abbbd1acbbd0aabad1aabad3a6bcd1aabdd4ab *bcd5a7bcd3a9bdd2a7bbd0aebdd1aabbd3acbcd3aabdd5acbed2a5bbd4a8bfd6aabdd1aebbd0aa *b7d0a9b7cea6b8d1a4b8d0a6bbd1aabcd2aab9d2a8b7cda7b7cfa8b6cea8b7cea5b8cea8bad0a5 *b6d0a8bbd1a9bad1a8b9cdaabbceaab7d1abbbcca9bacfaabbd2aabbd3aebdd3aebdd1b1bfd2b2 *c0d1b3c2d3b3c4d8b7c7d8b8c6dbb6c2d6b5c2d9b9c2d1b5c1d1b6c1d3afbfd3b1c0d4b5c1d8b1 *bed1b2bdd3b3bfd2afbfcfb1bfd0b7c0d1afbfd0b1c0d4b1bfd2b5c1d3b2bfd5b4c0d3b4bdcfb2 *beceb0c0d2b1bdc5bbc6ccc2ccd0c6d0d692b1cb96b3cc95b3cd96b6ce90b2cd84b1ce97b1cc9a *b5ce8cb4ce92b1ce94b5ce99b4ce9ab8d09cb7cf93b1ce95b4ce8ab1ce90b3cd91b4ce8bb4d091 *b1cf90b2cc96b5d198b6d092b6cf90b5cc8fb1ce91b1cd94b3ce99b4d098b3cf97b5cc96b6cf8d *b1cc90b2ce91b6d095b8d094b5d198b4d19ab4cd92b3cc98b6d09eb4cb9db6d09bb5d09fb0cba0 *b5cc9fb2cd9fb7cea3b6cb9db3cb9eb6cda3b6cba3b9d1a5b9cfa5bad1a9b6cea6bacda4bacba6 *bed2a7bbd0a7bbd0a8bbd1a6b9d2a8bdd4a9bcd1a3bbd1a6b9d0a6b9d09ab5d19ab8d09bb6d09b *b7d09fb8d29fb5ce9cb6cf93b5cf8db6d094b6ce97b7d097b7d296b8d295bbd395bad396b6d094 *b7d18cb7d293b8d18fb9d498b6d39bbbd696b8d898bbd398b7d090b6d191b8d18eb6d292b6d19a *bdd79abbd397b8d39bbbd497b9d396b7ce94bbd196b8d192b8d597bad194bbd69cbcd699bed49a *b9d39abad493bad597b9d19abbd79cbad49db9d79dbbd392b9d494bad398bbd297bbd494bad597 *bad398bad298bbd398bcd49dbdd691b8d493b8d598b8d39dbdd697bbd698bbd49fbdd89cbdd5a0 *bdd692b7d597bad59db9d498bad69abcd79cbdd79ebdd39fbcd49ebdd89bbcd79fbdd7a1bdd89d *bdd6a2bdd59fbdd5a1bdd6a4c1d798bbd59abcd69cbcd69fbed7a7c4dab4c9ddbfcfe0c4d0dfc3 *d0ddc1d0e1c1cedfc4d0e1c6d1e0c4d3e2c6d3e2c6d1e0c0d0e0b9cddeb8c9deb5c9ddaec6dba1 *c1daa1c0d8a4c3d8a3c1d4a7c3d9a3c1d8a4c2d6a4c1d8a1c1d8a4c1d9a0bdd79cbfd8a3c1d6a4 *c1d8a2c0d6a0bfd89fbbd49fbfd6a1c2d8aac4d8acc6d9abc4d6aac3d8a6c3d7abc5d8b0c5dbb9 *c9ddbccbdcc2ceddc0cfdec5cfdec4cfdfc6d1dfc5d0e0c8d4e2c8d6e2cad7e4c8d5e3c3d1dfbb *ccddb4c9dcabc4d9a5c2d8a8c3daaec7dab2c9deb2c9deacc6ddacc7ddb2cadfb6c9ddb7c9dcad *c6dbaac6dbaac4d8b1c7dabbcde1c1d0e1c1d0e1c1d0e0c1cee0bcccdeb2c7dbaac6d9afc8dbb5 *cadeb4c7dbb3c6dcb6c9dbc1ceddc6d0e1c8d5e2cdd8e3cedae5cfdbe5ced9e4c8d5e1bdcdddb5 *c7dcb4c7dbb3c7dbaec7dbabc7daaac7dca9c3d9a4c3d9a9c3d8a3c1d8a0c3daa4c3dba9c6dab1 *c9dbb5cadebdcbdcbdccdbc1ceddbfcdddc0cddec1ccdbbfcedebeccddb6c7ddb5c6d8b6c7d7b1 *c4d8b5c7dab6c6dbb9c7d9b8c8dab7c7d9b9c6d9b9c8d9b9c7d8bcc9d8bfcbdbc1cadbbccbdbbc *cadbc0cbdabdccdcc0cbd9bfccddbbc9dbc1cadcc0cbdcc0c9dbc1ccd9c1ccdebcccddc3cddbc3 *cedac5cfdcc6d0ddc1ccdbc3ceddc9d3e1cbd7e3cbd3e2cbd1e0c8d5e2c9d3e2c8cfdec6d1e1c6 *d1e0c7d1e0c3ccdac4cddbc3cedec3ccdbc4cedac7cfdec8d1e1c9d2e2cad5e3cad6e2cbd4e2cb *d6e1cbd6e1cad6e2c7d2dfc6d1e0c4cfdebeccdec0cbddbfcbdcc2ccdbc0ccddc0ccdbc3cedec4 *cfe0c6cedfc6d0e1c7d2dec9d1e0c9d2e0c9cfe0c7cdddc3ccddc1ccdec1cbddc3ccddc1cfdfc6 *cfdec7d1dec3d0e0c6cfe2c8d1dec9d3e0cbd5e1c9d3e2ccd4dfcbd4e2c9d3e1cad6e1cbd4e2cb *d4e0ced6e4cfd8e2d1d8e2cfd9e3cfdae4d0dae5d0dbe5d0d9e4cfd7e3ccd5e3c9d4e1c8d2dfc6 *d0e1c6d1e2c6d3e0c9d2e0c6d1e2c6cfe0c9d1e0c9d2e1c9d3e0ccd8e3ced9e4ced8e3cfd8e3d0 *d8e4d1dce3d2dce7d0dbe6d1dbe6cfd8e4ccd7e5cbd3e1c9d3e2cbd5e3cbd4e2c9d6e3ced9e3ce *d8e2cdd8e3c9d6e1cad6e2c9d4e1c7d3e1c5d2e0c5d0dec2cbdcbdcbdab7cadcb3c6daafc6dcaf *c5dcb3c5dab3c4d6b6c3d8b5c6dcb3c4d5b3c6d6b2c6d8b1c4d6b7c7d8b4c6dab7c9dbb7c7dab6 *c8d8b1c7dcacc5dbb2c6dab1c6dbafc3d8afc5dcb3c7d8b4c7dab1c7dab2c7dbafc5daadc7dbad *c5ddaec5daacc6dbb4c8dcb1c7ddb0c8dcb1c6d8adc6daaec6daaec5d9b2c7dbb0c5d8aec5d9b2 *c7d9b2c6d8b0c4d7afc5dbaec7d9afc5d9adc4d7acc4d9aac3d9aac5d8aac4d9a7c2daadc3daab *c5daaac3d7aec3d7a8c3d6adc3d8acc2d6aac1d7a9c3d7a2c1d6a8c1d7aac2d8adc5d8aec4d6ac *c3d6adc2d6a8c1d8aabdd4abc1d8abc3d8a7c2d7a9c3d6abc3d8afc3d6aec1d7abbfd4aac0d6aa *c0d4a9bfd4aabdd4acc1d6a9c0d5a9c1d5adc1d6aebdd6abbed4abbccfabbcd3a9bad1a8bad1aa *bad3a8bbd3acbbcfa8bbd1a9b6cca4b7cfa4b6cea8b8cea9bbd1aebdd0a7b9d0aab7cda2bbcea4 *bad1a9bad1a7b7d1a6b7cca9b7ceacbacda8b9d1acb9cea7baceaab7ccaab8d0a6bad1acbccda8 *b9cfa4b6d1a5b6cca1b4cda3b6cda5b4cda4b6cda5b5cca7b5cda4bacfa8b8cca5b5cca3b1cca2 *b5cea4b2cba0b2cba1b3cba9b9cda7b9cea3b4cdabb7c9a8b8cca2b7c8afb6cba7b9cdacbccda7 *bbd0b1c1d3b8c1d1b6c2d6b4c2d5b7c1d4b1bfd3afc0d5afc0d4b3c3d3b2c1d2b2bfd0b0beceae *bbcbabbdcfacb8cea8bbcea6bacfabbacbacb9cfafbcd1b0bcd0b0bbcdaeb8cdaebbceafbdceb1 *bcd2b0bcd0b1bfd1b1babfbdc7cbc3cbd0c6d0d48db4cd92b3cc8fb3d193b3ce91b2cf9ab6d196 *b4ce95b6ca91b4ce8cb1cd95b3cf93b2d091b4d091b2ce90b1ce8ab2cc8ab2ce8bb0cf89b0cc8e *b5cf8eb3ce8cb5d388b1ce94b6d293b7cf8eb2cd91b2cc90b3ce92b2cc8eb1cc8ab3cc93b2d18a *b1d091b2cc8fb2cf8db1d08fb1ce8ab1d092b2ce90b2d195b5d19ab7d09bb9cfa1b4ce95b2d196 *b2ce9bb1c8a0b5cfa0b5ce9eb4d1a1b6cea6b9cf9db5ce9fb5ce9eb6ce9db4d0a3b5d0a2b1d0a4 *bbd1a7bccea1b6cda6b9d1a4bad1a7bbd2a6bbd2a2bad1a7bbd1a2b8d19db8d099b5d097b6d094 *b3cf92b4cf96b7d390b4d192b5d196b7d08fb6ce8fb4d18fb6d18fb5d18eb4d18fb6d08eb6d290 *b7d292b7d193b7d18eb8d498b7d392b6d396b8d393b8d394b6d190b9d29abcd498bbd28fb6d092 *b7d38ebad499bbd39bb8d59ab9d59bbad392b6d397bad396b7d39bb6d398bad196b6d195bbd191 *b9d195b9d29abbd499bad79ab7d29abad299b9d199bad492b9d493bad496bbd398bbd495b9d395 *b6d599bad69cbad294bbd597bbd690b9d397b9d69abbd693b9d69abbd79bbbd496bdd691b8d799 *bbd69abcd69ebbd49dbbd69ab9d59db9d69bbad696bbd598bad599bbd49cbed69abbd69ebdd69e *bcd89cbdd79ebbd4a0bbd69dbdd79abcd59bbed69bbed59abcd59dbed69ebed6a3bfd7a3c2d8b0 *c8ddb6cce0b4caddadc6dab3c8dcb7c9deb9ccdfb9ccdeb9cde0b3c8dcaac4d9a9c4d9a8c3daa7 *c2d8a6c1d89fbfd69ec2d6a1bfd79fc1da9bc2d9a4c2d79cc0d89dbbd3a4c1d7a4c1d9a2bfd69c *bdd699bdd6a1bfd6a2c0d6a7bed6a1c1d8a0c0d7a3c1d89ec1d8a3c2d7a7c3d8a5c1d8a7c4d9b1 *c7d8b8c7dabacbddbdcfe0bfcfdfc0cde0c1d0e1c6d3e2c7d5e3c8d3e3cbd6e4cad7e3c8d3e2c3 *d0e1bccee1b3c9deabc3d8a4c2dba6c4daa4c2daaac6daa9c6daa4c5d99fc3daa7c6daa9c7dea7 *c3d9a4c1d7a2c3d8a7c3d8a6c3daadc6dbb7c9debccadec1cfe0c1cfddb8cbddabc6dba6c3dbac *c6d8abc6daadc4dba8c3dab0c8dcc1cfddc5d3e2c5d3e2cad6e3ccd8e4ccdae3c9d6e2c3d2e1b2 *c8dfadc7dba4c1d7a7c3d8a9c7daa6c4d9a7c4d9a5c3daa5c4daa6c3daa5c1d5a5c4dba7c4daac *c6d8adc6dbb5c8debaccdec1cee2c2cee2bfccddbdcedebdceddbccbdbb6cbdcb0c3dab3c6d9b5 *c6dbb8c6d8b6c7dab8c6d8bac7d8b7c7d4b9c8dbb9c7dcb9c6dbbcc9d9bfcadabdcddbc1cedec1 *cedfbdcddec0cadcc1ccdec0ccdec2ccdec2ccdcc1ccdbc2cedcc1cddec2cbddc2ccdec4cde0c5 *cedfc6d0e0c6d3dec3cfdec3d1e0c3d0e0c7d1e0c9d3e2cbd3e2cbd6e3c9d5e0cbd4e1c9d3e0c9 *d3e0c9d3e2c8d0dec5cdddc6ccdfc9d2dfc9d3e0c8d0dec5d2e1cad2e1c9d2e2cad3e1c8d2dfcb *d7e2cbd5e1ccd6e1cad3e0c5d1e1c2ceddbecadbbfcadcbccadcbecbddbfcbdcbfccdebfccddc2 *ccdec1cbdcc3cedfc5d1dec7d1e0c9d5dfccd7e2c9d6e2c6cfdec4cddbc1cedcc1cbdbc1ceddc3 *ceddc6cfdec5d0ddc7d1e1c5d0dec6d1e0cbd3e0cad2e0cdd6e2ced8e3ccd6e3ccd4e2ccd4e1cd *d6dfcfd7e2d0dae3d1dae5d1dae6d2dae3d3dbe3d1dce2d0dbe5d0d9e4ccd5e2c9d6e3cad2e1c7 *d2e2c8d1e2c6cfdfc8d0dfc6d2e2c3d1dfc2cfe0c7d0e1c6d1e2c7d3e3ced8e2cedbe2ced9e4ce *d8e3cfd8e3ced8e3ccd8e3cfd9e2ced9e6ccd7e3c7d3dfc6d1e1c9d2e1c9d4e3ccd6e2cdd6e4cc *d7e3ccd7e4ccd7e2cbd5e3c9d6e2cbd5e2c7d1e0bfcbdfbbc9ddb9c9ddb7c9dab4c6d7b4c6d9b3 *c4d7afc3d8b0c2d6b1c2d8b2c4d2b0c4d6b1c4d8b1c4d8b4c6d8b6c4d7b9c6d6b6c7dab9c8dcb6 *c7d7b6c6d8b2c7dbaec6d8b4c7dbaec5dbb4c6d9abc5dbacc6d7b1c3d7adc5ddabc6ddabc6dcad *c6dab0c5d9abc3d8abc3d8aac6dbafc7d9b4c7dab0c6dab0c6d8aec4d8acc3d9aec3d8afc6d9ae *c4dbafc7daaec6daafc5d6adc6d8b0c6d9aec5d8a9c4d8acc2d9aac2daa9c4d8abc6d7aac5d9ad *c6dbacc4dbabc3d9abc4daaac2d8b0c3d8abc3d8aac3d9aac6d8aac3d4a6bed9aac2d7acc1d7aa *c1d6aac2d5a9c2d6aac1d7aac3d7a9c1d9acc2d8adc3d6aec3d5aabed6adc0d6afc2d5adc3d3ab *c2d6acc0d6abbcd5aebdd4aabfd6a7bdd5a8bfd6adc0d8aec0d5abbbd3a9bad1acbbd2a8b9cea4 *b7cba6b5cca8b5cda6b7cea8b8cca4b5caa5b6cca8b7cea4b4cda7b6cca4b7cba3b6cea3b5cca6 *b5cda4b6cca4b7cea4b3cba3b4cba1b1cba4b1c6a0b1c9a1b4cba4b5cba6b4cbaab8cda2b5cba3 *b6cca3b5c9a3b2caa5b4cca5b4cda3b2cba5b4cb9fafc7a0b1cba1b3ca9fafc9a1afca9eaec89b *aec9a0b1c79cabc49cafc79eb1c79fb1c99daec6a0afcb9db1c7a2b0cba6b3c6aab6cba4b6cfaa *bacea7b8cda7baccaabbceadbdceaebdd2b1bdd2b0bcceafbbcfafbdceabbcceacbbceaeb9ceab *b8cba5b0c9a5b2c8a5b2c6a3b2c9a1b1c6a3b4caa6b5caa9b8cdaab7cdafbbcdadb7cba9b7c8ad *b7caafbacdafbacbb1bbccb1bac8bec7cec4cdd1c7d0d39ab3cd91b1cc8eb0cb8db0cb93b6cf93 *b2d091b1ce90b3cf90b0cf8eaecc93b4d08fb2cc8daecb93b1ce8cb1cc8db0cd8bb0cf88adcc87 *aecb8db5ce8db1cd8ab0ce8dafce8dafce92b1cd8eb3cd8fb1cf8db1ce8db1cd8db2cd90b1ce97 *b1cc8bb1cc8eb1ce8dafcf8dafcf8bb0cb90b0cd8eb1cd8fb0cd92b1ce94b1ce92b1d095b3d197 *b5d296aecc9cb3cb99b1c999b2cc9bb1cb9ab4cc9db0ce9eb3d0a2b2ca9fb4ce9ab3ce9db1cca3 *b7cda8bbd1a6bcd1a7bbd1a5b9d2a6b9d1a3b7ce9bb6d39cb8d097b4d196b3cf94b0d097b6d18c *b1d28bb1d194b1cd8fb5d18cb1cf8ab0d08cb2d092b5d18fb5d192b7d396b6d28cb5d293b4cf8c *b2cf93b7d28db4d193b8d192b5d395b8d397b4cf97b7d192b4d091b2ce8eb5ce8fb6d193b8d190 *b5d196b7d196b4d193b9d28fb5d197b7d491b3d29cb8d499bbd295b9d39cb8d09bbbd198b7d497 *bbd48db5d090b6d195b7d096b8d29ab8d39bbad294b7d396b7d490b7d297b9d393b6d291b8d195 *b9d595b9d498b6d397b7d591b6d196b8d292b9d396bad495b7d69abbd49bb9d49dbad79abad595 *b8d398bad38fb8d599b9d493b7d39abbd49bb7d69cb8d498b6d397b9d39dbbd699bcd69abcd79c *bcd89fbdd59abdd5a1bcd69dbbd59cbbd597bad598bbd69dbad49bbbd59cbbd6a0bdd7a1bed89d *bbd59ebcd8a0bed99dbed79fbcd6a8c1d6a5c1d7a1bdd7a3c0d7a2c0d8a2bfd7a3c1d69dbdd69c *bdd69fc1d7a1bfd7a3bdd898bcd8a0bcd99cbbd8a4c1d8a4bfd7a0bfd6a2bfd69dbbd79dbbd699 *bad69abed89ebfd7a1bfd59abbd79ebdd69cbbd69fbdd69dbed7a0bdd7a0bdd49fbdd7a4c0d7a3 *c0d8abc6d8acc4d8b2c5dabccadebfcedec2cddec2cee0c1cfdfc2d1e1c5d2e3c7d2e3c8d3e3c5 *d1e2c4d0e1bbcadeaec6d8a6c1d8a0c3d8a0c1dba0c1daa4c0d9a2c1d6a4c1d6a1bfd5a0c0d8a4 *c1d8a4c1d8a4c3d8a3c0d8a8c1db9ec1d8a5c2d8abc7dbb6c7dbbbccddb9cddfb3c7dda7c2dba6 *c1d9a8c2d7a9c3d8a8c3d9a9c3daacc4d8bbcadcc2d0e0c6d2e3c7d2e2c7d3e2c8d3e2c4d1e2b9 *cadeaac3dba7c2daa8c3dba0bfd8a4c1d6a5c3d8a2bed7a9c4d99cbed7a0bfd7a3c2d7a4c2dba8 *c2dbaac3d9a8c1d8b1c5d8b9c7dabdcbdcc0cedfbbccdfb6c9dbb7c7dbb6c7dbadc1daaec4d8ae *c4dbb1c5d8b8c7dbbbc7d8bac8dcbfcadbc0c9dabec9dbbbcadac0c9dabdcad9bdcbdbc1ccddc1 *ccdfc2ceddc3cddcc1ccdac2ccdbc2cddcc2ccdcc3cedfc1cddec4cedec1ccdcc3cddac2ccdec5 *d0dfc4d2dec7d1e2c6cfe1c5d0e0c1cfe0c4cfe0c6d1dec7cfe0c6d0e2c7d1e0c8cedfc9d2e2cb *d1e1cad1e1cad3e0cad1e0c7d0dec9d2e0c6d0e0c6cee2c7d0e0c5cfe2c7d2e2c8d3e2c9d5e1ca *d3e1cbd4e2cbd7e2c8d3e2c8d0e0c3cde0c2cbdcbec7dbbcc6d7bbcad9bbc9dbb9c7dcbccadcc1 *cddfc2ccddc1c9dcc1cbddc1ccddc7cfdecad3e0cbd6e2cbd2e0c6d1e0c5ceddc4ceddc5cedec3 *cddec4cddcc4ccdbc5cdddc2cfdec8d0e0cad3e1cbd2e2cad1dfcdd4e0ccd7e3cbd6e2ccd5e2cf *d7e4d2d8e4d1d8e5d1dae4d3dce5d2dbe4d1dbe5d1dbe5d0dbe7d1dbe7d0d8e6cdd4e2cad0e1c5 *cfe0c4d0dfc5d0e0c6d1e0c6d2e0c8d3e1c7d1e0c5cedfc6cfdbc7d0ddcbd3e2c9d3e4cad8e4cc *d6e2cdd5e1cbd3e2ced6e2cbd4e3cdd3e3cbd3e4c8d3e2c3cee1c4d0dfc7d2e3cad2e3ccd4e3c9 *d5e2ccd4e0ccd3e1cbd4e3c9d5e3cad4e1c7d2dfc5d1dfc1cbdeb6c6dbb6c3dab5c2d7afc4d7b3 *c2d6b1c3d8b1c2d5b3c3d8b2c3d7b4c3d6b1c4d9b3c4d6b1c5d4b1c4d6b4c5d8b6c5d7bbc7d9b6 *c4d6b7c5d9b5c4dab4c6d8b1c7d8b1c7d8b2c7d9b2c3d7afc4dab0c3d6acc1d7aec4d8aec4dbaa *c2d8afc5d8acc2d8abc2d9acc2d9acc3d8aec5daafc3d7afc3d7aec2d9adc3d7aec3d8b0c2d8aa *bfd5abc3d8abc2d7aec3d7afc3d8adc4daaec4d8adc2d9a8c1d8a9c3d9a9c0d7abc2d9acc4d9aa *c1daaec4d9aec6d8a8c1d8acc1d5acc1d4abc1d7abc1d6acc3d7abc1d7a9c4d7aac3dba9bdd6ab *c2d6aac1d6a9bed3aac2d7abbfd8aec3d7b0c3daaec1d6aebfd8b1c0d6aabdd4abbbd4acbbd4ac *bcd4acbdd3acbdd4a5bcd3adbbd3acbbd3a5bad2a9bdd0acbbd2abbbd0a9bacea8bad0aab9d0a9 *b6cca8b7cca3b5caa7b0c6a8b1c9a4b6cca7b5cba7b5cca9b1caa5b1cba3adcba3b3c7aab1c7aa *b1caa7b3cba2b3caa0b1cba3b1c9a2b0c99caec8a4b0c5a1b1c79eafc69baec7a4b1c9a4b1caa2 *b0c9a4b3cba2b0caa2aec9a4b2cca4b3caa1b3cd9eb1cca1afc89eaec89daec79badc696a9c39b *abc39ba8c497a8c49eabc797a6c39dacc29baec599adc49eaac4a0aec6a1adc59dacc3a3b0c8a5 *b0c9a7b2c9a4b1caa1b0c6a1b2cba4b1caa5b5cda6b6cca9b5ccaab6cfa5b6cda8b6cba4b1c9aa *b6c7a3b0cba2aec59eaec5a3b2c9a4b3cca4b0c8a3b1c8a4b1c9a5b2c9a3b1c9a7b4caa7b6ccac *b9cea8b6cdadbacbaeb3c9aeb8c9afb7c5bdc5ccc3cad1c6d1d692b1cb91b1cc89b0cd92b2cc96 *b3ce98b5ce8db2cc8cb3ce90b3ce87b0cc8cb2ce8bb2cf97b4cf92b0cc8bb0cd8db4cd8bb2cd7d *afce89b1ce89b0cb8db2ce90b4cc93b3cd8db2cd90b1ce86b1cf8cb2d38ab1ce8bb0ce8bb1d189 *afcd92b4d091b4d08cb1cd8cb1cf88aecc8bafcc8db1cf8eb2cd8db1cf8bafcd8dafcc8aadcd91 *b1ce8cb3cc91b1ce99b3cf9ab3cb8fb1cb96b1cd97b2cd96b1cd97b1ce9ab2ce9bb7d19bb7d19c *b3cc9db3cfa1b4d0a5bbd3a1b6cda3b7d2a4bbcf9eb5d19cb6d192b1ce8eb1cf8eb2d090b4d095 *b5d190b4cf8eb4d089b1d18bb4d093b3d08fb0cd8ab1d08bb5d08bb3d28eb6d18cb5d191b6d290 *b6d295b6d291b6d193b7d18cb4d08eb6d18eb6d08cb5d390b7d494b8d390b2ce95b7d19ab8d191 *b6d091b6d38cb6d199b9d693bad58cb4ce94b9d296b7d393b8d396b8d396b9d399b8d596b9d395 *b6d199b6d195b6d093b7d18fb6d396b6d491b6d196b9d598b9d598b8d29abbd296b8d695b7d293 *b6d493b7d291b7d498bbd899bad695b7d196bad494b8d498b9d496b9d793b5d299b9d39bbcd69a *bbd59ab8d394b8d593b8d39cbad19ebbd39abbd696bbd99cbed899bbd597b7d399b7d49dbbd69b *bbd69bbcd7a0bfda9fbfd89cbdd5a0b9d79dbbd49ab9d69cb9d698bad49abcd79bbdd795bbd599 *bbd799bcd3a3c0d59fbdd69dbcd69ab9d29fbdd89ec1d79abdd7a0c0d79bbbd69dbcd49ebed59c *bdd69abbd39dbdd69cbbd79ebed69fc1d99ebcd49ebed89cbfd79ebfd79bbbd69ec0d697bed89d *bfd79fc0d69ebdd69fbdd79abdd69dbcd69abdd8a2bfd89abbd79ec1d798c0d79ebfd697bbd59d *bcd69abbd69ebdd7a1c1d6aac3d9b8cadfbecee2c2cedfc0cee0baccdebfcddfc4d0e2c6d2e2c3 *d3e1c5d3e2bfd0e0b6cadeaac3dba3c1d8a1c1d89ec1d99fc0da9fc0d7a4c2d9a1c1d7a4c1d8a4 *c1d9a5c1d8a6c3d7a0c0d6a2c3d7a0c1d89bc1d8a4c0d7a4c3d8aec6dab3c8dbb9caddacc5db9e *c1daa3c1dca6c2daa4c1d6a4c1d8a0c1d8a2c2d6afc5d9b8cbdcc0d0e0c4d2e1c1d0e0bfcee0bd *d0deb7cadda9c4d9a5c2d9a3c1daa4c1d8a0c2d9a4c2d7a6c1d7a1c0d7a7c5d9a0c1d8a0c3d6a3 *c0d8a1c0d9aac5d8aac4d8aac3dab0c7d9bbccddb7ccdeb9ccdfbac9dbb4c6dab0c3dba8c3daaa *c0d7aac4d9b6c7d9b8c8dbbbc9dabccadabfcdddc2ccdcc2cddcc1ccddc0cbdcbfccddc2ccdcc3 *d0ddc3cddec6d1ddc4ccdcc4cedec2cddcc4ceddc3cfddc3d0dec3cfdfc3cedec4cfdec4cedfc2 *cee1c3cee0c6d0e0c6d1dec5cfdec4cfdfc1cfe1c4cfe0c7d3e1c9d3e0c7d1e3c7d0dfc4cfdec6 *d2dfc9d5e1c9d3e2cbd6e3cbd5e2cbd3e0c8d1e2c7d1e0c9d2dec7d1e0c8d1e1c8d3e2ccd6e2cc *d7e3ccd5e2ccd4e2cbd5e2c7d3e0c3cedfc1ccdfbdc9dabecbdebdc9ddbbc9d8b7c7dab8c9ddbc *cbdbbdcbdcc3ccdec6d1e0c7d0dfccd4e0ced6e1ced6e3cbd3e2cbd3e1c7d1e0c6d0e0c7d2e0c6 *d0dec4cedec8ccddc6cedfc6cfddc6d0e0c7d0dcc8d2dfc9d3e0cad6e1ccd6e2ced7e3cdd8e4d0 *d9e5d0dae3d1dae5d3dce6d3dde7d3dce6d3dbe4d1dce4d1dbe6d0dbe4d0dae5cdd8e3cbd6e3c9 *d3e3c7d0e2c5cedfc5d0dfc3cedec2cfdec3cfdec6cedfc3d0ddc2cddcc5d0e0cbd3e1c7d3dfc6 *d2e1c5d1e0c9d3e2c5d2e2c7d3e2c7d4e3c7cfdec8d2e0c6d1e0becbdebcccdfc3d1e1c7d3e3c8 *d4e2cbd2e2ccd5e0ccd4dfc7d3e2c8d4e1c4d0e1c2cfe1bfcedfb9cbddb5c7ddb6c6dcb1c4d7af *c2d6acc2d6aec1d4b3c3d7b2c3d8b2c4d6b3c2d7b5c3d6b2c3d4afc3d6b3c6d6b7c6d7b7c6d7b6 *c7d6b6c9d9bac6d6bbc6d8b8c6d9b2c3dbb3c3d8b1c6dbb3c6dbaec4d8b2c6dbb2c3d8aec5d8ac *c5dcaec3d9afc6daadc5d8adc3d5adc6d8afc4dab6c5d9b3c5dab5c5d8b0c5d6aec5d8b0c6daae *c5d7aec6d9aec3d8adc2d7acc1d7aec3d6a9c2d7abc5d8abc4d8a9c1d6aac3d9acc3daaac2d8aa *c4d5afc5d9acc3d8aac3d8abc2d6a8c3daa8c3d8adc3d6acc1d6adc3d8aec3d6aac3d6a9c1d5a4 *bdd8a8c2d8a8bed7acbfd5aac2d6aec2d7aec4d7acc1d6adc3d6adc1d9acc1d5a8c0d3acbdd2ac *bbd0aabad2acbcceacbcd1abbbd3aabbd3adbdd3acbdd3adbed5aabcd5a9bbcdabbad0aab7ccab *b7d0a9b6cda9b6cda7b3caa3b6cca9b4caa2b2c99db4cca5b4c7a6b6cba4b5c9a1b3cba2b3cba3 *b4cba4b1c9a4b1c9a1b0c7a1afc89faec6a3b0c7a3afc9a1b0c79babc79badc69eadc2a0aec79e *adc6a0b0c79aaec99faec89eadc99eaec8a0aec499aac59aaec69eabc498a8c09dadc59dadc193 *a3bf98aac194a4bd98aac091a6bf98a8c099abc49caac699a9c395a9c399adc59baac699a8c09c *acc39eacc69eaac49baac49dadc49faec6a2adc79fb1cba2b1c79eaecaa1b2c99dafc6a3b2caa3 *afc5a6b1c7a0aec79baec39eadc69aaac19eacc39faec5a4afc8a3aec5a2b3c3a2acc3a5b3c8a7 *b1c8a8b2c9a8b4c9a8b4caa7b7caa6b5c9acb5c3bdc9ccc2cdd2c6d0d68db1cd96b4ce8db2d08a *b4ce92b6ce8bb2d08cb0ce92b3ce89b1ce8ab2cf88b4ce84b1cc88afcd91b5d092b1ce92b2ce87 *b0cd87b0ce8cb3cd8ab1ce80b1cc89b4cf8bb3cf8fb3ce8eb1ce8cb2cd88afc988b1cc8ab0cf8c *b1d089b0cf90b5d087b1cf8cb0ce89b1cb8db1ce8bb0cd8bb3d08cb1cd8cb4d185b3d08bb2d08a *b0cf8cb1cf86b0ce8ab0ce89b0cb87aeca90b5d191b6d28cb1ce8eb3cf8eb0cc8eb4d18bb4d28e *b4d195b6d08eb3ce98b5cf96b9d198b6ce94b3d091b2d18bb1d18cb1d088b1d089b2d08cb4d088 *b4cf8eb1d091b5d18cb1cd88b0ce8cb4d385afd08bb2d090b2d08bb1cd95b7d18eb5d18fb6d08e *b6d18fb8d294b8d38db5d08cb5d28db5d38fb4d391b7d192b6d28bb3d18eb7d493b6d390b6d299 *bad69abbd291b6d28cb8d28fb6d18ab6d18eb5d18cb5d48bb5d297b6d098b9d394b7d198b7d18c *b8d393b7d596bad694bbd798b9d39cbcd598bad496b7d096b9d098b9d596b6d396b9d492bad796 *bbd392b8d298bad492b8d392b8d48fb9d59bbad48bb6d397bbd58db8d29cbbd695b8d391b7d28b *b7d48bb7d38fb6d48cb7d597b8d498bbd396bbd499b9d391b7d692b9d797b9d697bbd39abdd69c *bcd699b9d49ebdd59bbbd897bbd398bbd59cbcd798bad59abbd89abcd699bcd699bad59bbbd49a *bed696bad693bcd593bcd89dbed99bbfd69ec1d79dbbd79abbd597bbd69abdd799bbd89bbbd79c *bfd79bbed397bbd395bbd497b9d59cbdd69ac0d69abbd49bc1d795bdd59cbed79abbd698bbd691 *bdd69abcd694bbd797bdd699bdd79abdd8a2bfda9cbed89ebed699c0d79bc1d99bc0d79abfd898 *bdd79cbfd69abdd79dbdd79abbd598bed8a3c3ddaec7ddb3cbddb6cbddadc8dbb4cbdfb9cbdfb9 *cce1bacddfb8cce0b5c8ddaac6dca3c3da9dc1d99dc1d99ec0d898bed99fc1d89fbed9a1c1d69e *c2da98c2d89dc3dba2c1d89cbfd8a4c0d8a0c1d79ebfd69cc0d6a3c2d79fc0d6a4c3d8aac6dba4 *c2d8a2bed8a1bfd8a2c2d89ec2d7a1c2d79dc1d9a1c3dba5c2dbabc3daaec5dbb3c9ddb4c9dab4 *caddb6cbdbabc7daa2c1d8a0bfd8a2c1d7a5c0d7a2c2d99fc3d8a1c1daa4c2d8a3c3d8a3c1d89e *c0d69dc1d89ec2dba4c1d9a0c2d8a6c3daacc6dbaec7daafc4dbb2c7daaec5daaec6daa6c0d8a8 *c3dba4c2d7b0c7d8b4c8dabacadbbdccdec2cdddc2cfdec3cfdfc3ceddc4d0ddc5cfe0c4d0dfc3 *d0dfc3d0ddc5d0dfc4d2dec1ceddc3cddfc1cfdfc2d1dec3d1e0c3d0e0c1cedfc3cee0c3cfe0c3 *cfdcc1cedfc4d0e0c1d2e0c2cddac3cedfc3ceddc5d0e1c6d1e1c7d1e1c4d1e2c4d2e2c7d2e1c8 *d0decbd2e1c8d3e1c9d5e2cbd6e2cbd7e3c9d4e3c9d4e2c8d7e2cad6e2c9d6e1c9d5e1c9d4e1cb *d7e3cbd8e4cbd8e2cbd8e3c9d6e3cad5e1c7d1e0c4cfe0c0cdddbdcbdcbecbdebaccddb8cadbbb *caddbfccddc4cedec4cee0c7d4e3cbd4e3cbd9e3cddbe3ccdce3cbd8e3cbd4e2c9d2e1c6d1e1c6 *d0dec6d0e1c6d3e1c5d1e2c4d1dec6d1e0c7d1ddc9d5e2c8d3e3cad5e2ccd7e4cbd8e4cedbe5cf *d9e6d1d9e5d4dce5d3dce6d3dce7d0dce5d1dce7cfdbe5d0dde6d0dbe5cedae5cfdae5c9d5e3c6 *d3e3c6d0e1c4d0e0c1cfdec1cdddc2cddec3cedfc5d1e2c3cedfbfccdebcc9dbbbcbddc0cce0c0 *ceddc1ced8c4cddec3cfdfc2cfe0c4cee0c4d2e0c3ceddc1d1e1c0cedfbdcadec2ccdec3ccdec5 *d1e1c3d0e1c4d1e0c2cfe1c6d3e0c2d1e1bfd0e0bdcedeb8ccdcb5caddb4cadbabc6daaec6ddaf *c4d8aec5daafc2d5b2c3d6aec3d7aec3d7aec1d4b2c2dbb2c3d9b1c4d7b1c3d3b5c3d4b5c5d4b5 *c5d6b1c4d8b6c7d9b7c6d8b7c6d8b8c7d7b4c5d6b0c7dab2c7d8aec6d8afc6d9b0c5d9aac3d8b0 *c7dab2c6d8abc3d9afc7dbaec5dbb0c6dbadc3d8aec6dbadc6dbb0c6d9afc6d8afc6d7acc4daae *c5d8b0c6d8aec4d9aec6d7aec5d8abc5d8a9c4d6aac2d7a7c1d7a7c3d8a5c3d9a6bfd7a8c1d7ab *c3d7a9c5d8acc4d8b1c5daaec3d8aec5d8aec4d7abc3d6a7c2d6aac3d8adc3d7acc2d8aac1d6a8 *c1d8a6c0d6a7c1d6a4c0d4a3c1d5a7c1d6a8c1d9a9c3d6abbcd2aabfd5a8bcd6a7bfd3abc1d4a9 *bcd5abbbd2abbbcea8b8cdaab7cea9b9cdaab9d2a6baceaabcd1aabdd1a8bacea6b6cda5b7caa9 *b9cba8b6cba8b7cea7b6cda7b6cda7b5cba4b7cca5b9caa1b1c9a4b3c9a5b2c9a4b1caa1b4cca2 *b1c8a1aec69faec69fb0c79faec6a0afc79dacc5a1b1ca9fb0c8a2b1c79faec39bb3c89aafc797 *aac896aac69bacc29baec197a9c297acc399aec497adc599aac494a9c392abc297a6c094a6bd99 *abc198a8bf94acc38eaac291a8bf92a5be90a2b895a7be91a8c294a7be95a8bf96a8bd98acc194 *a8c194a9c399abc19aa7c198a8bf98acbf99a6c298aac398acc297aac19da8c39aacbf9caec196 *afc39aaac69faec69cadc69caec39ea9bd9aaac69badc49dacc59badc6a0b0c99aafc89faec79f *afc4a5aec4a0adc7a5b1c7a5b2c6a1afc6a0b3caa7b4bfbbc9cdc2cdd2c4cfd592b1cb92b2cd91 *aecc93b3ce80b1cb90b2cc87aec98db0cb87b1cd92b1cc8daec98bb0ce87afcd90b2cc82aecc8a *b2cd90b3cd8ab1cb8ab1cb88afca84b0cd8cb0c989b0cc8eb1ca8bb1cc8ab1cc8fb1cb84adca86 *afcb8baecb85b0cc86aecb8eb3ce89aecb8cb0cb87afcc8db1cd87aec98ab0cc89b0cc8aafcc90 *b2cf8eb1cf8db3ce86b0cb8db2ca8cafcb87b0cb95b5cf8db1cb8aafcc8cafc98ab1cd8ab1cc8d *b0ce8eb0cc8baecd8dafcf86aece8eb1d08bb1ce89b1cd8bb1cd8cb1cc8db1cf8eb1ce8cb4d08b *b0ce8bb0d08eb2cf8db3cb8eb5ce8cb1ce8cb1cf8bb0d18fb3d08eb1ce8fb1cf92b1d08db4d092 *b6d08db3d08eb4d08fb3d089b2d08eb4d091b6d28db2d196b8cf95b7ce8bb2ce92b5ce8eb1ce94 *b5ce97b9d393b7ce92b6ce94b6cd94b7d18fb6d191b3d191b2d18cb3cf91b4d291b5d195b6ce99 *b7d194b5d199b8d19cbad294b9d199b7d29ab9d395b7d397b8cf9bb8d190b2ce96b6d095b7d19b *bad49bb9d394b6d197b6d191b5d098b9d399b8d297b7d195b6d198b8d398b9d295b8d38db6ce96 *bad397b8d292b7cf96b7d298b9d399b6d195b6d499b8d196b6cf94bacf92b8d09cbbd192b6d199 *bbd59cbad498bbd698b9d59bbbd49abad39dbbd39cbbd59ab9d396b9d398b9d397bbd59fbed69a *bdd498bcd496b7d398b9d298bad29bb9d39abbd59fbdd498bad395b9d29dbbd39ebdd598bbd49d *bbd397bbd59abcd69abcd69bbfd697bbd397bbd59bbad396bbd395bbd397bbd498bdd498bbd696 *bbd39abdd39ebad497bad397bcd298b8d39abad398bbd69ebbd69cbbd699bbd69cbdd5a0bdd593 *bad397bcd499bcd698bcd7a0bfd79cbcd69dbbd3a5bfd59ebfd7a2bfd4a7c2d6a6c1d6a7c1daa6 *c3d8a9c2d8a5c2d6abc6daa3c4d9a4c1d89dbfd89ebed6a0c2d7a0bfd5a3bdd59ec0d69bbdd69b *bdd69ec2d69bbfd5a1c0d599bdd79ebed79ebfd7a2bfd59ebed49ebdd7a2c1d6a4c0d6a2c1d89c *bfd69ec1d7a2c1d6a4bfd69ec0d79cc0d6a2c0d69cbfd6a3c1d6a4c2d89ec1d8a5c1d7a4bfd6a4 *c2d8a1c3d8a8c2d9a3c2d89dbfd5a3c1d8a6c1d7a4c1d8a0c0d7a1c1d59bc0d8a3c2d8a1c2d7a4 *c1d6a1c1d89fc1d89bbdd89fc0d6a0c1d6a3c0d6a3c3d8a1c2d7a2c1d8a9c3d8acc1d8adc1d7a5 *c1d3a6c3d6aac2d6b5c6d6b6c7d8b9c8dab9c8d8c1ccdcc6ceddc7d1dec7d1dfc7d2e1c7d1dfc7 *d1e0c6d2dfc8d2dec7d2e0c7d1dfc4cfe0c2cdddc3cedfc5cfdec5d0dfc3cee0c5ceddc5cedec6 *d1dfc3cddcc3ccdbc3cedfc3cddbc6ccdec6cedcc7cfdfc7d1dfc8d3e2c5d1dec6d0dfc3cfe1c4 *d0dec6d1dec7d4e2c8d3dfcad5e2cad5e1cbd6e0c9d3e0cbd3e1c9d3e1ccd3e2cbd4e1cbd7dfcb *d6e1cad6e2c9d6e1cbd5e0ccd5e1cbd6e1cbd5e1cad5e2cad4ddc3d0ddc3ceddc4cedcc0cbddbe *cbdcc2ccdfc3cfdfc5d2e0c9d2e0cad3e1ccd5e2cdd4e0cdd8e2cfd9e2c9d7e3cbd5e2c9d2e0c7 *d1e0c9cfdec5cedcc5d1ddc7d1dfc7ceddc9d1e0c7d3e1cad4e2ccd5e2ced4e1ced6e2ced8dfd1 *dae4d3d9e6d2dbe5d4dde6d4dde5d3dbe3d3dbe5d3dce4d1d9e4d0d8e2cfd8e2cfd9e4ccd7e2cb *d6e1c8d2dfc8cfdec5ceddc2ccddbfcbdec2ccdfc6cee0c4cfdec6cedbb9c9d9b8c7d8bdc7dabd *c7d8bbc9ddbecbddbfccd9c3ced9c3d0dec3ccdcc1cedbbdccdcb9ccddbdccddbecbdcbdc9d9be *cdddc1cedec3cee0c6ceddc3cedec2ceddbfcddeb3caddb6cbdcb1c8dab3c6d8afc4d7afc3d8b0 *c4d8afc2d7afc2d4adc3d7b1c1d5afc2d4b1c2d6b2c0d2b4c1d3b3c3d4b4c3d5b4c3d5b8c5d6b7 *c4d3b7c6d6b8c3d5b7c6d7bbc4d4b8c6d8b5c7dab6c7dbb5c7d9b0c7d8b5c5d6b6c6d8b4c5d6b3 *c5d6b8c7d8aec6d8b1c6daafc6d8aec5d8b1c6d5b5c4d5b1c5d7b1c3d6b3c3d5b5c5d9aec4d6b0 *c4d6b2c4d5adc3d6b0c2d6afc3d5adc0d5afc3d6afc1d5abc2d4abc0d3adc4d7aac1d6aac1d5aa *c1d7a9c1d5aec3d7b3c6d8b4c6d9afc5d9b6c6d4aec2d3adbdd5acc0d4aac0d4aec1d6adc0d3a9 *bed5acc1d6aac0d3adc1d3aac0d3aac0d3a8bdd3acc3d8acc1d3adc1d3abbfd4afbed3aebfd3aa *bbcea9bccea9bbcfa9bbd0abbbd1a7b4cba8b9cca7b6cea9b8cfabbaceabb9cda9b7caa8b6cca4 *b2c9acb6c9a9b3caa7b6ccaab7c9a6b5cba9b6c6abb5c8a8b7cca5b5c9a8b0c5a8b4c9a4b1c6a0 *aec2a0adc5a0adc3a0aec3a0afc3a2adc89faac2a0acc7a3b0c3a1adc39eaac0a0adc09eabc3a0 *abc19dacc39ca6bf99aac59babbe97a8c198a9c195a7c095a5be94a2bc97a6be94a4bd94a7bc8f *a6be94a4bf97a5be93a4bf91a4be94a3bc8ea3bc949eb88da1bd8ca2bd8da0ba92a8c08fa6bd94 *a8be94aac193a5bd8fa7bf99a6be8ea4bd95a3bb99a4c192a4bf98a5be8fa2b798a7c197abc199 *abc399aac098a5bd99a8c195abc293aabe9caec59daec397a9c29aa9c099aac39aaac19dacc39d *abc1a0afc5a1afc49baac09eaec7a4adc1a4aec0a5b1c3a1acb6bdc6ccc4cdd1c9cfd493b0cb8f *b0cc97b4cd90b0ca8fb6cb8db4cd8bb0cd8bb0cd8ab0cd8cb1ce88aecd8eb1cb8bb2cb8cb1cd8a *b1cc87b1cb8db4cc88b0ce8fb4ce8cb0cc8ab1c98eb6cd88afcc8aaecc8aafcd8cafcc8db0cd86 *b1cd86afcc86afcb87afcc8badcc8aaecc8dafcb8eafcf8bb0ce8db0cd8bb1cd89b0ca8db0cd8e *b1cb8eb0cc8bb0cd91b3cd8ab0ce8caecc91b1cc8bafcb8fb2d084afcc8aadcb8bb1ce86accc8b *b1d08cb1d193b2ce94b3ce8caec98baecb88afcd8ab0cf91b3cf8eb3d18db1ce91b3ce8eb2ce85 *b0cd8bb1cc85b0cd89b2d089b2d08db1cf8cb1ce92b6d08fb3ce8fb1ce90aecc92b0cd8eb1d08d *b4d08fb5d38db1cf8db4cd86b2ce8bb0cc8eb2ce8db3d18db4d28db4d193b5d091b8d197b6cd8d *b5d196b6d09ab9d092b6ce9db9d092b6d197b6d195b9d296b8ce91b5d196b6d390b5d299b8d299 *b8d199b8d19abad19fbbd293b6d09cb9d497b7d298b8d098b7d29abad299b7d49bbbd498b9d19c *bbd19dbbd294b5d098b8d598b9d097b8d291b9d496b9d597b7d192b8d298b7d19ab9cf95b6d18d *b5d298b8d197b8d395bad391bad397b9d198b8d494b7d198bbd499bbd496b9d39cbbd797bbd39b *bad399bbd69cbad49cbbd696bad6a0bbd69cbbd698bbd59dbbd594bad498bad49dbcd59bbbd497 *bbd59bbcd79bbad59fbdd59fbed49abcd39dbcd69ab9d59dbbd698b7d499b9d49ebed79abbd29a *bbd498bad495bbd695bbd69cbcd39abbd399bbd39ab8d49dbfd69fbdd59cbed698bcd695bbd59a *b8d598b9d29dbcd79cbdd39dbdd692bad19bbbd698bad49ebcd698bbd393bad695bbd59bbdd596 *bbd399bbd5a1bed79cbcd598bcd49abcd59bbbd495bbd399bed69abdd69dbed6a0bdd59abbd49e *bfd89cbfd69fc0d69ebfd79fc0d7a0bed89dbdd89fc1d8a4c1d69fc0d79dc1d89ebfd69dbdd6a2 *bfd699bdd6a1bdd49cc1d99dc1d69ebfd7a0c0d798bcd6a1c0d7a0c1da98bbd69ebfd79fc0d5a2 *c1d79cbed6a0c1d9a4c1d8a6c2d9a1c0d6a3bfd6a2c1d69fc2d69bc0d6a6c1d69bbfd6a1c1d8a5 *c2d7a4c0d8a2c1d5a2c1d69ec1d8a3c0d5a0c0d6a1c1d69dc1d79ec1d6a7c3d7a1c1d79bc1d6a1 *c2d6a4c0d6a4c3d6a2c1d8a2c1d8a6c3d89dc1d8a4c1d8a3bfd7a2c2d89fc0d898bdd7a4c0d7a4 *bdd6a0bed6a5c1d6aac3d7b2c7d8bbc7d9bbc9dbbeccdac2cedcc6d1e1c9d3e2cad3e0c9d4e0c9 *d4e0cad1dec8d3e0c9d3e1c7d1e0c9d2e0c7d0dfc6cfdec4d0ddc6cedfc4cfdfc3d0e1c5cedfc2 *cee0c3d0e1c6cee0c7d1ddc4d0dfc6d1ddc7d3dfc9d3e0c7d0e1c8d1e2cad2e0c7d2e0c6d1e1c4 *d1e0c3d0ddc5d1e0c6cfdfc4cee0c7d1e2ccd3e0cbd4e0cbd5dec7d2dfc6d1dfc7d2e0c8d3e1c9 *d5e2cad4e2cbd6e2c8d4e0cbd7e2cbd6e2cbd6e0cdd7e2ccd6e3ccd7e4ccd6e2ccd7e2c6d2dec3 *ceddc3cfdec3cfdfc7d0e1c6d3e1c7d3e2cdd6e1ccd7e2ccd8e1cad6e2cbd6e2cad3e1c9d1e0c8 *d2e1c7cedfc6d0dec6d1dec7d1dec7d0ddc6cedec9ceddc7d1decad1e1ccd6e4cfd7e3d0d8e3cf *d8e1d1dbe3d2dbe5d3dce5d3dde6d3dde7d3dde6d3dde7d1dbe4d0d9e2d1dae2d0d9e3cfd9e2cd *d6e2cbd6e4cad1e2cad2e1c9d1dec2cedcc0cddbc2cddec1cedfc3cde0c1cedebfcbddbbc9dbb7 *cadbb9cbd8bbcbdabdcbddbccbddbdcbdcc1ccdec0cce0bec8dcbdc9d8bbcbdebdcbdbb9c9dcc1 *c9dcc0cbdcc0cbdec3cedfc3d1e0c0cedfbccbdcb5c8dcb1c7daabc5d9abc4d7acc4d8b1c6d8b0 *c5d6b1c6d7aec3d6b2c2d5b3c2d7b1c2d6b5c1d6afc1d5afc2d4b2c1d0b3c4d1b6c3d4b6c3d3bb *c6d6b9c6d7b8c6d7bdc7dabac6d8bcc8d7b8c7d8b6c7d8b5c6d6b6c6d8b3c7dab3c5d7b5c6d9b9 *c6d9b7c7d7bac6d8b6c6d8b5c7d9b3c8dab6c6d9b6c6dab1c4d8b5c5d5b6c5d3b5c3d6b5c4d6b1 *c3d3b3c2d3b4c5d7b0c2d7afc2d6b1c2d6b3c3d5b2c4d4adc3d6acc4d6acc2d6aec4d7aec2d7ae *c3d8abc1d6abc1d5afc4d6b1c5d8b0c3d6b1c5d8b1c3d8b3c2d6adbdd4acc1d4b0c2d4aec1d6ad *c3d8adc1d3aabed8acc1d6adc1d6afc2d5adc1d5aec0d4acc1d5adc1d3abbfd3adbfd3aabed5ae *bed3acbccfa9bdceabbbcfa8b9d1a9b7cda9b4c8a8b3c8a6b5cca8b7cdaab8cdaebacea8b8cba6 *b5cca7b6caa7b5c8a6b3c9a4b4c9a6b6caa8b3c8a9b9cba9b4cba7b4c7a7b6cba5b6cba6b4c9a2 *b1c7a7b0c3a4b3c7a7b5c6a1b1c79cacc1a0aec5a3b1c3a0b0c6a2b1c9a2b0c7a1adc3a2abc4a3 *aac1a3abc3a0acc29baac39ba8c59ba7bd9facc099abc498a8be95a7bf90a5bc93a5be90a1bd90 *a3bf8ca2bf91a6bf97aac095a7bc8ba5be88a2bc8fa3bb91a3bd93a1bc91a5bb8fa0ba8ea4bc91 *a1bb929fb690a0b690a1bd8ca3c091a2ba97a8bc98a8bd92a2bc92a3b791a9bd93a8be90a4bc9c *a6bb92a2bd96a7be98a5bb93aac193a4bb95a7bb91a4be96a4bf98a7c09dacc39baabe98aac09e *aabd98a9c19bacc39facc298acc39dafc5a3b1c6a1adc6a1b1c19ea8b4bfc5cbc5ccd1c8d1d492 *b1ca90b3ce92b3cc8bb0cc8eb2cd90b3cd8fb1cc85aecc89b0ce8ab1ce8db1ce8ab1cf89b1cd8e *b1cc8bb0cb8cb1ca89b4cf8fb3ce8db0cd8aaccc89b1cd90b2cb81aecb90b3ce91b2ce87aecc86 *aecc8cb1cd8ab2cd89b0cd87afcb8aafcb8bafcc8bafcd8cb0ce8bb0cd85aecb8ab1cb8cb1ca84 *afcb8bb1cd89b0cc8ab0ce8db1cf8aafcb8caecb89aecb8bafcc89b1cb8db1ce8ab2ce8dafca86 *acca85adcd8eaecb8eaeca87acc98db0cc89afce8cb1d186aacb8cb0cb88b0cc8cb1cc8cb1ce87 *b1cc89b3ce8bb1ce8eb1cf87b2cf8cafcc8db1cc8eb1cf8fb4d08db6d18eb2d185b0cf8ab2cd8b *b3ce90b6cf89b1ce8db3cf8db2ce8bb1ce89b1ce8db1ce8bb4d192b5d18eb7d091b7d390b5d197 *b6d397b6d19ab6d29ebad391b7cf9ab8d289b1cf8eb6d196b6d190b4d18eb5d191b9d38fb5d19a *b8d09bb9d29ebad49bbcd69cb6d29cb9d198b7d298b7d298b9cf97b8d29bbad39db8d29ebad19f *bad1a3bcd19abbd494b6d497b7d397b7d29dbbd396b9d296b6d397b8d190b5d192b7d192b7d492 *b9d19ab8d391b6d293b8d298bbd396b9d69bb8d396b7d599b9d395b8d199bad298bbd594bad699 *bdd49ab9d399bcd695b9d599bbd696b8d39ebbd49ab6d096b6d199bbd597bad59abad59abbd49b *bbd498bcd499bbd397bad39abbd499bbd39abbd598bbd698bdd492bad399bad397bbd39cbdd498 *bbd492bad399bbd596b8d398bbd396bbd59abbd599bad29abdd699bad597bad59bbbd69bc0d896 *bbd599bbd396b9d499bdd69abcd49dbbd69abbd698bbd699bcd49abdd59bbcd495b9d295b9d596 *bad596bbd59abcd695bbd69cbdd799bdd399bbd596bbd59bbcd49bbdd49dbdd69bbed697bcd69c *bfd69ec0d59abed694bbd69cbfd69dc1d59abdd69cc1da98c0d89dc0d6a4c1d69cbdd798bcd798 *bcd59dbdd69ec1d79cc0d69dbed69dbfd89bbdd69dbcd699bdd79ec1d39cbed69cc1d897c0d699 *bdd5a0c3d89fbdd399bcd7a0c0d79fc1d9a1c0d79dc0d8a0c1d89ebed59cc0d7a3bfd6a2c0d8a0 *c1d8a0c1d7a0bfd7a1c1d7a2c1d89cc0d59dc0d59ebdd49dc0d69abed7a0c1d7a0c1d6a1c2d7a4 *c2d6a4c3d8a5c2d8a4c1d89ac1daa0c1d79ec1d89fc0d8a0c2d89bc1d79ec1d6a2c0d6a3bfd6a1 *c1d7a3c0d6a3c1d49fc1d6a7c3d5afc6d7bbc7d8bcc8dcbecbd8c2cddcc6d0e0c7d3e2c8d5e2c9 *d5e4c9d6e2c9d6e0c9d4e2c7d4e2c6d3e0c6d1e0c5d1dcc2d0dec4d0dec7d1dec5d1e0c4d0e1c3 *cfdec5cfe0c5d1ddc5d2dec7d1e0c7d2e3c7d4e2cbd4e2c9d3e0c6d0e1c3d2e0c2d1e0c1d1dcbe *cee0c2cedfc2cedfc2ceddc3d0dec1d0dec3d1e0c5d2dec6d1e2c9d4dec7d3e0c3d0e0c6cfdec4 *d1dfc6d1e1c6d2e1c7d4e3c8d3e1c7d3e2ccd7e3cbd8e2ccd8e3ccd8e3cbd7e2c9d4e3c9d4e1c3 *d0e1c1d0e0c1d0e0c6d0e0c5d2e0c5d1dfc4d0dfc7d3e1c7d4e1c9d4e2c9d3dec9d4e1c8d2dfc7 *cfdec4cfdec4ceddc4cee0c3cdddc4cedec2ceddc6d1ddc6ceddc9d1deccd6e0ced7e0ced8e3d0 *d8e1d1dae3d1dee3d3dce6d5dee7d5dde6d6dde6d6dde4d2dae3cfdbe5d0dbe6cedae4d0d9e6cd *d8e3ccd6e2cbd5e2cbd4e2c9d4e0c6d3e1c5d1e0c4d0e0c3d0e0c1cfdcc3cedec1ccdebeccddbb *c9ddb7c9dbbbc9dcb6cbddb6c9d9b8c7dbbdcbd9bbcadcbbc9d8b7c7dbb9c7dcb6c6dbb6c7dbbb *c8d9bac9dcb4c7d9bac8dcbbcbdeb9c9dbb5c7ddb5c4dbb1c5dcafc5d7aec5d8b0c5d7aec3d7b0 *c5d8b3c4d6b2c1d4afc0d6b3c2d6b0c3d4b2c4d6b1c2d2afc1d3b1c2d3b1c2d5b5c4d7b4c6d8b5 *c6d4b8c6d4b5c4d5b4c3d5b6c7d8b5c6d6bac9d8b8c6d7b8c6d8b6c6d9b5c7dbb7c7dcb6c7d8b6 *c7d9bbc7d6bbc6d8bbc6d8b6c6d7b6c7d8bac9d9b6c7d6b3c3d5b1c2d3aec0d3b2c2d6b1c4d5b3 *c5d6b0c3d5b3c1d3afc3d6b0c3d7b4c3d5b0c3d4b0c3d4afc3d6b0c3d6aec3d6b0c2d3b0c2d5af *c4d6aac1d6adc3d7acc4d7b0c3d7b1c3d6aec3d7b3c4d6b1c5d7afc3d6aec1d4abc1d6adbed3ac *bdd4afc1d4b0bdd2aebed3aabfd3aac0d3adbed1abbdd0adbdd3acc0d6aec3d5acbfd3aabfd3ae *bed5abbfd5b1c0d2aabcd0acbaceacbacea9b5c8a8b3c7a4b1c9a6b1c8a6b5caa2b4cba5b5cca7 *b6cca1b5caabb1c5aab3c7a3b4caaab7c9aab9c8a9b6caa3b6caa7b4c9aab9caa9b6cba4b2c9a9 *b4caa3afc7aab2c3a2b4c99bb1c89fb0c59baec1a1aec79eadc69daec7a0b0c4a3aec59eabc1a0 *aec79fadc79eacc49daec59caac29ea8c197acc397abc398abc398acc293a3be97a6bf97a3bc91 *a5be94a7c08ea3be90a5bd95a4bd91a5be8da5bc94a6bd96a1bd8ea3bb8c9fbb8ba0ba88a1b786 *9eb88ca0b697a4b78da0b991a3b98fa0b98a99b2859fb88da0b68aa4b98fa9bf97a2b89aa5bf8a *a2bd8ca3be96a4bb8a9ebf91a7bc96a9bf96a8be95a8bd92a8bf92a3bc99aac292a8c091a4bc96 *a2b892a4bc99a9bc98aabf9aa6c199aac19caac29aa9c09eacc49ca9c098aab2bec8cdc3cdd1c7 *d0d68eb1cb8eb1cb8cb0ca8ca9c489b0ca8bb1cd92b3cf8cb2d089afce88afca84adcc8ab1ca90 *b1ca85aecb8cb0cb8eb2cc8bb1ce89b1cc89afcb88b1cc8eb0cc8aaecb8db1ce8db0cc8cafcd8d *b0cd8eafcb8daeca8aafc98caec987adcb90afcc8aadc98cadc98dafcb8eafcb89aeca8badcb8b *aecb8ab0cc8dafcb8aaecb8dafcc8daecd92afcc95b0cb98b0ca8eacc98aaccb87acca86aacc8b *aecc8eb1cd86aec78aaccb8aabc98aaec988aecb8cb0cd91b0cb92b0cb8ab0cb8db1ce8fb0cc88 *aece8bafcc8eaecd8aafcc88b0cd90b3cd8db1cf93b2cf8caecf8eaecd8eafcc8fb0d08bb1cc8a *b2ce88b1ce8ab1cd8fb3cf90b0ce91b2cd8fb3cf8db4cf89b0cd88b1cf8db4d197b7d08fb2d08c *b1cf92b6d18cb3ce8ab1d197b6d196b7d08fb6cf90b5d295b4d195b6d196b6d391b4d192b4d198 *b6cf91b7d2a1bad19db9d1a0b8d19cbbd29cb9d19db8d19db8d198b7d299b8d19fb8cf9eb8d29c *b7d19db8d1a0bad59ab7d199b9d298b8d395b7d49bbad399b8d198b7d197b6d194b5d198b6d096 *b7d296b7d396bad59ab8cf91b6ce99b6d297b6d191b4d097b7d398b8d19bb8d398b9d395b6d198 *b7d497bbd498b9d19bb7d19bbbd495b6d395b9d69abbd59bbad6a3bdd59cb8d395b7d496bad598 *b9d496b8d497bad49abbd396b8d39bbbd393b6d192b8d299b9d39ab9d394b7d499b9d69bb9d3a1 *bbd39db9d197b9d39abad39bbcd599bbd698bbd596b8d692b7d398b7d29abad39ab9d395bad592 *bad391b9d695b9d59bbad59ab9d497b9d59abbd491b7d396b8d298b9d49abbd69cbbd497bcd399 *bbd49bbbd39abad399bbd297bbd499bcd699bcd59abbd69bbcd397b9d499bbd49abad492bad599 *b9d595b8d59cbdd69dbdd69fc0d69abbd49bbbd298bbd499bdd89dbed89bbcd69cc0d69abdd59c *bdd69fbdd69fbbd59ebfd699bed69ec0d89ebfd79dc0d89dc0d69fbdd59fbdd49dbdd69abcd59b *bcd39bbbd69bbfd8a4c1d69bbdd4a2bbd5a1bfd7a0bed79abcd598bdd797bcd7a0c0d7a3c1d7a0 *c1d6a2bfd5a4bfd4a1bed5a2bfd79bbcd49cbed79ec0d79dbed59dbfd59bbdd69ec2d79fbdd5a0 *bfd49fbed6a1bfd79fc0d8a3c0d6a2c1d8a1bed7a2c0d5a0bfd69bbed69ebbd69dbed69fbdd6a1 *bfd6a1c1d5a4c1d6a4c0d6a7c1d6a5c1d7b1c4d8bbc9d8c0cad8c4cddbc4d0dec7d1e0cad3e1cb *d4e0cbd2e2cbd4e1cbd6e2c9d3e2cad4e0cad6e1c8d3e2c6d0dfc5cedfc4cedec4d0dfc5cee1c2 *cee0c5d0dfc4ceddc5cfdfc7cfe2c7d1e2c6d0e0c9d4e0cbd5e3c7d3e0c6d1e0c1cedeb7cbdbb0 *c7dbb8caddb8cbddbbcbdebaccdeb8ccdebfccddc0cddec2cfdfc3cedfc6d3e0c5d0debcccddbb *ccdfc0cce0c1cedfc2cedec6d1e0c6d1dfc8d1e0c9d3e0cbd5e2cad5e2cbd6e1cbd4e0c7d1e1c5 *d0e0c2ceddbfccddc0ccdbc1ceddc5cedfc2ceddc3cbdac4cfe0c6d1e1c7d1dec8d2e0c6d1dfc6 *d1dfc7cfdac5cddec6d0ddc3ccdbc2ccddc1ccddc5ccddc7d0ddcad1decbd5e2ced8e3ced8e2d1 *d9e6d1d8e3d4dbe4d3dce4d5dce5d3dde6d4dde6d4dee6d5dee5d3dbe2d1d9e5ced8e4ced7e3ce *d8e2ced9e2cdd6e2cdd7e4ccd5e3ccd2e0cbd2e0c8d1e0c8d2dfc6d1e0c6d2e0c5d1e2c3cfdec0 *cbddbdc7d9b6c6d8bac6d6b6c5d6b4c7d8b1c3d9b6c4dab6c6dcb9c6d8b6c3d7b5c4d7b1c4dab4 *c5d8b6c5d8b6c6d6b6c6d6b7c5d7b8c6d7b4c6dbb3c3d6b1c3d8b0c3d7afc6d8aec2d8acc3d6b3 *c4d7b2c1d5abc1d5b0c2d4acc2d5afc1d4afc0d5b2c0d1b1c3d4b4c0d3b4c1d5b3c1d5b4c1d6b8 *c3d5b6c4d7b7c6d7b6c6d5b9c5d5b7c6d6b9c6d7b9c5d6b6c7dbb6c6d7b3c5d5b6c6d5b8c7d8b6 *c6d5bac5dab7c4d6b7c6d7bcc5d5b9c7d7b5c4d6b6c6d9b6c4d3b7c2d3b1c1d1afbed3acbfd1ad *bdd3b1bdd2b4c1d3b3c3d3b3c3d2b3c1d3b5c1d3afbed3b0bfd0b0c2d4b0c2d6aec3d5b0c2d4b2 *c2d5b0c2d6b1c2d6b0c0d3b0c2d3afc3d5afc3d3b1c2d8aec0d7b1c2d2b0bfd1aabdd1aabfceae *bdd3afc0d2acbdd1adbecfaebed3b1bed2aebbd1acbfd1acbfd1aebdd3a8bcd3aebcd2abbed5b1 *c1d4b0bdd1adbbd1aebacfabbaccacb8cba6b4cca2b2c9a1aec5a0aec1a6afc6a6b4c8a4b3c9a9 *b2c9a7b2c8a8b6cbabb6cbadb6c9a9b7cdabb6c9a9b6c8a5b2c7aab6c9acb7cca9b5cea3b6cca9 *b7c9a6b6c7a8b3c5a7aec5a1aec7a3aec1a1adc5a2adc39dabc39fadc1a1adc2a2aac1a0adc19d *aec19faac59daac3a0acc39caac39eaac199a7c19badc495a8c299a6bd98a7c098a5bc96a6bd98 *a5c098a3bb9aa5bc93a5bb92a4c0919eba93a0c18ca0b994a7be91a6bb899db88fa0bb8c9fb794 *a1b38ea2b68aa4b88d9eb98d9fbd8e9eb7899eb88ca0bc92a1bb8a9eb885a1ba91a1bc949fbe8d *a2c18a9fbc8fa2b98f9fb68da0b68ca0b68ea4bd8ca2bf95a7c096a4bd98a6bb99aabf99a5ba98 *a3b99aa7bf97a6bf9aa8c09aa7c19aa6c09caac09ca7c29badc09eacc09eadc299a3acbec8cdc4 *ccd2c9cfd58baec990b2c98aaec88cadc98daecb8aaeca8aaec987adcb89aecb8aafcc8db3cc93 *b2cb90b1cb95b1cd88b1cc85b0cb87b1cd8ab0cc8ab1cd86aecb89abc98eaec986aec88dafc888 *aec78aadc987aec88bafc98fb0ca90adc78eadc98eaecb86acc98daeca8cafc98caecb8eadcd8b *afca8babc98daeca90afc98fadca92adc892afcb91b1cb8cacca96b1ca8eb0c892afc98baec98b *afc98eaecb8cacca8aafcc8eafca8daec886aec989aecc8baecd90b0cb8eb0cd8fb1ce89afcb8d *b2ce8aafce87aecb8dafcc8bb1cc8eb1cd95b4cf8fb0cd97b1cd8cb0cb8dafcd95b1cc95b3ce8c *b0ce86adcb92b1cc8cb1cd92b2ce91b4ce98b6ce97b6d091b3ce92b3cf8fb2ce8eb2cf8bb1ce8c *afcb8bb2ce90b5d18cb0ce8db1ce8fb2ce8eb5cd8db0cc8cb6ce94b3ce90b4cf95b2d097b7d097 *b5ce92b6d097b9d396b9ce97b6d19fbacea1bdd39fbbd1a4bbd1a4bad2a3bbd2a1bcd4a0b9d1a2 *bad0a1bcd39ebbd29db6d09db7d19eb9d09db9d19fb8d198b7d098b9d196b7d19bbad295b6d099 *b7ce99b9d499b7d39bb7d09bb7d39fbbd2a0b8d198bad19bbad094b7cf9eb8d19fb7ce99b8d298 *b9d498bbd397bad19ebbd299b9d59eb8d399b8d49dbbd697b6d199bbd59bbbd39cbed59bbcd599 *b8d497b7d195b6d396b7d29bbbd29ebdd698bbd592bad29ab9d29ab9d39cb9d399bad298bad29b *bbd397bbd396bad398b7d29dbbd49bbbd692b6d196b8d297b9d197bdd395bbd299bcd39abbd29a *bbd398bad098b9d197bbd39abbd39abbd694bad696bad793b9d09bbad293b9d399bad39ab8d292 *bbd39abcd59dbdd597bbd391b7d298bad499bbd39bbdd595bbd39abcd599bbd59abbd39abbd397 *b8d19cbad59fbdd49cbcd49bbbd69fbdd59bbcd49bbcd497bbd49bbbd39dbed698bbd39ebdd799 *bbd69cbcd699bdd398bdd69ebfd5a1c0d69dc0d597c0d89dbdd69abbd59fbed6a2bdd69fbfd5a1 *bed69ebcd5a0bdd69bbbd399bcd5a1bdd6a4bed69ec0d79dbed4a0bed59fbed69dbcd59dc0d79c *bcd4a0c1d79fc0d7a2c1d6a2bfd59fbed6a2bcd4a1bcd49ebcd49dbcd49dbed79cbed79dc0d4a2 *c1d4a0bbcea4c1d39fbfd5a2bfd49cc0d39dc0d69dc1d8a4c2d6a2c1d69dbcd4a6c0d69dbdd39e *c0d69fbfd69cbfd69ebbd6a4bdd4acbfd3afc1d6b1c4d7bfc9d7c2ccdac4cedec8d1ddc9d4e0ca *d6dfccd5e0ccd3e1c9d3e0cbd5e1cbd3e1c9d3e2cad5e2c9d2e2c7d1ddc5d0dec4cfddc4d0dec6 *d0e0c5cfdec4cedfc6cfdfc7d2e0c9d2e0c9d0dfcad3e0cad8e0c9d2e2c8d1dfc6cfe0bed0e1b3 *cadbb2c7d8afc6d9aec7dbabc6daadc7dba7c4d8b1c7d8bbcddeb8ccdbc2cddcc6d1dfc3d1deb8 *c9dbbccbddbccadabdccddbccadbc0cfdec5d2dec6d0dfc6d1dfc8d4e1cbd6e2ccd5e2cad4e1c9 *d2e1c5cfdec2ceddc3cedac2cddac2ccdcc1ceddc4ceddc6cdddc4cedec3cddbc6d1ddc8d1ddc7 *d0dec6d1ddc6d1dbc4cddec5ceddc3ccdcc2cddcc3cddbc4ccdcc8d2dfcad2deccd4e2cdd6e1d0 *d8e5cfdbe3d2d9e2d6dde5d6dde5d5dde5d5dce5d6dee7d7dce6d5dce5d3dbe3d1dbe2d1dbe3ce *dae4d1dae5cedae4cfd8e2d1d7e3d0d6e2cdd6e1ced6e1cbd3dec9d3e2ccd5e2cbd4e0c9d0e0c6 *ceddc5cedcbfc9d9b6c6d7b6c2d5b9c4d7b6c5d6b4c3d4b1c3d6b3c3d6b5c6d8b6c3d7b6c1d3b1 *c2d6afc1d4b6c1d3b6c3d7b6c3d4b2c2d5b5c2d6b5c3d7b1c3d6b5c3d3b2c2d5b1c3d7b1c5d5b2 *c4d5b4c2d4b4c4d6b2c3d4b1c1d4b0c3d5b3c1d4b2c1d4afc1d3b0c2d4b1c1d5b3c3d4b3c3d4b5 *c0d4b3c2d3b1c3d4b6c6d5b9c4d6b8c4d6b9c7d9bbc7d6bbc9d6bac6d6bac5d7bbc6d6b7c6d7ba *c5d4b8c6d6b6c4d3bac5d6bdc6d6bbc3d4bac4d6b3c3d3b0c3d6b4c2d4b4c2d4b4c3d1b1c1d1af *bfceb1bccfb0bed0b0bdceaebed0b0bed0b3c1d4b5c3d6b1c0d2b4c1d2b0c1d2aec1d4b1c2d5af *c1d3afbdd4afc0d3b1c1d5adc1d3afbeceb2c0d3aebdd3aebed3adc0d3aebcd2aebdd0aac0d1ad *bdccadbdd1aeb9ceadbcceabbbcfa9b7ceaebdceabbbccb0bbcbaebdd1afbbcdacbacdaebbceaf *bdd1aec1d3acbdd4a8bcd2aebbcbabb9cbadbacba5b6caa5b1c4a4aec5a3b0c6a5b2c5a3b5caa6 *b4c5a9b4cbaab0c3aaafc2abb6c8aab5caa9b5caaab7ccadb5cbadb7c6adb6c9aab4cbacb6caa9 *b8ccacb6c9a6b3c7a4afc7a1b3c4a6aec5a3acc39dafc59fadc2a4adc3a0adc19daec59faec1a0 *abc2a4aec39cabc19babc190a7c199aac39ca9bfa1aac099aabb99a8bb9ba8be98a6ba92a3b68f *a4c093a3c195a4bb95a4bc93a5c090a9bd90a4bd96a2bc88a0ba8ea0be8aa0b88fa1bb899fbb8c *a2ba8e9eb695a2ba90a3b6889db68a9db68c9fbb8b9fb489a4bd899fb38da0bb8da1b88da0bb8e *a1b68da3bf8d9dbd95a6bd98a1b396a0b392a5bb91a2bb979eb893a7bb93a9be9aa6bb99a6bb99 *a9bd98a9bf9da9be9ba2b994a4bf9ca8bd9da6bd9cabc49fabc0a1acbfa1adbea3adc3a2a9aebb *c6c9c3ccd1c9d1d486aec98ab1cb8cb0ce86adcb8caecb88adc98bb2cb88adca85adcc85adcc87 *aecc84aecb7aacc990b2ca8db1cb8db1cb8ab1cc86b0cb86aeca7eafcc86aecc8fb1cc8bb1ca86 *acc785acc98badca8cb1cb8cb1cb85acc98daecc8badcc8bb1cc8eb1cd96b0cb92aec98dafca8e *b0cb8daec990afcb8fb0cb91b2cc91accb93afcb97aecb89aecc8baccb8db1cc86accb8cb1cb89 *aecb88acc888aecd82aec98bb1ce86afcc88aecc87aecb8eafce8bafcb90b3cc83adcb8eb2ce8e *b1cc91b1ce8eb3cf8aafcc89b0ce89b1cd8bafcc91b2ce89b0cd90b1cd8fb1d08cb2cf90b1cc90 *b3d088b1ce8cb3ce8aafcd86b2ce89b0ce8bb2cf94b4cf8cb3ce90b4cf89b4cf88b4d18bb4d187 *aed08cb2cf8bb1ce84b0cd8bb4d18cb4cf8ab1cf89b3cf88b4ce8ab5d08db1ce8bb4cf91b1ce93 *b6d291b5d08db2ce93b6d29ab6d29cbad5a0bad1a3bbd0a5bcd1a1bcd39fbcd4a1bed4a2bcd4a2 *bbd2a2bdd4a1bbd0a1bbd49eb9cf9db7d298b8d09bbbd29db9d49cb7d399b6d195b6d19cb8d397 *b8d29bbad59abcd69fbdd49bbbd19bb8d39abbd398bbd39abad19bbbd593b7d195bace96b9d092 *b7d391b5d38eb6d195b6d398b8d19ebbd593bad594bad49fbbd597b8d39bbbd698bad397b9d492 *b8d599bbd698bad393bad298b8d196b7d297b6d295b9d496bad590b7d397b9d390b9d490b8d196 *b7d094b6cf96b9d399b9d29ebcd592b9d599bbd492b9d39abad398bad396b6d391bad59abed69a *bbd49bbbd79bbdd697bbd693b9d697bbd697bad390b7d395b7d393bbd392b9d396bbd499bdd395 *b7d199b8d298b9d399bbd398bbd390b8d292bbd48abad598bed595b9d39bbbd694b9d392bbd497 *bad695b9d599bbd59bbfd798bcd298bad597bbd69cbdd698bcd598bbd79bbdd89ac1d89cbfd395 *bbd49dbdd499bcd49bbdd498bcd89bbdd59cbfd69fc3d59abfd496bdd399bbd699bed699bdd398 *b8d697bbd598bed598bcd39dc1d69ebed6a2c1d69bbed59bbcd698bbd69bbfd5a0c0d89bc0d49a *bed5a1bfd899bcd598bcd599bed59bbdd59abdd59abdd39cbdd59dbfd6a1c0d89dbed794bbd79b *bed699c0d69bc0d89ec1d79dc2d69dc1d69abed69abfd797bcd69cbdd699bfd69abed6a2c1d69d *c0d49ec0d69dbbd699bdd59ebbd6a5bfd5a8c3d8aec4dab1c6d8bbccd9c0cbdbc6d1dec6d3e0c8 *d4dfcad7e2cad7e3cbd5e2cbd3dfcbd6e2cbd5e0c9d3e1c9d4e2c7d4e2c7d1e2c4d1e1c3cfdfc4 *d1dfc6d1e0c5d0e0c2d1e0c2d0e0c4cee1c5d0e0c6d5e4c8d6e4c9d7e1c9d3e2c6d3e0bfcee0b1 *c8dfacc6ddadc6daa6c3daa4c5d9a7c3d9a4c2d8a4c1d6a4bfd6aec8ddb3c9ddb1c7dcbacddfb5 *ccddaec8dab1c9d9b0c7daafc6dbb2c7dcbacbdec3d0dfc6d2e1c5d1dec6d5dfc8d3e2cbd6e2ca *d5e2c7d4e0c3d0e0c5cee0c1cee0c0ceddbfcdddbfccdec1cddcc4ceddc3ceddc3cedec3d1ddc3 *cfdec4d1dec6cfdbc6d0dec3ceddc1ccdcc2cdddc2cddcc6d1dfc6d1dec9d3e0ccd6e2cbd6e1cf *d8e3ced9e3cfdce3d3dbe3d1dce5d3dde4d3dde5d2dde7d5dde5d3dbe6d2dce5d0d9e5cedae5cf *dbe5d0dae6d1dbe3d1dae3cfd9e3cfd8e1ced9e3cdd8e3cdd8e5ced7e2ccd8e3ccd6e3cbd6e3c8 *d2e1c7d2e0c3cfe0bacadbb7c4d4b3c6d6b6c5d6b8c7d8b1c4d3afc1d4b1c2d6b2c5d6b3c3d5af *c2d4afc3d6b2c3d6b4c3d2b0c3d6b5c4d1b1c1d5b1c3d6b0c0d6b5c3d4b4c4d6b1c3d8b1c3d6ae *c4d6b2c2d7afc2d5b3c2d3b5c2d4b2c3d5b1c3d4b1c3d5b1c1d5b1c0d5b0bfd2b2c1d3b2c0d5b3 *c2d3b0c2d3b6c1d2b2c3d3b5c5d6b6c5d3b6c5d6b6c6d6b6c5d4b6c7d5b7c6d6bac8d7b6c6d6b5 *c6d8bac6d5b6c3d3b3c3d6b7c6d6b7c3d5b7c5d8b7c3d6b1c3d3adc2d6b2c1d5b1c0d5b0bdd2b1 *bfd2b1c0d4afbed1b0bdd0aebbcdabbccfadbcd0abbbcfa7bacfabbcd1abbdd1acc0d0acc0d1aa *bcd2a6bbceabbbd0a9bacea8bdd2a9bbd1a8bacfabbbcfa9b9ccaabbceabb9d1a8b7cda4b8cea6 *bad1a8b9d0a6b9d1a5b7cbaabbcda8b9ccaabaccaabacdaabbceacbbceacbdd0adbcd1acbdd3ae *bccdadbdd1adbcd2acbacdabbacdafbacdaabacda7b9cda4b5caa1b1c99fadc4a4afc6a5b3c7a1 *b3c4a2b1c5a1b0c7a0b2c9a6b5c9a6b6caa8b5cca4b1caa7b5caa7b3c9a1b4caa2b3c9a5b2c7a6 *b6c7a6b1c8aab6caa2afc7a1b0c7a0b0c9a2afc39eaeca9eaec79caec1a0abbd9faabd9ba9c29a *aebf96a8bd96acc49aaac19dabc39bacc098aac098adc299aac197a9c296a8bf91a7c18fa5bd95 *a7bf96a7bb93a1bb97a4bd93a4bb899fbd90a4be8aa2bf91a2bb8ea7bb8ea0b490a2b68ba1b88c *a0ba8fa0ba8ba0b68ca4bb8f9fb9879fbb8ea1b892a2b88fa4be8da0b68d9db891a4bd8ca4b88f *a5bc8ca5ba8da3bb8ba2bf89a0b88da4bb88a1bc8da7bc8da4be8fa7ba92a8b99ba4bc9ba5bd91 *a4bd8ea4bd95a4be9ba7bd99aac094a4bd96abc29aa3ba9da9bf97acc49eaec19fb0c59db0c49e *aab4bfc9cdc5cdd1cad2d68caecb8bb1cb8bb0cd88aecb88aecb89a9c789afcb8aaecc8fb0ce80 *accc8cafcb83acc990adcb8eaecc87aecc88adca8caccb86abcc8aaeca89b1cd86aecb8aaacc8c *b0cc81acc98caeca8eadca8eaeca8baeca87aac48dadc98aacc892adca92aeca96afcc96b0ca92 *afc98dacc995aec891abc891aecb94aec98fabc88cadcb8fb0cb8baecc92b2cc89acc991aecb8d *aeca8db0cb91b0ce8aafcd8baecc91b1cf84acc98daccb90aecb90aecc86accb82adce8eb0d08b *abcd8bafcc93b1ca8db1ce8caecc89aecc8cafcf8db0cd89aece84adcf89afcb8fb1ce8bb0cd88 *adcb8ab0ce87aed08eafcf8eb0cd8cb1cc92b2ce8caecd8cadcb8daecd89afcf89b1ce91b4cf8e *aecf8cb1cd90b1cd90b3cd8eb0cd8db4cf90b0cf8db1cf8ab0cf8cb2cf8db2cd8eb4ce93b4ce8b *afce97b3d092b6cf98b7d19fbbd499b8d19cb7d0a0b7d0a3bbd1a3b9d1a8bbd2a2b8d1a7bbd6a2 *bdd7a2bad1a4bad1a2b8d19eb6cf9bb7d09db9d29cb5cf9cb7d49eb7d39cb7d39ab7d098b5ce97 *b6d198b7d19db8d199b7d4a0b8d4a2bbd49ebad4a0bbd1a0b7d19cb6d396b7d295b8d39ab8d097 *b8d697b6d498b6d19ab7d19bb8d398b8d298b6d096b7d192b8d49abad692b6d399b8d49bb8d298 *b6d299b9d398b9d493b6d399b8d69cb6d49db9d593b7d396b9d396b6d299b9d39ab6d191b5d295 *b6d296b7d495b7d397b7d197b8d296b6d196b7d395b6d690b6d291b6d390b6d599b8d399b8d39a *bbd49ebbd695b6d399b9d297b6d397b9d498b8d594b7d39abbd59cb9d294b9d391b6d39bbbd691 *b8d593b6d698b8d595b8d396b8d398b9d499bad296b9d397bad399bad493b7d298b9d59ab9d298 *b9d299b7d497b8d598bad49abad599bbd498bad39bb9d697b8d3a0bad59cbbd498bbd599bcd69d *bbd69cbcd896b7d59bbbd796bbd69abbd59bbfd69bbdd69cbdd69abbd696bbd397bbd598b8d69d *b9d39bbcd698bad591bad399bbd694bad89abdd89cbbd69cbbd39fbdd599bbd49bbbd59fbcd69b *bbd49bbcd695b8d498bad49dbbd69cbbd69dbcd49abcd39dbfd79fbdd69dbbd69cbbd5a1bed69d *bdd69ebed69ebdd595b8d596bbd79cbfd6a1bed6a3c1d59dbed79dbcd49bbdd69bbcd793bbd59b *bbd69bbcd69fbbd59bbdd59cbdd7a5bed5a8bcd5aec2d8b2c3d8b7c7d6bbc7d8bdccdcc3cedec7 *d0dfcbd4e1ccd6e2cbd4e2cad3e2c9d2e0c9d2e0c7d2e1c7d2e1c8d4e2c7d2e2c7d2e2c7cfdfc3 *ceddc3cedec3cedec4d0dfc3cee0c3cddfc6d0e0c7d1e0c8d1e0c8d4e4c7d2e0c6d1e0bfcee0b9 *cbdea8c1d8a4c1d8a2c1d6a3c1d99ebdd7a2bfd89ebed6a1bed6a4c1d8a5c1d6abc3daaec3d7ac *c5d6adc2d8a4c1d8a6c3d8aac3d8aac4d9b1c7dbb9cbddc0cddec3cde0c1ccdec2cee1c3cfe0c5 *d0e1c6d3e2c6d3e1c5cfddc4cedfc6ceddbfccdbc3cddec1cdddc3cddec5cde0c3cdd9c3ceddc6 *ceddc6ceddc6cedfc3cbddc3cbddc4cce0c1ccdcc3ccddc5ccddc5cddec7ceddc8d0e0cbd3e1cc *d8e4ced8e5cfd9e4d1d9e5d2dbe3d5dbe4d3dbe5d3dbe4d3dbe5d4dbe5d4dce7d2dbe4d3d8e3d2 *d8e3d1dae4d3dae5d2d9e5d1d9e5cdd7e5ced8e3ced7e2ced6e1ced6e2ced7e3ccd7e2cdd6e2c8 *d2e2c6d0e1c3cedfbfccdbbac9d8b8c7d7bac7dbb4c3d6b6c2d6b1c0d6b2c3d6b1c2d3aec1d3b2 *c0d5b2c2d5afc0d6b0bed2b3c0d4b6c1d3adc1d5b4c1d5b3c2d4b0c1d1aec0d2afc1d4b1c1d5b3 *c1d6b2c2d8b2c0d5b3c1d4b5c1d4b6c1d5b6c1d6b4c2d4aebfd3b0c0d5afc0d4acbdd2b1bfd1b1 *bfd2afbed1b2bed1b2c1d4b1c0d2b3c2d1b1c1d6b1c2d5b5c6d4b5c3d3b7c3d3b4c2d4b6c3d3b7 *c4d8b7c5d5b7c3d6b8c5d3b6c4d2b9c2d4b4c1d2b6c1d3b2c1d1b2c2d4b1c0d2aebbd1adbcd1ac *b6ceabb8caaab8cca7b8cca6b6cba8b6cda2b4cba4b5cdaab8cba9b7c9a5b8cba7b8caa5b4c9a0 *b2caa1b2cca3b1cba4b4cda5b1caa1b4cba3b2ca9fb0caa2b2c99fb1cc9cb2cb9bb3cba5b6caa4 *b1c6a7b5c7a7b4c8a0b3c9a0b1caa5b3cba7b4caa8b4caaab6caa6b6caa9b6c9aab6cbadb6cdab *bad0adbacfacbad2adbcd5a7b8cda8b5cbaab6cca9b4c9a5b2c8a0b4c9a1aec79aacc69eaec7a1 *aec69eaec49fadc39fabc1a1adc5a0afc79eb0c7a7b1c9a4b2c9a4aec7a3afc9a6aec3a1aec5a3 *adc7a0b0c9a4b1c9aab2c9a6b3c7a4afc5a4aec69baac7a0aec39eaec497acc19aa9bd94a6bd9a *a7c196a8be99a4bd9ba7ba99a9c195a4c391a3c098a5c191a1bd9aa7bf97a7c694a4c097a4b88f *a4bd90a6bc8ea5be8da1bd93a2bd91a3be90a2be8fa3be8aa0bd8b9fb9879fbc8d9cb48c9eb590 *a1bc8fa0b789a0bb8c9bb8899cb88ba0b98b9bb88da1bb879fb792a0bc92a2b98e9fbe8f9eb98e *9cb793a1bc8da1b693a1ba9da1bb8ea0bd95a1bc90a2bd929fbb94a3bd90a2bb95a4c196a2ba9b *a8bd96a7bc9aaabe9babc0a1aabf9ba4c198a7be98a6bf9ca9c09facc19caabf9faec2a1afc0a0 *acc4a4a9b8bdc7ccc4ccd1c8d0d788aeca96b2cc90b0ce91b4cb8eb1cc8bb0ca8cb1c983aecc81 *afcc89b1ce86accc8aadc98cb0ca88adca80aecc86b1cb90b0cd84aecc81aecb84aecd86b0cb8e *b1cb8bb0ca91b2cb82aec989aeca8caecc91afcb90b0ca92aec78aadc88cadc990b0c98eafcb97 *b0c990aec98babc795afc98eafc996b0ca90b0c98aadc791adcb91afcb90b0cc8eafce90afcb8f *b1c889b0cb8ab0ca8baecc8aaecb86acca8fafca8aaecb90b1ca8bacc98eafcb8db0cd93b3ce95 *b0cb92b1cc92b2ce91b3cc8bafcc8caece90b2ce8eb0ce8bb1ce8db2cf8bb1ce8db1ce90b1ce95 *b3d087aecc89b1cd85aecc88b0cd86afce87b0cd8ab2ce8cb2ce8eb4cd8db4cf8eb3cd88b1ce89 *b1ce90b5d18eb3d18dafd08eb1ce89afd08db3d18cb5ce8eb4d08cb3ce8db3ce8db4cf91b6d08d *b3d18cb1cc8db5ce9ab8d396b3d09ab6d2a0b7d1a3b6cfa5bad0a6bfd3a4bccfa2bcd1a5bbd2a5 *bcd3a4bbd2a3bbd2a6bbd0a2b8d1a5bcd2a0b9d2a1bdd2a0b8cf9cb9d1a1bad4a2b9d29fbbd29b *bad1a0bbd2a0bcd2a1bad3a0b8d3a1bbd3a3bbd19bb7d19db9d396b9d09dbcd594bad399b9d39b *b9d399b7d59abad39ab7d2a2bcd49dbbd5a2bbd49dbad19bb7d398b8d398bbd699bbd697b9d59a *bbd39bb9d697bad499bad597b7d299b9d394b9d399bad297b8d39dbad596b7d39bbad398b9d191 *b8d292b8d399bad38fb7d392b8d494b9d499b9d39bbbd197b7d396bad393b9d398bad091b7d298 *b9d399bbd397b7d395bad393b9d094bbd192bad491b9d396bbd49cbbd69abcd397bcd298bbd297 *b9d385abcc97b8d495bbd598b9d39abdd698bad498bad299bbd395b9d394b9d496bad499bbd596 *bad497bbd496bad496bbd195bad398bad396bad498bcd598bbd59abcd59abcd59cbed696bdd696 *bbd397bbd691b9d498bad499bbd697bdd798bdd69bbdd69fbfd69ebed69cbbd49abdd599bbd69b *bbd798bbd698bbd79ebed493bbd39bbcd39bbdd69abdd39bbcd699bbd599bbd599bcd69dbcd59a *bbd397bbd498bdd496bcd398bcd59abbd59abcd69dbdd598bcd399bbd49abcd499bcd39dbfd59d *bfd799bed69dc1d89cc0d6a1bfd49abcd699bcd698bdd69dbdd69fc1d899bbd69dc0d6a1bed69e *c1d697bad39cbfd79cbed69ebdd698bbd6a2c0d8a3bed5aec3d7b4c6d7b9cbd8b8c9dbc1ccdec3 *cfdec8d1e0c9d6e3cbd7e2ccd8e2ccd6e2c7d2e0c7d2e0c7d3e2c6d3e1c7d5e2c8d3e3c9d3e2c9 *d3e0c6d1dfc4d1dec3d1e1c5d2e0c2d1e0c2d0ddc4d1dec8d6e2c9d6e1cad6e2c8d3e0c5d0dfbb *ccdcaec7dda4c3d8a2c0daa8c3d6a3c1d6a4c2d8a4c0d7a4c1d6a5c1d4a4c1d69dc1d89ec2daa5 *c2d8a5c3d7a4c1d89ec2d7a1c1d6a1c1d6a6c2d7b1c7dcb7cbddb9cbddbeccddc1cdddc1cdddc2 *cfdfc1cee0c4d0e0c4d1dfc3cee1c3d0dec6d1dec2d0dec3d0dfc2cfdec0cfdec3d0dfc4cedec3 *cddec0ceddc2cedec3ccdcc0cdddc1ccddc3ccdec5ccdbc1cddec5ceddc4d1dec9d3dfc9d5e2d0 *d8e5cedae3d1dae4d2dbe5d5dde6d3dce4d3dde4d2dde5d2dae5d2dbe4d2dde5d4dce6d3dbe5d2 *dbe4d1dbe4d2dbe6d2dde5d2dde5d1dbe6d2dce5cfd8e4ccd6e2ccd5e3cad4e2cdd7e3cbd6e2cc *d7e2cad4e1c5d1dfc5d1e0bfccdbbbcaddb4c7d9b7c8d9b6c7d9b4c3d5b0c2d5b3bfcfb3c1d5b6 *c3d5b1c1d3b2c0d2b6c1d2b0c1d3b2c2d4b1c1d2b1c4d5b6c3d3b1c1cfb1c4d5b4c3d4b5c5d3b3 *c5d5b3c4d5b4c4d7b1c4d7b3c5d8b4c1d3b6c5d6b7c6d6b6c6d6b4c3d3b0c1d3adc0d3acbcd1b1 *bdd2b0bed1b0bed2b1c2d3b2c1d0b0bcd1aebfd1aec0d3b1bfd4b1c1d6b6c3d6b6c6d6b6c3d2b6 *c2d5b3c1d3b6c5d6b6c1d3b1c2d1b1c1d3b0c1d3b2c3d3aebfd1b2bed2aec0d3acbbcfaab8cca5 *b3cca7b7cca4b4cba2b2c8a2b2c7a1b1c6a2b2c89eb2c89bb0c99ab1c79cb3c9a2b1c8a1b5c89f *b1c79badc597acc698afc899adc69cacc59aadc69eaec59eaec49aadc79fafc79aaec299aac29b *b1c99baec69aafc69faec499aec599aec39bb1c59db1c8a2b1c8a2b1c9a7b6c9aab9ceabb5cbaa *b7c9a3b6ccaab7caabbbd1a7b7cba2b4cba2b3cba1b1caa6b2c69eb0c59cadc39eaec793aac499 *abc39ba9c49fadc59fb0c49eadc49eaec699aec49aaec49eacc09fadc699aec59facc79fadc3a3 *b0c59eaec79aacc799a9c19eacc5a2b0c6a1aec8a0aec69eadc39fadc39aa9c297a8bf97acc49b *aac195a8c199a8c19eaac098aabd93a6bd92a7bf90a7bd99a5be93a1bb97a6bd94a7bf94a5bc96 *a8c096a1ba94a4bc96a3bb8ea0b790a2bc91a2bb8ca1bd8aa3bb8aa3bc8da4b9869cb68b9bb68f *a2bc91a4bf92a0bb8ca2be91a7b892a1b891a1b88fa4b788a3bc91a5bc99a1b990a0bb90a4c192 *a3b797a4b891a3bb9babbc97a8c19aa8bd93a7bf96a9c098a4bd9daabd97a6b69aaabd9aaabe92 *a9bd9eaac19eabc09daabda2abc1a3adc19facc4a1aec2a3b0bea0afc4a5b2c7a5b1c5a5b5c8a8 *b5c4a8b8c6a7b0babecacfc4cdd3c9d3d78faeca94b1cd8eb1cb8aaecb92b0cb8eafce8cafca8d *aecc8eaecc8aadcb85aecc8baecb8bafcc81aacb81aecd86aecb85abca8aabcb8baecb86accb8a *aecc80abcb8ab1cc8cafcb84adca8bacca88acc98eb1cc88aecb91afca8faeca8eaaca94afc98d *accb8baccb91adcb90adc98eadcb8eadcb93adca92aeca91aecb95aec896aecb91aecb8caccb90 *b0cb8eaecb8fafcc8fb1cb8db0cd8baec989abcb8aafcc8eadcc95aecd93adcc8eadcc8eafcb8c *b1ce8eaece8cb1ce8aaecc8dafcd90b1ce88aece90afcc8cb2cd8cb0cd8cb1ce8cb1cc8caece88 *afcd88b0cd86afcf8db4d28ab1cf8aafcf8aadcd86aecf88adce85afcf87afcf87afce8bb1cd87 *aece8ab1cf90b3cd91b3d085aecd8bafce96b5d088b1cf84afd091b4cf8bb5d08cb0cc8db3d18a *b1d08ab1d188b2d394b2d196b2d296b6ce98b6cfa1b7d2a0b8d0a4b8d1a2bbd0a8bad1a9bad1aa *bcd4a7b9d3a4bbd1a0bbd1a4bbd0a4bbd2a2b8d3a3b9d4a4b9d29eb6d398b7d19cbad09db9d49f *b8d29cb7d1a1b8d1a2bad4a3bbd6a0bad69dbad39db7d19bbad198b8d39ab7d394b7d09db7d09c *b8d19eb6d197b7d39ab8d19fb9d49cb8d29cb8cf9cbad59bb8d49bb8d49ab8d39bbbd59bbad499 *b8d799bbd09ab6d399b6d196b6d39ab8d494b8d399bad598b9d397b7d291b6d398b9d395b6d297 *b7d496b5d396b6d191b7d395b7d394b6d194b7d298b6d38fb7d397b6d695b6d48eb6d394b7d18c *b7d291b6d28eb6d39abbd691b6d49ab9d693bad293b9d296bad58fb8d396b8d395bad598bbd499 *b7d599bad599bad58db6d297b8d396b7d090b5d497b7d592b7d597bad699bbd698bbd297bcd393 *b9d397b9d59bb9d394b6d295b9d594b9d59abbd692b9d294bbd497bad499b8d494b7d396b6d596 *b8d695bad699bdd798bcd698bad699bad397bbd397bbd698bdd695bbd697bbd898bdd599bcd39a *b8d796b8d796b7d398bbd69ebbd694b9d696b9d497bcd59abbd49dbbd89bbbd696b8d39abbd69b *bbd59bbbd797bbd69dc0d79dbdd597bad694b9d599b9d49fbbd49fbcd69ebdd697bbd69dbcd49c *bad699bad696b9d49dbdd69ebcd39cbbd49cbdd89cbcd69abdd59abbd69abbd798bad59abbd89c *bdd898bbd898bbd699bed7a1bfd59cbdd6a3bed69ebdd5a4bed6a9c0dab1c4d8b9c9ddbbccdbbd *cadbc3cddbc4cfdec7d1e1c9d3e1cad3e1cad3e4cad2e1c8d3e0c7d2e0c5d2e0c6d2e2c6d2e2c7 *d1e2c6d2e2c5d1e0c6d3e0c6d1dfc7d0dec6d1dfc2cfdfc5d0dfc6cee0c7d1e1c7d2e1c3d0e2bd *cddeb4c6dba1bddaa4c1d89fbfd7a4c3d8a1c1d8a3c1dba1c1d8a4bed6a2bfd8a2bfd59ebed6a1 *c0d6a0c0d7a0c2d6a6c1d8a4c1d8a3c1d9a5bfd8adc3d9b2c5dbaec6dbb0c6dbb5caddb8cadfbc *ccddbfcbddc0cedfc0cee0c1cbddc1cddfc3cedfc2cedfc2ceddc0ccdec0cbdfbfccdfc2cbddc3 *ccddc1ccdec1cddec1ccddc1cdddc1cdddc3ccdcc3ccdfc3cddec3cedec6cfdecbd3e0cbd5e1ce *d8e2d1d9e3cdd8e6d0dbe5d1dbe6d2dbe6d1dbe6d1dce5d1dbe3d3dce5d2dae5d2dbe4d2dae6d2 *d8e5d3d9e4d2dbe4d3dbe4d5dce5d4dde7d1dbe4d1d8e6cfd7e3ced4e2c9d1e0c9d1e1cad3e1ca *d3e3cad4e4c9d2e1c9d1e1c3cedfbfcbdcbac9dbb7c6dbb7c6dbb7c3d7b5c3d9b5bed5b1c0d6b1 *c1d5b5c1d3b2c0d3b2c3d4b5bdd1afbed4b3bdd3b5c1d7aebfd4b2c1d6b1c2d1b1c1d5b0c1d4b7 *c1d5b5c3d6b2c4d6b6c4d7b6c3d3b7c5d7b6c4d6b4c2d5b5c4d6b4c2d4b5c3d6b2c1d3b1bfd3ab *bed2aebcd1afbad0aebdd1afbdd0abbcd1aab8d0adbbd1aabbcfb0bcceaab9ceb1bdceb1bcd2b1 *bcd4afbed1afbdd3aebdd1b2c1d3b1c0d2adbcd1aabcd0acbad2a8b7d0aab9cea7b7cea5b6c8a2 *b5cd9fb3ca9cb0ca9fb0c8a2aec3a0abc69db0c89bafc796acc398aec59baac499a9c498a9c59e *acc796a8c48fa7c392a8c18ba7c18fa6c28fa8c49aabc599aac296aac09aa9c196a6c194a8c190 *a9c296a9bf9aaac195a7c197a4c095a6c697a7c397aac198aac393a7be9eaac6a1aac6a1b1c7a1 *b1c79fb0caa0b1cba4b2c79baec79eaec79caec99babc59fadc598a5bc9daac599abc397abc498 *a9c39aa9bd99a8bf9eacc29faac49ca8c59fabc49aa9c299aac29daac199abc49aaac398a5c198 *a8c29dacc19bacc39bacc696a9c196a8c79aa7c09aa8c197a4c09aaac491a2c098a8c196a6c092 *a8c19aa5c191a7c190a1be97a6be95a2bd91a2ba91a4be97a7bc8d9db991a0bb91a5bf95a6c093 *a0bb95a2bb95a0bc97a4bd93a4ba92a5bc8fa2bd8da0bc8ca1b98e9dbb8d9db990a0bc8c9fb98d *a0b98d99b3909dbb90a4bb91a0b992a5be95a1bb8c9eb98da4bc90a8bd8aa1bd92a1bc959fb692 *a4be95a7bd8ba2bf8fa4be97a3ba96a2bb9aa2b69aa2bb95a4bd9aa7bd98a9bf9ba8c09eacc195 *a6be99a8bb9ea9bda2abc19ca8c19da9c29eaec69eabc4a0aec4a2adc5a4afc6a5b0c5a6afc5aa *b4caa8b6caadb5c9aab1bcc0c9d0c6cdd3cad0d68aafc789aec78baecb86aac88cacc98aaecc8a *aecb7caec981a8c680aac981abc98bafcb8aacc787acc985aeca85abc986adca8db1c78aafc98b *acc887acc980a9c787adc986aec988adca86adca88aec986adc988abc88bacc88aacc788a8c682 *acc886aac688aac785acc791acc889acc58fadc78eaec992afcb8cadc990afca91afcb96b1c895 *aec999afc88caec98fb0c78dabc98caec98badc789aec989aeca8baec888adcb89aecb88acc986 *aecb8eb1cb8aaeca8bafcc87abc98aaeca89aecb8faecd84adcc8bafcd8aaecc8ab1cd8ab1cc82 *aecc88aecc85aecd87aecc8bafcc86aecc8db0cc8ab1ce88aecb8cb2ce85afcd82aecc8baecc85 *adcb8cb2cd82afcd8cb2cc8bafce8db0cd85adcb85afcd85aecc8ab1ca8cb3cf92b3cd8db1cc89 *aece87adcb84b0cf89b1ce89aecc8bb4cf98b6ce99b8cd99b6d0a3b8cf9db8d19fb6cea4bbd0a6 *bacfa2b9cfa1bacda3bbd19fb6cd9fb3cd9ab6cf9bb7ce98b7cf98b7ce96b5cf93b4ce96b5cd98 *b6cf98b7d19ab8d29bb9cf99b8cd9bb8d199b8d198b9d19ab7d097b8d18eb4d091b4d092b4d099 *b6ce91b6ce99b6ce9db9d19ab4cd9db7d19bb9d495b6d299b6ce9ab6d294b6d396b6d29ab9d599 *b8d199b8d494b8d294b7d295b5d191b6d095b6d096b8ce97b7cf96b6d297b8d194b6d091b4cc95 *b6d093b5ce92b5cc96b9d196b7d091b6d292b6ce8fb4cd8fb5ce97b6ce93b5d190b9d293b7d192 *b7d396b8d491b3ce95b6d397b8d29ab8d291b7cf91b6d194b7d297bad393b7d693b6d28ab3ce91 *b5ce93b6d08db7ce93b9d090b6d18fb4d18eb6ce8ab4cf93b9d298b9d191b6cf94b8d197b9d097 *b9d396b6d293b7d296b7d195b7d197b8d294b7d291b7d396b9d29abad499b8d395b7cf94b9d296 *b9d399bad599bbd499bbd39bbcd397b9d69abbd497bad295bbd194bad299bbd295b9d599bcd49d *bbd496b9d68cb6d397b7d199b7d195bad498b9d296bad29bbcd79cbbd69abbd69cc0d597bcd39b *bbd399bad294b7d299bad399bbd498bdd398bbd392b9d395b9d39dbdd398bbd39bbad196b8d49b *bdd599b9d495b7d395bad396bbd396bbd39abdd697bed69abdd59cbdd29bbed398bad597b9d596 *bad196b8d29bbbd399bad49abcd39dbbd59bbad695bcd49ebbd599bad3a5bfd5b4c6d8b6c7d8b9 *c9dbbbcbdcc0ccdec2cddec4d0dbc6d2dec8d3e0c8d6e1c7d2e1c8d2e0c5d0dec4cfdec5d0ddc5 *d2ddc5d2dec7d1dec8d2decad3e1c8d2e1c7d1e0c6d1e0c1cedfc3ceddbfceddc1cdddb9cee0b3 *cadbb2c7dbaec5d8a4c0d69dbdd49dbdd59fbfd59fbed4a2bfd6a1bed69bbfd59ebed39abdd39f *bed4a1bfd4a1bdd6a4c2d5a5bfd6a0bdd3a3bed8a9c2d7afc6d7b2c6d9a6c2d7a4c1d5aac4d8af *c5d9b8cadbbdcbdec1ccdebfccdcc0cddcc1cddcc2ceddc2ccdbc2cedbc1cddbbecbdbbdccdcc1 *cbddc3cedac2ccdcc3cedbc1ccdcc0cedec1cee0c3ccdec5cfdec6ceddc5cedfc7d1ddcad5decb *d5ddced7e0ced9e2cdd8e3d2dbe3d1d9e3d1d9e0d1dae2cfdae2cfd8e2d0d8e3ced8e2d0dbe2d0 *dbe5cfd9e4cfd8e1d1d9e2d0d9e2d2dbe4d2dbe3d2dce4d1dbe3d0d9e1ccd4e0c9d3dfc7d1e0c6 *d0e1c9d2e0c8d2e0c7d2dfc6d2dfc3cddbbbcad9bbc9d9b5c5d8b8c6d4b6c6d7b4c3d5b0c1d3b1 *c2d4b1c1d6b5c3d5b2bed1adbbcfafbdd1b1c0d3b3c0d1b6c3d4b7c3d3b4c1d1b2c1d1b6c1d0b2 *c1d1b3c0d3b6c2d1b6c3d3b4c2d2b9c4d3b3c1d4b6c3d5b4c2d2b5c3d3b2c1d5b0c2d3b3bfd3af *c3d3afbdd0aabcceafbaccaebbccabbccdacbcccabbac9abb9ccacb8c9abb8cba2b5cbaab6ccab *b6c7aab8cbadbbcea7b8ccadbdd1aabbcbaab9cea7b7cda5b8cba5b8cca2b4c9a8b5cba2b3ca9f *b2c69eb1c69dacc79aabc498acc698a8bd97a8c394a8c393a9c093a4bf91a5c08ba6bd8aa2b891 *a3bd91a5be86a0bb87a4bb86a4be8ca5bd89a3c287a2bd8ca0ba8aa2bc87a2bc91a2b98ca3bc8f *a9bb8ba5bd8ba4bb8ba2bb8ea4bb8fa3bb8fa2c08ea4bd90a5bb8ca4bb91a9c091a6bd94a9c093 *aabf9badc192a9c095a7be95aabe92a7be8ea7c297a8be95a8c091a5bf93a6bc96a7c094a3b995 *a6be9aa9bf99a8bd96a5bc99a9bc99a7bc9aaac19ca9c095a3b898aac196aac197a7c298a6c093 *a5bc94a8c096a8be9ca7bb95a4bb98a5bf90a7c096a6c09ba8bc97a7bd95a7be94a5bc8a9eb797 *a1bb92a4c18da7c08da5bc90a1b893a1b59aa3ba93a1bb8aa5be8da0bc8c9eb68c9eb789a0b68b *9db690a4bb8a9bba91a0b9929eb590a2bb8a9dba8b9ab793a2b78fa3b68ca1b98ca1bb8ca0b789 *9fb98fa0ba96a2ba8fa1ba91a2bb90a4bd93a3b6979fb698a0b395a4b794a7bb92a3bc93a1bd8f *a2bb92a1bc97a4bd95a5bd90a4bb9ba8be9aa7b798a7bc97a8c09ba7bb97a4bd9eabc1a0a8bd9b *aaba9faabe9fabbea0aec3a2aec0a1adc1a2adbea1acc19fadc2a6aec2a4b0c7a5b1c8a6b5caa5 *b3c8a9b6c7abb8c8aab9caacb4babec8ccc4cdd2c9d1d794afc78cadc993b0cc8baec88faecb87 *acca89abc98eafcc89accb8aaecc8cb0cb8dadc98cacca92aecb8aaeca8bafca86aaca8daccb8e *afcb8daec88aadc98badcb8eaecc89adca8badcb8dabca8caec989aec98bacc888adca93aecb90 *abc987aac78eabca91aac78fadc98eaec98faec995aeca8daccc92adc992adc995afcb93b1cd91 *b1ce93afcb9aafca92afca92aec78faecb8faecc8dadcc89acca89b1cc8aaecc90adcb89accb8d *adcc8eafce8baecb8eb0cc8baecb8cacc98babca8aabc98aadca81aaca89adcc87accb80abca89 *afcd8bb0ce88adce87acc988aecd86aece82aecd82aecd7daccd89afce87b0ce8cafce8aaecc89 *afcc88b0cd85adcc8caecd86afcc8bafce8db1d18bb1cf8cb1ce84accb83afcc84afcd8bb3ce8a *b0cf88b0cf8cb1ce86aece8bb0d08bb0cc92b2ce91b3ce99b6ce91b1ce97b6d1a0b6d09eb3cea7 *bad1a2b9d1a0b8d0a2b7d198b7d29bb6cf9cb9d195b6d095b3cd97b5cf92b5d08eb1cd8db2cd97 *b5d099b7d29ab9d198b6d39fb8d199b5cf98b5cf97b4d193b5d292b5cf8bb4d18ab2d197b1ce94 *b4cf98b6ce99b6cf98b5d196b6d099b6d094b3d19bb7d198b6d395b6ce9cb6d091b6d395b7d498 *b7d197bad497b7d38bb2cf8db3d18cb2ce94b5d18cb3cf8eb4d290b5d291b4d394b6d394b5d198 *b6d096b6cf92b5d092b5d08fb5d193b5d190b5d294b6d391b5d292b2cf95b5d091b6d293b6d395 *b8d498b5d191b6d198b6d294b6d38bb3d190b3ce91b5d19ab8d196b8d393b9d794a5b99abad597 *b6d290b6d192b8d192b7d192b6d28eb5cf8bb6cf94bad394b7d292b6d197b8d291b4d196b6d294 *b7cf96b7d092b6d398b7d394b6d397b6cf9bb9d297b8d08eb8d396bbd399bbd396bad398bbd499 *bad397b7d29bbbd699bad396bad399bbd493b9d699b9d697b9d597b7d49cbad197b9d297bad699 *bad19abcd594b7d397b9d699bbd59abad49bbbd398bad59cbbd495bbd894b9d698bad699bad59b *bbd69abbd294b8d490b7d296b9d299bbd594b9d39bbbd396b8d39abad398bbd398bbd299bcd497 *bad498bad395bad499b9d398bbd59abbd39bbdd49abbd397bbd497bbd497bbd49eb9d59bbcd698 *bad799bad39cbcd49ab9d499bad49abbd29bbbd49bbad69abad59bbbd69bbbd5a0bbd6b2c5d8bb *c9dabbcbdabbcadab9cbdcc0ccdfc5cfe0c7d1decad2dfc9d2dec8d3e1c9d2e0c7d2e1c4d1e0c6 *d2e2c6d2e2c6d1dfc7d1decad3e0c8d5dfc9d5e1c8d2e1c6d0dfc4d0e0c3cee0bbcbdbaec6d9a9 *c3d6a9c3d9aac3d8a4c2d79fbbd59dc0d89cbed69fbbd3a0bed4a0bfd59fbed89ebdd49cbdd69a *bcd7a2c1d6a3bfd6a2bed4a6c1d6a2bfd7a2bfd4a4bfd6aac4d8b3c8dbb6c9dcb1c4d8a8c2d9a8 *c2d6a9c1dab1c6dcb6c6dbbecadbc1cddec1ceddbfcddfbfcddec1cde0c3cfe0c0ccdebdccdec2 *cdddc3cddcc1ccdec4cedfc4ccdcc6cee0c3cddec2cddec6cdddc7cfdfc6cfdec7d1dec9d1e0cb *d5e0cbd4e2ced6e2cfd8e2ced8e4cfd8e4d0d8e3cfdae4d1d8e3cfdae5d1d9e3ced6e3cdd6e2ce *d9e3ced9e3d0d8e3d1d9e3d2d9e5d0d8e4d1d9e3d1dae3cfdae4d1dbe4d0d8e3cdd5e2cbd2e2c6 *d1e0c6d0e0c3d0dfc6d0e0c3d0dfc1cee0bfcbdeb9c8dcbac6d9b9c6d8b8c6dbb7c5d9b6c5d8b4 *c1d6b1c0d3b4c2d6b3c2d3b5c0d3b1bdd3acc0d3b2c2d2b3c1d5afbfd6b1c2d6b7c6d9b6c1d6b7 *c1d6b6c1d5b2c3d5b2c1d5b3c0d4b2c2d5b5c1d2b6c2d5b6c3d6b4c3d5bac3d5b6c2d5b5c2d3b2 *c2d5b2bfd2b0bed2b1c0d2adbccfafbad0b0bbcfaab9cfabb8ccabb8cdabb8cdaab6c9a4b7cda6 *b3cdaab5cbaab9cdadbbcca7b8cba5b5cca2b6cea7b8cea3b5cba3b3caa7b1c7a0b4c99eb1ca9d *b1c69aaec796acc699adc592a6c39aa5be9da9c298a6be92a3bc90a3be86a5c193a6bf8aa1bc8f *a4be91a1b88d9fbb899cb98ba1bc8ba2b885a3bf8ca3be8ba4bc8ca0bc8aa0bb88a1ba8ca0bb8b *9eb88ca3bd8da4c08ba2be8ca4bb879ebc8ba0b9899fb8869ebb8ca3bd92a4b98da4bd8ca7c28c *a4bd8da4bf98a4b992a2ba93a4c392a4bb91a5c18ea1bc8ea4c08ba3bd91a0bb92a3bb90a4b896 *a5bd9ba9bf9aaac39aa9c399a9c198a8c398a7bc98a8c19aa6bd99a6c1939eba98a4bd98a7c192 *a4be8fa0bc97a5bc8da3bb90a4be96a0b892a7bc95a7c196a7bd91a5bf8ea6ba92a8c098a4bf93 *a5c18da6be92a4bb8da5c18f9dbd9ba7bf9aa5bd959fba95a4bc86a0bb8fa2b38b9fb892a0be92 *a4be95a1bb97a4ba93a3bf90a3bc94a3bb8fa5be8d9eb990a4ba94a3bd909db994a2ba929fb992 *a4b78da4b28f9eb697a3bc969fbb93a1bc97a4bd91a1b991a3be92a9be91a6be95a6c096a5be98 *a3bd91a0bf9ea6bb9aa9be99a6b79aaabe9fabbf9aa5c19fa7c195a6c095a8c39bacc39babc097 *aac19facc3a4aec19eaec5a9b1c3a5afc3a4aec9a5acc3a8b0c7a8b0c6a6b0c6acb7c7acb5c6ac *b6caabb5cbb0b5ccb1bacaafb6cbacb7bdc0c8cec5cdd4c8d0d594aec391afc893b1ca8cb1c990 *b0c993b0c79ab1cc95b1c98cb0c88dafca96b3cc94b0ca93b1cb90b1cb9ab1cc8cafcb8faec890 *aec892afc88fafc98fafc896afc98cadc78dafca8aaeca8aadc88badc78aacc891b0cb90b1cb96 *b3cc94afc98fb0c98dadc88eaeca91b0ca91aeca97aec792afcb92b1cb92b0ca96b0c995aec89b *b1cca0b4cb95afc998b1c997adc78bb0c991b0c891b0cb8eaecb89aac78eb0cc90afcb8aaec98c *b0cc90b0c98bafcc8cafcb8aacc98cb1cb85aecb82aac883afcb7eaaca85aacb85acc880adca82 *aecb84accb82aecb81adcb81b0cd7faccc80aecb83afcb82aecb83aecb87aecc82aecc85b1cf7d *afcd81b1ce83afcc8cafcc8db1cc84b1cc81acca7eaecc84aecd87afce86aece87b0cd85b1cc8c *b4cd86aecb80aece84afcd82b0ce8ab3d08cb3cc87afcc8db3cd8bb3cd8db3cd84b2cf92b3ce93 *b6ce97b6d09cb6ce9cb8ce9ab7d099b6d093b5ce8bb2cd8fb3ce8ab5d187b3cf86b1cd89b1cb8b *b4d093b4ce92b4d18db3d193b4d191b6cf8fb6d08db4d087b4ce86adce8db2cd85b3d08bb4d08b *b6cd8bb4d18db2cf89b5ce8cb4cd96b3ce91b6d090b5d192b9d08fb8d093b9d28fb6d18bb6d197 *b5d38fb5d092b6d08ab6cf8db6ce85b4d189b4d08cb4d08bb5ce8cb4ce8db3cc8eb5d091b6ce8e *b6d291b8cf94b8d38ab6d191b7cf92b6d090b4cf91b7d085b2ce8fb7cf91b7d490b6ce96bbd28f *b8d192b6d096b8d386b3d18eb5cf8eb5d195b7d394b7d393b7d18fb4ce90b4cc86b1cb84979c81 *abc788b0cc8bb6ce8bb5cd98bbd093b6d197b7d191b5d191b7d293b7d391b6d190b8d28ebad28e *b8d08db6d089b4cf92b7d296b9d293b9d193bad391bad496bad094bad296b8d295b8d394bad38f *b7d198bbd595bcd698bdd695bad39ab8d39bbbd698bbd399bdd597b9d397bad398bbd398bbd297 *bcd38fb7d198bbd396b7d294bbd198bbd394b9d295bdd693bad195bad399bdd494b9d396bad496 *bad298bbd493bad49abcd397bbd393b8d396b6d398bad396b9d196bad493bad399bcd495bbd395 *bbd295bad39ab9d394b9d18ab7d193bad297bcd39ac1d697bcd599bdd496bcd595bbd494b7d397 *bbd498bbd69abcd497bdd49abcd597bed492bad397b9d399bdd593b7d398bbd397b9d396bcd3a9 *c3d8b5c9dbbacbd8b7cbdabaccdbbfcddec4d0dfc4d1e0c8d4dec6d5e0c7d3e2c7d6e0c7d2e0c7 *d3e0c5d0e2c6d2e0c6d3dec6d3e0c6d2dec6d3e0c6d3e2c3d1e0c2cedfbecdddbccedfb2c9d8a6 *c2d598bfd69dbdd59dbfd79dc1d59cbdd59abed49cbfd6a2c1d59fbfd49ac1d7a1c0d69cbed49b *bfd59fbfd69dbed5a1bfd6a2c0d6a2c2d79fc0d59cbed6a2c1d6a2c3d6afc7d9b1cadcb1c8daa8 *c4d7aac3d8a5c3d8abc4d8b3c8dab9c9dbbccbdebcccdfbcccddbdcbdec3cedfc2d0debeccdcbd *cdddc1cedec1cdddc4ceddc5d0dfc5d3dfc5d1dec6d1dec5d1ddc6d1dec7cedec3cedcc6d2dfc7 *d1e0cad5e0c9d5e1cbd7e0ced8e0ced9e3ced8e3cfd8e2cfd8e3ced8e3ccd9e3cddae3ccd7e0ce *d7e2cfd9e2ced9e2cedae2cfd9e2cfdae4cedbe3ced9e2d0dae3d1dbe3d0dae3ccd7e2cbd5e1c6 *d3e1c4d0dfc5d1dfc3cfdec2cedec0cdddbdcbddbaccddb9cbdbb6c8dbb6c7dbb6c6dbb4c3d7af *c3d3b4c3d4b5c4d2b2c4d2b4c3d1b5c3d5b3c3d6b3c1d6b3c1d2b6c1d4b8c2d4b6c4d2b2c3d6b5 *c1d6b2c1d5b5c5d3b4c3d0b1c2d3b5c4d6b6c3d2b2c1d2b4c3d3b5c4d3b6c3d4b5c4d5bbc4d5b7 *c4d3b7c4d3b5c3d2b1c1d3adbdd1adbbceadbccfaebcceabbdcdabbbcea7b8cbaab9cca3b7cca2 *b3cba5b4cba4b6c99fb6c8a2b6ca9eb1c7a4b6ca9fb2c7a3b4c79bb1c8a1b5c99eb3c69eb5c79f *b1c39dafc497a9c195aac293a8c691a9c591a9c394a9bf8da8bd8ea6bd91a6bb8ea2bb8fa1be8d *a2bb8da5be8ca4bf86a3bb87a1bb84a1b886a3bd879eba8d9fb884a3bd83a1b8899db88ca0ba88 *a1b48aa1ba819db88f9fbb849ebb85a3bf869eb9829db8859fbb85a4bd8ca1b7859eba859fb885 *a4bd8aa6bc8ba3bb87a5bd8da6bb8da3ba8ca4bb91a1b78ba2bb88a2bb8fa4b991a3bb8fa0ba92 *a3bc95a7bb96a7bc92a9c393a6bc94a8c294a4bf8fa4bd8ea4bd93a5bf8fa6bc90a4ba96aac094 *a9bc94a8be92a5bc96a8bb8da8be8ea8bd8da5bd8a9cb791a4bd91a0bc8ea2bd90a4be8ba6bd8c *a6be8ca1bd8ea4bc90a0bc96aac192a6c08aa5c090a4c08ca5bc8ea7b893a5bd91a4ba8ca4bb8e *a2b68da4bc8ca5bd8ea8bf8ea5be94a2b99cacc394a2bc93a3bb93a5be90a7be8ca4bb97a9bf8f *a6be8da3b993a6bc8ca2b994a4bc97a5bc94a9c096a8bd96a9c193a8b993abbe97aabd9cadc197 *a8bd9bacbe99a6bb9cacc19bacc19eacb89faebfa1adbf9aacc29fadbfa3aec29fafc4a4b1c3a3 *b0c39db1c1a8b0c1a5b0c1a3b1c8a7b6cbaeb9cba9b7c9adb9cbabb6c7acb9c7adb7cab3bdccb1 *bbccb1bbcdafbcccb2c0cfb2becdb5c0cdb0bdc0bfcacfc4ced4c6d2d994aec99db0c898b1cb9b *b1ca99afc999aeca96b0ca96b0ca9fb0c999aecb9fb2cea1aecb96adcb97aec994aec996b2cc92 *afca92acc996afcb8dadc896b0c896adc890adc78fadc796acca92aec993abc698afc993acc995 *aecb99b0cb98afcb96b1cb93abca93aeca9ab0cb96b0ca96b0ca8caec98cabca97aecd9bb1cb9f *b2c9a1b3cb9cb1cc9bb0d099b1cc99b0ca94afc991afc98baecc8eafcc8babc78daeca90abc890 *accb8eaecc93abcc8aaacb85aecb8aabcb81abca7aaac88aacc988accb82aaca86acce85accd80 *aacb82aac97ea9c67ba8ca85adcc84aac980aaca7eaacc82adcd80acca7eaacc86adcb82abcc85 *adcc87acca89aece81accc87b0cc86afcc81aecc87aece86adcc86aece87aecc81aece85adce8a *b0ce87afcd82b1cd82aecd85adca86aecf81accc87b0ce84b0d190b1ce8ab1cd8bb1cb87b0cd8d *b0ce92b3ce91b0cf97b5d197b4d193b2ce90b3d08fb3ce89b1ce85afcd8bafce89afd188afd090 *b3cf8aaecd89afce8fb3cd8eb0ce91b0d08fb2d091b2d086adcf86afd189aecc86b2cf85b2cd8a *afce8aafcc8aaed08cb1d08aafd18cb1ce8ab3ce8eb4ce90b3cf92b4d18cb3d195b3d18db5d18f *b4d193b5d090b4ce8ab5d190b2d291b2cf8ab0ce8fb3d18eb1d194b6d18ab5cf8cb4cf8fb7d296 *b8d394b5d292b5d091b4d193b6d493b6d096b5ce94b4cd8eb5d093b3cd94b5d292b4cf93b4d197 *b8d393b6d390b6d094b8d191b6d395b6d198b9d28fb5d297b6d38fb5d491b1cd8ab1ca81a7c07a *9fba80a3bb86aac688aecb91b1ce92b5d390b3d192b5ce93b6d190b3d08fb6d28eb4d194b5d191 *b7d591b5d38db6d290b8d08bb4d192b6d18bb5d28fb4d198b6d392b8d396b8d498bad292b6d292 *b9d392b6d193b6d297b9d49cb8d592b6d596b9d38db8d192b8d39bbbd496b7d393b7d497b9d58f *b6d29abad797b8d399bbd394b9d38fb5d399b6d398b9d598bad696b6d493b7d697bdd598bcd591 *b8d093b6d294b6d397b7d29abad498bbd490b7d395b7d593bad38db7d490b6d297b8d498b8d592 *b7d497b8d499bcd496bad397bad398b8d397b6d296b8d295b8d399b9d696bad394bad398bad398 *bbd397b9d593b6d39bb7d39abbd399bad498b9d396bad596bad598b8d497b9d495b9d59bb9d498 *b8d39dbed6aec4dab6c7dbb6c9d9b9cbd9bccbddc2cddec8d0e0c9d2e0c9d3e1c8d4e1c9d4e2c7 *d3dfc6d2dfc9d3e0c9d3e0c8d2e2c8d2e0c6cfe0c2cedec3d0dfc1cddebccadcb6c8dbaec3dba8 *c1da9dbcd39ebfd697bbd69abcd49dbed59ebdd8a1c0d99abcd89abbd5a0bdd6a2bfd69dbdd69c *c0d69fbdd599bbd697bbd6a3bdd6a1bcd49abed6a2bdd69dbfd7a1bad39fbfd6a3c0d7a8c1daaa *c1d7a6c1d7a3c0d5a8c1d8a8c2d7aac4d9b6c6dbbecbddbdcbddbbcbdcbccbddbbccdebfcddfbe *ccdebeccdec2cddec7cee0c6cedfc7cfe1c6d1dec8d2e2c7d1dfc7d1dfc7d1e0c7d0e0c8cfe0c8 *d1e0cad2e0c9d3e0cbd3e2cbd5e2ced6e3cfd8e2ced8e6d0d8e4cfd8e3cfd8e3cdd6e4cdd8e4ce *d7e5cfd7e3cfd8e3d0d8e3cfd7e2cfd8e5d1d8e3ced8e3cdd7e2cfd9e4cdd8e3cbd6e3cbd1e1c8 *d1dfc6cedec4cedfc1cddebeccdfc0cbdebfcbdcbdcbdebccbddbdc7dbb7c7dab9c6dbb4c3d6b5 *c4d6b0c1d6aec0d3b6c1d1b6bfd3b8c2d1b8c4d5b6c1d3b3c2d4b4c0d3b2c1d4b4c1d3b6c3d4b6 *c4d6b4c1d3b4bed1b2c0d3b5c1d3b5c2d4b5c2d7afc1d5b8c2d2b6c3d3b8c2d6b7c3d5b8c1d6b5 *c1d5b6c2d6b4c2d4b3c1d5b2c1d1b1bdd1b1bccfb0bacdb0bfd1abb7d0a8b8d0a6b8cca9b8cba8 *b7cea9b6cba7b6c9a4b1c9a4b2c9a2b1cca3b1cb9db1c79cb1cb9dafc6a0aec59eabc69fabc39c *adc698aac499aac592aec599a9c59bacc493a6c195a4c192a1bd91a3bd99a7bd90a4bd89a4be90 *a5be8ea2bd8ca2bf93a3bc8a9ebd8d9fbe849dbd88a4bd879fb882a2bb879dbb88a0bb8f9fba8a *9cb78ba2ba8ca4bc8ba4bd819ab786a3b98aa1b986a1bc8ba1bf869ab9879abb87a1ba859eba87 *a2bc89a4bd92a4bb919dba8c9eb88ba0bb97a5bf899fbd869eba8aa3bd8b9fb98da0bb8ca3be94 *a3bc8a9dbe8ca5c193a7bf95a6bc91a4bd98a6bd9ba7c099a7bc97a3c095a5be96a4c091a3bf8f *a2bc95a5c0959dbc8ea1be97a3bd8aa2bd93a6bd92a5bf8da4bb89a5bb8d9fb38da1bd95a3c094 *a6c18c9fbf8ca1bd90a4bd8ca4bd90a9bf98a7bb96a6bb96a0bd90a0bb8e9fbb92a6c297a6be95 *a5c190a4c193a3bd91a4bd8ea2bf95a5c096a6be96a5bd91a7c093a4bd9aa8bd909cbe9aa4bc9a *a4c294a1bd95a5bb95a8c091a3bd9aa9bf9ba5b89ca7c099a3bba0aac09ea9bf99aac196a9c39c *aabf9ea6c19caac49da9c19fa9c19faac1a1adc3a0aec6a4aec19eaec3a4aec3a4afc3aaaec6a8 *b1c6aeb7c7adb5c9abb4caaabbc9b0b9cab3baccb1bbccb5bbceb4b8cbb4bacbb4bdcdb7c0d1bb *c2d0bcc1cfb8c1d0b5bdcfb7bed1b6bdceb6bdcfb4bcc1c0c8cdc6ced4c8d1d89bb2c99eb5c8a1 *b5c99eb3c9a3b1c79fb3cba5b6caa2b5cb9fb3caa1b6cba4b6c9a4b3c89cb1c8a2b2cba0b4c8a4 *b5ca98b0c993afc994aec89eb0c995aec89eb1c694aec599aec798b1c996b1ca9aafc894b1c89b *b2c996aec79bb1c997b1c998b0c896b0c795adc993afc993aeca97b2c997afc797adc69bb1c89a *b1ca9ab1cb9bb2cc9bb1c993aec99db3c998b2c992b0c695b1c795afc98eb1cb8dadc992adc793 *aeca8facc891b0c78eadc986abc685adc785acc988aec986aac686acca87adc886adc787afcb84 *adc982accc80aac886abc984accb81acca8bb0cb85adcb88aecc7caacb83accc87aecb87acca8a *aecc87aecb86afcc87afcc87afcd83accb84abcc87abcc83accb83acca85b1cb86afcb81aeca82 *aec88dafcc88aecb88b1cc86aecd89aecc82aecc84accb7aaecc89afcb8bb1cd86aecd8bb1cc87 *accc89afcc8bb3ce90b3ce8db2cc90b3ce8ab0cb87b1ce8db1cc88afcb86adcb87b1cc87b2cb89 *b4cd8ab1cc89b1cc83adcb86b0cf86afcc86b0cd92b4cc8bb3cc8ab4cd88b3cd87b1cc8ab1cc8a *afce91b3cc8db3ce8cb4ce90b6cc8ab1cb8cb4cf8ab3cd91b3cc8db4ce92b6d192b6cd8db6ce89 *b4cd87b3d189b2ce8db5d094b5d18cb4d188b2cf8db3cd89b6d08cb3cf8eb5ce8fb6ce94b6cf91 *b6cf8eb4d093b7d195b8ce94b7ce9ab8d097b6d099b4cd8fb2cd97b7d093b8cf94b7cf97b7d091 *b6cf92b4d095b6d093b5cc92b6ce96b6d298b8d292b8cf92b6cc91b6ce92b6cc95b3cc95b6cc8d *b3cb8fb4ca8ab0ca93b4cb91b4cc95b6ce97b8ce91b2cd95b6ce92b6d087b5cf8fb9d094b8cf95 *bad092b6cf98b5cf92b6cd90b6d18fb6d48eb5d08eb8d097b8d095b9d095b7d192b6d191b6d295 *b7d293b7d492bad397bbcf95b8d096bbd192b7d097b7ce95bad19bb9d298bad695bad291b7d092 *b7cd9bbcd19abbd595bbd498b8d390b6d396bad399b9d295b8d198bbd194b6cd97bad29abdd39a *bbd194bbd593b8d190b9d292b8d194b8d099bacd97b9d19ab9d195b7d196b9d098bbd496bbd296 *b9d197bad097bbd299b9d196b7d197b9d093b9d198bbd399bbd396bdd191bbd197bad299bad19c *b9d196b9d393b9d392b8d498bbcf94bbd29abbd197bbd396bbd397bbd394b9d39bbdd59abbd399 *bad197b9d1a0bfd3aec3d5bbc9d8b7c9d7bbcbdbbdcbdcbfcedcc5d2dec9d3decbd6deccd6e1cc *d6e0c9d5e1c8d4e1c9d3e1c8d5dec7d2dfc5d0dec4d0ddc2cfdebfccdeb4c9dbb1c5d9abc3d9a6 *c2d8a2c1d59fc0d39bc0d69bbdd399bdd49bbed6a0bdd59dbdd399bed69cbed5a1bdd39dbdd5a1 *bed39cbdd49cbbd39bbad39ebdd69cbed19ebfd39dbdd5a4c1d7a0c1d6a6c3d7a5c2d5a1bed5a2 *c0d5a4c0d4a6c1d5a7c2d7abc1d4adc4d6abc3d8b4c7d9bacbdcb9cbdab8cbdbb9c8d9b4c8d8b5 *c8d8b8cadab7cbd9becddbc2cfdfc3d1dec7d2dfc9d6e0c9d3dec9d3e0c9d4e0c8d3e0c9d3e0c9 *d2e0c7d2dfcad3dfcad6deced3e0ccd6deced8e0cdd9e2ced8e2cfd8e1ced8e2d0d8e0d0d9e0cf *dbe1ced8e2ced8e2d1dae3d1d9e3cdd9e2cdd8e1cdd8e1cfd9e2ccd7e0ccd6e2cbd7e0cbd5e2c9 *d3e0c8d1dfc7d1dfc5ceddc2cfdebeccddc0ccddc2cdddc3ceddbcc8d7b9cad8b9cad9bbc9d8b6 *c7d8b5c4d5b2c6d3b3c4d5b4c2d4b6c3d8bac6d7b4c3d3b8c6d6b9c6d6b7c4d4b8c3d6b7c3d3b4 *c3d4b8c5d4b5c3d1b6c2d5b4c2d4b6c5d6b4c2d3b5c2d2b4c3d2b5c2d2b4c3d4b5c4d4b5c3d4b6 *c4d4b3c3d3b6c2d0b8c3d6b8c2d3b1c0d1afbcd0b4bdcdafbfcfafbccdaebccdafbcceaabacbab *b9cbaabacca6b9cda6b6cba7b4c9a4b6c6a1b1c79eb1c69db2c79db0c79cb1c799aec39cacc29d *afc39aacc394aac698aac699aac697a8c694a7c397a6bc99a9bd97a8be95a6bf97a6be92a3bc92 *a5bf91a4c08ca2bd8ba2ba8ba6bc88a5b889a3b88aa3b889a3bb89a4bb88a0bc8ea2bb869fb88e *a3bc91a4bc8ba4b891a4b88ba3bd8aa1b587a3bb8599b789a4bb8c9fb7879eba8b9ebb8fa1bb8b *a2b992a6be8ba3bf91a9be8da5b792a5ba8ea2b88ea4bc98a4bd8ca2bb8ca2bc91a7bd8da4b690 *a5bb87a0b68da4bb95a5bc97a6b993a9c090a6bb97a8bd95a8c097a6ba94aabe94a9b990a3bb95 *a6b893a6c08aa2bd90a3be91a4bc8aa4b993a3ba96a6bc8fa4b896a4bb91a4bb8c9cba8fa5bd97 *a5bd98a7b997a8bb8fa4b999a8bc99a4bd95a9c397aac091a9bd96a4bd9aaabf98a8bc96a2bc98 *a7bd8fa4c091a5bd95aac390a6bc91a7bc99a7bd91a5bd99a7bf96a3be98a4bb93a5c199a7bf8e *a7bf99a9be99adc291aac196a8c09baac19da8be9ca9c099a8bf9ba7bb9cadc1a4b0c1a0adc2a3 *acc39faec2a3b0c5a2afc3a2adc39eb2c5a4b4c3a5b3c3a6b3c3a8aec3a9b0c6aab5c6abb4c7ac *b7c9b1bacbb0bccab6bccab5bbcbb9becbb7c3ceb9c1d1bdc4d0bec2cfbdc4d0bfc6cfc1c7d1c0 *c7d4c0c7d5bbc5d3b7c1d2b3c0d1b6c0d0b4c0cdb9c2cdb4bcb9c2cacdc7cfd2c9d4d9a2b3cb9e *aec9a1b6ce9eb2cba3b3cca6b6cba3b7cda4b6cba4b6cda4b6d1a4b4cca3b1cd9fb2cc9cb2cba4 *b6ce9cb3c9a1b4cb99aecb9aaec99bb0cd98aec89ab1c897aec998afcb9bb0ca9db2caa1b3ca9d *b0cb9eafcb97b0ca9ab1cc9ab1cc95b0c898b0cb98adc997adc892abc791aac78fadc992aecb92 *aecc90aeca97aec894b1ca98b0cb9cb1cb98afcb99aeca95adc98fadca93aec792afcb91aec790 *afca8bacca8badca8bafcc82a9c982aac985aeca85abca8badca88aecc85abcb80aac986aac982 *adcc79a9cb7eaccc8cafca85adcc86accc7daacb7ea9cc81accc81a9cc87afcd84aecc7daacb7b *a9cb83aacb86abcd7ca9cb81abca7cabcb7faccc84accc85abcc8baece84accc7faacb85adce88 *aecf86aecf7eabce80aecc87aecc8baece84aecd83abcc87b0cf84aece81aecf82abcd86abcb88 *adce88aecc8aaccc8bafcc89afce80abcb83aecd84aece8bb1ce87aecb86afcc82aecc84afce86 *aecd84b0d08db1d186afcd86b1ce90b0cd85aecc85b0ce8ab1cf8cb2cf84afcd86afce8db0cd91 *b2cd87aece8ab3cf8ab3ce85afce8bb1d086b1ce8eb1d18db1d08fb1cc86b0ce90b3d189b1d18a *b1d191b4d18bb3d291b3d18db4d090b1ce8ab2ce86b1cf91b1d288afcf8ab0d28db4d195b5ce91 *b4d095b5cf91b2ce94b5d294b4d295b6d294b6d28cb5d291b5d193b8d295b6d291b3cf94b5d18d *b3d18fb5cf90b5d08ab1cc91b5d186b1d18cb3d28bb1d193b6cf95b6d086b4d190b6d38bb1cd91 *b6d390b5d196b6d192b7d18eb6d18cb4d191b7d38db6d287b4d18bb3d097b6d091b3d08bb6d28e *b6d18cb5d28fb6d38fb5d48cb4d093b5d18fb4d08eb5d08fb6d291b6d392b5d294b8d392b8d393 *b8d299bad48eb5d191b8d392b8d39ab9d698bad692b6d599b8d393b8d395b8d38cb6d396b9d393 *b8d492b7d393b9d591b6d692bad397b8d390b5d392bad394b8d193b8d495b9d699b9d498b7d493 *bad391b9d295b8d395b8d599b8d597b6d395b9d58fb6d497b8d592b9d591b7d296b9d291b7d393 *b6d195b7d397bad495b9d394b9d399b8d292b7d38fb6d29bb9d392b6d390bad38db6d197bad692 *b9d496b3ce98bbd38eb9d695b9d396bad298b9d596b9d697bbd690b8d397b9d69abbd596b9d59a *bbd398bbd395bad398bbd2a2bdd7abc3d4b5c8d7b9c7d9becbddc2cddec3d0dfc7d1e1c8d3e2cb *d6e3cad7e4cbd4e2cbd3e2cad5e2c9d4e2c6d1e0beccdeb8c8dcb6c8dcb1c6daa9c2d8a3bfd7a4 *c0d8a5c1d8a0bed59cbdd69abdd69cbdd69cbdd69abdd6a4bfd79dbcd79fbbd79ebed899bbd698 *bad79abdd69cbed49fbdd69dbcd49cbcd69dbcd6a1bcd6a3bed6a2bdd7a0c0d7a7c4d7a4c0d6a4 *c1d7a0bed6a2bdd6a7c0d7a7c1d6acc3d8acc4daaac4d8b4c6ddb8c9dcb9c7dab4c7dcb6c8daaf *c5d9acc4d8afc6dcb5c8ddb6caddbdcaddc3cddfc5d1e2c7d0e0c8d3dec9d4e0c9d3e2cbd3e2ca *d3e0cbcfe1c7d3e0c8d2e0c9d3e2cad4e0ccd4e2cdd5e0cdd8e2cfd8e3ced6e3cbd7e3cdd6e3cd *d6e3ced7e3cdd9e4d0dae3d1dae5d1dae5cfd6e4cbd5e2c8d6e3cad3e1c9d1e0c8d2e0c8d4e1cb *d5e2c9d0e0c7d1e1c6cfe1c3cfe0c1ccdebeccdfbfcbdec0ccdec0cddec0cbddbdcadcbac6dbb6 *c5dcbdc6d9b6c5d9b5c3d6b7c5d6bbc7d7bcc4d6bcc5d9b5c3d6b6c4d6b6c6d8b4c4d6b6c4d6b5 *c6d8b6c5d6b6c3d8b2c1d6b8c2d5b6c3d6b6c5d4b5c2d4b4c3d6b4c3d3b8c1d4b7c3d5b6c2d3b7 *c2d4b6c2d4b6c4d5b9c3d3bac4d6b6c4d3b4bfd2b2bccdb1bfd1aebbd1abbcd0acbcd1abbacdaf *bad0acbbcda9b6cba3b4c9a4b2c7a4b3ca9db0cba6b0c89daec7a2b1c7a6b4c79db0c898abc696 *aac698a9c799aac69aacc69dadbe9cadc39badc690a8c394a6c58ba2c096a4c193a8c68fa5c290 *a8bd94a6bf8da3bd8ea4be87a4c18e9fc087a2bf879fc0889fb98b9dba8ca3ba90a0bc8ca0bb83 *9dbd89a1bd909fbb8da1ba87a2be8da3be8aa1bd8ea4c087a2be88a2bc90a4bc89a3bf86a1bb90 *a4bb86a2bc8da3bf8da5bf8da2bf93a5be96a5c18ca5c294a5bf89a3bc8ca4ba8da4bd91a3bb93 *a5ba8ba3bd94a6bc8fa3c091a7c194a5bd96a8c398a5c09aa6bd96a7bd97a4bd96a7bc94a5bf90 *a6c395a5c095a7bf95a4bd94a4bd8ba5be8ca3c191a3c095a4bf92a4be8ea1bd8ea6be96a6bf93 *a0bd8ea4c198a4bc96a8bf99a6c295a1be95a5bd8d9fbf93a5bd9aa9bd93a5c199a5bf9aa6c09b *a9c39da9bc96a9bf98aac198a8c090a8c196a9c097a6c191a7c294a9c292a3c096a9bf99a9c199 *a7bc98a5bf9ba7be99a7c199a8c199a8bf9baac29caac19badc59dabc5a2afc39cadc5a4b2c7a0 *b0c79faec4a3b1c2a8aec4a5b1c6a7b2c8a6b1c7a7b3c9b0b9ccabbaccadbaccb1bacdb2bdd0b5 *bbcdb9bdd0bbc0d0b9c1cfbbc0d1bdc4d4bec7d3bdc7d3c1c9d3c1c9d7c1c7d6c3c8d6c7cadac5 *cbdbc3cadbbec9d9bbc4d3b7c1d0b8bdceb4bdcfbbc0d0b5c1d4b6bcc3c1cad1c6cfd5cad2d8a4 *b3cb9db3c7a4b6c9a4b6c9a0b5c9a4b6cca4b6cda3b3c9a8b9cdaab9cba6b7caa6b4c9a4b2caa1 *b3caa4b4cc9eb1ca9eb4cc9bb1cc9db1c89eb1c99aafc797aec99aaec99db1ca99b1ca98b1c99b *b4cd9ab2c69eb0c89db1c999b0c996aec894afc596aec894b0c890aec98faec88eafc791aac78b *abc788adc991aec989aac98caec98eafcb91aec998afc992aec98cabc98dacc68dadc78badc78d *afc788adc88badca84aac789aec884abc982a9c672a9c779a7c67eabca7da9c97daac783a8c687 *aac67daac985aec985accb83aacc87acc87fabc982acc77daac981aaca7daaca86abc981abca72 *aacb80abcb84aeca81aecb7faacb7caacb81abcb85adcb7eabc787aecd81aecb83aecb8bb1cb8a *abcd81aaca82abcb86aecc8aafcc81adcb7eaccb83adca8bafcc87accb7faecb7baccb87adcb85 *abca7fadc97eabc986aeca82aece81abcc82adcb86aecc86adcb83adca85aecb86afcb85adcb88 *aecb88afcc80afce7fadca84afca86aecb85b1cc7bafce87b1cd8bafcb81aecb85b0cc86b3cc7f *b1cd88b1ce8bb2cc92b3cf88b1cc8aafcc8baecc8bb1cd91b6cf88b1cd8cb2ce95b6d08db3ce8e *b1cd90b1cc8bb3cd89b3ce89b1ce8bb2ce8db5d192b6cf91b4ce91b4ce8eb1cd88b1ce88b0ce93 *b5cf8bb5cf92b6d092b2ce95b4ce94b7cf91b5cd98b6cf94b6cf98bad098b9d394b5d099b8d195 *b7ce92b7cf91b3cd92b4cc91b5cd91b6ce8bb3d08fb5cf8eb2cc8eb3ce8eb3cd8cb6cf8db1ce8f *b3cc90b3cc8cb5d091b4ce91b6d087b3ce94b7ce97b6cf8ab6ce92b6d093b6cf8db6d08fb5d08e *b4cf93b6d088b1cb8fb5cf8bb4cd8bb7ce8db6d093b8d38fb5d18eb5d190b4cf91b6cf93b7d094 *b6d18cb6d195b6d396b7d398bad399bad295b9d094b7d18fb6d395b6d396b6d094b6d390b6d495 *b8d390b7d18eb6cf91b6d18fb9d195b8d393b7d296b6d198b8d396b7d192b8cd94b8cf92b7cf92 *b9d399bbd396b7d194b6d193b8d593b9d391b7d093b6d097b9d093b6d392b7d298b8d198b9d193 *b9d494b8d095b6d099b8d198bad196b8d392b7ce96b6d198b8d394b7cf92b7ce97bbd297b7d192 *b9d28eb9d292b8d293b7d191bad49abbd595bbd297bbd39abbd397b8d395b9ce99bbd597bbd493 *b7d193b9d39abad190b7d19ab9d198bad1a3bed2aac3d7b2c5d5bacadac1cddcc5d2ddc8d1dcc9 *d2dfc7d2ddc7d5e2c7d4e2c6d2e1c8d3e1c8d4e1c3d0debccadbb6c6d9b3c6d7a7c3d8a1c0d598 *bbd59dbed6a0bed3a1c1d59bbbd39cbed59ebfd5a0bdd6a3bed69cbbd698bcd59fbed69abdd49b *bdd39dbed698bdd597bbd49fbbd597bcd59bbbd39bbdd49bbad49bbbd29abad3a0bcd5a4bfd7a8 *c1d7a5c1d6a7c3d6a6c1d5acc4d6afc4d7b1c3d7b1c6d7b0c5dab4c7d9b8cadbbacbdbbccbd9ba *c9dab5c9dab3c7dab8c7dab6cadbbccddebacbddc1ccddc2cedec3cfdcc4d0dec7d1dec7d1ddc8 *d1dfc6d2e2c6d1dfc9d2ddcbd3dfcad6dec9d4e0ccd5e1cbd6e2cbd8e1ced8e3ced8e3ccd7e0cc *d3e1cdd3e0cdd6e2ccd7e2ced8e3ced9e4cfdae3cfd9e2cfd7e0ccd4dec9d1dfc7d0dec7d3dec8 *d6e1c6d3e1c8d3e0c7d0dfc8d1e0c7d0dec0cdddbdccdcc0cddec1ccdec0ccddc1ccdcc2ccd8be *cadbbec9d8bbc7d8bac7d8b6c6d6bbc8d8bbc6d8bdc7d6bac7d6bac6d6b9c4d3b6c6d9bac6dbb8 *c3d6b6c3d5b8c6d6b8c7d5bac8d6bbc4d6b8c6d8b5c5d3b7c6d6b5c5d3b7c4d6b3c5d5bac6d5b9 *c5d3b9c3d4b7c2d2b5c3d4bbc4d4b7c4d3b6c2d2b1bfcfafbed0adbdceacbcd2adbbcda9bacead *becdabbbccaab6cba7b7cca9b9c9a8b6caa5b2c9a6b4cba3b2c9a2b1c79db4c79db2c79bb0c8a0 *afc6a3b1c69faec197aac49dacc499acc698a8c297aac494abc192a9c29daabf92a3bb92a7c095 *a6bd85a2ba8ca5c08ea4c192a4bd8fa5bc8da4bc8fa3b993a3b990a0b9869fb990a4bd89a4bb90 *a4bb88a3b993a3ba89a2b78ca1ba95a2ba8ca2be8ca3be889fb792a3bf90a5ba91a4bb91a3bd8d *a2bb90a4bd8da2bd8ca2bb90a3bd96aac293a8bc97a6be95a4bb8aa2bd8ba7bd8da4bd93a7c190 *a7bc94a4bc97a9c093a7b992a4bc97a6bd99a8be99a8bd97a8c09babc298aabd9aa7be91a5bd91 *a5bc95a7bc91a8bf9ba7c29aa5c194a5c094a5bd97a6bc95a7be95a4bc96a5c192a6bc99aabc92 *a7bd9aa8ba96a6bd9baac291a7bc99aac397a6c09baac19cabc299a4c08fa7bd99aac197aabd98 *aabe8ea8be9cacc19aaac298a4bd9daabf9baabd96a9bf99a9bd91aac296a6c094a8c198a7bf95 *a8c199aac29ba9c19baac09caec29bacc19caabe9fabc1a2b0c5a3afc2a1afc5a3b0c2a3b1c3a4 *b4c5a4b3c5a9b4c6a5b1c9a6b5cbaeb5c9abb3c8acb9cdabbac8b2bbcbb2bccdb7c1d0b8c1d1b7 *c2d2bbc3d3bdc6d2c0c8d4c1c8d5c3c8d3c3cad7c6cad8c6cbd9c5c9d3cacedac5cddbc9cedbc8 *ccdac8cedcc5ccd9c2cad7bbc5d3b5c0d3b6becfb7c3d1bcc5d2bbc3d1b7bebcc2cbcec6d1d3c9 *d3d9a6b6cca3b7cca7b6cca8b8cba8bac9a6b8ccaab8cba4b9cea8bacea8b6cda4b6cca4b7cba5 *b6caa6b8cba4b2cd9baec99bb2cba0b2cb9ab3cb99b3c998b1c894b4cb93b3ca9db1cb97afcb9b *b1cb9bb1c89ab2ca9cb1c896b0c88fb0c990aec993afc892aecb8caac88faec98aacc889acc989 *acc884acc984acc884abc783abc67faac787acca8caeca89aac68bafc88cb1c88caec98cacca81 *acc98babc98caecb85aaca85acc785abc986aac882abc781aac882abc981abc984aac977aac984 *abcb83aac979aacc7fadc983abca7faac782acc67ca9c978a9c880aac886adcd86abcb81aaca84 *acc97badcb7cabcb84accc80accc79aacb84abcc82adcc82adca81afcc87aece80adcc7cabcc7f *aac986accd81adcb81accb8aaecc83aecc86afca7eadcb7daacb83aecb89afcd82aecb87afce87 *aeca7da9c988aecc81aecc7fadcb86b0ce81b0cf80adcb80acca84acca86accb80aecc88aecc7f *abcb89b0cf85aecc88b0cc89b0cc86accb84aecc81abcb85aecd88b2d187aecb85aecd8db0ce8b *aecd87aecb91b3ce8ab1cd8bb3ce89b3ce85b2cf87b1d08bb2cf8db1cd90b1cb8cb3ce8cb1cd8c *b1cd8eb4ce8db4d18db1cd8bb2ce90b2cf92b3ce8db4ce87b1ce8db4cc8cb4cf88b3ce8fb6ce8e *b4cd87b0cf8ab3ce87b4ce85b3d18fb3d090b6d08fb3ce90b9d099bace95b7d098b6d097b6d297 *b6d090b5d294b5d194b5cf97b6d194b6cf92b4d08ab4ce91b6d190b5d18cb5cf8bb5d188b2ce8c *b6ce88b4cd91b5ce8ab1ce87b2cf91b5d28db4d18cb6d28ab4cc8cb7cc91b4d191b5d18eb5d090 *b5d087b2cf8eb5cf93b6d08fb7d183b4cf8ab3ce8fb4d08bb4d18eb6d094b7d193b7d090b4d091 *b6cf88b5d190b8d392b7d392b6d28eb6d18fb7d191b9d28db7d190b6d197b8d392b7d096b7d290 *b5d28cb6d092b8d392b6d492b9d186b6cf8eb6d293b9d290b8d291b6d097b9d28ab6d18db7d492 *bad392b3ce96b8d298bad296b8cf8cb6d28db6d294b6d291b8d195b6cf97b9d094b7cf95b9d192 *b8d28bb6d28db6d392b8d392b9d295b7d093b6cf91b6cf95b6d08fb7d291b6d291b6d28ab7d296 *b8d38fb9d193b9d196b8d396b9d390b7d68fb8d196bad298bbd395b8cf96bad397b8d191b6d08e *b9d392b6d290b8d390b6d293b9d495b9d29abbd09ab9d19ebdd3a2c1d6b6c8dbbeccdcc3d1ddc7 *d3dec6d3dfc7d1dfc8d2dfc6d1dfc6d3e1c6d1e1c4d3e2c2cfe1b9ccdeb5c9dbb3c7d9aac3d69c *bfd49abcd49fbed59dbed59cbdd6a1bfd79ebed7a4bdd2a0bed5a4c0d8a4bed696bbd39fbdd69c *bed6a1bed697bdd498bad39abbd298b9d29cbcd597bdd599bcd798bcd49cbbd39abbd49cbbd3a8 *c1d6a7c1d6a4c0d6a4bed4a9c1d8aec3d5b2c6d8b2c5d8b1c6d8b3c6d9b3c7dab5cadbbac8dabd *ccddbbccdcbaccdbbaccddbbcbddbccbddbdccdebdcdddbfcbddc1ccddc3d0dec6d1ddc3d1dec7 *d2dec7d2dfc6d0dfc6cedec6d1dec9d4ddc9d5dfcad5e2ccd6e0ccd5e2cbd6e2ced8e2cbd5e2ca *d6e2cad6e1ccd8e2cdd9e3cbd6e2ccd7e2cedae3d1d8e3d0d8e2ccd7e2cbd7e1c7d2e0c7d1dec8 *d2dfcad5e0c9d4e1c6d1dfc6d0dfc6d1e0c5d1dfc1cfdebeccddbfcdddc1cedec2cfddc5cedcc1 *cdddc3cbdcc2cbdfc0ccdcbecad8bac7d5b9c9d6b9c9d8bcc8d9bdc8d8bdcad8bcc7d8bac7d7bd *c7d8b6c3d4bbc6d6b7c5d6b8c4d6bbc7d8b6c6d8b9c7d6b5c6d6b7c5d4bac7d3b7c4d3b8c4d3b8 *c6d6b8c5d6b7c3d3b9c2d4b7c4d6bbc5d2b9c5d6b6c3d4b0becfb1bed0b2c1d0afbfd0afbfd2af *becdb0bdcdb0bcceacb9cfabbbcca8b8cca9bbcca5b6cba9bacba5b5c8a6b4c4a4b2c9a4b5c7a0 *b2c899b1c8a0b3c99fb0c7a3b1c89dafc4a2aec39aabc69aacbf9baac292acc692abc38ea7c295 *aac396a7be94a7c18ca4bb8da6bf93a7c08ba4bf8fa5c190a5bf93a7c095a4bc90a4bd8ca2bb8b *a3ba8aa3bd8ea4bc8ca4c090a3bb8ca4ba92a5bf90a4c091a5bb8fa2b590a5c091a4be8fa4bb93 *a4bd8ea2bd92a3bd95a4bb8da6b986a4c18da7bf90a7c08da6bf9ba6ba92a8bd93a9bf97a6bc92 *a8bd96a7bf97a8bf8ba3bd96a7be95aac197a9c098a9bf95a8bf95a9bf9baac290a6be98a7be97 *a8c494abc097a8be97a5bd97a6be95a5bd99a7c08ca6c09baac098aabd96abc392a4be99a8c096 *a6bd9ba7be95a7c39aa8c49aaac09cacc397acc198aac49aa8c29aabc19baac39baabf9cadc1a0 *aec49daac09ca8c29ba7c09baabe9ba9be99aac399aac197a9bf99aac298aac29ba9c09eacc19b *a9c09aabbf9baac09badc19dacc59babc49eabc0a2aec4a2afc5a3afc3a4b2c6a8b5c8a6b2c9aa *b7cbaab4caabb9c6b1bacbb1bbcbaeb4c7afbdceb3bcd1b6bdceb8c3d2b8c4d1bfc4d1bdc5d2bd *c5d4bcc6d5c0c7d7c1cbdac1cbd9c6ccdbc7cddac7cfdbcbd1dbc7cfdccbd1ddc9d1dec8d1ddc9 *d1ddc9d1dec6d0dbc2cbdabec8d6bdc6d5b7c1d3b8c1d2bbc3d4bbc3d3bdc5d4b8bebbc3cad0c8 *cfd4c9d4d8a8b6c9a7b5c9a8b6cca9b7caa7b9cda7b9cda4b8cba4b8cba4b7cea3b2cba3b3cca5 *b5cba2b2cca1b3cc9fb2c999b3ca99b1c695aeca95afcb8dadca92adca8cafcb8caecb95aec991 *adc896afc890aec78badc98daeca8cacc888abc98aaac98aaac98daac789aac582a9c786abc781 *a9c682aac788adcb84aac985aaca7eaac783aac989acc98aabc886aac781a8c986abca85aaca80 *aac975a8c684aac982a8c77ba8c781a8c777a7c77aa8c873a4c679aac87ea7c67ea9c679a9c780 *a9ca80a8c97ea8c982acca80a9c774a6c77aaaca7caac97fa9c981a9c883acca7daaca79a8cb80 *abcb7eabca7faaca7caacb80abcb83abc97dabcc79a8c980a9cb85aecb80abc97dadcc86aecc83 *aacb7eaaca77aaca84adcb7eadcc80aaca88acca89b0cc80aacb84aecc83aecd7baacb83afcd72 *a8cb83abce81abca7fa9cb81aacc81adcc7faecd89acce83accc81accc7faccb86adcb86aecc85 *adcc89adcb82adcd86afcc7cadcb87aece85accb88aecd89adcb87afcd86aecc83afcd88aece86 *adcb81accb8ab1ce89aecd89afcc8cafce85b0ce86b0cb82b0cb83afcd8cafcd8cb3ce8eb3cb8c *b2ce8baecb8bb1ce90b1cd88afcb8db3cf8bb2cd88b2cf8db1cf88b2d190b1ce8eb1cc8ab1cd8c *b3cf8ab3ce8eb3cd93b6d08bb4ce89b2cd8ab0ce8fb1ce8bb2cd90b4d094b6d192b6ce90b4cf91 *b4cc95b3cd91b2d090b4d194b6d092b4d191b3d091b5ce95b6ce92b4cf91afcd8eb1ce96b5d190 *b4d18cb3cf8bb4d18db5d091b5cd92b4ce91b2ce8eb1ce8eb4d08eb4d191b4d08ab3d189b1cb87 *b5cf8eb5d08db1ce8eb2ce8eb3d08eb4d188b1ce8fb5d090b3ce8bb5ce92b6cf92b5d18eb5d08e *b1ce8ab2cf8cb3d094b7d491b4d08fb5d08eb1cf8bb4d291b6d093b6d192b7d18cb6ce89b4d096 *b8d193b6d094b7d08eb6cf92b6d191b6ce8fb6d38eb7d192b6d28cb6d18fb4d192b6d28bb4cc95 *b4d090b6d08eb5d28eb7d58db6d18fb7d093b6d293b6d290b5d190b6d190b5d18bb4cf93b7d391 *b7d293b7d092b5cf91b6d192b6d293b6d08cb5d18db3d28db6d293b9d093b5d092b5d291b5cf92 *b8d28eb4d291b6d38cb7d390b6d193b6d093b6d193b6cf91b6d394b8d397b6d499b8d395b8d397 *b7d395b7d297b5d094b6d195b5d198b6d397b7d19cbad59bbbd4a4c1d1a9c2d4b6c8d8becddbc2 *cedfc3cfdfc5d0e0c7d1dec4d1ddc5d2dec7d2dec3d0dfc5d2dcc1ceddbbccdbaec4d9acc3d8a7 *c0d89dbbd499b8d39bbcd3a1bed398bdd29dbdd59cbdd6a0c0d5a6c1d8a5c3d6a8c0d7a5bdd49d *bbd49ebdd59bbdd599bcd698bad696bbd59abad19cb8d39dbad59dbbd595b8d295bbd39dbad3a1 *bcd6a4c0d7a3c0d6a4c0d5a7c1d7a9c2d6aec4d6b3c6d7b1c5d9b3c6d9b3c6d6b6c6d8b6c6d9b9 *c6dabccad9bdc9dabdcddec0ccddc0ccddc0ccddbfcbdbc1cbdcc3cdddc3cddec6d0dec6d1dec8 *d1e0c4d2e1c8d2dec4d1dfc1cfddc2ccddc1ceddc5d1dec9d1e0cbd3e0cbd2e0c9d6e0cbd5e1c9 *d3dfcad3e0cad3e0cbd6e1cbd6e2ccd5e3ccd5e1ccd8e2ccd7e2cdd6e2cdd7e1cbd3e1c8d1e1c4 *d1dec6d1e0c7d1dfc6d1dfc6d0e0c6cedec6ceddc5cedec2cddec1cdddc0cbdcc3cfdec4cedcc6 *cedcc5cfddc7d1dfc0cddbbfccddbec9dcbcc7d9bbc7d8bdc7d5c0c7d8bfc7d8bdc7d8bdc8d8b8 *c6d8bbc6dbb9c4d6bbc5d7b8c7d8bbc6d7b8c7dbb8c6d3bbc7d8b8c5d8b7c4d7bac5d5b7c5d3b8 *c3d2b5c3d6b6c3d3b7c2d3b9c3d4b6c2d5b8c2d2b9c3d4bac4d3b3c2d3b2baceafbcd0afbdd1af *bed1b1c1d0b0bed2aebbceb2beceafbdceacb9ceabb6cbaab9cea6b5caa8b2c9a6b6caa7b7c7a7 *b9ca9eb2c69baec6a4b2c9a4b1c6a4b2c8a3b1c79baec79dacc49daec698acc698a9c394adc594 *a7bd96a8c191a4c196a6bf94a8bd94a7bf8ea2c092a3bd91a5bc92a4bd8fa5bd8ba4ba8da6be8c *a5be8ba3c090a3bd90a5c094a4bf95a4bc91a5c090a3bd8ca6c196a4bd91a4bb91a3bf8ca2bf98 *a5c092a4be91a4bb90a2c08ea7bd91aac196a7bc93a4bc97a4bd8ca5c09ba6be97a3c094aac48e *a4be98a7bd91a7bf9aa6bd99a3bd96a7be9daabe98aac499a7c09aa8c39ca9c09aabbf9ba9c196 *a6bf96a7bf96a6bb98a7ba9babbf90a6bf99aac199a9c18ea7bf97a7bd97aac198a8c19ba6ba9c *aabf95aac19da9c39aa4c199a6c29ea9c2a0aac099acc49babc59ea9c09eabc19eadc3a1acc49c *acc399a9c197a5c19eacc2a1aec39eabbda0acc39baac398a9c297a9c28fa7c49aaac29dacc596 *abc49cadc4a1acbf9fa8c19fabc29caec498adc5a0abc4a1aec7a2b0c6a2acc4a6b0c8aab2c8ac *b4caacb7cbadbbceaebdccb2bdceb6bfcdb5becfb6bfd1b7c0ceb6c1d1bdc6d3bdc5d6bdc8dabf *c9d9c1c9d7c4ccd8c4c9d8c7ccdbc6ccd8c7cddbc7cddbcbd0dccbd3ddccd2ddced3deced2deca *d3ddc9d0ddcacfdbc6cddcc0c9d9bec9d7bac6d5b7c1d3b6c0d2b7c0d0bbc3d3bdc4d5b8bcbdc3 *cad0c7cfd3cbd4d8a8b5c9aabbcba9b9caa6b6cca4b8cba4b6cda4b5cda6b5cba4b3cca4b6cba3 *b1c99eb2cb9cb0c997adc88baac68caec88dabc78baac885acc787aec986abc682a8c788a8c58b *afcb83a8c784a7c781a8c883abc67aaac584abc777a7c781a9c786acc781a8c785a9c882a9c982 *aac784aac686abc783aac880a9c776a6c77da8c67faac87ea9ca78a8c686aac77fa9c681aac984 *aac97fa8c97da9c780a9c979a7c784aac579a7c678a6c478a5c67ba5c775a4c585a8c77ea4c77d *aac77daac681a7c682a9c783a9c87ca9c884aac780aac97baaca82abc885a9c877a9c784abca83 *abcb77abca7baacb81accb81adcb85aac980a9c988adcd7fa9ca81accb83accb82abcc7aabca81 *accc7caaca85aecb81aaca7aaacc76a9ca8aadcb81acc983aacc86afce85acc98aaecc7baacb7d *acca80accb83aecc80aaca81aacb80aacb84adc983aecb82adcc89afcb82accc83accc83aecb81 *aecd82aecb87afcb85aacb80abcb81aaca81adcb8ab0cc88adcb82accb82adcb84aecb88aecb84 *accb88aecb89adcc84adcb81b1cc80abcc8cafce8eb0cb8bb1cc8ab1cb87b3cd8cb1cd8db3ce8a *b1ce87adcd8fb3cd8eb1cc89b2cc85b0cd8bb2ce8ab2cc87b2ce8db2d188b1cc8bb1cc8bb1cc89 *b0cc8bb3ce89b1cd8db1cc8db2cd8ab1cd92b2cb90b3cd8eb3ce8cb0cd8fb4cf90b4ce90b6ce95 *b5ce95b4cd98b5ce92b4cd99b6ce95b7d094b6d08fb4ce94b6ce96b6cd95b6d194b5cf98b7d297 *b6ce8db3ce8db4ce91b6d18bb3d28bb5cd8eb6d18bb1cd8db2ce90b2cc90b4cc90b5ce8eb2ce89 *b3d189b2ce89b3ce88b3ce92b5d08bb3cf8cb4ce8ab3cf8eb4ce8fb3ce92b4cf91b5d195b5cf93 *b5ce89b1cc8cb3ce8cb5d18eb5d190b5d190b4ce95b6d091b5d192b7ce8db6ce90b5cf8cb3d089 *b2d087b0d18eb3d189b3d190b6ce95b7d190b5ce99b8d28db6d08db7d193b6d191b7d194b6d095 *b6ce94b8d193b6d194b6d18bb6ce95b6cf92b6d092b6d094b6d095b7cf8eb5cf91b5d091b5d192 *b4cf8db3cf97b8d192b6ce92b5d095b7d08db7ce8fb6d08eb2cd92b5ce8fb5cf8bb2d18db5d391 *b6cf96b6cd8db6ce91b6ce91b6ce8bb4ce90b6d28eb4d18db6d298b9cf92b7ce91b6d292b6d292 *b7d196b8d396b9d396b8d291b7d19ab8cf99bad294b7ce9cbbd3a0bbd3a1bdd4acc3d8b5c8d9b9 *cadab9ccdcbeceddc0cfddbfcddbc1cddec0ccdcc3cfe0c2cfe0c5d0ddbecddcb5c8d8a7c0d4a6 *c0d6a4bdd597b7d29fbbd49bbbd397bbd499bcd2a3bdd5a3bed6a9bfd6aac1d6a7c3d8a7c2d7a4 *bfd6a1bdd39bbbd397b9d397bad699b9d398b7d49cbbd697b9d299bbd59ebfd49bbbd399b9d2a3 *bdd3a0bcd39ebed3a8c1d6a6c1d6a8c2d7aac4d6b1c5d7b2c5d7b1c6d9b3c6d8b1c7d9b2c5d8b2 *c3d9b7c8dab9c8d9bdcbdac1ccdcc2cedcc2cddec2cddec1cedec3cedfc2ceddc5d0ddc7d3dfc9 *d3e0c9d1e0c9d2dfc9d1e0c6cfdec3cedec1cedcc1ccddc3d1dcc7d1dec7d2decad1dfcad1e2cb *d4e0c9d4dec9d3dfcbd5ddccd2dec9d3dec9d2e0cad3e1cad5e1cbd6e2cdd6e1ccd6e0c9d3dfc6 *d1e0c4cedfc3cedec3cfdec6d1e1c6ceddc4cedec4ceddc5cfddc5ccddc3ccddc1cddcc4cedfc6 *d0dfc7d2dec9d5dec8d3dec7d0dec3ccddbfccd8bfcbdac1c9d8c0cbd9c2cbdcbfcbd8becbd8c0 *c8d6bdc8d8bcc8d8b9c6d8b9c6d6c0c7d9bbc7d6b8c6d2bbc7d7bbc3d6bac6d4bbc5d6b8c6d6b7 *c3d4b6c2d4b7c4d6b8c2d3b6c2d1bbc3d6b6c3d4b8c5d4b8c3d5bac6d7b5c2d4b1c1cfb3c0d0b5 *c1d1b1c1d2b1c0d1aebed0b1becab1bdcfb1bfceb1c1ceb1bfceb0bbcbaebacbaab9cba8b9cba8 *b6ccabb6cda7b5caa4b1c9a6b3c9a8b1c79fb0c7a2b2ca9eb1c79eb1c69aaec69eacc19cafc695 *acc499aec697a7c393a6c396a9c297aabf99a7bc96a6be91a5c293a6c097aac492a6c095a6c193 *a5be91a4be94a5bd96a8c096a5bd96a7bf96a4c096a6c195a4bf96aac093a4be98a8c295a3c09c *a7c191a4ba92a8be96a9bd95a7bb91a8be94a6bf97a4c095aabf99a8bb97aabf96a8c196a9be98 *aac19aa8bd8ba5be93a7c09ca8bf9ca8c199aabe97a9c198abc197a9bc9caac099a7be99a9c195 *a6bd95a4bd94a7bc96aac292a7bd9baabe99a9c498a6c596a6c299aac298aac297a9bf9caac39b *a9c19aaac29eabc39dabc39facc3a4adc5a0adc39fafc39daec39dacc3a1aac19fabc4a4abc49f *aec5a1b0c79caac3a1acc29eacc39eadc29cabc3a2afc6a4b0c9a1b0c99fafc6a0aec4a0acc1a2 *afc5a1b0c5a1afc8a0acc49daac39dafc5a5b0c6a2aec49cadc1a4b0c5a6afc5abb5c6aab7ccad *b8ccb0bacab1bbccb1bcceb0bdceb1bdceb2bfd1b2bdcfb3c0d0b9c1d0bcc2d1c0c7d1c1c9d2c2 *c9d8c2c9d7c5c9d9c4cbd9c7cddac9cddbcbd0dbcad3d9ccd3ddcbd1deccd2ddccd2deccd3dece *d4e1ccd4dfccd4decdd2dcc7cfdbc3cbd7c1c8d7bbc4d4b7bfd2bbc0d2b9c0d1bdc4cfbdc6d2b7 *bcbac1cbcfc7d0d4cbd4daa4b7c9a9b8cda8b8cda4b5cca7b5cca1b4ca9eb2cc9bb4ca9ab1ca95 *b1cb95acc990aeca8aaecb92b1cb86abc781a8c47fabc979a8c77ea8c682acc980adca82adcb80 *aac985acc97ca8c876a8c773a7c772a5c877a6c77da7c87fa9c97faac977a9c875a7c777a6c677 *a8c67aacc77aaac782abc880abca7caac778a7c773a7c978a7c779acc876a8c875aac97baac980 *aac97ca9c884aacb7ea9c67eaacb78a5c686acc985a9c786a9c57aa8c67aaac881abc983a8c879 *a9c977aac77aa7c781a8c87aaac976a8c97bacca77a9c977a7c673a5c972a5ca7fabcb7eabcb7e *abca7caac97aa7c87ea9ca77a7c97fa9c97fabc981abca7aaac97cacca78aac97bacc981adcd7b *adcb6fa8cb81a9cb7ba9c681aecc83aeca7baccb8aaccc85adcc76aaca85abcb84accd87aecb82 *abc981adcc82aecd72a8c981accc80aacb7eabca82adcb7dadcb81afcd80adcb82adcc7dabcb78 *aaca78aaca81aecc7eadcc85aecb81afcd83adcd86aecb82accb80a9cc84aecc86adcb80afce7d *adcb84afcc8eb2cd85aecd85afcc80b1cf8bafcd84aecb82b1ce8ab1ce86b1cb84afce8bb0cd84 *aecc81aece86b1ce87b2ce8db1ce92b5ce87b2d08eb3d189b2cd87b1cd8cb2d089b2d08bb3ce88 *afcc8ab2ce8bb4d08db3cf88b2cf89b2ce8cb2cd89b0cc85adcd88b1cd8cb1ce8db4d08eb2ce93 *b4cc90b2cf98b7cf9bb6d197b6ce9dbad298b9d199bbd392b3ce98b6d097b7d192b5cf94b6cf93 *b7cf95b7d281afcc8ab3cf8fb3cc8db4ce86b2cd87b3cf90b5cc8bb6ce8db3d184b1ce8eb4ce8e *b2ce85afcc8db6d08ab3ce8bb7d38cb6d187b4cf8fb6d08fb4d08bb1cc8fb3ce8cb3ce89b5d088 *b3ce7fb2d190b5d18fb5d088b1ce95b5cf8eb5d183b2cf8cb5d18cb5d08ab5d08bb6d18eb6d392 *b6d18eb4cf8eb4ce88b6cf8bb4d089b4ce90b7d290b7d291b6d291b6d28eb7d091b6d291b6d28d *b6d188b5d08bb6d189b3cf95b7ce97bad38cb4ce8fb6d08bb4cc8eb7cf97b8d38cb5d192b7d394 *b7d091b6cf89b3d093b6ce8eb6d092b6d190b8d18fb4d191b6d08fb4d190b4d08ab5d08eb6ce88 *b2d089b6d090b7d393b7d292b6d190b9d191b7d094b6d190b6d291b6d393bbd38bb7d090b5d192 *b5d197b9d193bad392b7d28db6d290b9d190b6d28fb6d597b7d28fb7d398bbd39cbbd3a1bdd3a4 *c1d4a4c0d4a4c0d6acc3d8b4c7dcb6c9dab2c7d9b1c7d9b5cbdcb7cbddbacbdbb7caddadc3d9a4 *c0d6a6c2d59ebbd294bad299bad198bad491bad59dbdd69dbed7a4c0d5a6c1d5a3c1d6a4c3d7a1 *c1d79fbdd59fbdd69bbdd696b8d498bad396bad299bbd39cbdd396bbd29abbd699bcd49bb9d3a0 *bdd5a2bed4a4c1d6a2c1d6a4c1d4a1c0d4a6c2d6adc4d7b1c6d8b2c6d9b2c4d8b1c6d9b1c4d8b6 *c7dab2c6d9b3c7dbbbccddbecddec1cedfc1d0dfc3d0dfc3d0dec2cedec5cedfc3cfdec4d1dec6 *d3e0c7d3dec7d3decad4dec9d4e0c7d1dec7d1dfc3cfe0c2cedec4d1ddc5cedfc6d0e0c9d1e0c9 *d3e0c7d2e0c3d1e0c5d2dfc5d2e0c3cfe0c6d1e0c4d1e0c3cfdfc6d1e0c8d2e2c7d2e1c5d1e0c5 *d1e0c3d1dfc4d0ddc2d0dec4cfdec3cedfc3ccddc2cddfc3cedec0cdddc2d0dec5d1dfc5d0e1c7 *d3e0c6d1dec9d3e1c8d1e0c7d3dfc3d1dec3cedfc3d0dbc1ccdcc0cadcc0cbddc0cbddc1c9d9c0 *cadbc0cbdbbfcbd9bdc8dabbc7dbbbc7dbbdc6d6bbc7d8bbc7d7bbc9d8bbc7d3bbc8d6bbc6d6b8 *c5d6b6c4d8b5c2d4b5c1d2b7c3d4b7c4d5b6c4d4b3c3d2b7c4d4bbc6d8bac6d7b8c4d6b1c1d2b2 *c1d2b5c2d2b7c4d1b6c2d1b3c2d2b4c1d1b4c2d3b5c0d2b1bccfb0c1cfb1c0cfadbcd1aabbd1aa *b9ccaabbcda9b9d0aabbcea6b5caa7b6caa7b5cba7b5c9a3b4cba2b1c9a4b1c7a2b1c99aadc79a *aec69facc39aadc69eaec69badc59caac397a9c394aac08fa8c596a7c394a6c092a5bd91a6bf8e *a5bd94a6bc8da4bc93a5bf8aa5bd95a8c296abc294a9bf9facc398a9c393a7bd95a9c393a6c090 *a2bf90a6c496a5be97a9c196abc395aac394a7c096aac296a8bf8da6bf95aac199aac197a8c096 *a8c596a9c192a7c193a6c096a8c19aa9bf98aec695acc29badc495a9c199aac49aa9c494a7c094 *aabf95a9bd94a9c098aac29cabc49baac298abbf94a9c293a9c397a9c29aa9c094a8c298a9c29c *abc59caac39fa7be9cacc39caac297acc69eabc69eb0c59dafc9a0aec3a1aec4a4aec49eafc4a0 *abc3a0aec9a4b0caa4aec3a1aec59daec6a0aec4a2aec49caec39db0c49daec5a0aec5a1afc8a2 *afc59eaec5a4afc5a0adc69eb0c99fafc2a3b0c9a3afc7a4afc9a4b1c7a7b5c9a8b4c5a6b5cba6 *b2cba8b9cbaebbcfb0bcceb4bdceb1c1d1b3bdcfb3bbcdb1bccdb3bfd3b6c1d1bcc5d3bdc9d9c1 *cbd9c3ccdbc4cddbc6cedbc6ccdccad0dcc8d0dec9d1decbd3ddcdd3e0ccd3decbd4ddcdd6dece *d3dfccd4ddccd5decbd3dfccd4e0cbd2dfc7cedbc4cbdabdc6d6b9c4d2b9c2d2b8c3d2bbc7d6bb *c5d4b6bdc2c3ccd0c7d0d6cad4d9a7b3c8aab6c9a2b2cba1b4c9a4b1c99db1cc9bb3c997b0c796 *aec996aeca87adc885a7c47ca5c679a5c774a4c67da8c582a8c781a9c876a4c67ea4c57ea8c685 *a6c878a5c679a4c575a5c67aa7c775a2c476a3c677a2c57ba4c671a4c878a8c87eaac67aa9c679 *a8c677a1c679a4c678a4c679a7c786a8c77aa7c77da9c67ba9c77aa4c778a4c77ca3c77aa7c679 *a4c779a3c275a0c276a5c67aa7c782a6c479a4c679a7c674a2c380a7c582a7c775a5c77ca7cb78 *a6c678a5c781a9c879a3c380a5c679a9c773a4c77ea7c87ca8c781a9c583a9c683a9ca75a4c77c *a7c77fa8c878a5c77caaca7ba8cb81a9cb85a9c881aac77aaac87da7c777aaca7ca8ca82aaca73 *a9c97fabc880aaca7da8c67da8c97eaaca7caacb7ca9c77ea7c985aaca77a8c97babcb7ea9ca7d *a9ca83aacb7da8c982a9ca83aaca82abcd84acc97faaca85abc97ba9c685abc980a9ca80a9c981 *aaca84adcd7caaca83aac987abc987acca88abcb86adca83adcd80aacb83accb85adcd8aaecb82 *aaca82acc983adcc87aecc82abcb82aecc88adcc85aecb8baecb7dabcb86abcb80a9ca8bb1cc89 *adcc87adcc8caecc84aecb87aeca8bb1cc8bafcc8baecc91b2d08db1ce8bb2d18db2cd8bb0cc8c *b1cc89b0cb85afcb86b0cd89aecd8eb1cf8ab0ce90b1cc8aafcb89b1cb8ab0cb8fb1ce8bb1d094 *b1ce92b3ce98b2ce98b4cd9cb5ce94b5ce96b5d090b2cd96b4d196b6d193b3cf96b5ce96b6cc95 *b5cc93b5ce8eb1cd89afcc8bb1cb92b1cc93b3ce8cb2cc8caecd8eb2ce86afcc86aeca8eb1ce8f *b0cc8cb1d187b1cb8db2cd8db4ce8fafce8cb0cd94b3cd93b6cf88b2ce89b3ce8bb1cc8eb4cd91 *b3ce89b2cd88b1cc8cb1cc8cb3cd8cb1cd92b3d18eb2cd94b5cf87b0cc90b2ce8cb1cd89b6ce90 *b6d08cb5d090b5d197b8ce94b4cd90b2cc8bb2d087b1cd8fb5cf91b5d38bb2d18db4ce8db4cd95 *b3ce91b3ce88aecb91b5cd8fb3d093b6d194b8d291b3ce93b5cb8cb2cd90b1cc92b5cf8cb4cd92 *b6d18fb5d092b5cf90b5ce92b6cf8fb5d08db3cd91b3ce8fb3cf8bb3cf8bb2cd94b5d294b5cd91 *b4cf8eb1cd93b5ce96b4cd8db3cd8bb1cc8cb4cd90b4d191b6ce96b6d091b2d08eb4cf91b6ce8d *b1d192b6d38eb4d190b7d192b7d098b7d093b5ce8eb4ce91b5cf96b5cc96b8d197b6d396b7ce94 *b7cf9bb9d29cb9d398b7d19ab8d09dbdd599bdd49cbed59ebcd4a2c0d7a5bed4a7bfd7a6c1d6a7 *bfd69cbbd4a0bdd6a0bdd69abad49cb7cf9eb8d19db9d29cb9d1a0bdd5a1bdd5a6c0d4a3bed3a5 *c1d4a2bbd38db6d29cbad497bad399b7d095b8d699b6d290b6d09cbbd398b8d19dbbd39cbbd2a4 *bbd5a4bed1a6bfd6a4c0d5a8c1d4a4bed4a7bdd3abc1d7afc3d8b3c6d7b2c4d6b6c6d8b3c5d6b5 *c6d8b7c7d7b6c4d8b5c6d8b7c8dbc0cbddc2cddec2ceddc2cedec4d0dec4cfddc6ccddc3ccddc4 *ccddc6d1dec7cfddcbd1dfc8d3decbd5e1c9d1dec4ceddc3ccdcc3ccd8c3cedcc4cedec1ccdec1 *cedec1cddfbecbddbbc9ddbfcbddc0ccddbcccddbbcbdbbeccddbfcdddc0cdddc1cbddc2cedec1 *ceddc1ccdcc0ccdcc1ccdcc1cedcc2ceddc5ceddc5cddec3ccddc3cdddc5ceddc3cdddc6d0e0ca *d1dfc9d3e0c8d1e0c7d0decbd1decad3dfc4cedec5cedec3ccddc4ceddc5cbd9c2cbd8c3cbd6c2 *c9d9c1cad8c2cbdbc1cbdbc1c9d8bac7d8bfc9d7bac7d7b9c6d6bac6d5bbc6d6bdc6d6bbc6d4bc *c5d6bac6d7bbc5d4bac4d4b8c1d0b9c3d3b9c1d1b9c2d3b9c3d3bbc4d3bbc5d5bfc5d6bcc6d2b6 *c2d3b6c3d2b6c1d2b6c1d0b5c1d0b6c1d3b6c3d2b6c2d0b6c1d2b6bfd1b7c1d1b5bdceb3bbcab1 *bdd0b0bcd1b0bdd1aebaceabbacbabb6cbaab6c8a7b3c9a7b1c9a9b2cba2b2cba6b2caa5b1c7a1 *aec7a3b1c79babc3a0aec39faec79cacc497a8c49aaac492a9c398a7bc8ba5bf8fa4be94a4bd8d *a4c196a8c198a8c291a3c194a4be98a6be93a7bf94a4bd97a4bd8ea7c097a8c29aa7be92a8c098 *a6bc97a9be9baac191a7c18ea7c292a5c198a7c09aa6c599a8c19cabc199a8c19caac197a9c199 *a5ba97a9c09ba9c199aac59bacc19ba8c3a2abc399abc19ba9c09eabc29aabc29eacc69badc39a *adc19ba8be98a6bc98a5bf98a5c19aa5c199a9be90a7c19aaac29baac39aa7c19eaac59ba6be98 *a6c099a8c19daac49eabc69eadc3a0abc3a0abc1a4abc3a2abc6a2aec3a3acc4a2aec6aab0c5a4 *b0c4a0afc6a7b1c3a2aec7a0afc4a1adc3a2aec7a0aac1a4adc3a4aec4a5aec7a3aec4a3adc1a2 *adc5a1adc89fb0c9a3b1caa4b1c6a5b0c7a6afc6a8b0c7a8b1c6a9b2caa8b2ccaab3cdadb4c9ae *b6c9b1b6c9b1bacbb0bbceb1bcceb2bbcdb6bfceb7c2d0b8c3d2b6c1cfb6bfd0b5c0d2bac3d3ba *c3d5bdc7d8c1c9d8c1cbd8c3ccdccacedacacedccad0dbccd1ddcbd1dbccd2ddced5ddcdd4decc *d5e1ced2deccd1ddccd2ddcad1decacfdccaceddc7ceddc3cbdbbfc7d5c0c6d5c0c4d5bcc4d1be *c3d1bdc3cfb9bbbac3cacfc7cfd7cbd4d9a4b3c9a3b5c8a4b6ca99b3ca98b2c998b3cb97afc991 *afc894aec88facc885a9c77da8c479a7c581abc678a5c476a7c679a8c67ba9c781aac67fa8c67e *a7c67aa8c67ba8c672a6c67aa6c57da7c674a6c477a2c379a5c478a7c571a5c578a8c971a5c576 *a4c679a5c471a2c17ca6c577a9c776a8c772a5c57ca9c878a4c676a7c67ea8c67ba8c679a9c776 *a9c676a7c679a9c779a5c678a4c679a8c678a7c57aa4c46fa4c77ba9c778a4c67da4c574a5c575 *a5c57ba6c479aac686a9c686acc981a8c67ea7c678a7c778a5c672a5c580a9c67da9c781aac77d *a7c677a8c77faac884aac77caac877a9c87ca9c77aa8c877a9c682acc984abcb76a8c87aa9c67e *aac881abc782abc97caac980a9c782aac580aac675a9c780aac676a9c87caac985aac783acca83 *adc97aaac97eaaca7ca9c776a9cb7eaacb7faacb79aacb81accc82acc989b2cc81adcc7fa8c883 *abc985aecb88aecb83aac984aecb7facc884adc985adcb84abcb86adca86abcc7fabcb89aecb7c *accb85b2cb88aecb87adca88aec985adcd8aadcc8bb1cd8bb0cd89b1cc84b1cb85adcb86aecb85 *aeca8bb0cd88aeca89b0cc87b1cc83aeca8db3cb84aecb8fb3cb90b1ce8bb1cc8db1cd8db4d08c *b2ce8bb4cd8fb2cc84afcb8ab0cc8bb1cc88b1cc8fb5cf90b2d090b2cd8db3cc89b0cb91b3cc90 *b0cb8db0ce92b4cc93b4ce95b7cf92b6cd92b6cd8eb2cb92b3ca96b6ce90b3d08ab3ce96b5cd8b *b2ce95b5ce95b6ce95b2cb91b1ca8db4cd86b1cb8cb3cf8cb2d18bb0ce92b2cb89b1cb89b3cb87 *aecc8ab1cc87b2ce8eb1ce8bb3cd8cb5cc93b6cc8cb0cb8eb2cb8fb2cc89b0cb84b0cc84aecc8b *b1ce88b1cb91b5cd8bb2cc8fb4ce86b1cd90b1cd89b2cd8bb3cf89b2ce87b3cc91b6ce94b5cd92 *b2ce89b2cd8ab2cd93b5d08cb5ce8bb3ce92b6ce91b6ce88b2ca8bb2cc8fb5cc89b3ce92b8ce8e *b6d287b2ce96b6cf93b6ce8eb4ce91b6cc8fb4cc8ab6ce8ab4ce91b6d08db7d190b5cd8fb5ce8d *b2cc8eb3cc92b6ce91b5cf8fb5cf90b5cf8cb5ce92b3cc91b4ce90b6ce8bb5ce91b5cd93b4d192 *b6d191b4cf89b2cd92b6cd94b8cd96b7ce92b8d091b7ce86b3cc86b2cd8eb5d291b6d097b7d090 *b5cd91b5cd92b3d191b5ce92b7cf8fb6cf90b5d095b6ce90b5ce93b7d395b7d191b6d18fb6ce8e *b6d09eb9d290b5d098bad097bace92b7cf8eb4d08fb4cc8fb4cf91b5cf99b8d09abbd59dbad29e *bad29ebdd29cbad29ab8d099bad29abbd298b9d298bad39dbbd4a1bdd39dbdd4a4c1d6a5c1d5a4 *c1d3a6c1d49cbdd698bbd29cb9d395b6d196b9d298b7d397b9d19dbdd1a1bcd2a1bad19db9d3a3 *bcd3a2bcd3a7c1d4a4c0d3a3c0d39ebcd3a3c0d4acc2d6afc4d6b8c6d9b2c6d6b5c8d8b6c8d9b6 *c9d9b7c9d9b7c6d8b7c6d8b8c9d8b8c9d8bfcbdabeceddc0d0ddc1ccdcc3cedec5d1dfc6cedec6 *ceddc7d1dec5d2dec3d2dec7d3e0c7d1dfc9d3e2cbd3e0c6d1dec2cedac1cedac3ceddc0ccddbd *ccdbbacadcb3c7dab6c6d8b3c8dab4c8dab2c7d9aec5d8b4c8d8b8c9dcb9c9dab4c6d7b3c7dab6 *c8dbbfcbdcbccbdcbfccdcbfcdddbdccdcc2cdddc6cedec6cddcc3cdddc3ceddc5cfdec5d0dec8 *d1ddcad2dfcbd5e0cbd3e0ccd6dfccd6e0cbd2dec7d0dec3cfddc3cedbc4d0ddc3cddcc4cddcc3 *cedec3ceddc3ccd6c3ccd8c2cad8bfcad9c1cbd8c0c9d9bdc8d8bdc8d8bec7d4bbc7d5bbc7d6bc *c7d6b9c7d7b8c7d6b9c7d4bac5d5bac4d5b6c3d4b7c4d2b6c4d0b6c5d4b9c5d4bbc5d6bfc6dabb *c5d6bac3d3bdc4d2b8c4cfb8c4d2b5c3d0b9c4d3b9c2d1bcc3d3b7c4d5b6c4d5b6c6d2b6c5d1b1 *bfcfb4c1cfb4c0ceb1c1d2b3bcd0b0beceafbbccaebbcbadbeceadb8c8aab8cbaab7cba4b5c9a4 *b5cba6b7cba3b5c7a3b1c59eaec39aaec598aac599adc69aacc698abc596aac498abc298a7be98 *a6bd98a8c192a7c393aac393a6bf95a7c092a8bf98a6be96a9c298a9c399a9c295a9c198a8c496 *aac192a9c199abc39caabd93a4be98a7c295aabd96a7c19aabc397a7bf9babc09aadc499acbd9f *b0c298a5bb9ea8bba0aabf9daabf9aadc39cabc29cabc2a0afc29fadc19dacc29eadc29aaac49c *abc29aa9c39eabc299aabe97acc09aa9c39baac49aa9c19cadc2a0aec19eacc2a0afc39daec39c *aabe9aa7bf9baac49daec49ca8c09eaac19daac3a1acc1a1adbfa4afc6a4aec1a8b0c4a3acc3a2 *b0c4a2b2c9a0b0c5a9b1c1a7b3c3a5b1c7a9b1c9a3b3c8a9b2c5a6b2c6a3b3c8a6b2c7aab1c6a4 *b0c3a7b1c8a2afc8a4b2c7a4afc5a5b3c8a9b2c9a7b2cbabb3c7acb8cbabb7caabb8cba9b8ccae *bbcbaebaccb0bbccb2bdccb4becfb8bdcdb3becfb6c1ceb9c3d1b9c1d4bdc2ceb7c3d3bac3cfbd *c3d2bdc4d3bdc7d3bdc7d8c1cbd5c3cbdac7cedcc9d0dbcbd3ddcdd3ddced5dfcdd5deced6ddcc *d3deced6decfd3deced5dbccd4ddccd4dcc9cfddc6cedcc7cedbc5ccdbc2c9d5c3c9d4c2cad6bd *c6d2c0c7d2bdc5d2b7bcbcc2cacec8d0d5ccd4d8a3b6ca9fb2cb96b2cc94b1cc92aec992acca8b *aec88aadc78aacc985aaca7da6c77da4c87ba7ca78a4c775a4c572a5c678a8c876a4c673a4c47a *a6c677a4c874a5c879a4c67ca6c785a6c67ba5c676a6c672a3c874a4c774a4c774a3c775a0c479 *a5c776a4c773a5c671a1c66fa1c479a8c77da8c981a8c876a1c473a3c478a5c675a5c777a6c780 *a8c87aa7c771a3c676a3c672a5c670a3c57ba5c777a4c67aa5c775a4c77daaca81a6c984a7c777 *a5c676a6c672a2c57ba4c77ba8c980a9c772a5c684a8c781a9c97ea6c87ca9c875a5c87ba7c779 *a5c679a9cb79a9ca81abcb7fa7c775a8c879a5c775a6c97da9c878a7c981aac779a9ca74a7c87e *a9c97ba5c883aac980a9cb7caacb73a7cb75a9c986accb7faaca76a8ca76a8c97eaac97da9ca80 *aacb7eaaca80aacb7baacc73a6cb79a8cb82abca7dabcb82aacb87abcc7aaacb7daacb84aecb86 *adcb7faacb7eabca83aacc83acca7daccb7eabca85aecd85adcc8aadcc81accb7ca9ca7faaca81 *adcd83accc81accc8aaccb87aecb81abcb84accc83accc83adce87aecb86aece81adcc85adca8a *b0cd87b0cd85b0cc81aecd89b1ce87acce87adcb8db2cd87aecc86b0ce8db1cd8fb1cd91b3d191 *b1cd86b1ce89aecc86adcb8cb0cd8fb2cf89b2cd84aecc8bb1ce8db1cd8cb1cc8ab1cc84aecb8d *b2ce8cb1cc91b5ce91b3cc94b4cb91b2cd8cb0ce8ab1cd87b0cd8fb1cf91b2d090b2cf8db1cd95 *b6ce93b3ce90b3cd91b3ce87b1cf8bb4cf8fb0cc8eb1ca8bb1cc85b0cc8ab2cb8cb1cd87b1ce86 *aece84aece8ab1d08bb0ca86b0cd8cb4ce8ab1cd85b1cf89b0cf88b1cf89b0ce8db3cd8db2cc88 *b1cd8ab1cd87aecd8bb2cd8bb2cd88b0ce8ab3cf8cb4cf8ab2cd88b2cd85b0cf87b0ce87b1cf8f *b3d189b2d190b6d08ab2cf8ab3cf8cb2d08ab1cc8ab1cd91b5d08db3cf8ab1ce91b5d096b6d18e *b6ce8eb1cd87afce8eb2cb8bb0ce8db4cf8db5cf91b6ce8db4d092b5d092b5d090b6d18eb3cf8a *b3cf8eb4d08fb3cf93b6d18eb2d08db4d18db2cd8ab4d088b1ce8fb5d188b5d18bb4ce8cb1ce87 *b1ce8db4d08cb3cd86b1cd89b5cf90b6d395b6d191b4ce8eb4cf87b1cd8db5ce8eb3cf8eb4ce8d *b4cf8fb4cc96b7d396b6d28cb2ce96b5cf95b6d089b5d293b9d38fb5d091b2d198b6d198b6ce90 *b5ce8eb6ce8db6d195b6d297b8d398b8d392b6d295b5d092b4d095b7d295b6d192b6d198b7d298 *b8d39cb7d39ab9d495bad29db9d29bb9d29bb9d3a3bcd3a2bdd4a2c0d4a7c1d6a5c1d6a3c0d6a1 *bdd3a3bdd6a0bdd396b7d39ab8d297b6d29fbbd392b9d59ab7d3a0bbd3a2bdd3a4bbd59dbcd49d *bbd6a3bcd4a2bed4a5c0d6a4bbd4a0bbd3a3bed3a4bed3a6bfd3adc4d7b6c7d7b5c7d9b6c6d8b4 *c6d9b2c6dab0c5d8b6c5d8b6c7dab9c8d8b9c7dcbecbdebfcddec3ceddc1cdddc2cedec4cfddc7 *cee0c7d1dfc6d0decbd2dec7d0dbc7d0ddc6ceddc6d0dfc4d0e0c3cfdec1ccdebdc9dcbeccdcbe *caddbac9dbb9caddb6c8dcb3c6dbabc2d9aac2d5aac1d6adc3d8b1c3d6aec3d8b4c7dbb5c6dbb2 *c4d9b7c7dbbacadbbbcbdcbecddebccbddbccadcc0cbdcc3cddec1ccdec2cbddc1cbddc6d0dfc6 *d2e0cad3dfc9d2e1cbd4e0ccd4e1cbd6e0ccd4e0cbd3dfc7d0e0c7d0dfc7cedec4cedec6cedcc7 *cdddc6cfdec4d0ddc3cedbc3cedcc6ccddc1cbdbbac8d9c1cadbbec9dbbbc6dbb9c4d5b8c6d3bc *c7d8c1c7d6bcc7d8bbc6d6bac6d6bac5d5b8c4d5b7c4d5b7c3d3bbc5d5bcc4d6b9c5d5bbc4d8bb *c6d7bac6dab7c6d6b9c6d4bac3d3b8c3d4b9c3d2bac6d4bbc6d5bbc6d4b7c5d5b7c4d6b6c3d4ba *c1d6bcc3d4b8c4d4b6c3d2b1c0d2b1bfd1afbcd0aebacdafbbccafbaccafb9ccabbacbaab9ccaa *b9cba6b8cba5b1c9a0b1c8a2b0c99eb0c69bb1c79badc69cacc59dadc69aa9c395a8c298aac29a *a9c495aac296a7bf95aac292a8c090a6c396a8c294a4be8fa3bf94a4c197a8c599acc596aac29a *aac593a7be97aac097a9c198aac192a5c396a9c599aac699aac4a0aec099abc69eabc79baac49d *acc699acc59fabc49aa9c19faac2a1aabfa3adc59cafc6a1b1c6a1afc7a1b1c89eadc6a1afc6a4 *aec59da9c39eaac39eabc69bacc49babc69cacc89eb0c79cacc39baac29cacc29eabc49fabc49d *acc59faec79facc19faec39dadbfa3acc699a9c1a3adc6a1adc3a8afc7a2aecba4b1c99cb0c6a4 *b1c7a4b1c3a4afc6a2aec8a4afc8a2afc4a4b0c8a8afc7a4b4caa5afc9a9b1c8a8aecaa7b1c8a5 *b3caa5b2caa3b3cbaab6caa9b5caa6b6caa9b1c9a9b2caa9b5cba6b4cba9b8ceaab7cbacbaccb0 *bccdb4bcceb6bccfb4bed1b6bdcdb6bfd2b2bfcfb6c1d1b9c2d1b8c2d2bcc3d2bec3d3bec5d6be *c6d4bdc3d4bbc7d5bdc7d9c1c6d6c3c8d8c3cadbc9ccdbc8cedccacfddccd4e0ccd4deccd6e1ce *d5deced6ddced6deced3dcccd3decbd3ddcad1dec9cfddc7cfdbcbcedbc8cddbc4ccdac2cbd9bf *c8d8bec7d7bec6d7bdc7d5bbc0bcc3cacfc8d0d6ccd3daa0b1c79eafca96aec889a7c58baac88d *a9ca8daec986aec57da6c278a7c673a1c66da1c573a4c677a5c575a4c572a5c672a8c478a4c776 *a4c677a4c272a5c57da7c877a4c974a7c679a6c67ba5c67ca5c77ba4c671a3c577a5c776a3c679 *a8c878a6c773a4c473a3c475a5c47ba6c677a4c673a4c37da8c779a9c77da8c876a5c778a5c573 *a4c870a6c670a4c678a5c67ca6c96c9fc67aa6c97ea5c37ca7c67aa8c880a8c770a7c779a7c674 *a4c375a4c379a7c66fa3c37ba8c77ba5c673a3c677a4c675a5c675a4c86fa5c77ea9c978a7c777 *a6c67ba8c97ca6c97aa7c97da7c87ca7c881abca82aac87aa9c575a8c776a7c77da8c67ea9c877 *a8c87aaac885adcb79aac97faac77aa9c980aacb7ea8c976a8ca7ba9ca7caaca82a9c885aac67e *aacb7eaacb7ea8c779a9c97aa9c982abc97faac97daac983abcb79a8cb7ea9cb85aacb81aacb7f *abcb80abca85aecb78abca79aaca7faac983aec980aac980a9c981aac888aecd81abca80aecb78 *aaca74a9c97faaca83adcb82adcb7baac97eaaca80aecc81aeca82adcc7fabcb87afcd7eabca82 *abca86acc982b0cd85aecc7dabcc81aacb85accb90aeca8ab1cd91aecb92b2cf8ab1cc95b3cc8d *b4d08bb2ce91b4ce85b1ce8cb1ce8db1cc91b2cd8eb2cd86b2cd87b1ce8baecd8bb0cd8bb0cd89 *aecb89aecb90b1cd92b1cf87b0ce92b5ce89b2cc8ab1cc8fb1cb89afcb8fb1cc91b5ce8bb3cd8a *b4cc97b8ce95b5ce90b3cd8ab1cb8fb2cb8cb1ce8bb1cd90b2cc83b0cc80b1cc87b0cb87b1cb8b *b3ce8db1cd93b4ce8ab2d08ab1ce8ab1cd86afcb87b0ca88b0cc8cb2cd84b0cc83afcc86b1ce88 *b1cd8cb3ce89b0cd85b1cd8ab2cb8ab2cc8ab0cb8cb2cf8ab1ce8ab1d18ab1ce8ab3cc87b2cc85 *b2cc8eb3cf85b3ce96b4d18fb3cd85b2ce89b0cd8eb5cf8cb3cc82b2cc87b2cf88b2cc8db4d38c *b5d28fb3d083b0cc85b1cb8ab3cc85b1cc89b1ce8bb5cc8bb2cd89b4d18eb5ce8db4d090b5cf8e *b6cf8cb2cd89b3cc8db2cf8db3cf8eb3cf8eb4cd89b4ce8bb4ce89b2cd8db2cc90b5cd8bb3cc8d *b3d093b6d08eb2cd91b5d18ab4ce90b5cf90b5ce92b6d190b6d191b6d188b4cf8db4d08ab4ce8b *b3d091b4cf8cb5ce8ab3ce8fb4ce8fb6d190b6d095b7ce8eb6d091b6ce8fb5cd8db6cf8eb2cf93 *b7d192b7d18fb5cc95b7d092b3ce95b6ce94b6d18fb6ce91b7d293b6d194b6d18fb6cd93b6ce98 *b8d298b8d097b7d394b5d094b5d094b9d19abad3a0bcd4a1bdd3a4bbd4a4bfd5a8c0d4a1bdd6a6 *bfd79dbad5a2bdd399bbcf9cb9d397b8d29bb8d397b8d19abbcfa2bed6a3c1d7a6c1d3aac1d4a8 *bfd3a5c3d6a7bed69dbcd39dbbd2a4bdd5a7c0d4a8c3d5a7c3d5aac3d8b3c4d7b7c7d7b6c7d8b8 *c9d9b2c6d9b5c8dab4c7d7b6c7d8b5c3d7b5c5d7bccadcc0cbdcc3cedfc4d1dfc2cedec4cfdec4 *cedbc6d1e0c6d1dec6d0dbc5d1dec6d1dbc5d1dfc6d1dec4cedec3ccdec3ceddbdccdac1ccddbe *ccdabdcbdebccadbb8c9dbb4c7d8b1c5d8adc0d5aec3d4b0c3d7aec6dab1c5d9bac5dbb7c8d9b7 *c9d7b4c6d8b7c8dbb9cadbb9cadbbbcbddc0cbdabdcadbbfccddbfccddc1ccddc2ccdcc2ccddc4 *cedec9d1decad4e0ccd4e1cbd6e1cbd6e0cdd6e2c9d4e2cad2e1c9d1e1c6d1ddc7d1dec8d3dec5 *d1dec5cedcc5d1dec6cfdcc6cfddc3ccdcc6cddbc4ccdec3ccdbc1cbdcbccad9bcc8d8bbc8dbbb *c9d9c1cad5c0c9d8becad6bec9d6bbc7d7bac5d3b7c5d5b8c4d3bcc5d5bbc4d4b9c4d2bbc5d6ba *c7d7bbc6d8bbc5d7b8c5d4bbc5d4bcc6d4bbc3d3bbc3d4bac5d5b9c6d7bbc7d8bac8d6b6c3d3b9 *c6d5b8c6d6b9c4d3b9c6d4b6c3d5b3c3d3b2c3d3b2bfd1b0c0d1afbbd0afbdceaab8ccaebacdad *b7cbadbacdaeb7cba9b4cba4b1c9a2b1c7a5b1c7a0acc49faec79facc69cadc699adc299a9c09a *acc397aac298abbf95aac299abc392a8bf95aac398aabf97aabf94a7be96a9c697a9c598a9c19e *a9c393a9c399adc19aadc699aac59eabc599aac499aac69aa8c197a8c197adc19cadc49eacc299 *abc29daec49facc1a3acc59caac1a2abc59dacc39eb1c6a2afc6a0b2c7a3b1c5a7b0c6a4b0c6a3 *b0c6a3aec7a1adc69dabc59aa8c19baabd9eafc3a0b1c5a3adc6a3adc79dafc79dacc4a0aec69d *aec59babc39eafc39fabc5a1b1c79faec89caec7a1aec4a0afc6a3adc3a4aec5a4b1c7a9b1c9a2 *aec9a7b6caa4b6caa5b6c6a3b1c9a7b4caa4b3c5a6b2c7a8b6cca3b6c6a8b5c9a4afc3acb6caa6 *b6ccaab6cbaab6cbabb5ccabb6ccacb9cdaabbccaab8caacb9cbacb8cbaab7c9adbaccafbbd1b4 *bdceb6bdd0b4c0d2b5c0cfb3bed2b6bfd0b5bfd1b5c0d3b9c3d2bdc6d3bdc3d3bdc6d4bfc9d4bf *c3d3bdc6d4bec2d3bcc3d6bbc4d2bfc4d6c2c9d7c2cad8c6cedac8cfdbcbd0ddcbd3ddccd2ddcf *d4e0ced6dfcfd6e0cfd8e0ccd4decdd4dec9cfdbc9d1ddcacedcc7cfddcbd0dccbd1ddc9d2ddc5 *cddac0c9d5bfc6d6bfc6d4c2c8d1bac0c4c5cdd3c7d2d7cad6d993adc791acc382acc781a8c679 *a6c57aa4c378a5c46ea1c576a1c379a7c474a4c373a3c56da2c56ea4c56ea3c46d9dc47ba7c781 *a8c775a4c576a4c376a6c572a1c573a5c776a6c772a2c672a3c575a4c47eaac66da1c26fa2c46c *a2c675a5c673a4c772a2c674a4c674a2c572a3c471a7c674a4c673a4c672a4c676a4c66fa3c676 *a4c770a2c776a5c76fa4c672a2c373a5c576a5c776a4c476a3c678a5c57aa5c773a3c774a5c575 *a4c380a8c67aa4c678a3c773a1c77ea4c872a3c476a4c572a2c66fa2c572a2c672a3c57ba5c673 *a1c574a5c573a6c473a4c673a1c57ba7c77ca6c67ca6c77da8c780a9c679a7c97aa6c881a8c77c *aac772a6ca72a6c875a4c57ea9c678a7c874a7c780aac779a9c776a7c77fa9ca73a7c872a5ca7d *a8c77ca7c675a5c67ea8c674a7c880a9ca7fa9cb7daacb80a9ca7ea8c774a8c981aaca76aacb73 *a6ca7baacb7aa6ca7ca8ca75a9ca7caacc83aac87eaac87fa8c97fa9ca7faaca82aacb7da9ca7b *aac97faac982accb85acca7eaccc7faacb7faac97eabcb82afcd80afcb7eabcc81aac982accb80 *abcc7eaacc7da9c880abcc7bacca79aac982accb80abcb86adcc87aecc89adcb91b0cd90b1ce97 *b4cf97b3cf90b3ce93b1cd8bb1cc92b2cc8cb1cc84b0cd84accb87afca87afcd88aecc89afcc88 *accb85acca8ab0cc86aecc89aecb85adcd89adcb87b0cd8eb1cd86adcb8bb0cb85b0cc84accb82 *aecb90b5cc8db0cd92b3ce8cb1cd8db1cc8bb0cc85b1cc89aecb8cafcb81accb83acca86aecd8b *b1ce8bafcb83afcc82abc987b1cc87b1ce88aecc8ab1cc8bb1cc7faecb85afcc85afcc81aecb87 *b0cc89afcc88aecc8bb4ce85afcd88b0cc88b0cc86afcb84aecb8cb1cd8eb1cd8cb1ce8fb3cf86 *b1cd85afcc84aecc8ab2cf8eb2ce84adcb86b1ce8bb1cd86b4d184b0d087afce8bb3cc86aecb8b *b1ce86b1d188b1d087aecc85adcc86aecd8ab1ce8bb0cc89b1cc8ab1ce88b2d089b1ce8db3cf8c *b0ce8fb4ce88b1cc8eb2cd89b4ce8bb2cd8eb4d08eb4d18bb3ce93b4d08ab1cb86aecb89b3cb8d *b1cc8cb1cc8ab1cd90b3ce91b3cf90b3ce8cb4ce8eb3cc8eb4cd90b3ce88b6ce88b2ce8cb2d096 *b7d38db4d18fb4ce8eb5cc90b5ce8fb6ce8eb5d08ab2ce8cb2d195b6d191b4cc8cb3ce8cb2d191 *b2cc95b6ce97b6cf92b3cc8db3cd91b6d08eb3ce8fb4cd95b6d08fb6d08fb3cf8fb4d094b5d08c *b4d197b6d194b9d298b8d197b5d094b4cf96b6d099bbd296b8d499b7d39eb9d29cb8d19cbbd4a6 *bed59cbdd4a3bed5a2bdd39bb9d292b6d293b7cf94b6d19cb9d09fbdcfa2bbd1a3bdd4a7c0d8a9 *c1d8a9bfd6a6bfd3a3bed59cb9d09fbbd398b8d3a4bed5adc1d6afc4d6b5c6d8b6c6d7bbc8d7b4 *c6d8b4c6d7b5c6d8b2c5d7b1c4d8b3c3d8b1c4d7b5c5d7b9c9d8becbdbbeccdcc2ccdac3ccddc2 *cddec3cedfc6ceddc7d1ddc7d0dec8d1ddc6d1dbc1cdddc3cedec3cedec3cedebdccdcbac9d8bc *c9dbbdc9d9bbc8dab9c7d8b3c4d8adc4d8b2c7d9b0c3d8b6c6d8b7c6d6b6c8d6bac6dabcc9d9b8 *c9dbbac9dbbacaddbdcbdcbdcad9c0cadbc0cbd9bdcbdac0ccdcc0ccddc0ccdcc3ccddc3ccddc5 *cedcc6cedec7d1decad2dfccd3e1cdd5e2ccd7e2cbd4e2cbd3e0c9cfddc7cfdfc9d2e0cad1dec9 *d1dec9cfe0c9d2ddc6d3ddc9d1ddc7d0ddc6ceddc5cedcc2cbdec3cbdcc4ccddc0cbdbbec7dbc0 *c8d4c0c9d8bcc8d8bfc7d8bfc9dabcc8dbb7c5d6b9c3d4bac5d3bac6d6bbc6d8bdc6d7bbc6d5bc *c7d4bbc5d5bcc6d6bdc6d6bec6d5bac3d5b9c4d4b8c4d3bbc6d5bcc6d6c0c7d6bdc7d5b9c7d6ba *c6d8b9c3d5b3c3d3b5c3d5b9c4d3b9c5d6b7c6d5b4c3d1b5bed1b1bdd1adbdcfaab9ceacbbcead *bbcca8b7ccaabacdaabac9abb6cca4b3cea4b1c8a4b2c8a3b1c69cb1c89eb1c89dafc79cafc89b *aac099abc599a9c295a7c595aac692a8c396a8c094aac397a8c093a4bf91a4c297a9c499acc393 *a8c09ba9c28daac697adc398a9c397a7c495aac194a8c191a7c595a8c195a8c198aac69baac39f *acc69eadc39ba9c39cabc299aac19caec99fb1c79eb1c7a2aec6a4abc2aab2c5a8b5c8a0b0ca9f *b3c79fb0c99fafc69dadc79daac69ba8c59daac59fadc5a0adc39facc5a4adc7a2aec7a0adc8a0 *b0c39cacc3a0acc2a3adc59faec69facc6a1aec4a1afc39eaec59faec8a0aec89eadc7a4b1c99f *afcaa6afc9aab2c9a6b4caa6b2cba9b2cca6b3cbaab3c9a6b1c7a7b6c8a4b5c8a9b1c7a4b2cbaa *b2caaab6ccaab9cdaab7caaab6ccacb9ccadbbcdaab9cdb0b6ccafb6ceafb8ceafbacbb1bbceb2 *becfb4bfcfb8c0d1b5bed2b6bcceb6bfcfb6bfd0b9c1d1bbc2d3b7c3d2bdc6d7bcc7d5bfc7d4bf *c7d5c3c8dac3c9d9bdc8d5bec8d4bdc8d7bdc7d8c1c9d8c6cad8c9ccdbcacedbcad1ddccd3decb *d1dccdd2dccdd4e0ccd4dfced5e0cdd3decad1ddc6cddbc7cddbc9cfdcc9cedacbcfdbcad0ddc9 *d0ddc6cddcc0c9d9c0c7d4c2c8d5c0c6d2b8c0c4c4cbd0c8d2d7cbd5db87a9c37ea5c281aac675 *a5c481a4c676a3c17fa5c475a3c578a7c67da4c47ea5c977a3c779a4c472a1c36e9fc27ea6c472 *a3c47da7c67ea7c773a4c685a7c672a5c66fa4c578a5c677a5c576a4c674a3c570a4c777a5c578 *a6c774a4c57ba8c778a6c579a7c77aa4c577a4c780a5c777a5c673a4c76ca4c578a7c56fa1c473 *a3c475a4c77ba8c876a4c57da8c979a8c770a4c368a2c478a7c677a7c66ca2c676a3c57aa8c672 *a4c378a6c380a8c67ca8c672a4c474a3c479a4c77aa4c67ca3c57ba9c772a7c674a6c570a4c570 *a4c572a3c67da7c675a4c679a7c774a5c778a6c676a4c572a6c676a7c670a5c677a8c679a6c680 *a9c97ca9c977aac873a5c674a4c575a4c481a9c775a9c772a6c979a7c971a6c67eabc777a6c678 *a8c67da9c67eaac978a7c97eaacc81aeca74a8c681aaca81a6c982a9c780a8c77fa9cb86acca7b *abcb7eabca81aac97da9c77eaac980a9c880aac97fa9ca80abca79a9c97daac97faac981aaca81 *a9c97aa9c882abcb81aaca82accc88afcc87aeca83acca83acca81aacc80aacb7daacb85acca81 *acc982acc983adca7eaac984abc983accc80a6ca84abcb7faccb85aecd84aec98bafcb88adc98d *b1cc8eadcc92aecc83aece90b3ce8ab1cc89aecb83adcb81abcb85aecb82acc988afcb85aecc8a *b1cc91b3cd89b3cc86adcb8baecc86aecc8aafcc8eb0ca86afca88b0cc87b0cb88b1cc8caeca8c *afcb8cb1cc8aafcb8bb1cd92b1cc8cb1cd8bb2cd8cb1cb8ab1ce8cb2cd89b0cb88afca87b0cb87 *b0ce86aecc8bb0cc8bb1cc82aeca83aecb87b0cb8aafcc8bb1cc8bb3ce93b4cc90b4cd85afca85 *aeca8db1cb87b0cb83aecb85aecd89afcc8bb1cc8ab2cc86b1cd84b0cd8cb1cc85b1cf8cb1cd92 *b3cd8db3cc8eb3cc89b4cf8fb3cc81b1d089b2cd89b1cc8bb4ce8cb1cc8fb1cc91b2ce8ab4ce87 *b1cd83b0ce89b1d08cb2ce8cb1cc83b0cc85b1cc87b1cd87b1cf85b1ce86aece8db4ce8fb2ce8c *b4cc89b1cc8eb4cd8ab5ce8bb2cc90b3ce8db2cb8fb1cd88b1cd8cb3cc88b3cd87b3cf89b3ce89 *b2cf8cb3ce8cb0cc89b2ce8db4cf8db4d089b3ce8cb6d08fb6cd91b2d190b4ce87b3d083b2cd92 *b5ce92b5d18db5d195b6cf91b2cc95b2cb92b4d08db2ce91b4ce96b8d18eb4d398b6d192b5ce8d *b3ce87b2cc91b5ce92b5ce8cb3cc94b6ce96b6d192b6d195b8d18fb6d092b5d08fb4cf93b5ce90 *b4ce96b4ce97b6cf99b8d198b8d196b4ce98b5cd94b7cf99b9d199b7d293b7d395b6d29eb9d39e *bbd39ebdd39ebed3a3bed39cbcd39ebad199b9d297b8d19fbad4a2bad2a5bed4a6c1d7a5c1d6a4 *bed4a3bed2a9c0d5a8c2d6a2bdd498b7d29abad19abad1a1bad2a8bfd5aac2d5afc5d7b2c6d9b9 *c7dbb6c7d9b8c7d8b6c7d8b1c7d7b2c3d7b2c5d6b6c5d7b6c6d9bccadabecbdcc2ccd9c3cedcc3 *ceddc6d0dec6d1dfc6d0dfc7d1e0c7d1e0c9d1ddc7d1dcc6d1dec1d0ddc6cedec0cbddc0ccdbbb *c9dbc0cbdbbac9d8bccbd9bbcad7b6c6d5b4c6dab5c6d8b8c6d9b9cbdbbbcad7bfccdcbeccdabb *cbd8bbc8dabdc8d9bfc7dbc1ccddc0ccdcc0cddcc1cddbc0ccdcc1ccdbc0ccdbc4cdddc4cdddc4 *cdddc7cfddc8d3ddcad2dfcbd4e1cdd6e1cfd7e1cfd7e2ccd7e0cbd7e2ccd6e0c8d1decbd1deca *d1decad2dfced3e0cbd4e0cbd3e1cbd3e0cbd3dfc7d1dec6ceddc7cedec6cedec6cddec2ccdcc1 *cadcc1c9dbc1cbd8c1c9dabec9d7bbc7d7bbc8d7b6c4d5b7c4d5b9c5d4bdc7d5bbc8d6bfc7d6bd *c6d5bdc9d7bcc7d6bac5d6bdc6d8bbc7d6b9c6d5bdc6d4bcc6d5bec6d5bfc8d7bbc9d6bec7d8be *c8d6bbc7d7bec7d4bcc6d6bbc4d4bac5d3b8c3d3b9c6d5bac3d4b6c4d6b6c1d0b4c1cfb1bdceaf *bad0adbbceadb8caaebacbadbacfaebbd1abb6cbaab6c9a4b1c7a4b1c8a1b1c89aafc89eacc69d *afc7a0aec59db0c39ab1c699abc59bacc497abc599a9c398a8c294a8c298a5c292a7c195a9c495 *aac499a9bf97a9c191a7c595a9c39ca9c09aa8c19aaac192a9bf98a4c399abc39cacc09baec59d *acc19babc59caec2a2aec49dabc19aacc39db1c99eaec4a0b0c7a0aec8a4aec6aab6c8abb8cdaa *b4cba8b4c8a5b3c9a3b4c99fb0c79facc6a1aec6a4adc2a4b2c7a2b0c8a1b0c7a5b1c9a3b1c8a2 *b0c8a2afc9a5b2c7a7b1c6a6b2c7a3b0c6a2afc7a2afc7a0adc3a1aec7a4aec4a5aec7a8b1c6a7 *b4ccaab6c9a4b6cba7b3caa9b1c7abb9ccafb8ccaeb9cbb0b8cbacb7cbacb7ccabb6c9aeb7cbaf *b9ccaeb7c7afb9ceaeb9caabb7cbafb9cdafb9ccb2bbccb0bbccb2bdcdb0bdcfb2bbcfb5bdcfb5 *c0d1b5bdceb2bfceb6c0ceb9c0ceb9c2d1bbc5d1bcc6d5bcc3d6bbc6d8bbc4d5bdc7d1c0c6d5c1 *c7d7c4cad8c6ccd9c4cadac5cbddc3cad9c0c9d5c2c9d6c5cbd8c7cedbc9cfdccad0dbcbd1ddcc *d3dfccd3decdd3decbd3dccbd4decdd5deccd3dfc9d3decacfddc8ceddc9d1dbcad1dbc8cfdcc5 *cedcc3cbdbbfcbdac1c9d8c3c9d9c4cad6c2c8d2b8c2c3c4cdd1c9d1d6cdd6da74a2c281a5c375 *a9c871a5c474a6c576a5c97ea4c679a5c779a6c676a6c773a5c778a2c576a5c778a6c775a4c376 *a7c773a3c768a2c573a4c67aa9c770a3c774a9c76ea3c66fa6c766a2c671a3c672a4c671a4c675 *a5c675a7c773a4c76ea4c776a6c671a6c774a7c670a5c673a6c663a2c477a6c677a7c772a4c672 *a4c574a4c473a4c678a7c66fa4c573a4c76fa4c673a4c576a5c475a6c874a5c673a5c777a4c677 *a7c773a7c781aacb78a6c874a5c673a9c776a7c677a7c76fa7c772a7c674a6c682aac778a9c86f *a3c676a9c875a6c66da2c572a7c672a5c76fa7c97ca8ca6ea4c76ca4c673a8c773a5c675a7c877 *a8c777a8c778a9c777a6c674a6c675a9c778a9c972a8c97ba7c781aac77da6c973a6c87ba8c871 *aac776a8c780aac781aac67da8c979a8c776aaca7eaacb7fabcc78aaca78a8c57dabca81aaca75 *a7ca72a7c97cabc981aeca7caccc79aac875a9c77aa8c977a7c880aac97cabca81acca7fadcb7e *abcb79a7c676aac87fabca79aacb7dadcc82accc82acca80accb83abca7eaac980adcb81abc982 *abca85adcb73aac981accc82accb7ca9c97daacb82accb89aecb7ba9cc75a7cb78aac980abcb81 *aacb83abca77aac981adcb82adcd81aecf81accc84adcb83adcc7faecc86b0cb85b1cd83afcd7f *aecc80aecc89b2cd7eaece85afcc84b0cc8bb1cc88b1cb89b1cc85afcc88b0cb85b0cb87b0cc89 *b0cc82b1cc84b0cb85afcc82aecc89aecc8ab1ce8bb2cc86b1cb8bb6cc8bb2cb83abcb7facc981 *aecc88b1cb8ab1ce84b1cd82accc8ab3ce81b0cb85abcb85afcc8ab1ce86b3ce7daecb82afcc89 *b2ce84b1cd86b1ce89b0cc87b1cb8bb1cb84b0cd83b0cb86afcd83adcb83afcb87b0cd89b0cb85 *b0cd86aecc8eb6d08bb4d288b1cf8cb2d180aecc83afce88b0cc85b1cb79aecd88b1d08bb6d183 *b3cf8cb5ce89b6d08ab5ce85b1cd85afcc86b1ce85b1ca84b0ce8ab2ce8ab2ce85b1cd8ab2cd88 *b2ce85b1cc89b1cf91b3d18ab4d089b3cc8bb1cc8ab4d08db4ce88b4cd85b2cd86b2cd87b3cd89 *b1ce8bb5ce90b6ce88b2cd82b0cc8ab3cd8ab3cd8ab2ce8bb6cd8cb5cc93b5d08db4d086b2d186 *b1d08bb3cc8db4d18db4d191b6d290b5d08db6d28bb4cd93b8d193b6d290b4cf8db4d189b3ce8e *b6ce8eb3ce88b4cd89b4d08bb5cd90b4ce92b5ce94b4ce8bb3cf92b5d192b5ce8fb6d08bb2d08c *b5d08fb5d091b6d192b8d18fb7d28fb5cf94b6d096b7d193b6d191b6d292b7d294b4cf92b6d293 *b7d398b8d39dbcd39cbdd499bbd39abad19cbbd19ab9d39ebad3a0bed6a7c1d5a7c1d6a7c1d6a4 *c0d6a3bed3a2bdd4a2bdd39dbbd498bad197bad394b8d29ab9d39abbd3a4bdd3a7c1d5a9c3d6b0 *c3d8b7c7dab9c8d9b8c9d8b6c7daafc3d6b1c3d9b0c5d9b1c3d5b9c8dabacbd9beccddc1cfdec2 *cfdec3cfe0c5d0e0c6d1e0c7d0ddc6d1e1c5d1dfc7d1dec7d3dec6d1e0c3d1dec2cfdcbdcbdcb6 *cadbb8cbdab6c9ddbbcdddbbcadebdccdbbccbdcb7c9dcbac9d8b9cad8bbcbdbbdccdcbeccdbbf *cedebdcbdbbdcbdcbeccdcc1cdddc1cddbc0ccdcbeccddbecbdcbecbdcbfcddcbecddcc1cdddc2 *cedec4cdddc5cfdfc7d1e0cad3e0cad4e0ccd6e1ccd7e2cbd7e1ced6e3ccd7e3cbd3e1cbd1dfc7 *d3e0ccd3dfcbd4e0c9d5e0c8d3e0c9d2dfcad6e0cbd6dfc9d3e1c7d2e0c5d1e0c5cfddc7cfdec4 *ccdec1ceddc1ccdcc1cbd8bdcbdabfcbd7bac9d7b6c6d5b4c1d4b6c3d4b8c3d6b8c5d4bac7d7ba *c8dabec8d7bbc8d7bac7d6bdc8d6bcc8d7bdc7d9bdc6d6bbc7d7bdc9d9bdc7d5bdc8d7bec9d6be *c8d8bec9d8bbc9dabccad8bcc7d8bcc7d6bfc8d4bbc7d4bbc5d5b8c6d4b6c3d2b5c3d3b1c3d5b1 *c2d4acbecfafbcccabb8ceaab7ccaab9d1a7b8cca4b8cea5b9cda7b6cba4b4c8a2b2c7a0b0c79d *b1c69bafc79db2c9a1b0c6a0acc79fafca9aabc798a9c194aac495abc595a9c197a9c395a8c396 *abc592a9c290a9bf98aac28faac791a8c398aac496a8c396aac198aac696adc698acc098aac399 *afc59aaec797adc6a0aec3a4b0c5a1b2c7a0b1c7a5aec8a1afc9a5b2c9a8b6caa7b5cbadbccdac *b8caadb9ccabb6c9a6b3c9a1b3caa0afc8a3aec7a1afc89eb1c5a4b4caa3b4cba1b3c9a2b1c9a0 *b0c7a3aec3a2b0caa4b2c6a4b4c8a4b2c7a2b1c9a4b1c5a1b1c8a4afc6a3b2c7a3b2cba4b1c9a5 *b3cca1b4cca9b7cca4b7cca9b6c9aab8cca8b7cba8b9cbaab9ceaab6ccaeb6cbacb8cbadbbcdac *baccadbacdadb9cbabb8ccb1bcd0b3bccfb4bfcfb5bfd1b5bed1b4bed1b2bdd1b1beceb1bdcfb4 *bfd2b6c1d2b8c1d1b3c2d1b5c1d0b8c2d2b6c1d2bac6d7bbc5d3bbc7d5bdc8d7bec8d7c0c9d8bf *c9d9c1c8d9c3cadac3ccddc5ccdcc5ceddc3ccdbc3ccdac2ccddc5cedbc6cddec6ccddcacedecb *d3decbd4decbd3decad2dcc8cedec7d1ddcad3dec8d1dfcad1ddcad1ddc8d1ddcad0ddc9d2ddc6 *cdddbec9dac1c8d9c1c9d7c1cbd7c1cad8c3cbd8c2cbd7bcc3c8c2cdd3c9d4d8cbd6db7da5c17e *a5c27aa5c171a4c181a6c676a4c57da5c66ba2c172a0c16ca1c176a4c371a1c46ea1c479a7c775 *a3c66fa3c172a3c16ca0c171a4c46fa4c674a1c16ea4c56fa2c470a4c66ca3c56da2c36fa4c670 *a1c374a3c576a3c57ca5c676a2c474a4c568a1c270a2c36ea4c56da2c376a6c474a5c371a2c472 *a5c570a1c2669ec274a8c66ea2c56aa0c46fa0c373a1c572a4c681a8c776a6c772a5c6719fc374 *a3c478a5c375a8c576a4c471a2c576a4c56fa7c772a4c476a7c572a7c770a4c472a5c673a4c372 *a3c675a3c673a3c575a5c67ca6c776a7c573a4c37ca9c778a9c775a6c675a4c877a8c87fa9c778 *a4c675a8c677a7c772a9c676a6c580aac680a8c680a7c77fa9c972a7c670a9c77ba9c781a8ca80 *a8c782abc77daac87da9c378a6c578a7c679a7c979a7c77eaaca7aa5c681abca74a9c882a9c776 *a7c97ba9c97baacb75aaca80a8c780aaca80a8c77aaac673a9c879aac97ca9c97ea8c97ba9c97f *aac887abcb7daac97eacca7eaac97fabca7caac980abca7aaac985adcb81abc986adc885aecc7c *aac97da9c97faaca80adca82abc980aaca85acca79aacb7aabca7aa9c97fa9cb80aac980aac985 *aac97faac983aecb7dabc97dabcb83abca7eadcb82aeca82aecb84abcb82accb85adcc85aecb80 *accb86adcb78abcb85afcb87aecb86adcb87afcb8baecc85aecc87adcb81adc989afca83adca89 *b1cb8bb1cc86b1cc83afcc84aecb8bb1cc8cb3ca87acca86afcb8cb0cd8db1cd8cb1cc7faccb81 *accb7dadc97eadc987afcc84aecc79aaca83aecd86b0cb85b0cb80accb85aac98ab1ce82afcc84 *b0ca82afcb88b1cc89b0cc8ab1cb8ab1cc82adcb86aecb83acc986aec987afcb80afcb83b1cc85 *b0ce85aecc8aaecb84aecb83afcb85afcd84b1cc84b0cb84b0cc89b1cc8ab0cd86aeca87b1cc88 *b1cc87b1cb87b1cc8bb6d08ab1cd89b1cc82aec988b1cb87b1c987b1cb82aecb82b0cb87b1cc8a *b2cc8db1cb8cb0cb8db1cc8eb3cd88b2cc88b2cd8bb2ce8ab1ce89b5ce87afcc8db0cb8bb1cc87 *b0cb8bb1ce86b2cc8bb4ce88b3ce8bb2cc89b3cc87afcc84acc989b3cc8ab2cc90b2cc8fb2d092 *b7d28fb5cf8ab4d185b3ce87b1ce88b3cc8ab1cc87b0cc8cb4ce8db6ce8bb2cf90b4cc8ab1cc8b *b2cd85b1cd8db2d191b4cf88b4ce91b6ce8eb2cb8cb1cb88b3cd8ab1cd8db2ce94b6cd90b5cf93 *b6d090b6d08fb5cd8db4cf93b5d296b6d092b6ce92b5cd91b4cd94b6cf90b6d294b6d194b4cd98 *b6cf97b6cf9bbad0a3bfd39bbdd4a0bcd499b7d199bad19ebad1a2bed3a4bfd4a3c1d4a6bfd3aa *c2d7aac1d6a6bdd5a4bdd3a0bcd398b9d191b6ce92b4cf98b8d09bb7d39ebad1a2bbd0a8c1d2ab *c2d4aec3d5b2c7d7b7c8d9b6c6d7b7c8dab1c5d7abc2d5b0c4d7b4c6d7b6c7d8bbcad8bdcbdbc2 *ceddc4cfdfc5cedfc4cedfc3cfddc6cedfc4d0dec6d0dec7d2ddc7d1dcc6d1ddc2cfdfbfcddbba *c8dbb5c6d8b8c9d8bbc9d8c0cddcc3cbddc3ccddc1ccddbbcbdabacbdcbbcad9bcc9d8c0cbdbbd *ccdbc0ccddbdcadcbac9dbbccbdbbdcbdac1cadbc1ccdabdcbdbbdc8d9c1cbd8bfcbdabfcddbc1 *cdddc1cddbc5cddbc7ceddc8d1decad1ddcbd2e0cad2e1ccd6e2cbd8e1ccd7e0ccd7e0ccd4e0c9 *d3dfc9d2dfcbd5e0cbd5dfc9d2e0c9d3dfccd2decbd3e0cbd6dfccd3e0cad1dfc7d1dec5cfdec8 *cedec4ceddc4ceddc2cdddc1c9d9c3ccdabfc8d8bfc9d5b6c6d3b7c3d4b6c3d3b6c4d2b9c6d3be *c8d6bdc9d6bfcad5bfcad6bcc9d6bcc8d8bfc7d7c0c7d7c0c8d9bcc6d4c0c7d6c3cad5c1cad7c0 *cbd8bfcbd8c0c9d7bfc9d6bcc8d8c1c8d7c0c7d5bec9d6bbc9d6bdcad6bbc7d6b6c3d3bbc4d4b8 *c3d3b7c0cfb5c2d2b3c0ceafbecdacbbcfaab9cdabb8cba6b5cbaab4cca5b5c7a6b5c6a6b4c9a1 *b5cb9cb1c89db0c99eadc59aafc698acc59aadc59aacc49cadc694acc793a8c193a9c195a9c197 *acc69aacc293a6c494a6c291a9c58ca7c093a7c09aa8c092a5c096a8c39aabc29eafc798abc39b *aec79aaec698aac09aadc69baec2a2b2c7a2b1c7a7b6cbaab9cba7b6cba8b5c8aab7c8aab5cbae *b9caadb7cbb0b7cbaeb9ceadbacda5b5cba2b4caa2b2c9a1b0c8a5b2c5a4b5caa8b5c7a5b5caa5 *b6cba8b9cea8b3cba7b4c8a6b4c6a4b0c7a3b2c9a3b0c6a3b0c8a3b4c8a2b3c7a4b2c9a3b3c9a3 *b0c99fb4caa6b4c8aab8ccaab7cdaab5c9a9b7cdaab5c9aab6cbacb9ccaebacaaebbcdafbaceab *b9ceb0bcceb1baceb2bdcfb1bbccb5bdcfb0bccdb4bdd0b1bdd0b4c1d0b6c4d5b6c0d1b6c0d0b5 *bfd2b2bdd1b7c1d2b5c1d1b5c0d3b5c3d4b9c3d3b7c4d3bbc3d4bbc4d5bec7d6bdc7d3bdc8d7bc *c9d8c2cad9c2c8d7c4cbd8c6cbd8c7cfd8c6cfdac6cedac4cddac6cddcc9cedbc9cedec9cddbca *cedbcbcfdcc9d1dcc9d2dcc9cedecad1ddc9d1dbc9cfdcc7cddbc6cfdbc4cddcc3cbdac7cbdac5 *cddbc4ccdac5cbdac1c9d6c1c8d5c2cad8c1c9d7c2c9d6c3cad6bdc6c9c4ced3cad3d8ccd6da75 *a0c074a1c079a4c372a4c373a1bf74a4c16b9dc072a4c370a1c571a2c575a3c174a4c56da2c572 *a1c36fa1c375a3c365a0c26c9fc472a1c36aa2c36ea2c375a4c171a3c56da4c36ea1c372a2c470 *a1c46ea2c176a3c46b9fc36ca1c370a1c371a3c56aa0c26ca0c16ca1c36d9ec375a5c674a4c570 *a4c56ba3c5689fc474a1c273a3c573a7c772a3c36d9fc36aa1c371a2c374a1c3699fc172a0c46f *9ec16e9fc370a4c370a3c56aa4c371a2c573a2c575a2c377a4c173a4c46ea6c66ba2c675a6c76f *a2c36ca1c372a3c376a5c673a5c373a5c770a2c571a4c573a6c678a6c570a4c46fa0c370a3c674 *a6c674a7c873a6c77aa5c671a6c774a7c57aa8c57ea8c572a7c67faac672a9c86fa5c475a6c77d *a6c570a5c67ba7c682a7c57fabc67ca8c87ca9c873a5c66fa4c669a1c37aa9c676a8c774a4c976 *a8c772a7c87da9c97ea8c97ba8c870a7c978a7c876a7c779a8c67aa6c871a7ca77a8c86ca4c676 *a7c57ea8c77da6c67fa9c883aac982aac978a8c87eaac880aac97aabc97baac874a9c880aac780 *a7ca7ea7c879a7ca79a7c67aaac778a9c780a9c975a8c884aac87fa9c781abc979a9c979aac983 *abc87ea6c780aac780acca86adcb7faccb7fadcb83accb85adc87eaac780a9c986abcb81accb86 *b0cb7eadca80adca7eabcb85adca81aac888adca83abc788adc987adcb7eacca80aacc82acc97f *abc881aac886acc979acc983aecb82aecb7eaccb7faacb80aac880adcb83acca85afca86b0cb84 *acc985aacc82aecc7caaca87aeca7caac987aec982abc981aec983adcb8bafcc87b1cc89aec984 *accb83aecb85afc984afcc81abca7dadcb82adcc7fabc980acca83adca86adca84abca81acca87 *afcc83afcd84b0cc86abcb86aecb84b0cb82accc8ab1ca85b1cc83aecd82b0cd80b0cc7eaecc84 *aecc88aecb88b0cc83afcc83aecd88b1ce8bb3cd8ab1cd87b1cb82b0ca82aecb86afcb8db2cb86 *aecb89b2cb84b0cc82aeca8bb1cc8cb1cc8bb0cc89b1ca8ab1cc8ab1cb87b2cd86b2cd87b2ce86 *afcc85aecb88aecb88b1ca88b0cc86b1cb85b0cc85afcd87b0cc89afcb89afca89b1cb8bb1cd8d *b1cc8bb1cd8db2ce8bb1cc85b1ce8cb1cf85afcc92b2cc8cb1cc8db1cc87b4ce85b2ce86b1ce8a *b2cc90b1cb87b1ce8cb1ce85afcc87b1cd8db4cd8cb2cd85b2ce8cb2cc96b6cd94b4cd91b3ca8a *b3cd93b4ce92b5d190b4cf95b5d090b4cf8db5cd91b5ce8db5d08fb4d191b5cf8fb4d191b3ce93 *b5d193b4ce98b7cf96b8d39bb7d19dbbd199b8ce95b6d29bb7d39fb9d399b8d199b9d398b8d3a4 *bdd4a8c0d5a9c1d5a3bbd397b8d199b6cf98b8cf99b9d299b6ce97b7cf9db9d0a3bcd2a4bfd3aa *c1d3a8c1d3a9bfd5a9c0d5acc4d6afc3d6b0c3d7a9c1d4a4bed3acc1d6aec3d8adc4d6b5c8d8b8 *c9dabacadabfcddbc2ccddc2ceddc1cedcc4ceddc5cfddc6ceddc4cfddc3d0dcc4cfddc1ccdcbd *c9dbb7c6d9b8c6d8b8c9d8bdcbd8bfceddc3cedec3ceddc3cdddbdcbdcb9cbd9b9c9d9b7c9d9ba *c7d8b8c8dbbfcbdabcc9dcbcc7d8bcc9d9bdcadbbdcbdbbdcbdabdcbdabdc9dbbecadac1ccdcc1 *cbdcc2cddbc2ccdbc1ccdcc4cddcc4cedcc6d0ddc8d1dfc9d3e0cbd1dfc8d2e0c9d3dec9d3dfc7 *cfe0c9d3decad2deccd3dfcdd6decbd2dec9d1ddc9d3dfcad3dec7d1dec9d2dec7d1dec7d2dec8 *d1dec6cedcc0cdddc1cbddbcc9d8bbc9d8bbc9d8bec7d6b9c5d6b8c6d6b6c5d5b6c3d4b6c2d0ba *c2d2bcc4d3bfc6d5bdc7d8c1c7d5bec7d6bdc7d7bfcad7bfc8d5bdc7d5bfc8d7c1c9d9c2cbdac1 *ccdac3cbd7c1cbd8c1ccd8c2cbd7c0c7d6becad8bbc7d5bec8d6c1cad7bfc9d6bec8d8bcc8d5bd *c7d6bcc6d3bbc5d4bbc6d4b6c3d2b6bdceb1bbccadbccda9baccaab6caa5b3caa3b4c7a4b2c8a3 *b1c6a6b2c7a1b1c89eb3c89dafc69faec79cadc59cadc39aaac296aac194aac296aac396aac492 *a4bd8ea7c191a4bf93a8c392a6c096aac595abc199a9c293aac691a8c194a7c299a8c097abc59d *aec59daec6a0aec79db1c99dadc7a1afc7a4b1c5a6b1c6a8b2c6a4b6caacb8ccabbbcbabbbcdae *bbccaebbcdb1b9caadb8cbaebbcdacbacba9b7cca6b5caa3b3caa5b1c7a0b0c6a5b4c9a2b2c9a9 *b6c8a9b7caa4b1c9a7b4caa8b3cba8b5c7a4b2c8a5b2c5a2b0c8a7b3c9a2b2c9a4b4c9a1b3c9a6 *b2caaab0c7aab5c9a9b5c9aab7cca9b5c9abb6caa9b6cbaeb6cdaab5c8aab6c9afb7cbaeb9ccaa *b6ccaebbcdb0bacab1bbcfb2bdceaebcd1b1bed0b1bdceb1bdceb1bdcfb3bfd0b6c2d3b7c1d3b6 *bed2b4bdcfb4c0d1b5bed1b6c2d2b8c2d0bbc2d2bcc6d4bdc7d6bbc6d5bcc6d4bbc6d2bcc6d5bd *c8d6c1c9d7c2c9d7c0ccdac5cdddc4cddbc7ccdbc4ccdbc5cdddc6cedac9cedbc9d0dbc8d0ddca *d0dfcbd0dbcdd0dbcbd1dbcbd1dccaceddc8d1dcc9d1dcc9cedec7cddcc3cbdac1c9d9c1c8d6c2 *cad8c0c9d6c2cad8c1cad9c1c9d6c3cad8c3c9d5c3cad8c4cbd7c0c9d5bec2c7c4cdd2cad2d8cc *d6dc7da4c279a4c277a5c577a5c270a1c178a3c36ca2c469a0c475a0c16da2c675a4c474a2c376 *a3c5719ec276a4c678a6c373a4c370a4c66ca0c46ca1c26d9fc171a3c471a1c36da0c16ea0c370 *a3c573a3c473a4c66a9dc26e9ec374a0c3729fc36ca0c0639cbf6a9ec36e9fc37ba4c56ca1c573 *a4c674a5c673a2c472a1c46e9fc376a7c66fa3c676a0c371a4c66ea1c26fa2c376a3c571a2c671 *a3c36d9ec36f9cc46e9fc36da2c669a2c172a0c36c9ec372a4c570a4c573a2c576a9c673a4c677 *a1c570a3c56ba4c570a4c36ea0c67aa4c573a3c67ca4c672a5c571a0c375a3c76da3c770a2c773 *a5c674a4c673a5c67fa6c471a5c77ea7c671a5c66da5c677a4c878a7c77ba6c776a4c67da8c66f *a4c47fa8c973a6c774a4c67da5c76ea4c580a5c67ca9c97ba9c77ba7c77ca8c974a8c974a4c770 *a6c773a4c480a7c982aaca6ea4c77ba9ca7aa5c777a4c476a3c578a6c67da7c67ba9c878a7c875 *a7c778a5c773a7c771a8c978a7c87ba9c775a6c781aac882a9c97aa7c970a6c77da9ca82aac984 *acc97ca9c97ba6c87aa8c983a7c977a9c675a6c77ba7c778a5c880aacc81aaca81aacb82adcb7e *aacb81aac984aac77ba7c780aacb7faaca85abcc80aacc86aacb7daacb80a9ca83adcc7fa9ca7f *accb7da9cb7eacca84afcb80abcc7ea9ca82abc983abc986adca83abcb86acc981adca80abca85 *adcb83adcb84abca82abca84adcc83a8ca82acc982aaca82accb87aecc85aecc83acca85abcc8b *b1cd85adca83aec97baaca81adcb83adcc82abcb84aecc83aac97ca9c782adc984aac988adcb85 *aecc80acce84accb89b0ca80aaca82adcb82aac988adca84b0cd83acca85aecd83adcb80aaca7d *abc986aecb83adcb86aecc87adcc83afcd80accc88aecc89b0cb83aecc82aaca83aecc8ab1ce89 *aece84afcd84aecc86aec987afca85b0cb8ab2cd8ab0cc8db0ce8bb1cd85b1cc87acc985aecc8a *b0cc88aecc84aecb86b2cb80aecd8bb1cc86aece87afcb8cafca89b0cd89aecb86aecc8db1cc8c *b1cb89b0cd84b0cc89b0cc86afcc88afcd82adcc85afcb89b0ce89b0ce85afcd8bb2cc8fb4cc86 *afcb87b0cc85b0cb8db0cd8cb1cc89b2cd89b1ce91b1cc90b1cb81aecc87b0cd8db1cb90b1ce91 *b1ce87aece8baecd91b2cc8aafcc87b1cc8cb1cc8db3cb8eb1cc8eb1cc8ab1ce90b3d18db1cd8b *b1cc8db2cd8eb1cd92b3cc89b3cd8bb1ce8fb2d092b4cd8cb1cd94b3cd8ab1cd8fb3cd8cb3cd89 *afcc8ab3cf8eb2d097b6d396b6d099b7d197b6cf91b5ce96b6cf91b6d28db2d290b6d196b5d195 *b5ce9dbad3a2bad3a4bdd3a0bdd297b6d299b6cf94b6d49db9d19db8d1a0bbd399b8ce95b6cf9d *bad19fbcd3a1bed6a1bad39ebad29ebdd4a5bed4a7bfd5a3bdd3a4bcd2a8bed5a5bfd6aac0d6a6 *c1d4adc3d7b4c6d7bfcbd9c0ccdcc1ccdac2ccd9c3cddac3cfddc3cdddc4cfddc3ccdcc3cdddbd *c9dbb8c8dbb7c7dabbcadbbdccd8c0cddac2cedbc3ceddc1ccdbc1ccd9bccbddbdc9dcbccadbb7 *c9d6bbc6d8bcc7d8b8c7d7bac9d8b6c7d9bbc7d7bcc8d8bfcad8bccadabac9dbbbc8dabdc8d8be *cadabec9d9c1cbdcc1ccd9c1cbdcc3cddbc4ccdcc3cdddc6cfdec6d0dfc7cfdfc6d0dfcbd3dec9 *d3dec8cfdfc9d1dfc9d3e1cbd3decbd4dfcbd5dec9d1dec9d1dfc7d0ddc6cddcc6d1ddc6d0dfc6 *cedfc5ccdec5ccddc2ccdbc1cbddbec8d8b9c9d8bac7dabbc3d7b8c4d4b5c4d3b7c4d4b8c4d4ba *c5d5b9c5d4bbc4d4bbc6d7bdc7d8c0c9d6bdc8d9c0c9d8c1cbd8c0c9d8c0c8d8c1c8d9c4cbdbc2 *cbdac3cbd7c4ccd9c5ccdbc4ccdac4cddac3cddac3ccd9c1c9d7c3cbd9c2c9d6c3ccd9c3ccd8c4 *cdd9c1cbd9c1c7d8c2c7d4c1c8d6bac3d3b6c2d2b3c0d1adb9d1acbccfaabacfaab6c9a5b4caa6 *b4caa9b4c9a4b3caa6b2c8a1b0c89daec99dafc79eadc59cafc698acc698aac396a9c69cabc397 *a9c597abc68fa6c399a7c38ea8c299aac49baac699a7c69baac69dafc69dacc499aac696a9c497 *aec69caec6a4b1c9a3aec6a2aec7a4b3c8a4b4c7a4b6c9a6b4c7a8b3c9abb8cbadb5cab1bbceae *bacdb0bccbaebccfb1b7cbaebaccaeb8cdacb9ccacb7cba8b6cca6b5caa6b0c8a6b2caa9b5cbaa *b7cba8b5c8acb7c9afb7c9aab6cbaab5ccaab8cba4b0c8a3b0c8a4b0c7a4b3c9a8b5caa7b5cca8 *b4c8acb8c9aab6c9abb6cbadb7c8aab6cbacb6cbaeb9ceadb9ccadb8cbaeb9cfa7b9ccaeb5ccab *b8ceb1bbcfadbacdb1bccdb2bdceb0bdcfaebccfb0bcd1afbbcdb0bbcfb0bdceb2bdd2b5c1d2b5 *c0d4b8c2d4b4beceb6c2d1bac1d1b7c1d1bcc3d0bac2d4bcc6d7c0c7d8bdc7d6bec8d8c0c9d8bf *c8d5c0c7d7c1c9d6c1c7d9c5cbdcc6cbdbc6cdddc7ccdbc6cedbc6cedac7ceddc8d0ddcad4ddcb *d2dfcbd1dbcad0deccd3ddcbd3dcccd1dccbd2dfcbd0ddcbd0dccbcedcc8ccdbc4ccdcc3cbdabf *c8d7c0c7d8c1c8d6c1c8d7c1c9d9c2c9dac1c9d8c2cadac4cbdac3c9d7c3c9d7bfc4c8c6ccd2cb *d2d8ccd6da76a4c175a5c277a4c67ba3c579a2c37aa0c16b9ebf6ea4c36d9fc36ea1c473a4c671 *9ec477a2c46ba0c172a0c170a4c375a3c478a6c56fa4c673a4c673a4c5729fc173a0c171a1c56b *a1c26fa1c571a0c46fa2c56d9fc270a0c372a2c575a2c469a0c472a2c672a1c373a2c36ca2c371 *a2c472a2c46ca1c370a2c66ea2c570a0c56da4c66da2c672a6c570a4c66da3c56a9ec473a0c56f *9fc565a0c36ba3c570a1c473a5c479a9c66fa0c275a1c475a3c577a4c473a0c479a4c67caac678 *a8c674a3c675a1c475a3c675a2c674a2c47ba7c774a7c773a5c37ca7c675a5c676a2c56fa3c674 *a5c372a7c574a6c67aa9c777a7c773a5c67ba3c676a6c773a5c67ca9c771a7c66fa7c87ba6c578 *a8c77caac676a5c676a3c57ba6c475a6c772a5c674a5c676a7c67ba8ca84a6c97ca4c976a5c678 *a5c67ea8c773a8c77ca9cb82a9c873a9c979a7c981aac977a8c879a4c57aa8c879a7c879a8c76e *a5c57ba8c883a4c780a7c77da9c67ba9c876a7c772a3c57da7c87aa7c97aa8cb7ea5c976a8c77c *a9c982aac775a5c77aa9c87eaac983abcb78aac780aacb7aa7c97daac77ca7c977a6c681a5c582 *a9c985aac779a8c97ba9c980aaca7eaac77da7c77eaacb82abcb7caac987aecc7faacb81abca7f *aaca82abcb7daac97fabc97babc881abca87adcb86aecc81aaca84afcb7aabca79aac981abca89 *adca85aaca7caac985acca81adca87b0cb85acca84adcb7aa9c881aaca82abcb8aafcb87adcc82 *acca86b0ca7dabcb80acc985aec982abc986adcb7fabcc80adca82abc982acc886aeca84acca88 *aecc88b0cb85abcb7fabcb84adca82aec981adc97dabca7eaac97faac986aeca86accb84adcc81 *accb85aec986aecb7dadcc82adcb83abcb83aecc86b1cc89b2ce7eaecb81aec983adca86adcb86 *aecb81adcc85aecc85aecc87aecc85b0cc80aecc81adc985aeca85aecb83afcb86aeca8ab4ce88 *b1cc86b0cb83adcc81adcb86b1cd83aecb84aecb87b1ce8cb1ce82aecc85aecb86aecc89b0cd87 *b2cc83aecb85afcd88b1cc88b2cd83afcb88b0cb81adcb84aecb82adcc85b0ce87afcb88b1cc90 *b3d085afcb83b0cd88b1cc85b1cd8ab1cb82afce85b1cc86b2ce8bb1ce8eb1cc86b1cc89b1cc8a *b0cc82accc86b1ce8baecb89b1cb85b1cd88b1cf8db3cc90b4d18cb1cd8db1cb88b0ca8bb3cc8f *b3cd89b1cc8cb1cc87b0cd89b3cd8cb2ce8db2ce89b2ce8ab4ce8db3cc90b2cf8cb0cc89b1cd87 *b1ce8bb2cc8eb4cf8db5cf90b6cf8fb6ce91b4d194b6d38db4ce95b5ce8ab2cc8cb2cf8fb6d187 *b4cf90b5ce95b6d19bb5d19cb7d19ab9d290b5cf96b7d195b8cf9bbbd39dbbd197b7cf99b6ce92 *b5cf91b7d193b5cd97b7cf94b7d193b5d18db3d09cb7ce9db7d295b8cf9bbcd19eb9d29ab9d39a *bad299b8d3a3bdd3aec2d5b7c8d8bccadbbecbdcc3cddbc3ccddc4cedec2cddcc3ccddc2cedcc0 *ccd8bdc9d8b5c6d7b7c7dabec9dbc0cbdac4cdddc3d1dec1ceddc1cddbbdcbdbb9c9dabac8d8b7 *c9d8bbc9dab7c9d8bbc9d9b7c9dab9c9d9b8c6d9b5c5d6b8c6d8b8c6d6bccad9bdcadbbbc7dabc *c8d7bdcbdabcc9d8bdc9d8c0cbdac1ccdac3cbdcc6cdddc2cbdac4cfdcc4ceddc5cddec8ceddc6 *d2dfc9d3dec9d2decbd3e0c9d3dfcbd3ddc8d4e1cad3dfc9d3dfc8d1dec7d0decad1dec7d0ddc6 *cfddc3cedcc3cedec1cbdac0cad9c0ccdebdc9dbbec6dbbcc7d6b9c3d4b8c4d5b5c5d4b4c4d6b6 *c3d6bac5d5bac4d5bec6d7bbc6d7bbc7d8bcc7d6bfc8d8bfcbd8c1cbd7c1cbddc4ccdbc5cbdac5 *ccdac2ced9c3cfd9c5cfdac6cedbc5ccddc7ceddc5cedec3cedbc3ccdbc4cedbc3ccd9c3ccd9c3 *ccdbc4cedbc5cddcc5ccd8c3cbd8c1cbd8bbc7d6b8c6d6b6c3d3b1c1d3acbdd0adbbcfaeb9cea8 *b9cca6b5c9a9b5c8a2b5c8a4b2c59caec89fafc9a4b1c999adc999aec699aec496abc598acc498 *aac599abc499aac398a9c69babc69baec79daec89db0c69daec79aaec79cb2c79faec7a0b1c8a1 *b0c79cafc7a3b2c7a0b1c9a3b4cba4b3c8a4b4c7abb6caa7b4c9a8b6c9a8b6c9aabaccaab7ccad *bbcdaebcceadbbcfb0bbccafbed1adbbcbaebacdabbacaa9b5cba8b6cba7b4cba5b3c9aab6c8ac *b7ccabb9ccadb9ccadb8cbacb8ccadb8ceadb6ceabb6cbaab4c9a9b6c8a5b5caa4b5c7a6b4c9a9 *b5caabb7caaab6ccb1bbccacb7ceadb8cbaabbceaab8caaeb8ccafbacdacbaceb0b7cfaebaceaf *bdcbb1bbccaebaceafbbd0b2bbccb2bbccaebacbb0bed0aebfceb0bed2b1bdd1b2bccfb0bcd0b6 *bed1b9c0d0b7c2ceb7c3d1bac4d3b6c3d3b6c0d2bbc2d2bbc1d1bdc5d3bdc6d4bfc9d8bfc8d7c1 *cad5bfc9d7bec8d8c2c9d9c3cbdbc5cbd9c6ccdbc7cedec7d0dec7d1ddcad1decbd2decbd2ddca *d2decbd3ddc9d2deced2dfced3e0ccd5deccd4decccfddcbd1dec9d3decbd1ddc9d1ddc6ccdbc5 *ccdcc3cad9c2c8d7c2cad9c3cbd8c2cad9c3c8d7c4cbd9c3cbd8c3cbd8c4ccd8c3c9d4c0c4c8c6 *ced5cad2d9cdd6dc6ea0c16ca0be73a2c47aa4c36da1c374a4c3769fc179a3c6709ec175a2c46f *a0c171a1c379a4c372a4c466a0c16da2c370a1c36ca1c26fa1c16fa0c2709fc568a3c66ba1c468 *a0c3719fc36e9ec26ea0c26fa3c365a1c370a3c46aa0c474a2c672a1c4699bbd729dc26ca2c36c *a0c36fa1c371a1c46aa1c46da4c56d9fc36e9fc36a9ec269a0c36aa0c56d9ec26fa2c672a4c769 *9ec671a0c571a5c3709fc475a4c56ea2c570a2c675a4c475a2c580a7c676a5c46ea0c371a3c274 *a5c673a2c374a1c683a8c675a4c775a5c773a4c470a3c672a4c675a3c575a1c67ea6c77fa8c87f *a6c576a4c674a2c37ca6c67ca7c57ba6c679a6c67ea8c676a7c678a9c77fa6c678a4c67ba7c57e *a6c67ca7c77da9c97dabca77a9ca77a7c877a1c677a6c574a4c774a7c66aa3c66aa3c673a4c67a *a9ca7ea9c97ca7c778a6c77fa7c776a6c771aac97da9c776a9c980aacb70a2c570a4c673a5c578 *a8c773a6c778a7c87ca5c879a8c779a9c97ea5c87ca4c477a5c57ea9c779a8c773a7c87ba9c97e *aac97ca9ca77a8c475a5c778a7c67da9c977a7c970a7c976a8c97aa9c878a6c76ea4c777a8c87e *a6c979a8c878aac97caacb7ba8c97da7c97fa8c87eabc976a7c979aac97eaaca81aaca7facc985 *adcb84adcd80abca87abca79a8c97dabca7babc982abcb82abca80a9c986abca81abc97aaac982 *abca81aacb83abc984abc980a9c988aecb7eaccc82aac980abc982adc880acc984acca8caecc85 *aecb81acc981abcb7faac97caac982aac77eaac981abc981aeca7eadcc81aacb83aaca7eabc97a *a9cb80acca80aecc84aecb7daac97eaacb7caac986adca7daac985aeca7da9cb7da9c980aeca7e *abca83aac981abc981aac986aecc80accc80accb83afcb83adcc83afcc82aecc81adcc83aeca86 *aecb82aecb87b1cd84accb78abcb86afcb87aecb86afcb85b1cc8ab1ce86b0cb81acc986acca87 *aecc85afcc86abc890b1cd89b1cc83aecc85adcb83afcb81aecc81afcb88aeca84adca87b1cc85 *b1cc8cb3ce8cb2cc8bafcc85aecb8ab1cc82adcb85afcb86aeca82adcb7dadc97faecc80aeca86 *b1cc87b1cd86b0cd83b1cb86b2cc81aecc87b1cc87aecd86b0ce8ab0cb89b1cc8cb3ce8cb1cd8d *b4cc89b0cc86afcb8db1cc8db0cc81aecb84aecc89b2cc86b1cb86b1cb82b1cc8cb0cd88b1cd89 *b2cc90b3cf8bb2cf89b2cd91b3cd8fb3ce8ab1cb8cb3ce8eb1d088b1cd8cb0cc8ab1cd90b3cd8d *b3d087b1cd8bafcc89b2cd91b3cd8fb5ce8cb2cc91b3ce8bb2d18db3cc93b5ce92b4d18eb4cc8b *b2ce92b4cf94b6ce97b6d197b6cf93b7d192b4cd91b3ce98b6d19dbad39ab9d198b4cf9ab7ce91 *b6cf91b6d093b6ce93b4ce9cb8d195b5ce8cb3ce8eb4cf92b4cf90b5d18fb1cd92b4cf9bb6cf98 *b4cf9ab6cf9fbbd39fbad2a1bed4b0c3d7b5c4d8bcc9dac1ccdbc3cdddc5cedec4cddcc3cddcc2 *cfdcc3cddcbecbdbb5c6d8b9c7d9bac9d8bac9dac0ccdcc3d0dec3cedec2cddebdc9dbb4c7d8b6 *c6d7b3c7d8aec5d7b2c5d8b4c7d7b5c8d9b9c5d7b5c5d6b6c4d4b8c3d6b4c5d6b6c7d7b8c6d8ba *c7dabac7dabcc7d6bdc9d7bcc9d9bec9dac1cbddc3cbddc2ccddc2ccdcc5cfddc4ccdbc4cddbc6 *ceddc9d0decad2ddcad3e0cbd6e1ccd6e1ccd6e0cbd5e0c9d2dec7d1dec6ceddc7d1dfc8d2e0c9 *d1dfc7d1dec3ccdcc2c9dbc1c9d8bbc7d8bcc7d8b9c7d6bdc8d8bdc8d6b9c4d6bac3d4b6c3d4b5 *c2d3b6c3d4b6c3d3bbc5d5bdc6d6becbd8c0c9d6c1cad7c1cad8c1cbd7c2cbdac3ccdac5ccdbc6 *ccdbc7cdddc7ceddc4cfdbc6cfdac7d0dcc6d1d9c6d1ddc5cfddc6d1dcc5d0ddc6cedec5cedbc6 *cedbc5d0d9c5cfdcc7ceddc5cedbc6ccdcc5ccdcc3cbd8bbc8d6b7c4d4b8c6d5b4c1d3b1bdd2ac *b9d0afbccfabb8cdacb6cca8b7c8a4b3c9a5b6cba4b5caa1b1c99fafc8a0b0c89aadc698abc499 *b1c899adc598adc49aacc69eafc59eb0c7a5b4caa3b1c99fb0c8a0b2c89eb1c69bafc7a0b1c99e *afc7a1b1c6a5b3c8aab6cba4b1c9a7b3caa8b6cbaab8c9a8b6c9a9b7c9aab5cbaab6c8adb6cbab *b7cbabbaccabb9cfaebdcdb1bbceb1bdcdaebaccacbbceabb6ccadb7ccabb9c9aab7caa7b6c9a6 *b7cbacbacab0bacdadb8cba9b7cbadbaccacb9cca9b9d0a6b6cda6b1c8a6b3c9a5b5caaab6cbaa *b8c7a8b3c9aeb6cbacb8ccaab6ccacb8cfb0b9cea9bacdb0bbceadb9c9aebbceb3bdceb0bbcfaf *bbd1afbdceafbeceb1bcceb4becfb0beceaebbceb0bcd0b1bdd0b5bcceb2bdceb5bed2b4bfd0b6 *bed1b5bfd2b7bed2b6bfd2b7c0d0b8c2d1b6c3d3bbc4d1bac3d3bbc6d4bbc5d3bcc5d3bbc6d5bb *c7d7bec7d6bfc6d8bfcbd9c1ccd8c4ccd8c5ccddc9ceddc6ceddc9cfddc8d0decbd3deccd6decd *d4deced3deccd3dfcbd1dfcbd4deccd3ddccd5deccd6dfccd4deccd4ddcbd2decbd2decbceddc7 *ccdac4cbdac1cbd8c2cad8c4c9d9c3cbd8c4cbdbc4cbdbc3cbdbc2cbd9c3cbd8c5ccd8c3cbd4bf *c7c8c6cdd6c9d2d8ccd6db6b9bbd7ea4c172a2bf75a1c16f9fc171a0c375a3c475a0c56f9dc173 *a0c46fa1c1679bc073a2c46d9fc26c9ec375a3c66ca1c574a3c46da0c16b9fc16a9dc1729ec16f *9fc16b9cbf6c9ec274a2c275a0c26fa0c1669dc06b9cbe6da0c06699bf6ea0c3689bc470a0c272 *9fc26da1c3699fc1689ec164a1c469a1c570a2c66fa2c66c9fc46a9ac2699ebf699fbf6a9ec16d *a0c674a1c36c9fc669a0c36a9bc2729fc26b9ec270a0c36ea2c274a3c36da1c578aac6759fc675 *a2c46da1c17aa0c273a3c385aac778a4c66da3c474a3c670a2c573a2c371a1c479a3c372a4c574 *a2c477a1c777a4c87ea6c780a7c77da8c673a5c576a5c674a4c670a0c47aa6c874a4c77da4c673 *a4c467a0c370a1c36da3c473a6c66fa3c66c9fc375a6c778a8c678a4c27ca4c66ca1c471a3c571 *a3c773a4c476a5c876a4c973a4c675a3c46fa0c372a5c76da4c572a8c674a6c774a3c571a3c573 *a4c57ba8c779a4c579a5c77ba5c67aa6c77ba7c878a7c977a5c975a4c875a3c774a7c976a4c87f *a7c976a6c778a6c872a7c96ea6c971a5c670a4c772a4c57aa7c676a4c572a7c77ea9c972a4c778 *a8c976a6c67da8c77eaac773a4c777a8c97faacb70a5c77faaca75a6c778a8c777a5c775a7c777 *a5c772a6c97aa8cb78aacb81aaca83aac882a9c884aac882acca81aac980a9ca7ca6ca7fa9c97f *aaca7eaac985abc87baac97ea7c784a9c978a6c87ea9c97aaac982acc97eacc98aaec78bafcc80 *accb79a8cb7ca8ca79a9ca79a7c87ca8c77fa9c77eaaca81a9c97ba8c981a7c980aac776a8c882 *acca7faccb84adcb79aacb79a9ca7eaaca7fa9c97daac97cadcb7dadcc7fadca80aac97ba8c67a *a8c97ea9c981a8c982acc97eaacb81acca83abc981abcb84adcb82abcb7eabca7caac982aecc80 *aecc83accb87aecc7eaac97ea9c882accb83acc778acca7dacca84afcc7eabcb81abcc82aacb82 *abcb87acc984afcc85aecb85aecb87aeca88b0c98caecb7aaaca80aecc84aecc86adc985abcb81 *adcb81abca85afcc83aacb86afcc86abca82adcc84aecb81adcb85accb81abcb85adcb7baacb8b *b0cc89aeca89aec981afcb8ab0cc8bb1cd86b1cd84b1cc82adca82aecd89afcc84aecc8db0ce86 *afcc84b0ca83b0cc84abc986aacc88aecb84adcb88afcb86b0cb87b0cd86b2cc8ab1cb87afca85 *aecb88b0cc89aecb8cb1cb8cb1cd87b1cc88b1cc82afcd82aecd89aecc89b0cb86adcc85afc989 *b1cc81afcb87b1cd8cb2ce87afcc8eb1cd8bb1cf8cb1cd87aecd89b1cc8cb2cc8bb2cc86b1cd89 *b0ce8cb1ce90b4ce91b4ce91b4ce8db6d390b5ce90b4cf91b5d291b2cb91b1ce8fb2cd96b3d196 *b5cf93b1cb90b4cc91b4d094b4d09ab5d08db2cc8cb1cd90b3ce90b1ce90b3d097b6d192b5d19a *b7cea0b8cfa2b9d09eb8d1a0b9d1a1bed3a5bdd3b2c3d7b9cadbc0cbddc3ccdbc4cedac3cddcc1 *ccdcc2ccd8bdcbdbb8c8d8b6c6d8b5c6d8b6c6d8b7c6d9bcc9d8c1ccdbc1ccddbeccddbbc9ddb4 *c6d8b2c3d6aac1d6a9c1d5b2c2d6b5c4d6b6c6d8b7c7d8b3c4dab3c3d6b5c2d5b5c3d5b3c4d4b5 *c5d6b3c5d6bac8dbbcc9dabac7d9bec8d9bec9d8bfc9d8bec8d8c0cad8bfcad7c2ccddc2cbddc5 *cedec7cfddcad0decad2e0cbd2dfcbd3dfc9d2e0cad2e2cbd3dec9d1decad1dbc9d1ddc9d2dec7 *d1dec6cfddc2ccddbdc7d8bdc7d9bbc4d6bac6d6bbc6d7b8c6d5b8c4d5b8c3d5b6c3d5b9c3d4b7 *c3d3b6c3d3b9c6d4b8c6d5bac6d4bcc3d3bbc7d7bec6d7bfc9d8c3c9dbc4cadac3cbdac3cbd9c4 *ccd9c8cdddc7d0dcc6cfdbc8cfddc9d0dcc8cfdcc7d1dec8d1ddc6d1ddc8d1dcc6cedcc6ccdec6 *ceddc7cfdcc8cedbc7cedcc9cedcc8cfddc8ceddc6cedcc4ccdbc1c9dac1c9d9bcc4d3b9c3d1b5 *c0d3b1c0d1adbdceaab9cfacb8ceaab6cba8b6cba5b3c8a1b1caa1b0c89cacc79cb0c89eaec89d *afc79fafc89eaec49dacc49cafc69fb1c9a0b3cba7b6caabb8ccabb8ccaab7ceadbbcda7b6ca9f *afc99eb1c89fadc9a6b3cba9b6cca8b6cba7b6caabb6cca8b4cba5b6cca4b2c9a5b1caa7b6cca6 *b6ccacb7ccacbbcbaebacbaab6ceacbbceaebacbacbaceacbbcdaab8ceaabacea8b7ccabb9caaa *b6cbaab7cbadb7cbadbacdadb6cdacb9cdaebcceaab9ccabb4cda5afc9a6afcaa5b0c6a5b3c9a4 *b6cbaab7c9abbbccaab8ccaeb9cdaeb6cdb0bbceacbad0acbacfb1bbd0b0bcccb0bacdb1bbccb0 *bad1b4b9cdb1bccdb1bbccb2bfd1b3bdccb3bfceb6beceb6bdceb5bdceb7becfb2bcd0b3bacfb4 *bfd1b7bfd1b6c1d1b7c1d1b4c1d2b6bed3b7c3d2b7c2d5b6c0d2b7c1d3bac4d3bbc5d3bcc4d3ba *c1d4bbc2d5bdc6d6bdc4d4bec8d9c2cad7c6cdd8c5cedbc8cedcc8cddccad0dcc9cedccbd1dccc *d1deccd5deced3ddcbd3deccd1decbd0dfcdd3e0ced3decdd4ddced4deced3ddccd3decbd3dec7 *cfdcc6ccdbc2cad9c2c9dac3cad9c3cbd9c2cbd8c5ccd8c3ccd9c4cad9c6cbdbc4c9d9c6cbd6c6 *cad7bfc5cac6ced3cad4d8cbd6dc75a3c178a3bf70a1bf77a4c170a1c073a3c570a1c36c9ebe6f *9dc06ca0c16f9dbf6b9cbf6ba1c36c9fc1659dc06ea0bf719fbf79a4c578a5c473a3c46c9fc072 *a2c36ea0bf70a0c2689fc26fa1c270a1c36e9fc2729ec3679dbe66a1c1609ac06fa0c373a2c270 *a0c46ba0c171a0c46b9fc0709fc26da1c473a4c26d9fc56da0c46fa1c478a2c5699ec171a2c270 *a1c373a1c379a4c572a2c472a0c373a0c36ea2c36da3c379a3c76ba1c46fa2c375a4c379a4c57e *a6c681a4c377a4c479a7c672a2c36ba2c380a6c573a3c678a5c577a6c479a5c671a5c574a4c677 *a5c579a4c377a4c572a5c474a5c57ca6c579a8c876a6c772a6c671a6c675a5c780a7c57aa7c678 *aac676a5c76da4c476a5c675a5c66ea2c46ea3c376a5c778a6c780a9c56fa5c675a7c673a5c673 *a4c672a3c36fa5c97ca7c772a4c578a7c576a6c97da5c77ea7c772a4c36fa4c479a6c777a6c56f *a4c677a5c671a6c575a7c56da5c678a5c671a6c776a4c674a5c677a4c777a4c473a5c77eaac97e *a8c677a7c67ea7c676a5c67ba7c981a7c37eaac973a9c975a7c973a6c475a5c76ea6c675a8c97b *a6c770a5c778a7c976a7c875a8c97ba7c679a7c87aa8c878a6c782accb7aa9c77da9c97aaac97b *a7c781a8c770a7c776a8c87ba8c883aaca7da9c97faac983adcb83abc980aac782abc77ea8c880 *aac977a9c879aac97eaaca7daac97ca8c782aac77ea9c77da9c976a8c97caac781accb88aecb85 *aecb82abc981a9c97da9c97daac97eaac981aaca79a8c782aac984abc97faac97eabc778aac97e *accb81aac979a8c784adcb86b0cb88aec880abc882abc87da9c981acc984aaca7eaac882aac980 *abc781abc881acc980aaca7ea9c882aac980accb82abca81accb83adca84abc97eaac982aaca84 *accb84aecb84adcb82aecc7babcb80adc785adc97eabca7faac985adca82adca85b1cc86aecb84 *afcc85abca85aac97cabca83acc882adca81adcb82aecb87b1cd8cafcb89afcb86afca81aec986 *adca7fadcb82aecb7eabcb87b0cc84adcc87afca82adca85b0cc85aeca86aecb85afcb83adcc81 *afcc86b0cc8aaecb8faecb86aecb86b1ca8bb3ce89b2cd87b0cc8ab1ce8cafcb85afca85afca82 *afcb85afcc87b0cb86afcd81afcb88afcb86b0cb89aec984adcb83aeca81aecb83b1cc86aecc85 *afcb88b0cb84b0c989b1cb85b0cb88b1cc8eb1ce86b0cb8bb0cb89b2cd8fb4cf8ab0ca87b0cd8a *afca8bb0cb85accb88b0cb86afcb89afcc8bb2ce89b1ce8db2cc88b4cc87b1ce8db2cd90b3cc8f *b4cd8bb2ce91b1ce90b2ce8fb4cc8db3cd8cb3ce8db3cf99b6cc8eb3cd95b3cd90b1cf94b4ce97 *b6ce91b7ce93b6ce91b6cf8eb4d093b4ce93b3cf95b6cf96b5d094b4cd99b4cd98b6d0a0b8cfa5 *bbd1aabbd1a7bcd1a6bcd29bbbd29ebbd0a2bcd1a7bfd3b0c3d7b9c8dac0ccdac6ccdac3cdddc4 *cdddbfcddbc0ccd8b8c9dab4c6d6b2c4d6b0c3d6b0c3d5b6c7d6bdc9dac0cdd8c1ccd9c1cbd8b9 *c8d6b6c6d8b1c3d6afc2d4afc5d5b1c4d6bbc5d6b7c7d6b3c6d6b0c3d6b0c3d6b0c2d6b3c3d5b4 *c3d5b4c3d6b5c6d6b8c7d7bbc7d9bbc7d7bcc7d6c0c9d7c0cad9bdc7d8bfc8dac0cbd9c1cbdbc4 *cdddc5cfdbc6d1ddc9d1decad3e0ccd4dec9d1dec9cfddc8d2dec9d3dec8d0dec9d3e0c9d3ddc7 *d1dec7ceddc3ccddc3c9dbbcc7d8b8c6d7b9c5d6b8c5d6bac6d8b8c5d3bbc5d3b6c6d3b7c3d1b8 *c3d4b9c4d5b5c3d5bac6d6bbc6d5bfc7d5c0c6d6bfc7d6bdc9d6c1cbd9c3cbdcc6cbddc5cedcc6 *cfdbc8cfdbc7cfdcc9d1ddc8d2dccbd1dbcbd1ddcbd2ddcbd4e0cad3decbd1dec7d2ddc7d0dcc6 *cfddc8cedcc7d1dbc9d1ddcad2deccd3decad1dbcad1dcc9d1ddc7cfdbc6d0dec3cedac1c9d6bc *c7d7bac3d4b5c1d4b3bfd0b0bcd0adbacdaebaceacbacba9b7cda1b4cba5b4c9a2afc5a2afc7a0 *b1c99db3c79cb1c9a2b4caa5b4cba6b6cba9b7caaab9cdacb9cfaeb7cdaebbccafbbcdaec1d3ac *bcd1aab7cca0aec8a1b2c8a4b3caa4b6cba8b7caa8b9cca8b6ccacb9cba2b4c9a7b1c7a4b3c8a9 *b6c9a4b6ccaab6ccaeb7ccaabaceadbaceadb9ccabb8ceaab8ccacb8ccacbacdabb7cdaebbceb0 *bbccaebbceaebacbaabbceabbbccaab9ceabb9ccaab9ccadbcccaeb9cca7b6cbaab5c9a7b3c7a8 *b3c8a9b5cba6b6ccaeb9ceaeb8ccaeb7ccafbbceadb9cfb1bbccafbaceaebbccaebbceb4bccdb0 *bfd0b3bcceb3bdceb6bdceb7bfd0b2bed2b6bdceb4bfceb4bed1b6bfceb3c1ceb6bdcfb3bfd1b7 *bfd1b7c0d1b9c1d1b8c1d3b8c1d2bbc4d3b9c1d3b9c3d1b9c3d2b8c0d1bbc2d3b6c1d5bac5d2bb *c6d7bcc5d2bec6d3bfc6d4bec5d4c0c7d3c3cbd4c4cddbc5cddbc9cedcc9d0ddcbd2ddc9d0decc *d4deced6dfced6e0ccd6decdd6e0ccd4deced3dfced5ddced6decdd5ddcdd3ddcbd3decdd2decb *d0dccbd1dbc7cfdbc6ccd8c3cbd9c2cbd7c1cbd8c4cbdac5cedcc5ccdbc4ccdcc5cbdac6ccd8c7 *cdd8c7cdd7c0c8cbc6cdd5ccd4d8ced6dc6f9fbe6e9ebe6da1c176a3c272a0c1729cc2709ec169 *9bbe6a9ec2679fc3649fc05f9bbd6a9cbf72a0c474a0c3689dc26f9ec16c9ec1699fc572a4c471 *a1c171a1c1769dc06e9ec16d9dc2699abe6c9dc2699dc070a0c172a2c5719dc36e9cc36d9cc26e *9dbf6da1c4679ec36fa0c3659ec26fa0c26f9ec36a9cc16e9ec26ca1c4689dc36da2c5729fc371 *a3c579a2c67fa4c378a3c578a2c371a5c677a5c670a4c775a2c373a3c478a3c476a4c673a3c46f *a4c66c9ec476a3c677a3c474a3c57fa8c774a5c66da0c76fa2c473a6c76da1c575a6c66fa1c27a *a5c47fa7c77fa9c979a4c56ea2c571a2c671a1c473a2c578a4c472a3c573a2c772a2c672a2c47c *a7c576a5c673a4c46fa2c66fa2c775a5c777a8ca79a5c577a7c570a6c670a4c66fa1c675a5c77a *a7c872a4c973a5c770a3c36ea3c376a4c571a4c675a4c675a4c56ea2c575a4c976a4c473a2c574 *a4c56ea3c56fa2c677a7c578a7c771a4c876a3c878a3c678a4c477a5c56ca3c570a4c571a4c775 *a7c971a5c779a8c77fa9c779a4c678a7c772a6c76fa5c776a5c774a4c671a6c87da7c976a7c776 *a8c770a4c76ea4c876a4c978a7c972a7ca77a7c976a4c76fa3c374a6c676a5c677a7c981a9cb7e *a7c781a9c982a8ca7fa9ca82a9c67ba7c97ba6c884abca80aac97faaca82abca83abc985abcb7f *aaca77a6c97aa8c87ea8ca82a9c87ea8c97ea9ca7aa9c87ea8c77da8c780a9c979a7c984abc97a *aac981aac97ca8ca76a5cb7ba6c780aaca7caac882aaca7aaac976aacb7daac981abcb7dabc978 *a9c781aac87ca8c973a6c980aaca79aacb7ba9cb7faac97fabca7caac97daac982aaca79a9c978 *a5c877a7ca80a9c980abcb7eabc97eaac97ea9c77ea8c984abca82aacb81aacb83adcb84accb81 *adcb81adca7daac982aecc83aacc84accb7eaaca85adcb7caaca87aec980aaca84adca82adcb85 *a9c985abcb7eabc887aecb83adca86b0cb85abc985adcb85acca84aacb84accb88b0ce84aecd82 *acca83adc987aecc85adcb83abc97fabcb7cabcb83adcb83afcd7cabca84adca85abca85aecb85 *adca84afcb83afcb7cacc97faecc8cb1cc7caac984accb7fa9ca81aaca84adcc85b1cc89b1cc85 *afcc85accb87accb83acc984aecc82abcc84aec986aecb83accb8dafcc8eb1cb8ab1cb85b1cc86 *afca81accb87afcd85b0cc85afcb89b1cc8ab2ce8aafcd85afcc84aecb7faecb84aece84adcb89 *b1cd87afcc8caecc8ab0cd83afcb8bb1cd86aaca8fb0ce86afca8ab1cc8cb1cc86aecb8fb2ce8c *b4ce8bb2cf91b1ce8eb1ce86accc8bb1cd90b6cf90b3cf88afcc8cb1cd8ab1cd87afca89b1ce8d *b4cd8eb3cc91b3cf96b6ce94b5ce93b6d095b5cf99b6ce8fb5ce9bb8d19cb7cf9fb8d19fb8d2a7 *bbd2a9bdd4a9bdd4a7bfd39db8d19fbad2a4bdd3a9bfd4a8bed4afc3d7b5c5d9bbcadbc0caddc3 *ccddc2cdddc3ceddc1ccd8b9c8d7b3c4d6afc1d5acc1d6aac2d8b2c3d6b6c6d7bbcbd8bdc9dac1 *cbdcbacadab8c7dab6c7dcb4c6d6b5c6d8b7c6d8bbc6d6b8c6d6b4c4d6b0c3d8acc1d6afc1d5b3 *c3d8b7c5d7b5c5d7bac6d8bac6d9b5c5d7b6c6d7b9c7d7bac8d7bcc9d9c1cadcc2ccddc3ccdbc3 *cddbc2cddac5cfddc6cfdec9d0ddcad1dec7d1ddc9d1dec6d1dec7d1e0c6d1dec9d1ddc9d4dec8 *d1dcc9d1e0c3cddcc2c9dabdc9dbb9c6d7bac5d5bac6d6bbc5d5bbc5d6bac6d6bbc6d5bac7d8bb *c5d6b9c5d5bbc5d4b7c6d6bbc7d5bbc6d8bbc7d7c1c8d9c3cad8c3cad9c3cbd8c4ccdcc5ceddc6 *ceddc6cfddc8d1decbd1dfcbd1decbd3dfcbd4ddcbd3ddcdd4decbd3e0cbd5e1cbd2deccd3e0c8 *d1dec8d0dcc7cfdcc7cfdec9d1dec9d1deccd2e0ccd3deced3decdd3e0cbd3dcc8d3dcc4cfdbc1 *c9d8bbc9d8b6c2d4b6c0d3b6c1d1b2bed1b5c0d0aebccfabbbceabb8cda7b4caa1b1c8a5b0c9a8 *b4caa5b4cca3b2caa0b4c9a5b4c9a9b7ccaab8cdb4c1d4b6c3d5b1c0d2aebdcfb0bfcfb0bed3b1 *bdcfb0bdd1b1bccea7b6cca5b4caa5b7cca6b6cba7b9cca8b3c8a8b6caabb6ccaab6cba3b1c7a6 *b5c9a3b2c4a3b1c8a6b4caa8b6cba9b6cba7b6cdaab9cba7b5cda7b3c9aab6c9abbaccacb9ccae *bacbacb8c9acbacdadbaceabbcd0acb9cfaeb9ceadb9cda9b9cda9b6cba9b6cda9b5cca6b5cba8 *b6ccaab6caa9b7cbaab5c9a7b6caafbaceafbaceafbbceb3bcd1b1bbceb3bcceb5bed0b1bdd0b1 *bdceb1becfb1bed1b5bed1b6bfd2b6c0d0b3bdd1adbaceb3bdd0b6bed3babed3b9c0d4b8c2d5b8 *bfd2b8bfd1b9c1d1babfd1b8c1d2b6c1d3b7c2d5b9c1d3bac5d3bbc4d4bac3d1bac3d4bbbed4b9 *c2d3bcc4d3bbc3d6bdc5d8bec7d5bfcad8c0c9d8c2cadac6cbd9c3cddbc9cddcc9cfdec9d3ddcb *d3deccd3dfcdd6e0cdd3dfced3deced2dfcdd5ddccd3deccd5e0cbd4dfccd4decdd4dfccd1ddcb *d1decbd2ddcbd0ddc6cddbc4ccdbc6ccddc6cddbc5cbd8c7cddac8cedbc5ccdcc6cedcc6ccdbc9 *cddcc9cfdcc7cedac1c7cac7ced5cad3d9ccd6dd719fbe6fa2c0729fbf6aa0bf73a1c36ea1c374 *9fc372a0c16da0c06ea0c35f98bd72a0bf72a1c174a2c36ca0c0729fc26f9fc0719dc173a4c16a *9dbe699ec16da1c1719fc36ea3c16e9dc16e9ec0699cc16099be6b99be699bbe669ec0689dbe69 *9fc277a0c4689ac16e9ec0659ebf6a9fc171a2c36da1c273a3c373a4c674a3c56c9fc16ca0c371 *a2c571a5c475a4c373a2c67aa3c777a2c571a2c373a0c26c9fc377a3c377a4c375a4c375a2c573 *a4c66da2c376a1c372a2c36ea0c36fa0c270a2c378a8c670a6c778a4c47fa6c575a2c46f9ec171 *a2c36fa0c46f9ec372a0c471a2c57ba6c773a2c472a4c47ea8c573a5c571a5c471a3c575a5c674 *a5c671a3c36fa4c473a5c56ba2c376a6c767a2c676a4c771a3c573a5c66f9dc176a5c66ca4c66e *a4c46ea4c473a5c373a4c680a8c777a7c672a2c371a3c36fa4c671a4c473a5c672a5c56aa4c36c *a5c771a4c671a2c273a4c771a6c46ea3c376a4c572a3c371a3c678a5c573a5c66fa4c472a4c46f *a3c576a4c671a4c470a7c878a6c878a4c874a5c978a4c778a9c874a8c673a7c878a9c876a6c576 *a6c670a3c678a6c770a6c678a5c778a7c77aa9c675a6c66fa4c87ba7c775a4c676a5c781a9c76d *a8c980acc76da5c779a6c77aa7c77da9ca80a7c983a9c77ca9c67ea9c777aac97aa9ca76a6c876 *a6c879a7c97aa8c97ea9c87eaac977a8c67faac87ea8c87fa9c780a9c77ba7c978a9ca7aaac780 *aac982aac87ca7c679a5c67fa7c77da7c980aacb7caac97aaac76ea6c77da9c77ca9c87fa8c879 *a9c777a8c97fabcb7aa7ca81aac984adcb79a9c982adcb7da9c97baac97caac97dadca81abc87a *a9c77ba9c884aac87da9c77ba9c979aac979a9c879a9c87caac97fabc97fa9c77faac97daaca85 *abc97daacb81accb75a9c77eadc983aacb85acc97eaac97faac984aac97aadcb82aecb80aeca82 *afca7fabcb78aac981abc885aac886aec97eacc984abc980abca81adcb84acca80aac880abcb7f *accb86adc885abcb82adcb87b0ca82abc974a9c97baaca7daac885acca85aec882adc982adca7f *acca83adcb7dabcb81adcb81aecb84afcb86b1ca8ab1cb86b0cc85b1cb84abc986aecc80aac983 *b0cc85adcb82acc981afca86b0cb8ab0cc82accb80accb83abc97fadcb86adcb84adca84b0cb82 *b3c983b0cb86aecb86adca82adca86b0cb8cb1cb7fabcb85afcb84aeca82abc984aeca81acca88 *afcc82aecb7ea9c984afcb8ab2cd84afcb86adcb8aaecd87afcb7caecb86b0cb86afcc86b0cb8b *b2cc87afcb8cb0cc8ab0cc89b1cc86b1cd8bb1cc8bb2cd87b1ce8db2ce8bb2ce86aec987b0cb87 *b1cd8db2ce86b1cc8db1cc90b2cc8db2cc8fb3cc94b4ce8eb4cd92b3cd9ab7cea0bcd1a5bed2a4 *bdd1a8bfd3aabed3acc1d4a9bfd4a3bad1a4bcd1a5bdd2a3bdd4a1bcd1a7bfd4b3c2d7b8c7d8bd *cbd9c1ccdcc2ccd8bfcedcbdccd8bccbd9b5c6d8acc1d3a5bbd3a8bfd3abc1d4b2c3d3b9c9d6bf *cad8bfcaddc0c9dbbdcadabbc7d7bdc8d7b9cad8b7c7d7b5c7d9bac8dabac7d8b3c4d7b2c3d6ad *c2d6b0c3d6b3c6d6b7c7d7b7c9d8b4c5d9b3c4d7b7c6d6bcc9d8bbc8d8becad9c0cbdbbfcbdac3 *ccdac4cedac3cddbc6cfdbc5cedcc6d1ddc9d3dcc5cfddc6d0dec3cedec6d1dfc4d2ddc7d0ddc7 *d0dec6ceddc6cfddc3cdddc2cadabdc7d8bdc7d8bac6d8bbc4d3b8c6d6bbc6d6b9c3d3b8c4d5b8 *c6d5bbc4d5bbc6d8bbc6d6bdc7d6bdc6d4bcc7d5c0cbd7c2cbd5c1cbd9c1ccdac3cedbc5ceddc5 *ccdcc7cedcc7d1dbcad2ddcbd1ddcbd2dfcdd3dfced5dfced6dfccd6ddccd6decbd4dfccd7e0cb *d5e0c9d1ddcad2dec7d2dec9d1decad3dccbd3ddccd6deccd4deced3decdd3e0cbd4e0cad3dec7 *d1dac2ccd8bec7d6b8c3d3b8c3d3b6c2d5b2bfd1b2bed2afbdd0adbdcda9b8cea4b5cb9cb4c99f *b1caa6b6caa3b2c8a7b6cbaab7c8acb8caaebacfafbdcdb5c2d3b1c2d3b5bed0b7c2d4b9c3d3b5 *c1d2b4c4d5b8c4d4b1c3d2acbbceaab6c9aab9cea8b9cba0b8c9a0b6caa6b6c9a6b6c9a1b2c9a4 *b3c6a1b3c7a2b1c79eafc69eb1c79fafc99ab2ca9fb2c9a2b0c9a6b3caa9b6cca6b5cbaab9ccab *bbceacbaceaeb8cdaab8cbacbccdaebbccabb9cdafbacfadb9ccabbbcdadb9cbabb8cda8b5cca9 *b7cda7b5caa8b6cca9b7cba6b7cbafb9ceb1b7ccaeb9ccb1bccfb3bcceb1bdd2b3bdd1b4bfd1b3 *bfd0b1bed0b3bdd1b3bdd1b6c0d0b5bdcdb7c0d1b8c3d3b6c0d1b8c1d3bbbfd2b6c1d3b7c1d0b5 *c2d3b6becfb5c1d4b9c2d2bac2d2bac4d2bbc2d3b9c3d3b9c3d4b6c0d1b9c1d3b7c3d3bac3d3ba *c3d2bcc6d6bfc4d4bbc5d4bcc5d3bfc8d8c0c9d5c0c9d6c3cbd6c5ccd8c6ccdac4cbdac7cedccc *d0ddcbd1deccd5deccd6deced7e0ced8deced4deccd4decbd3ddccd3e0ccd3deced5deccd2decb *d4dcc8d2ddc9ceddc7ccdcc6cdd9c5ccdac6ced9c8cddac7cfdbcaceddcbd0decaceddc9cfdcc8 *d0dbcacfdccbcfdcc8ced7c1c8cbc7cfd6cbd4daced6db6fa3bd659ebf619bbe69a2c06e9fbf6d *9fbf6ca0c4659bc06099bd699ebf6f9fc2699cc1689dc0669abf5c97bf5c9bc15e9ec1679ec16a *a0c26ea0c16b9fc16b9ec36a9fc36fa0c3679ec3669dbf70a1c16ca0c1669bbf649abf649cc160 *9bc1669bc16a9ec46f9ec26d9fc36aa1c268a1c36a9dc26b9cc36fa2c574a0c574a3c66fa2c374 *a4c46ea2c472a1c16fa1c272a2c568a0c2679dc36da2c36fa1c36c9fc36ea0c36da1c272a0c376 *a2c36ea0c36ea2c371a2c7719fc3699fc06aa1c46ea4c270a4c473a4c373a2c377a3c371a1c46e *a1c36ea0c36c9ec16ca0c370a1c46ea2c26ea1c36fa1c56da0c36da0c469a3c572a3c467a0c466 *a2c470a3c475a0c272a3c476a4c470a0c372a1c56fa4c6699dc470a1c37aa8c476a5c56fa1c373 *9fc26da1c56da4c36aa1c46fa4c46fa5c66da3c56da4c774a4c672a5c76fa4c66aa4c56ca4c46f *a4c576a5c670a2c57ba7c776a3c670a2c370a5c473a5c471a4c66a9fc46ca4c470a3c56c9fc36d *a0c573a4c56ca4c66da4c670a2c46fa3c470a2c473a4c36ca4c770a5c36fa7c477a9c76ea4c872 *9fc678a6c772a6c66aa2c378a6c776a4c86fa7c86da6c570a3c575a4c677a7c975a6c775a5c771 *a5c672a8c778aac970a5c774a7c76ca4c57aa9c972a7c579a7c776a7c87fa7c778a9c77aa7c77b *a7c87ea9c875a7c97da9ca78a6c87ca8c77ea6c77caac776a8c87aa5c87ea9c877a8c875a7c879 *a7c980aac978a7c980aac776a8c675a6c672a7c780a9c97aa8c879a9c77da9c77ca9c980aac780 *aac877a8c87aa8c879a7c878a7c780aac880aac96ba7c877a9c77eaac97aa9c87aa8c87da9c97c *abca7eaac97ba9c882abc780a7c87fa9c981a9c876a8c77ba8c87ea9c97fabca7da8c777abc97c *aac882aac87faacb7aa8c981aeca7eaccb7eacca78adc97dacc986abc785aec985acc985accb80 *aacc84accb81accb7ca8c978aac87dabc888adc97daaca82abca7babc977abcb7dabcb7facc87c *aac97aaac883adc97faac984adca7aacca7dabca81acc882aeca7fa9c97eabc880acc981abc980 *aacb83adcb82aecc81b0cb7eacc982abc884aec981abca8bafca82aeca84afcb89aeca81aecb83 *aeca81aac984aac986acca7daac981accb84adcc7baac983acca82aecb82aac984accb80abc984 *aecb85acc985b1cc7dacc880acc97eabc888adcb84aac982adcb80abca84aeca83aeca85aecb7e *afcb85aecb85aecc88afcb83aac985adca80b1cb83b1cc86afcb81adca81accb89aecb7fabcc7d *accc84aeca86aecb89b1cc8ab0cb86aecb7eaecb85afcb88aecb85b1cc89b1cb8ab1cc86b0cc89 *b1ca85b1cb91b3cc8cb0cb8aaeca88aecc83adcb8db1cc8bb3cd8fb5ce8bb2ca95b3cd9ab8cf9d *bbd0a4bcd3a2bcd19ebbd1a5bed6a7bfd2a2bcd09fbad0a2bcd19cbad199b7d0a4bcd3afc2d6b6 *c6d8bcc8d8c0cddbbdcbdcbecbdabacbd8bbc8d8b3c5d6acc0d2a6bdd3a7bfd1acc1d3b3c3d6b6 *c6d7bbc9d8bbcad9bfc9dabecadbbfcbdabfcbdbbdc7d9bbc9d6bdc7d8bdc7d7b9c6d6b5c7d8b1 *c3d7abc2d4aec2d6b1c2d5b4c5d6b1c6d6aec3d3aec2d4b2c5d6b9c6d7bbc7d8becadac1cbdcc2 *cddbc3ccdbc5cedbc4cedec6d0ddc5cfddc7cfdec4cfddc4cdd8c0cddcc0cbd9c0cad8c3ceddc6 *cdddc6ccdbc3ccdcc3ccdcc1cbd8bdccdabdc9d8b8c7d6b5c4d3bbc3d8b8c6d5bbc3d6b6c4d3b6 *c5d3b8c6d6bbc3d7bac5d6bdc8d7c1c9d8bfc9d7c0cbd7c1ccdbc2cbdcc3cbd8c3ccd9c4cedac6 *cddbc6ceddc8d1dec6d1dcc7d3decad3decbd3e0cbd5dfcdd5ddced3deced4e0ccd5deccd7e1cc *d7e1cbd3e0c8d1ddc7d1ddc8d3dfcad3decad3decbd4deced5deccd5dfccd3e0c9d4e0cbd3dec9 *d1dec7d1ddc5cfd9bdcadbbac7d5b5c4d2b4c3d3b6c2d2b3bed0b1c0d0afbbcea5b7cca1b4caa4 *b4c8a6b6cba5b6caa6b6cca6b5cbaabbceadbdd1adbfd1b0c0d1b1c0d2b0c1d2b0bdcfb2c3d2b5 *c5d6b7c4d6b5c4d4b3c4d5b3c3d4abb9d1aab7cbaab7cba7b6c9a4b6cbaab6c8a5b3caa4b6cca0 *b1c79badc599aec5a0afc69dadc39aacc59bacc59ab0c79db1c8a0b2c9a0b1c8a2b1caa5b1caa3 *b5caa8b7cba9b8ceaab9cdaebacba9baccacb8cbaab9ccacb8cdafbcccb0b9ccacbccfacb9d0aa *b9ccabb6ccaab6caa8b4caa4b2c9a6b6ccabb9cca9b8ceaabaceacbbcdaebcd0b4bdd0b1bdd1b2 *bdd1b1bcceb3bdd1b1bdd0b3c0d1b0bfcdb5bed1b5c1ceb6bfd1b9c2d1bac1d2b6c2d1bbc1d4b3 *c3d6b7c2d1b5c0d2b6c0d1b5bfd0b5c0d3b9c3d4b7c2d1b6c2d2bac1d2b9c0d2b7c0d1b7c0d2b9 *c2d2bac3d2bbc5d7bdc2d4bdc6d3bfc9d6c0c8d7bec8d7c1c8d4c0c8d4bfc7d8c0cbdbc1ccdbc6 *cedcc8d1dbc9d2dccdd3ddcbd2dccbd5deccd4dfcdd3e0ccd4deccd3ddccd3ddcad1ddcad1dbcb *d2ddcbd2dec8d2ddc7ceddc6ceddc7d0dbc5cedbc8cfdbc8cdddc7ceddc9cfddcbd0ddc8ceddcb *d0dccbd1dec9d1dccaceddc9ced4bfc7cbc5ced3cbd3daccd6dc6c9fbd73a1c06b99bf6c9ebf6d *9fc1659cc06c9bbd669dbd6d9fc171a1c3659dc3719fc16d9fc1629bbb6f9ebd6e9ebe6e9dbe73 *a1c2689bbf649bc0649ec3709fc16b9fc06799c16198bd699ec0679cc0679dc46f9cc26899be6b *9bbf6e9ec26da0c16fa0c270a3c36da0c36ba0c477a4c56ea3c47aa2c374a3c473a1c475a3c575 *a4c477a4c677a5c570a4c479a1c372a2c372a0c36b9fc26f9ec2709bc1699fc16d9fc274a2c56c *9ec1779ec376a0c3709fc372a3c66f9fc46e9ec472a3c3719fc36da0c36ea0c66d9ec37c9dc273 *9ec275a4c370a2c274a0c36da1c46e9fc3689bc16a9fc2689fc26ba2c371a3c573a1c670a3c671 *9fc46f9fc370a4c472a2c472a3c479a4c374a4c576a4c569a1c66a9ec372a1c372a2c472a3c472 *a4c375a3c477a4c570a3c373a4c7689fc36fa0c370a4c871a3c76ba4c463a4c573a4c672a3c56f *a3c672a0c671a4c76fa1c371a5c671a2c672a2c578a1c474a4c36da0c2719ec2699fc371a2c471 *a4c577a6c675a6c871a4c36ea3c46ba0c56ea4c369a4c674a7c87ca3c670a4c673a6c775a9c674 *a3c371a4c66ca3c676a7c975a6c777a5c67aa2c572a4c679a7c57ca5c770a3c46aa5c779a4c77e *a9ca7ca7c879a6c776a4c77ba9c879a6c87ea4c875a4c977a7c680a8c977a8c87ea9c87ca6c777 *a5c66ba4c675a6c979a7c97ba7c77ea6c87ea7c777a6c679a8c679a9c880a8c87aa8c77ba9c972 *a5c77aa7c97eaaca79a6c77aa6c877a7c878a6c97aa7c87daac977a4c77caac678a8c97ea8c780 *aac978a5c87ea9c77ea9c67faac876a6c77da7c67ea9c980aac980acca79a8c978a9c980aacb7e *aac876a9c778a9c87fa9ca81a7c87ba9c881aac973a6c874a8c97eaac983aaca79a7c87eaac97f *abca76a9ca80abcb83abcc76a6c778a9c87ea9c983aacb7eaacb80acc979aac97eaaca7eaacb79 *a9c980accb84a9c97ea7c97aa9ca81abc881accb84adca7facc97facc97cadca7faccb81accb7f *aac985aecb7dabcb85abca84abc987aecb80acc97caac985abc987adcb84aaca7babca80abc980 *acca7ea9c881adc886adca83abca7dabcc81adca82aecb80abc986acc985aec981acc980acca74 *aacb88abcb8ab0ca85aeca82aec980aec97facc77da9ca86aacb86abca86accc83abcb86abcb7e *afcb85aec981acc986b0cc7aabca88adca88aecc82abca86afca84aecb86aeca83adca7eacc985 *afca84accb84adcb89aecd8aafcc86adca81afca80acca8aafcb7eaac980abca87accc79aacb86 *aeca82afcc83aec984aeca83aecb89b0cc89b0cc81aece8cb1cb85aecb8bafcb85b0c984acc986 *aecb86aec987b1ce7eb1ce87b1ce8ab0cc85aec98db1cb8db1cb8cb2cd86b1cd8fb4cf8eb1d094 *b6cf98b5cfa2b7d19cbad198b8d19bb7d0a2bbd4a0bbd2a2b9d1a1b7cf99b4ce8fb2cca2b9d1ae *c2d6b4c6d8bdc8ddbfcbd9c1cbddbdcbdabdc8d7bac7d2b5c4d6b1c1d3aec1d6afc1d3aec2d5b6 *c3d7bdc7d6bcc7d7becad7c1ccd8bccad8bdc9d9c1cbddc1cbdcbbc7d6bcc7d8b7c6d7b6c4d8b1 *c3d6acc2d4acbfd5acbfd4abc0d4a8bfd3a4bcd2a3bdd2a7bed3b3c2d5b7c4d6bec7d8c4cbdcc5 *ceddc2cddbc5cddcc7ceddc5cdddc5cedbc6d0ddc6d0ddc4d1ddc1ccddbdcad9bec8d7bcc9d8c2 *cbdbc3ccd8c2cbd8c0cadbc3ccdcc1cbdbbec7d9bbc6d4bbc5d5b6c3d4bbc5d4bbc7d7bbc6d8ba *c6d6bac5d2bbc5d3bec7d3bec6d8bec7d6c0cad7c3cbd7c5cddac3cddbc3ccdbc5ccddc4ccddc6 *cedcc6ceddc7d0ddcad1decbd2ddcad3ddcad3decbd3dfccd5e0ccd5deced5deced6deced6e1ce *d7e1ced7e0ccd4dfcbd1dec9d2ddc7d3ddc9d3decdd6e0ccd3decfd6e0ccd6dfccd3deccd6e0cb *d5e0cbd1dec9d2dec9d1ddc7ceddc3cbd9c0c9d9bdc7d7bcc6d4b8c3d5b4c1d4b2bdceb2bbcdac *b7caaab7caa3b6caa9b6cba8b7cdadbbcfb0bccfafc0d2b4c0d2b5c1d2b5c2d2b6c0d2b2bfd1b0 *c1d3b4c1d2b3c1d3b7c3d3b3bed1b1c0d1aebcd1abb6cbaab7cca6b6cca0b7cba6b6caa2b1c9a0 *b1cba0b1ca9fb0c7a1b3c7a2b1c79bacc69badc59caec69cadc6a0afc899adc79caec9a1b0c9a6 *b0c8a2b4c8a6b4ccaab7caaab6cbabb8cbabb9ccaab8cbabb9cba9b8cab0bdcdb0beccb1bbcfad *bbceaeb9cdadb6ccadb6cdaeb9cbadbacbabbbcdacb7ccaeb7caafb7caaeb9ceafbbceb3bfd1b1 *bdd1b1bdd1b1bdcfb2c1d1b5beceb9bfd1b6becfb9c0d3bac2d1b6c3d2b6c2d3b7c1d3bbc3d6bc *c1d4b9bfd2bac6d6b8c1d4b5bfd2b4c0d0b7c0d2bac2d2bbc2d3bdc2d3bbc1d3bac4d6b6c3d5b4 *c0d3bac1d0b8c3d3bcc3d3c0c5d3bec7d7bec8d7bec8d8bcc6d6bdc7d6bdc8d3c0c8d3bec9d7c1 *c8d8c2ccdac6cedbc7cfdfcbd4decbd2deccd4deccd4ddccd3deccd1ddcbd3dfccd3deccd4decb *d2decbd0dacad1dbc9d1dbc7cedbc6ccdccacfddcacfddcad1ddc9d1dbccd2dbcbd1ddcbd3decb *d0ddcbd3deccd3dfcdd3deccd3ddcacfd4c0c7cbc5ced2cbd4d9cfd6dc709fbe76a1be6fa0c16f *a0c372a0c1689dc16f9ec16b9ec0659fbf6b9ec26799c173a1c5719fc172a0c2609ec0689dc06f *9ec16c9fc26f9dc16f9dc1699dc06da1c3679ec36da0c1639bc1649ec1699ebf629bbe669bbf72 *a1c370a0c56f9fc36c9ec26c9fc16b9dbe70a0c476a3c379a5c579a5c679a3c872a5c778a6c671 *a2c670a4c36fa4c56ea2c273a2c570a2c375a4c574a4c36fa1c46da0c1719fc271a4c36b9fc372 *a3c66aa2c677a4c57ba2c36ea1c26fa0c379a0c2729ec478a2c474a3c572a4c575a4c76b9fc36e *a0c470a1c470a0c36fa0c276a3c66da1c66fa0c36da1c26ca1c370a2c46ea2c373a2c476a1c671 *a0c474a1c377a4c670a4c26fa0c3719fc26c9fc36ea0c3699ec46ca2c671a4c970a4c470a2c473 *a4c671a1c56fa5c66da1c46ca0c66da4c475a5c66fa4c96b9dc66fa1c46ba2c669a0c56fa0c66f *a4c66ea5c46aa3c673a5c66da1c26da2c374a3c574a4c376a5c471a5c678a5c76ca2c470a4c677 *a3c677a4c476a5c66da3c770a6c76ca4c670a3c571a4c76ba0c46ca3c573a4c776a4c676a5c870 *a6c772a4c76fa5c877a4c77aa8c972a5c76ea6c775a4c779a4c767a3c770a5c77ba8c977a4c96d *a5c97ba6c97da7c979a6c776a6c875a5c878a7c67aa6c872a6c972a5c778a9c77ca6c87ba5c775 *a6c979a7c97aa8c97ea9c77ea8c878a6c777a7c879a8c97ca6c77eaaca77a8c879aac874a7c879 *a9c979a7c875a7c77ba9c880a7c87da6c771a7c77aa7c876a9c877a7c87ca5c77daac97ba9c77d *aac981aac87ca9c87aa9c982abca7eaac97aa6ca75a5c67fa9c77aabc982aeca78a9c877a9c971 *a5c781a9c978a9c679aac97eaac775a7c87babc882accb77a9c882abc982aac980aac97eaaca7e *abcb75a9c777a9c87ba9c979aac983adcc81a9cb7ea8c97aa8c97cabcb83aac982accc7eaaca81 *adca7eaccb84aecc7babc980accb7caaca79aac77aabca81aeca83aac884aac97eabca83accc7e *adcc81accb85adcb80adca84adc985adcb83adca7eaccb80aecb82adca81adcc80abc97eabca84 *afcb80acca85afcb81adca7faac97faac980abc97eacc98cb1cb7eaac980aacb78aacb82aecb81 *abca83acca80accb85aecb84adcb82accb7daacb7eaccb85abcb81abcb85acc986aecb83adcb7f *aaca7daccb85adcb81adc984adca80acca83aecb82afcb83adcc80adca80adcb7faecc86aecc85 *aeca81adca82adcb82afcc83aecd85aecb85aeca82adcb86afcc81aecc83afcc84aecd7faccb82 *abca8caeca81accc83aecb81aeca85aecb82adcd81afce88b0ce8cb1cc91afce8cb0cd77abca81 *adcb83b0cc85aecc89b1cd86afcc84b0cb8bb1cb89b1cc87b1cc8fb4cd8db3cc8bb1cb8ab1cb92 *b2ce90b3cf91b4cd97b6d095b6d18db4cd92b4cf9bb6d19db8d1a1b8d09ab6d095b5d093b5d09c *b8d1a9c0d3b5c6d7bbc7dabecbddc0cbd9bfccdbbfcbd8bccbdab7c5d6b8c6d7b7c6d7b5c3d5b6 *c6d6b7c6d5bdc7d8b8c9dbbfc9d8bfcbdabdcbd8c0cbd9c1cdd9beccdbbdcbd9bcc9dab7c8dbb5 *c6d7b4c6d7acc0d4a8c1d5a3bcd2a1bad2a4bcd2a1bcd39ebad3a3bad1b1c2d5b7c6d7bfc9d8c4 *cbddc5cedec6cfdec7d1dfc6cedbc4cdddc5cedcc2cdddc3ceddc2cdddbdc9d8c0c7d8c0cbd8c1 *cad8c1cbd8c0cbd8c3cbdbc1cbdcc0cbdbbecad8bfcbd8bfcad9bac7d6bbc5d8bbc6d7bac4d5b8 *c6d6bbc8d7bfc9d8bdc9d8bfc9d6c0c9d7bfc9d7c1cbdac3ccdcc5cedac6cfdcc5cedcc6cedec3 *cddcc7cedbc8cfddc8d1dfcad2ddcad2ddcbd5dccbd6decbd5e2cdd7e0cbd4dfced4decdd4dfcd *d8e1ccd8e2cdd8e2cdd6e2ced6e0ccd4e0ccd3e0ccd5e0ccd4e0cbd6dfced8e0cbd6e0ced9e0cd *d8e2ced5e0cad3decbd4e0cbd4dec7d2dfc5cedec2cedec4cedec1cbdbc0c7d7bac6d7b5c4d6b5 *c2d2b4c1cfacbdcdaebacfaebfd1aebcd2acbdd0afc1cfb6c2d2b4c1d3b0bfd1b0c0d4b4c1d1b0 *bdcfb0bdd0b0bfd2adbdd2aebccfb5c0d1afc0cfb0c0d0adbdd3abbbd0abb7cfacb8cca2b6cca8 *b4caa4b6cb9cb3c7a4b2c8a1b3cba4b2cba2b0ca9badc89daec79cb1c99eafc79daec7a1afc9a0 *b2c89fb0c9a6b3caa3b5caa6b6cca7b5caaab7cdacbacdaebbccafbcceaebacdb1bcceb1bcccaf *bbceb0bdd1aabacdacbbcdafbbceaebbcfaeb8cdaeb9d0aeb8cdaebacbb1bccfadbacfaabccfb1 *beceb2c1d3b4bed0b2bcd1b4bed0b1bfd1b5c2d5b7c3d0bac3d2bbc2d2bbc3d1b6c4d4bbc6d5ba *c6d6bac4d3b6c0d2b8c3d4b9c4d4b9c3d3bac2d4bac1d3b8c4d5b6c5d6b5c2d5b9c3d4b9c4d3ba *c2d3bac4d3bbc4d4bac4d7bac5d5bbc3d4bbc5d8bdc6d8bfc9d6bfc9d8c1c9dac1c8d6c2c6d8bf *c9dac1c9d9c1cbdbc3ccdac7cedbcbd2decbd5decdd3e0c9d5e2cad3deccd2decdd2decdd5decc *d4decad3decbd3decbd3dec6d0dec7d0dcc7cedbc9d3ddcbd1ddccd4ddccd5dfccd3dccdd5e0ce *d3decbd3deccd5dfcdd4dfccd3decbd4decacfdac3c9cfc6d0d6cad5d8cdd7dc6d9dbc729ebf6a *9dbd729cc46e9abf6b9ec171a1c35d99bc6d9fbf6f9fc1689cbf719fc1759cbe6796bd679dc06a *9dbd669cbe669bbf739ec0649cbd699dc06ba0c3699fc170a0c46b9cc16c9fc16a9cc06b9fc070 *a0c3769dc1799fc278a0c174a1c372a1c373a3c46da0c378a3c578a7c676a3c378a2c472a2c56d *a2c572a0c475a3c36ea0c36a9dc472a1c478a3c272a0c3739fc376a0c26e9fc373a1c372a1c280 *a5c375a4c671a0c374a0c16f9fc16f9ec379a2c2749fc46c9dc377a2c273a0c279a3c372a4c66e *9ec3679dc3719fc3709ec478a1c36ea0c3739fc36a9bc26c9cc26b9ec36d9ec274a1c475a2c36f *9dc36da0c5719fc26a9fc26ca2c36ca0c472a1c26d9fc5659ac1699ec371a4c66ea4c6729fc47c *a4c676a2c470a4c46e9fc370a0c373a1c470a4c46aa1c36e9fc4709fc46ba2c3689fc175a3c56d *9ec371a0c46f9fc26c9fc670a4c67ba4c577a7c66da3c36e9fc36ca0c36a9fc375a1c573a3c47c *a5c66da0c468a1c16fa0c272a1c570a2c577a2c471a4c56ca1c474a3c47da9c770a4c670a2c479 *a5c766a0c56ea1c66ea3c777a7c96da4c772a4c66ea4c77ca6c86da0c478a5c671a4c76fa4c676 *a5c879a6c97da7c67aa9c772a4c36ea4c779a5c66ea2c57ea7c87ea7c97ba5c87ea7c776a6c777 *a4c875a4c67ba6c672a4c775a4c872a5c87ca7c87ea8c679a5c776a4c577a6c76fa4c670a4c778 *a7c774a7c77ea9c879a7c576a8c772a4c676a7c878a6c772a5c77ca6c97da7c879a6c773a6c776 *a8c676a4c97aa6c775a5c775a5c77ea9c97ea9ca77a6c778a6c677a6c77ca8c773a7c780aac77f *a9ca81aac980aac87ea9c67ba7c67ca7c87ba8c87fa9c980a9c87ca9c973a6c77da9c97daaca7f *aaca7da8c978a9c980aac87da8c882aac980accb81aac981acca7fa9c779a9c97ea9c980aac978 *a8c881aac87da9c981abc979a9c97da9c981a8c976a4c685aac978aac988aecb84accb84adca84 *adcb80aaca82a8c97ba9c981acca82abc881abca82accb82acc97daac880aac87babc982abca83 *acc97caac983aac984adca7eabc877a8c77aaac97faac981acc985aeca84accc81a9ca85afcb82 *acc97dacc881abcb7aa9c988adcb7eacc983abc988afca85abc986acca78a8c779a8c679a9ca7e *aaca86acca81aacb81abcc85adc781abc87faac777a8ca80abcb85aecb87aecb81adcc87aecc85 *aec983abc97eabca85adca87abca81abcb81aac985adca89afc981acc988aacb81accc83adca7e *accc7daaca8bb0cd86afcd89aecc8bb0cc85aecb7fadcb89b0cc86aecc87aecb87aecb83aecc85 *acca8aacca89adc987aecb89b0cb85aecb85afc984aecb89afcb8bafcb85afcb86aecb86afcb83 *accb89b0cd87afcd88b0cc8bb0cd89b1cc8db0cb8bafcc90b1cc96b5ce96b6d19ab5d19bb8d29c *b7d1a2b8d1acc1d3b7c7d7bbc7dbbcc9d9b7c7d7bbc7d7b9c7d6bbc8d6bcc9d9bdcad8bec7dabd *c7d8c1c9d8bfc9d8c0c9d8bfcbd9c1cbd8c1cbd8c1ccdbc1cbddc1ccddc1cbdac2ccdbbdcbd8b9 *c7d6b5c6d7b0c3d6a7bcd2a2b7d19cb7cf98b3ce9bb4cf9fb6d1a0b8d1acbed2b3c4d5bac6d8c2 *c7d8c4cbdbc6ceddc6d0dec4cfdbc4cdddc3ceddc5cedbc3ceddc3ccdbc1cbd8c3cbd8bfcad8be *cad8c0cad8bbc9d9bdcad6c0c7d8c1c7d8c0cbd8c1cbdcbfc8dabbc7d9bdc6d5bbc6d6bcc6d7be *c7d6bfc9d7bec8d7c2c9dbc3cbdac1cad8c3cad8c2cbd7c3ccd9c2ccdbc5cedbc7cedac6cddbc6 *cfddc5cedcc7d0dcc8d2dec8d1ddc9d2decad1ddccd3deccd3dfcdd3e0cfd6e0ced5e0ced6dfcc *d3ddced6dfced6e1d0d8e2cfd6e0ced7e0cdd6dfcdd7e0ccd6dec9d4e0c9d3deced4e0ccd1decc *d5e0cdd5decdd6e0cbd6e0cad3dec9d2dfc6cfdec2cbd8c1ccd9c6ccdcc5cddbc4cedcc4cbd9c0 *cad8becad7bcc6d6b9c3d3b7c5d1b3c2d3b0bfd2b1bfd4b1c0d1b5c0d0b3c2d4b2c1d3b2bfd1ae *bcd2afbcd1b4c1d3b2bfd3abb9d0abbbd0aebbcdb1c1d1b0c0d3b3c0d2b6c1d5b4c1d2afbfd0ad *bbcca9b7caa5b5cba7b5c9a5b6cca2b1caaab4caa4b3cba3b1c9a0acc79bacc39bacc89eacc59c *aec69dafc9a2b0caa6b2c9a7b5c9a4b5cba9b6cbabb8ccabb7ccafb8cdafbacdaebbcfb0bdcfae *beceafbdd2b0b8cdaab8ceb0b9cbadb9cdacbacbafbbccb0bccfadb9ccaab6cdabb2cbabb4cbae *baceaebbceb0bcd1b1bed2b6c0d2b5beceb2bed1b3c0d2b6c3d3b9c2d2b6c2d3bac5d6bac4d6bc *c6d6b4c1d3b2c1d3b7c0d0b4c0d2b8c2d2b9c1d1b8c0d2bac2d4b8c3d3b9c1d3b6c0d3bac2d3b9 *c3d4b8c3d4b9c4d3bac4d5bbc4d4bcc4d4bcc1d4bbc5d7bdc6d7bfc6d7bfc6d6bcc7d9c1c8dac2 *c9d9bdc7d6c0c9d8c1cad9c2cad9c4cadcc7ceddc8d1ddcad1decbd1ddc9ceddc9cedcc9cfdbcc *d3ddc8d0ddcad1ddcbcfddcacfdbc8d1dcc9cedbc7ceddcbd3decad1deccd1ddced4decdd5dece *d5dfcfd6deced3deced5decfd5decdd1ddccd2decbced5c2c9ccc6d0d3cad4d9cdd7dd6e9ebd70 *9ec1609dbd6b9bbd6f9dbd609dbf6a9dbd6b9dbf659dc0699abf6c9dc06b9bbd5e9abd679abd66 *99bc6f9dbe689bbf5e96bf6d9ec16c9fc1659bbe669cbd689dc1679cc16b9dc16d9ebe729fc06f *9cbe71a2c273a1c071a1c176a2c376a4c481a3c573a0c17ea3c37ba1c376a3c477a2c275a5c376 *a3c473a4c66fa3c373a2c275a2c1719fc370a2c0699fc273a1c26f9fc273a0c36b9fc16b9dbf73 *9cc1699ec16d9fc1659dc16f9dbf699fc16b9dc070a1c476a0c574a1c16ca0c16fa2c36ba0be77 *a0c374a2c271a1c277a1c2729fc379a2c46d9fbf70a0c2669bc06e9ec1699ec26c9ec2679cc270 *9fc2719dc26f9ec26d9dc06d9ebf70a2c169a1c3679fc472a1c36a9fc169a0c16da2c2649dc06f *a0c26a9cc0629ec172a1c372a0c46fa1c3729fc36ca2c36a9ec168a0c369a0c36b9dc3639ec372 *a4c66fa0c271a4c26a9fc26ca0c367a0c36ba2c2689fc368a0c470a4c370a5c36ca1c271a3c06f *a1c46da0c3729fc473a3c372a4c578a4c471a1c46a9fc377a7c973a4c468a1c46c9fc3709dc279 *a1c470a3c173a6c36fa4c36fa3c46ba1c275a4c373a3c379a6c772a4c47ca5c772a2c471a2c668 *a4c36ea3c375a4c874a5c672a4c670a4c277a6c475a1c56ca3c473a5c677a6c676a6c671a6c872 *a7c871a4c470a4c470a2c576a5c673a4c579a4c571a6c57ba7c67aa6c876a6c579a6c66fa4c57c *a5c479a6c678a4c571a5c777a8c579a6c67caac77ea7c673a6c670a5c380a9c679a8c771a5c776 *a5c773a6c77ea9c776a4c67aa5c677a6c575a5c57ba7c776a6c679a4c778a8c680a9c979a6c77a *a5c47ea7c77ca9c87eaac87da8c67ba8c77ba9c672a6c77aa7c683aac879a7c777a5c775a8c877 *a7c881aac980abc777a6c581acc780a9c881aac982a8ca7da8ca82aacb80abcb81aec981aac87f *abca80a8c884abca81abc979a8c87aaac77eaac87da8c57fa9c778a6c784abc97ea9c77da6c980 *aac97eabc97eabc97aacc97ca9c879a9c87eabc97eaac87ba8c97caac87da9c87da8c67cabc980 *aac77daac781aac882aac77daac97eaac97daac97ba9c678a8c67ea9c87baac881aac786abcb82 *acca7daac981aac787acc982a9c785aecb84acca78a9c781aeca78abca7daacb7caac97faac87d *aac97da9c778aac87faac97eabc887abc786aac681acc97faac782acc978a8c881a9c87faaca7f *aac87eabc97eacc882acc980acca84acc880a9c880acca7eaac980acc987adc980abcb83accb80 *abca81aac989accb8db0ca84b0cb81acc988aeca84adca87adc982afcc86abcc86b0cb88aecb83 *aecc83aecb8cafc781afcc85b0c989b0cc85aeca81acc785b0ca87aec986aecb87adcb82aac983 *acca89acca86afcb85b1cb87afca83acc988afcb8bb0cb86aecb89aecb8bafcb91b3cb97b4cd9a *b7cd9fbbd2a6bcd0adc2d6b4c6d7b8c5d8b8c7d8b6c5d4b7c7d8b8c7d4bdcbd6bfcbd7c1c9d6c1 *c9d9c1cbd8c6ccd9c1ccd8c1ccd9bfcbd9c3ccd9c3cddcc1ccd9c3cbdcc3ccd9c5cedbc2cddbbe *cbd9bdc9d8b2c4d6b1c3d6adc0d3a2b9d297b6ce95b3cd8ab1cb96b5cea4b9d0aebed2b5c5d5ba *c6d8bec8d7c4cbdac4cedbc6d0ddc4cfdcc3cddcc1cbdcc8d0ddc6cedcc2cbd8c3cbd8c2cbd8c0 *cad7c0c7d8c1cad8becbd8c0c9d7bdc9d8c1cad8bfcbd7c0c9d5bcc7d3bbc6d6bec9d6bdc6d6bc *c7d7bdc8d7c2c8d9c1c9d8c1cbd8c3ccd7c5ccd8c3cbd8c2ccdac1cbdbc3cddbc6ced9c7cfdac7 *cedac7d1dbc6cfdcc7d2ddc9d1dec9d2decbd3ddcad2ddccd3decdd3deced6dfced6e0ccd5e0cd *d5e0cdd4dfced6e0ccd7deccd7dfccd3ddced6dfcdd6e0cdd6e1ced6e1ced6dfcdd6ddced6decc *d2decbd3decbd3ddcad3e0c9d1dfc9d2e0cad2ddc6d1dbc2ccdac1cbd9c2cadac1cdd9c2ccdbc3 *cddac2cddbc4ced9c3cdd9bec8d5bbc5d5bac5d5b2c0d2b0bed0b6c3d4b5c2d3b4c5d3b6c4d5b4 *c1d4b3bfd3b1c0d1b3c0d0b1bfd2aebbceacbdcfb2c1cfb8c2d1b4c2d1b7c2d1b6c1d2b6c1cfb0 *c0d0adbdcfa8b9cea7b6caa9b8cba9b5c9aab6c9a8b5c9a2b2c8a2b4c9a0afc6a0b1c29fb1c69c *aac69eacc69dabc49eaec6a0b1c8a6b4c9a9b5caa9b6caa7b8ccabb6c9aeb5cbadbaccaeb8ccae *bbcfabb9cfaebbcdadbaccafbacbafbacfadbbcdaebbcdaebbceaeb9ceabb7cdabb8cbacb9cbaf *bbcdb0b7cbaebbcdb2bdd0b4bcd1b1bbd3b1bdd2b4c0d1b4bfcfb5c2cebbbecfbbc1d3bcc3d3ba *c4d3b8c4d3b9c3d3b9c3d3b6c0d1b5bfd1b6c0ceb6c0d1bac0d1b8c1d4bcc1d3bbc5d4b7c4d2bd *c5d0bcc1d2b7c2d2b9c1d1b9c3d4bac3d2b8c3d3bdc6d2bec6d4c1c7d6c0c6d5bdc7d3bec8d3bd *c9d5c0c9d8c3c8d8c1c9d5c3cbd9c6cbd8c4cbd8c3cbd9c4ccd9c6cddbc7cedbc6cedbc6ccd8c7 *ceddcad1dbc9cedccbcfddcacedbc9d0dbc8d3dbcad0ddcbd2ddcbd3dbccd2deccd1dbccd4decc *d5ddccd4deced6decfd5dfcfd4decfd5ddcfd5ded0d5ddcad0d3c2c8cdc6cfd5cbd4d9cdd7db72 *9cbc6fa0c06c9bbd6a9cbb6c9fbe6c9dbf689ac1709dc16a97c06c9bbf6c9dbe6ea0c2699ec06a *9abd6899bf649abe6a9cbd6c9cc26c9dc46f9ec16fa2c170a2c3759cbf71a0c37aa2c4779fc172 *9dc277a5c47da4c674a4c372a2c5789fc26da1c277a1c378a2c480a6c777a4c675a4c670a5c473 *a4c46fa2c66d9fc3709fc46e9fc3739ec674a2c5699ec3719fc178a0c3709ec3729fc3709fc36e *9ec36d9cc36d9cc376a1c374a4c472a0c4719ec370a0c370a0c46b9dc2709fc2749ec1739fc369 *9dc36d9fc2649cc16e9dc46fa0c376a0c3739fc1719ec076a1c56e9dc26b9dc2699ec4659bc16a *9cc176a2c56c9dc06e9fc36c9fc26a9fc26e9ec3699dc36e9ec46c9cc36b9dc3689cc2659ec36c *a1c46a9ec36ea0c372a2c46e9fc3739ec2699cc16d9fc4679ec360a1c46ca0c66ba0c6699bc172 *a2c26f9ec275a4c36ca2c36c9ec16e9fc26d9dc36a9fc46b9ec3689cc46fa2c46ca3c46ea2c571 *a3c370a2c36ea4c66fa0c576a4c56aa1c574a3c66fa1c56c9fc46aa4c370a2c46ba1c670a4c46e *a2c872a2c66c9dc56d9fc472a1c372a2c46ea0c36ca4c46ea4c472a5c470a2c771a1c46aa0c670 *a3c675a4c779a4c471a4c66ea4c66ba1c66ca4c982a4c770a4c773a4c872a6c76ba0c675a4c774 *a3c676a5c674a5c675a3c777a5c86aa1c678a3c66ca4c675a5c673a4c777a5c76da3c669a3c674 *a4c67ba9c97ca8c77da6c578a4c47aa6c676a6c879a6c770a3c874a4c76fa4c877a3c779a8c878 *a4c676a4c570a3c675a6c778a6c773a4c77aa5c87da7c77ba8c87ba7c778a5c679a7c67ba7ca7f *a8cb7ca9ca75a6c77ca6c77ba8c777a6c677a7c67aa8c97ea9ca7faaca78a8ca7ca7c87ca9c879 *aac87daac882aac87da9c97ca9c97ea9ca85aaca7fa7c980aac97ca4c76fa7c681a8c77daacb7e *aacb7da7c983a9c97da7c67dabc976a9c981abca7ca9c979a8c97fa9c779a8cc7eaaca74a8c781 *aac981a9c881aec981aaca82aac982aacb7ca7c97caac781abc67eaac97aaac97aa8c981abc87c *a9c97ba7c987accb81acc883abc982aac87eaac980a8c980aacb81a8ca80a9c888adc981adca80 *a9c87daac980a8c77da7c782aac879a5c889accb84abca85adcd7ca8c982acc882aac87ea9ca78 *a6c980a8c986adcb89aec981aaca83acc881abc981acc87ca9c87da9ca7daacb82accb85aac87f *adc984acca81aeca82acca7faaca80accc87accc7ea9ca89b0cb7caac97caac87cabcb83aecb83 *abcb7fadcd89afce8aafcb81aec97faecb80afcc84aecb89accb8aaccb81aacb84aecc80adca80 *abcb80abcb80abc986aac981aaca7ca7ca84accc90aecc84b1cb89b0c786adca83abcb87accb82 *abcb82abca85abcb89b0cd85aecb86b0cb89adcb8badca88accc88acc886accb8aafce93b2cd8e *b3cd95b5d097b6cfa1bad1a5bfd5b3c6d6b5c4d6b2c3d5b1c3d6b2c4d3b9c8d7bdcbd7c3cddac3 *cdd9c3cbdbc4ccdcc3cddec0ccdbc1cdd8c1cbdcc1ccdcc3cbd9c2ccdac3cdddc3ccdcc4cddec2 *ccdcbfcad7b9c9d8bbc7d8b4c5d8b0c2d5abbed49cb5cf96b4ce92b3cd96b5d1a8bbd2afc1d4b2 *c3d6bac7d9bcc6d9becadac6cedcc5d1ddc3ceddc1ccdbc1cbdcc5cdddc5cdddc3cddbc5cddcc4 *ccd9c1ccdbc1c9d9c1cbdac0cbddc0cad9c0c8dbc1c8d8c1c8d9bfc9d7bdcad6bbc8d8bdc7d6bb *c6dbbbc6d8bec9dac3cad9c3cedbc5cedbc6ceddc4cedbc3cddbc2cddcc6ccddc7ceddc6cfdec9 *d1dec7cedcc7cfdfc7d1dfc9cfddc9d0decbd2decbd3dfcbd3dfccd4ddcbd3e0cdd5e0ced7e0cd *d5dfcfd6dfced4e0ced7e1ccd5e2cdd8e0ccd5e1cdd6decfd8dfccd8e2cdd6e2cdd6e0ccd5dfce *d4decad2dfccd3dec9d5e0c9d1e0c7d1e0c7d1dfc4d0ddc4cedec1cbddbecbdcbbc9d8b8c7d7b9 *c7d8b4c8d7b7c7dbc0cbdbc0cbdcc2cbdac1cad8bdc8d5b7c3d4b7c6d6bbc7d6bcc6d7bdc6d8bb *c6d7bac3d6b2c3d6b1c1d1afbfd0b0bdcfafbbd1aebbd1b1bed3b6c3d6b3c3d5b7c4d4b7c4d3b6 *c1d3b9c1d1aebbceacbcceacb8ccadbad1acb9cbabbacca7b5cba4b4cca3b1c9a3b3c9a4b3caa5 *aec99fb2ca9caec79eb0c7a0b2caa7afc9a5b4caaab5ccabb6cdaab9ceaab8cfaeb9cdaebbceab *b6caa9b7ccaeb9ceaeb9ccaebad1b0bbcfaebcd1abbacdacbbceadbacfacb8ceadb6cbadb9ccae *b8ccacb8ceaeb8cfb1bdceb5bdd1b3bdd1b3bdceb4bcd1b5c0d1b6c0d3bac3d3b3c0d1bbc2d1b7 *c0d3b2c2d4b4c0d1b5c1d3b6c0d1b6bdd4b7bfd3b7c1d6bac4d3bac2d3bbc2d3b8bfd0bbc1d3bd *c6d3bbc6d4bcc6d7bcc6d8bcc4d3bbc3d6bbc2d4bdc6d7bdc5d4bcc4d7bfc4d6c1c8d8c0c8d7bf *c9d9bfc7d8c1c7d8c2c7d8c1c9d8c3cbdbc6ccdcc4cbdbc5cddbc3cddcc4ccdac6cbdac6cadcc6 *cbdcc5ccdccacfddc9d1ddccd2ddc9cfdecad1dccbcfddcbd0ddccd0deccd1ddcdd3dfccd4dfcd *d5decdd3ddced5e0ced7e0d1d5decfd6dfced6e0d0d6e0d0d6decad0d7c4cacec8ced5cbd5dace *d7dc689dbc679cbb649dbf6b9abd689fbe679ebd719bc06b9cbe6d9ec1669bbf709fc1609ac173 *a1bf6d9ec06d9cbf6a9dbc72a1c071a1c2739fc475a2c276a1c17ba4c177a5c46fa1c579a5c37d *a4c47ca6c678a5c37ba5c678a4c376a4c57ba5c379a4c477a5c678a4c675a2c579a3c473a2c372 *a4c376a5c378a4c46fa1c372a2c56da1c375a2c46ea0c3689dc370a3c3669fc2699ec16fa2c46d *a0c272a2c470a1c3679ec26da0c174a1c374a2c36a9ec36aa0c371a0c2699fc16ca0c36c9ec272 *9fc26c9dc1689ec26c9cc274a0c274a0c16c9ec176a0c1789fc0729fc2749fc37c9fc472a1c36d *9fc0619cbe639dc1669ec26a9ec26b9ec16b9ec1649dbf669dc0699fc06b9dc1689ec16aa4c370 *a1c4699fc5709fc669a1c373a0c1669dc166a0c36d9fc36c9ec37aa3c16ca0c46ea4c66ea2c370 *a3c279a4c56ca2c56d9fc56da0c16c9dbe72a3c46ea1c46a9fc270a0c273a2c36c9fc26da3c46c *a0c371a1c36fa3c56ea3c56aa1bf71a4c567a1c36ca4c468a1c26da0c27aa6c66da2c374a4c36b *a4c26da3c46aa3c26ea3c369a4c46ea3c371a4c66ca3c76da4c678a6c670a2c471a2c36da1c36d *a2c570a3c370a1c571a3c56fa2c37aa7c670a0c471a6c779a5c76fa4c573a4c672a4c472a5c770 *a5c36fa3c16fa5c376a5c676a5c66ca4c774a4c77aa8c87aa7c675a7c672a4c575a6c677a8c779 *a5c673a5c776a6c874a5c777a4c476a5c57aa8c773a5c778a6c772a8c87ca6c876a4c777a7c776 *a8c675a8c781aac87ba7c47da8c776a7c87fa8c97aaac877a7c778a8c77eaac675a6c67ba8c976 *a4c67ca5c67ba6c775a7c77bacc974a9c77aa8c681aac87fabc878a8c871a4c674a7c778aac781 *a9c67baac77ea9c87ba9c87fa7c679a7c77aa8c682aaca87abca7da9c876a7c87ba8c87caac980 *a8c77baac97ba9c97eaac97faac980aecb81aecb86aecc7aa7c882abc985aec884acc981aaca84 *adc975a9c779a9c87ca9c980a9c978a8cb7eaacb7baacb77a8c881acc985afca84adca7eaac881 *abc87aa9c87eaac97caaca79abc980adc87daac77eaac87eaac77da9c87ea9c97fabc982adca80 *acc982aac87fabc980a9c87ca7c682accb7ea8c981abcb7eaccb82aecb7fb0c87baec981aaca76 *a7c980aac87faac77cabc97aaac989acc97eaac786abc785acc97aaac97ea8c87dabcb81accb86 *adca7eaccb83aecb7eaac982adca86afcb81acc983acc985afcb82afcb82adca82adca7eabc880 *accb82adcb84aecb81adca8aadc980abcb81b0cb7eaccb80aecc8aacca7caacb84accb87b0ca85 *acc986b0cb81aeca81abc981acc982accb86aec97eaec985aecb82aeca85afca88adca82abca81 *accb83abc880acc984aeca87aeca83b0cb86aecb87aec980aeca8ab0cb83adc887acca90b2cd91 *b3cd92b3cb91b3cc8fb3ce9ab7d0a4bdd4aac0d6b1c2d5aabfd3a3bbd2aac2d4b6c7d4becddbc3 *ced9c3ceddc2ceddc4ccdbc2cddac4cedac6d0dac3cedcc4cdddc1ccdac1ccdcc3cddac3cdd9c1 *ccdcbdc9dab7c6d8b6c9d6b1c6d6aec3d6b0c3d6a8bfd3a0bacf99b7cd92b5cd9fbad1adc1d4ae *c1d3b2c5d5b5c5d5b5c5d5bac9d9c1cbddc4ceddc2ceddc2ccd9c1ccdac4cedcc4cfdcc4d0dbc4 *d0ddc7cfdbc5ceddc3ccdcc4ccdbc4cddbc4ced9c0ccdbc0ccdbbecbd7becbd8c0cbdac1cad8be *cad7bfcad8bcc9d6bfc9d8c2cddcc3ceddc6cddcc9d0dec9d2dec6d1dcc6cfdcc6d1dec6d1ddc7 *d1ddc8d1dec7d2ddc9d3decad1decad2ddc9d2decad5e0cbd4e0cbd5dfccd6decfd6e2cfd6e2cf *d8e0ced9e0cfd9e0cdd7dfced7e1ced7e2ced7e0ccd6dfccd6deccd6e0ccd7e0cad6e0c9d5deca *d4dfc9d4dfc9d2ddc8d2ddc7d1dcc3cfdebdcddac1cedcbbc9d8bbc9dabbcadab6c6d6b2c6d7a9 *c0d3a5bcd1a6bed2a2bcd2a6bfd4aac2d6b7c9d8bdcbdabbcbdabbc8d8bcc8d6c1cad8c1cad8be *cad9bdc8d7bac6d6b9c5d5b3c2d4b0c1d2b1c1d0b1c1cfabbccfacbccfacbfd1b4bfd3b6c1d2b6 *c2d4b7c4d2b3c3d1aebed1b1c0d0aebdd1acbed1aabbcdb0bcd0adbbcea7b7cba9b7c9a6b6caa7 *b4c9a2b0cba5b6cba4b1c8a4b3c9a3b4caa3b4caa8b2caa9b6cba8b8cdabb9ceaeb9ceb0bbcdad *bacbaebacdabbcceadbbd0b0bacfadbacfaebdcfaebccfaebcceadbacdaebccbafb8ccabbaceac *bbceaab7ceaeb7ccaebbceb1bcceb4bfd0b6c1d0b7c1d0b6c3d5bac3d3b9c3d3bcc6d6bbc6d4b6 *c1d5b8c3d2b6c4d1b5beceb6bed0b4bed1b2bfd2b7c0d2bcc2d5c0c9d8bdc7d6c1c7d3bec5d6bf *c8d6c0c8d5bcc6d5b7c5d6bbc5d6bcc3d2bcc5d6bac5d2bcc6d4bdc5d5bcc5d6bdc7d6bdc8d8be *c9d7c1cad8bfc9d6c1c9d5c3cbd6c3c9dac4ccd8c4cbdbc4ccdcc6cfddc7cddbc8cfdac6cedcc6 *ccdcc5ccdbc7cddbc9cfddc9d1dbcad3dec6d0ddc9d2ddc9d2dccbd2ddccd2dccbd3ddcbd3dece *d5dfced5decdd6ded0d7deced8e0d0d7e1d0d7e1d1d7e0cfd6decfd6e0cad0d1c3cccec7d2d6cb *d6dbcfd7dd6d9dba6e9ebc6b9ebd729ebd6c9ebd669bbd6a9cc075a1c16c9cbd709cbd6e9ebd72 *a0be76a5bf75a3c16d9dbe72a1c075a4c178a2be79a3be7da5bf7da4c079a5c07da4c378a6c480 *a7c777a4c37aa3c27da6c579a4c37ea7c574a3c578a1c47ba3c679a4c5729fc16ca2c275a3c173 *a4c271a1c377a2c16fa1c171a1c375a1c16b9fc16aa0c06e9ec073a2c26c9ebd6aa0c16a9ec36a *9ec36e9ec1699dbf6b9cc070a0c377a3c26ca0c16c9cbf6b9fbd6c9fc16a9cbf6ba1bf6ca0c16a *9cc1669bbf6e9fc06a9fbf6ba1c175a0c178a3c374a2c175a0c073a1c1709fc0709dc06b9cc06d *9ec1669bc1659ec0659dc0659cc16d9fc071a3c2679dbe699fc06ea0c16ca1c26a9fc2659fc164 *9ec0679dc06a9dc270a1c26c9fc3719bc2669dc15d99bf649cbf6b9ec26a9ec16fa3c16fa4c374 *a4c272a4c373a4c16b9fc1709fc375a4c36ea1c1649cc16ba1c3699ec069a2c168a3c16fa1c273 *a4c2669cc2679ac26c9dc1719dc16fa2c2669ec3679fc269a0c2699fc2669ec06da0c1689ec16d *a0c173a4c46da3c268a3c36da4c66ca2c76aa1c46c9fc36ea4c56ea2c372a4c270a4c36da3c167 *a1c36aa2c370a4c674a4c276a3c27ca4c36ea4c669a3c467a3c66ba1c373a4c372a4c173a4c470 *a4c76aa3c270a6c56ca4c370a5c76ca2c36da4c46da4c473a6c778a7c579a9c778a8c676a4c66e *a3c66ca2c471a4c673a4c378a6c375a7c771a5c66fa4c577a4c171a4c672a4c66fa5c375a5c576 *a7c478a4c475a4c372a4c37da6c681a8c76aa4c47ba9c979a9c76fa5c57da9c778a7c77ca5c776 *a5c772a7c676a6c476a5c579a7c578a8c477a8c77ba9c677a6c87ba9c872a8c676a6c57fa9c67a *a8c77ea9c677a5c678a9c77aa7c779a6c67ba8c778a8c678aac77aa9c67aa5c782aac782aac979 *a9c97eaac96fa6c682a9c87ea8c578a9c783adc987b1cc7eaecc7aa7c77ea9c76fa6c580aac67a *aac777a8c47da9c778a8c978a8c77daac87ea8c77ba9c879a9c772a6c57daac77cabc882acc97f *aaca7aa8c772a7c57aa9c677a8c57fa9c781aac876aac87ca8c777a9c883aac77ba9c67faac778 *a9c67ea8c67eaac779aac97fa8c680a8c681a9c785aac782abc681adc980aac97eaac985adc97b *aac97faac97eaac876a7c67daac680aac985acc882aec87fabc77faac775aac781aac87facc882 *aeca81adc77ea9c780abca85acc97faac97daac77aaac982adc97aaac87eaac97baac881adca7c *acc883aac87caac883adc782acca89aec984adc986aec980abc884aeca80aec983abcb7daac887 *acca84acc87eacc980acc986aec983abc97fabc87ea9c781abc882acc982acc97fabc980acc77e *acc982aecc81adc983adc881adc783acc888afc885b0c983aec980aec984aec986acc982aac88c *aec891b2cb92b2cc97b6cd90b2cc94b6d09bb5d093b4cd97b5d096b6ce96b5ce98b8cdb1c5d2ba *cbd7c3cedac3ccdbc2cddbc3cbd3c2ccd9c2ccd8c4cfdac3cedac3ceddc3ccd8c1ccd8becbd8be *cbd8b9c9d8b6c6d4b6c6d6aec3d5a9c2d4a4bcd1a3bccf9fb9d197b4ce9ab5cd9fb8d0a6bccfad *c0d1b0c1d3b4c5d6b1c3d3b0c2d5b7c6d8bdcadabfcbd9bfc9d8bfcbd9bfcadac3cddcc6cedbc4 *cedac4d0dbc5cedbc4cdddc3ccd8c6d0dac5d1dcc6cfdcc4cdd9c3ccdcc3cedbc0cbd8c0ccd8c3 *cbdac3cdddc1c9d9c0cad8c3cbd8c3cddbc3cedbc4cfdac7d3ddc9d3ddcbd3ddcad3dcc8d3dec7 *d1ddc8d2dec8d1ddc7d2ddc8d1ddcad3dec9d1ddc9d1dccbd2ddcbd3decbd3dfcdd4deccd4decd *d5decfd8e0ced8decfd8e0ced8e0ced8dfced9e2ccd8deccd4ddccd3dec8d3dec9d4ddc9d4dec7 *d3dec8d3ddc3d1dcbdccd7b6c6d8abc0d5a9c1d4a8c0d2a9c1d2a6c1d4aec3d5b0c3d6a5bccf9b *b9d095b5ce96b1cb97b3ca94b5cc91b4cc91b3cca4b9cfb2c3d5b0c5d5b3c3d3becad9beccd9bc *cbd8b9c8d8b9c8d6bdc7d7bdc8d7b9c4d4b8c5d3b7c3d3b5c1cfabbcd1aabbcdaebacca8b7ccae *bbcbadc1d0b5c3d2b6c3d3b1bdceadbccfa9baceacbccbb1bdccaebfccaabdcda6b8cca8b6cba3 *b6cba1b6cba9b6cba6b7caa6b6c8a5b4c7a7b5cba5b6c9a9b5caaab7cba9b5c9acb8ccaebbccad *bacbadbbccabb7cbacbbccafbdceb1bdd0b3bed0b1bdcfaebbceacb7caacb7ccacbbccb1baccae *bbceafbdcfafbcceaebbcbaebbcdafbdceb4bdceb7bfd1b9c4d3bec7d3bbc6d2bbc4d4bbc7d5ba *c4d1bbc2d2b7c1d3bcc1d2bdc6d1bac6d6b8c1d2b3c0d5bbc1cfbfc4d4c2c8d7c5cad5c4cbd9c5 *cad9c3cbd8c0c9d7bcc6d4bbc3d1bac3d3bcc3d3bdc5d3bdc6d5bcc7d7bac7d7bcc7d6c0c8d6bd *c7d4bfc9d6c0c9d8c1cbd4c1cad7c1cad6c3cad8c5cddbc6ccd9c7cedbc6d0dbc8cfdcc7cedac7 *cfd9c7ceddc5cbdac7ccd8c7ccd9c8d1dbc9d1dbcad2ddcad3ddc7d1ddcad3dccbd1dbccd3dbcb *d3dcccd3dccdd4ddd0d5decfd6e1d0d8e1d0d7dfcfd7dfcfd7ddced5ddced6dbc9d1d3c1cbcfc7 *d2d6ccd6dbced8dc739cbb699aba6c9ebd6d9cbc6f9cbc739ebd73a1c172a0c0709cc1729ec070 *9ebf739dbf769fbf759ec172a0be7ea4c275a3c37ea5c680a4c280a5c485a6c57aa4c17ba4c384 *a8c47fa5c57da7c67ba2c47da4c478a2c375a2c373a1c379a1c577a3c374a1c378a1c377a0c174 *9dc272a1c2719ec0719fc172a2bf72a2c56f9fc36f9ec36599c16a99bd759cbf6d9ebe729ebd6e *9dbe6e9fc1709fc1669ac36d98be6e9cc16e9ebf659abd729dbf6a9cc1659bc16a9bbf729cc16d *9bbf6a9abe6b9fbe709ec0739fc16c9cc1749ec16e9ec26999c0769cbe6d9cc0709ec2749fc06c *9bc06c9cbf669cbf649cc1699ac0729dc16b9cc16f9cc06a9cc175a0c272a0c174a3c26ba1c46e *9ec2699ac0699dc072a1c56f9dc26c9bbf709ec26c9dc16a9dc0679cc16c9dc16f9dc173a1c47b *a4c370a1c3699dc16f9fc56fa3c36d9dc1689ec1679cc16e9cbe709dbe6f9bbf6e9fc1679dc26b *9ec2679bc06d9ec26f9dc178a2c3679fc1709dc1629cc072a1c36b9fc4689dc26b9ec26a9fc269 *9cc16ca0c26aa3c170a1c26da1c3689fc56d9dc2749ec271a3c5639fc16ea0c3699fc46ca4c664 *a0c5679ec378a2c378a2c5709dc175a1c37ca4c775a4c477a4c36ba2c276a3c66ba1c271a4c66c *a4c372a3c771a3c676a2c470a5c572a2c56da3c46fa3c675a5c47aa4c471a3c57fa7c675a6c577 *a5c67ea2c675a1c378a4c679a5c778a3c47da5c680a8c579a5c576a3c470a1c76aa0c276a4c67a *a4c66fa5c679a6c67ca5c677a4c673a5c57aa6c675a4c573a5c77ba7c976a4c77da3c47ba4c576 *a4c381a7c777a5c77da6c77da7c77aa8c67aa5c47ca9c577a9c87eaac77aa6c67ba6c681a6c678 *a5c675a3c67ca5c781a7c57aa5c677a4c779a7c77ca6c676a5c47ca9c781aac97da6c781a7c67b *a5c673a7c776a8c979a6c87daac879a7c675a5c57daac97fa9c87daac77da4c682a6c77aa4c480 *a9c781aac77da7c67aa7c675a7c677a8c87ea8c77aa7c77daac97caac77ea8c87fa9c77ca8c87c *a9c781aac97aa7c77da7c776a7c47aa9c781a9c67ea8c683a8c57fa9c680a8c778a8c979a5c67c *aac87faac880a8c67daac780aac97aa7c77ea9c876a7c87da8c87eabc97da9c880aac781a9c778 *a8c67aaac980aac97ba8c881a8c77aa8c67da9c684aaca83aac986aac785acc97faac981a8c880 *aac97da9c981a9c87fa9c882aaca80a9c983adc97daac97da6c77fa9c785abca7fa9c782aac779 *a7c87eaac988adcb79a8c782a9c782a8c885abc781aac884acca86aec984acc984acca83accb81 *a9c97cabc980acc981aac97faac982aac984aac985acc981aac985abca78aac783abc97daac786 *adc980a9c785abc97faac884adca86acc87fabc980aaca81abc982aac782adc984acc985aeca84 *adcb8daecb8baeca92b2cd94b3cb8eb1cb89b1cc91b3cc8eb1cc90b0cc94b1cc96b1cba2b9ceb9 *c6d2c1ccd8c0ccdac1ccd8bcc8dac0c9d8c0cbd8c4ccd8c3ced8c3cddbc6ccdac2cbd8bfcbdbbd *c9d9bcc5d6bbc7d4b3c1d3acc1d3a6bcd1a0b6d196b4cf94b6d098b4cd98b2cb97b4cda3b8d0a3 *bcd1adc1d4b5c3d5b2c3d7b4c6d8b7c5d8bbc5d6bec8dac1cbdac3cbd8bfcad8c1c9d8bdcbd8c0 *ceddc3cddbc3ccd9c2cbd8c2cbdbc2cbdcc6cedec6ceddc6cedec5cddec5cedbc5cedbc5cddcc4 *cedbc4cddbc2ccdbbfcad8c1cbdbc1cbdcc4ccd9c6cedcc9cfddc8d1ddccd3deced5ddcdd5dfcb *d4ddcad2ddc9d1decad1dccbd3ddccd1ddcbd3ddcdd2ddcbd2decad4deccd3dfcbd3deccd2dece *d4dfd0d4dfced6dfced7dfcdd8e0cdd7e2d0d6e0ccd3e0ccd3dfcdd3ddccd2dfcbd2ddccd3ddcb *d3dec6d1ddc3cdddc1ccdbb6c5d7a0b6cf9ab2cb99b2ce90b1cc91b5d197b1ce98b5cf92b1cb98 *b4cc93b1cc92b3cb92b1cb95b4cc8eb1cb89aeca88aeca90adcb9bb5cf9cbad09eb8cfafc2d5af *c6d7a7c1d3aabcd4b4c2d5bbc9d9bdc8dabdc8d8bbc6d7bbc7d5b5c6d3b4c0cfaebbcfb0bccdb0 *bdceadb9cbafbbceafbcd0b3bdd2aebdcdb1bbd0b1bbcfaebaceb0bcd0b0bfd0b1bbcbabb6ccae *b9cbaab7ccabbcceaab9ceacb9ccaab4cba7b4caa6b4caa7b8cba7b7cca7b6cbabb8ccacb9cdaa *b6cdafb7ccaebacdb0bcceb2bdd0b0bbcdb1bdd1b0bdd3b1bcd1b0bcceaebbcdaeb8ccaebacdb2 *baceb0bbccafbaccacb8ccb0bbccb0bbceb7bbceb1bbcdb6c1d1b9c3d3bfc7d8bdc7d6bdc4d2bb *c6d3bbc3d5c1c6d2bec6d5c1c7d6bfc6d5bfc6d2bdc4d3bdc5d4bfc7d4c2c7d6c5cad8c6ccd9c7 *cddbc5cbd9c2cadabdc6d8bec5d6bcc4d2bbc3d3bcc5d2bcc4d2bfc4d3bdc6d4bfc7d5bfc8d8c0 *c9d7bec8d6c1c8d6c1c9d8c3c8d5c5ccd8c6cbd8c7ccdbc6cedcc7ceddc6cedbc7cedbc7cedac8 *ced8c7cddac5cedac8ccdbc8ccddc9cfdbcad0dccbd1dbcbd1dbcbd1ddccd1dcccd1dbc9d1ddcc *d3ddccd3decdd3ddcdd3decfd3dccfd6decfd6dfcfd6ded0d6e0d1d6e0d0d6ddd0d6ddccd0cfc3 *c9cdc9d0d4ccd3dacdd7de6f9ebd6f9fbd6ea0bd6d9dbe6c9bbb6b9dbf6b9fbe6a9ec0759ebf6f *a1c176a2c180a4c27fa4c47aa2c479a4c175a4c585a5c37fa7c56fa2c374a2c285a5c677a3c37d *a7c37aa4c67aa3c584a4c37ca5c479a6c575a0c36ea3c36e9ebf77a1c172a1c274a0c176a2c37c *a4c36e9ec16e9fc26c9fc1679dc16f9ec16b9dbf679dc16a9dc1669cc36fa1c66ca2c3689dc072 *a2c1729ebf6d9dbf719bc06a9abd659dbf639dc0609ec1649dc1709fc16a9cc26fa0c1719bc168 *9bbe69a0c272a1c1699cbf699bbd6a9dc16d9dc16999c06e9bc0739fc26f9fc36e9dc26ca0c267 *99bf6497bd6c9ec16d9cc0709fc1659ac06a9bc2689dc36b9bbe6b9abf629dc0659dbf6e9fc16a *9fc56aa0c3709ec3649cc172a0c0689fc16c9fc16ba0c36b9dc06da0c1679cbe6ea0c36b9dc172 *a4c372a3c36e9dc16f9ec3669ec46aa3c46ca0c56ba0c2689cbe6da0c1679dc26c9dc16ea1c172 *a2c26a9bc1669ec26c9dc26f9ec16fa1c26b9dc1679fc1619ac071a1c36a9fc3639dc3669cc365 *9ec16a9fc26aa1c46d9fc16aa2c2689bc06fa2c4679cc3689fc171a3c670a1c16ca4c370a1c26a *a2c36aa2c1649dc2679ec578a5c66ba2c369a0c3699dc26ba1c16fa3c66aa2c76ca2c66a9fc570 *9ec16ca0c36ba2c476a4c46fa4c370a4c36fa4c6669fc271a6c76ea2c46ca1c375a4c66ca3c36b *a2c26aa3c670a5c677a4c66ca1c26ba1c173a2c368a1c472a4c377a6c676a4c367a5c669a1c678 *a5c872a4c66ba4c66da6c467a0c56ca5c57da9c775a6c76ea3c76fa4c277a7c776a4c678a6c776 *a7c67ea6c679a5c775a8c777a4c778a6c672a6c372a7c679a8c670a7c67aa7c773a6c678a7c76f *a4c671a5c66aa1c476a4c76ea3c676a7c77fa9c672a6c679a7c877a6c776a6c670a7c671a5c776 *a5c479a6c67ba7c778a6c47ea9c56fa4c677a4c67ba4c676a4c378a4c679a9c676a6c676a4c373 *a2c676a5c778a6c77fa8c77aa8c778a7c676a6c773a6c679a9c777a6c86fa4c675a5c677a7c77a *a8c577a8c774a6c57ba8c683aac97ca8c979a8c67dabc879a7c678a4c67aa6c77da9c77cabc87b *a7c67ba9c97aa8c780aac87baac779abc876a9c876a8c779a6c77ba8c97da7c77eaac77aa5c778 *a7c77ea9c685abc87baac772a6c782a9c780abc681aac977a8c779a9c97eaac980aac87aaac77c *aac780a7c77da9c97aa8c87ba8c97da9c882abc97ba9c681aac980aac781aac784aac87fa9c880 *a9c980aac781acc77eaaca79a9c776a9c782acca81aeca84aac980aac978aac97faac885afca7f *accb81abcc76a4c780aac982aac97aaac984adc97daac97da8c77fa9c681aac983acc982aac97d *aac77da9c879aac77fabc980aac97aaac87faec980aaca84aaca7daac87eabc881aac885abca81 *aac87fa9c784adc983aeca86aac98ab0ca89afca84aeca86aeca87afcb83aecb8bb0cb89b0cb97 *b6cbb3c5d4bbcbd8bbcbdabcc9d8b7c6d7b8c8d8bdcad8c1cbd8c3cfd8c0ccd9c3ccd8c2ccd6bf *cbd9b8c9d7b8c6d7b0c4d6a9c0d496b4ce97b6cd8eb0cb8eb0cb8cb0cc8bb1cd88b0cc89b1cc91 *b2cb9cb7d0a5bed3aec1d4b4c1d5b4c3d6b6c6d7b7c7d9bfcadabfcbdbc0ccd8bfcbd7bbc9d7bc *c7d6bcc7d7bcc9d7bacadabbc9d6bbc7d6bfcad8c3cbdac4ccdbc5cdd9c4ceddc3ceddc5cedec5 *cddcc3ccd8c3cddbc2ccdbbfcbd8c0ccddc3ccdac3ceddc5cfdcc7d1dcc7d1deccd3ddccd4decc *d6deccd4dfcbd4dec9d3dec9d2ddcad2decbd3decbd3decbd2decbd3ddccd2decbd4e0cad3deca *d4ddcbd4dfccd5e0cdd6deccd6deced6deccd6deccd5e0cbd5e1cbd5e0cbd6decbd3dec6cfddc3 *cdd9c2cddac2cedbbacbdab1c6d896b7d184aeca86aec985acc98bb0cb96b3ce92b1cb8ab1cb92 *b0cc92b1cb8fb0ca90b1cc8eaecb8eb1cb95b2cb88b1cb8cb1cb8faecb88acc98cafcb8cb1cb95 *b5cb9dbad19fbbd19ebad0a7bed3aec1d5b6c6d7b4c4d5b7c7d6bcc7d6b9c7d7bbc6d4b6c3d3ac *bfd0afbbd4b1bcceaebbcfadbccdacbfd0abbbceabbbd1acbdceaebcd1afbcccaebfcbafbbcdad *bbcfadb9ccadbbccadb8ccaebdd0aabbceaab8cba8b8cca8b8cda7b5cba8b7cba8b6cda8b6cbaa *b7ccaab7ccaebaccafbbccafbbd0b1beceafbcceb1bfd0b2c0d2b3c1d0b5bed1b1bccbaebbccaa *b8ceaebcceb0beceb0bbceafbbceadb9ceadbbcfb0bcceb8bfceb6c1d0b4c1d1b8c5d5b6c0d1b6 *c3d2bcc3d4bbc5d6bec6d5bec6d6bdc7d6c0c7d6c0c9d7bfc8d6bfc9d8c0c9dac3cbd9c6cbdbc4 *ccddc6cddac3ccdbc3cbd7c1c8d6bbc3d5b6c4d4bbc4d3bbc1d2bcc6d5bcc5d6bec8d7bfc8d7c0 *c9d8bfc8d6c0c9d7c1c7d3c0cbd6c1c9d5c3ccd7c6ccdac6cedcc9d0ddc6cddac6cedcc6ceddc7 *ceddc7d1dac7cfdbc7cddbc9cddbc9cddcc5cddbc7cedcc9d0dcc7cfddc8d1dcc9d0dbcbd2ddcb *d2ddcbd3dbccd2deccd5ddccd4ddccd3ddcbd3deced6dfd0d6dfd0d7e0d0d7dfcfd6deced5ddc7 *cfd3c0c9ccc7cfd5ccd4daced7dc6e9dbe669cbd6f9fc072a1c16fa0c074a1c175a3c17ba3c27a *a7c683a5c681a4c680a4c67aa2c176a4c470a1c178a4c379a3c07ca5c57da4c371a3c580a5c486 *a6c579a3c57ea6c676a4c477a4c377a3c37da5c578a2c56ca1c26d9fc1699fc46ca0c0749fbe73 *9ebf6e9ec1719fc06a9ec26c9ec1679cc1689dbf6b9bbf659bbf6c9ec16d9cc06c9ec274a2c261 *9abe679dc16b9bc16b9bc0689dc16a9bc0679bc1669cc2619ac1689bbf649cbf6c9abe609bbe6e *9bbf729bc16c9dc0749ec06c9dc16f9dbe699dc16f9fc26a9bc1709cbf729fc26d9cc1729fc166 *9bc0619bc0679cc1699bc1699bbf6e9cc16d9dc06a9cc1699bc06b9cc1689bc06a9cc0699abf73 *9cc1679ac1729ec16f9ec1609dc16b9fc2679bc1679ac06fa1c36098c1689dc3739ec26aa3c36d *a0c374a2c573a4c66a9fc36a9cbe709ec272a3c36da2c36aa2c26c9ec26a9fc16b9fc26a9dc26a *9cc26b9cc3649ec0649ec26b9ec36b9dc56b9fc372a5c3659cbe669bc16ea0c26a9cc1689dc269 *a0c3659cc2679bc26a9ac16899bf689bc0719ec16d9dc36e9dbd6fa4c46da1c3719ec1699cc170 *a2c16ca1c36da0c370a0c26da2c36e9ec16a9bc36ba1c0699ec06c9ec36da3c66ca2c36aa2c26a *a2c36d9dc2699fc2689fc26a9ec16d9ec16ca2c3709ec17aa3c666a0c46ca2c56ea2c574a3c67a *a3c46fa2c36da0c37aa4c66ca1c46da5c66ca4c770a1c35f9dc378a3c674a2c575a4c571a3c772 *a5c477a6c671a3c673a4c66ca4c378a5c66fa3c47da6c679a4c578a6c773a4c776a5c66ca2c573 *a3c56fa2c575a4c26fa5c771a4c874a6c8659ec572a4c67ba5c67aa7c67ba7c77aa4c474a3c57b *a6c66fa5c671a5c674a6c77da5c678a6c574a4c673a5c770a5c773a5c76ba4c571a3c770a4c475 *a6c876a5c76fa3c57ba7c878a4c76fa4c56aa4c76ea3c676a4c46fa5c67ca9c677a6c579a4c57a *a8c675a7c682a9c87ba5c679a9c678a6c77fa8c87da6c785a9ca77a6c67aa9c874a6c871a5c77b *a6c77fa8c87aa7c772a5c779a6c777a6c67ba8c77faac87aa8c779a9c772a5c680a7c680a9c67f *a8c67ca8c779a8c77ba8c97ea7c781a9c970a6c678a5c674a6c77da9c875a7c97da9c978a6c97d *a6c778a7c67faac780aac782acc981abca80aac77da7c77ea8c87baac77baac787acc87ea8c574 *a7c77aa5c683aaca7fa7c97aa7c782a9c97ea8c87faac980aac881acc980acca81abcb72a5c77f *aac77aaac87daac97aaac875a8c87faac882adc984abc884abc97ea9c97ba7c878a8c786abc87e *aac97ca6c983a9ca7daaca80aac781abcb7faaca7da8c785acc778a9c878a7c780abc980a8c886 *aac977a9c97ba8c780abc97dabc97daac680a8c680a9c880a8c87fadc882abca80aacb7ea9c987 *acc981a8c87faac881aac882aac883accb7fabc779abc97eabca89afcb82acca84aac986afcc84 *acc98fb1cba2bcd3afc3d6b3c7d8b4c6d7b4c4d8b5c5d6bbc6d7bfc9d8c3cdd8bfcbd8c1ccdbbf *cad8bbc9d7b6c6d6afc3d4a5bfd495b5ce8caecb82acc98fb1cb8db0cd8bb1cc8eb0cc96b1cd8c *afcb8ab0cb94b4ce99b6d1a9bed2afc2d5b4c3d6bac6d9bec7d7bfcad9c1cbdabfcad9becad8bc *c8d8bbc6d8bbc4d6bbc6d6bbc5d6b7c3d3b9c6d7bec9d8bfcbd9c1cbddc4ccdcc4cddac3cddbc5 *cddcc5d0dcc3ceddc4ceddbccbdcbbc7dbc1cad9c2cbdbc4ccdbc4d0dec7d1dec9d2e0c8d3decb *d3decbd4deccd4dfccd5dfccd4decad4dfc9d3dfc8d2dec9d2dfc9d2deccd3decbd3ddccd3decb *d4decad4decbd3e0ccd4e0ccd5deccd6decdd8e0ccd5dec9d3decbd6e0cbd3e0cbd5e0c9d3dfc5 *cedcb8c8dab8c7d7b5c5d7afc1d59db7d184accb84aeca8eafc982adca83adca89abcb8cb0cc91 *b1cc92b1cb90b0cb93b3ce95b5cc8bafcb89b1cb8fb0cb90b3cd8fb0cb92b1cc8cabcc8eacca8b *aec888aeca95b6d098b7ce96b5ce9bb7cda2bcd3a8bfd69fb9d1a4bdd2a9c0d3abc1d6b7c6d6b9 *c7d4afbfd3afbed3afbfd3acbcd1abbbd1adbdd0aebbcfadbcd1b1bfd1aabcceacbcd0aebed1b1 *bfcdabbbceb0bbceafbbceadbdcfaebbd0aebed0aabacfabb9cdabb8ccacbacdadbbceb1b9ccad *b9ccacbbcfafbcd1b0bbd1acbacdadbcd1b2bdceb0bdcfb3bdceb3bdd2afbdd0b1bcd1adbbd0af *bbcfacbbcdb1bdd0aebcd1b0bdceaebbcdafbbcfb1bdd1b3bfd3b7c0d1bbc4d3b9c3d3bbc3d2b7 *c0d3bac2d2bdc7d4b7c5d5bac4d5bbc4d5bbc5d4bcc6d6bbc5d6bfc6d3c3c8d8c1ccdbc4cbdbc5 *ccdbc4cddbc6cddbc4cbdac2cbdac1c8d9bec5d3bcc5d4b7c2d6bac4d4bdc4d5bbc6d4bbc6d6bf *c7d5c0c8d4c1c9d7c1cad9c2c9d9c4cbdbc5cdd9c6cbdac6cddbcbcfdbc7cedbc7d0dbc6cedbc7 *cedec7d0ddc7ced8c7ced8c6ccdcc9cddbcacedcc9cedcc7d1dec9cfdec9cfddcad2ddcbd2dbcc *d2dcccd2deccd5decbd5decdd5dfcdd4e0ced6decfd5ded0d7ded0d6dfcfd6dfd0d7dfd1d7e0d0 *d6decbcfcfc3cacdc6d0d5cbd5d9cdd8dc6f9eba78a1bd7aa4c27ba5c57da5c186a5c486a9c47c *a5c381a7c67ea4c27da7c580a7c37fa7c480a7c279a3c176a2bf72a0bf79a4c480a5c27ba6c484 *a8c672a4c37ba5c47ba4c675a1c37da4c4759fc274a2c36ea1c170a2c272a1c36b9ec171a1c26b *9dc16f9fc3729fc076a0c16fa1c16ea0bf699bbd619abd5c9abe659cc3649cc1679bc26b9cc169 *a1bf639abd6b9ec16a99c26a9ac0659bc16c9dbf6b9bbb6da1c1649ebc6599bd669abd6299be61 *9abc6a9abd6799be6e9ebe71a2c36d9ec0699ac1649bc16e9bbe6a9bc16c9fc075a0c177a1c170 *9dc26b9fc2629ac1689bc06c9dbf709fc178a0c06e9fc0659cc066a0c1689fc36a9cc172a0c06b *9dbe669abf619cc36ba0c4699dc36e9fc36a9fc3679dc36a9cc06c9bc16c9ec16d9ec06e9fc26c *a0c46fa1c26a9ec37fa3c46fa0c06c9ec2659bc06da1c3709fc3699fc2689fc3669ec2689fc168 *a1c06e9fc16b9fc16c9dbf669dc1689ec26a9dc1689cc16aa0c15e9bc16b9dc16b9dc16da0c26f *a0c064a0c36ca3c266a2c36ca1c16fa4c26a9cbd70a2c16b9cbf6a9dc1689ebe6c9fc169a1c263 *9ac1709ec36ca2c36c9ec16b9cc06aa0c26aa1c16a9cc46ea1c369a0c36ca0c271a3c26ba4c36c *a4c670a5c66ca2c36da0c36a9fc16e9fc2699ec26aa0c26aa2c26ea4c470a4c669a2c572a2c66d *9ec270a3c670a5c374a5c473a7c775a5c671a4c370a4c56ea2c36ca1c26ea3c370a2c16da3c36b *a4c46fa4c774a4c576a4c77aa4c472a3c178a4c578a5c66aa0c478a8c674a4c670a5c66ea4c676 *a4c576a4c376a2c373a2c572a3c16da1c375a5c775a5c573a3c56da4c66da5c56ea2c46fa4c573 *a3c276a6c676a6c676a4c46ca3c679a4c571a5c676a6c673a4c579a5c570a4c574a5c579a6c773 *a5c577a8c67ba8c77aa7c67ca7c776a6c676a4c678a7c771aac975a8c775a6c676a8c67da6c672 *a5c576a9c67aa9c781a9c976a7c776a9c677a8c87ba9c779a8c776a5c77aa7c67ca7c77ca7c87a *a8c872a7c77daac877a7c67da8c67ca8c67ca8c776a6c675a6c778a8c77baac66ea4c377a4c574 *a7c679a7c677a6c776a6c678a7c87aa9c778aac873a8c779a9c777a8c77ea7c97ca9ca7da8c77d *aac77ea8c778a7c479a8c677a7c777a8c97aa7c781a9c682aac980a8c87aa9c781aac67babc77c *aac780a8c580aac783abca7daaca78aac87baaca81a8c87eaac77aa6c57fa8c67faac981a9c87a *aac87eaac979aac980aac97da9c982aac884aaca87abc882aac77daac87caaca76a7c77daac77c *aac780aac881abc97caaca7ca9c97babc87cacc87cabcb81abc984a8c87baac87da9c67fa9c983 *adc981adc77fa8c778a5c682abc782acca80abc87faac881a9c881abc97ea9c87fa8c882a9c87e *a9c77da8c880a9c782a9c884a9c881aac77fabc881aac877a9c880a9c882aac980aac984aaca85 *adc882acc978aac68db0cb92b4cc9dbad2aac1d2a3b9d2a5bdd1b1c2d4bac7d6bdcbdbc0cbd8bc *cad8becad8b7c6d5b5c4d7afbfd3a0b9cf8ab1cb8db1cb8baec98aadcb84adca87aeca85aec989 *b0c98db2cd8eb5cb8fb1cb97b4cda6bcd3b1c2d6b6c6d7bbc7d8becad7becbdac0ccdabfcbdcc0 *cbd8bfcbd9bfc8d5c1cbd8c4cdd9c3cbd6bbc6d4bdc9d8c0c7d8bfc9d7becbd8c2cdd9c1ccdcc1 *cedbc6d0dbc6d1ddc7cfdec6ceddc3cbd8bec7d8c1cbd9c0ccd9c1ccdcc1cedbc5d1ddc7d1decb *d2ddcad2decbd4ddc9d6dfcbd4decad4dec9d4decad4dfcad3dfc9d3dec9d6ddc7d2dec9d1ddc8 *d3ddc7d2ddc8d2dcc8d2dfcad1dfcad3ddc9d3ddcbd4decbd4dec9d4dfcbd5dfccd6decbd6e0c8 *d3dec2ccdbb1c4d6a2b8cd98b7cf8db5c98db3cc89aecb89aecb86adca8bacc991afcc8eb0cb90 *b0cb90b1cc94b3cd8eb1ca97b3cc90b1cc92b1cc93b1cb8db0ca91b1cb8eb2cc88b1c98ab0cd85 *acc987acc884aac98caec892afc88eaeca8bafca97b6ce97b4cf90b1cb93b2cb97b2cb99b6d09f *b9cdaac1d3b1c3d4aec1d4afbfd1adbbcfaab9ceadbdd0a9bcd1abbdd1b1bfd2aebdceb1bdcdb0 *bdceacbdd1b0bfcdaebbceaebdcdacbbd0b0bdd1aebcceb0baceadbbcfafbdd0aebdceafbecfae *bdcfb2bdceb2bcceb6bfceb2c1d2b0bed3b3c0d3b0bdceb4c0d0b2bdceb2bcd1b1bccfb1bcceb0 *bed0b2bfd1aebfceaebed1b1bdcfb1bdd0b1bdd0b2bdceb1bfd2b2bed1b3c1d3b8c1d4bac4d3bb *c3d5b9c2d3bcc3d3bdc6d4bbc4d3b6c3d1b6c3d3b9c4d3bdc5d1bdc4d2bdc6d6c2c9d9c1c9dac0 *c9dbc0c9d9c2cad8c2cbd8bec9d6bbc5d6bbc3d2bbc4d3bcc3d3b8c4d5b9c6d4bbc6d5bdc7d6bf *cad5c0cad6c1cad7c3cad7c1cad8c3cbdbc4ccdcc6cfdbc5cedbc6d0ddc9ceddc7cedbc7ccdbc9 *cedbc8cfdcc6ceddc7cfdcc7d0dcc7cfdcc9d0dbcbd0ddc9cfddcad3ddccd4ddccd4dbccd7decb *d4ddcbd3decdd3ddced4ddccd4decdd6deced5dfced6dfd0d7ded0d7e0d0d7decfd7e0cfd6ded2 *d7dfd0d7decacec9c2cacfc7d1d6cbd5daced7dd80a4c185a4c183a7c386aac482aac380a7c481 *a4c483a6c57ba4c57ba3c27aa4c27aa0c183a4c47ca4c07ba4c37ea4c27fa4c37ea5c67fa5c380 *a5c281a9c676a3c47aa1c175a2c174a1c376a2c278a2c278a3c176a2c272a2c278a0c073a1c370 *9dc16e9ec26b9ec06d9ec1679cc06a9cc16a9abf639cc36d9bbd5f9bbe6c9cc0669bbe6b9cc165 *99bd649bbd6b9fc0649abf6a98c06798be609bbe6999bf649abc6b9bbf649bbe6499c06498bf65 *9cc0649cbb6f9bbf729dbf6b9bbf6c9cc0749dbe72a1c3739fc2739ec0769fbf72a0c0759dbe73 *9cc17a9ec0769fc1769ec16c9dc473a0c16e9fc26a9dbf6f9ec26a9bc16f9ec26b9dc274a0c26d *9ec3729fc16a9ec16c9dc26b9cc1689abf699dc0669bc0649bc1689cc1689cc16598be709ebe75 *9fc1799ec275a1c272a3c373a3c56c9ec46a9bc16a9ec1669cc26ba0c36fa2c16aa1c268a2c46f *a2c36c9fc46f9fc16799c0689dc1609abf6a9ac0669fc36c9fc3679ec46899bc6d9cbf6a9dc16b *9cbf71a0c26e9fc2699dc270a0c36a9dc2699dc2729fc070a0bf659dbe669abf5e9bc0659cc06d *9ec16a9ec174a1bf689fc1639dc0639ac1699cc06d9fc376a1c36da0c36d9cc3679cc26a9ec26b *a1c36aa0c36da2c273a3c26fa2c271a4c46b9fc56ca3c574a3c36da0c16da2c474a3c573a1c46f *a3c46fa4c36ca1c46ea1c371a4c46d9dc06ca1c171a2c272a2c572a4c471a6c671a4c56ca3c370 *a2c570a3c178a2c16ea4c672a6c672a2c67ea5c76ca4c672a4c678a2c476a3c578a5c46ea1c175 *a4c26fa2c472a2c17da5c574a3c579a4c36da3c270a2c376a7c679a7c773a5c773a5c573a6c56c *a4c573a4c46ea4c476a6c671a2c47ba8c770a4c76ca1c570a2c572a3c37ca6c679a5c672a4c477 *a5c679a8c67ca7c872a4c66fa3c76fa4c66ca3c67aa4c779a6c678a7c77ca9c96fa5ca71a6c773 *a6c577a5c87aa7c770a4c582aac878a4c679a8c779a8c773a7c67fa8c776a5c67aa5c677a7c77f *aac87daac57facc77ea9c87ba7c77aa7c776a6c77aa6c679a5c67fa8c67faac675a7c673a4c67c *a7c677a6c580a6c67aa6c77da8c675a7c684a8c67fa8c778a7c673a7c876a6c76fa5c573a8c877 *a8c676a7c682aac97aa9c77da7c580a8c97faac87baac982aac77ba8c682aac981a7c77faac77b *aac77eaac877a6c57fa9c779a8c782abc87fa9c77fabc87ea9c77fa8c77ba8c779a7c879a8c97f *a8ca7fa7c781a9c680aac77da9c77caac97daaca7daac980aac880a9c983abc881aac882aac87a *aac77fabc97ba8c67caacb80aac980aac784aac886aec880abc97ea9c77ca7c975a6c87ea9c884 *abc77daac681acc980abc780abca80a9c97eaac77faac97fa8c77fa8c784a9c786adc982acc885 *abca77a6c77faac77fa9c883a8c780a9c780aac781a9c786acc97ba8c980a8c884aac882aac787 *aac97fabc784acc883afca83adcb89b0cd89adcb91afc98db1c99ab6cea5bdd1afc2d3b6c6d8bb *c9d8bac8d9bec9d8b8c8d8b1c3d4a0b9cf97b6cd93b1ce8fafc987abcb82accb81abc887aec988 *afc986abc983aecb82abc885aecc95b5cfacbfd2b3c4d5bbc8d7b9c7d7bac7d6becbd8c1ccdbc1 *cddcc1ccdcc1ccdac1cddac4cdd9c6cedac5cedcc5cedbc7cedcc4cedbc1cbddc1cbd7c1cad9c1 *ccdbc3ccd8c4cfdbc7d1ddcad2dec8d1ddc6cfddc2ccdbc1cbdbbbcad8bec9dbc2cbd8c1ccdbc1 *cedbc5d1dec8d3ddcbd3dec9d2ddc9d2ddc8d2ddc9d2decad2decbd2e0cbd3dfcad3ddc7d1ddc5 *cfddc5cfddc1ccdcbfccdac2ccdbc4d0dec4cfddc3cfdbc6d1ddc6d1ddc6d2dec7d3e0cbd3dfcb *d5dfc8d2dfbecdddadc3d596b4cc91b1c982acc889abc987accb84aeca87accb87abc986aec993 *b2cc8eb3cc94b4cd94b3ce8fb1cc91aecb93b2ce96b2ca92b2cb94b4cc8cb0cb87acc986b0cb8a *aecb8aaecb85abca8dafc98cb1ca8aaec98faecb8eaec891aeca95b0ca95b1cc91b1cb93b3c992 *b1cc96b2ca95b4cb9fb7cea9bbd2acbdd3adbcd2adbbd1a9bbcda7bbcfaebbd0aebbceaebcceb6 *c1d1b6c1ceafbfd1afbfd3b3c0d1b1bdceaebfd1b0bfd0b1c0ceb4bdd2b4bed1aebed2acbdd1ae *bdd0b2bdd2b1bcd0b2bdcfb9c1d1b5c1d3b5c2d1b3c1d2b4c0d0b3becdb2bccdb5bfd3b5bed0b6 *bdd0b4bed1b4bfceb1bfcfb1c0d1b3bed4b4bdd0b3bdd1b2bed0b3bcd0b5bed1b9c0d1bbc1d4bb *c4d3bfc5d4bac6d6bdc6d6c0c6d6c0c6d4bbc2d2bbc4d1b8c3d1bac3d4bac3d0bec6d6bac5d5bb *c6d8bec7d5c1c6d8bfc7d6bbc8d6bac4d3b3bed3b4bfd2b4bed2b9c2d1bcc4d3bbc6d4bcc7d5bd *c7d5c0c9d7c2c9d7c2c9d8c5cad8c5cbdac7ccdac8cedbc8d2dcc8d0ddc6cedcc9ceddc6cddcc6 *ccdcc7cddac8cfdbc6cfdbc8d0dac9cedbc9cfdccad0dbc9cedaccd3ddccd5dcccd5ddcdd4dfcb *d6deccd3deced6deced4ddced4ddccd5ddced7ded0d6dfcfd7dfced7dfcfd7dfd0d6dfd0d6ded1 *d7dfd1d7dfd1d7decccecbc4cdcfc9d1d8ccd5dbced7dc8aaabf81a6c17ca6c17da4c17aa5c47e *a4c47ba3c37aa2c27da5c27da3c17ba4c37ea4c37ba4c17da6c479a4c57ca5c58aa8c67ba4c176 *a5c17aa4c17ba4c1779ebd76a1c179a2c16e9fc36d9fbf75a2c2749fbe6f9ebf729fbf74a1c277 *a1c16ba0c2679cc0689bbf6799bd659cbd6a9bbe6b9fc0669cbf6c9cbe6599bd6c9cc06a9cbf6b *9bbe6a9ac0699abd6795bb649bc0649abd609ac0679abd659ac0679abb6197bc6098be609abd6b *99be6c99bd659cc06799be719cc0729fbd6ea0c170a1c1649abb6c9cc26c9cc2719dbf769fbf78 *9ebf7ca2c082a6c17fa4c280a1c27ca2c3739fc06b9cc06b9cbf6f9fc16c9dbf699dbf689fc26a *9dc3689bc26e9dc16e9ec06fa1c36a9dc25e98bd689bc16a99c16e9ac0669ac06f9dc36e9cc076 *9ebd699dc1689ec26c9ec0649bc06e9ec36c9dc36ea1c16d9cbf689dc16d9ec16a9fc3739dbf6f *9cbf6f9dc06d9cc16c9cc1719fc1659dc36c9bbd6b9bc0649bc0659ac06a9cc16d9fc16b9fc269 *9ec16a9cc0659ac0699bc1699dbe6aa1c16ea1c26fa4c3699dc06da1c26b9cbd6b9dbf6299bd65 *99bc5c99be68a0c16ea2c36b9cc06fa2c06ca0c06399bd699ebf6a9fbe609dc267a0c26c9fc365 *9dc26099be6fa1c36ba1c36aa1c56fa0c367a1c36ea3c36a9cc3719fc16da2c36fa0c06ba0c26e *a2c26ba3c46ea3c574a2c676a2c46ea1c168a2c171a4c669a1c170a3c173a4c471a3c679a8c575 *a2c370a2c276a4c372a3c16ba6c675a4c672a3c673a3c575a4c685a6c676a4c17aa3c175a3c679 *a6c573a2c171a2c275a4c373a3c675a3c576a4c57ca5c577a6c36ca3c26ba3c377a3c479a8c672 *a4c372a4c570a4c475a4c575a6c672a4c575a5c56ea4c677a3c678a3c56ca2c46ea1c26fa4c474 *a4c476a5c373a7c56ea5c678a6c678a6c674a5c771a1c36ea3c36fa5c476a4c376a6c675a4c679 *a6c67ea8c878a5c476a8c77da8c67ba6c574a7c777a8c775a8c779a6c776a7c879a5c678a4c279 *a7c77ea9c681a9c77fa9c77aa8c679a4c77aa8c67aa6c66ea7c678a6c67ca6c47aa9c67ba9c679 *a5c67aa5c57aa6c67aa5c676a6c679a7c67ba5c679a8c682aac779a9c877a7c775a5c675a8c86f *a4c880a9c67eaac77aa7c777a7c679a9c779a7c77da9c675a5c77ba9c77da7c581abc781aac880 *acc77ba9c87da8c874a5c779a7c77daac87faac87fabc87fabc97fabc87aa8c77fa8c77ca7c67d *a9c876a6c67ea9c77ca9c781abc782a9c77fa8c979a9c77ea6c67aa8c67daac77dabc77eaac97f *aaca7aa9ca82a9c880aac980a9c875a7c77aa8c784abc97baac87eaaca85aac881aac981a9c781 *a8c67faac67baac781aac97daac781aac781aac782aac97ea9c881acc87faac780aac77eabc77b *aac881aac980aac87ca7c879a8c67aa7c684a9c682a9c683aac77faac583acc980a8c97fa9c881 *aac884aac97da9c881abc785aec987adc889afc98cadcb90adc991b1ca98b5ce99b6cca3bcd0b3 *c6d4b6c6d8b5c6d6b8c6d8b3c5d5aec1d4a8bccf96b4cc95b1cb88b1ce8baeca84adcb80a8c881 *a9c77ea9c787aac780aac880aac889acc891b2cca7bcd3b6c4d7bdc7d6bbc7d6bbc7d5bec9d9bf *cbd7becbdbbfcbdac0cadbc0ccd9c5ced8c6cedbc4cedcc6cddac6d1dbc6d0dcc6cfddc3ceddc1 *cbd8c0c9d7c2cbd8c2cedbc4cedbc7d1dec9d2dec5ceddc1ccd8c0c9d8b8c7d6b7c7d8bbc9dbbd *cadabbcbd8bdcbdbc4ceddc6d1ddc2cfdcc3cedac5cfdac5d0dcc9d1ddc8d1ddcbd1dfc9d1ddc6 *d0ddc4cfdabeccdbb7c9d8abc0d5a9bfd4a8c1d5adc4d7bacad9bfccdbbecddac3cfdec2cdddc2 *ced9c3d1ddc3d0ddb1c7d89fbad38fb0cb82abc886adc982abc784aac88aadc88badc986aacc86 *afcc91b0cb86adcb85aeca8ab1ca8ab1cb90b0c88fb1cc97b2cd97b2ce94b2ca8cb0c987aecb85 *adc887adc98baeca91afca91afca85adc88bacc788adc98eb0c995b1ca94b2cb92b2cb96b6ce93 *b3cb92aecb93aeca98b1c996b2cb9eb6cda4b7cdacbcd1afc0ceafc0d1aab9cca8bacdadbcceae *bdceb1c3d1aec1ceafc1d1b1c1d2afbdd2b1bdccb1c1d0b1becfaebdd1b1bbcfb0bdd0b0bdcfb3 *c1d0b4bed3aebcceb1bdd0b2bdcfb3becfb4c2d1b8c1d1b7c3d4b7c3d3b7c1d2b3becfb4bdd2b5 *c0d3b6c0d0b7c1ceb4beceb7beceb6bfceb9bed1b7c1d1b4bdd0b6bfd1b5c1cfb4c0d1b9c0d2ba *c5d4bdc6d6bfc8d6bdc7d5bfc6d5c1c8d6c0c9d6bec7d3bcc6d1b9c4d3bdc3d2bbc3d3bdc5d6ba *c5d1bbc2d3b8c5d4bac2d3bbc2d3b7c1d3b5bed0b4bfd1b1bdcfb7c0cfb6c1ceb8c5d3b8c4d6bc *c6d3bdc7d3c0c8d5c2c7d7c3cad9c2ccd9c4ccdac6ccdbc9cedbc8d2dbcad1dbc8cfdcc9cfdbc6 *cddbc5cddbc6ccdcc6cedbc8d1ddc8cfd3cbceddcbcedcc9d0d9cbd1dcccd3deccd4deccd4ddce *d3ddced6ddcfd5deced5dfccd3ddced4deced5ddccd6ddced7ded1d7ddd0d7dfd1d7deced7dfce *d7dfd0d5e0cfd6ded0d6ddc9cdcdc4cdcfc9d3d7ced4dccfd7dd89a5bd80a2bf7ea2bd7ca2c075 *9fc072a2c070a1c17da0c17b9ebd84a6c474a2c07ba1c180a4c07ca3c27aa4c17ea4c381a4c285 *a3c16e9dbd6fa0c1739fbd78a3c175a1c276a3c377a3c671a1c1739fc16f9ebe6c9cbe6f9fbf71 *a0c171a0c26e9ec0709dbf719dbe6d9bbd699bbc6698bb5b95bb6193ba6997bd5b94bc5e98bc62 *9abb5d98bb588fbb6497bb5e98bc6097bc6198bf6398bd679abd6096b9699cbd5697bb5391b964 *97bd6d97bb6998c06b9bbd6998bd6899bc6799c0669cbf6299bc679cbf709abf779ec07ba0c17f *a1c17ca2be779fbf7a9cc07b9fc1819fc2779ec2719dbf7ea1c16a9ec06298bd5a96bd6694bb63 *9abd6398bd679abd699abd6a9abc699cc06498be6a99bf6b9abf6a9cc06d9cc26b9dc0689ec36f *9ec4719dc06c9cc16a9bbf729fc1699ac0679abf6299be6296bd6f9abe6d9dc06498c06f9bbf6f *9cc0679cc06c9dbf6ea0c06a9ebf6a9ec1689abe699abf649abe659bc1669ac1679bc0679cc069 *9dc0699bc0689dc1639ac16397bf5e9abd619abe699dc272a1c1689bc0699dc1659bc15898bd5d *97be6c98bf6998c0629bbd6c9ebe679abe5f98be5d98bf6798c0649cc16299bd689bbf6e9cbf65 *9cc16a9bc1709fc1689ec2699cc26a9dc16c9bc06c9cbf6b9ec16ca0bf6ba1c16f9fc16a9ec26c *a0c16ba1c16c9dbe679ec26ca3c272a4c470a2c26ca0c36c9ec16d9ec072a1c16da3c26fa3c36d *a0c573a1c378a5c673a1c4729fc16ca0c276a4c56ca0c172a1c072a2c176a3c273a2c36da0c278 *a1c375a1c46fa2c36fa2c176a4c26da1c36ea0c478a3c6679bbf6f9fc16fa2c36da2c3689dc473 *a0c372a3c573a3c16ea2c570a3c36fa2c472a4c374a4c470a4c56da2c379a3c478a4c577a3c36e *a4c377a4c569a0c2739fc166a2c76da2c373a5c571a6c771a4c775a2c66fa4c36da1c36ca2c475 *a3c676a6c873a4c475a5c779a5c579a4c276a3c475a3c277a4c475a4c36ea4c36aa4c675a4c776 *a4c47ca5c380a6c37aa7c471a1c376a3c570a2c671a4c475a4c577a5c472a4c57ca4c373a4c279 *a7c574a4c471a5c679a6c5639dc477a4c274a5c479a8c37aa6c66ca4c47ba8c778a6c76ca3c578 *a7c875a4c578a5c26da4c179a7c676a4c67aa5c67da7c67ba7c779a4c57ba7c67ca9c679a5c677 *a5c77ba7c679a5c67ea8c77aa6c781aac67ba7c67aa8c679a8c779a8c77ba8c87da7c87aa5c77d *a7c57aa6c67ca8c67ca8c779a5c67da8c67da7c67faaca7da9c97ba8c67aa6c678a7c77ea8c579 *a4c677a6c783abc87aa5c77ca6c77ea9c576a7c782a6c77da6c67ea8c77ea9c77caac97ba8c881 *aac779a4c573a7c477a7c57ba7c680a9c77da8c973a9c777a6c77da6c67ba7c477a5c479a8c67b *a9c678a8c77ba8c774a7c77ba6c97ca5c67ea5c576a4c577a6c67fa9c675a6c67ca7c780a9c87d *a8c77fa9c77da9c87eaac67daac576a8c680a9c783a9c57da8c78dabc88daec98cafc992b5cb92 *b1cba0b7cea1bbd3a2bad1a7bed3a6bdd2a8bdd1a3b9ce8daec985a8c881a9c77da9c781abc882 *a9c782aac882abc781a9c97aa9c783aac987a9c888abc8a0b7ceb6c6d5bbc9d6bbc6d7bac7d7ba *c9d9bdc9d7bfc9d7bec9d7bfcad8c2cddbc3cedbc3cdd9c1cddcc4ccdbc5cedcc6cedac6cedbc3 *ceddbfcbd8bcc9d7bfcad8c1cbdac6cddbc7d0dbc8d1ddc3d1dbc3cedbbac9d7b5c3d5a8bed3ac *c1d6b1c1d3b1c3d5b0c3d3b4c5d6b6c7d7bbc9d8becad8c1ccdbc3ccd9c5cedbc6ced9c6d0ddc7 *d1ddc5cdd9bbc9d8b4c5d6abbed298b4cd99b2ce93b2cd90afcba5bbd0b5c6d6b9c7d7bcc9d8ba *c9d9afc3d4b1c2d4b2c4d5a6bfd191aeca87abc985a9c982a9c783aac980a9c784aac77caacb85 *abc98ab0cb86afc986adc885adc98dadca89adca85abc98eafcb8db1cb8cafc98eb0c98aaecb82 *aac780aac789acca87adca8dadc990aec991b0c888abc886aaca88adc991afc997b0cb91b1ca95 *b2cb91b3cc92afcb90b1c996b1cc96aecb92afcb97b0c999b3cba7bdcfacc0d2a9bbcda9b7cead *bccfadbacbaebaceb0becdaebed0b4c1d3b6c1d1b3bdd1b4c1d2b3bdd0b0bdd0b0bccfb1bccdb2 *bdcfb1c1d3b2c0d2b1bdd0b4bdceb3bdd0b3bcceb6c1cfb6c0cfb3c1d3b4c1d3b8c2d2b8c1d1b6 *bed1b5c2d1b8c2d2b6c1d0b8c2d0bac2d0b9c4d1bbc5d1b9c3d6b9c3d4b8bfd2b8c3d3b9bfd1b8 *c3d2bcc3d3c0c6d6c1c7d6bfc6d6bcc6d8bdc7d6bfc8d6c1c7d7bdc6d5bbc3d1bdc6d5bdc6d7bd *c4d3b7c2d1b6c0ceb9c2d0b4bfd1b6bfd1b8c0d2b2bdd2b3beceb1bdcfb5c0d1b7c0d0b6c1d3bb *c3d3b8c3d3b9c6d5bbc9d8bdc7d8bfc7d8c2c9d9c2cbd7c4ccd7c4cad8c7ced9c6cddac5cdd9c5 *ccdcc3cbd9c5ccd9c3ccd9c6cdd9c6ccdac7cedcc9d0dccbcedecbceddcbd0dbccd3dbccd3dace *d3dcccd3ddccd5ddccd5ddccd4e0ced4decdd5ddcdd3dccdd6ddced4ddced5decfd5ded0d6dfd0 *d7e0ced6ded0d6decfd6decfd5ddc7caccc4cbcfc7d0d7ccd5dbcfd8de85a4c07da4c07ea0bc77 *a3c0729fbd74a0bd85a3c07ba3be74a2bf75a1c378a3c17fa5c370a2c176a2c177a4bf76a2c076 *a0bf79a2c0709ebd72a2c073a4c276a2bd709ebe77a0c173a0c170a1c26a9dbf6d9cc06b9cbf69 *9bbd6a9cbe5d99bc689bbc6b9dbc6198bc6698bc6599bb669cbc6099bc6297bb699abd5c96bc5d *98ba5c98bc5f99be5c96bb5f99bb5e99bc5f99bb6097bb5995bb5c97bd6497bb5d97bc6398ba60 *97bc649abd6297bb699bbd5c99bf629bbd5e9bbe6599bb699abc6a9cbd6d9dbf75a1c172a1c27f *a0c17f9fc179a0bf7fa3c182a4c17aa2c07ea1c0749dc26c9cbe709bbd5d98bd6c9cbe6c9cbe6a *9ebe639cc0679abd6798bd5f98bd5496bd659abd649ac0689cbf6a9dbe6e9fc16a9bc171a0c16c *9cbe6998bf6d9ec16d9cbd649abf699fc06a9bc06c99bd6999be6699bd679abd6b9ebe719fc36e *9ebf709ebe6e9bc1689bbe6499be669abf5d98bd619bbd5b9abf669dc0679bc06298bd6999c165 *9bbf649cbf609cbf649cbe6e9ec0649dbf679bbc679abc629bbe649bbe6598be5f99bd6098bc62 *9abd649cbc6b9cbd6999bb6ca0bf709ec15d97bf6596bf70a2c26c9fc26c9dbf689dbe6a9fbe6a *9ec1659bc0689ec2669ec06ca0c06ba2c1699dc1699cc1689dc1649abe619cc16a9fc26ba1c16e *a1c268a2c264a0c169a0bf6f9fc06a9ec16aa0c1659ec16b9fc26ba2c274a4c477a1c06a9fc169 *a1c16fa1c16f9ebf6da3c172a4c16da4c46ba2c56b9dc06c9cc16c9dc06d9dc172a2c073a4c175 *a2c16ba1c16da1c3659ec06e9fc175a4c16fa3c16da0c17aa6c66ea0c373a3c36ea3c3669dc068 *9fc171a1c06fa2c16ea2c26ca3c56da2c470a4c66fa2c46ca2c167a3c268a2c272a3c56fa1c46f *a3c375a6c6689fc16fa3c276a5c370a4c16fa2c371a4c676a5c671a4c672a4c77ba5c476a3c371 *a4c274a5c672a3c56da3c369a2c276a4c578a5c46aa2c26fa3c178a4c370a2c16da3c172a2c676 *a4c674a3c47ba5c282aac573a5c46ea5c46ea3c370a4c476a4c278a5c373a3c570a6c674a6c573 *a4c56ea4c276a3c46ea3c475a3c47aa4c57ba5c56aa2c378a6c575a6c573a5c372a5c577a4c477 *a7c66ea5c675a6c777a4c375a4c179a5c47da7c475a4c670a3c575a4c378a6c56da4c67ca6c67e *a8c679a5c67ba7c677a7c579a5c57ea8c77ba7c77aa6c77ca9c67ba8c677a7c577a7c677a4c679 *a6c67aa8c876a4c684aac880a9c67ea9c77daac77faac876a8c87aa9c980a8c980a7c780a8c96f *a5c471a5c57aa7c67fabc875a6c981a9c67da9c980a7c87aa5c77aa8c67ba7c878a8c778a8c57d *aac777a7c678a6c682a9c77faac774a7c574a6c478a5c67eaac779a7c57fa8c679a6c675a5c676 *a6c67ba8c678a8c571a4c477a5c679a5c577a4c676a4c777a5c579a6c577a6c67ea7c684a9c67c *a7c577a7c677a8c784a7c985aac874a7c473a9c775a9c682adc781aac780aac787adc88bacc793 *b1c986aec890b0c990afcb8bafcb82acc889aecb85aecc8bb0cd8baeca82aac778a8c67da8c67e *aac784a9c77aa6c683abc785aac67faac680abc77ba7c78aacc99db7cda9bfd3b2c4d4b9c5d6bc *c9d7bccad8bfcbd8becad7bfc9d6bdc8d8bcc9d8c1cbdac0cbd8bfccd9bacbd8bbcad7bdccdbbd *ccdcc1ccd8bbc8d8b7c6d8bbc8d8c2ccdbc4d0dbc6cfdbc7d1ddc7ceddc3cddbc1cbdab6c5d5ad *c1d5a4bcd0a7bdd19eb6cea4bacfa9c0d4a8bed2adc1d4b8c7d6bbcbd8bfcbd8c0cddac5ccdac7 *cfdbc6d0dbc1ccdab7c6d6adc1d3a8bdd0a3b9cea6bbcf93b2cc8fb0cb9bb8cdb1c1d3b6c6d6b2 *c7d6aac3d6a4bdd19ab6d1a2b9d09eb6ce8fb1cb8bb1cb8aadc981aac677a9c781abc985aac981 *a9c97eaac77facc885adcb85aaca7faaca86afcb85acc989aeca86abc88daec991afca91afcb8a *aecb87acca8aacc88aacc88aaec988aec996b1c88daac887acc789aec98cafca9bb5cc98b1cb94 *b1cb93b2cb98b4cc95b1cb95b1cb92aeca9bb2cb97b4ca96b1c985acc895b0cb9db4cca0baceaa *bdd1adbbcea6bad0acbbccaebcceafbdceafbfd1b2c1d1b6c2d1b7c3d3bac6d3bdc7d6bac3d3b8 *c1d1b6c2d1b6c3d0b6c4d2b7c2d1b7c2d4b6c1d2b9c4d3bac5d2b8c1d1b8c3d3bac4d3bbc3d2b7 *c4d2b9c3d5bbc3d2bec6d5bbc4d3b9c4d1bbc6d2bbc6d3bbc6d5bcc4d4bec7d8bdc7d6bdc7d4b9 *c2d1bac5d6bbc5d6bec7d8bdc7d4bfc8d6bfc7d8c1c8d7c3c9d8c1c9d1bdc9d6bfc8d3bdc7d6bc *c7d6bdc6d6b6c3d1b7c0d1b6bfcfb6bdd0b3bdd1b3bdd1b1bed1b4bed0b6c0d0b6c1d2b6c1d1b8 *bfcfb6c0d0b9c3d1bbc5d4bdc6d6bfc6d6bec5d6bfcad6c1c8d6c1cad5c2cbd8c2cdd8c5ccd8c3 *ccd8c3cbd9c3ccdbc7cbd8c6cbd8c5cddbc6cfdac8cddac9d2dcc9d0dbcbd3dccbd1ddced3ddce *d5deccd4dcced3deccd7dbccd6ddcdd6deced5ddced7deced4deced6ddcfd7deced5deced6dece *d6dfced6ddcfd7dfcfd6dfd1d6e0cdd5dcc3c9c9c3cbcfc8d2d5cbd7dbcdd9de7fa4c17ca0bd80 *a7c17aa5c17ba3c27ca3c17ea3c07da0bd709fbd73a0c2769fbf80a5c47ba2c482a4c47aa4c076 *a3be769fc175a1c278a2c175a2be72a1bd709fc1739fc06fa0c16d9dbe6f9dbc6d9dbc6e9ebf71 *9dbf699cbd719dc06a99bd659bbd6697bc6396bd6999bd679abb6295b96299be5597bf5a91bb58 *94bb5a94ba6396ba6198bb5896bd6f9bbd6099be699bbf6399bd5794bb6097ba5c97ba5f95bb5b *98be6096c06996be6091bb5b93ba659bbe6299bd699dbf5393b96a99bd689cc26f9dc27fa1c270 *9fc07aa1bf7da4c17aa2c178a0c0749fc0739dc2779bc06d99be699bbc6d9dbe639bbe6c9ec167 *9ac0669ac06999be669abe669bbe6199bd669bbd639cbe659ac0709dc06c9cc1759cc36e9cc06c *9dbf73a0c0659dbf6f9cc0709bc06c9ac073a1c36599c06a9bc3679ac1689abd689dc06699bf6d *9dc17ba2c374a2c475a4c3679ebf649abd699dc1639ac06197bd669abf659bbe6499bf6099c166 *9dc06a9cc0689bbf649bbc639bbf699cbe6e9dc06c9ac0659ac0689dc0669bc1699dbe6b9bbd70 *a1c0699fc1649cc1639cbf64a1c26299be699cc06a9dbf6697bd679abf699bc170a0c36fa0bf62 *9dc2619ac1629ac0739fc1659dc06aa1c3669bc06e9ec16a9fc16ba2c2619cc0699dc16aa0c26c *9fbf669bbf6ea1c06da1c170a1c16da3c46e9ec171a2c16d9ec06ca1c3679cc374a1c172a0c26c *9fc374a2c36da2c169a3c66da3c575a5c36ea3c26fa4c570a5c672a3c570a4c372a2c477a2c26c *a1c376a4c577a3c56c9ec4699fc1679bbf699ebe73a2c46aa1c174a4c56fa0bf74a4c377a3c56a *a2c66aa4c36fa3c46ea2c16fa4c36da2c46aa1c374a3c16ea2c46ca4c46ea4c56fa3c473a2c477 *a1c26f9ec174a3c271a0c371a3c678a4c87aa5c370a4c175a4c36fa3c56ea3c571a4c579a8c776 *a4c66ca3c670a4c378a4c473a2c172a4c676a3c370a4c373a4c378a4c66fa4c579a4c56ca3c36d *a1c274a4c37aa5c372a4c476a3c272a3c26ea3c475a7c676a5c476a6c475a6c470a4c677a6c472 *a5c56fa4c571a4c375a4c471a3c46ea2c279a4c677a5c676a4c575a7c57ea8c675a5c473a4c372 *a3c57aa9c77da7c773a4c474a6c476a7c67aa8c77ea6c774a5c679a5c777a3c67da4c677a6c672 *a6c37aa9c780a8c680a8c67aa5c676a4c475a4c47fa6c57ca9c577a7c77ba6c67aa7c77ca6c87d *a7c77da6c575a4c573a5c681abc974a9c77baac77ca7c880aac680a9c87fa9c779a7c77ca5c67d *a7c682a7c77ea7c87ca8c879a7c67ba6c676a7c776a5c779aac97ca8c976a7c77daac87ba9c978 *a7c781aac779a9c77da9c776a5c777a8c77ba5c679a5c57da5c77ba6c67aa6c679a7c677a5c67e *a8c779a5c674a5c776a6c678a5c675a6c677a8c77ca8c775a7c774a5c67da6c673a5c77aa4c77f *a7c682a7c681a9c780a9c783a8c87ba7c67daac87faac883abc77daac779aac77eaac682abc886 *aac986aac992afcb8cb1ca85accb7ba8c882acc782aac885adc984acc980aac87ca8c67eaac87b *a8c875a6c781a8c682a9c783aac77fa8c687aac884aac786adc986abc887aec992b1ca97b7d0a9 *bed3b2c4d5b9c7d6bcc9d9becadbbbc8d8b7c7d8bac8d7b9c8d6b5c7d6b8c9d8b1c1d7aabed5b1 *c3d7bbc8d7b7c7d6b0c4d5aac1d3b8c7d7c2cddbc6ceddc6d1ddc6d1dcc6d0dcc3ccdbc0cadab7 *c7d8adc1d5a8bad29cb7d1a3bad198b4cd9bb4cf9eb9d1a0bbd2abc0d5b1c5d6b5c6d7bfc9d8c4 *cfddc4cfdbc3cedcc1cddabac7d8b2c3d6b0c2d4afc2d3a3bbd193b2cb8cafcb91b2cda0b8d199 *b8cf9fb6cf9ab6ce95b6cf95b2cc94b1cd85adcb85abc986abc980aac786aac885a8c788a8c986 *abc984abcb85abc982aac985aac985adc984adca85afcc8bafc989aecb85acc886acc890b1cb88 *afcb8aadca89aac885aeca88adca87adcb8eb0cb94afc78badc885acc793b0c997b1cb9ab5cea4 *b7d09eb5cb99b2ca99b0cb99b1cb97b3ca95b2cb92b3cb8eafc990b1ca97b1cc96b1c990b1cb99 *b4caa9bdd1afbed1abbad0adbbccaabfceaebbceaebecfb3c1d2b6c3d1b8c4d4bbc8d4bdc9d6be *c8d7bdc6d7bcc6d6b9c5d4b8c4d3b8c3d5b6c3d4b9c3d2bac5d6bac6d5bdc5d5b8c3d4bbc4d4bb *c6d3bcc6d2bdc6d5bdc6d3c0c8d5bfc6d6c0c7d6bdc6d4bdc7d4bdc7d6bec7d5c0c6d6bec7d7bd *c9d8bdc9d7bdc6d8bdc7d6bcc7d8bec7d6bec5d6c0c8d7c3cbd8c3c9d8c3ccd7c1c8d6bfc8d8be *c7d7bdc6d8b9c3d6b7c1d4b3c0d1b2bed1b7c1d3b7c0d1b6c1d3b5bfd1b5c0d0b6c1d0b5c1d3b8 *c1d2bcc2d3bbc3d4bac4d3bdc5d4bdc8d6bfc9d7c0c6d8c1c8d8c2c8d9c4cad8c3ccd8c5cddac4 *cadbc3cbd8c3cbdac3ccdbc5ccd8c5cddac7cedac7d0dccbd1dbccd2decbd2decbd1dccbd0dccc *d3ddccd4ddced6ddced3deced6ddced3decfd6e0ced5dfced5deced7ded0d7decfd8deced5dfce *d5dfced5dfced5decfd5dfced6dfcdd6decdd7ddc4c7c8c4cbd0c8cfd7ccd6dcd0d8de81a4c078 *a0be7ba1bd81a2c075a0bf72a2c373a1c176a2c2799fbd78a1c179a1c17ca0c179a1c27ea2c575 *a2bf76a3c372a0c0719fc26f9ebf70a3c2739dc06f9ec0769fc3659fc06f9fc071a2c2689ebd6f *9cbf699dbf6998bb6798bc629abe649bbc689bbd639abd5b95bb6399bd639abf6099bd6298bd5f *96bc5f94bb6493bb6399bc5790bb6698bd6a9ac16999bc6998bd5f99bd5a98be5c95bb5894bb5f *95be6197c05c9abd6098be6796bb6799be679dbc6099c0629ac16298bd6c9ec06c9bc076a0c081 *9fc077a1c177a1c481a3c3709cc1709fc16b99be6e98be6c9dbf689ac06b9dc0679bbf689cc167 *9ac16e9abf6a9bc06799bf5e96bc619bbe609cc16599be6e9bc16d9dc06899c16ea0c1709dbf73 *9cbd709ec06fa0be6b9cc17199bd6a9abc6c9ac16b99c1669bc15f98c1659ac2699dc06598be6b *9cbd73a0c272a4c26c9ec16a9cc1709bbf699ec2679dc06699c16497bc709dbf609bc05f98be5e *9ac1629bc16498bf6799bf669cbf649bbf6099c1689ac06a9cbf689dc16a9ec35f9bbf659abd6a *9cbf6b99c06099c0669cc0679ec1699ac06e9cc2639cc1609cc1629ac1699bc1659cc1669bc16d *9ec26b9ec264a1c3659fc3689fc3649ac2689dbf76a2c36a9fc16c9bc2659dc26ca0c36c9ec163 *9cc0659cbf689fc16c9cc0659dc170a2c26ca2c66da0c374a4c56ea1c26b9dc2669cc1699dc16e *a1c26aa0c36fa0c16aa2c66ca3c36a9dc16a9ec16ba1c16ca1c26ca0c365a0c675a2c46b9dc170 *a0c36c9fc171a5c66c9fc36a9cc36fa4c667a1c46e9dba6fa1c170a0c271a0c36fa3c270a4c377 *a3c373a1c272a3c570a2c475a4c56ea1c070a2c46ea2c16ea2c26fa2c56f9fc36ea4c770a1c46e *a2c471a2c46ba2c473a2c370a0c469a0c370a4c47ba7c768a3c470a4c26fa3c169a3c66fa3c375 *a2c476a3c37aa6c574a5c677a5c675a4c66ea2c479a5c777a3c67da4c66fa0c275a4c579a6c66b *a4c36ca6c568a3c573a3c37aa7c677a5c475a5c477a6c56da4c578a6c671a3c47ba6c673a3c36f *a2c476a4c571a4c374a5c673a5c571a7c772a3c577a4c677a4c675a5c479a7c579a7c778a7c770 *a4c672a4c47ea6c67ea8c876a4c678a5c678a5c679a5c778a4c476a5c57fa7c972a3c674a4c677 *a4c672a3c376a6c77da9c87fa9c679a8c882aac670a8c679a7c779a9c97ea9c87fa6c57ea6c77d *a7c782aac678a8c67ea8c67da8c781aac877a6c77ca6c680a7c67ca9c57eaac77da8c877a7c87d *a7c77fa8c87ea9c882aac77da6c67facc87eaac776a6c77aa7c978a7c97ca7c978a6c784aac87b *a7c973a8c875a5c87da9c879a6c76ea4c57fa8c47ba5c681a8c67ca7c67da8c874a6c778a6c575 *a6c67fa8c67da9c77eaac880a9c87ea8c872a7c776a7c67ea5c56fa3c380a8c57aa5c57ba7c779 *a4c77aa8c77daac974a6c77ea8c680aac785a8c683a7c77eaac882a9c77ca9c67fabc883aac886 *aac87daac686aac77eaac984adca8aaecb80abca7eaac885aec77bacc979a4c678a6c77aa9c782 *aac780a8c881a9c779a5c67da7c681a9c77ba9c883aac77aa7c782aac887acc983acca81aaca82 *abc98baccba5b9d1adc0d4b4c4d6bcc9dab9c8d8b0c2d6b1c2d5b1c2d6aec2d4acbfd4a6bcd0a0 *b6ceaac0d4adc4d6a9bed3a2b8d1aabbd0b9c6d6c2ccd8c6d0ddc7d1ddc7d1ddc7d1e0c3ccddc2 *cbd8bbc7d6b6c4d5abc1d1a4b9d0a5bbd19cb9d0a0bad199b6ce97b2cd97b5ce9bb5cda3bed0b5 *c7d7bccadbbccadcc1ccdcbdcad9b5c6d7adc0d3b0c2d4aec3d698b6cf8aaecc86adca8caec892 *b1ca97b4cd92b2cc95b3cd96b5cd90b0cc86acc985acc97dabc881aac981aac97fa9c782a8c889 *aac885abc97dabc986adca81abc97ca9c87ea8c77ea7c783abca86aac98daec991aecb92b2cb93 *b1cb8cafca85aac986a9c889acc983acc98fafc890b1cc95b3cc94b1cb8fafca98b1cb98b2cb9d *b3cca6b7cfa2b6d19bb4cb9bb4cc9cb1cc92b1cb98b1c995b0cb92aeca90b0cb97b1cb99b3cc9c *b3cc97b3caa1b9cdaabed3a3bbcda9b9cca9bacbafbfceb2c1d2b3c1d3b6c3d4bbc7d4bec7d6c1 *c9d6bfcad8bfc8d9bec9d9bfc7d7bdc6d6bbc7d5bac3d5bbc5d6bcc6d4bcc5d5bdc6d6bdc7d7bd *c9d6bcc7d6bfc6d7bfc6d7bfc8d8c2c8d7c1c8d5c2c9d8c1c9d8c1cbd8c1c9d6c0c9d7bec7d6bf *c7d7c1c8d7bfc7d8c1c7d8c0c6d8bbc7d8bdc6d6bcc7d6bdc8dbc1c9d7c2c9d8c1cad7c0c9d7be *c8d6bdc7d6bec8d8bbc3d4b1bed5b9c0d1b6c2d3b8c0d1bdc2d3bbc3d5b7c4d3b7c1d2bac0d1b9 *c2d2bac4d3bcc1d1bac3d3bdc7d6bcc5d6bcc7d7bfc7d8c0c7d8c1c9d9c3cad5c1cad9c4ccdac4 *ccdbc2cad8c2ccdac3ccd9c5ccdbc4cbd6c7cddbc8cfdbcbd1ddccd2decbd3dfc9d1dcc9d0dbcb *d1ddcbd1ddccd6ddcdd5ddced3dfcfd6deced5ddced6ddcdd3ddced7dfced6ddcfd6deced6dfcf *d5decdd5dfccd6deced4dfcdd5dfcdd6e0ccd6dfcbd3ddbfc8cfc5ccd3c9d0d6cdd6ddced8de75 *9eb978a4bd76a1be75a2c076a4c0729fbd76a3c178a3c278a0bf79a1bd6da0bf739dbc749fbe76 *a1c1749fbe70a0bd71a3c168a0bd699fbf73a2bf6a9fbe649fbd6a9dbb709ebd6ba0bf669cbf6c *9dbd699dbd5e98bb5994b95f97bc5796bd5b98bd5995bc5594bb5596bb5a92ba5c97b95897ba5e *9abc6298bb4f94bb5294bc6397bf5c98bb5893ba5797bd5e95ba629abd5a9abd629abd5599bf51 *92bb5493b95a96ba6397ba6797b85f96bb5b98be6396ba6597bb6296b86999bb6a9cbb6d9abc70 *9cc079a2bf76a3c2739fc276a1c1779fc1719ebd729fbc719dbf6a99bd709dc0659cc0649bbf61 *9cc05f99bb6899bc6398be689abd5e96bb5494bc5d99be629ac16d9cc06d9ec06d9fbf669abd69 *9abf6b9abd6e9ebe6ca1c16aa2c2659cbf689abd6c9fc26c9dbf649abd6d9cc0669abf689cc167 *9ac16398bd649bc06a9bc0699abd689dc1639dbf629bbd669ebf689cc0669ac0619abf639bbd5f *99bc589abe5798bd609abd669bbf649abd649abf619bc0669dc1639bbe629abe6098bd5e9bbf56 *97bd6099c05e97bd5e98be5e9bbe5a99be619ebf669cc15d99bd649abf689cbf5c98bd5f9bbf65 *9dc06b9ec05c9bc1659cc0669ec06e9dc25f9ac1649dc2699cc0669bbf679dc16399c0679dbe64 *9dbe6a9fc0689dc0639dc064a0c1629fc1679fbf669cc16ca2c36c9ec06e9fc06c9ec0669ec163 *9bbf66a0c16b9fc169a0c06a9fc16aa3c176a3c46da0c16fa4c3609dc16aa1c46aa1c36fa2c165 *a0bf679ec15f9bc06ca0c16ba1c36aa2c16ca0c16ea2c369a1c173a4c46ea1c16da4c264a0c36e *a2c36da1c16da1c170a3c26ea3c36fa3c26fa0c16ca1c26ba0c16a9fc071a4c56ea3c36fa4c268 *a3c367a2c26a9ec26ca2c36ea3c2689fc16da4c46ca0c263a1c36fa3c3669ec371a3c667a1c36d *a1c366a1c36da1c076a5c571a4c366a1c46ca4c36fa2c469a2c376a6c370a5c26aa3c26ca3c169 *9ec16da4c36da3c06da2c66ca3c269a0c26aa1c16ba3c271a5c36da4c571a4c480a6c572a4c56f *a4c476a5c46ca3c374a5c471a4c277a6c279a7c375a5c677a6c772a4c36ea4c373a4c46da4c370 *a4c473a6c56da4c173a4c670a6c771a4c66aa4c36aa2c278a4c671a3c36ca2c373a5c66da4c673 *a4c577a5c275a5c16ea6c477a9c67faac77aa8c678a8c676a5c579a7c674a6c574a6c67ba6c376 *a6c47aa7c785acc97faac975a6c777a6c577a7c474a6c573a6c673a5c67aa6c67aa6c778a7c778 *a7c478a8c67eaac67aa8c675a9c778a7c679a6c779a7c672a5c673a6c775a7c474a4c673a5c571 *a5c677a6c775a5c779a5c67caac874a6c476a7c679a8c47aa7c677a5c476a4c478a6c674a5c475 *a7c674a7c67aa6c477a5c577a7c572a6c678a5c672a5c675a5c67aa8c878a5c474a4c473a4c471 *a4c474a6c576a9c77aa7c676a6c578a9c579a6c67aaac679a6c780aac477a6c57aa9c677aac77a *aac774a4c676a4c57ea9c685abc779a9c77caac97baac981adc981abc97ca7c682a9c677a5c676 *a5c678a8c676a9c778a8c87caac97ba7c77fa6c57da6c67aa7c57aa6c375a6c672a4c67ca8c77b *aac77fa9c881a9c78baecb96b7cf9ab6cfabc2d3b1c4d6a8bfd4a0b9d1a4bcd2a3bbcf9fbace99 *b4cc8cb1cc92b3cc9bb8cf99b7ce97b6cea9bdd1b5c6d6bcc9d7c2cedac5cedcc4d0ddc3ced9c2 *ccdbc2ccdbbdccd8b5c5d6a9bed3a6bdcfa6bbd1a3b8ce99b8cd9eb9cf97b3cd91afca92b0c98b *afc9a4b9cfafc2d3b1c3d6b1c4d7b2c6d7a9c0d3a4bcd0a2bad19fbbd090b1cb7eaac783adc97e *abc987afcb81aac882accb81aecb82aec87eadc982abc778a6c579a7c67eaac979a9c879a7c67e *a9c684aac882a8c682adc87daac87caac784aaca83a9c97fa7c67ea9c782abc889adc991b2cb91 *b2cb97b2cb88abc97ca9c77ca7c689aec87daac787acc98fb0cb9bb5cb9cb4cb9bb2c99ab4cb9d *b5cb98b3cc9cb6cd9db6ce9bb6ca9ab5cc95b4cb93aec898b1cb97aecb91b2cc92b1ca8fb1cb99 *b2c9a0b6cb9eb5cc9cb4cc9ab5cba0b7cdaab6ccaabbccadbdceafbfd2b4c3d2b8c6d4bdc9d7bd *cad9c0cbd8c2cbd8c1cdd8c0ccdac0cbd8bdcad6bec7d5bbc7d6bbc6d6bac5d6bbc6d5b9c6d6bc *c6d6bcc8d6bfc9d6c2c8d8bfc8d8c1cbd9c3cbd9c3cbd9c1cbd8c1cdd9c1ced8c3cbd8c0c9d8c1 *cadac1c9d9c3c9d7c1cbd7bfc8d8bbc8d7b9c6d7bbc5d4bbc6d3bdc7d6bdc7d6c1cbd8c0cbd9bd *c7d7bfc9d6bdc6d2bdc6d6bbc4d6b6c1d4b6c4d6b6c3d2b3c1d0b8c4d4b6c5d7b7c4d6bac5d4b5 *c2d3b8c2d3b8c5d3b6c4d4bbc5d4bac6d3bdc7d5bec7d5bdc7d5bdc7d9bcc9d4bfc9d5bfcad6c0 *ccd8c3ccd9c3cbd8c3ccdbc5ccd9c1ceddc2ccd9c5cedac7d0dbc8d0dbc9d3dcc9d1dcc7d2ddc9 *d1ddc7cfdcc7d1dccad3dccbd3dbccd4decdd5ddcdd5ddced6dcccd6dfcdd5deccd5ddcdd6ddcc *d6dcced6ddccd6deccd5deccd5ddcad4decbd3dbc7d1dbbdccd9b2c1c1c3ccd1c7d1d5cdd7dcce *d8de7da3b8729fbb80a2be759ebd78a0bd749ebd79a3c36fa2c078a4c17fa4c1739fbc7ca0bd6e *9fbd6c9abc709cbb70a2c06da2bf75a2bf75a0bd6f9cbc6a9fbf6b9fbc699bbb6d9cbd6a9abd69 *9abc659cbc699cbb6696b96496b95694b95e92bb5f94b85a96ba6098bb5a96ba5b94b95e96b854 *93b95792b76095b7629abb5694ba619bbf5d9abd5594bb6899ba5595b65992b75790b75993b962 *98bd5792ba5a97bb6a97b9669aba6a9ab96096b96496ba6a9bbb6b9bbb729fbf6d9dbe739abc73 *9dbc77a2c173a0bf77a2c081a4c36b9ebf719fc0709ebe6e9abc6e9dbb6697bc6198ba699dc164 *9bbe639bbd639cbd6497bc6496ba649abc5b98bb5c96bb699ec06799bd6ca1c26e9fc1689dbf68 *9abc679bbf6799bd669cbd689cbe699dbe6e9cbe6c9ebf6c99ba5b98bb659dbd649bbd6d9dbd61 *9dc1619abf6699bf679abc6a9abb679ebf669cbe6b9cbe679abd709fbd689dbf659cbf6098bd60 *98be5f9abf579abd5d99bd5e9abd5e98bc6099bd689fc0609abc679bbe5c97bc5b97bb5b96bc62 *9bbf6297bb649abe679dc06a9dbf659ebf5e99bd5f9abd5d98bd699abf6598bd649abe659cbf66 *9bbe5c97bb609abd69a0bf639dbe639bbe669fc1649bc0669dc1609bbc6ca1c067a0bf679dbf66 *9cbe629cbe669cbd659bbf629abe669abd689abc689ebd619cbe6ca1c1679cc1669bc16c9cbe76 *a2be6c9fbd659ebd609cbc5d9bbd669dc1659dbf65a1c0699dc1659dbf6ea3c16da0c0659dbd68 *9fc170a4c46b9ac16ca0c374a3c56ba3c0669ec06ea4c16a9fc16da1c16fa3c46fa2c26aa1c068 *9dc16e9ebf66a2c064a1bf70a3c16da1c0699ebd6da1c167a1c06a9ebf659fc1689fc0689fc068 *9fbf6da1bf6b9ec069a1c070a4c169a1c16ba0c1699fc170a3c175a1c06fa1c270a1c16aa3c36b *a2c369a2c46aa3c36ba1c265a1c169a3c365a0c168a1c16fa1c06aa2c167a2c26ea3c174a3c170 *a3c170a4c26da6c366a2c06fa5c46ba2c271a4c373a4c576a5c273a4c275a5c473a3c271a5c46f *a3c174a6c171a5c273a5c472a6c477a4c274a4c372a3c56fa4c371a5c170a4c272a5c172a5c173 *a6c472a4c471a4c174a4c479a6c376a8c575a7c675a5c36ba1c170a3c476a5c472a4c174a4c474 *a6c578a4c474a5c276a6c375a5c46fa5c578a6c678a7c574a4c574a4c47aa8c47ba8c375a4c477 *a5c471a5c56fa3c27aa6c57ba9c780aac576a8c577a9c678a6c57aa7c475a4c575a5c479a7c671 *a7c674a9c676a6c57daac778a6c576a4c776a4c476a6c47baac77eabc676a9c776a9c777a6c671 *a4c671a5c379a6c773a5c679a7c575a6c675a4c47eaac679a5c478a6c475a6c476a8c579a9c878 *a7c677a8c67ea9c679a9c677a7c677a9c675a5c47ca5c679a8c670a6c575a6c579a6c67aa4c47a *a7c379a9c670a5c672a5c571a4c276a5c572a7c679a7c774a5c676a6c572a5c36da3c376a7c579 *a9c47ea7c47ea9c67ba6c57da9c67eaac57aa9c576a7c67aa7c57daac781aac679a9c779aac67b *a7c77ca7c47da9c77aa8c67da8c777a8c67ca8c77da7c77ea7c67aa7c67ca9c67ba9c678a7c479 *a9c67faac67caac77da8c780aac885aac685abc889aec89eb9cf9ab7cd93b4cd93b5cc98b4cd99 *b6ce90b1ca8caec98caeca8cb1c989b2c98cb2cba9bed1b5c6d6bdc9d7c1ccd8c2cdd8c1cbd8c3 *cddbc0ccd9bfcbdbbac9d8b2c2d7b1c2d3b1c3d3abc1d1aac0cfa9c0d2a3becfa4bbd19cb7cd97 *b6cc8aaec689afc798b6cc98b6cf9ab6ce93b2ce8cb0ca89adca90b1cb8ab0c97fa9c681aac77f *aac77aa9c680aac785aac884a8c788afcb7fabc77faac77ca8c67aa5c675a7c67dabc782aac77d *aac872a4c685aac674a5c480aac97aa9c683abc77dadc984a9c784abc982aac678a7c67faac78c *aeca93b1cb8fb1cb8daec779a8c77aa9c77da9c681a9c689abc691afc793b1ca9bb5cb9db2cb9c *b4ce9eb6cca0b6cba0b5cba0b5cc9fb6cba2b7cb9ab5cc95b1cb9ab2cc9ab5ca95b1c997b4c997 *b2ca9bb5c9a0b7ce9fb6cc9fb8cea0b6cba3bacaa2b8cca4baccaec1cfaebdd0b1c3ceb6c5d4bc *c8d4bfcbd8c1ced7c4ccd8c6ced9c5ced8c3cdd8c2ccd8c1cad7c2cad7c0cbd7bdc9d6bbc8d4bf *c7d6bdc7d7becad7bfc9d6c0cbd8c3cbdbc5ced8c7cfd8c4ccd8c5ccd9c4cbd9c4ccd8c6ccd9c3 *cddbc3cddbc1ccd8c4ccd9c0c9d8c0cbd8bdc7d4bbc6d6bbc7d6bbc8d6bdc9d7bfcbd6c2cbd9c3 *cbd8bfc8d6bfc7d3c0c9d3bdc8d4bbc6d3b9c3d5bbc4d6b7c3d1b7bfd0b5becfb6c2d2b7c5d2b8 *c5d2bbc4d4bbc5d5bcc5d2bdc4d3b9c4d2bcc6d4bcc6d2bdc7d4bdc8d5c1c9d4c1c9d5c2cad7c1 *cad6c2cbd6c2ccd7c3ccd8c3ccd6c3ccd9c5cddac6ced8c7cbd9c8ccdac7d0dcc7d2dbc9d2ddc6 *cfdbc9d1ddc9d3daccd1dccbd3dacbd2ddcbd3deccd6ddcbd4ddcbd5ddcdd7dcced7deccd6ddcd *d5ddccd3ddcad2dccad2dcc8d4ddc8d3dcc7d1dcc5d1dbbeccdab2c2d3adbcc1c1cdd0c6d1d3cc *d7dacddade7e9fbc759dbb7aa0be79a2bd7d9ebb749dbb7da0bd779dbb729cbd7a9fbf79a2bd75 *9abb729ebd739cbd759bbd759dbd6d9abd6a9cbd699abe769ebf6d9dbb74a0bc6d9abd6a98bc68 *96b9649abc6699bc6498bc6293ba6296ba6192ba608eb7628eb85890b95c93ba6297bc5f97bc60 *96bb6298b75894b75a93b76296ba6296bd6797bc5f96b95792bb5993ba6096ba5992b65f91b864 *98bc6297b9608eb96493bb6799bc689abd5a94b86094b96095bc6499ba6b98bb709cbd75a0bf7d *a1c280a2c285a1bb7fa0c180a1c17a9fc27499be7098bc709bbd749bc06c9bbf679abd6896bd6d *98bc6796bb5a95bd6295be6097bd6099be6699be6798bb6998bb6498bc6998bb6297be689cc16a *9dc06499bd6b9bbb6c9bbc6595bd6f9cbe699cbe5e97bb6798bd6399bf669abe6f9ec16998be6e *98bd6c9cbe6a9dbf6c9dc16c9bba6a9abd679bbd6c99be6c9bc0729abe6a9bbd6b9cc16d9bc068 *9bbf6198bc689abd6498bd6799bf6b9dbf5c98bc6098bf5f98bf5692bc5e98be6499bd6b9abd69 *98be6497bd6399c06198be5d96bf6498bf689cbd699dbf6898be6c9ebf6a99bd6198be629abf64 *9abd679bc06e9fbd6a9cbe699bbd6e9cc16297bd619ac26f9bc06d9cc06399be699dbd679bbf6e *9bc0699abd5f97bc6a9bc06699be6a9cbf689bc0679cbf6a9ac06299bf6d9cbf719ebf6f9bbf6a *9bbe679cbf69a0c1669bbe699abe749fc16fa2c36fa1c36aa1c16b9cbe6a9cc167a1c171a4c46f *a0c26e9dc16ca1c369a1bf679ec06a9dc16da2bf679ac06b9fc1769cc06d9cbf669dc16099bd6b *9ec36ea1c16ea4c36da2c06da1c0729ec16e9dc0699ebf6c9ec2669cc16ba0c1669cc06b9cbf74 *a0be6e9dbf6a9bbe699ac16e9dc1669bbd6a9cc16e9fc06fa2c16da0c271a1c16b9dc175a3c36a *a1c36aa1c36ba2c36ba1c172a5c677a1c173a0c16fa1c272a1c1729ebf6ca0c06da3c370a3c173 *9ec16ba0c16d9ec26da2c272a1c172a2c16ea2c175a3c376a3c5709ec06ba1c071a2c175a5c27b *a2c274a2c370a4c66aa0c071a4c275a4c36fa0c27ba3c271a3c179a4c27ea4c477a6c57aa6c57a *a5c579a5c375a1c172a5c277a5c477a4c172a2c36ca4c674a5c57aa6c677a2c37aa3c574a4c17b *a5c370a4c374a1c278a4c574a4c47aa5c573a4c27ea9c67ca7c47ba7c47ea7c67ba5c679a6c57d *a5c57ba5c377a5c375a5c378a5c578a5c579a6c680a7c67ca6c77ba6c674a4c277a4c278a6c57d *a8c679a8c679a4c57da7c67aa4c778a5c67da5c37ca8c677a6c67fa7c77ca5c679a5c580a8c375 *a5c573a4c37aa5c27ca5c67ba5c37ea6c476a6c479a4c375a4c678a5c36ea4c374a7c47ba6c56f *a3c379a4c47aa6c679a6c671a5c578a4c674a6c47aa8c47ba6c57fa5c376a3c371a2c47ca4c675 *a4c578a4c475a4c373a5c377a5c47ea6c578a4c678a5c67ca5c678a6c77ea6c77aa8c681a4c37d *a4c47ba5c376a3c477a5c57ba5c57da7c67ea8c677a6c07baac779a6c689acc884aac876a5c679 *a5c781a9c77ea9c77ba8c374a7c77aa6c67ea5c678a5c67ea6c67ca5c67ea7c582a7c57da7c679 *a5c380a5c37ca6c57ca6c57ba6c680a8c77da8c77ca8c484a8c689adca89acca82abc87fa9c885 *acc986aecb85aec881aac785abc987aac983aac68dabc797b4cea7bdd2b1c3d4b3c6d6bdcbd8be *c8d7bdc9d8bfc9d8bec9d9b8c7d6abbfd3afc1d4afc3d5b0c3d3acc0d2abbed1a5bccf9eb9d09f *b7cc95b1ca85acc888acc788abc685aac886aac684abc97da7c580a9c780a9c87aa8c783aac67f *a8c685a8c67fa9c679a8c680aac87aa8c67eaac983aac77faac687aac786aac67da8c67ca9c77d *a8c77fa6c67ea6c77da7c37ea6c385aac786abc789aaca76a7c681a8c77eaac682aac77ea9c67f *a9c784a9c694acc98cacca80aac982a9c684a9c682a7c685aac787abc88eaac88fadca96b1ca9f *b5caa3b5cba3b9cca1b7cda4b6cea5b6cca5b6cda2b6cea4b6ce9fb3c99db5cb9ab1cb96b1c79e *b6ca9eb5ca9bb2cba1b6cca6b8cba4b8cca4b7cca0b6cda6bad1abbaccaebaceb1c1d0b3c2cfba *c4d3bec9d7c2cbd8c4cbd7c6cddbc7ced8c8cedbc6cddac4ccd9c3ccd7c4ccd9c4ccd8c3cbdac0 *c9d8c2c9d6c1c7d5c3c9d7c3cad7c3cbd8c5cbdac7ced8c9cfd9c7ced8c7ced8c9ced9c5ccd8c4 *ccd8c9cdd9c7cedbc6ccdbc6ceddc6cbdac0c9d6c1c8d4bdc7d7bac7d6bcc4d2bdc6d8bec7d8c3 *cadac4ccdac3cbd6bec7d6c0c9d6c2c8d6bdc4d3bbc6d5b9c5d4bbc5d5bbc4d1b9c1cfb6c0d1b5 *c3d4b5c2d2b7c1d0bcc5d3bdc6d5c0c8d7c0c7d6c0c6d4bec6d4c1c8d6c3c9d4c3cbd5c2cad8c3 *c9d7c2cad8c2cbd9c4ccd7c3cbd8c3ccd9c5cedac3cddac6cedac6ccdbc7cedbcacfdccbd1dbcb *d1d9cad1dbc9cedbcbd0dbccd0ddcdd3ddcdd3dccfd4deced4dcced4dbcdd5dcced5ddcdd4decc *d3deccd3deccd3ddcad1dbc6cfdbc3cedcc1cbd9b7c8d9acc2d6a4bdd2a4bcd0b0bdc3c5ccd0c8 *d1d3cbd6d9ced9dd7b9fba769fbd7ea2bd78a3bf799fbd729fbd6f99ba759bbd7598bf799ebd75 *9cbd6d9bbd739dbf6c9ec26e9dbe77a2bd799ebe6c9cbd6599bb6a9bbe6d9fc26a9ec0659cbe63 *98bb5c96bc6a99bc6598bb6096b95c90ba5994bd5492ba6095ba6395ba5f94bd5f94b95e93bb5a *96bb6399bb6196ba6498bd5c94bc619abd6193bb6496b95f96bb5091bb5896bb5e91b96298bc5f *95bb5f8eb75b92b95a8bb76098be5391bb5995bb5996bb6094bb6295bc6e9cbd739abd79a1c17d *a3c183a3c478a1c181a2c17fa3c280a2c17ea2c07c9ebf779cbf779ec1729bbf6d9abd6596bd64 *99bf6a9cbd6b99bd6195bb5e97bd5c93bd6397bd6297bd6396bc5f97be6899bc6097be6899c069 *98be699bbe6599be6f9abf6096bd6c9bbd709cc06897bd5e96bd5d96bd5f94bc6c9bc1669ac161 *9bc1659cbe6ea1c2699dc0769dc26e9cc0709dbd6b9dc16d9bc0699cbe6899bd6b9bbf749ac16b *9ac06699be6096bd659ac05f99bf619abe639cbf6b9cbf6697bd6194bc6497bf6099bf629cc066 *9cbf6597c06498be6399c06097bf659ac0629cc05d98be5d99bf6198bc659cc0649bc06798bf62 *98bd649ac069a2c3609abf669bc0639ac170a2bf639dc2729dc0679dc16799bf6f9bc0639ac064 *9cc16c9ec5679ec2669bc2689bbf689bc2689dc2699dc16d9ec167a0c167a0c1679fc1659dbf6a *9ec2699cc16f9cc06b9ec06b9cbe6ba0c071a1c36a9dc3739fc1699ec26a9dc16b9dbf6d9ec170 *a0c16ca1c26ca1c16ca2c66b9ec16d9dc16a9cbf70a1c1679ec0649dbf70a1c174a2c16fa2c169 *9dbf6f9ec1699bc16d9fc177a2c174a3c371a4c56ea3c46b9ec1669dc0739fc1699ec06b9dc06a *9dc16c9ec26ea0c26aa0c26ea0c1699fc1699dbf689dc06fa3c371a4c36ca0c26ea3c375a4c36e *9ec0699cc16a9dc16d9ebf6ea3c36da2c572a3c66aa0c36da1c36e9ec26f9fc373a2c170a2c36e *9cc16ea1c271a4c574a4c46da1c26fa3c36a9fc3729ec274a2c474a1c576a4c278a3c475a4c56e *a4c478a4c36da3c374a2c378a4c470a1c370a2c373a2c570a3c36ba1c277a4c56da3c575a1c576 *a3c37ba7c578a5c579a4c373a5c572a2c474a3c379a7c66fa4c56ba4c46aa3c57ea8c66fa4c776 *a4c574a3c579a6c676a4c67aa5c37aa4c577a6c77da7c779a9c978a8c675a4c571a3c57da4c57e *a7c678a4c67aa5c677a5c77da9c874a6c675a4c47ea7c576a6c573a6c678a4c776a7c77ca8c782 *aac87ca7c67fa8c777a4c677a5c678a6c776a6c87ca8c77ba5c979a8c678a7c77aa5c579a5c780 *a7c77ea6c878a9c781a9c977a8c779a5c773a4c47fa5c578a5c67ea6c673a5c771a4c677a4c677 *a5c678a9c681a8c775a5c77aa5c678a4c672a3c67ea6c77aa5c777a5c676a5c67fa7c67ca3c67b *a4c679a4c376a4c66fa4c57aa8c775a5c574a7c776a4c682a9c67fa6c677a7c57ba6c77ca9c781 *a7c781a5c77fa7c57fa7c576a5c680a8c778a5c679a8c681a8c576a6c77aa8c778a7c679a6c77c *a7c681aac870a6c67da7c67ba8c77ba8c783a9c778a5c779a7c581a9c77fa8c780a8c879a8c876 *a5c779a5c681a8c778a5c77fa9c77fa9c77daac87aa7c77da6c678a6c681a8c685a8c981a7c782 *aac783aac773a5c878a7c879a9c783a9c982a9c77da8c77da7c78cadcb96b4d19fb9d1aabdd3b6 *c6d5b8c7d8bdc9d8bec6d6bbc9d8b3c3d6adc0d3abc1d2a8bed1a2b9d1a3bbd0a1b9cf98b9cf97 *b8d098b5cf8cafcb82abc877a5c683adc77eaac983aac880a6c882a7c782aac878a7c681a9c77f *a9c780aac782a8c77aa7c781a6c783a9c879a8c77ba6c87eaac879a9c77ba7c77da6c77aa5c77e *a8c87da8c77ea8c67da6c784aac785aac87dabc97ea9c97cabc86fa4c67da8c77ea9c780a9c782 *aac880aac883a9c982aac986abc883abc982a7c77fa6c67da7c680a9c882a9c885adc98daec99b *b7cea4b7cba5b7cda8b8cca8b9d0a9b9d1a5b7cfa5b9d0a4b8cea4bacca4b7cc9eb3cb9fb2cba4 *b6cca2b6ce99b3cea4b8d0a5bbceaab9cda4bacda3b5cda5b7cca0b5cba8b6ccadbbd1adc1d3b0 *c2d4b6c4d5bcc8d8bdcad8c1ccd8c5ccdbc6cedbc6cfdcc4cedbc4cddac4ccdac6cddac5cdd9c2 *cbdac2cbdac2cad8c1cad9c4ccd9c1ccd8c5ccdac7ccdcc7cfdbc8cfdbc6d0dbc8d1ddc7cfdcc5 *cedcc7cedbc5ccd6c5ccd9c3cedac3cedcc1cbdbbfc9dbbccadabfc9d7bcc6d6bcc4d5bbc5d6bd *c7d6bec8d7c0c9d9c1cbdbc1cadac0c9d5bdc7d3bdc5d4bac6d6bbc7d6bbc6d7b8c4d6bac5d5ba *c2d4b7c2d3bbc5d4bdc6d2bec6d7c0c9d8c1cadabfc7d7c2c9d9c3c9d9c2ccd8c3cbd8c4c9dac2 *c9d9c6cbd9c2cad7c2ccd9c4cdd9c5cedac6ccd8c6cddbc6ccdac8cdddc7cfdbc6d1dcc9d1dec7 *d2dfc9d4ddcbd2deccd0ddcccfdcccd0dcccd3ddccd4ddccd4ddced7decdd5decfd6deced3ddce *d4ddccd3ddcad2dcc7cfdcbbc9daafc6d6aec5d6abbfd2a4bacfa3b7cd9eb8ce9fbacea5bac4c2 *cdd4c7cfd3ccd4d9cfd9de809fb97ea0bb75a0bc709ebb739fbf729ebe729dbc6d9abd6a9cbb6d *9cbc6f9dbd6898ba6a99bc6a9abd659abe6e99bc6e9abd6395ba6798bb5d9abc5e95b96699ba59 *95bb5392ba5c91bb5a93bc5f97ba6199bb5796ba5895b85692bb538eba598fb95b90ba558db858 *8fb95590b7619abb5b93ba6292bb5c8db85690ba578cbb5691b85d96ba5a96bb5691b9568db55f *92bb5c95bb628fba6095b95d93bb5a93bb5b96b9608bb45c93b8608eb75a93b86796bb709bc172 *9dbf73a0bb7aa3c080a0bf849ebe81a2c3759fc177a0c17ca2c3809fc0749ebe769dbc749dbd6e *98be5e98be6497bd6696bd6097be5f96b85b92b95592ba5e95bc5f93bc6895bc6999be6799c065 *98be5a92b75f95be5d97bc6096be5790bb6397bd6896bc5e97bb5e96ba5d99bd629abd6598bb62 *96bd5e95bd5895bd6c9bbd6b9bbf6a9ebe6499bd639abc619abd6b99bd6296be6194bc6696bf6d *9bbf629bbd6397bc6099bd6998be5e97bb609abd5e96bc5e97bd6096bc5e97bd6398bc6098bd60 *98bc6496bd5f95bd6298bf5996bd6299c05a96bc629abd6b9dbf6b99be5c98bc6a9cbf629abf65 *9bc15e97bd6b9abf659bbf699abe5f96bc6898bd6e9ec16c99bd649bc1649ac1669abe6a9abe63 *98bd659ac05b97bd5d98bf629abf659bc1649abd6b9ec1649cbf6199bc6698bf6097bd6e9ec161 *9ac1679cc16ea0c06b9cbf639abd6b9cbf669bbf699bc16698be5f95bd6a9ec0639bbe5e9bbd6b *a0bf6d9dc1699bc0639abf6d9dc3699cbf6c9cbe6b9dbe649ec06a9ec3679cc06a9dbe6b9cbf6d *9dc170a1c16d9dc070a0bf77a4c16d9ec1689bbf689bbf699cc16b9cbf6a9ebe6b9cbf659abd67 *9abf689bc06d9dc070a1c1679abf6f9fc06fa0c2699dc16aa0c271a0c1699bbf6a9cc0699dc067 *9dc071a0bf6f9ec16499be6d9ec174a2c3679dc0689ec26b9dc1679cbd73a2c16c9ec36f9fbf70 *a1c077a4c36c9ebf6ea4c168a1c16fa2c374a3c175a4c379a4c175a1c16ba0c16ba0c06fa1c26d *a1c16ba1c26d9fc170a0c26ca0c273a2c174a4c272a2c16da1c172a3c46c9dc071a1c46ea2c377 *a3c27ba7c579a6c571a1c378a2c46aa2c578a3c470a1c376a4c873a4c5659ec074a1c374a2c579 *a4c577a4c56fa4c47ba6c774a4c476a4c675a5c477a4c677a4c379a5c370a4c579a5c47ba3c477 *a2c27aa2c16fa1c271a2c271a4c376a2c273a4c574a5c576a5c771a4c573a2c17aa5c473a4c371 *a3c474a4c578a6c677a5c476a5c578a4c37ba5c676a4c379a3c577a4c46ca5c669a4c57aa4c67b *a6c979a6c478a4c574a6c57da6c67ba5c77aa4c673a4c675a4c67aa6c47aa4c379a4c673a3c37c *a7c577a4c66ca2c473a6c56ca2c471a2c470a3c474a4c57aa6c477a4c579a3c675a3c675a4c47a *a5c676a4c576a5c478a6c578a4c374a4c475a5c67da6c67ca7c872a4c475a4c677a5c47aa5c67d *a7c375a4c67da4c580a6c781a7c679a4c577a6c678a4c479a5c57aa5c678a4c374a3c480a5c676 *a4c67ea6c67ca8c578a6c67aa6c57aa6c57ea7c676a6c77da4c576a5c674a3c47aa4c576a5c67d *a7c573a4c574a4c676a4c676a4c673a2c680a5c47aa5c678a5c57fa6c57fa6c57da8c677a6c879 *a5c977a4c679a6c67ba5c67ca9c67ca7c67ea6c682abc86ea3c57da6c981a7c682abc683abc798 *b3cca3bbcfb1c4d8b6c6d8b8c4d8b5c5d7aec1d2aabcd0a3bbce94b4cc92b1ca92b1cb93b1cb88 *aeca8aacca89aac779a8c680a9c67fa6c57ea6c678a5c677a4c37ca6c880a8c77ea7c67ea7c478 *a6c674a3c579a3c67ea6c780a7c778a5c779a4c775a7c783aac781a7c675a4c378a3c67ea8c77d *a5c579a5c67aa5c77da5c681a7c680a9c67ea4c67ea5c478a4c47da6c57baac976a8c883a8c77a *a8c781a9c77ea8c77fa5c780a8c688aac885aac786a9c87fa9c87da5c379a4c581a7c68facc994 *b1c999b4cc9fb6cda7bad1adbcd0a9bbceaabbcea6b9cda1b5cca4b7cea4b8cea2b6cda0b6cca2 *b5cca5b8cba2b7cca0b6cc9cb1ca97b3cd9eb3cc9fb6cca1b6cca2b7c99db1c9a1b6cea0b6cda1 *b4cba4b7cca9bbccadbdd0b9c6d6bdc8d6c0cad8c0cad7c0c8d8becbd9bdcad7c1cad7c1cbd6c4 *cdd9bec9d6bdc8d6c0c9d9c1cbd9c1cad8c2cbd7c3cad9c5cbdcc6cedbc7cedbc4ccd8c6cddac6 *ccdac1cbd9c0cbd8c3cbd8c2cbd8c2cbd8c0c9dac1c9dabfc9d8bec7d7b6c6d5b2c2d6abbfd3b0 *c0d1b5c3d1bac5d3bcc6d6bdc7d7bcc8d6b9c6d6b7c6d3bac3d1bac3d3bdc6d8b9c2d4bac2d4bb *c6d4bac4d4bac5d6bdc6d6bfc7d6c2c7d4c4cbd6c2cad7bfc8d8c3cad8c3cbd9c5cbdac3cad8c4 *cbdbc3ccd8c4cad9c3c9d8c2cad9c5ccd8c5ccdcc4ccdac6ccdbc6cedbc9cfdac7cfdac9d1dcc9 *d1dbcad1dbcbd1dccbd2dcccd1ddc9d1dccbd1dcccd1ddcbd3dcccd2ddccd4dbcbd3deced3decd *d3decbd3dbc9d3dcc7d0dbbac9d7a4b9cfa0b8cda3b9ce9bb3cc97b3cc9db4cb9bb1cb9cb5cba6 *b7c2c2cbd1c6d0d6cbd6dcced8df6f9db979a4bd769fbd729cbb6f9abb6895b86a9cbb6999bb65 *99bd669abc6e9bbb6899bb6f9ab96094bb6c98b96e9abb5e99ba6398bb5d98bc5c9abb659bb969 *9abc6b98bb659abc5a99bb5794bb6295bb5c97bb6199b9649aba6097bc6794b95c96ba5a92bb54 *8fb85d93b75d92b75b91b75b96b86394b85c94b8548cb65b93b95295ba6193ba5c92ba5c97b857 *97b65892b85f8fbb6292bb6092b96096bb6195b95f97bb5a95ba6296bb5c92b76495ba5c93b86b *9cba6d9bbc6e9ebb739cbb729bbb769dbf789fbf74a1c276a0c176a0bf799fbf759ebf749fc16d *9ac06498bc6797b95f94ba5a94ba5e96b95b95b75394b85494bb5a91ba6292b86999bb6195b767 *9ab95292bc5d97bd5896bb6397be6097bd5e95b8538db95f97bb6397bb639abd6798ba6699be65 *98bf5c92b76295bb5f96bb6598b96598be659abe5f94bb629abc5f97bd689abd5f97bb5a93ba5d *97bb5f9abc629bbd5e96bd5c95bb5e93bc5e98bc669abb5795bc5595bc5d97bd5a96bd5d98be60 *99bf5c97bd679bbd639abc5a98bd6499bc639cbf6499be6199bc619bbe6197bd649bbd6199bd5c *98be6999bc659cbd5c98bd699ec1689cc1639abc6b9bbd6799be6c9cbd609bbd639abe619bc069 *9ec1649cc0699ebd689dbf669abe689abf689bbe5d99bd5e9bbe649bc0639bbe689ebd669ebe69 *9ebe6da1c1639cbf649abe699cc06a9ec06b9ec06ba0bd719fbe699fbf66a1bf659bbd689cc166 *9dc0619bbf77a4c169a0bf6ca0c16a9fbe76a0c0679cbc679bc0689dc1679fc0689fbe6c9fbe64 *99bc6f9dbf689abd679dbf6da0c16c9fc26a9cbf699fbf6d9ebf699fc05f9bbd619dbf6a9cc069 *9ec0699ebf629bbe699dbf629cbf6e9cbe699dbf6a9cbf6d9fc2699fc2659ec16ea2c169a0be68 *9cbf70a2c16a9cbe6ea1c070a1c1679ec1679fc16ba1c16ea0c174a1bf6da0bf6fa2c06fa1bf6c *a2c16aa0c173a3c26da2be6ca1bd6ea1c16c9fc06ea2bf6a9ebf6c9fbf6ca3c26ea2c36da2c06c *9dc277a3c275a4c26ea3c26ea1c16fa2c06fa3c470a0c272a4bf72a3c271a1c375a0c175a2c26b *9fbe72a3c378a6c474a5c475a5c170a2c170a3c173a4c26fa3c475a4c775a5c778a7c57da6c576 *a3c377a4c378a6c473a4c375a4c56fa4c578a5c578a5c378a7c277a2c46ea1c375a4c375a4c473 *a4c36ea0c175a4c275a6c376a7c377a4c37aa4c670a3c573a6c676a6c576a6c473a7c376a6c375 *a6c27aa4c57ba5c47da8c47ca7c67ba7c56ba4c374a5c574a7c674a4c677a4c676a5c47ea8c678 *a7c470a7c673a7c679a7c67ca6c479a5c572a5c677a4c378a4c475a5c674a6c479a9c77aa8c578 *a5c378a3c475a3c372a4c575a4c374a4c474a6c573a5c478a3c379a7c479a5c47ca6c67fa6c478 *a6c573a2c46ea4c46fa3c471a4c476a3c473a3c278a7c478a7c676a5c57da5c57ea5c472a3c67b *a7c57da7c580a6c37da5c371a6c57da4c27da7c479a6c676a4c37fa6c77aa7c476a5c672a4c37b *a6c676a6c578a5c677a4c47ca8c77ca9c773a4c475a6c472a4c370a4c373a4c37ca6c475a4c476 *a4c477a6c67ba6c57aa4c478a5c576a5c47ea6c478a6c47aa6c47ca8c77aa8c776a4c372a4c476 *a4c47ba7c578a6c579a6c579a7c77ca6c67aa8c783a9c680a9c67da9c57da8c682a8c780a7c777 *a7c78cabc989acc993b3cbafc1d1b0c1d3adc1d3abc1d39bb6cf84adc986aec785adc780aac682 *a9c781abc782a9c674a5c578a7c67ba5c67fa7c681a8c480a9c47fa7c57ca8c77da6c57da6c67c *a7c774a5c57ba5c57ba5c380a8c578a7c67daac67ba7c776a6c679a5c781a8c579a6c67da8c57e *a9c67aa6c67ea8c67ea9c573a5c472a5c677a4c481a4c37ea7c67ca5c678a7c479a7c779a6c474 *a4c370a4c77ba7c882aac684abc680a8c57aa7c476a6c583abc882aac780aac77aa7c584aac691 *b0ca90b0c896b2caa1b6cba4b8cfaabbcea9bccfa9bbcfaab9cda4b7cda0b4cc9cb6caa0b6cb99 *b4cc95b0c9a0b7cda4b8cd9db5cb9fb1c99bb4c99ab3c999b5cb99b2cb9eb7cc99b1c79eb5cba2 *b6c9a4b5cba0b5cb9db6cb9bb2cba4b7cfaebcd3aec0d2abbed1b0c2d3afc4d4adc2d3aabdd2b2 *c3d4b1c4d3b1c4d3bbc9d6bdc9d7c0c9d9c0cad8bdc8d7c1cad7c4ccd9c4ccdac4ccdac2ccd7c1 *ccd6c1cbd8bdc8d5bdc7d7c0c7d6bcc8d8b9c7d7b9c7d8b6c6d3b3c6d7aec0d3abbcd0a4b9cea4 *b8cca4b9d0a7bcceacbdd1aec1d1b3c4d3b0c3d3b1c1d0aebcd0b1c1d1b6c6d6bac6d4bcc7d7c0 *c7d5c1c9d5c1cad6c1c8d6c0c9d6c3cad8c8cedbc6cfdac5cddac6ced8c3cdd8c6ccdac7cdd9c6 *ccd8c5cddac7cedac7cedbc6cfdac9d0d9cbd0dbc7cdd9c5cedac7ccdac6cedac7cedbc7d1dbc9 *d1dbc9d0ddcad0dacbd1dbcbd3dcccd5ddcbd4dcccd3ddcdd4dcced6ddccd3dbcbd3dbcbd3dbcb *d3ddcad2ddc9d3dbc7d2dcbfcdd8abbfd199b1ca98b2cb98b1cc91afcb99b3cc94b2cd9cb2cc9c *b6cba2b6bbc2ccd1c7d1d8ccd5dbcfd9de70a0b9649ab66b9cba699cbb609abb6d9cbd669abb5f *9cbb6a9bba5e95bb6595b95e98bc5c96b95f99bc6499bc5d98bb6798b96597bb5f92b85c93b95c *93b9558eb96695bc5f95bb6498ba5991b6578eb7538cb6538db66097b95791b95991ba6092b95f *92b85891b95690b7568cb5568fb75c90b95a8ebb5996ba5a95ba5993b85690b9598fb8598eb753 *8db75991b75b90bb5891b95795b65994b9598db75692b95891ba5b8db85b91b8578fb95c90b757 *99ba6c9bba6e9abc709bbf6a9bbc6d9cbf6996bb789ec07fa1c1719ebd759cbc779cbd779cbd6d *9bbe6797bc5e95bc5f94b9558eb95c94b95290ba5c94ba5d94b95e95b95a90bc5491bb5895bc5a *98bc5696bb5d97ba5491bb6092b85c91b65c96bd5a92b85c92bc6299bd5f95b96796ba6195ba60 *96bb5f95bb6496bd5a96bd5d97be5895b95c96bb5f92ba6498bb5994bc6599bd5a96bd5e97bf57 *96bd6498bc6098bc6098bc5f98bb5b91b95e94bd5791bb649abd5998bb6197bb5992bb5f95bb57 *93ba5492bd5994bd5e93bb5996bd6199bd6399bd6894ba5c97bd5c97bd5c98be5c93bd6198bd67 *99bd6197bb5995ba6296bc5493bb5d97bd6095bd6096bf6e9dc1669cbe649abd669abf5f97be5e *97bd5d96be6398bd669abd609abf6399be649abe6499bc6799bb5e97bd6098bc619abc679abd69 *9dc0689dc06b9cbd6598bd679bbe6398bd679bbe6a9fc1669ebf6a9fc46ca0c26299bd649bbd65 *9cbe6099be6299bd689bbd6099c0649cc1689bc0699dc0669cc06699c0659fc1609abb659dc063 *9abf6b9cc06d9cbf6598bd6f9cbe5f9bbd679dc1659bc0659bbf6a9dc0679ebf6a9dc06c9dbf6c *9cc0649abd669cbd659bc0639ac1679cbf6a9abf759fc1709ebf669bbf639bc1699cbe6499bf62 *9ac06d9dc0679cc06d9cbe6e9cc1689ac065a1be6ca2bf699dbf6699bd699ec174a0c279a4c173 *a2c36da0c16a9fc3709fc16ca1c1609cbe619dbe6aa1c16e9cc0729fc26ca3c36c9dbf6d9dc06b *a0c071a2c379a3c36ca1c16fa3c369a1c164a0c26a9fbe69a2be68a0bf71a3c26fa0c16f9dc072 *a0c26ba0bf73a2c06ea1c16ca2c172a0c16da2c16ea3c3679fc071a1c175a4c66da1c36ba4c671 *a3c56da3c26ba2c36da1c173a2c173a3c072a4c36ca1c16aa1c172a3c378a5c573a4c17ca1c074 *a0c2749fbf73a3c273a4c376a4c577a3c278a3c473a4c670a4c373a3c477a4c66ca2c474a3c473 *a3c374a4c47aa4c379a4c475a4c66ba2c474a3c470a1c376a2c478a3c678a7c673a6c676a5c672 *a5c775a6c675a4c679a4c578a7c676a5c375a4c375a6c677a5c570a6c579a4c37da6c376a4c378 *a3c477a3c377a4c477a4c66ca4c373a4c368a2c371a1c177a4c276a3c373a5c472a4c572a3c376 *a5c571a3c373a3c174a3c170a2c275a4c376a3c572a4c579a7c678a4c570a4c477a4c476a2c674 *a4c37aa4c574a5c674a4c378a6c377a5c379a7c37da4c66ea4c575a4c47aa4c375a4c575a4c679 *a5c576a6c672a5c578a3c577a4c676a5c674a3c67ca6c776a5c675a4c67aa6c57ba5c37ca5c671 *a3c272a2c371a0c178a6c479a6c575a6c576a5c278a4c575a2c474a2c373a3c573a4c574a4c472 *a3c674a6c576a5c475a3c378a4c573a1c472a4c573a4c673a4c67ca6c678a9c580a4c17fa7c578 *a4c67ea7c674a4c57ea6c783aaca9eb6cfa9bfd2a2b9d19db7ce8eb0ca89abc67ba5c575a7c677 *a6c782a8c77da9c57fa8c575a4c475a4c576a4c678a3c475a4c373a4c680a6c676a5c577a4c576 *a4c479a4c476a4c276a3c574a4c57aa7c879a6c478a6c472a3c376a4c375a5c67fa4c378a6c772 *a3c576a4c57ba6c57da6c782a7c676a6c672a4c36ea1c57ba5c674a4c67aa6c776a5c37ea9c674 *a3c56ea3c573a3c579a5c779a8c777a6c67ba5c580a8c580a6c473a7c67da8c677a4c57da6c789 *a9c887acc888aac791acc79fb4cba6b7cca9b8cdadbdceaabcd1a5bace9db7cc9bb3caa0b6cc96 *b3c991aec886aac885abc891adc892adc998b1c998b1ca97afcb8faec991aec898b1cb96b1c996 *b1c89cb4cba1b5cca4b6cc9eb7cb9cb7cb9ab3cb9cb4cc9bb5cb97b0cc96afcc95b2cc98b4cc9a *aecaa0b4cb9ab4cc98b6cda5bad0aac0d5b6c6d6b8c6d6b9c6d4bdc8d7bdc8d9bcc8d8bfcad9bc *c8d7bbc8d6b7c5d5b6c4d5b4c2d4b1c3d2abbfd3a9bdd0a7bbd0a4b8cea4b8d0a9b8cea4b9cca1 *b7cca1b5cea2b7ce9cb5cba2b6cca0b6cba3bcd09fb7cfa1b8cda0b7cea3b8cfb2c0d3b8c4d4bc *c6d7bfc7d7c0c9d7c2cbd7c3cbd7c3cbd8c3ccdac7cedac6cddac6cedac6ccd9c8ccdac6ccdac6 *ccd9c9cedac7cfdcc7cedcc7cedcc7d0dbc9d1dbc9d1dac8d0dbc6cedbc9cedbc7ced9c6cddac5 *d0dbc7cedbcad2ddc7d1decbd1ddcbcfddcad1dccbd3dccbd3ddcbd3dbcbd3ddcbd3ddc6d1dcc9 *d2ddc9d0dbc3cedbc3cfdbc2cedab9cad9a5bacf9ab1cb8fafcb96b1cc96b1c996b1cb97b2cc95 *b2ca9eb2cba5b7bdc2cbd2c8d1dacdd6dbcfd8dc6f9cb7709bb76997b96997bb6794b56495b96b *96ba6f9dbb6a98ba6a98ba6495bb6597b95a90b66797ba6594ba6592b66b98b86391b76698b95e *92b6528fb65890b5598bb3578fb65990b5548eb65e90b8618cb6568fb45892b6588eb55a91b858 *92b7548cb75e8eb56492b8568cb54f8bb45f92b8558db65c95b6568eb5538ab65d91b96093bb5e *8db6518fb6588db4578eb65a93b95b90b65d8eb6538cb55a90b7588bb3578fb6558eb65794b857 *8eb65a8fb46696bb799cbd749abb709bbb6c9aba6897b86d98bd6e9abe749bbd769cbb779dbd79 *9bba6f9dbb6896b76291b95991ba5690b85393b8588fb8578cb65691b85b92b96096bc598fb75a *93bb558eb66196bc5f90b95291b85891b85e96bd6094bb5c92b55b91b76091b66893b66899bb64 *95ba6397bb5693bb5791bb5694bc5993bb5d93bc5794bb5f98bd6099bb6495bb6596b96697bc5d *92bb6094bc6298be5c94bc5995bc5995bb6096ba6094bb6492ba5f94b95a95bc5f96bc5d91bb5f *96bc5f96bc5f93ba5f94bb5e96bb6298bc5e95bd699bc06d99be5c96bb6299bb6297bb6296bc5b *95b76095bb5891bb5f97bd6199bf6196bb5b95b96496bc5c96b95f97bc6699bd6097bd6b9cc060 *98bc6099bd5a97bb6497bc6597ba6698bd6999bd669abe6299bc6a9cbe6197bb679bbc649abd5e *98bc699abe639abf679cbf6199be679cbe6a9cbc669abd6b9bbd699bbd699abf6397bd6f9ec16a *9cbe659ebe6e9cbd6a9abd6799be6897bd6c9dc16297bd659abe6e9dbd689abd6899bd6999bc6a *96bb6599be699abd6797bd6499bd71a0c06b9ebf6a98bb6a99bb6a9abd6c9abc689ec0699dbf65 *9cc0709cbf6c9bbc6c99bb6b9abe659abd699bc1699ac0679abf689bc06b9dbd6d9dbd6a9abd68 *9abe639abd669dbe6a99be609abe6d9dc26d9cbd709ebd6d9dbe6f9dbe6a9cbd6d9ec1699fc06c *9ec06fa0c070a1bf6fa0c177a2c16ca0bf6da0be6c9dc173a1c36c9cc17aa2c169a1c16c9fbf70 *9fbe699cbd6d9ebd709fbe6ea1c175a2bf6c9fc071a3c076a0c073a3bf73a3c06ea0c16ea0c06f *9dc076a1c2739fc074a0c076a1c169a3c16fa0c069a0c169a2c071a3c26fa4c375a3c37ca1c073 *a1bf6d9ec0699fc072a2c272a5c270a1c175a2c3659dbf6fa2bf76a1bf7aa2c16da1c079a4c26d *a1c273a3c475a2c077a3c07aa3c26ea1c275a4c173a2c273a4c573a1c378a3c17ba5c47aa5c476 *a4c27ca4c275a2c176a4c271a1c174a2c36da2c279a4c57aa4c276a4c26ea2c273a3c577a5c679 *a5c66da3c579a4c47ca4c576a4c47aa6c370a0bf73a4c273a4c171a4c478a4c175a2c376a2c379 *a4c374a4c276a4c67ca4c377a3c178a4c371a4c47aa4c472a4c379a4c479a3c478a5c46ca1c073 *a3c374a4c26fa0c373a4c378a5c472a3c474a3c376a4c376a3c374a2c376a4c478a5c474a1c26f *a0c37da5c576a5c56ba1c17aa4c376a4c274a3c277a2c27aa4c677a2c571a3c374a2c278a4c274 *a4c371a4c373a3c36fa3c372a1c478a1c37da4c37ea4c371a4c371a1c375a0c17aa4c376a4c478 *a3c377a2c274a2c276a5c374a4c279a4c271a2c477a5c480a5c480a6c37ca3c376a2c37aa4c677 *a6c574a3c578a4c474a5c576a4c579a4c578a2c375a5c476a6c172a4c473a0c376a5c679a3c377 *a4c477a6c674a6c574a3c579a4c582a7c684a8c78cafcb8eb0cb8faecb88adc78eacc783a6c377 *a5c475a4c276a3c37ca6c374a5c574a4c376a6c473a4c67da4c379a3c47fa5c76ea4c37ca4c679 *a5c57ca6c674a5c574a5c477a2c475a2c377a3c275a4c471a2c37ba6c77da6c675a4c479a4c47e *a4c36ea1c37ba5c379a5c67ea6c677a5c675a3c175a4c379a1c17ea4c382a6c675a5c477a4c47c *aac678a5c679a5c181a4c36fa2c47da5c47ca7c481a6c681a7c778a4c579a5c47ba6c57fa4c37f *a6c384a9c584aac789abc893afc99eb4caabbdcfaebcceacbccca8bacea4b8cd9fb5cc9bb3cb95 *b1ca9ab1c891aec88bacc88ca9c686a7c78faac787abc793adc897b1ca93afc992aec991aec794 *aec795b0c893b0ca96b1c99eb2cb9db4cb9bb2c99db5cba1b5cc9db4cb98afc897aec891adc796 *b0ca9cb3cb99b1cb98b0c897afca94b0ca9bb2cbadbcceb2c3d2aebed1afbed2b6c3d6bbc6d6bc *c6d5b6c0d3b0c1d3b2c2d1aec0d3acbcd1aabbd1a6b9cea3b5cb9eb4ca9fb6caa1b6cea8b8cea8 *bacfa8b9cca8b7cea9b9cca4b6cca4b5cb9fb2c99eb0c99eb4cb9bb1cba0b1cb9cb2cbacbdcebc *c6d3bdc7d2c0c8d7c0c9d7c1cadac2cbdac2cbd8c4cad8c7cbd8c8ced9c7cfd9c6cdd9c9cfdbc8 *cfdbcacfdacacfdccad1dbcbd0dacbd0dbc9cfdcc9d1dbcbd3dbc8d1dbc8d1dbc8cedbc9d0dac8 *cedac9cedbc9d1dbc9d0dbc8d0dccbd2ddcbd3dbcbd3ddcbd3dcccd1dccbd1dacad1dbcacfd8ca *d1dbc7cedcc3cbd8c3ccd8c3cbd6c1c9d7b8c6d3a4b8ce9db4cb94b1cb97b0ca97b3c98baec899 *b2ca95afc998b2c99eb1b5c4cbcfc8d2d7ccd5d9cfd8df709bbc6897b86d9cbb6d9bbb699cba6a *99bb6498bb669cbd5f93bb6298bb6492bb5f95bc6893b76797b85e96b95f97b85d94bb6697b859 *92ba578cb66394b85f92b85290b8558eb85b8db65e94b95c91ba5593ba5791b9548eb75c92b958 *91b8528db85590b85b91b85b8bb8578db66097bb5991b7558fb7588fb8598eb7538db6568cb65a *95bb5c94b95391b95492b95a92b85791b9588cb7568cb5578eb7528eb9538ab6528ebb6196b853 *8bb5508ab4548eb65d90ba6998bd6e9cbd6f9cc06a99bd6996ba6498bd6998bb7098b76f9dbe74 *9ebf759cc07099be6498bc6193b85b94bb588db6528db75994ba5391bc528db94c8ab7578fb95c *8eb75791b85791b65494bb6696bb5e92b85491ba5c95bc5795bb5c95b95293b85892bd5d91b863 *93bb5f95bc548fbb5f93b85d95ba6799bb5c93b86295bb6294bb6395bc6596bc5f97bd5f95bb5e *96bc5492b95d94bc6298bd5a92bb6097bb5f96bc6499bc5996bc5e96bc5693bc5792ba588fba62 *95bc5e97bc6298be669dc15996bb5992ba6397bb5e96bd6c9bbd6399bd6295bb5a96bd5e98bf5f *96bc6398bc5c97bb6196bb5896bc5f9abe6198bf5a97bd6498bc6898bd6399bb5e98bd6999bc65 *9bc05d99be6597bd5f96ba6499bd6597bd5e98bb5c99bd639bbf6198bd5f95bd6299be669bc06a *9abe669dbd6d9ac06397bc5e98bc6197bd6698bd689abd679abd659bbf6c9ec1639bbf6899c163 *9bbf6598bd6499bd659bbd6aa0c06c9cbd6e9bc06a9cbf639abf659abe649bc0649bbd6b9cc165 *99bd699bbd699abd6b9cc1659bc16799bf669cc1679bbd679cbd669cc06b9cbf6b9bbf6d9bc070 *a1c06b9abe659cbe689cbd679bbe699bbf6b9dbe6d9ebf5e9abf649abf629abd649bbe639dbf68 *9ec1619cc06ca0c16e9cc1699cbf649cbf629cbe619bbe699cbf6c9ec16da1bf709ebf6ea2c16e *9fc1659cbe699ec173a2c1739fc16da0c073a2c1669cbc6a9ebf6d9fc0689cc1689bc2659dbf68 *9fc26ba0c16e9fc16fa0c16b9cbf649fc26e9fc177a2c36e9fc26ea2c36ea2c36ca3bf6fa2c074 *a2c26da1c273a1c26ea2c26fa1c26b9fc173a4c56ca0c16c9bbf70a0c16aa1c16c9ec16da3c36f *a2c16ea2c169a2c26fa4c278a3c477a3c270a0c273a2c16ea1c474a4c66fa4c373a5c27ca4c375 *a2c374a3c271a3c376a4c373a2c371a3c072a4c476a5c472a2c272a4c373a3c3699ec06ba1c26c *a1c570a3c677a4c676a4c375a3c377a3c275a3c271a3c277a4c27aa4c481a8c579a6c575a4c479 *a3c373a3c475a4c47aa5c473a4c679a7c775a4c67ba3c179a5c375a3c475a2c16ba1c174a4c475 *a4c476a7c673a3c372a3c376a4c073a3c175a5c376a5c676a2c478a3c373a3c373a2c37aa4c279 *a4c37aa4c573a2c370a0c26ca0c375a4c56fa2c479a5c67ba6c576a4c373a3c373a1c378a5c677 *a4c5729fc274a2c373a2c276a4c378a4c26da1c372a3c27ca4c676a4c471a4c576a5c475a4c578 *a6c675a4c478a2c46ca2c175a4c373a2c471a3c56fa3c478a4c379a4c579a6c675a3c676a1c377 *a5c379a5c574a3c57fa7c776a4c373a4c372a3c273a3c377a4c576a4c674a3c676a4c678a6c67c *a5c575a4c572a3c372a3c371a4c670a2c672a1c577a3c66da4c66ea4c36fa2c374a2c277a4c574 *a4c678a3c47ca7c672a4c37ba6c777a5c579a4c57ba7c87da4c67fa9c980a8c878a4c679a8c878 *aac673a4c277a3c56ea1c576a4c47ca6c677a3c578a3c57aa4c675a3c476a2c370a4c679a7c67d *a4c672a3c475a3c576a4c579a7c778a6c57ca5c578a4c674a5c376a5c373a4c479a5c676a4c776 *a5c676a6c675a5c375a5c573a5c375a4c67ba6c57ea6c472a4c674a4c478a3c37da7c680a8c679 *a6c57ca6c479a7c677a5c676a5c67aa7c680a6c57da7c578a3c47ca4c575a4c475a5c379a6c67c *a8c685a6c684a8c587a9c788aac698b2c7a2b8ccabbbd1aebbceadbed1abbbd0a7b8cca1b5cba0 *b5ca98b5cc98b1cb91aec98daac88badc885aac78aacc78aadc995b0cb93aec993adca8cacc987 *a9c789acc88aaac795b0ca9ab1cb9bb3cb8aaeca95b0ca9ab3cc9ab2cb96b1cb95b1ca97b1cb92 *aec996b0cc97b0ca98aec89cb2cb97b1ca8badc891aeca9fb5cda8bcd1a9bbcfa5bbceacbfd3aa *bdd3abbcd1acbbceadbccfadbbd1aebbcdacbbd1abbad0a9b9cea8bacea4b7cea1b7cea8b9cfa9 *b8ceaabad0aab9d0a2b9cea4bacea6b9cea8bad0a2b6cca7b7cda5bace9fb4cc9bb4ca97b0cba0 *b7ceb8c5d6c1cad8c3cbd8c3cad6c3cad7c2cbd9c2cad8c3cad9c6cddac7cedccbd2dccad2dccb *d1dcc9d1ddcad2ddcbd2ddcad2ddc8d2dccbd2ddccd3dccbd3ddcbd0dbc8d0ddc7d1dbc7cedbc6 *d1ddcbd1ddc9d2ddcad2ddc9d2ddc9d0dcc9d1ddcbd2ddcbd1dccad1dbcbd1ddc9d3ddc9d3dcc9 *d1dbc4cedabac7d7bdc9d7bcc8d8b8c7d6b3c6d6a7bdd2a1b7cc9bb3cb94afcb92afcb99b1c98c *aec891afcb97b0cb96b2cba6b6bbc5ccd3c8d2d8c8d1d8ced7dd6e9abb6a93b8679bbd679bbd6d *9ac06f9cbc6492b76d9abc5b91b76395bb5b94bb6095ba5691ba5e92ba5992b65c93b85e92ba63 *92bb5c94bb5591b95a8eb85d8dba5a90bb5b90b95a8cb8568db6548cb7598db9558ab96090bc5d *8fba5e93ba6195ba6191b7578eb6558eb7598fb7528cb55d94b85991b75a93b7598fb7528eb752 *90b7568dbb5b92bb5a90ba4f8dba558db9548eb8578fb9578bb6548db75d94b86196ba5190b95f *8fb7638eb75893b85892b85e92bb6998bc6997bb6f9bbd6898bc6393bb6599bf6a99be6a99be6d *9cbd6f9bbe6b99bb6b99bd6197bd5e92ba5b91b9538cb95f93bb518cb74f90b85591b75b92b954 *90b9548eb95a8eb95f90bb6492bb5392b75793bc5091b84f8fbb5390bb5c94bd5d95bb6394be61 *92bd5d94bb5892bb5791bb5691bb5a93bd5f91ba5e93bd5892bd5c95bd5392bd5091bb5d94bb60 *98bf6094bc6294bb5a91bb5e95bc5b95bd5c94bd6093bb5a91bb5d92bb5d95bd5b94bb5692ba5c *92bb5c94ba5b95bc5c97be6197bc6198bd5a96bc5e97bc5f98bd5c92bd5a91bb5d98be5d96bd5a *96bd6496be6298be5893bf6599bd5f96bc5f94bd6596bc5c94bd5e93bb5f98bb669abd6298bf69 *99bb6298bc6297bd6199bd6a9bbf699abe6196be6297bf5d97bd5795bd6496be6198bc5e97bc5c *98bf5e99be6097c06b9ac0669abe6099bc6599bf6597bd6398bc669cbe6999bf6299be669cc167 *9bbe6b9abd6c9abe6398bf6099bd689abf699dc1619ac0679cc1699dbf6a9cc0659bbf6198be68 *9ac1659ac0659cc1639bc0669cbf6a9abe5b93bc6698be6299c0639abf6399bf6299be699bc063 *9abd6d9cbd6299be689bc1679ac1689dbf659abd649bbe6b9ec1649bc16d9cc16499be679cbf67 *9bbc6e9cbf679abf689cc1689dc170a1c16c9ec16c9ec1679bc16299bf6a9dc16aa0c0689dc16a *a0c36a9fc1699cc1699ec1679bbe6a9abe6e9ec2669abf649ec06ca1c16f9fc26498bf6b9bbf70 *a1c16ea0c1679cc06b9ec16ca1c373a0c16fa0c16d9dc16c9fc1659ec16a9fc170a1c170a1c26b *9ec26da1c070a1bf669bbe6d9ec1649fc16ba0c2669ec169a0c277a0c172a3c374a4c46da2c169 *9fc16da2c66ea2c26aa3c16ea3c379a6c570a2c16ca2c270a0c279a2c171a4c46fa3c376a3c472 *a1c372a2c17ba4c175a3c373a3c376a1c377a2c273a2c36fa0c173a3c36ca4c56fa5c472a1c172 *a3c171a4c676a4c47da5c577a3c470a2c475a4c379a5c576a2c670a1c477a2c378a4c478a5c479 *a3c46ea3c575a6c56da1c172a4c670a2c374a3c577a4c377a4c46ea3c676a4c677a6c56da1c46b *a0c372a0c373a2c379a4c372a2c475a3c373a3c46ca2c2699fbf73a2c375a2c36fa0c377a3c36b *a3c36fa3c378a6c671a3c574a2c374a2c475a3c573a2c473a1c370a1c377a5c575a4c577a4c577 *a2c278a4c575a2c673a4c373a2c471a4c379a6c37ca7c670a1c376a4c47ca4c575a4c76ca4c670 *a0c57aa6c57da5c67aa4c377a2c576a4c572a3c378a4c46aa2c376a4c371a3c480a6c66d9fc174 *a1c375a1c36fa1c36fa2c573a3c473a3c471a4c573a2c374a3c575a4c679a4c672a0c375a3c57a *a5c66ea3c477a4c57aa6c777a5c577a4c675a4c472a4c378a5c679a4c66ea1c373a4c379a4c580 *a7c676a4c676a5c676a4c673a4c677a7c770a4c478a6c679a4c682a6c683a6c77ca6c780a7c678 *a5c673a4c56ca3c476a4c579a3c676a1c36da2c374a2c47aa4c574a3c36fa3c577a3c673a3c575 *a3c679a5c56fa4c56ea2c574a3c67ba6c677a3c675a3c670a3c677a2c476a3c37aa7c679a4c379 *a4c473a3c676a4c676a3c675a3c770a5c37aa6c66da4c46aa2c36ca3c673a2c274a4c680a7c87d *a6c67ea7c77ba5c778a5c276a4c670a4c578a3c67aa4c676a5c578a5c67ea4c577a3c57ba5c679 *a5c676a6c57da8c784abc987acca8badc894b0ca9db5cca5b6ccacbbcfacbdd1acbbd2aabcd2a1 *b7ce9ab2cb9ab2cb99b2ca92adc995aec98aabc78aabc98aaaca86aac993b1c993b1c994b1c98a *adc994adc992adc995acc793b1cb8daecc98aec88baac88daec992aecc8eaecb92aecb96adca8c *adcb97afc99bb3ca97afca96afc995aecb93adc88facc990b0cc95afcc98b1cb9ab4ca9bb1cba1 *b5cda3b7cda8b7ceabbacfaebbcfb1bed1b1c0d1b4c0d3aebccfacbdcfa7b9d0aabad1abbbd0a9 *bbd1abbbcdabbccdaabbcfa9bbceabb9cfacbbcea9bbd0a7b8cea4bacfa4b9ce9cb6cb97b1cb99 *afcc8fafcaa9bbd2bbc6d8c1cadbc4ccdbc6cedbc5cddbc6cddac4cbdac7cddbc8cfdcc9d1dec9 *d0ddc9d0ddc9d2dccad3dccad1dbcbd1ddcad1ddc9d2ddc7d0dcc8d0ddc6d0ddc6cedcc3ced9c8 *cfdcc9d0ddcad0dbc8d0ddc8d1ddc6d1dec3ceddc7d1dbc9cfddc7cfdbc7d0dbc4cedcbdcbdbb5 *c8d8b3c3d9abc1d2a5bbceaabfd1a2bbd19db3ce96b1cc97b1ce9ab1cd98b2cd9ab2cb91afca95 *afc98cacc993afcb90aecc9aafcaa9b7c2c3ced4c9d4d9c8d3d9cdd7dd6495b65793b65f95b867 *9ab66596b96295ba5f95bb6594b86994b65f98b86594b65d92ba6092b6568eb6598cb65f93ba5c *94ba5c8fb45890b64e8bb5538bb55791b65391b8598cb6528db7578db55790b3528cb3528cb65a *90b6538db6548eb6538db75a91b9538bb4558bb34e8cb5588eb44e8db74e89b7538bb7548cb954 *8cb8558cb6528db64f8cb5528ab15088b1518bb64e89b2538cb6558cb45387b15291b65690b751 *89b44c8db7558cb6548eb6548db6578db55c96b75a96b85f96ba6e97b86398bb6593b96c97ba68 *95b86c99bb6799bb5c96bb6292ba6298bd6192b7588fb65292b74f92b75493b75e96ba4f8cb759 *93b84f8bb6528fb55291ba5592b64f8eb85290b75091b85891b94f8eb6538cb85b8bb75391b64e *89b35d96b85492b95c94ba5b93bb5c92b7558cb75e95bd5692b85a93b94c91b64e8eb75d93ba52 *8bb95c92bb5d91ba5e96bb5892ba5a95bb5592bb5d95bb558fb85a92b85d95ba5a92bb4e90b961 *93bb558eb6548fb66196bb5d95bc5694b95191b86093bb5592bb5893ba6299bb5e94ba5b93b756 *92ba5c94bb5a93bb528eb65e94ba6195b95892b95a93bb4c8fbb5c91bb5a94bb5c94bb5d93bb64 *98bc6598bd6196bc5e98bd6199ba5b92bb5a96ba5f96ba6095bc6297ba6298bb6099bd6299bc60 *97bd6198bd6299bd6096bc5f96bd659abd5c99bc679bbe699cbc5f95ba649bbf6e98bc6396bb5d *97bb5e9abe5f9abe649cbe6497be6497bc679abe5c97bc5a96bd649abe6299bd6099bd5d99bb62 *97bc669abe6699bb6599bb659bbc5a97bb6798c06799bd6197bd649abb6098bb5792b85d93bb5b *97bc6498bd679bbd5e97bc6499bd6499bd5f97bc619abc659abd6098be6298bd6598bf6a9abe6f *9bbd689bba629bbd6d9fc0629cc1679dc0639ac06ba0c0689cbf5c98bc669bbe699abd5f98bd61 *9abc679dbf699abf679cbf649bbe6a9cbe619abd6399be6499bd6b9dbd6c9ec06a9dbd6c9bbe6c *9cbe6ca1be669dbd669cbd6b9dbf669fbf659bbe6a9dc06b9bbf6da0bf659cbf629bbe679dbf71 *a3bf6ea0bf6a9dbe699fc36c9cc16e9ebd6a9fbf6aa1bd689cbe689ebe71a1c269a1c179a2c176 *a1c06ba0c165a0be67a0be75a4c16ba1c16da1c3699dc173a2c56fa0bf73a0bf6aa0be6ba0c06b *9fc0699ec174a2c173a4c3749fc070a1c172a2bf689ebe6ca0bf72a1be6da0c071a1c1699ec270 *a3c26ea0bf75a4c36ea3c274a3c275a1c16c9ec16a9ec171a0c26aa0c273a2c170a1c26ca2c56c *a1c072a0c16c9fc172a2c16ca2c173a3c173a1bf70a3c174a1c2759fc066a2c17ea4c474a4c46c *a3c376a4c26ba1c06aa2c1699ebe6f9fc06c9dbf6c9dc06da1c273a4c473a1c16ba3c16ba1c068 *9fbe6fa3c170a1c175a3c26ba0c36ba0c269a1c36ba1c074a5c36ba1c273a3c373a2c474a3c36c *a0c377a3c371a2bf6b9fc16a9ebe72a1c368a1c072a2c17da4c370a4c175a0c072a1c26ba0bd70 *a1c169a0c073a4c266a1c3679fc36ca1c075a4c476a3c375a1bf74a1c2739fc26fa1c275a3c26d *9ebf70a1c275a3c26ca0c172a3c36fa3c370a2c375a1c374a1c074a2c173a3c072a4c370a2c365 *9dc16b9dc36f9fc270a1c369a0c36b9ec371a1c370a4c372a4c16fa0c26c9fc26ea1c374a1c36c *9ec1679dc275a4c675a4c379a5c577a5c57aa6c575a2c478a4c579a4c473a3c277a9c682a9c774 *a4c680a4c274a3c369a1c271a2c371a1c177a4c472a2c371a3c175a4c472a3c36b9ec1729fc175 *a2c26ca1c171a0c275a3c474a2c374a2c474a2c375a2c272a1c268a1c373a4c57ba6c5729fc46d *a3c372a4c36da3c374a1c272a1c277a4c477a4c46ca2c375a2c579a5c172a2c26b9ec26ea3be73 *a5c570a5c574a2c3679ec478a8c379a4c376a4c573a4c379a4c473a3c37fa5c37ea6c47fa5c677 *a7c573a5c476a1bf7aa5c484a9c68cacc791afc797aecaa1b8cca7bacca9bbcda8bdceaebdcfac *bccca7b8ca9ab1c99bafcb9fb4cb9eb6c999b1c793afc98babc689a9c785a9c785aac78baec88d *aec897b0cb96aec996aec798aec695acc789acc88aadc98dacc78dacc691afc88eadc98cacc692 *abc893adc78cabc892afc999b2cc9bb2c893aec98cacc78eacc791aec99ab1caa0b2cb9cb1caa0 *b3cca2b8cca5b9cbabbaccadbbcbb1bccdafbdd1b1c0cfb2bed1b6c1d0aebdccacbbcbacbbceac *bbcdacb8ceadbad1adbaceb0bcceaebbceb1bdcdabbdceacbbccaab9ccaabacda4b8cd9cb1cb97 *b1c991aec887aec890afcb9bb4ceaec2d7bcc9d9c2ccdac3ccdac2ccdbc1cbd8c1ccd9c1ccd9c7 *cedbc8cfdbc8cfdbc8d0dcc9d1ddcbd0dac8d0dac6d2dbc5cfdcc0ccd8bfccdab2c7d5a6bbd1b7 *c7d5c0ccdbc3cedac3cedac4cddbc1cdd8b4c8d6afc0d3bcc9d6c0cbdbc1ccd8b6c7d5adc1d3a9 *bbd0a6bccd9eb7cb9bb6cb9bb3cb9ab3cb92acc88eaec690adc790aec58aaec78caeca94b0ca96 *afcb93b0cb96afc798b0c999b0c99ab3c7a0b1b9c2ccd3c7d3d9cbd4daced8dd5f96b85f91b86c *95b86596b65d92b56093bb5c8db7588fb8578bb6568cb95f8ebb5a8db8598eb85d90b75791b957 *91b75991b76491ba5e93b8598eb85b90b75892b86092b6588db7598ab75c8eb5598cb6528cb654 *89b75a8bb65d90b74e89b6588db5568fb7578fb6598fb85890b86294b85c8eb5518bb5598eb54e *8bb5518bb6538bb6508bb7528bb8548bb65789b6528db7548cb6538cb5568db6598bb65187b350 *8bb4578cb6518bb6578db65b8db6588eb65a96b7588db66393bb6995ba7899ba6a96b85d93b85f *93bb6792b95c92ba6093b95f8fba6796bd6997be5e92b86392b75c94bc5591b9528ab55692b954 *8cb8558eb8518fb85b92b9568fba5991b9538eb95d90ba548db76192b85b91ba5c8db7568ebb5c *91bb5d91bb508bb65b91b95490b65d94b95a94bb5e93b95a8eb65d92bb5f95bb5692bb5d91ba5e *93b95792b65c94bc608ebb5690ba5791ba6194ba6095bb5d94bb5890ba5c94bb6092bb5890bb5e *92bb528db85e91b85c93b85e95bc6098bd5d94bb6491b86595ba6296bb6096bd5d95bc5f93bb5a *90bb5f96bb5e95bd5b91bb6294bd5f92b86095bb6095bb6094bb4f8db85d95bb5d96bd6292bb5f *95bb5c91bb5d92ba6698be6699c16097be6097bb6498be6295bd6896bd6896bc6598be5a98bd61 *99bd6095bc6698bd6498bd6899bc6397bd5b96bd6096bd639abc5f97bb659abd609abd6498bd6b *99bc6599be6299bd6499bb6a9bbd679bbe6199be649abf6998bf6196bd6699bd6398bc5f96ba61 *96ba679bbd6a9cbf5995be6898be6798bd6599bd6096bc6397bc6697bc6799bd6899bd6397be63 *95bb6797bb6c99be6699bd669abc6198bd6799c06d9cc16a99bf6b9abe6397ba6499bd6096bc68 *9cbd669bbe5e9abe659bbd6d9cc15f99bd699cc16c9cbd6c9cbd679abe6499be6b9ec1719cbd6c *9abd6899bd6599bd679bbe6097bd699abe689bc16c9ec06c9bc0699bbf659dbf6a9cbf5f9ac069 *9ebe6a9cc16da1c36ea1c16d9dbf659bbc669abe649cbf719dbf6c9cbf6e9dbe669ec1689cc06a *9cbe6e9dc06b9cbe699bc06b9cbe6d9cc26e9fc26b9ebf6ba2c26fa1c0689dbf709fc169a0c171 *a0c0669ebe74a0bf73a1c26da2c37da0c06e9bc06ca0bd70a1be72a0c378a2c173a0c274a1c16d *a0c36da3c3669cc06c9fc073a2c167a0bd72a1c171a2c271a3c375a1c36f9dc174a2c270a3c06d *a1c177a2c175a2c378a3c578a3c477a2c26da0c16ea1c16f9ebf6fa0c16fa3c272a2c575a1c374 *a0c36da0c16a9fc071a2c36ea2c273a1c16fa0c1719ec372a2c479a3c676a0c173a1c174a4c273 *a0c06b9dbf73a2c36d9ec175a0c373a1c173a2bf6ea1c36ba0c16fa2c274a1c372a2c377a3c374 *a2c373a1c373a1c16da0c26f9fc275a0bf739ec0719dc16ea0c36fa1c274a2c36da0c272a2c373 *a3c274a1c174a4c376a4c37da4c378a3c376a0c26da1c373a1c16e9cc278a3c378a3c378a3c674 *a1c375a4c46c9dc277a4c274a2c3719fc07aa4c377a5c570a0c074a2c277a2c276a2c1729fc175 *a1c26d9cbe75a1c26f9fc36d9fc171a3c373a3c56ea2c46fa1c272a1c271a2c26ea2c3729fc375 *a3c476a2c56da0c36fa2c26ea1c374a3c470a0c370a0c274a2c572a0c176a0c278a1c272a0c272 *9fc36a9ec2649ec170a1c479a3c37ca7c679a7c672a2c372a0c3759ec370a0c470a0c479a4c57c *a5c575a3c36ea3c3739fc172a1c376a0c374a1c372a4c46da0c279a3c36fa2c274a4c46ea1c372 *9fc3739ec476a2c175a1c376a2c574a4c673a5c376a3c377a3c375a0c26fa2c576a3c372a1c375 *a4c375a4c377a5c46aa0c2739dc36fa0c378a4c373a3c475a4c379a4c367a2c278a4c36fa2c277 *a4c379a2c47aa3c375a1c373a0c375a3c36fa2c37ca4c673a2c373a3c278a3c479a2c375a3c17c *a4c478a2c57ba4c37da6c47da5c486aac68dacc894aec79cb1c99fb6caa4b7cca8bacfacbcd0b1 *bbcfaebccea9bccca4b6cba2b4cba4b6cba7b8d0a6b6cca5b6cb97adc88faac793abc98fabc78c *aac58badc995acc896b1ca96aec994aec796adc78facc795abc78baac893acc991aec98badc995 *adc98facc88eaac692aac99bb0cb9fb5cba2b5cc9fb1cb9bb0cb93aec99cb0c9a2b4cba0b3cba3 *b7cca3b5cca5b8cea9bcd0afbcd1b1bcceb4bed1b4bdd1b5c1d1b2c0d1b2bdd1b1c1d1b3bfd5b6 *bfd1b6bdd0b2bcd0aebdcfb3c1d1b1bed0b1c1d1b4bfd2b1bdd3b1bdceb2bccdadb8cea4b6cb9d *b6cb98b1cc89a9c68babc98dacc68eadcb94b0cb9ab5cfa7bdd2adc1d5a8bed59fbbd1a7bbd3ab *bbd2b8c4d6bbcad8bbcbd8bdcbdac2cddbc5cddbc3ccdabdcbdab2c6d9a9bed29db5cf99b0cb97 *afcba1b9ceb0c2d3bbc9dabbc9d8b9c9d8aec1d3a0b9ce9bb3cba4bad0a7bbd1afbfd1a8bbcd9b *b3cea0b6cba3b8cd92b2cc97b0c999b0c791afca9ab0ca99b0c996afc992acc999afc996aec997 *aecb98b0c996b1c898aec99bb1cb9bb1ca99b0c8a8b5bbc4ccd2cad3d8ccd5dbced8de6593b65e *93b66997b86796b56197b96b96b86893b95f93ba568db7588eb65993b85a8eb75d91b86190b95c *8db45d91b6508bb55e91ba568eb65e90b6598eb6528db65c91b85e95ba548cb6578db75690b755 *8eb65890b7508cb9518eb8588cb5558db6528bb6578bb7548cb65789b4578eb65993b8558cb657 *8db8578cb6558cb6588bb45790b8528fb7538db85e97b95892b9528eb6558eba4f8bb4538cb650 *8bb4528db75890b8508cb64f8bb6578cb6528eb65b8cb55c8fb6578fb66094ba6394bc5b92bb5e *94b86296b86396bb6194b96095b9588fb75592ba5392bb5993bb5a8fb8528cb75791b55a93b951 *8db7558cba548eb8588fbb538cb8508ab2538db65991b95791b85d93bb5c95ba5391bc5d95bc56 *8fb5568bb45a91b75390b7528db6508cb85592ba4e8cb75793b95791b65d8cb86091b9568eb953 *91b95092bd5c93bc5994bb5391bb5491ba5f94bb5e95bc5d96bc5c96bc5f95bb6097bb6198bc61 *98bc5a96bd5c8fbc5b93ba5d99bc5d93bb5b95bc5e94bb6193bb6596bb5c92bb5f96bc6297bd59 *93bb6093bb5993bb5e97bd6498be5f95bc6393b86397bd6197bc5f95bb5392bc5c91b95892bb5a *95bc5f94b96595bd5e94bc6597bc5d95bb5f96bb6497bc629abf6194bd6095bb6695bc5e98bc59 *99bd5d9abd6298be6097bf649abd6497bd6b9bbd6296bc6299bc669bbf5d97bc5f98bb5996bd65 *98bd6599bd6699bd689abc679bbd609abe6398bc649bbe6498bd6599be6a9cbf5a96bc659bbe61 *96bb679abd5e95bc6a9abe6e9abd6a9ec06797bc6497bb6b9bbf6099c06199bf6b9bbd6097bf6a *9abf5d95bd6899be659abd649abd6299bc6197bc6898bc6699bf699abf629abe6c9bbb6c9ebe69 *9dc0689bbd659bbe639bbf669bbd679cc0659bc1659dbe6d9bbd6c9dbf6c9bbf6c9abe6a9abd6e *9dbf699bc0719cc06c9cbd6899bd659abd6598bd699bbd699bbe689bc0659abe6da1c0679cbe69 *9fbe70a2c1689ec0659dbf659bbe6e9bc1679abf699dc16e9fbf679abe6c9dbe639bbd6e9fbf6a *9fc072a2c16c9fbe71a0be72a0bf669ec070a2c26e9fc0699cc075a3c175a3c16e9ebe70a3c36b *a0c16ba0c1699dbf6fa2c574a4c36ba4c26ea1c270a0c176a3bf6ca1c173a0c269a1c26ea1c46f *a1c174a4c06fa4c276a3c36ea2c1699ec1699fc26ba1c371a0c073a1c072a2c26fa1c175a4c17a *a2c170a1c270a0c36c9cc06aa1c26da1c270a3c36ea3c373a3c576a1c36b9dc26c9dc0709fc172 *a3c46ea3c275a4c372a3c16fa0c1739fc16c9ec16da0c36ba1c36ea0c36ca1c272a3c569a1c276 *a2c576a0c36d9fc070a0c475a2c56da1c379a5c46d9fc06ea0be79a0c0689bbf689fc073a2c270 *a2c16ba0c172a2c36da0c26ca0c06fa1c275a3c36da1c2689fc3719dc275a4c473a2c572a3c374 *a3c373a4c474a2c374a0c175a4c375a3c273a2c178a2c16aa4c26fa4be729cbd73a2c372a4c475 *a2c36da1c472a3c577a2c370a4c574a4c679a3c36ba1c371a1c370a0c37ea4c372a1c36fa3c372 *a3c36da3c376a2c3709fc271a0bf729fc176a3c079a5c372a4c46ea3c471a3c4709fc171a1c16c *a0c46b9fc26a9ec177a2c56ca3c374a2c46fa0c473a1c474a0c276a4c3729fc3709ec177a2c472 *a3c46c9ec374a0c36ba2c273a3c676a4c46da3c473a3c477a4c675a4c478a3c678a3c37aa3c379 *a4c373a0c374a1c36aa1c46ea2c36da1c474a4c272a3c372a4c371a1c370a1c36ea0c36fa2c272 *a2c37ea4c56f9ec175a2c373a2c36ba1c26f9fc36da1c477a5c674a4c677a4c577a4c374a4c378 *a3c276a2c378a4c56ca2c47ca5c675a4c575a3c379a5c579a4c379a4c27ca5c56da4c37aa5c674 *a4c477a4c479a5c67aa4c66da2c370a4c56da2c373a5c36da3c375a3c46ea4c478a6c679a1c179 *a4c477a4c57aa4c57da6c681a6c686a9c68bacc993afc88fadc894b0c8a3b6caa8bacda8bacfaa *bad1aabbd1aabbd0a7bacda5b8cca0b8ce9ab5cca4b7ccaabacda8bad0a4b4cc9aafc997b0c995 *aec88caac98cacc78dacc893afc98eacc994adc896aec892b0ca8eaec891b0c995b0c98dacc986 *abc98daac88cabc795adc99db0c99fb3cda2b5cba5b6cba0b4cba3b6cc9eb3cca6b7cea7b7cda8 *baceaabacdacbacfaab9d0a9baceadbbd0b1c1d2b7c3d3b7c3d2b6c2d5b3c2d1b7c3d1b6c3d1b4 *c2d2b9c3d5b9c2d1bbc3d3b5c1d2b7bed1b6bfd1b4c0cfb4c0d1b4c2d2b6bfd1aebdceaebbd0ad *bacea5b7cc97b1ca99b1cb95aeca87aac68babc88daec98dadc88bacc894adca8dadc78dadc989 *a9c88baac68faecb96afcc9ab0cb9eb6cfa1bad1aabcd19fb8cf99afcb92afc98db0ca8dadc98f *afcb91aecb8eaec991b0cba2b9ce9cb1cc9bb3ce99afcc97b1cb93b1cb92afcb9bb1cba0b6cf99 *b2cc92afcc97b1cb99b1cd9bb0cb99b1c996b0ca99b0caa0b1cb96b1ca98aec999b0c997b1cb9b *b3cb9cb6cd9cb4cd9ab2cc97b3cb9cb4cb9bb1ca9cb0caacb9bfc6ced4cbd4d9cbd6dbcdd8de5c *91b65c8fb66090b65d91b85790b65e95ba578fb65393b95b8bb75990b85891b7518cb54d8bb54d *8bb5508cb7508eb4558cb35c8fb8538bb3518cb74f8eb75392b94f89b3498ab6538eb7588db65a *8eb7518bb4528ab64f8ab4568ab64f8bb5558eb6508eb6578db6548ab6548cb6568db5518ab650 *89b5548eb74c8ab6518eb64d88b5558eb8538eb7508bb84885b64f87b6508ab64f89b4508bb650 *88b64c88b4568ab55388b4528cb5518eb8548eb85791b65592b6568bb65f90b96593ba5c92bb58 *8db75d8db85893ba5793bb558db8508bb6548cb9548db75a8cb7558cb6558ab7508db6538bb54b *8ab65291ba548fba538bb6558eb64e8bb5518db65591b94e8fbb4e8cb74a8bb64d8bb65a91ba4d *8cbb4e8bb6558cb84d8dbb5691b8518cb64b8bb6508cb65693ba4c8ebb4d8db8508db65493bb55 *90bb568fbb5792b6578db64e8bb64b8ab75693bb5391ba5791b85e93bc5690ba5b8fb96095b955 *8fbb5691ba508cba558eba5d92bb568fbb5793bb5b90b95d91bb5f96bb5491bb5896be5f94bb5d *96bc4a8eb85d90b55c90b95d94bc5195bb5995bb5891ba5e95be5595bb5791bb5891bb6095ba5f *93ba5c94b95b95bc5e97be5e94bd5795bb5b96bd6296ba639abc5a95bb5c96bd5f96bf5794bc5b *92bc5e97bc5e97bb639abb5b94bc5e96bb6199bd5b99be5d98bf5b97be6097bc6398bc5c91b963 *99be6497bd6095bd5d97be5291ba5b97bd6499bb6497bc5c95bc5f97bb6399bd5d96bb5d98bf5c *96be5d98bd5396bc5b94bc6094bd5f96bd5f95bc5d95bd5795bd5c97bc5e9abd5a96bb6899be60 *98bd5b98bb5e98bd689ac06298bf6098bd6399bb6499bb6598bc5f96bb5894bc5a94bd6399bd5f *98bf5f99bd6099bd6097bc6498bd6b9cc15b95bc6699bd6b9bc06899c1679bbe5f9abf6598bd64 *97bd6197bd649abd6299be639bbf649dbf6e9fbf659bbe6497bb6596bb5898bc6099bd5f99bd67 *9dc06a9dbe649bbd659bbe6d9dc1689abd6699bd6599bd689abf679cc0629dc1659cbf6f9dbf6d *9fc073a1c0689ec06c9dbf689dc0609bbe679bc06c9cbe679cbe6d9fc16f9ebf70a1bf629bbd70 *a2c46aa1c2679abd77a3c16da1c1679bc0749ebf67a0c16da0c266a1c26ca2c6679fbe6aa1c16d *9dbf6d9bbf669dbf689ec26ca1c467a2c3649dc175a4be669ebf6e9fbe6ca1c06ea1c277a2c170 *a1c172a1c16aa1c36ba2c071a1c16ca0c36ca2c26d9ec26b9fc269a1c479a4c46ea3c161a1bf67 *9cc16da0c16ca1c274a1c16b9ec36e9fc46ca4c36da3c3689fc1749ec173a2c1739fc1709fbf6c *a1c371a0c2699fc173a4c375a1c16799bf689dc06ea0c1689dbe659cbd6ea0bf71a2c36ea2c26f *a1c1719dc16e9cbd6f9fc36ca0c26ea0c370a3c56ca2c26da0c16e9dc06c9ec2679bc06a9ec06e *a0bf6fa0c269a1c36ea1c174a3c176a4c46ea0c2649ac06c9fc272a3c369a0c274a2c176a2c36e *a3c16a9dc3729fc36fa1c1669fc370a3c270a0c170a2c26ba0c269a3c373a1c3719fc374a2c272 *a1c371a0c26ca4c36aa2c16aa2c36ea4c373a1c36aa0c4719fc46ea2c3699fc36ea1c271a2c46f *a2c16c9fc36c9ec36f9cc2649ac06ba1c46b9fc1649bbf6ba1c4699fc3679cbf6fa0c271a1c172 *a1c369a3c36ca1c4699fc16ea3c46ca0c370a1c56ea0c373a1c46ca1c3659dc369a2c372a1c26d *a1c479a2c375a2c2629cc16a9fc175a4c473a4c368a0c16a9fc173a1c2739fc36b9cc075a0c276 *a1c36ba1c169a0c26ba0c36b9fc36fa3c46ea0c375a1c46d9dc16a9fc26da1c374a3c46da2c573 *a2c469a2c475a3c278a3c373a2c267a1c16ca1c36ca1c36a9dc372a1c56c9ec56ca1c269a1bf6c *a1c26aa0c36ca2c36fa3c575a2c575a3c66ea1c46ea0c4699dc171a0c373a0c375a0c474a2c278 *a3c470a4c574a4c46ba2c47aa4c384aac789aac792afc890adc988acc999b4cba5b8ccadbdcdab *bacda9b9d0a4b6cc9cb4cb9eb6cb9fb2cba4b8cca7b8ccabbaccacbbcda8bbcca5b8cc99b5c99c *b3cb8daec892acc893afc791acc797adc785acc78badc793adc98daec994aecb91aec992aec895 *adc988a8c688aac58ca7c797afcb9db0cba4b6cda8bacba9b9cba9b7cdaab8cba9b8cca5b6cca5 *b8cda6baceabbbcfaabdcfabb9cfaabaccacbbceaebdd2b3c0d1b6bfd6b3c2d3b7c3d4b9c4d0b9 *c3d1b7c1d2b3bfd1b5bfd1b7c1d3b9c1d2b7c4d3b5c0d2b4c3cfb6c1d1b6c3d0b3bdd0b0bfd0ae *bfd1aebdd1aabccea1b7cca0b3cc93aeca8babc689abc98babc889abc787aac78cacc989abc682 *aac789abc689abc98babc98aabc990aeca91b0cb8baecb88adc789acca88acc88aaac68aadc68e *acca8caecb92aecb86adca87abc78cabc68eacc98daec993b0cb8caec78badca90aec88daec996 *aec996abc991aec98daec993aec992aecb8caeca8daec98eb1ca9cb3cba0b1cc9db5cd9cb2cc99 *b1cc9cb3cca1b5cca3b7cea2b4cca1b6cb9bb1cb9fb4cba3b5caaebcc6c4cdd4c7d3dbcbd6dacd *d9dd6b95b46997b56593b15d94b55c92b4588eb46691b55b8eb65d91b85490b95e93b7558db454 *8bb55e8db6568eb75b8eb55992b95791b8598fb8538eb4578db4598bb3548bb3528db65189b455 *8ab4538db6548cb25c8eb45c8eb55087b25a8bb34d8bb44c87b34f8bb65b91b75c8eb5588db557 *8db3588cb24e8cb54c8ab5518ab4548ab4588db7518bb35b90b4558ab2528bb4568bb24f85b34d *89b24c87b64f89b3588bb5598eb45089b2578cb64f8ab5528bb6588eb8588eb6548cb4588eb658 *8ab45e90b6558db6598eb64f8ab5588fb8518cb8558ab55388b35f8db5588ab4518ab55189b357 *90b85a90b7538db74f8ab4558db6538bb4518ab3598eb6558bb55891b65f91b66092b65d94b756 *90b65a8db55b90b3578ab7508cb6548cb3578bb45d90b85b95b95a91b55490bb528bb6528bb756 *8cb65291bb5c91ba5c92b7578db55990b85591b86792b95991b85b94b85d91b75891bb5d8bb559 *8eb66392b85f93b86292b95b92b75a91b95c91b9598eb75a92b85a91ba5b91ba5e93ba5291ba5d *92b86295ba5894ba5c92b95f95ba6196ba6293bb6197bb5793bb5b96bc5c8fb85d96bb5c91b960 *96bb5e94ba5f92ba6095ba5d93bc5b94bd5d93bd5e93bb5b97bb639bbb5c96ba5f95bc5994bc5c *95ba5f96bc6097bd6398bc5f97bb5d98bb6096bb6c9abd6598bb5d96bc6297bc6597bb5f97bb61 *98bb669abc6096bb6697bb6296bb6299bc5f97ba5f97bb5a94bb5d99bc6599bd6a97bd6a96bb65 *9abd6194bb6598bc6595b85e98bb6a9bbb6597bb6698bd5d92bb6799bb5f95bb6597bd679abd5f *98bc6699bc649abc6698bb6296bb6198bb6497bb6697bc6998bd6199bd669cbb689bbb6a99bc66 *99bb649abc6797bd6898bc699abe689abe729cbc6899bc649abd6a99bc709fbd6e9dbd629abd66 *9abd6a9dbd659bbb679abc6297bc639bbf6a9cbd699abd6d99bd6898bd6f99bb6b99bd6c9bbd6a *9bbd6499bc679bbd699abe659abe699cbd649bbf6c9cbc6c9cbc6b99bc679abc689cbf699bbe65 *9abd679cbf6d9dbe729ebe6e9dbc719ebd6e9dbc6c9bbe6c9cbf699fc070a1c2729fbe799ebe68 *9dbc6a9dbf73a2be72a0bf6c9ec16b9dbf68a1c074a0c06b9dbf6c9fc16da0be6b9dbe649cbe63 *9dc06da0c1719dbd6ba0bd729fbc6d9dbd75a3c174a1bf73a0c278a4c375a3c172a2c1729fbd78 *a2bf78a3c16ea1c16ba0c070a1c16d9fc173a0c174a2c078a2c070a2c070a3c274a3c16ca1c172 *a1c16d9fc1719ec06b9ebe7aa3c175a1c173a3c16da3c1759fc1669cc1739fc170a1c06d9fbf75 *a0be72a2bf6ba2c170a1c1709fc175a1c171a1c36da0c076a3c079a3c369a1be6fa0bf6da0c16e *9fc36c9dbe6b9dc06d9ebd6d9ebe75a1bf71a0be72a1c06ba0c16f9fc1699fc1699fc06da0c068 *a2c073a2c06c9cbe74a1c16c9fc16b9ec26fa1c278a2c373a0bf76a0be71a0bd729fbd72a2c074 *a1c06ba0c3699dc06ea1c177a4c173a0be6aa2c36fa2c16ba2c275a1c173a2c379a4c672a1c372 *a1c076a2c2719fc174a4c36fa0bf729fc26f9ec36f9fc170a0be71a3c17aa4c26aa1c26aa1c169 *9fc0699fc16fa2c275a1c275a1be77a1bf779ebf6c9bbf6c9fc375a0c272a1c3689fc173a0bf70 *9fbd76a3c1669cbf70a1c26e9fc06ea1c26fa1c378a6c371a2c370a2c271a1c270a2c26b9dc172 *a0c3709ec272a3c177a4c376a4c376a3c479a4c3729dc16d9ec174a2c26da0c071a2c276a0c06c *9ebf769fbf7aa0c06d9fc16f9fc26da0c16ea0c16fa3c36ea0c16ca0c172a0c171a0c170a1c17d *a4c46aa0bf67a1c372a2c379a5c471a5c673a3c375a2c179a1c36da0c36ea2c36da2c370a3c36f *a1c36c9ebe6b9ebf77a3c36fa2c375a5c578a3c474a3c66ca1c37ca4c27ea4c376a4c373a3c37c *a3c36f9cc07aa3c479a2c077a3c17fa5c48eabc494aec897aec797afc891adc99bb3caa6b7cbac *bccfaebfceadbecca9b9caa3b6caa1b5c9a8b6cdacb9cdaebbcbafbdd0b1bed0aebdccaab9cca5 *b7caa4b5c99eb3ca99afc89ab1c998b3cb9eb3c992afc692adc699acc699afcb9aafc998b1ca9a *b1c98db0ca8daec692acc795acc69eb2cba0b5cba9b7ccaab9ceadbcceaebccdadbbcdaebacdaf *bbccadbacdaebbccaebcceadbbcfacbad1abbbcdb1bed0b5c1d1b7c0d0bac3d1b8c6d1b6c6d1ba *c4d4bbc4d4b9c4d2bdc6d1bbc4d1bbc3d1b9c4d1b7c3d3bac3d2b6c3d3bac2d1b8c2ceb7c0d0b6 *bdceb2c0ceb0bbcfaebdd0a9bacea3b6cb99b2c99db2c993aec68eabc78aaac689acc788aac989 *a9c78eaac88aabc78dacc58eaac78babc790adc68caac78cacc88bacc98cadc88eacc692aec68e *a9c592aec786aac68faec98caeca8dafcb8dadc98cadc993b0ca8dadc78facc68fadc792b1c892 *acc992aec99cb0ca90aec796b1cb9ab3c990adc694aec595b0c796b1c994b0c99fb5cc9eb6cc9f *b4caa3b3c9a0b2c9a3b6caa8bacda0b6cda4b7ceacb9ccadbbccafbbcbb6c1c5c5cdd3cad5dacc *d8dbcbd6db5f8fb55b92b75992b66094b86096b65790b6528eb6568db95691ba5d8fba5790b64d *8bb1538bb4588cb64e8ab5508cb54f8ab5578cb65c8cb6568bb45b90b65890b66897b7568db74f *89b55488b4538ab5598ab4558cb4548eb65890b6538db7528bb6528bb5548bb44f88b5558eb74f *8db5518cb4558fb65b8db64e89b7538cb9548ab6508ab6528bb6588db5558db8588eb9538ab34b *89b45288b34f86b2518db8548eb6578db75a8fb6588cb7588bb45890b5518db4538cb25990b758 *90ba5289b5608db6538ab64985b2548db6538bb7508ab7508db6558db6508cb8558cb7528ab453 *8cb7508cb54a86b3508ab6538bba528ab8528eb95792b7558db6568fb65490b8538cb8548ab65c *8dbb508cb7578dba528fb65490b95a8db9568ab5568bb65789b6538eb84f8eba528fbb5692b954 *8fb85692b96095bb5690b65c8eb76092ba5592bc5b93b95a93b95790b9588eba4f8db65a92b956 *8fb9518cb9568ebc518fb85a91bb5b91b95a92b95590b95892bc5f92b85691bc5994bc5c93ba5f *93ba5c8db55f92ba5291b96094b95e94b95d96bc6296bb5891b75691b95a92b85f93bb5a93bb65 *96bb6398bd5d93bd5d95bb5c90b86095bc5f97bb6496bb5e96ba5e97bf6097bc6294bd5b92bb5a *92bb5e96bb6596bc5e97be5a97bd5994bd5e96bd5f94bb6193bc6398bc659bbc5d91b75b95bb5e *97be5591bb5d96be6098be5f96bc5c92bb6697bc5f95bc6598bd6398be6299be6298be6399bd5b *95bb5f98bb5f96bd6497bc6096bd6496bd6199bc669bbf679bbd6599bd5d96bc6296bc6097bd6d *99be5d97be6099c06599be6499bc6195ba6296bd5c97ba6096bc6698bd6197bb6b9cbf6396be6c *9bbd6598bb6697bd6999bc679abc649cbe639abc6198bd6299be699bbf669abd6c9dbe679abd64 *97ba669dc16799bf6198bd6b9abe6b99be659fbf649bbd6097bc6198bd6a9abf6897bb6798c070 *9bbd709ebd679cbd649bbb689ebe6098be6d9dc1659abf6c9cc06b9ebe6d9dbe699fbd659cc062 *99be699cc16c9cc26c9dc0699bbf679ebe6a9cbd619abd649abf689cbf639abe699dc1679bbd69 *9fbd6ba0bf6c9dbd6da3c171a2c3659cbd6da4c175a1c16a9cc06d9fc1699cbe6da0bf649cc16b *99be699cc06da0c36e9dc06d9ec068a1c1709dbe73a4c1699fc16a9fbf69a0c16fa2c171a3c16c *a2c16f9ebd74a1c169a0c171a0c06fa0c26ea2c36aa1c377a4c270a2c370a4c371a2c173a2c173 *a1c26ea1c16b9dc06ba3c46da1c36aa1c36d9cc06da1c16a9fc070a1c36fa1c26f9fc36e9cc070 *a0c06ba0c075a1c16da1c1719fc1709fc0689dc0689dc16fa0c3719ec16a9fc072a1bf70a2c165 *9fc1689dbf719cc1699cc170a0c36ea1c273a2c275a3c26ca0c3689ebe6e9dc16a9dc0679ec16c *9ec0679bbf689fbf6ba0c16e9fc16e9ec06b9fc472a1c26d9cc1719fc36da2c172a4c267a3c36f *a0c176a1c277a2c16a9ec2709fc176a0c173a3c270a2c072a2c170a1c171a0c372a3c372a2c370 *a0c26fa2c273a3c370a2bf70a1c3699fc370a2c36da1c36c9fc1699fc2639fc166a0c36fa2c375 *a3c16fa0c16a9fc274a1c1699ec2719fc368a0c171a1c372a0c171a1c2669ebf6da1c26fa0c072 *a0c475a0c171a1c46b9ec370a1c1769fc275a2c36da0c36b9fc36c9dc272a2c272a1c375a4c372 *a3c176a4c36b9fc16da0c36ba0be71a1c274a3c479a6c46fa1c16aa2c171a2c270a4c46ea0c477 *a3c575a2c474a0c36a9dc36f9ec272a2c2699dc06a9fc26aa0c275a3c570a1c36ea2c374a1c371 *a1c36ca0c26f9dbf729ec070a2c371a3c56aa0c676a4c56ea1c36ca0c16fa0c36e9fc178a4c373 *a3c374a4c56da0c472a3c575a2c371a2c176a4c376a3c376a3c377a4c378a3c46ea0c173a1c474 *9dc2709dbe749fc27ca2c272a2c277a4c27da5c686abc990aeca96afc997b0c79cb4c8a1b5caa6 *b9ccaebad1aebdd2adbdd1a9b9d1aab9cdabb8cbaab7ccadbcceadbdcfadbcd1aebbceafc0d1af *bbcea7b9cda5b9cb9db5cba1b1ca9fb6cca4b6cca0b4cb98adc994abc895acc896adc892acc996 *aec997aec997adc98eaac692aeca9cb2cba2b4cba3b6cbaab9cdadbbcfadbcd0b0bdd1aebdd0b0 *bdd1adbdceb1bdceadbdcfaebdd0adbbceaebbd1b0bccfb1bed1b4c1d2b9c3d3bbc4d3bbc6d2b9 *c2d4bbc3d1bbc4d1b7c4d3bbc5d5bcc4d6bbc3d3bcc6d3b8c6d3b9c3d1b9c3d1b7c0d3b6c3d2b6 *bfd2b6c1d1b4c1d1b5bdcfb1beceaebccfabbbcea6b7cc9db2ce96aeca92aac691adc78babc586 *a9c585aac78babc98aacc68dabc68baac98badca90b0ca8cacc991aec88eacc98eabca8cadcb8d *acca92adca95aec997afca8badc78aacc98cadc993aecb91aecb8aadcb91aec991aec995b0c790 *b0ca8cafcb90aec996aecb93aecb9ab1cc9ab3cb94b1c999b2c798aeca9eb0cb9eb5cda0b4cca2 *b7cda1b8cea7b9cda7b9cba7bacca6bacea8bacdabbaceb0bdd0afbcceb3bdceb8c2c8c7cfd4cb *d4d9cfd6dcced7dc5e8eb1578caf528ab05d92b65b8cb56192b65b8eb4558cb6588bb35a8cb453 *8eb64783ae568bb6608eb84e8bb6568ab1558cb55189b2548ab3508cb5558bb2558cb5548db452 *8ab44f8bb65489b45a8cb5558ab25589b1578cb55088b5568cb55089b44f89b4558db5568cb44e *89b44e86b1588bb25388b25188b3578cb64e8ab55589b2508bb54e8ab55089b2518bb4538ab452 *8bb65287b4528eb64d87b35189b3538bb3528ab2558cb2528cb5578bb24c89b1598db54b88b453 *8ab4548bb3528bb65589b24265a84e89b34e89b54f88b34f8ab54d86b15088b54f8bb6528cb651 *8ab64d88b24c89b5528ab3588fb54f8ab54f8ab4538cb55386b35e8bb44d88b3558fb5558bb64f *8ab64e89b3528db6528bb84c8ab6528cb64d89b45690b6528ab4518ab64383b24b8ab64e8eb654 *8db65491b6548eb6528bb64f8eb65790b65992bb5590b65290b85591b65f91b75d92b8528eb652 *8eb6538ab5508cb7568fba578eb75c92b6548fb75c91b75c91b85291bb5b92ba518fb75890b95c *8fb95590b66295ba588eb85992b75892bb5b94ba5890b75d8eb95790b85f98ba5d94bb5993ba58 *94bc5391ba5f96bb6295bc5990b8578eb85591b96597bd5f96bd5492bb5a8eba538db75d93bb5a *94b65d93ba5c93bb5895bb6499bd5a97bb5c91b75f96ba6097bb5b92ba6095bb5f95ba5791bb5a *93ba5e93ba5e93b85b93b96996ba5f92bb5c94ba5992ba5e96bb5f98bb5b92b85c94bb6498bc5c *98bb5a92b9679cbd6497bb6394bb6798bb5f97ba5d98ba5e97bb6394b96998bb5e94bb5f95bc64 *99bd6295bb5f93bb6693bb6196ba5a96bb6197bb6196bb6399bd6397bb6493ba5892b85991b75f *96bc6798ba6195b86098ba6498bb6699bc649abe6598bb6197bb6299bb6298bd5897bd6599be67 *9cc05e98bd6196bb6498bb6396bb6497bb6098bd6698bd659abd629abd6595ba6799bd6698bb63 *97ba6899bd659cbd689bbe669bbd689bbd6499bd689abc6699bd6099bc5f98bc6598bd6599bd61 *97bb669bbd6899bb689cbc679abf659cbd689bbd649abd6b9cbd639abc669aba679abb6599bd63 *99bd679ebe659bbc6d9ebd6aa0c0649bbd72a0bd6a9dbf6799bf699abd6699be6b9cbd6a9dbf69 *9dbd6aa0be69a1bf6a9bbd6a99bc6d9cbf729cbe679bbd749fc0729dc16a9fc170a0bf6a99bc6c *9bbe6a9bbd6e9fbe759ec070a1c272a3c16ba0c06b9ec0679dc06b9ebf74a0be6a9ebd6da2c167 *9fc0689fbf739fc26b9dbe719fbf6a9cbe6b9ebd699bbd6f9ebf6a9ebe729fc06f9bc0649abd6f *9cbe669ebe689bbe6ba0c269a2c1699abe6c9dbe669cbf6298bd6296bd739ebe6d9abc6b9cbe6b *a0be699cbd6ea0be6b9cbd6d9cbd6c9fc06c9ebe699dbf649abe6a9ec0679fbd6f9dbe6c9dbe6e *9ebf669ec16e9cbd759fbf6d9ebd6b9cbd74a0c06b9fbf699dbe72a1c075a1bd6ca0c1689dbe69 *9bbb6ea0bd6a9fbf6ca0bd6b9dc16a9ec0719ebf6b9dbf6aa1bf659ebf75a0c0729fbe73a0c172 *9ec0699fc1719fc071a1c1739ebe6f9fbf709fbd6d9dbe72a0c26b9fbf6fa1c1659bbd72a1bf72 *9fc175a2c16fa1c16e9cbf719fc270a0c26f9ec16d9dbf6da0c16ea1c16fa1c1689fc16fa1c26f *a0bf6c9ec170a1bf689abe639bbf70a0c16e9cbf6b9dc16a9ec06f9fbe6a9ebe69a0c069a0c16f *a0c26c9fbe6a9bc06b9ec16a9bc0709fc171a0c265a0c167a0c36a9dc273a0c074a2c26ba1c366 *9ec26fa1c072a1c16fa1c16a9fc16ca0c06b9ebe6a9bc1709bc071a1c2679fc06ca3c16b9dc068 *9dc0679cc06b9dbd75a1c072a2c3639fbf72a2c36ca0c06b9fc16da1c1669bbd71a0c3729fc26b *9dc26a9ec26ca1bf6a9cc272a0bf76a3c270a1c376a2c46fa2c36ea3c373a3c377a1c2669abe6d *9fc173a3c470a0c175a2c371a2c272a1c375a1c07fa5c387a7c586aac794afc896afc999b0c9a0 *b4caacbacdadbdcdafbdcdadbccdaabbccaab8cbacb9ccaebbd0afbdd1aebfd0abbbccb0bdd0ae *bfccb0bdd0adbdcfaebdcea8b7ceabb9cda5b7c99eb2ca9db1c796aec696abc790aac792aac798 *adc99cb0c89cb1ca9dafc99cb0c896afca9eb3ca9fb4caa8b8cdadbbceadbacdafbcccafbccfb1 *becfafbdd0b1bdd0b1bdd0afbccfb2becfb0bbccafbbceafbcd0b3bed0b5bfceb8c2d0b8c4d1ba *c3d2bcc6d4bbc5d4bbc4d3bac4d3bbc4d2bbc4cfb9c3d2bac3d3bbc6d3bbc4d6bbc3d1bbc2d3b6 *c3d1b4c2d1b6c1d0b7c0d1bbc3d1b8c1d1b3bed1b2bccfaab8cca4b5cba0b4ca93afca89acc687 *a9c786a9c884abc686a9c486a9c58ca9c58eabc68cabc78aabc88daec992adc98eaec78eaac688 *a9c58cadc489acc691aec78eaec68daac790acc794afc78cacc688adc68eaec98cadc98faec796 *afca92afc98daec897aec995aec99ab1c99bb1c99cb0ca9bb0cb9eb3ca9ab3c99cb6c99cb1cb9e *b3c89cb3caa1b4cca4b4caa8b6caadbaccaebccfadbeceacbcceb3becfb1bdd0b6bdcbb8c2c6c6 *cdd4cad4dbccd8ddcbd6da5b90b15d90b4578fb55990b46a97b75a8fb1558db3508db55591b656 *8fb74f8cb34686b1508eb44f8ab35e91b5578bb3558cb1528bb0538db3568eb54e8ab2528cb356 *8db4548cb3538cb4518db5528bb65c90b7528cb3568cb34d8bb4508cb6508cb6508ab4578fb450 *8cb4508bb2528fb4588cb15388b14b87b24a88b44c8cb5518db6578cb7538db65087b1588ab455 *8cb6538ab5548cb6558db5508ab3528db65690b6578ab15185b25186b15189b24b8cb55387b456 *90b7508eb74785af4987b2538bb34f8ab35188b24a8ab5548db6508cb64f8bb54b87b34f89b450 *89b24f8bb2538cb54d88b3528cb45292b74c8bb5528bb64c89b3538bb35489b1518cb15392b658 *91b7548cb54e8ab15189b34f8cb5548cb54f8bb6588cb7508cb4548bb6558fb6538fb65a8fb650 *8eb6528eb5568cb55893b95390b9538fbb5390b9548db55691b6568db75591b95890b64d8bb652 *90b7528eb64f8db6548cb6598cb55990b7508eb65590b7538fb8528cb75490b75191b64f91b659 *92b95993b95b90b75c90b85f91b66192b75c93b95692b85b94b95e98ba5d91b45892ba5a93bb54 *90bb5893bb5795ba5a96b95891b76093b95b91ba5f92b95f94ba5d97bb6299be5e94bb6093ba54 *8eb85790b85a94bb5c96bb5d94b85b95ba5b94ba5c92ba5c90ba4f91b85691b85e96b85f98bc62 *96bc6098bd5e95bb5e93b85f96b96296ba5c95b95797ba5c96ba6197bb5c96bb6296bb6092ba59 *92bb6096b95d96b95e95bb5993ba5992ba5f92ba5992bd6295ba5990b65d96bb5894ba6097b960 *97bd5791ba6396bc6498bb6796bb5e96ba5e95b76097ba6299bc5e97bc6098bc6197bc689abb63 *99ba5f97ba5d97ba6297bb6495ba5d97bb6a9bbc6799bd6899bb6098ba6298bb5d96bb5e96bc63 *9abe659bc06c9dbc6a9cbf5f99ba659bbd5f96bd5d96bc6b99bd689abc659aba699abb669abe65 *99bc6599bc649abd659bbd679bbd669cbd6496bd6a9cbd6c9abe699dbf669cbf649bbc669abd60 *9abc639bbd679cbe689dbe6c9dbf649abd5f9abb659bbc649cbb679bbc6a9bbd6399b96b9ebc64 *99bc659bbd679bbd6c9cbd649bbb669cbe699bbd709dbe6f9dc06c9dbe659dbd6b9dbd649dbf71 *a0be6f9ebe73a2c0679ebf6b9fbd6c9ebd6fa0bf6b9dbe659bbd659dbd73a0c0739dbd709fbd74 *9fbf6c9bbc669ebd6da0bd6c9ec06fa0c06fa0be73a3c075a3c169a0c16da2c068a0c16ea0bf6a *a1bf659cbe6a9ebf6a9bbe6d9dbf6da1c16ca3be6da2c16ea1c1699bbe65a0bd609bbe6fa0be68 *a0c16fa1bf6c9fbe689dbe679ebe6d9fbd5f9bbd6d9fbd699cc1689dbf6a9fc3629abe679cbc6e *9dbd669cbd689cbd689fbd72a1c06e9fbf699fbf679dbe679ebd629cbd6ca0c16c9ebf6b9bbf6e *9fc06f9dc06b9fc16d9fbf739ebe669dbd6aa0be6a9ebe6da1c06ca0bf689ec0679dbe729fbd66 *9fbb609bbd6fa2bd75a2be72a0bf6c9fc272a2c371a1bf6c9ebe6fa1bf73a0be77a2c06f9dbd75 *a1c271a1c1669dbd6aa0c1679fc06f9ebe709bbc669abd679dbe709fc1679fc16ca1c06d9fbe6a *9ebf6b9ebf6b9ec06d9dbe70a1c26fa0c073a2c2709fbf679ebe719fc16f9fc173a0c16c9dbe69 *a0be6fa0c16fa0c1699ebf689dbe6d9ebd709ec171a1be75a3bf659dbd6fa2c26aa1c366a1bf70 *9fc16b9bc06b9dbe6aa0bf699bbe6b9ebf69a1c36aa1c36d9fbe6899bd6ea2be6c9fc175a2c172 *a2bf6ea0c16da3c36da2c36f9fbe71a0c06f9fc06da1c06c9fc168a0c1689ec272a0c170a2bf70 *9ebf689abf6b9cbe70a2c171a0c171a2c270a2c36ca1c472a2c279a4c16d9ebd6da2c1669dc26f *a0c36ba1bf679ec16ea4c3659dbd6a9cbe70a0c36a9fc06c9dc170a0c26ea2c377a3c379a4c375 *a2c173a2c178a3c074a0c378a2c375a2c279a2bf7aa4c484a9c585a8c583a8c58baac696afc89b *b1c7a7b8caacbcceb1c0d0b0c0cdaebfcdabbbcdaebbcdafbbcdb0beceb0bdceb1bdcfadbcd1b3 *bfd1b2bdceb1bfd1b0c0d0b2bcceacbdccaabacca4b6c9a1b3c99db6c996b1c793acc599aec797 *adc79bb1c9a0b6caa8b8cca6b7cea0b6cb9fb5cb9fb5caa4b8caaab9cdaebed1b5c0d1b6c0d1b5 *c0d0b1c1cdb4bfcfb4becfb1bdceb2bdceb0bdccb1c0cfb6c2d2b6c2d0b7c1d0b6c2d1b8c4d1b9 *c3d2bbc4d5bbc3d3bbc3d4bfc6d6bbc6d4bcc5d3bdc7d2bcc4d1b9c4d3bcc6d1bdc6d2bcc6d3bc *c6d1bbc4cfbac4d1b6c4d1b5c2d2b6c2d1b5c2d0b5bfceb5c1ceaebdceacbcceacbacf9bb2ca95 *aec691aac690adc88cadc88eacc68baac68cabc688aac786a9c883a9c685aac793aec793afc893 *afc888adc786acc888aac792aec78daec78aabc792aec98fadc896aec990afc895b1cb92aec897 *b1ca92b0cb97b1c797b0c997b1c99eb1cb9cb4cb9bb3ca9ab3c99fb7c999b3c79eb4ca98b2cb9f *b4c9a3b4ca9fb6caa4b5cba6b8ccaebccdafbdceafbdcdafbdcdb2bed0b6bed1b5c2d0b9c2cebb *c6c7c4cfd4cad4dbcdd7dccbd5d66592b65e8db05d90b65b8db4568cb15389b0568bb15b8db354 *8db6578bb6578cb5548bb65d91b6598cb5508db6528bb65386b55a8cb6538ab35b8fb7578db558 *8cb6588cb3558ab3598cb45389b55186b1598db5598bb6548ab35185b35589b55189b35187b353 *8db6508cb64c87b5548ab45a8db55084b34c84b04e87b34f89b3518bb34f89b5528bb5548ab44d *86b15688b44f85b15487b15389b24f87b54f84b24d86b25085b25087b35387b35687b5498ab350 *84b24f8cb6558cb2568ab3588cb6548ab54e86b64b86b54c88b5548eb6568eb75287b3538cb557 *8db8558db65387b44984b54685b34885b44b87b4598eb85b8db6588fb6558bb5528fb84d87b44a *88b24a87b6508db9558db75b91b65c8cb65a8bb45385b55287b74e86b35487b25390b6538bb750 *8eb6528cb54e8ab7588db7528db5528db75c8fb66395bb5796b95991b85b8eba548bb7588cb65d *93ba588fb55791b7588eb55d92b85b90b8578cb7538fb8518ab5548ab65392ba5f93bb5d94bb5d *93bb6291b5548ab45b8fb7558db55a92bb5391b7588eb55591ba6395bb5d91bb5b8fb85791b85b *90b95b90b9588fba5e96ba5e91b95891b85d91b9578fb75995bc5991b95792bb5891bb5e94bc5a *95bb6094bb6593bc5c94b8558fbb5992ba5f92b95c93ba5c94ba5b95ba5d94bb6194bb5e93bb66 *98bb6595b95d94ba5d91ba6696b96097bb6096bb6495bb6496bb5791b95b92ba5f97bb5d94b85c *92b96198bd5d91bb5f94bc5f96bc5f96bb5f94b85d95bb6697bb6493bb6294b96192bc5f93ba5c *97b66796ba5b92b96297bc6799bb5996bb6398be6194b95e95bb5a95ba6299bb5e98bc6396bb66 *98bb6098bc6296bc6196bc6898bc6592b95f96bb5f96bc6899be679bbd6497bb6095bd6496bc63 *99bc5e96bb6897bd6a9abf6699bd6498bc5f99be6599bd6697bb6897bb679abd6a99bc6496bc5a *93ba6296ba6a99be6d99bd5f95bb659bbd659abe6599bc6196bd699abf6a9cbc669cbe6f9dbd6d *9bbd6b9abe6499bd699abc6699be6699be669bbd6599bd679cbd6b9bbd6598bd6c9abd6899bd6a *9bbe669abd6898bd689abd6f9cbd6b9abb689cbd6799bb6a9dbe67a0c1649bc16ba1c16ca0bf6d *9ec1689fbe709cbd739cbf709bbe669ac16b9ec06b9ec16c9cc0689cbe6e9dbd6a9cbc6d9dbf73 *9dbd659cc1699ec06b9fc16c9ebe6c9cbe6fa2c06b9dbd6e9cbc6ca1c2679fc26a9cc46c9fc270 *9fc06fa1bd73a0bf689ebe669cbf6c9ec075a0c2759dc1729fc16a9fc072a1bd6c9ec172a3c169 *9cbe6b9ec1689cc1749fc1699dbe6b9fbe619abf699fbf619abc689bc071a1bd659bbd759ec06f *a0be6599bd6b9cbe679dbf679dc06ca0c1749fc16d9cbf719ec1699dbc6b9cbe739dc06a9ebe68 *9cbd6a9cbe679cbd639bbe6ca0c16f9dc06c9dbd6d9ebf6b9fc06b9fc271a0c06f9dc16b9fc16f *9ac0729dbf759cbc6a9cbd699fbd699cbe6d9ebd649ebf6fa0be72a1c0739fbd719cbd659fc066 *9dc0699fc472a1c3699ec1699ec271a0bf719fbd6a9dc1699dbf689cbd6b9bbe6f9fc16f9ebf73 *a0c177a3c173a0bf689ec0699cbf629cbe71a1c26c9fc173a1bf6ea0c272a2c372a1c2719fc26d *9fc16aa0c1649ac1719ec1729fbf6da0bf759fbf72a0c36d9ec271a1c3659abe6ca0c16c9cbd6f *a0c06aa0c175a1c1709dc177a2c1699bc36d9fc06c9dbe669cc16ba0c1679ec175a1c26c9dc174 *a0c26f9fc076a4c270a3c16b9ec06aa2c274a0c26d9ec26f9ec16f9fc170a1c270a0c2719fc175 *a0c26a9cbf6d9ec16ea0c26b9fc2719fc1699cbf6fa2c16ea0c16ba1c278a4c36d9ec16b9dc177 *9fc3729fc3729fc06e9ec16c9cbe689bbf6b9dbf6ea0c177a2c26c9cc1679dc36ca1be73a1c46e *9dbf71a2c375a4c373a2c174a2c176a3c473a2c373a1c37ba3c086a6c686a9c68aa9c690abc69b *b0caa0b5c9a8bacbafbbcdb0becfb2becfb0bed0b3bbccb1bccdb1c1cfb2c1cfb4c1d1b4c0d0b1 *beceb4c1d0b5c1d1b6c1d2b3bed1b0bcccb0bdd1aebbceacb7cba4b4cb9bafc999b1c79ab0c99e *aec89fb1c9a4b4c7a0b6cbadbbccabbccdaebecfb1bed0b0bccfb3becfb3c1d1b8c2d1b7c0d1b4 *bdcfb6c0cfb5c1d1b7c2d3b8c0cfb4bdd0b5c0d0b3bfd0b3becfb6bfd3b7c2d1b9c2d1bac3d2b9 *c3d2bac3d1b9c3d1bdc6d3bbc3d4bdc6d6bbc6d5bbc6d6bdc7d6bfc4d2bdc5d0bec5d1bdc6d3bd *c6d3bcc5d7bdc4d5bcc3d5bcc6d1bbc4d1bbc3d1bbc3ceb6bfceb4bed1b1bed1adc1d1a5b9cd9b *b2ca97aec792aec697aec998aec98cacc893acc792abc890adc989abc78cabc689aac595aec991 *aec88bacc792aeca8baecb92aec791aec793b0c798aec996aeca96adc792afcb9bb0cb97b1cb9a *b3c999b1ca9bb2cb9db1cb9ab0c999b0c897afcb9eb1cba2b3cd9eb6cc9fb5ca9cb2caa0b3c9a2 *b1cba2b5cba4b9cca5b9cca5bbceaabaccb1bdceb1bdd0b2becfb3becfb4c0d0b7c1d2bbc2d1be *c6d1bec6c7c7cfd4ccd4dad0d6dccdd7db5f92b45f8eb25d8dae608eb3528bb15388b3508ab352 *8baf528ab6528bb3568db55a8db65087b45a90b65d8cb54c8ab35490b7568cb6568ab2558cb357 *8bb55c8fb64d8cb6588cb5538bb4578cb5538ab45b8db75c8bb25289b45a8cb6588bb6568db656 *8ab34f87b2568bb4528cb4538ab45a8cb3558cb6538eb7548bb44e8ab34f8bb6598db55087b351 *89b1588cb24b88b4538db44f89b5518ab35988b24f86b1518ab3598eb35387b4538ab6578ab450 *89b4528ab3528bb4578eb6568bb4508bb5568bb55a8cb65c8db54f88b35089b25a91b6558db450 *8bb4528bb5508cb6518ab65189b64c88b1558db44d8ab64d8bb5568eb74e88b34c88b7528bb652 *8cb4528ab44c89b3508bb6588bb6558bb6578fb8508cb6528bb6568bb4538ab34b8ab65991b652 *8fb64d8bb65b8fbb5d8eb8558eb6578fb55791ba6394b75b91b6528eb65f8cb45b91ba5d90b955 *8db64e8ab5568fb6528bb4598ab4538db65992b95c96ba5b93bb5890b65a8fb5578fb7568eb753 *8db4538db6568eb75992ba5a92ba5a94b65d91b85d93ba5e93b95d95ba5f92ba5c92b66697bb64 *99bb5e8eb5598fb6538eb4598eb65d92b86096ba5790ba578fb96293ba5c90b85990b75d8fb960 *91b95792b95691bb5c92b95f94bd6293b96093ba598eb95b92b75d96ba5c93ba5d91ba5f93bb60 *96bd5c94b85e94ba6196bb5d92b85f95bb5c93b95890b86395b86597bb5e92ba6294b95f96ba60 *96bc6190b85f93bb5d93bc6094bb6097bb6399bb6597bb5894ba5892ba6897ba6597bb6799bb65 *99bc5d97bd6697bb5c92bb5f96bc6197bb6495b95e93bb6498bc6698bd6698bb5f95bb6496bb5d *94bb6496bb6197bc6398bb659abe689abc699abc5e94bb6b9bbd6697bc6399bc6b9abd6999bd67 *98bb6a9abd5f96bd6c9bbd6c99bd5f96bb6299bc629bbb6499bc6b9bbb669bbd6a9bbc6b99bb6b *97bb699bbf6297bd6698bd6599bc6999bd6499bd6299bd6e9cbd6a98bb689dbc659dbf6b9abd5f *98bb6a9abd6799bd6299bb629abb6498ba659bbe659abc6c9bbd6a9bbf6c9dbe6d9dbf6297bc65 *97bb699abd679abb6398bc6c9ebf6da0bf6da1c16b9ebc699cbd669cbd6d9dbd6799bd6c9dbc6a *9dbd659bbf6c9fc06a9dbc6c9dbf679dbe6d9bbf6d9cbd6fa0c06c9bc06d9dbf729dbd6ea0be68 *9bbd6d9dc0689cc0679fbe74a1c072a1c16ca0c16fa0c16b9ebf71a1c0719cbc6c9dbf679cbf73 *9dc06f9dbe6f9dc072a1bf669bc0669dbd6f9fbd6f9fc06a9fbe70a1c171a0c36b9ec27ba2c069 *9bbe739ebd709fc372a0c16c9fc074a2c16aa0c1699ec16ca0c1609abd689dbd6b9dbd6a9dbe64 *97bd6b9bbe729ebf6999bf659abd639cbf669cbd689fbe649cbf699ebf6b9fbf6e9dc077a1c36d *9ebd699cbd689ebe689cbd6a9bbd689dbf709ebe6e9dbe6e9ebd699bbe6e9fc0689ec1679abd6d *9ec069a1bc6da0c06aa0bd6ea2bd6a9cbe679cbf6c9cc26c9bc172a2c1729ebf719fbd739fc065 *9dbd71a1c26d9fc36f9ebf709fc378a4c377a0c16a9fbe659fbf76a3c1729fbe6e9dbf749ec172 *9dbf71a0be75a3c375a2be6aa0c073a1c3709fc0719fc1709fc276a2c1659dbf71a0c16d9ec170 *9dbf6a9ebe709fc0669cc170a2c26b9fbf669dbe6c9ebf6ba2bf6ca0c2639cc16899be6c9fc16c *a1c26c9dc472a1c1779fc0679abd6ba1c16ca0bf70a0c26ca1c26e9fc271a0c373a3c36ca0c178 *a0c16e9fc16f9fc071a1c26a9bbe6b9ec16a9ec16ea0c2789fc06f9bc177a2bf75a0c26b9fc26f *a0c26e9fc272a0c0709dbf6ba0c167a0c274a2c36da0c0699fbd6c9dbf72a1c073a1bf76a3c377 *a2c274a0c16ea1c26aa1c368a0c277a4c176a0bd72a1c276a3c376a3c175a1c470a0c174a3c472 *a2c270a2c076a2c0709fc06f9ec375a2c3749fc373a3c274a2c17ea4c182a5c38eabc690acc794 *abc79eb0c9a6b7ccaabbccafbfccaebfceb0c1cfb3c0cdb2bfcfb6c1d3b6c3d3b9c3d1b5c3d1b5 *c1cfb1c1d0b6bdd0b4bdd2b7c1d1b6c1d2b1bcceb1bdceafbecdadbbceaabbcc9cb4c99fb2c7a4 *b5c8aab6ccacbbceabbccaa8b7cbaebbceaebcd0b0bccfb6c2d1b9c2d0bbc3d0bbc3d3bac6d3b9 *c4d2b8c3d1b8c2d1b7c3d0b8c1d1b6c3d2b6c2d2b7c3d3b4c2cfb2bdceb9c0d3b4bfd2bac2d2bb *c3d3bdc6d4bbc6d4c0c5d3bec5d4bec4d4bcc5d3bfc6d4bdc6d6bec7d6bfc8d4bfc6d6bfc8d3bd *c6d3bbc7d5c0c7d3bfc7d6bdc4d4bcc5d3bbc6d6bdc6d6b6c1cfb7c1d1b6bfd1b3becea9bdcfa3 *b7cd97aecb99aec994adc994aec794acc78faec990abc68baac688adc78aa9c789aac798aec792 *afc98faac489aac689abc689aac893adc897aec894b0cb98b1c995b0ca9ab0c99cb1c792afc88f *b0ca9db1cb9fb9cc9fb6cd9fb6cba0b6cc9eb5cb9eb4cba0b4cc9eb3cc9cb1cba2b1cba3b6ca9e *b1c9a7b6cba8b6cca6b9cca9b8ccaabbccacbcceb0bfd1b3c0cfb6c2d1b7c3d2b9c4d1bcc7d3bd *c6d1c0c5d1c1c8cacad2d6cdd6dbced7ddcdd4d76491b6578fb4548cb0528bb4528bb4528ab153 *8bb6558eb5608fb65b8fb6568bb3528ab3578db65991b64a89b4588cb4528ab15089b45f92b753 *8db4578cb65691b6548cb3588cb65a8fb35d90b5558bb6508ab44f84af4c83b0538db65189b453 *8db64f8ab34d88b3568ab34e89b35088b3538ab44f8ab64d86b4558cb5528bb24c89b24e87b252 *86b54e8ab2528bb54884b14f8bb4548cb3548eb64f86b24f88b34b8ab54e87b4538bb6588cb350 *89b3518db4478ab6558ab4528ab54e8bb64b86b14c88b14f8ab44f8ab4518bb54b89b25188b24e *88b54c88b34e88b24c87b44c87b2548fb64d8cb45089b4508bb7558ab55186b44f88b4528bb44f *87b24d87b24b88b35290b6588ab6578db6508ab6528cb54e8cb6538cb64c8cb64e8bb64f8cb654 *8db84b8ab3508ab6528fb6558eb7508bb64f8ab24f8cb6568db6508ab6578fb65791b75b8fb552 *8eb9548fb95890b95491bb538bb5588fb54f8ab45b8fb65b8cb7548db6558fb64d8cb9518fb65a *90b85590b85791b9528db5588db74d8bb6588fb85b93ba5d96bb5991b55c90b55090b8588cb85b *92b95996bc6094bc5392b95890b55791b85d91b85391ba5c8fb95891bb5c91b9518dbb5790ba5a *91b96196bd6395bb5e8fb9578fb76095bb5090b9518eb65b91ba5592b75a94b85992b65593b95c *8eb75a92b95f95bc5a93bb6493ba6396ba5992b85691b75490b65c95ba5292b95895bc5693bb5b *91b85f90b65f94b95794ba6396bb6496bb6296bb5c96bb6399be5f96bb5d92b95e96b96096bb5a *96bb6099bd5d97bd6097be6796bd5e97bb6296bb6098bb6095ba5c93ba5c93bb5e97bc6298bc65 *98ba6598bb6397ba5993ba6296bb6097ba6097bd5c94ba6a97bc6298bb689abd6198bc5c98bc65 *9bbd6297be5f98bd6197bd6096be6599bd6a98bc5f97bb609abc5f98bc6499bb5f97bc6598bc63 *98bb699cbc669cbc6495b96599bc6397bb6298bc6397ba5f9abd619cbd679abb6599bc5e94bb5f *96bc6197bb6a9abd6598bd5f98bc679bbd6199bc699bbd639abc6b9cbb659cba679abc639abd63 *99bd6298bb6599bb6498ba6198bb659bbd669dbd6a9bc06c9ebf669abd699bbd639bbc649bbd67 *9bbc659bbd6c99bd6899c0679bbe6a9fbd6e9fbe75a0bf679cbd699bbe6a9dbe6097bc699dbe6c *9fbc719dbe6fa0be719fbe6c9ebd69a0bf679cbe6a9bbf72a0bf6da0be6ea0bd70a1bf699ebf67 *9ebf619bbf689bbd649bc0699ebf6aa0c1699ebf72a1c0689cbf649bbd72a0be679ac1699ec169 *9ec1699dbf639fbd629abe6499be6c9bbe6b9cbc6d9dc0659ec06b9fc1689cc1659dbf629abd65 *9abd679abe659bbc659cbf6c9fbd689ac0649fbd699fbc769dbd689abd6b9cbd6b9cbf6d9ebe68 *9bbf689cc0669dbf6fa0c0679bbd659abc639cbe6a9dbf6b9cbe75a2c1699dbe6ca0c073a0bf69 *9abc6b9bbd6699bc72a3c06b9ebe6a9cbd6b9fbf74a0be74a0c070a2c1679ebe639abf679dbe6a *a1c273a2c26f9fbf6da0c06fa1c3719fc26fa0c16c9fc06ea0c1679dbe6ca0bf6c9ec16ba2c168 *9bc06d9ebd6b9fbf6a9cc16a9bbf649fbd679fc1689fc16fa1c26b9fc1689cc16a9cbf6ca0c36c *9fc06f9cbf71a0bf619ebf689fc2649ec16b9ec06f9ebf6b9cbe709fbe689fc16ca2c16da0c06f *9fc36ca0c3719dbf689bbf6a99bc709dbd6a9cbf629fbe629cbe69a0bf6c9fc26ea1c36ca1c173 *a2c0699fc2609ac1699dbe69a1c16fa1c3729dc26a9ec06b9fc1689ebf6b9fc16fa1c375a2c36f *a1c26f9cc2679bbf73a0c16ea1c2699cc2679ec26da2c269a1c26ba0be6b9fc171a1c376a1c16c *9ec176a0c377a2c370a1c36da2c56d9ec170a0bf72a3c26da0c16a9fc16e9fc26fa0c272a1c06d *a1c172a2c16ea4c374a2c3759fc070a2c36ba1c1689ec26ea1c274a4c47ba2c379a3c188abc692 *abc699b0c7a1b3c9a9b8cbadbcccadbdcdb2bfcfb1bfceb3bdcdb4c0cdb3c1d1b2c3d1b3c2d2b4 *c3d3b7c3d1b5c3d1b3c1cfb3c1d0b7c1d1b3c1d0b2bdd0afbfd2b0bdd2aebdceaebbccaabbcba8 *b8c9a9bbcbacbbccabbbceaebaceb0bcccb0bbcdb2beceb4c2cebbc6d5b9c5d3bbc4d4bac6d5bc *c6d6bcc4d2bdc6d3bbc4d1b8c5d2b6c2d0b4c2d3b3c0d1b6c2d3b5c1d3b8c0d0b9c2d1b7c3d2ba *c5d1bbc5d2bac6d3bbc6d4bdc6d4bdc6d5bfc6d3c1c8d4bdc7d5bdc6d6bdc8d7bec6d6bec6d7be *c7d6c0c7d5bec9d3bcc8d3bec8d6bcc7d4bcc6d4bfc6d4b9c6d4bac6d3b7c2ceb5c0ceb2c1ceaa *bdcda2b6ca96aec98daac68dacc990aeca95adc999adc78dabc888a9c687a8c58aabc68baeca91 *aec989acc98bacc78caac579a2c28aaac78eadc88cabc68dacc986abc791afcb9ab3cb9cb4ca98 *afca99b1cb99b1c99eb5ce9eb4cb9eb4cc9ab1cca3b6caa2b6cb9cb1cb9db4cb9cb1cb9cb1cc9c *b4cca4b4caa6b9cda4b6cba4b6c9a9b9ccaebcceaebbcdafbdcfb1bdd0b3c0d2b7c2d2bac6d2bb *c7d3b8c4d1b9c2cfbec6c9c6cfd6cad6dcced7ded0dadd618db6608cb1588bb15d8eb45387b35a *8eb6588bb2528cb6588cb65a90bb5d90b5538bb7568db8508cb5558bb3538cb4508bb45588b158 *86b3538ab5528ab2528bb65f91b65d8eb6588cb55b8eb6508bb65087b55185b05a89b25b90b657 *8bb5528ab5508cb65189b5538cb55189b4508bb5528db5538ab35189b24887b14888b64785b64d *87b75188b55288b45289b34a86b14983b24f87b44c82b2598bb55287b55185b14785b14b85b150 *85b25a8bb64c8ab45188b35289b64881b44d86b25088b54b87b54d8cb64e86b34c87b54c85b449 *84b44c87b55487b34e88b45688b4558ab44e86b35388b45088b5528ab65489b5548ab34c8bb54c *89b64d8ab55a8ab2588bb54f87b45086b34c88b4568bb6508ab6578eb75a8bb34787b54f89b253 *8cb7508bb95490b65791b5558bb4538eb6588fb65a90b7528eb6578eb65190b8598eb8568ab65b *8cb3528cb5548eb65389b55189b55188b4518fb64e88b54c83b45488b6538ab6548db65189b756 *8eb9568fb94f8bb6518bb7508ab45890b85490ba5491bb528dbb6195bc5391ba5d92b8538db850 *8db6538db8528cb85992bb5c90bb528db8588eb55991b85e92b9588eb95790b75790b85c92bb57 *92bb5d92b86a97b95b90b95e8cb95a8fba5592bb5a92bb5b91ba5490b95f93ba5c93ba558fba5a *91ba5e94bc5e92bb6395bc5d94b95990ba5c91b95992b95e90bb608fbb5b94ba5996bc5a92ba59 *96bb5b93b95c91bb5d97ba6091ba5d91bc5b93bb5f95bc6999bb5f93bb6197bc6197bb5a91bb64 *93bb5b91bb568fba6596bb6096ba6596bd5d95bb5994b85691bb5f93bb6096bd6296bb5e93ba5f *96ba6599bc689abd689abd6494bb6694bb5e94bb5c95ba5a95bc6196bc6398ba6297bc6798ba64 *95bc6296bc5e96bc6297bc6b9abe6498c0709bc16a97bf699bc06696bd6598bd5c95bc6697bd60 *97bc6095ba6396bc6799bd5893ba6095bb6099bb5b94ba6396bb5d98bc5e96bb699cbe6c9abe6c *99be6798be6698bc699abe6899bd6599bc6099bc6798bc5f97bd6398bd6797bc6399bb679abb67 *99bc6697bb6898bb679abd6898bd679abe629bbd6999bc71a0c1739fbe6d9dbd649cbe629bbf69 *9ac16798bc6498bd629abd669abd6a99bd6b9bbe6598bd6b9bc1669bc06498bd649bbe6799bb69 *9dbf6c9dbd699abe679abd6a9abf6d9cc16e9fbe699fbf659cbf679abe6a9cbd6499bd6c9fc069 *9abf6c9bc06c9cbf6d9fbf689dbd6b9cbd679cbf6e9bc1699cc06a9bbe72a1c16ca0bf689dbe63 *9cbe659bbe6c9bbf679cbe6798bd6199bf6799bd679fbd74a0c0679abd6498bb6c9ec06597bf63 *98bd6599bf649bbb659cbb699ac06699bd6799bd6a9bbe689dbe6e9bc16e9cbf6d9dbe6d9cbd67 *99bc6799bd659bbe689bbf6a9bbf6e9bbd6a9cbe659cbe6799be6b9bbd629abe679cbd669cbd69 *9bc06499bd5f96bd6a99bd6d9fbb73a1bd639cbd699fc06ba0c26c9cc26b9ebe679bbd6c9cbe6e *9dc06e9dc1669fc2679cbe709ec16b9abd6fa0c270a0c0709fbf71a0c16a9dbe749bbe709cc066 *99c0689cc0679abe679abd689abf6b9dbf6c9ec0669bc16d9cc06e9fc271a0c46fa1c26ea1c16b *a0bf6b9dc06b9bc06c9cbe6fa0c0669dc1659ac16fa1c4699ec16a9cbf729ec26a9bbf699cc26f *a0c26b9fc36a9dc36da1c1679abe6c9bc07099c16a9bc16e9ebf679bbf709cbf6e9cbf749dc16d *9dbe6498bd6b9bbd699bc0719ec171a2c3669ac06a9fc26ea2c16b9abe6a9cbf779ec16ea1c166 *9cbf659cc170a0c36e9ec16d9ac06e9ac16c9bc0699ac072a1c16c9dc26a9ec1689dc36c9dc474 *9fc0759ec26b9abd73a1c3659fc16ea2c36a9ec375a2c56ba1c26d9dbf6c9abd6ea0c076a1c16d *9bc27ca2c376a4c36da0c2769ec3749cbe70a0c46ca1c076a0c279a3c480a5c683a8c792abc799 *afc79db2c89eb5cba0b5caa8b7ccadbacdafbcccb4c0d1b5bfcfb5bfd1b6c1d2b5c0d1b7c1d2b5 *c1d2b6c2d1b4c2d3b6c3d3b9c3d1b7c3d1b6c2d1b6c1d1b4bdd1b6c3d0b5bed0b5c1d0b1beccae *bbccaeb8cdacbaccb1bbccb0bdd0b0bdcdb1bcceb4c0ceb7c1d3bcc5d4bcc3d3bbc4d2bdc4d4bd *c6d5bbc6d5bcc6d4bcc7d4bbc6d3bcc4d4b7c3d2b6c1d1b6bed2b6bed0b7c1d0bbc4d2bbc5d6bc *c5d5bfc3d5bdc5d4bcc4d1bcc6d1bdc6d6bcc6d6c1c6d4c1c7d6bfc7d5c2c6d3c0c7d4bdc7d6c0 *c7d3bec7d3c0c8d6bdc6d6bbc5d4bec6d4bec5d5bcc7d6bec7d6bbc7d3bbc4d4b9c3d2b7c1d1b1 *c1d0afbccda6b6cc9cb1cc94aec994aec995adc694acc894acc98baac690acc68eabc88ca9c989 *a8c885a4c786a6c78eaac789a8c68cacc689abc78aaac886a8c790aac78eadc98dabc78dadcb98 *afca99b1caa0b2cda4b5cda0b4cca2b5cda6b7cea4b6cda4b5cca1b2cba4b5cca3b6cd9fb6cca2 *b6cba1b3cba2b6cca2b4cba4b6cca4b7cca6b6cda9bacdabbacdaebdd0aebbcfaebbceb3bfd1b2 *c0d2b7c1d3b6c1d3b7c2cebec6c8c8d0d4cbd6dbcdd8deced8dd6c94b36a99b65b8db05b91b059 *8db3518cb34d8ab1558db25891b6578eb7588eb95288b65d8cb6558db4538bb14c8bb4538eb54a *88b44f87b3558eb65b94ba5d8fb65c8eb4568cb45d8eb65a8cb55c8cb6578eb6598cb5548bb558 *8fb4538bb3508cb54f89b64b87b3548cb4568bb54f89b6578cb5548bb55188b45087b14c89b351 *8ab44f87b4518cb54e8bb54d8ab24c8ab3508cb64a86b44e88b14c89b14d86b1508bb44781b056 *88b15088b3528ab5538bb34e8ab24384b34586b4538bb8518ab5568bb34f8ab44b86b44788b34d *89b4598ab55088b6578ab64f8ab6558cb54c8bb64d89b14e8ab44f8ab54e88b44e8bb8538db750 *89b64f8ab54d8eb44d89b2578fb55591b64e86b45289b64f8cb6508bb65187b14a8bb3508db64f *87b24f87b6528bb54c87b44f89b55b8fb9528eb84f89b6518db64d87b64a8cb65992ba568fb65d *90b5548ab54f8db5578fb94786b55591b84e88b1558eb6568fb4508ab5598eb6558eb6508bb450 *8db6508eb74f8db55590b7568cb86392b95690b85291ba5090b95592bb558eb95b93b95c94b84d *8fba568eb74e8db8518eb65890b65890b75391b64d90b95b92ba568bb85e90bb4f91ba5593bc5c *92ba5291b95891b95791b95393bb5491bc5590ba5693ba5a94ba5a92ba5d96ba5a93ba5e8fb95c *94bb5393b65994ba5f96bb5f94ba5c92b85f95bb6195ba6192ba5d91b96095bb5b97bc5193b956 *90b95892ba5791b96092b85e92bb5f94ba609abe5f99be5b96bb6193bb6395b96097bb5c94bb5c *94bb6196ba5b98bb6799bb6295bb5d91bb5f92ba6096bb5a92ba5995bc6098bd5e97bd6299bd59 *95ba5e98bb6294b85d95bb5f97bc6298bc649bbd5d98bc5b94ba6095ba6598bc5f94ba6098bc61 *98bc6196bc6199bf5f99bd649abd6599bc5d96bc6198bd6499bd5d97bc5797bb6298bb669abd6a *9bbc6197bb629abb6899bd5d96bb6598bc6999be6699bd6398bd6699bb6597bc6598bd6498bd6a *98bd6499bd5b97bd6299bd689cbd679bbd6598bb6198bc659abc669bbe6e9cbf6799bd629bbd68 *9dbd689abb639abc679cbe6c9abd6799bd6397bb6c9dbd6099bd639bbd639cbd5e99bb6198bc5d *97bd659cc06a9ec1669dbe6a9fbc6e9fbd609abc6a9cc06e9ebd649abd689dbf649bc06ea2c16a *9dbd6a9dbd6b9cbb6a9bbd6399bc679cbd699ebf6d9cc06a9ebe679bbd689bbd6a9cbd649bbd6b *a1bf68a0be609ec0669fc16f99bc6b9fbe679abd71a0bf679fbf659fbe6f9fc0689cc166a0c06d *a1c36fa1c16599bb6d9bbd6b9bbd709ebf6e9dc0659cc06b9cbd649bbd669abd6a9fbc5e9bbe61 *99bd6c9cbf6a9bbf67a1bf689dbf73a0be6c9dc0659cbd669abd6598bc669cbf6199be689abf6a *9bbd689bbb6b9dbd5f99be6199bd699dbf6ba0c1659abe619dbe6fa2c1699ebd619bbd6a9dbe66 *9abe6a9dc06d9cc0699dc06a9cbd6d9bbe689dbd669bbb679dbe699bbd6a9abd71a0c16a9ec06c *9dc2719ebe659cbf6a9fc1629dc0659ec069a1bf659dc067a0c270a1c16f9fbe6ca0bf6d9dbe66 *9bc06c9fc172a3c16e9ec0669ebf6b9fc1659dbe6a9fc068a0c16fa3c170a1c06a9fc16fa1c267 *9dc169a0c2699ec1689cbe689bbf659dbe6aa2c36b9ec1609cc16b9cbf6a9bbf709ec16fa0c269 *9fc3689fbf6b9fc3699dc16ca1c276a4c3659cbe649abd609abe699ec26b9ec1639bc370a2c476 *a0c271a0c16a9dc2679fbd6b9fc16aa1c3689dc2649abf679cc16a9dc06d9ebe659cbf699ec166 *9cc169a0c1659bbf659bbf729ec16a9dc16da2c36a9fc172a1c3659ec2689dbe6a9fc0679ebe6c *a0c36aa1c16da1bf6ca0c2679dc16f9ec06ba0c16c9ec2709cc16ea0c174a0c26ca0c26fa0c275 *9fc36da1c268a1c16da3c369a2c36ca0c370a2c376a4c474a4c276a2c17ca4c58baac694adc79d *b2caa1b6c9a0b3c9a7b9cba4b7cba9b9cbaebbcdb0c0cfb0bfd0b3c0d0b6c2d2b6c3d2b8c4d2b6 *c4d1b7c4d1b6c4d2b6c3d4b6c4d3b8c3d1b6c3d2b8c3d2b6c3d3b6c3d1b6c2d2b4c3d3b6c2d3b5 *c1d0b2c2d1b4c0d0b3c1d1b1c1d1b2c2d1b4c1d1b6c2d1bbc3d3bbc5d3bcc6d1bdc7d4bcc7d5bd *c8d4bbc7d5bec7d6bdc7d5bec6d4bcc6d4bac6d4bac7d4bcc6d3b8c3d2b8c3d1bbc3d1bbc3d1bd *c6d4bcc5d5bfc7d6bec7d6bdc8d6bfc7d6c1c7d5c1c8d3c1c9d6bfc7d7bfc7d6c1c9d8c1c9d7be *c9d8bfc7d4c1c8d3c2c7d6bfc8d6c0c7d5bfc8d4bfc8d6bec8d6bec8d7bec7d6bbc6d3b7c4d1b7 *c3d3b1bfd1aec0d1a6bacd9db7cd98b2ca95aec896aec793aeca93adc793adc78aacc78eaec98a *aac78aaac585a7c58aaac586aac78aabc88cacc885a8c889acc98badc78dadc68caec992afca91 *aeca92aecb96aeca99b0cc9db4cba3b6cca5b6ccb0c0d0abbdceaab8cca7b6cda6b8cda4b9cea6 *bbceaabbcea4b8cba4b8cba1b6cba4b6cda5b7cda2b9cda6bbcfa9baceaabacdabbacdacb9ceaf *bcceaebdd1b0bfceb1bfd1b1becdbbc7ccc9d1d5cbd5dbced9ddced8dd6891b6648fb75d8eb455 *90b34f89b1558cb55388b25b8db3568ab3598cb55789b2518bb5598ab65c8cb5578cb4528cb557 *8cb5578cb35a92b6578bb64f8cb4528bb6588db76392ba5f8cb66190b5598cb3568cb5588ab552 *8db35186b15087b2538eb6508bb5558db6558cb5538bb5558ab3538ab45185b3588db55288b452 *8ab45488b34a88b45287b55587b2518bb34f8ab24d89b34585b1538bb24d85b15185b25189b148 *85b14b85b34c84b25087b54c8ab35288b14c89b2538db5588ab25286b2508cb64d8ab34e88b252 *8bb55185b14d86b34e87b35487b2538bb54a86b44b86b34e8ab4558db6528bb44f85b44d86b54e *88b64886b64d87b4548ab64b88b4578cb45182b35287b44887b64c87b64d89b55487b3508cb34c *8bb5568eb9568bb54d86b3518ab4518ab34e8ab64c8bba4f8bb85289b6588ab64e8ab3538db64f *8ab54e8ab45289b6518cb65290b8528cb54f86b44d86b54b86b34e88b35a91b9528eb54e8ab754 *8cb45089b55388b34f8fb64c8bb6548bb55890b95390b6538eb8508fb7568eba4c89b55992bb51 *8fb85391b85891b95d91b75c95b95694bb5b91b85a8fb75b8db85d8db65a8eb75792b75f96bb5f *96bd6896bb5a90bb5891bb5791ba4d8ab75890b75990bb5992ba5a8fba5c91bb5390b94e8db85f *94ba518eb56196ba5792b85b94bb5a94bc5f92ba508cb65c95ba5a92bb508fb65490b75f94bb5f *95bb5894bb5f93b85d90ba6091b75990ba5d96ba5b94bb5d94be5c91bb5e95bb6597bb5791b85e *95bb5c92bb5f94b95f96bc5e95ba6092b95e96bb6495bb6096ba5896bb5c96bb5a94bb6196ba62 *96b96697ba6397bb6298ba5293b95a92ba5c93ba5d94ba5e94b95d95ba6199bc6398ba5f97bb5d *95bb5f97bb6197bb6397ba6095bb6298bd6799bc6399bb6097bf5e94ba6497ba5f95ba6498bb5f *95bb689bbf6199bf669abd6295bb5f94b96b97bc6593bb6499bd6297bd6497bd609cbd649abc60 *98bd6799bb6799bc6499bb5a98b96199bd639cbe719dbe6499bb6698bb689abb6398ba699abd65 *98bb6296bc6a98bd6598bb6899bd6599bd6899be6497bb649cbe5a97bd699cbd659ebf669cbe69 *9dbd669abd6e9fc0639abe6b9cbd6a9bbd6298bb689bbc6599bb6b98bb689bbd659cbe6399bd68 *9cbd639abe739fc16c9ebf649fbd6a9dbd699dbe6399be6f9cbf6c9dbd699abd699ec071a1c065 *99bd699abe6a9ec06c9cbd6f9cbd709ebf6c9dc0719dbe6a9abd699ebf6f9ec0679dbe6c9ebd69 *9bbd679ebf6ea1c16b9bbd6a9abf6a9cc06b9abf6499bd609abe5d95bb6999be669cc0679bbe62 *99bd73a1bf6a9abc689abd6a9dbf6699bd699ec36c9dc2689abe75a0bf629abf639bbc669cbe6a *9ebf6c9dbd6a9cbe6a9dbd659abd689ebd699bbc6c9ebd679bbc689cbd649cbf679dc0699cbe6a *9cc1679dbd659cbd659abf6c9cbd6c9bbe6a9cbd6d9fbd729fc172a0c06d9cbe6f9dbe669bbd64 *9abd6c9dc0679ebd6fa1c273a3c3689fbe659abe729ec16f9bbf5f98bd6a9cbd6d9fc16a9dc066 *9dc16b9ebf6999be5f97bc649abd689cbe71a0c16f9fbf6b9fbf6a9dbf689dbf6a9abe6e9dc16d *9cbe6b9bbc649dbf6ca0c0659ec074a1c36c9cbf6a9cbf649bbd6799bf659abd6c9cbf6b9cc16e *9fc0699fc06d9bc06b9cbf659abf6a9ec2699fc1659bc1719fc16a99be689cc16c9bc1649cc16c *a0c16aa0c1699ebe629cc16a9ebf6ca0c16ba0bf6c9abf6d9cc0659dc0699dbf669ac16a9abf6b *9cbd659bc0749fc0689dc06097bd659ac172a1c26b9fc269a1c16fa3c2729fbe679bbd699cc069 *9dc16da0c372a2c36e9ec268a0c16ba0bf679fc16ea2c275a2c36ca0c173a1c26ca3c26a9fc170 *a1c37ea4c279a2c374a2c468a1c1689ec171a1c373a1c375a4c375a4c377a2c384a5c38daac896 *adca9dafc9a3b4caa5b7c9a7b8cba9bbccacbacbafbccdadbccfb0bfd0b4c1cfb7c1cfb6c3d2b6 *c3d0b7c3d3bac5d5b9c3d5bbc5d3bac4d4b9c4d3b9c4d1b7c3d1b8c4d3b7c3d2b8c4d3b7c2d1b8 *c3d1b8c0d2b7c3d1b6c3d1b7c4d1b6c2d1b7c4d3bbc4d1bac3d1bcc4d3bbc6d3bbc6d3bbc6d4bd *c6d6c1c7d6c0c9d6bfc8d7bec6d4bbc6d4bcc6d4b8c5d3bbc5d2bbc5d4bbc6d5bdc7d6bdc6d3bd *c6d5bec6d8bec8d6c0c7d6c0c8d3c2c7d6c1c7d5c1c9d6c1cad7c0c7d7c0c8d8c0c7d5c1c7d6c1 *c9d3c0c8d4bdc6d4c1c7d6c0c4d5bcc7d3bec7d6bec9d5bfc7d2bfc7d4bdc6d5bdc6d6bdc6d6b6 *c3d3b6c3d4b5c1cfaebdcfa6bbcca0b5cb9fb5cc9bb1cb9cb0cb99afca8fafc791aec88bacc88c *aac58baac687aac68baac98eaeca89aac689aac687abc486a8c488abc88cacc78badc795aeca95 *b0cb90acc68cabc695aec79db3caa1b7cba8b9cdabbbceb1c0d2afbfd1abbbcda8bacca7bacca6 *b8cca6b8cca5b6cca4b8cea9bbcea5b7cba8b9cca2b8cca1b3cca4b7cca5b9cca7b9cca7b8cdac *baceacbbcca8bbcda9bacbabbccdaeb9c9bcc6cac9d0d7ccd5dccfdadeced8dc6892b15d8bae5f *8fb0558caf5389af518ab1598ab1578bb0598cb1578aaf578bb1578ab0598ab2558bb3528cb155 *8db15387b15a8bb35c8bb55e8fb15b8fb2588db35990b66592b66390b56894b66591b56b91b565 *90b5618eb4588db3588db3538bb45289b2558bb65e8eb6608fb35a8db3578eb25689b35389b356 *88b34d82b14a81ae5388b15384b14e85b14c87b14d8ab44f85b24886b14e88b15085b34d86b148 *88b14987af5b8ab1417dae4c85b14c86b04d8cb4568cb24f8ab24b87b35089b14d86b14c86b14b *88b34d88b34d85b25388b14889b15189b25188b45187b34d86b24f87b3508bb54d88b1508bb54b *86b35088b44b83b24a84b04e86b1508cb34c8eb5518cb5588cb65289b34f89b25388b44c85b248 *86b2558eb7528cb44c8bb45389b1528bb6568ab55287b34d88b34d87b44d8cb3558eb64b8ab44e *8bb34f89b44f8ab45089b44e86b24d88b2548fb54e8ab2518ab2528ab24d85b1518ab34f8eb658 *89b34f8cb54f89b5518bb2518db45992b8508ab64d8ab3518ab3598cb3528cb34c8ab54e8bb452 *8eb4518db4538eb55d8eb8538db6508cb55290b94c8bb45691b65992b95d91b65c91b74d90b658 *90b75692ba5d91b45890b85891ba5794ba5791b4588db6568db54f8cb55991b7578fb65894b94d *90b75b91b75a90b65a90b65f93b85893b95b91b8518db65994ba5693b85c93b75f93b85690b755 *8eb45b90b65791b65893b85192bb5c92ba608fb85690b75c94b75992b65493b65992b75c92b95e *95ba6197bc6592ba5f8eb65d93b95c93b85c94b96096bb6196ba5d95bb5c92ba6093b86097b85a *91b76098bc6097ba6597bb6195ba6395b86194b86395b86596b85b92b66297b86095bb5b93bb66 *98bd6899bc6098bb6094b95c94b95e96bb5e96bb5e96bb5f98bb6099bc6897bc6498bb6698bb5f *93b96497bb6a99bd6197bb5d94ba6998bd6599bb6198b66295b96497bc5f95ba5e96bb6298bb66 *98ba6a9cbe5f97ba6095bb5b97bb6396ba6999bb6198bc5f96bb5e96bb6298bc5f95bb6297ba61 *96b85c96ba6097b9679bbb609abb649cbc6c9bbc6b98bb699abb6d9dbc6a9dbe6699bb6a9ebe6d *9dbd709dc06a9ebe6698bb609abb689bbc659abc719cbc619bbd6099bd6599bd6d9bbb689bbb6b *9abb699cbc6c9abb699ebd6d9fbe6a9dbc649abb649bbb679bbc679abc6399bb6d9bbd629cbd65 *9ebe6399bd6299bc6a9bbc699cbb669cbd6298bc689bbd6599bd659bbd6496bc6498bc70a0bd6a *9cbd6d9cbd6e9abc669cbf6a9abd699dbe6d9bc0679abe669bbd5f9abe679bbd5f98bd6a9bbc65 *9abb6498bd6098bd639bbd6a9abe6d9dbe6899bd659dbd6697bb639bbc6b9fbd6da0bd6099bb67 *99bc6499bc699cbd6d9cbd659bbc619abb649abe699abe6699bc6e9abc6298bb699cbc6899bc60 *98bc639abe6699bd6297bb6d9abd669dbd6c9cbb6b9cbb6c9fbb6b9cbc6a9bbc659cbd6b9fbe6a *9ebe6599bb699cbd659cbb649abd639bbd6898bd699ec26a9fbd699dbc699cbc629bbb639bbd63 *99bb699cbe6b9ec0709ebd6d9fbd699ebc6b9cbd6a9ec073a0c16a9abd639bbc6c9fbd689dbd66 *9abc689cbe689cbe6a9dbe6498bc699cc06799bb6a9bbd6a9abb659bbb6f9bbe6a9ebe6097bb62 *98bc669cbf619cbc6ba0bf6c9cbd689dbe6c9cbf6c9cc16999bd6698bd749bbe6799be699fbe74 *a0c16da0bf6d9cbd6c9ec06ba0c16b9bbd73a0c05e9bbe649dc0699dbe6b9dbe6799bd719cbc6b *9bbd6c9cbe6a9fbf6c9fc0699dbe5f99bd71a0bf689abe6c9dbe72a0bf649dc0729fbf719dbe63 *9cbd69a2be6a9cbe6ea0bf729fbe6e9dc077a4c4659fbf75a2c16f9dbf699ebd76a0c1749dbd6c *9ebe74a0bd709dc1679dbf6da0bf75a2c0749fc06c9cbe6c9dbd6f9fc26ca0c26fa2c27ba5c38f *abc799b2c9a7b5c8a8b6c9aab9cbaebbccacbacaaabbcbadbbcbacbbcbb2c1cfb4c1ccb6c1ceb6 *c1d1b4c1d0b8c3d1bac4d2bac5d3bbc7d3bbc7d3bcc5d4bbc4cebac4d1bbc4d1bbc4d1bbc6d3b6 *c5d1bac6d4bac6d3bbc6d3b9c3ceb8c3cebbc6d1b7c3cfb9c6d3bac4d3bbc6d3bec6d5bdc6cfbb *c5cebdc6d2bdc7d3bcc6d3bdc7d6bcc7d4bdc7d4bcc6d0bec4cfbcc6d2bbc6d3bbc6d2bcc6d4bb *c5d3bfc7d3c1c8d7c1c8d6c2c8d6bfc8d3bec8d5c0c7d5c0c9d6bfc9d6c0c8d7c2cad6c2c8d1c1 *c8d6bec9d3bfc7d3bfc8d7bec8d6c1c8d5c0cad6c0c9d5bfc7d3c0c7d3bcc5d3bdc7d2bac7d4b6 *c4d0bac5d3b6c3d3b5c4d1b1beceaabacca4b6cc9fb6cb9cb4cb9ab0c99ab0c895afc78fadc690 *abc68aabc78babc68aa8c491abc68aadc687aac78aaac68aa8c286a7c388aac488aac48aabc68f *abc48eadc690afc791afc79cb1c99fb1caa6b9ccaabbceaab9ccafbbceadbccfb0bcceabbaccaa *b9cca3b9cda7bbcea1b6cca0b4cba0b6cca3b8ccaabccea3b7caa0b2c99db2c9a4b6cba5b9caaa *bacda1b7cca4b8cda7b6cba9b7caaab7cbaabac7bcc5c9c7d0d6cbd5dcccd8ddcddade6492b66b *97b86d91b6578ab05f8cb3578ab2578bb2588db55f91b65f8fb75a92b65d8db65a90b55c8eb652 *8bb4578db5508cb55a8bb5528cb55d90b9568eb55f90b66f91b96f95bb6c98ba7096b97196bb67 *95bb6792ba6192b5618eb5658fb5648cb26790b55b8eb56393b6588eb7598fb65089b25488b350 *88b34f87b2558ab44d8ab55087b44d87b54886b44c86b44b83ae4982b14e89b24f89b44a88b24f *88b44d87b64e85b25084b14e82b14f88b3488cb44d88b64d8ab54b86b44987b24d85b25187b14f *88b45088b44b88b44c88b74a86b54c86b34c86b24d87b15588b45588b44f86b14f8ab44f88b24e *89b54b89b44d8ab25087b14986b15388b44585b24a87b54981b44a89b74f8ab64e8ab64881b152 *89b34a85b24e85b44c85b15289b74b86b35489b65287b24e85b15288b4508bb74f8ab64b89b452 *8cb6538eb84f8bb54a87b25288b35289b54b86b4508db6528cb54f8ab6518bb74e85b3558bb554 *8bb5528bb64e8cb54d8ab44d88b34b86b6518cb9508bb7538eb6538cb5528db65592b74c8ab655 *8db75e90b95591bb528fb55c90b7538eb65891b9518eb9538db6508eba588ebb548dbb508cb55b *90b65d92b95591b9518eb74f8fb85992bc5b8eb85790b8548eb75d93ba5290b8508ab44e8eb754 *90bc5c94bc5891bb568db85a8fb65e92b95d93ba5b94bc5590b9558db65890b85892ba5a92ba5b *96bb5f96ba5d96bc5c91b95c95b86092b8558fbb6493bb6196bb5f95b86092ba5e91b95b92bb53 *92b96995b95d97bd5d95bb5f93bb5c91ba6c99bd6197bc6598bc6496bd5b94bc5895bb629abc5f *93b95d94b86697bb5a94bb5e94ba5c95b95c95ba5c96ba5e97bc5693ba5f94ba5e91ba6296bb5c *95bb5d97bb6798bb6099bb5e97bc6498be6498bd6896bd6898bb5f95ba5b93bb6298bf6497bc5e *96bb6398bc6296bc6698bd5e96bd6597bc5e91b95d92bb6796bb659abe6699bb6797bc6597bb63 *96bc5c96bc5d91bd6698bd6098bb6198bc6297bb6898bc6296bc6097bd6395bc5d93bb6698bd61 *98bc609abb6099bd6698bb6498bc6197bc5c92b96598bc6e9dbf6499bc6d9fbe6599bc6599bd6b *9cbf729dc16497bb6099bd699bc0609bbd609bbe6898bf6097bb679abb689abd6b9fbd6a9bbd65 *9cbd649bbc6198be6799bd699abd6799bc669cbf6699bd6d9bbd6a9fbf70a0c06d9cbf729fc166 *99be6a9ebd6a9abd679cbf639bc0659cc06a9bbf6b9bbd6b98bd709cbe699abe679abd659abf63 *9abf699ebf649ac0639abd6a9bc16b9bbe6599bd659bc16a9abe649abf659cc06497bb6498bd62 *95bd6699bc659abd649bbd639abe6399be6a9cc06498bb639abb699abe6b9bbd6899bd6899bd66 *9cbd679bbd6399bd689cbd679abc739cbd6999bc6498bd6298bb6a9abe639abd659abd6b99bc67 *99be699abd6096bd6197bc6299bd6098bd659dc0689bbd6999bc6a98bb6699bc649abd6299be69 *9abd699abd6099bd6c9cbd649bbd6697bb699ebe6599bd609cbf6599be689dc0659dbd6f9ebe6b *9cbc6c9dbf6f9ec0649dbf699dc16b9dc06a9fc1639ec0679ec16f9bbe729bbd6fa0c1659dbf68 *9cc1689ec2749fc36d9ec06d9ebd6e9abd6f9cbf659dbd6697bd689abe6699bf679bc1689bbb67 *9abc629cbe6d9fbd709fc0649abd699fc26c9ec2699fc270a0be6998bd699bbe6699c1649abf65 *99be659cbf6a9ac16b9cbf6e9ec16ca1c26d9ec1649bbf669cbd689dc0689fc16da0c06b9dbe6c *a0bf649cbe709bbf699bbe6e9ac16698bd659bc16299c0689cc075a1c2719dc16b9bbd709ec06c *a1c2699fc16d9dc16da3c46a9bbf6ca3c075a1c170a1c16fa1c16fa3c16ca1be639bc1659ac26d *9ebf719fc16ba0c0669dbe6f9fbe6da1c473a0c3669cc16ca0c374a4c076a0c16a9dbf80a4c484 *a8c68eadc89eb4cba7b7cda9b7cca9b7c9adbbcbaebcceadbbcbaebcd0aebdcdb3bed2b5c0d1b6 *c1d1b7c2d1b9c3d2bbc4d1bac5d5bac6d4bbc4d3bcc6d3bbc4d4bcc6d4bbc5d1bbc6d0bdc6d3bb *c5d3bbc7d4b7c6d3bac5d3bdc6d5bdc6d3bcc4d1bbc6d3bbc5d3bbc4d4bbc5d4bcc6d6bbc7d5bd *c6d4bec6d3bcc4d3bdc6d5bcc6d5bbc6d4bdc6d4bec6d5bdc7d4bcc7d5bec7d5bfc7d6bec8d6bd *c7d5bdc7d6bfc7d5c0c8d8c0cad7c0c9d6c0c9d7c0cad6c2c9d5c2cbd7c0c9d6c0c9d7c1cbd8bf *c9d7c1c9d7c1cad8c1c8d7c1c9dabec9d7c1c7d6bdc8d6bfc7d7bdc9d6c2c9d8bdc9d4bdc8d8bb *c4d3b5c2d2b5c2d2b6c0d1b5c1d1b0c0d5aabbcea7b6cda8b6cda1b5cca1b4cc9cb2cb9cb1c99b *aeca93adc991adc893acc997afca98aec793aeca8dabc78aabc686a9c684aac58bacc685aac790 *acc79aacc995adca96aec79db0caa0b3cba4b7cbaabccdb0bdceaebbceadbacfb1bdd1afbecfad *bdceaabcd1a3b9cea4b9cda3b2cca0b4cba1b3cba8b8cdaabaceaabdcea2bbcda1b8cca0b1cb9e *b4cba4b6cca5b5cc9fb2caa2b3caa3b5ccaab9cda8b9c7bec7cdc8d0d7ccd6dbcfdaddcfd8dd58 *8eb0568eb1568bb1508bb35a8db05a8caf5c8cb1578bb25c8db35d8eb45e8eb65c89b45c8eb856 *8cb6588cb3548eb66093b8548db6598eb85e90b76590b75b91b56a9abb719bb9739db8739cb96e *95b67298b56f98b66892b76996b76a92b66591b56a94b66592b6618eb5588bb5608cb54f8bb34e *88b44b87b34e87b14484b14986b24a82b04e88b34c89b1518bb44586b14788b24886ae4d85ae4c *82ae4683b04787af4b86b14d87b34386b24787b24886b14c83b1508ab24e8ab14d8ab34985b146 *86b34d89b54d89b24083b14a84ae4c87b04e88af4985b14e88b44582b24b86b44985b14d86af49 *88b24587b34889b44a8bb64a83af528ab44f88b24582b0508eb54b86b14f88b34884b14f87b550 *88b44484b1478bb1478ab24c8ab14a87b15287b24d87b34f8bb44c8ab64b86b5538bb64887b349 *85b25087b35489b24785b14e8ab34d8ab54d8ab34a88b15693b74e88b54f88b4588fb85288b34f *88b34c8bb64f8cb54b88b2518cb3528ab25388b5518cb6548ab64a8ab65190b75392b34991b54c *8eb85d90b7508cb44b8db75493b94e8eb74d8ab6518db55191b7588db74c88b5468ab64d8eb64f *89b5508fb65390b85390b65290b95a91b85b91b9578fb64e90b6538eb7508db85494b96296b958 *93b75992b85c93ba5591b85893ba5692bb5592b85c93b95194b65391b65891b75c90b85793ba56 *91b85490b85192b95291b85292b95f92b95b91b85892ba4d8eb65995bb5694ba5392bb5792b95a *92b85d91b75b91b75991ba5792bb5d91b95991b85e93b76097ba6097ba5a92ba6496bb578fb95d *95ba5b97bb5e97ba5b99bc5b96b96295ba6296ba6196b95d98bb5c92b95892ba5c94bb4d91b85c *96b96097ba6697bb5c92bb5d92ba5f96b76298ba5595bb5c98ba5d98bc5393bb6097bc6499bb5c *93ba6198bd5e97bc5f95bc5996bd5693ba6095bb6493b85291b85f96ba6096ba6599bd5d98bb61 *99bb6c9cbe6797bb6597bb5c97ba5b95bc5d97ba5a96bb5c97ba5e99bb629abd5d98bb6398ba65 *99bd5d97bc6398bc679bbd6598bb6199ba6599bb699dbb6e9abd6699bb6298bd619abc6098bb62 *99ba6b9ebc6599bd6598bd6c9abe6399bd5897bb619bbc6c9abc5f99bc649ebe699dbd6599bf64 *97bd6399bd6096bc5c97bc609bbc6da0bd659bbd6d99bd679bbc669bbc649cbc679abd6199bc5f *9abd659ebe679ebd669cbe689cbd649abd619abe6298bc649cbd649cbe659cbd699bbd669abd63 *99bc609abc629abd669abd6399bd629bbb619abc6199bb659abb6999bc619bbe609bbe679cbc5f *99bd6399bd6499bb5e98bc5d98bc6197bc6399bd6099bb6698bd6399bc6399bc5f99bb6e9abd66 *98bb669cbc659abc6598bc669ebf669abd6a9cbf679abb649bbb629abc6099bd6199bc679cbc68 *9abe6599bd6198bc6398bb6398bd689abb5f96bc689dbd6b9dbd5e98bd6499bc659bbd5f99ba66 *9fbd6fa0bd6999bc6c9ebd609abd649bbd619abd629abd609abd6299bc5996bd5e99bd629bbd62 *9bbd65a0be67a0bf6fa0bf6c9fbd6e9cc16c9dbf6a9dbe679cbd6f9fc0669ec26a9ebd669ebc65 *9dbc689cbd689dbd6998bc669abe629abe5b9bbf659abe609cbe639dbd6899bc6699bd6c9cbd64 *9cc1669abf6c9ac1689fbe67a1be6599bb5f97bd6a9dbf649bbd629bc15e97bd649cbe629ec169 *9bbd6498bd689bbe6ca1c25f99bf699bc1649ebe6798bc659bbc6da1bd6e9fc06c9dbd6699bd61 *9abd629abd659ec0659ebf609bba669dbd6499bd6396bd6b9bbd6e9ec073a4c36b9ec1639fbd67 *a1bf649fbf659abd689bbb6d9dc373a1bf729ec16da2c16aa2be6ca4c16da2bf79a2c26a9cbf64 *99be5c99be6ea1c369a1be6ca3c1689fbf6c9fbe6b9cbe689abf6d9dc06fa1c073a1c26d9fc27c *a5c38cabc397afc7a4b3c9a5b6caa9b9ccaab9cbaebfd0a9bcceaebecdb1bdccb0bdcdb1beccb3 *c3cfb5c1d0b5c4d4b5c5d3bac5d1b8c6d2b9c5d3bdc7d3bdc6d3bdc6d3b9c6d1b9c6d3bdc6d3bc *c6d3bbc7d2bcc7d4bdc7d3bdc6d2bac3d3bbc3d3bbc5d3bbc6d3bbc7d3b8c6d3bcc7d1bbc6d1bb *c6d3b9c6d3bbc7d2bbc6d4bcc7d4bdc8d4bdc6d2bdc7d3bdc7d3bcc6d4bcc6d3bcc6d4bec7d5bd *c7d5bfc9d5bfc9d6c0c7d4c1c8d7c1c9d6c1c9d5c0c9d5becad6bfcad8c1cad6c1c9d6c3c8d5c1 *c8d6c1c9d6c0c9d8c3cad8c2cbdac2ccd9c2cad6bdc6d4bfc7d5bfc7d3bdc8d3bfc6d5bdc7d4bb *c6d2bbc6d2b6c3d1b6c2d0b9c1d1b6c1d0b4c3d3abbdceacbbcdabbbcea6b9cca5bacca4b6cba1 *b5cb9db1c899b1c999b1ca9cb1ca97afc999b1c995afc990abc688aac57ca6c483a9c585aac58a *abc387adc696b0c993aec997afc79db3caa0b6cdaabbceadbdceb0c0d1b1bfceb1bdceb3c1d1b2 *bfcfb0becfaabacdaabbcda3b8cca2b5cea4b6c9a5b9cba7bbcda4b7cca7bacca4b9cda0b6cb9d *b5ca9eb3c9a0b5caa1b7cb9db2ca9db0c9a0b5cba2b6cbabb7c3bec7cbc7d2d7cbd6dbced9decf *dade6890b15e8cae608cb15d8cb05c8db3578cb15d8db35d89b1668fb65d8bae628eb26893b65f *92b65a90b75f8db55b8eb75d8eb76092b66390b75c8cb15f91b55f93b6719aba759bba759bb87d *9db97a99b97d9bb87197b7779cba7196b76f98b96e98b76590b66992b76693b76f96b75e8eb555 *8bb35587b34a84b14e89b25188b34f87b35688b34d8ab14e85b25088b24f88b44a80af4e85b051 *85af4981b04e83b1598ab35084b14781b14883b14c82b14c88b14f87b25089b3558ab1518ab24c *86b24a81b14985b04885b04784b14b86b1508ab25289b24f85af5085b14583b14c83b24c87b24c *86b14886b34f89b35286b14b82b14f86b14d81b04985b04b85b24984b44b86b34e89b25089b54a *85b24c84b54887b24081ae5689b24782b14b86b14d89b3558cb34783b14886b44b88b64e8ab750 *86b54e88b3508ab44e87b14a86b3508ab44b87b34e88b64e87b45087b34987b44e88b34c88b353 *8ab3588cb54e86b34e89b55089b55089b65689b5538fb4558eb4528bb75189b34f89b4528db954 *8eb84f8bb54c88b75c93b65990b6588db6568db5528db64d88b54f88b64d8db85891b54f8cb14d *8db3588db6588ab6598ab35089b5578fb7508dba5c92b7588fb75b8eb7548cb65d8eb55a8cb558 *8eb8518db7508eba5590b95491b8598eb66091b75c92b75891b95891ba4c89b64f8bb85491b757 *8fb65991b6528fb54d88b64e89b6578db65891ba578db65b8eb85a92b8508db6588db66092bb5c *95bb528eb95f93b8588eb76197b95c91b85a93bb598fb85d93bb6195bc6495bb5b90ba6499bd5a *95ba5c8db75c8eb75c91b96095bb598fb75d92ba588fb75f95ba6096b96395b95c8fb85f91ba59 *90ba5f94bc5c94ba5b95ba5c94b85c95b86097ba5f97bb5e96bb6597bb5d96bb5792bc6698bc5f *98ba6198ba6799bb5f98bb5e92b86798bd6297bb6599bd5d95ba5d93bb6696bc6095bb6598bc66 *98bb5f95bc6597bc6098bb6196bb6296bb6597bc6c97bc6094b85c94ba5e97bb5b97bc6099bb66 *99bb6196bb6799ba5a94b95f96bc6097bb6898bd6498bc6a9cc0669abd6395ba6a98bc6499bd68 *9abc6099bd609abd5d97bc6698bc739bbb6799ba6599ba6b99bb689abd669abf659bbc609abd6d *98bc6c9cbc6598ba6496bb6598bb6196bc659abf6296bd6498bc699bbd6999bb6a9abc6b9abd65 *98bb6697bd6c9abe6898bd5c96bc689bbd5d97bc6f9cbe6999bc6499bc6398bd649abc5c96bb62 *97bc6299bb6197bd6496bd679bbd6498bd6199bd699fbe6499bd6199bb6a97bd6195bb6499bc65 *99bb659bbb6098bd669abc5d97bc6397bb699abd6096bb6498bb6898bc5f99bd659abc639bbe65 *99bc6d9bbd6a9bbd6798bc6f97bc6898bc6498bc6898bd689abd6496bc6297bb6d9abc6697ba6d *9abd6498bb5d97bb5b96bb6597bd669abd719bbb6497bb6b98bb6a99bc6499ba6d9abd6a9abc5d *97bc689abe6d9bbd6c9bbd6398bc6499bc659abd6699bd6897bd699abb6a9ebf659abd6999bb66 *9cbe6a9abe6d9cbc699abb6f9ebe6399bd699abd6c9bbf699bbe6499be689cbd6599bd6b9bbd70 *9dbf679bbd6299bd5f98bd6998be699abd6b9dc0639abd659cbc689bbe6a9dbf6fa0be709ebf60 *98bb659abd5c96bd6799bf729cc071a1bd6799bd6299bd6c9ebf6b9bbd6e99bd6699bd689cbe64 *98bd659ac16c9bbf6c9cbf6aa0c1729dbf5e96bc6799bd6599bd6199bd659cbd679ebf669abc6e *9dbc6a9bbd6698bd6699be689ac0669dbf679dc06a9cc06a9cbe739fbf669ebd6b9ec2709dc166 *9fc26b9dc0689abf659cc16a9cbe6ba0c06b9fbe729fc26d9cc16d9cc16c9fbe6e9ec06fa2bf64 *9ebd669cbd6b99bd74a0bf709fbe6c9bbf6c9bbf689bc268a0bf679bbc6b9cc06d9abd6f9bbe71 *a0c277a2c282a6c49ab1c7a3b5caa7b8caa9b7caaab9cbabbacbafbbcdaebdceb1c0d0b1becfb3 *c0ceb3c2ceb5c1cdb9c1d1bac3d2bbc4d3bbc7d3bbc6d4bcc6d3bbc6d2bcc4d1b9c4d3bdc6d2ba *c6d2bdc6d3bcc7d5bec7d5bec7d5bfc7d3bec7d2bdc5d2bdc7d1bdc4cebdc6d3bdc5d4bdc6d4bb *c6d3bdc6d3bdc4d1bbc3d1bcc5cfbdc6d3bcc6d4bdc6d6bbc6d4bbc6d2bbc4d3bec6d3bfc7d5c1 *c7d4c0c8d5c2c9d7c1c9d5c4cad6c5cbd7c4cad5c3c9d6c1c8d6c0c8d6c0c9d6c1c9d7c1c9d8c3 *cad7c4cad6c3c9d7c4c9d6c3c9d7c1c9d7c3c9d8bfc9d6bfc7d6bfc8d6bec7d4c1c9d5bfc8d6bb *c6d3bdc6d3bbc4d3bcc4d3b8c4d3bac4cfbac4d1bac2d1b5bdd0aebacdaebacdacbacea8bacea3 *b7cea4b6cba2b6cba1b6c9a2b5cc9eb2cca1b3ca97b1cb95afca88a9c68eabc78aa9c390aac58c *a9c48ba9c38cabc695adc897b0ca9aafc9a5b3ccaeb8cbaebbcdaabdceb1c1d0b3c2d1b4c2d1b4 *c2d3bbc2d2b4c0ceb3beceb1bdccabbdcda8b7ccadbbcca7bbcea4b7cca1b1cba8b7cba5b6cca7 *b8caa0b5cb9db2ca9fb3cba3b7cd9db2cca0b2ca9eb0c9a5b5caaab6c2bfc7cdc8d1d6ccd5ddce *d7ded0d9dd5c8cb0588fb05e8fb6558ab1648fb55b8eb15b8db36791b75d8db65d91b66a99b66d *92b66c94b75e93b75d8eb55f91b66592b65892b7648db55e8fb66b91b66892b67594b66e9bbc7c *a0bc7b9ebb7b9fbd809ebb7e9ebb859fbc819ebe7a9cb87c98b87598ba5f90b66995b8618cb461 *8eb2618cb35387b14c83b14983b04c86b44b84b15484b25389b4528ab2518ab4508ab1558bb24a *87af4b87b14482af4683b24e85b34c84b14782b15387b14f87b14f89b25287b15084b35086b14f *86b1548ab45188b2588ab34886b24986b14d88b14f86b24d85b04f88b44b89b44d86b34f86b150 *8ab24e89b35189b1528cb45188b25289b54985b24a85b04b88b24f88b34c87b24986b14d85b14c *87b24c88b34e87b64c89b14e8cb3518ab34f88b34e8cb44787b54b84b24684b54886b24a88b148 *8ab1538ab4508db35288b24e86b34b85b3558ab6508bb6528ab44e86b34e8ab14d89b1508bb34c *87b44d87b55188b4528db54e88b2568eb54e89b4548eb5528db7558bb64e8ab64d8bb54d89b34f *8cb5528eb55b8fb5548fb8558db8588bb6528ab85e90b6518db6578eb6538cb5508db5578cb658 *8eb6538eb85892bb5a91b65890b55c91b7578eb85c91b85890b76195b95791ba5891ba508bb559 *90b75d91b9598fb5558cb66192ba5590b8518fb8588db65d8fb65b92b85791b6538db55690b95a *94ba5491b75b92b85691b86096b85993b85c90b9598eb6578db45390b75c93ba5991bb5c92ba5f *94bb5892b85c91b85f96b95893b75e95bb5c92bb6692bb6696ba6191b85890b86095b85992b960 *92bb6292bc5f94bc5c8fb86394b95f97ba6397ba5c96b95a94b95991ba5c93bb5c93b96396bb62 *97bb6498ba5f96ba5e94ba5b94bb5a94bb5a94bb6496bb699abb6a9bbb689cbc6298bc6192ba67 *97bb6495bb5f98bb6099be6099bd6299ba6a9bbc5d95bb6897bb6295bb619abc6598b96098bb62 *97bd6297bb6397bb5f96bc5f93b86395bb6097bc6397bc6195bc6697bb6097ba6598bc6195b960 *97bb649abc5e97bc6399ba6297bb649aba699bbb6299bb6b9bbc6798bc6c9dbf659bbd659bbd6d *9dbd6398bb6a9cbd6499bd699bbd689dbe6c9cbe6c9cbe669cbd6a9cbd6599bb6497ba6a9ebd68 *99bd6797bd6599bc699cbd6d9abd6f9abb6d9bbb6d9cbd5f99bc6098bd669abd6198bd619abd67 *9abd669abb729bbd689abc689cbd679bbd6899be6498be699abf6c9dbd689dbd649cbc669bbe5f *99bd679abd6098bd669cbf6c9bbf6a9cbc6b9bbd699bbd689abd669abd6497bd6599be6497bb5f *97bb699ebd6199bd6199bb6596bb6998bd5994b85a95bb6499bd689abd6699bb6b9cbb6699bb64 *9abd6899be719bbd6598bb689bbd6799bb679dbd6b9cbd6a9abd689cbd699dbd6699bc6197bb65 *99bd6a98bd669bbe6d9cbd6a9cbd6398bb6e9ebe6698bb6298bc649abc6d9bbd6498bb6396b966 *97bb6098bc699bbd6a9bbe649abe649abe6c9abf6e9dbe6f9ebc6799bb6c9ebd649bbc70a0bf67 *9abd6e9cc05f99bd689fbe6aa1bd5f98ba6b9bbc709fc06b9cc16999bd6697bd699cbe699ebf69 *9bbb6399be679bbe679bbd6a9abd6e9cbe699abe679cc16f9bbb6699bb689abe699dbe6b9fbe69 *9ebd71a0c06799bd6d9ec1659abd6d9cbe6a9abd6e9abe739ebe679bbf659cc1679cc26c9bc16b *9dbe729cbe699cbe6699bd659cbe699cc16d9ec1659dc1659ac06199bc6a9bbd6699bd5e99bd67 *9abd6d9dc06d9cbe6798bd6c9abd6a9bbd6a9abd6d9cbe679fc1729fc16b9fc1659dc16d9dc16c *9cbd6fa0c0659ebf6ba1bf6a9dc1659ac167a0c375a1c1729ec16ca1c0709fbf6ea1be699dbe67 *9cc06ea1c1729dc36c9fc276a0c1759cbd6e9bbd74a1c3739fc172a0c1739ec072a0c073a1c06d *9dc0739ebf78a3c384a7c595b1c8a3b6cba6b8cda7b8cdaabaccaebccbaebccdb1bdcdb0becdb1 *bfd0b1bfcfb6c0d0b5c2d0bbc5d4bbc5d2bdc7d3bdc7d3bdc7d4bcc7d3bdc6d1bbc7d4bcc7d6bd *c7d4bdc7d3bdc8d3bcc8d3bdc7d2bdc7d4bdc7d3bdc7d3bdc7d5bec7d2bfc7d3bfc7d4bdc6d3bd *c6d3bdc7d5bbc6d5bdc6d5bdc7d5bdc6d1c0c7d3bdc7d3bdc7d4bec7d5bec7d4bfc8d6c0c7d6c1 *c9d8c2c9d6c4cad6c3cad7c4cad6c3cad7c2cad9c4cad9c4cad7c2cad6c2cad6c1c9d5c2cad4c3 *cbd5c3cad8c3c9d8c2c9d8c5cbd8c6ccd8c6cdd8c6cbd8bec9d8bec6d6bdc7d6bec6d5bfc7d6bf *c9d6bdc7d4bfc7d6c0c9d2bdc6d5bcc6d3bdc6d2bac3d4bdc7d6bcc5d5b7c2d0b5becdafbccda7 *bacda5b6cca4b6cba7b5cba7b9cba6b9cca2b7cca1b7cc9eb2cb90adc88aaac589aac68caac686 *a9c48fabc69aaec698b0c795aeca9ab1c99daec7a6b9ccaabbceabbaceb0bfcfb2beceb9c1d1b6 *c1d2b5c4d3b6c2d1b5c1d1b3c3d2b0bfd1b1bfccb3c0cfb2becea9b9cea8b7cca9b7cca5b9cca4 *b6cca5b5cdaabacda4bacca2b6cc9cb2cb9cb1c89cb0cba0b3caa5b7cba8b7c4c0c9cdcad4d8cc *d7ddced8ddcfd9df5a8fb15e91b15389af568ab0588bb0548db1598eb16092b66692b76994b56d *93b56992b66e93b65f92b65d91b76593b55c8db46491b36794b76f95b66c93b67098b7769db878 *a0ba7ea2be7fa0be839cba859eba859ebb81a2bb859fba81a0bc7a9fba6e99b66f97b66996b66d *94b55c8eb4578eb4518db54987b04f88b14c87b25387b25185b44b85b14f8ab44685b14a88b149 *85b14686b14585b14c85b04984b14585b04a85b14b87b14b85af4a89b34a88b04582b34988b44b *85b04c84b25188b35086b14b86b24888b44c88b44983b14c86b04882ae4281b14987b24f89b24b *84b14c87b24e87b44983b04784b24a83b04684b04c84af4a84b14387b04f8bb34e8ab44c86b248 *84b24682b04386b14887b24a86b14c8ab34887b44f89b14e86b34c89b54782b04b88b14584b04e *89b34e8ab34d8eb94f8cb54d85b34f88b45089b54d8ab24485b14d8db24888b44988b44e87b14f *8ab14d89b14e87b24e88b4528cb54e8cb54d8ab5528bb65389b45389b34d8bb74f8bb34f8db64f *8eb64e8cb84a8bbb528ab4528bb35d93ba4e8ab64b8db44c8cb6518eb94e8db6518cb7538ab653 *89b5508bb5438bb34d8cb85795bb4f8db6598fb55b91b9588db55492b64f8eb6518cb4518eb656 *91b8518db85a95b95390b85390b8558fb8518fb84a8eb6558eb75a91b66395bb5692b9508db55b *91b84f8db74f8db7528fb65791b8568fb75790b85793b85c95ba5f93b65891b7518eb65d91b95c *92b95391bb5a95ba5e95b95992ba5992b85b91ba5f95ba6095b75893b9518fb66294b85d93b959 *92ba5696b95c95b95693ba5a94b95993b85791b75f97bd5e96ba5d92b85e95ba5b94b85391b65d *95ba5494bb5c92bc6796bb6097bb6097bb5694b96399bb6096bb5f97bc609abd5f99bb5894ba66 *97bb6296bb6397ba5c97ba5c98bd5e98bb6299bc6297bc6196ba5d97b96096bb5b95bb6295ba5f *96bb5d96ba5f97ba5993bb629abc6097ba5a97b95e98bc5c98bb6098bb6298bb5d96bb699abc68 *99bb679abb6599ba5e99bb5f98bb5f9abb669abb609abd6599bd6b9cbd6a9ab9659abb6399bc66 *99bc6098bb6499bc669abc679cbc5f99bc5d97ba679bbd689bbd669cbc669dbd669dbe6097bd6c *9ebe5f98bb649abc6e9ebd6499bb6498bc6399bd6d9dbd669abe6399bc6199bc689abd6298bb65 *9ebd609bbd5b9abd5d99bd6c9ec0699fbd699bbc5e97bd6299bc6298bc5e98bd6199bc6099bc69 *9ebd629abd6598bd6298bb6399bb5a96bd6096bb6698bc6697be639cbc709dbf6297bd5e96bb5d *96ba6297bc5d96bb5f99bc6299bd679abb619abb6699bd5f98bd5d98bd6099bc6294bb5f97bb69 *9bbc5f9bbb649bbe6899bd6098bc5f96ba6699bc6299bc6199bd619bbd639cbd6198bb679abd64 *98be6599bc6095bb6796ba6a9dbc659bbc639abd659abd6199bd5d94bb669bbb659bbd6698bb67 *9ebd689cbd6a9fbe689abd699abe5f98bc6797bb6298bb649bbb649abd669dbd6a9dbf679bbe66 *9abd6599bd659abd699ebd659bbd659bbd669bbc669bbd6a9abd679bbf649ebe6a9cbe649dbd67 *9cbd699bbd659ec06098bd659abd6899bb659abd639bbe649bbf6a9cbd699ebd6fa1bf619cbe62 *9bbd699fbf679cbd689abc679cbd679ebf5d9bbd659dbe699dc16699bb689abc6099bd6099be6a *9bbe6a9cbe6ca0c1689fc2699cbd689abe659abf5e97ba6198bb6a9dc15c9abc649bbe699dbe66 *98bc6a9bbd649bbd689bbf689bbd679bbd669bbd699fc0709dc26799be6a9bc1679bbd649abd68 *9abe679dc0669fc16f9dc0689dbd689cbb649bbd629bbd679fbf68a1c0669dc1709fc26f9dc273 *a1bf6c9ebe6c9dbe6c9dbe73a1bf6ba3c36a9fc26c9fbf699fc2709fc1729fbe699abd6599be6e *a2c16aa0c2659dc273a2c282a6c392acc69db4c9a5b9cba7b9cba9bcccadbdcdafbdceb0bdd0b0 *bccdaebcccaec1cfafbfd1b3c3d2b6c3d4b9c3d2bbc6d4bdc7d6bec8d5bdc7d3bbc7d4bbc6d3ba *c7d1bac7d4bdc7d3bdc7d3bcc7d3bec7d5bdc8d3bbc7d5bbc7d3bcc8d3bdc7d5c1c8d4bdc9d8bd *c7d4bfc8d3bbc6d4bdc7d4bcc6d3bbc5d3bcc5d3bdc6d5bdc8d6bdc7d5bfc7d4bdc8d3bfc8d4bd *c8d3c1cad5c1cad7c3cad8c5cbd8c4cbd5c5ccd8c4ccd8c4ccd6c4cbd7c2cbd7c1cad6c1cad8c3 *cbd8c2c9d4c3c9d6c2cbd6c3cbd7c3cbd8c1cad8c3cbd9c1cad7bdc9d7bfc9d5bcc8d3bdc7d4bf *c8d2bdc9d5c1c9d5bfc8d6bfc9d6bfc8d5bdc8d3bdc8d5bbc7d5bac8d7bbc6d7b8c3d4b6c1d2b2 *c0d1b0bfcfaebecfaabbcdabb9ccabbbcea9bbcea9bbcea6bacca3b6cb9fb6cb99b1c78faec88e *acc78aaac691adc993b0ca9db3cb97afc99eb6cca4b6cea4b6cca8bacbadbbcdafbdd1b3c3d1b6 *c3d4b8c4d3b6c5d2b6c4d3b5c3d3b1c0cfafbfcfaebdceb2c1ceb2c1d1aebfcfacbdcfa8bacca8 *b9cba9b6cbaab8cca9b9cc9eb5cca1b5cc9fb4ca9bb1c89cb1caa3b1caa4b5cbaabac3bfcacec8 *d3d9cdd8ddcfdbddcfd9dd608dae5f8cac5d8eaf558db0528ab05887b15d8db46a98b96993b96f *97b56f95b67095b9709aba618eb47297b67296b76f93b77399b97899b57b99b87898b67098ba7d *9fb9819fba82a0bb86a2be86a3bd88a1ba869cb985a1b9849cbb819fbc7c99bb7a9abb7295b869 *93b66b93b66491b45a8db44e86b04d85b04884b14f89b64a87b4508ab3507faf5084ae5089af45 *85b14c85b14e83b14884ae4984b15288b44b85b15785af4d81ad4481af4984b1518ab54380b253 *87b24f87b15487b3477dae4f85b14b86b24f86b34b86b54a83b15287b35285b05286b14f82b048 *83b04886b24684b14a84b34e87b24982b14b81ae4c80af4382ae4a82af4e88b44884b34c86b14f *86b34780b04d82b05083b14681b04784b1568cb64985b14c86b14f85b04d85b25084af538ab44e *89b54382b24b86b55389b24782b34885b14e85b04a83b04882ae4784b04c87b14683b14c85b24a *85b44d88b25288b35387b24f84b25088b44f8bb5528ab25089b5538bb74f88b35689b44c85b34b *87b14f88b34d85b3558ab34a86b04b87b1558cb5528db54f8cb5528ab5548db3508ab35189b35b *8eb8578bb55788b5558db45489b35b8eb65b8cb7528db6558fb7548cb65a8db6528cb6558ab64e *89b6548cb6558db6538bb6538ab6528cb8588db7588eb5548bb65d91b75b8db75289b64e8ab650 *8ab45e92b9528eb5578db44f8db65e90b7578fba568cb55e91b9578db85391b65b93b65c92bb58 *90b8568cb65a8eb6508ab66392b95a8fb95890b96196bb5f93ba6b97bb5c93b85b8eb85c90b869 *94ba5a92ba5d95b86296bb5d90bb6293ba5e8cb65f91b85f93ba5d92b95b90b95791b76195ba61 *95ba5b91b75b91b76393b75c93b95c94b96298b96798bb5b96b96293ba5f91ba5f95bb6298bb60 *96bb5f96bd6196be6493bd5d95ba5e97bc5c92b96598bb5f96ba5893bb5c92b85e95bc5b93ba6a *93ba6992b96094ba6899bb6097bb6095bc6195b96197bb5c92b95f95b96596bb6898b96797bc66 *97bc6697bb6898bb6396bc6297bb6597bb6295b96297bb6295ba6a95bb6797bb6a9bbd6999bb67 *96bc6a99bb739bbb6f98bc6398bb6a9bbb699fbd709cbd6c9cbe6899bc5f95bb6397bc6498bc65 *97bb699abd6a9abe6897bd6797bd6793ba6d98ba6695bb6894ba5d93b8689bbd6297bb6396bb65 *97ba6396bb6496bb6596ba6396bc5f97bb699abf6097bc6599bd6a9dbd6699bd6998bc6a9abb60 *96bb659abd5c94bb6898bc6b98bc6897bb6593bb6696ba6696bb6699bd5e99bb659bbc5e96bc63 *92bc5d93bb6b9abd6c98b96396bb5d94ba5f98bb6398bd5d94bc6796bb6195ba6597bb6895bb5d *95bb6397bd679abb6b98be6598bc6398bb6998ba6797ba6398bb6898bc6296bb6496ba6598bc67 *99bd6497bd6597bb6996bb6796bb6597bb6d9abc6699bd6498bf6899bd6997bc6d9cbd6a97bb62 *96bb669bbd6a9abb6998bc6697bc6a99bd6698bc6898bb6a98bb659cbc649cbd6d9dbd6298bd66 *9bbe6898bc6799bb6299bc5d95bb6496bc6c9bbd6098bb6397bd6498be6a98ba6996bb6b9abc67 *9abb689cbb6699bb6399bc659abe6a9dc0739dbd6d98bb6698bd6899bd6399bd649ebf689ec06d *9fc2669dc06a99bd6a9abb6496bb6a9abb6496bb6998be6498bb6796bd6698bd6c99bd6b98bc62 *97bc6493bb6797bb6a99bd699cc16699bf609abd639bc06699bb6a9abd6599be6396bb6597bc66 *99bd699bbc6c9cbd649abc6396bd6196bd6c9bbe6a9bbd6399bd669abd6c9cc16e9fbe6b99ba6b *9bbc6f9cc16b99c06a9abe6399be679dbf6a9fc1739fbe699abf689bbf6d9cbe73a0bd739dbe6c *9cbe6a9dbe6e9cbe6fa0c16a9dc0709cbf6a9bbe6e99bd6d9dc16d9fbf6d9fbf74a0c16a9bc06c *9cbf649bbf699ec16b9dc0729fbf7ea4c38da9c598b1c7a3b5caa9b9cbadbaccaebdcdb1bfcead *bbcdacbccea9bbceacbbceb1bbccb3becdb6c2d2b9c3d2bbc4d3bdc6d3bdc7d3bac7d1bcc6d3bd *c6d4bbc5d2bdc5d1bdc6d3bcc6d3bdc6d3bec7d5bdc7d4bdc7d3bec5d3bdc6d3bcc6d3bdc5d4bf *c6d3c1c7d4bfc8d3bdc7d5bec6d4bec7d3bec6d3bcc6d2bdc6d3bdc6d4bdc6d4bec6d3c0c7d4c0 *c7d5bfc8d5c1c8d5c5c9d5c5cad6c6cbd7c7ced6c3cbd6c6ccd9c4cbd8c3cad8c2c7d4c2c9d5c3 *c9d6c1c9d6c2c9d7c3cbd6c3cad7c3cad7c3cbd7c3c9d6c3c9d4c1c8d7bec9d6bfc7d3bfc9d6c1 *c8d5c1c7d3c1c6d5c1c7d5bfc7d4bec7d6bec8d6bec6d5c1c8d6bdc6d4bdc7d6bdc6d5bdc3d2b8 *c1d1b6c3d1b5c0d1b2bfd1b2bdd0b4bcceb2bdceafbcceaebdceaebacdaab7cda5b6cc9eb3ca9d *b2ca99aec796adc69aaec79cb1c999aec897aeca9db4cba3b4caa9b9cbb1bdcdb1bdcdb4c0ceb5 *c1d0b6c1d2bac1d1bbc5d3bac3d0bac6d3b3bfcfb6bdceb6bdceb4c0cfb5c1cfb2bfd1acbecfb0 *bdcea7b8cca9b8cbaab7cbaab9ccaab6caaab7cba7b8cca5b4cba8b5cca8b7cbacb8cbacb4bac3 *c9cdcad1d7cdd7dccfd9dccfd9de5e8fb45a90b3508bb15992b15d8eae668db16e91b26995b264 *93b45e92b66f99b87398b7769bb77d99b5769bb7789db97599b67b9bbb7ba1bb7ca2bc7c9eb87f *9fb9829fba87a2bb80a0bb86a2bb89a3be85a1bb88a0bc88a4bc89a2ba87a1ba7b9fb7789cba79 *9bba6f96b76f99b86494b7568cb25687af5188af4f86b24a85b14885b34783b04e86b34d87b34d *89b04884ae4881ae5086b24c86b24585b14f85b14887b3538bb25088b04e88b25387b14786ae4c *87b45084b05387b2518cb54985af5289b2528ab35189b34986b05089b1508ab24785b14980b04d *83b04a81ae5687b04f8ab34a85af4c85b14983b04784b05088b24882b04e84b05084af5a87b14e *87b34b89b24889b34985b24783b14e85b15285ae5288b04580af4986b14a87b24786b24a87b245 *85b04a87b15086b14487b64788b24887b24584b04f86b24f87b2528ab44b87b14d86b14f88b14d *87b1518ab14886b24a86b14c85b15088b3518ab44e86b4508ab2508bb34887b34f8ab4558bb34c *89b14f8ab0568db6518cb6558ab55f8cb64b88b54e89b3518eb5538eb6588db5508ab44d87b350 *89b44d89b35b90b9518eb6558fb85290b75291b6508cb3528db55689b4518db44f8db5548eb758 *8eb85d90b6588cb5528fb7528ab64988b25990b84f8eb65592b7528db55390b65992b35d92b550 *8cb3558db55c90b7558db6508cb65392b65392b65890b35d8eb45892b95792b65d95b95d92ba60 *92b85c93ba5a91b86395b95c92b95b93b65b92ba588fb7598db86297b95d95bb5f95b95995b760 *97ba5c94b85b93b96397bb6798bd6497bb6698bc6397bb5e94b86196ba6096b85d94b96494b860 *96bb5c93ba6195b95f96ba5e95b65f95bb5f94bb6798ba5f97bb5f98bc6196bb5d96bb6099bd59 *94bb6598bb6496ba6194b76297ba5d99b96198bb649abc5c93b75f94ba6194b85e95b86497ba5e *94bb6097bb6399bd5f95b86198bb6397bb6598bb5f96b86497bc6096bd6699bc6398bd619abb66 *98bb6498ba6298ba6197ba6096b9679bbd6198bc629bbd629cba6097b96296b9679abc6899bc65 *97bb679abd6a9cbe6a9ebd649aba6398ba659bbb6b9dbb749ebd6b9dbf699abe699cbd6b9ebb69 *9cbb6d9bbc6a99bb5992ba6497bc6c99bd699abc6499bc6099ba6e99bb6999bb6398ba6097ba67 *9abd6a99bb649cbc6498ba639aba6599bb689abc6397bb5e96b9659abb679bbe6799be659cbd68 *9ebb6398b96298ba5e98bc689bbd6698bb639bbc65a0c1639ebf6698bb6899bb6699bb6597b964 *99bc6499bb6198bd6a99bc6199bc619bbc6c98bd5c92bb6594ba6095bc5c93ba5d99bd6199bb65 *9bbc6a9bbb6197b86398ba679cbd699bbb629bbd659abd669abd6499b96797ba689bbd6299bb64 *97ba6498bb6398bc6798bd6297bc6499ba6399ba639abc669cbd659bbc669bbd679abd649cbe6a *9bbb6098b96095b8639abb6397bb6498bb629cbe649cc0679bbd6497ba6399bb689cbc679bbd64 *9abe6699bc6999be679abd679ebd639bbe619abd689cbc709bbb6398bb6699bc6098bd6199bc5f *98bd699dbd719ebe6e9bbb6599bc6a9cbc6a99bd669abd689dbf679cc06e9ebe689bbc699bbd6a *9cbc649bbc669cbd699ebf699ebe699dc16498bb6399bb6596bb679dbb709dbc669bbe5f9abd6c *9cbf699abf6595bb699abc6b9abd699abd6199bd6099bd679ac06b9bbe6a9abb6e9cbd6d9dbd69 *99bb6ea0be619bbe699bbc699dbc699cbd6c9ebe689dbd659abc6098bb609bbd699dbe629abe6e *9ebe6a9cbe6b9cbe6d9dbd699cbc709dbe72a1bf6fa2c06d9cbe68a0bf6ea0bf719ebf6aa0be69 *9ebe6ea0c06a9cbd70a3bf719fbf6da0be679ebd689fbf6fa0bf759dc16ca0c073a0c373a0c176 *a2c1699dbd70a0bd6c9ebf729fbe699cc07aa3c18caac597aec79bb2c9a8b8ccadbcceaebfcdb0 *c1ceaabbcca8bbcca6b9cca4b6cca6b8ccaebfceb5c3d0b9c4d1bcc6d1bbc6d3bdc7d3bdc7d4bc *c6d1bbc7d3bcc7d5bdc6d4bfc6d3bdc8d3bbc6d3bbc7d3bbc7d4bcc7d5bec7d1bec7d3bec7d2bf *c9d6bfc7d4bfc8d3c1c8d4bec9d5bcc7d3bdc6d3c0c8d4bec8d3c0c9d5bfc8d4bfc8d4bfc8d5c0 *c9d5c1c9d6c1cad7c3ccd7c4cdd7c4ccd8c4cbd7c7ced8c7ced7c6ccd9c5cbd6c6ccd7c3cbd5c1 *ccd5c3cbd7c1c9d6c2c9d5c3cad6c5cbd7c7ccd8c3cddac3cbd8c3cbd7c1cad7c0c7d3c1c7d6c1 *cad6c1c9d6c1cbd5c1c9d5bfc8d6c1cad4bec8d3bfc7d1c0c8d4c1c8d7bdc8d6bdc9d7bcc6d6bd *c6d4bcc5d1bac4d1bac3d1bac1d1b6c3d2b8c2d1b6c3d1b6c1d1b3c1ceafbeceadbccdaabbcda3 *b8cba0b7cca2b6cba0b2cb9fb5cba1b7cb9bb3cb99aec79ab1caa4b9cbb1bdceb0bdcfb4c1d2b4 *c1d2b8c4d0b8c2d1b7c3d1b6c2d0bac3d1b9c3d1bbc2d3b9c1ceb5c1d0b7c5d1b7c2d0b6c3ceb2 *c1d0b1bcceafbdceafbcccaebcccb0bdcbb1bccab1bcccacbccdadbdcdabbcceacbbccb0bccdb0 *bbc4c4cecfcbd4d7cfd7ded0d8ded1d9de668cb1578bb15d8cb1618cb4608db65e90b66590b46f *97b56992b46292b87096b87398b8769abb809dbb7f99b6789dbb7a9eb6819eba85a3bb85a3bc81 *a0bd80a0bc80a1bf8ba4bf89a5bd8aa4bc87a2be8aa3bd839fbb849ebc86a0bc829fc080a0bd84 *9fbb799cba7496b86e95b6678eb65e8cb55787b34e84af4d84af4684ae4d87b04683b05184b246 *81b14d86b14e88b45587b14a85b04c86af4982b15184b24a84b04d85b25386b14982b14d82ae4c *86b04481af4f84b34d81b05386b44e89b24a84b05288b4518ab25288b35189b24983b24f83b24a *83b14e84b05085b14d86b24f87b25085b14985b34785b4447faf4782af4c83b14b82b14780af48 *82b25086b15287b14b83b34685b54684b24a86b24886b14c8ab34686b25289b44780ae4d84b148 *82b34985b24784b44e86b2528ab54d86b24e86b14c85b1538ab64986b15187b34886b14684b247 *83b2538ab55189b44687b14e88b44885b34b86b5518ab2508ab3538bb5578db54b85b25289b54f *89b64d87b64c87b24e8ab64d88b65286b55289b3508ab34e8ab64e89b45189b65086b45186b452 *8cb74f8db75890b74f89b4538eb64f8bb55189b54f89b6578db4518db6588fb75b91b54a87b553 *8cb64e8cb5518ab84c88b5518db65491b9568cb7518cb7558cb7508bb5578bb6538cb5518db658 *8fb85a8db7538fb4588fb84e8bb6518ab4518cb6578cb65c92b75791bb5a93bb5f95ba5d92ba62 *8db75991b85f94ba578db95990ba5892bb568fb75790b85892b75d93ba5c92bb5794ba5f93b960 *93bb6196bb6095b96197bc6193ba5c95ba5f92ba6193bc5b92ba5a93ba6495bb6697b96090b75a *91b85a90b95f91b85d92b95c90ba6295bb6197bb5f96bb5692b95e94b96194b95d92bb6292bb69 *97bd669abe6498bb6493b95d92ba5c91bb6694bb6395ba6697bb6195bc6093bd6297bb649aba5e *94b95a93ba5e93bb699abd5d93bb6297bb6696bc6297bb6297ba6397bd5c92b96196bb6494bb5f *95bb6799bf6396bc6699ba6699bc6498bb5e97bb6196ba6298bc669abc6192bb6195bb6698bc67 *99bb5e96bb6a98bc6b9bbd699dbd6d9dbf6c9bbd669bbc6d9abc6096b96096bb6d9dbe679cbc63 *97bd6294bc6899bd6498ba6798bb6799bc629abc6399bb5f94b95f97bf6697bb6098bb6299bb61 *95bb609abc6a9abc6498bb6197bb6197bc5f98bd5f97bc5e95bb659bbd6197bc6498be6899bd62 *98bd6698bd6498ba649abd5e99bd6499bd6796be6699bc689abd6499bd6397bc6499bd6a9abb66 *99bc6399bd5c95bc6198bd5c93bb5895b86296bb6399bd6498bc6493ba5f93bb6698bb6096bd68 *98bd6496ba6799ba6999bb6799bc6398bd6598bd6399bd6898bc6298bb6499bb6196ba5e96bb5e *98bc6296bc6296ba6896bc6295b95b95bb6193bb6394bb6199bc6399bc669abd6197bc6798bd62 *97bd6398bc6b9bbc5f97bd6297bc6698bd5f96b9639bbb6397bc689bbd679abf6197bc6b99be65 *98be659cbd609bbd639dbd5f97bf6299bd6397bd699abe6b97bd6598bd679abc669ebd6599bd64 *97be6096bc6699bd6f9dc16b9bc16d9ebf72a2be729bbd6596bc649abe6097bc6b9abf699bbd66 *99bb639bbc669dbd6399bc5b94bb6096bc6498bc699abd689bbf6c9abf6298bb6a9abc6699be6a *9abf6298bd699bc1669abd649abe6399bc6899bc6c9abb6499bd6c9abe6599bd679abd609bc164 *98bd6e9ac06199bc699abd6899bd6799bd6299be669bbf6d9ec3669bc16d9cbc689bbd6698bb67 *99bc699bbc6098bd6d9dc16b9cc06b9ec36c9dbe6d9dbe6b9bbd6c9dbe6198be669abd699ac072 *9dc1669cc067a0bd6a9dc06b9ebe679bbd659dc0699cbf699cbf6f9cc175a1c26a9bbd6e9ebd6c *9ebe659cc06c9cc16b9bbd749ec1779ec278a1bf7ea6c395adc799b1c999b2ca9eb3c9abbccfb0 *c0d2b2bed1abbacca6b9ca9eb2c997afc89cb1c9a6b8ccb1becfb5c1d1b9c5d2bbc5d3bbc7d5bd *c7d5bdc6d3bdc6d3bbc6d3bbc4d4bdc6d3bec7d5bec8d4bfc7d2bdc4d4bdc6d5bdc6d5bdc5d3bd *c7d4c0c8d8bdc8d7c0c7d3c0c7d3bfc7d3bfc9d3bdc7d3bdc7d5bfc7d6c0c7d6c0c9d5bfc9d4c0 *c8d3c0c9d5c1c7d4c1c9d6c3cad7c3cbd6c3cbd8c6ccd7c7cbd6c4cad7c5cbdbc3cbdac3c9d8c3 *c9d7c1cad8c2cbd8c2cbd7c1cad6c3cbd8c2c9d5c2cad8c1c9d8c3cad8c3cbd9c4cadac1c9d6c2 *c9d6c0c9d5c0c7d8c0c9d7c2c6d5c3c8d6bfc7d8c0c7d3c1c9d7bfc7d6bfc7d4bdc7d6bcc7d7bb *c5d4bec6d5bdc5d3bcc6d3bac7d3bdc5d3b9c3d3bbc4d1bac2d1bbc3d1b6c2d2b3c1d2afbfd0ab *b9ceabb8cfabbacea9bccea7b9cda3b4cca3b5cea2b4cba2b7cca4b6ccaabaceb0bdd0b2bdceb1 *bcceb2c1d1b3c3d2b8c3d3bac4d1b7c2d3b7c1d1bac3d2bac3d3b7c3d1bac4d3b8c4d3b6c5d3b6 *c3d2b6c2d0b3c0d1b3bfcfb2c0d2b5c1d1b5c1d2b1c0d0b5bfd1b2beccb2bcceb1becdb5bed0b3 *bfd0b4bcc1c4cbd0cbd4dacdd7ddcfd9ded1dade538db25c8baf578db1678eb3688db37295b668 *94b66d97ba6690b67395bb7195b67097b66e97b9779bb6789bb8819dbb82a0bb84a1bd88a0bf8a *a2bb89a2bb8aa3bd89a2bc89a3bd89a2bb89a4bc88a4c2879dbd869fbc8ba0bb88a2bc879ebb7e *9eba83a0be819dba7299bc6892b6578bb3568ab15485b04680ab477faf4885b24984b24482b444 *82b14681b04981af4685b14986b25183b14983b15385b34a84b34e85b14c87b24e89af4c85b151 *84b14886b04d85b04784b34b85b04c82ae5187b34884b24985b34c85b44e84b24d85b44c82b24a *83b04482b24880b04980b04a83b04b82b14c82b14982b1487eb14c83b04c87b04887b24783b149 *83b14a81af4b84b24785b1508ab64885ae4487b24681b14385b1407fb04a85b24b88b34982b150 *80b04c83b05387b14382b04b84b04481b0498ab64b88b34b85b44b84b34d89b24582b2528db449 *88b44685b34587b54f8ab5508ab7538bb55088b34c83b14684b34d85b24e87b34b85b34e86b54d *85b4558ab14f85b24e89b1528ab44a86b5538ab5558ab64687b74f8cb65c90b54a86b24b89b44c *8ab6538cb64a88b64c86b5538cba528ab6508ab4558cb65189b14886b25086b54c86b45288b852 *8fb84f8cb7578eb74e86b34f8ab45087b54e8db6558ab2548bb6568db55a90b5548db64e8cb550 *8ab44e86b5518ab7548fb85f93bb4f90b85a91b75d8fb6578eb84f89b5578db7538fb7518eb85c *91ba5f93bb5c91b6578fb6518db7528cb46095b65593ba5f96b75b94bb5896ba6292b85b8eb95c *91b75c92b85c90bb6197bc6496bc6596be5f97bb6996ba5c91ba5990b95891b86496bb6698bb65 *93b85c90b75e93ba6793ba5c93ba5793b85991ba5c92bb5d94bb5c91ba5f95bb6497bb6090b95c *92bb6696bb5f93bb5e93ba5891bb598fba6595ba6495bb5892ba5e94b8578fbb5c96be6094bc5d *96b96595ba5d94b96797bb6997bc6497bb6595ba6293ba5d96bb6394ba6897bb6997bb6196bc5f *95b86699bd6596bc5b91b96597ba6897ba6798ba6599bb6798ba6195bb6294ba6594b66396bb69 *97bc6697bb6a9bbd6598ba6f99bd6e9abc6a9bbd709bbd6d9dbe6a9dbd699bbd6b9dbe6c98bf69 *9bbd6a99bb6298bc6499bd6698bc669abd6597bd6598bb6499bb5f94bb6296bb6598bb6698bc5c *97bb6399ba6397bb669abc6b99bc6897bc659abc6098bd6097bc6598bc6596bb6799bd649abd6a *9cbf6596bc6297bb6399bc6599bd619abd6c99bd6696bc6298bd5d94ba5f93bb5f96bb5f95bb64 *95bb6597bd6197bc6397bc5f99bd5e93bb6596b86298bb5f92ba5f94ba5a93ba6499bc6497bc61 *97bd5f97b86095b85f97bb5892ba6a96ba6799ba6096bb6799bc6198bc5e95ba6497ba5d95bb5d *94b85e96bc6096bb6396bb6194bc6399bd5c95ba6297ba6b9bbc6798bc6596ba6098bd6399bd66 *99bf6a99be6899bb679abb6c9abb5e97bb6098bb6998bd6395bc6498bd5e97bd6196bb6498bd6a *9dbe6397bd5d96bc6497bd6e9fc26298bb6498bb6496ba649abc609abd6297bb6398bd6199be64 *99bc6c99bd6e9cbc649cbd6499bc6c9bbd6097bc7ba4c3739fc06898bd679bbe6b9abc6397bc63 *9bbc6a99bd6396bc5f96bc6a9abd6b9abe699dbe6a99bd639abd6099bd6a9abd6298be6498be64 *99bd6597be6298bd6b9bbd6498bc6998be6d99bd6c97bd6499c06197bc6a9abb6d99bd6a9bbd5f *99bc6098bd679bc0609bbd5c97bd6099be6299bc629abc6199bb6b9cbe679abd659cbe649abf67 *99c06799c26498be719cbc6798bc6897bd669bbd669ebf6a9cc0649cbe689cbf689dbf759dbd74 *9ec26a9abe6d9fc0659bbc6da1c36b9dbf6f9dbf75a1bf6799bd6a9bbe679bbd6a99bd6d9bbe6e *9cc3729ec36b9bbe6a9abe709bbf6f9ec176a1c1719fc26f9ec18babc7a1b3cb9eb4c99fb3c8ac *bbcdb2c1d0b0c0d0adbbcda7b6caa1b5c9a0b3c99eb4c9a7b6cbafbccdb4c0d1b6c3d1b7c2d3bb *c5d4bdc6d5bdc7d5bdc8d3bcc6d4bcc5d5bdc6d3bec6d5bbc7d4bfc7d1bdc8d3bdc7d3bfc8d3bf *c7d4bdc6d3bfc7d4bec8d6bec7d3bdc8d3bdc7d3bfc8d5c0c9d6bfc7d5c0c7d4c1c7d6bfc8d4bf *c9d6c1c8d6c0c9d6c1c9d5c3c9d6c2c9d7c1c9d7c2cad8c2cbd7c3ccd8c6ced8c6ccd9c4cbd6c3 *c8d8c2c8d7c0c9d5c1cad7c2cbd8c1c9d7c2c9d8c3c9d5c4cbd8c4c8d6c2c9d6c1cad7c1c9d8c0 *c7d7c2c9d6c2cbd8c3c9d7c3cbd7c3c9d8c0c9d7c0c9d7c0c7d6c1c8d6c1c8d5c1c7d6bfc8d7c0 *c6d4bec4d3b9c4d4bbc4d3bcc3d4bdc6d3bdc7d3bdc6d4bdc7d5bdc7d5bcc7d3bac1d2b2c0d1b2 *bdd0aebccdb0bdceb1bfd1acbfcfa1b7cda2b5ceaab9ceaab9cba7bacdabbbcdadbbd0b4c1d2b2 *bfd0b1bdd1b4c1d1b7c2d3b8c3d3b6c3d2bac5d2bbc3d4b9c6d5b5c2d3b7c3d3b5c1d1bac4d2b6 *c2d1b4c0d0b3c2d1b4c2d3b1c1d0b2bed2b7c3d1bbc2d2b7c1d1b6c1d1b8c2d1b6c1d1b7c2d2b5 *c0d1b7c0d0b6babec4cccfcad4d8ced8ddd0dadfd0d9e0548bb05f8eae6591b16590b1668fb464 *93b36992b15d91b56991b1729ab87099b6729bb77f9cb8789bbb7298b97e9fbb7ca1be7ea4bd8a *a4bc7fa2bb8aa3bc86a4bc87a4bd80a2be8aa5c087a4bd8aa1ba87a3bc88a1ba8aa4be89a3be86 *a2be85a3be86a0bc799cba749bb86a93b66292b54c88b04b87b34983af4685b14483ad4a82ae50 *87b14685b24782ae5487b04d84b04885b14b81b04b86b14f89b14783ae4b85b14b87b34b86b14c *84b14d86b14686af4585b04785b14381b04883b14f83b34d86b34d8bb44a88b14786b04786af46 *82b04a82b04885b34d86b15085b14781af4a88b14d89b14886b24382b14985b44782b24f86b34c *86b13e81af4180af4184b14d8ab24784b14d81b14c84b15385b24b85b14c88b04c88b24284b049 *85b05085b14c85b44d8ab44985b54887b54c89b24c89b24585b14184af4386af4a86b14d89b34e *89b34184b14e89b34d89b55289b44a85b14a85b04a86b25187b65089b44886b14886b04b88b246 *87b24f88b3548ab34d86b24f87b34f8ab24a88b34586b24f8ab64d8cb54a8cb3538eb54d8cb653 *8fb84e88b14f8db65490b4528db54986b3578fb54f91b8548bb7568eb5518cb4568cb54a89b64c *90b54e90b6498ab44f8eb8518eb85290b7588fb65893b74e8db75390b9538eb7538eb95c94ba59 *92b75c8fb6518db65890b6568eb45891b9588eb64e8cb5588fb64f8db74e8eb6588eb5528cb65b *91b75990b85c93ba5c94b94e91b75094b94e90b65b92b8588fb95890b96392ba5f95b95a92b959 *95b65d96ba6296ba6093b95e97ba6697bc6599bb679bbb6799bb649abc689cbd6399bc6395b962 *96bb6397ba5f94ba6095bb5e96b96398bc6197bc5d95bb6896bb5d95b95e95b85f96bb5a96ba63 *9bbb6098bc5593ba5f93b95b95ba5e94bb5893b86596bb6097bc5e93ba6195b95d96bb5b93bc5c *94ba5d96ba6093ba5791bb5e96bc5f96bd5996bd5f95b95e97ba6396ba5a92b75a95ba699dbd63 *99bb679cbe699bbd6b9bbc689bbc6498bb6597ba6598bb5f99bd6198bc5e98bb6898bb6897bb6a *98ba6596ba6498bb6597ba719dbc6d9dbc72a3bd789dbe719cbd679dbc689ebd6a9bbc659abd6d *9dbd6a9cbc659bbd699cbc6899bc5d99be6299bd729abc6196bb6b9cbd5d99bb5d96bb6196bb67 *9bbd6499bb6798ba6398bb6198ba5f98ba6799bb689abd6198bc6699bd6598bc5c95bb6499bc5c *99bd5f9abc5f98bd6497bd6c99bd689abd6197bd619abc5e97bc669abc669abe669bbc6498bd63 *96bb6198b95c96b9679bbc6398bd5c98bc5f96ba6599bd5f95bb679bbb6297bb6097bd5f97bd5d *98ba5796bb6397bb6196bb6196bb6199bb6999bc6497bc6499bb6999bc6097bc5e98bb6198bb62 *97b96398bb6199be659abd6198ba6396ba649abb6499bb6195b86398bb6097bb6299bd5895bc63 *99ba6c9bbf699bbd6c9cbc689bbd5e99bd5f98bb5896bb5e97bb6498bb649bbb6298bb6098bc64 *9bbc5f96ba649bbd6498bc689bbd699ebd6299bc6299bc6696bb709bbf5e98bc6698bc699abc68 *9abb6699bb6b9abd669cbe659bc0629bbd639bbb619abc5e9abd669dbf6599bc6999bc6c9ebe6b *9bbf629abd629bbb639cbe6099ba6b9ebd669bbe699abe6499be6b9ac1629abe639abd5e9bbd61 *9bbd699bbc6296bb679cbf6598bb6597bd659bbd6ca1c168a0bd689bc06899bf6c9bc15e99bc6c *9fc1659dc06497bb6199bc6199bc659bbd6799bc6e9cbe6198bd659abd669abc6199bb659abc66 *99bd639abd669bbe679cbd6a9ebf759dbf659ebf689dbe649dbf6a9fbd649abd6b9fbe659bbf69 *9bbf75a2c275a0c16da0be6d9fbf6b9cbe6c9ebe6c9cbf6b9cbe6d9dbe699cc0659cbe6b9dbe6c *9dbe6d9ec0609cbd6f9fbf6ca0c176a0c0699cbd6b9ebe709cbd77a2be86a9c393aec799b1cb9c *b4cbaebecfb5c4d2b0c3d1aebfcea9bacca1b4c99db3ca9bb3c9a2b6cbacbcceafc0cdb2c1ceb7 *c3d1b7c5d2bbc5d2bbc7d5bcc7d4bdc8d4bdc9d6bfc9d5bcc5d3bbc7d3bdc7d3bfc7d5bdc7d6be *c9d3bec7d3bec7d2bfc7d3bdc6d2bdc9d6bdc8d4bdc8d5bec9d6bfc8d2bec9d6bec7d5bfc9d5bd *c9d5bec9d5c0c8d6c1c9d5c1cad6c1cbd7c3cbd7c1cad6c3cad6c5ccd8c6cbd6c6ccd6c6cddac4 *ccd8c1ccd8c1c9d5c2c9d5c2cad8c3cad5c2cbd8c0c8d6c1cad8c1cbd8c3cdd8c3cbd8c1c9d7c2 *c9d7c1c9d7c3c9d6c3cbd7c2cddac3ccd9c2cbd8c2cbd6c1cad7c1c9d6c0c8d4bdc6d4bfc7d6bd *c8d8bfc9d6bcc8d5bbc6d5bdc6d2bcc5d3bdc6d3bdc8d5bdc7d6bec8d5bec9d6bec7d3bdc6d3bb *c5d3b7c5d2b7c2d2b3c0d1b6c1d3b1bfd1a8bbcfa8bbccabbbcdadbed0b0bed0b1c0d0b5c2d3b4 *c4d3b3bed2b2beceb3c3d1b3c3d1b9c7d3bac3d4b6c6d1b9c3d1b7c7d0b9c6d2b7c6d3bbc5d3b8 *c4d2b2c1d1b1c1d1b3bfd1b2c0d0b4c2d1b6c1d0b6c5d1bac5d1bac2d3b6c2d3b7c2d1b8c2d1bc *c6d3b8c3d1bbc6d3b9c1c2c6ced2cdd5dbced8decfdaded0dbdf5f8cb15f91b65c8cae588eb266 *92b35e91b1648cb56b8db36990b66a95b8709bb6789bb8739aba7c9dba799fb982a1bc8ba2bd85 *a0bb8ba4bd8ba3be849fbb85a3bc8aa4be8ca4bf8da2bc8ca4bb89a4bd89a3bd85a0bd8ba3bf86 *a5be83a3be85a4bd7f9eba7d9dbb7195b96c91b75e8eb4508ab34d87b25189b25183b05083af4d *87b14984b3427dad4a83b04d86b14d86b2518ab14c87b14784b14f86b04680ae4a87af4884b143 *83b14983b05285b04c87b14b84ae5287b24d86b14e84b04c86b14986b24385b14b87b34c83b04b *83af4d83ae4a84b04582af4683b14c85b2477fb1477fb14981af4882af4984b14a86b24e85b249 *85b14883b14783b2467eae4c80b14f83b04781ae4681ae5285b54883b14885b44986b14c84af47 *84b04882b04d85b04d8ab34785b04a85b44d87b65087b24e85b15188b24a82b04b85b35089b44a *88b35c88b44887b34b86b34484b04e88b24d86b24c86b24685b14a84b24885b44c86b34d82b14c *86b14884b04d85b24b87b3518eb6518ab6528eb6508ab34f87b1588db6588bb5558ab6538bb447 *84b2528ab64c86b44f8fb74f88b2538ab75187b2538fb6518bb35089b5528db25190b8568db84f *8ab6548bb75a8cb7598cb4548fb7528cb64d8cb84b89b7548db65990b8528db6588eb95790b75b *91b7538ab5508cb65a8db9558cb6588db6518cb6578eb65591b75090b7598eb6528bb6528db95c *92b64e89b5568db75c90b75891b7518db65391b85291b95793bb5391b85a91b7528eb65c92b959 *90b7568eb9578eb95c92b85f93b96899bb6c96b96a98bb6497bc699abd6d9cbc6999bd6399bd61 *95b86b9abc6b9bbc6f98bd6796bb6297bc6a97bc6697bd699bbc6898b95b92ba6092b85d93ba59 *92ba6096bb5f96bc6299bd5892bb5e92b65e91b75d91ba6697bd6196b95d94b96095bb5e97bb5f *96bb5892b95f90b75990b95e93b96595ba5f97bb5c94ba6595bc6096b96498bb6994ba6596bb6c *94ba6c96bb6698bb6296bb6c99bd6b9cbe6899bc6598bb6699ba6197ba6196bb5f95b96398ba5f *96ba6498bb6697bc6497bc6b99bd6d9abd6ca0bf699fbd6ba1be6ca1c077a2c06d9cc0719cbd6c *9cbd6a9bc0689abd6699bb639bc0699dbd6699bb6498bd6d9cbe6999bf6999bc5f99bc659abc60 *97bb6c98bb709cbc6699bc6399be6598bc6096bb6099bd5e96bb6097bb6097ba6698bb6b98bd65 *99bd6299be6a9ebd6399be689abc6298bb6299bb6396bc6198be659bbe6699bd679cbd6098bb58 *96bb649bc15f98bc6196b96896bc5993bb6699bd5f96bb6197bb5d94b96096bd6592ba6194ba65 *93bb6293ba5f96bb6097ba6499bb6597b95f97bb5d96bb5d92bb5d95ba6598bc6598bb669abd6a *98bd5f96bd659abd6097bc659abe6496b96298bb6096ba5e96bb6197bc6099bd5e97bb6598bd61 *98bc6497ba6097bb5f96bd5f99bc6498bb689abc639abb5a94ba5e96bb6196bd6398bd6299bd61 *9abd5d98bc679dbd649dbd659abd699bbd5f96bf6e99bd689abc6a9bbd649abe69a0bf669abc65 *96ba6a99bc6596ba6598bb6498bc6497bc699fbf699dbf669abd6199bd6e99bd6296bb6699bd66 *9abd6d9ec0679bbe689bbe5c96bc5c96bc6497bb6a98be639abd5f98bb5e98bc6097bd6798be60 *98bb6497bd6399b96197bb649abe689cbe649bc06298c15d99bd6597bb6c99bb609abd6098bd64 *99bc5f99bc689ac16694bb6598bc649abc659cbd6a9abc609abd6797bc669abf699bc16699bf68 *99bc679abc6999bc6898bc659abf659bc1649abf659abf699fbf74a1c0729fbe659abb639abd64 *9ac0679bbd6999c06d9ac16198bd669cbc6a9ec15f9cbd6b9abe6b9cbe6a9dbf659abd649ac266 *9abe6c9ec16c9dc16a9bbe709dbf6b99bc6f9fc16d9dc073a0c16e9bc16c9cbf7ca2bf82a7c68b *acc89eb2c9a6b9cca8bcceabc1d1abbdcea1b6ca9cb3c99db2ca9db1c79fb4cba8b9ceacbdd1b3 *c2d0b7c3d1b9c3d2bbc5d1bcc5d3bcc7d4bcc7d4c0c9d6bdc7d8bdc6d3bec9d3bcc7d3c1c7d6bd *c7d5bbc7d3c1c8d5bdc7d5bdc8d6bdc9d3bdc7d5c0c8d3bfc8d4bec7d3bec7d3bcc6d5bcc7d6bf *c8d5c1c9d6c1c9d5c2c9d5c0c8d5c1c9d7c1c9d7c0c9d7c3cbd8c4cbd8c3ccd7c3cbd6c6cbd5c4 *cbd8c3cbd8c3cad8c2c9d7c3cbd6c4cbd6c3c9d6c1cad7c2cad8c3c9d7c2cad5c1c9d9c1cbd6c1 *cbdac1cbd7c1c8d6c3c9d8c2cbd7c4cad7c3cad8c2ccd9c3cbd8c2cbd6c1cbd7c1c7d3c1c7d6c1 *c6d4bdc7d6bdc8d4bec7d5bdc7d3bdc8d5bfc7d4c0c6d3c0c7d5c0c8d5c0c8d6bec9d5bec8d6bc *c8d6bcc7d6bac6d4bdc4d2b8c2d1b8c3d2b3c2d1b0bdceb2bfcfb6c1d0b5c2d1b9c3d3bac1d0bc *c3d3b8c4d2b5c1d0b6c3d1b4c4d3b6c3d3b6c6d3b7c3d1b6c3d1b7c4d3b7c2d2b5c1d1b6c3d3b2 *c1d3b3c2d2b4c1d0b2bcccb0bbcfb6c1d1b7c3d1b9c2d2bac4d1bbc7d2bcc6d4bdc7d3bec7d2bf *c7d3bdc8d5bdc5d3bcc5d2bcc1c5c6ced2ccd6daced8ddd2dbdfd2d9e06591b1658eb16b8eb15d *8aae5b8eb06a91b56893b46891b56f98b66a94b57593b3809bb5789ab8769bbb7399b67c9ebc7a *a1bc86a4ba88a3bb90a4ba8da2bb8aa3bc8da3b989a4bd87a4bd8ba4bd89a4bd8da4bb8fa4bd8c *a3bc88a3be83a1bc7ca2bd799ebc709ab67098b56793b46394b45288b14d85ad4e83af5186ad4a *87b0508ab14b89b14f89b24f84ab5085ae4985b14c85b14b86af4585b04a86af4984af4884af4e *87b04485b14b82b05486b14e84ae4782af4883ae4f86b15387b24d84ae4681af3f80ae4884b147 *85b04986af4b86b14a86b14c83b04d86b04c87b14781ae4482b04b86af4a85b14382b05087b151 *85b04881b04881ae457fae4787b0528ab14d86af538ab24781b04584ae4a89b1437faf4885af44 *85af4e87b14181af4a85b44c84b04a84b04a88b1538bb14785b14781af4885b14783b05186b14d *86af558ab15089b24d8bb24586b14c88b34c86b34c8ab35185b0518ab04985af4c88b14c8ab149 *84af4886b34887b34082af4b8ab44a87b14f89b3518eb35289b24e8ab54886b1518bb64987b14d *8cb1508eb34c8bb4508cb34d89b3558cb75990b84d89b5508cb6528db34d89af598fb6548eb352 *8bb45188b6598db8518cb5508cb24f8ab25b90b8508cb25189b2558db54d8cb55790b94b8bb455 *8fb65591b6598fb4538cb1568db3518db6528db6588db75a93b65792b55a8fb65890b66091b55f *91b75a8db85692b7558fba4f8fb6528fb25393b6588fb55d92b95792b76395ba5c92ba5f94b85d *95b85894b65a92b65d94b95f95b96496ba6497bb6398bc6999bb6298b86a99ba6f9dbc6d9cbd6f *9dbd6d9abd6b9bbc6c9cbc6a9bbb6b9abb6a99b96e9abb7199bb6b99bb6695b96398ba5e97bb67 *97bb6597ba6898bb5f94ba5c95ba5f96bb6193b86096bb699bbd5e97ba6197b95993b75d90b65c *94b76095ba5e94ba5d95b86197bb6097b75c92b65f96b96397b95c96b75994b9609abd699dbd68 *9dbc699abb6999bb6f9cbb6e99b9719bbc70a0bf6b9cbc699ab9629aba6399b96897b86596b96a *98b86599b96098ba679abb669abc699bbb719bbb709bbb7a9ebc729dbd75a3c070a1be759dbd69 *9dc06b9cbb6496bb739ebd6b9abb6498bb649abb619abc669bbd649cbf6a9bbb6697b96097b962 *96ba699abc5f99ba659abb5b98ba649bbb6398b96596ba6899ba6999bb6499bb6297bc5f97bb64 *98ba6299bb659abb6598bb6498bb639abc5f97bb6197b9659bbb5c99ba629bbc659bbd6799bd6a *98bb5d95ba6097bc6099bb5e99bb619bbb639abc6396bb5d92ba6896ba6097ba5a94b96197b965 *97b95d97ba5f96b85f97bb5b94b86296bb6096b86096b95f9bbb679bbb6198ba679aba6195ba69 *99bb6699bc5794ba5d96ba5d97ba639abb5f98bb6195ba6495b86297b95f96ba5c94b96096ba63 *99bc6099bc619bbd6899bc6396b8699bba699abb5e98b95d99bb6099bb5e96bb6295b76597bb70 *9bb95e96bb6099bb649cbd6a9ebd649bbc649bbc689cbc6999bd6096bb6298bb5c98bb5f97bb65 *98bc5d96b96499bb6397b9689abc699bbd5f99bd649abd5f98bb699abc5f99bb679ebf639abc67 *99bb6897bb6e9ebd679abc609abc639abd6499bd6a9cbe699abd6096bb6296b95d96bb6798bb64 *9bbd689bbd669bbe659cbd6596bb6698bb699abb6498bc6499bd629cbd639abd6299bd6699bd64 *9abd639abb6b99ba6d9dbb679abb659bbc659dbd639bbe6598bc6597b8699abb689bbb699fbd64 *9ebe689bbc659abf6399bd6c9dbd6d9abb679bba659bbc6e9fbd699cbc649bbc679dbf699cbf6a *9cbb699dbd69a0bd6c9fbd6c9fc06b9dbe699cbf639cbf6799bd679dbd6699bb649cbc6699bb67 *9cbb679dbd689cbe6d9dc06ea2be6c9dbd6798ba6c9dbd6da1bf6a9dbf699bbd619bbc6a9fbf77 *a5c48eacc396b0c899b2c89bb3c9a2b6cba3b7cc9ab3ca92aec796b0c69fb3c8a3b6c9a9b8ccae *bccdb2c1ceb9c4d2b6c4d2b6c6d3bcc7d3bdc7d2bcc7d2bec9d3c1c7d3bec7d4c0cad4bec7d5bd *c8d6bdc9d3bec8d1bdc7d1bfc9d3c1c8d3bdc7d3bdc7d3bcc8d5bdc9d3bdc7d3bfc8d3c0c7d1bf *c8d3c0c8d5c1c9d6bec8d7bec7d4c0cad5c1cbd5c4cad3c2cad5c2c9d4c1cbd6c3cbd6c4cbd6c3 *cbd6c4cad7c2ccd6c2c9d5c1cad5c2cad5c4cbd6c2cbd7c1cbd9c0ccd8c1cbd4c3cad1c3cad6c6 *ccd8c3cbd6c2cbd8c3cad6c5ccd8c7ccd7c3ccd6c4ced8c3ccd5c5cbd5c1cbd6c3c9d6c1cad5c0 *c9d6c0c9d4c0cbd6c1c8d2c1c8d5bec8d6bfc8d5bfc9d6c0c9d6c0c9d5bec9d2c1c9d3c0c8d5be *c8d3bfc7d4bfc9d4bec9d3bbc8d5b9c6d4b8c5d1bbc4d2b7c5d2bcc5d2bac4d3b9c7d3b7c7d5bc *c9d4bec7d6bec7d2bec7d2bcc6d2bbc5d1b4c3ceb4c2d0b4c3cfb4c3d1b4c2d2b7c6d1b7c2d0b2 *c1cfb1bfcfaabdccaabbcdacbcceaebcceb1c1d0b9c4d1bbc3d0bfc7d2bfc7d2bdc9d3bfc9d6be *c8d3c0c9d3c0c9d3c2cad3c3c9d6c0c4c7c4ced2ccd5dbcedaddcfdcded1dcde6995b6658db56d *96b16d96b16591b16191b66892b66591b46b94b56892b86f95b67697b8789db97d9eb9819cb986 *a2bb8ba2bd8da4bb8aa4bd8ca4bc8aa4bb8ca3be8aa4be8ca4bd8da5be8ea3bb91a5bf86a1bf87 *a1bd8ba2bd839fbb809ebb779ebb7a9dbb7d9eba749dbb6d95b86a8cb35089b14f86b05085b04d *84af5087b04285b14a86b44c87b65189b24781ac5287ad4d81af4f88b24f85ae5082b04f87b452 *89b2558ab14a87b14c83ad5d8cb1508ab04887b04a84b05083b14f84b14983af4c86b14e88b149 *85b04a85b14f85b14f87b54c83b24783af4c88b14480af4981ae4b82b04e87b14a86b14e88b24a *86b34e86b04683af4785ae4583ae4580af4283b14a86b25288b44d87b24389b14a8bb14882b148 *83ae4481b04d85b13f7db14784b24784b04c84ad4881ae4e8ab35287b14d83b14d85b14583b248 *85b24b87b34c88b05188b15488b15288b2538ab24f8ab44986b24987b45188b35089b2508bb252 *86b15287b34783ae4d88b34f89b34b89b54c89b44d8bb2528bb2508ab3588eb64e8bb4558cb450 *88b34686b44d8cb14f87b1578db6518cb34c89b5538db74f88b54d88b44f86b34b86b1578db251 *8cb4528cb5528eb8538fb7548ab5518cb7578db44f8db85890b55a8eb6558ab8508db95089b74f *8cb6558db6548eb85b91b75590b65b8eb74e8db7538db75991b9528fb65d93b65e92b65a91b655 *91b75f91b9508db65a90b76193b8508bb6588db55e95b96093b86095b95891b9588db85b92b75b *93b85891b95c95b96094bb6198ba6596bb6998b96697bb6a97bc729cbb729cbe6a9dbd7da3bf75 *a1c06f9dbd709cbd719dbd759ebd6e9bbb6f9ebd77a0be6e9ebe6d9bba6f9abc6a96bb6998bb62 *97b95e95bb5c92ba5b93b86495b96497bd5f92ba6597bb5c96bb6797bd5792b95891b95f92bb60 *97b95e96b85d92b75e97bb5795b95f94bc6097bb6294b95f96ba5e96b95f94b76392b66595ba69 *99bb6d9bbd699dbf78a1be7ea3bf76a2bc779fbe7da0c0729dbe6e9abb6b99bb6c9cbe6f9bbc64 *9bbb699bbb6697b86a9aba6a9cbd6d9cbc739fbe76a1be77a0bf77a1bd76a3bf769dbf76a1be76 *a2bd76a0bd6b9cbd749dbd6ca0c06d9fbd759cbc729cbb6d9cbb6499bb699abd6499bc629bbd65 *98bb5d97ba5d96bb679abd659bbb6299bc6499bc6599bc649abb649abc649abb6796ba6897bb63 *97bc6298bb6799bc6898bd6a9ebf689cbc6b9dbc6198ba6899bb6498bb6098bb649abd6297bc61 *95b96997ba699abd619abd5f98bb6d9abd6199bc6396bc5f95ba6699bb6098bb6298b95f92bb5c *93ba6498bb6292bb6295bb6395ba6497bb6299bb5f96b96398bb5d98ba6799bb6699bc6198ba65 *9abc6498ba669abb689cbc6598ba6199bb6098bc6797bd6597bd6498bc6397b96397bb5f97bb5f *97bb6096bb6198bc6498bb6a99bc6499bd6098bb649abb659bbb6696b76299ba6598bd6498bc63 *98bd6397bb689abc689abd7099bc6298bb6598bb639abd679abe699cc06697bc6297bb6199bc6a *9dbd6997bd6498bb5f99bb6498bd6599bc6499ba6398bb6699bd6a99bc6c9cbb689bbd6c9bbd67 *9abe699bbf5e97bb669abb6899ba6799bc699abd6698bd6998bc6498bd5d96bb6397bb6095bb65 *99bb5e96bd6197b95f9abd5f98bb659abd659bbd6a9bbc619abb6a9dbf6395bd6597bd6398bd65 *99bd6199be6698bb629abd6d9dbb6c9ebd6f9dbc6a9bbd689bbd719abd699bbe649cbd649bba66 *9abc6999bd6797bc6899bc6498bd649bc05d98bc6b9abd6b9bbe709dbd709fbc739bbc75a0be62 *9bbe6a9cc16a9cc26ea4c0659abd699cbd6c99bd6498bd689abc699cba669bbd6ca0bd6b9bbd69 *9ebe6f9dbf6e9abd78a2c36d9dc06c9ac1659bbe6d9abe709fbe75a0be6c9cbd719ec1669dbe6c *9dbf679fc182a7c68eacc791adc691aec695adc79eb1c89ab3ca98adc797b0c8a0b3c8a5b6cbab *baccafbecdb5c0cfb8c3d2b6c4d3bac5d1bac6d3bec6d3c0cad4c1cad5c1c9d4c2c9d6bec9d5bf *c8d4bfc7d5bfc7d6bdc8d5c0c9d3bfc7ccbec9d4bfc7d5bec6d3bbc7d4bcc6d4bdc7d3c0c7d3c0 *c9d5bfc9d4c1c7d5c1c8d6bec7d5bfc7d4c1c9d6c1cad5c0cbd6c3cbd6c4cbd6c5cad6c4cbd6c4 *cbd6c2cbd5c3cbd9c4c9d6c3cbd6c2cad6c6ccd6c3cbd6c7ccd7c1cad6c1cad5c1c9d6c2cad6c6 *ccd8c6ccd8c7ccd7c6cad8c4cbdac4ced8c6ccd9c4ccdac6cdd8c7ced9c7ced7c6cdd8c4cbd7c2 *cbd8c3cad6c1c8d6c1cad6c1cbd8c4cad7c3cad7c2c9d6c1c9d5c1c9d5c1c9d6c3c8d6c2c9d7c2 *cbd7c1cbd7c1cad3c0c8d5c0c8d6bdc9d5bfc6d6bdc7d2bdc8d3bcc7d4bcc8d2bdc9d3bfc8d3c0 *c7d3bdc7d6bfc7d3c1c8d7c3c9d8bec9d8bec9d1bbc7d3b8c2d2b4c1cebac1d2b6c1d1afbed0b0 *bfd1aebecdaebfcfa8bdcfa0b1c9a4b7cbacbdceb2bfd0b6c3d3bbc7d4bdc7d6c1c9d3c1c7d3c2 *c8d5c1c9d6c1c9d5c2c9d5c1cad5c3cbd7bfc4c5c6cfd2cdd6daced9ddd1dbddd0d9dc6993b067 *96b76d97b67296b36b92b05e8fb3648fb3558caf608eb05f90b26b96b67298b67d99b7899fbb85 *9fba84a2bc82a2ba8ca7be8ca4bd89a4bb87a4bd8ca3bd8ca4bd8ea4c090a6bc8da4bb89a4bd85 *a4bc87a3bc82a0b97e9dba6e97b77099b8759bb97098b9719ab96c99b65f8db54e88b14d86b14a *8ab15189b1518bb24a87b14f86b14882ad4d82b04d85ae4986ae518ab15186af4f88b14d86b056 *88b35084b14f87b04a84ae457fb04e82ae4d85b15086af4984ae4a86ae4986b14f84b14b82b14a *86b34b84b04a83b04684ae4a83af4a84b04884b14985b14581af4482ae4c86af4d88b14d87b24a *84b14985b14783b14783b04d87b14982ad4681af5389b24584b14882b14385b14884af4d82af47 *81ae5386b14e89b44886af4780af4b84b24b82b24a85b24084b14083b14484b14a87b24888b04d *83b34c86b14f83ae4e85b14d86b04985b04b87b24887b04686b24c86b24f89b25287b1568bb24a *86b1558db54786b24a87b05188b24682b14a82b14f88b34985b04988b14b8ab44685b34b8ab44d *8ab55087b3528ab4538cb34f89b24c89b4528ab34b86b15b8eb65289b54e8ab44b87b34e89b54f *8ab34a84b1568db8518cb6538ab34c85b3548ab3518cb5538eb64c8db34d8ab44f8db64f87b35c *91b75691b64f8db4508eb94f8ab5568fb6578bb55391b65e94b85a8cb6528cb6548db6508ab45b *8eb6548eb75f93bb588eb75790b7528eb2528eb34d8bb3528db34e8cb45092b65792ba5791b758 *94bb5b8db66194b75b92b75a93b75f95bb6697ba6998bd6a99ba709bbe709dbc699bbc6c9cbc77 *a1bc7fa6bd79a4c17ba3be79a1be769fbd719cbc6f9cbc75a0bd719dbc6d9cbd6a9bbd6697bc63 *94bb6290b86394b85b92b75b95b65d95ba5b93b86297bb4f90b96695b95d94ba5b96b75d97b963 *96b95890b85b95bb6196bb6497bb5892b85e94b66095b95a91b55b95ba6097ba5e95bb5d91b96a *97bb6d9bba739dbd74a1be7ea3bd7aa2bd82a4be7ba3c075a3bf7fa3be749cbc709aba6a9cbc61 *94ba6595b9679abc6c99ba719abc6e9cbd699cbb6b9bbc719fc073a0be79a1bd739fbd7fa5c078 *9ebe73a0c07da1bd6b9fbe679cbd679bbd709fbd759fbe6d9fbe699bbb6c9abc689bbc6696bb6c *9dbc6a99ba6499bb689abd6097bb6095ba6298bb6597b86197ba6296ba6299bb6599bb6299bc61 *98bb5e98bb6398bb5c99ba629abb639abc6498bc689bbb6396ba6a99bc6899bc699bbd6498b964 *98bb5f95bb649abc6799bd6698bd6d9abd719abb5e93b95d95bb5a94bb649abb6595b95c93b960 *97bc5892b96097b95f95b95d93b86997bb6499bc5d96ba6294b85f97ba6596bd6199bb6299ba67 *98bb5d94ba6496ba5a97ba6499ba6092bc6597ba5e98b86097bb5e97ba649aba5d96ba6395ba5d *93ba6199bd6699bc6498ba659abb6d98ba6697bb6098bb6597bb689cbd6999bd619bbb6699bb67 *9abc6398bb6097bb629abb679bbd6b9cbd6098bb6899bb5f99bb659abc6996bb5f96bc6397ba60 *9abc619abd6297bd6297bc6699bb6198bb5f98bb679abb659abd5c97bb6599bb6297ba5e98bb66 *98bb6198bb6095bb6c9ebd699abc5e96bc629abd689cbe669bbb6497b86698bd6098bb5f95bb60 *96bc6495bb6094ba659abd5e96bb6b99bd6496bc649abd6498be699cbd659bbd6497ba6499bb63 *97bd659bbd5f97bd6299bf6299bd6a99bb6296b86298bb619bba619abb629abd6899bd6298bd62 *96bb699abd689cbe6599ba6d9ebd6b9cbf6296bc5c96bc649abd679bbc699cbd5e99bc6399bc66 *9cbd6799bd679cbe699cbe679cbe729fbe729bbd69a0bf6c9fc0649bbd659abd679bbe6199bc6d *97bb6f9ebd699dbe6e9fbe6d9cbe6a9ebf729bbd6f9dbe679bbd6c9dbd609abd6f9ebe6a9abd70 *9dbe6b9cbd6e9dbd6c9ec073a1c17ba5c476a6c384a8c588a9c69cb1c7a2b1c79cb0c89bb3c7a8 *b8cbabbbcdafbccdb4c0cfb9c4d2bbc6d3b9c6d0bbc6d1bbc6d4bdc7d3bec9d6bdc8d3c1c9d3c1 *cbd6c1c8d3c0c7d3bdc8d5bdc8d6c0c9d5bdc7d2c1c7d3bdc9d6bfcbd5bdc7d3bac5d3bdc6d3bd *c6d2bdc7d2bbc7d3c0c8d5bfc9d6c1c9d6c2c6d4bec8d3c1c9d5bfc9d5c1cad6c5cbd6c4ccd7c5 *cdd8c6ccd6c2cad4c2c8d7c1cad5c1c9d4c0cad5c2c9d6c3cbd6c3ccd9c2cbd7c3c9d5c0c9d5c1 *c9d6c4cbd7c6cdd8c3cbd8c3ccd9c3cbdac7ccd7c4cdd8c6ccd6c6cdd7c6ccd8c7cbd8c7ccd8c6 *cbd7c6cbd7c3c9d3c3c9d3c1cbd6c2ccd8c3ccd7c3cad7c3cbd7c3cbd9c3cbd7c3c9d5c1c9d5c2 *cad8c0cad7c1cad8c1cbd8c1c9d7c3c8d6c1c8d5bfc8d3c1c8d4c1c9d3c1c9d5bec9d3becad6c1 *c9d4c1cad5c2cbd3c1cbd3c0cbd6c1cbd8c0c9d5c0c9d6bfc7d5bbc5d2bcc5d3b7c4d0b3c1d0af *bdcfafbccfacbccdaabdcea6b7cca7b9cbabbbceaebdcfb0bcceb7c3cfbbc7d2bdc9d3bfc9d4c1 *cad5c1cad6c2cad5c1c9d4c3cad3c3cad3c5cbd6bfc4c4c7d0d4ced7dcd0d9e0d3dbded3ddde71 *99b67196b5799ab1759bb36696b46190b15e8db25b8eb6658eb5638db66d95b57599b5789cbb80 *9fba859fbc8aa4c189a5bf88a1bb809fb888a2bb8ba3bd8ba4bf88a2bd90a6c08ba4bf8ba4be8d *a3c08aa4bc87a0bb829eba729ab6688fb66b93b77093b76d94b8729abb6f98b65b8cb24f84af48 *82b04d85b04d85b14b83b04d85b15387b14a83b14983af4c84af4c85af5184af4e86af4983b050 *88b24f87ae4e81b05184b14883b14d85b14c81af4e85b15187b1538cb55389b05885b05083b142 *7daa4380af4682b05082ae4180b04983ae4d82b14c7cad4783b0447db04682b04082b04b83b145 *82ae4784b04a81b15086b24d84af4882b04780af4881ae4983b14781af4a84af487db14f85b14a *83b34881af4a85b14882b14985b14984af4d84b14783b04880af4786b34a84b34684b34e84af49 *85b04b8ab14e86b15582b14a84b14882b14785b45188b44d8ab34d8eb6508ab3518db44f87b24c *85b2518ab75088b54f88b24785b14f88b24c88b25188b14d86b44885b1528ab44c89b4528bb54f *89b1588db5588db65386b34c88b45287b35188b35086b0528db54f8db5528cb24e86b24f86b347 *86b3508ab0578cb44f8bb24d8cb5538db65990b75a8db85389b84f86b64f89b45991b64d8ab054 *8eb4588eb74d8db6578ab64f8ab75c8db6558bb34b8cb5528fb85b90b9528db8548eb95e91b85a *8eb55b90b65b94b75890b64d8cb65891b95a92b94e8ab65e91ba5b91b64e8cb5538eb65391b853 *8db55a91b75f92b66594ba6594bb6094b86396bb6196ba6898bb6f9fbd79a0be79a0bf7b9dbd7f *9fbd80a2bd789fbe7a9ebc789ebd7fa3be78a2c0719fbf8ba7c17ca1bd789cbe789abd7399bb65 *95b95f96ba5e96ba5d95bb5b91bb578cb65a93b85592b95b94b95890b85995ba6196bb6196bc63 *92b96091b76194b75f93b86294ba6499bb6197bb5f97bc6194bb6295bb6495ba6092b65e95b960 *98bc6198bb6a9cbd7b9fc07ca3c17ea2bf84a2bd82a3bd80a2bf80a4bf7ea5c27ba0bf749ebc6f *9abd6c97bb6c9bbb729bbc6f9bbb6c99bb6b99bd729cbe6fa0bf729ec073a1bd759fbb78a1be6c *a0bd73a4bd72a2c1749cbd6d9dbe6a9abd709fbc729cbd6e9bbd759bbd6a9aba739cbd6c9abd6a *9abd6699bc6396ba6396bb6999bb6397bb5a94b95d95bb6698bb6898bc669aba6699bc6b9abc64 *96bc6598ba6098bb5d98bd6297bd6297bc6598bc6c9abc6b9abb6899bd6397bb6699bc5f97bc60 *96bc6397bc5894bb649bbc679bbb649abc6498b96799bc6c9bbd6597bd6896bb6797ba5d93b866 *9abb6699bb6598bc6195bb6898bb6597bd6698bb6497b65e92b76c9abb6396ba6097bb5f96bc64 *98bc689bbd6497b86596ba6195ba5d95bb6496ba6192ba5d93b96397bd6298bc6998ba6497bb5e *95b95f96bb6297bc6197bc6298bd679abe6595bc6195b8689bbc6198bc649abd6799bd5f98bb62 *97bc6b9cbe659abb6498bb6597b9699bbc6798be679abb6499bd6f9dbd669dbe6397ba6095bb66 *99bd6098bb6296bd6498bb6097bc5f99bd5e96bc669abd6296bb6499bc6799bc6599bc6798bb5f *9abd6c9dbd6298bd6795bc6693ba6296bb5c95ba639abc6299bd609bbf639bbe5d95bb6196bb66 *97bb6095b95b94bb5f97bc5f98bb6397bc5e97bb6898bb6597bb6897bd6997bb6399bd6499bd61 *96ba699abd6b9abe6b99bc6999bc5c97bb659bc05e99bd6399bc679bbc6098bc6b9bbb6699bb6a *9abb6498bc699bbd5d96bb649abc679bbd719dbe6e9ebd6499bd699abf679ac06398bd6399be61 *98bb719dbd609bc0679bbd6698be689abd5a98bd659bbe659bbf6d9cbf6b9cbd6597bb6c9cbe6a *9abf6d9abe6996bd669bbf6799be6f9cbe6fa1c0639bbd769dbe709bc06499bf649abc6a9abe6c *9dbe6b9cbd6e9dbd6e9ebe6d9cbe6a9abd659abd729cbe79a4c27ca6c398b1c8a5b9cba6b5caa6 *b5c9abbaccaebbcdafbdcdb5c0d0b5c2d1b8c4d3bac6d3bac6d2bbc5d5c0c6d3bdc7d2bfc8d3bf *c7d3bec8d6bfc8d3c1cad7c3c8d6c0c7d3bfc8d5c0c9d3c1c8d5c1c9d7bec7d5bdc7d4c0c7d4bd *c5d5bfc6d4bdc5d2bdc6d2bdc7d5bdc6d5bcc6d3bec7d5c0c8d5c3c9d5c3cad5c3cbd6c1cad7c3 *cbd6c4ccd6c6ced7c6ccd7c6cbd9c5c9d7c3c9d6c1c9d5c2c9d5c3cad6c3c9d7c3c9d7c3c9d7c3 *c9d8c1c9d6c3cad9c3c9d7c4cbd8c2cbd8c2ccd8c3ccd8c6cedbc6cddbc7cedac7cdd8c4ccd8c3 *ccd8c6cbd7c5cbd5c3cbd6c4cad8c4cbd9c5cad8c4cbd7c4cad6c3cbd6c2cbd7c2cad8c3cad8c3 *cad8c3cad7c3cbd7c2cbd7c3cad7c1c9d7c1cad7c2cbd8c2cad8c3cad9c3cbd8c2cbd4c0c8d3be *c9d4c1c9d3c3c9d4c2cad8c4cbd9c3cbd9c3cbd6c1cbd6c2cad8c1cbd5c1c9d6bfc9d6bcc7d4bd *c4d6b8c2d2b4c1d0b0bdceaebccbabbbceaebdcfb2bcd0b1bcceb2bdcfb7c0cfbcc3d3bdc7d2c0 *c8d4c1c9d6c3cad7c1c9d6c2cad6c3cad8c4cbd6c5cbd6bcc3c0c7d0d3ced7dcd0daddd3dbe0d2 *dbdf7b9fb77d9cb681a1bb759bb66690b3598caf598cb0608cb36591b65d8eb46a94b67297b57c *9cbb869dbb86a1bb869fbb8fa7bd8ba2bb89a4bd8ba4bc8ba7bf8ea4bd8ba3be8ea4be8da5c08a *a5c087a4bf8ca3bf8ca4be7e9eba799cbc7797b6749bba739dba729cb7729bba6b98b85e8cb453 *87b05185af4884ae4a85b04d86af4d84b24f84ae4b83b1558ab34d87b14f85ad5287b04b88b24d *85b04985b34885b15088b14d86b15087b35285af5486b15085ae5185ae5085b14d89b25085b04e *86b04f86b14a83ae437fae4681af4783af4984af4a85b04983b14d89b34780b04a83b14b83b047 *80af4d83b04c85b04c85b24783b14b85b25085b04f83b05483b04c84af4882af4d85b14785b34c *87b24f87b54f7faf4983b14c81b04b85b04b87b04982b14d83b14f86b24781b04c87ae3c80ad4c *85b14981b04c83ae4c85b54f8ab54c88b54d86b14e85b24f87b34b86b25087b45088b24b87b34e *88b44d8ab5528eb34987b14985b14d84b15089b64d87b34d88b55a8eb8548bb45989b15589b250 *8bb44c8cb6528db65286b34f8ab35287b5508ab55089b04d87b14d8db75289b4538ab64d87b357 *8eb54d8bb5508fb6598cb6558bb55a90b5528ab5528eb84f8ab3558eb85289b6518bb6518ab557 *8cb5518cb5548cb6598fb75290b85b8fb8508cb75086b34e8cb2538fb64d8bb55b8eb75990b759 *91b95c91ba508cb5518eb45d91b65a91b55993b85690b55a91b75491b65d91b96091b8538cb65e *91b85890b75991b75990b65e92b95d95bb6694bb6998bb759dbc7fa4bc78a0be7ca3bf7da4c275 *a0bf7d9ec183a1c17ea2c083a4c082a4c07aa3bf7ba0be789fbf7aa1bf73a0bf719dbf709cbe72 *9bbc679abb6b99bb6296ba5b92bb588fb75f94ba6197bb5c96b96094b85b92b85b91b85c93ba60 *96bc5c95b95e92b86193ba6291b36394b86697bc6197bb5d95b86197b86196b96399bb6f9abb65 *97bb6796bb6f9cbd7ba3bf7ca2c17fa4c281a5c182a5c288a4c08ba4c286a5c083a4bf80a5bf82 *a6c17aa2bf71a0bd779ebd79a0be749fba719bba679abb6f9cbd75a1bf71a0c074a1bf79a4bd69 *9bbe749dbc76a1c079a2c0719dbe6e9cbd6c9cbe77a1be79a3bd75a0bd6f9cbe6e9ebb679bbd6f *9cbe729ebf709ebe6898bb6d9abc689bba6498bb6596bb5f96bb6698bc6397ba6999bb6697bc63 *9abb6798bc6599bb679abd6197bc6498bd6498bc6599bc6297bb669abb6295ba6898bc6597bb6b *97bc6496bb699bbb6599bc6a9bbd6b9bbe6897bc6897bb6395bc6498bb5f95bc5d96bb5f96bb67 *99ba659abd6498bd6493bd6396ba6096b96496bb6a9bbc699bbd6a99bb709dbd6499bb6099bb64 *98bb6599bc6a9cbb6697bb5e95b95f97bb6295ba6094bb6197bb6498bc6498bb6a98bc5d96bb65 *97bc6798bb6698bb679abb6699ba6198bc6297bb6499bc5f98bc6299ba659cbb729abb6097bb67 *98ba6499bb6598bd699bbd669abc6b9cbe679abe6999bd649bbb629abb6499bd6598bc6599bc67 *99bd669bbe659abd6598bb6598bb6693ba6097bb6599bc679abd6199bb659abd689abd669abd65 *99bd6699bc6497bb699bbd6999be6398bd649cbd669abc6199bc6499bd6998bb5d95ba5c95ba61 *9abd6298bd6399bb6096bb6799bb6697bb6b97bd6093bb6898bd669cbd6b9bbc6f9cbd6799bc67 *97bc659abe6696bb659abd679bbe649bbc6a9ec0679cc06c9cbc6d9abd629bbc6c99bc6a99be66 *9abf699abd6299bb6899bd6a9bbd6799bc6d9bbd6d9cbf709bbd6b9dbe699bbe6599bd6c9bbf6d *9cbb699cbd679abc679bbd6d9cc1739fc1679fc16c9bbd6f9abd739bc06e9fbf699bbd6999bc67 *9abe6f9dbf6b9bbf699cbe6c9bbe6296bb649bbf6c9dbe689cbe649bbd679ebf679cbe659ebe6a *9bbd6d9cbf6a9abd6f9abc759ec06a99bd6b9dc06e9dc06e9ebe71a1be7da3c09ab0c8acbccbae *bccdabbaceadbbcdaebcceb0bfceb6c1cfbac3d1bac3d1bbc6d1bdc7d5bcc7d6bec9d5c0c9d5be *c7d4c3c9d5bdc9d6bfc7d3c1c9d6c1cbd6c0cad4c1c9d3bfc7d3c0c7d5bec7d3bdc7d2bdc8d3bc *c7d2bec7d6bdc6d4bdc7d6bec7d3bfc7d2c1c8d4bcc7d3bfc7d4c1cad6c3cad5c2cbd8c5cad7c4 *cad5c6cbd6c5ccd7c7ced8c3ccd8c3c9d8c4c9d8c2c9d8c3cad6c4cad6c7cbd7c4ccd7c3ccd8c1 *cbd7c5c9d6c3cbd9c4ccdac6ccd8c7cbd8c6ccd9c6ccd8c7cddac6cfdac6ccdbc6d0dbc9cfd9ca *ced7c8ced8c9cdd8c6cdd6c6ccd8c3ccd8c4ccdac7cedac8ccdac8ccdac6ced8c4cbd7c5cbd9c4 *cbd8c4cad8c3cad7c3ccd8c4ccd7c3cad8c3c9d7c4c9d8c3cbd8c3cbd6c5cbd7c3cbd9c3cbd9c1 *cadac3cbd5c3c9d4c1c9d5c3cad6c3cbd6c3cdd8c6cdd7c4ccd8c4ccdac2ccd8c2c9d5c1cad6bf *c7d7bdc7d3bbc5d3b9c3d2b6c1d0aec0ceb0beccb3c1d1b2c3d1b1c0cfb8c1d1bcc4d1bdc6d4bc *c7d6c2c9d4c4cbd4c4c9d7c2cbd7c2cad6c3cbd7c5cbd6c7cbd6c3c8c9cad2d5d0d7ddcfdbdfd2 *dbe0d3dce1809fbb799db9729dba7b9bb97596b66591b46592b3538db45b8fb66290b56393b66f *99b87d9fbb87a4bb86a3bc87a2be87a3bd84a4bf87a3bd8aa4be88a4bc8daac191a7c08aa7c090 *a7c188a4c286a0bd83a2be7fa2be7fa1bc7aa1bc7ea3be7ba2bd799dbb729bb9739cba6390b64c *87b4528bb25289b24985b0528ab34e85b44d89b5568bb45086b34b85b14e8ab64384b25389b252 *88b24f88b1568cb44a85b24d89b44e8ab44e87b24f87b15288b0528ab14d82b14e86b14b85b14f *85b24983b14b86b24b87b14685b1427eae4981b2437fb04782b14e85b1437fb04886b24985b054 *8caa4a84b04780af4983b14983b14883b14a85af4c87b14984b04f88b34281b14886b44b84b149 *84b34786b14d86b34886b44587b54e89b34e8ab44e86b0427dae4d7faf4c87b24885b14888b24b *89b34c85b34781b44583b24884b24f87b14785b04a86b24b86b34a8ab74d89b34a86b24c85b248 *86b14e89b4508cb6548bb84a8bb64886b14788b4518cb25289b44a87b1528bb54a89b54b8ab54b *8bb54b89b4528db8538ab44c86b14c8ab24a86b35d8db94f8ab64486b2498db74c8ab5508cb448 *86b14987b44a89b6588fb85792b84e8db9508cb5588eb7558eb8528ab6538ab35190b6518fb754 *8cb8538eb54e8db55290b84f8cb6578eb7508fb75790b84a8bb6508db65590b64f90b65b92ba54 *8fb7578eb65c92b95c90b85690b85191ba5890ba5790b6528db65691b65390b95891b95b93bb59 *94b95191b95991ba6196bc5a92b95b96b95891b86097bb6498bc789dc17ca2c084a1bf88a4c281 *a6c07ea4c0799fbf79a1c07ea6c281a7c37fa4c278a3c07ba2be7ca2c072a1be72a0bd7ba2be72 *9ebc779fc16d9abb6899bb5f95ba5992b75b92b75e96ba5f95bb6095bb5b96bb6197bc6596bb5c *95b95c92b95c95bb6596bc5c96bb5f96bd6396bd6095ba6596b85e9bbd6099bc5895b95e93ba60 *95b9679abc769ec0739fbf7ca6c180a6c17ea4c185a8c684a5c287a8c58baac686a8c386a7c083 *a7c381a7c481a3c27aa1c077a2bf7ba3c17ba1c175a1bf749cbc729bbe6b9dbe6b9bbd739ebf66 *9bbd739dbe6ca1c073a3be78a3c176a1be749ec072a0c079a0c0759fc072a0be72a0c178a3bd79 *a1be709dbd6e9cc1709ebd6e9cbc639cbd649bbe6699bb6099bb5f99b96199bb6798bb649abd62 *98bc659abe659bc1709ebe689cbc699bba649bbc6296bd6799bc699bbf6598bd6498bd6197bb62 *98bc679bbc6098bd6098ba659bbd6398bc6499bd6499bd6898bb699abb6798bc6395b75b95bd5a *94bd6097bb6497bc669abd6498bc679bbd6198bd5a93bb5c93bd6397bb6498bb6097ba5f98bb6a *9dbb5c99bb6098bc6396bb5f96b96699bb6998bc659abd6a9bbd5a96ba6193b96094bc6096bb66 *98bb5f97bb5b95bb639abc619bbd6198bc6099bd6299be6999bd5e98bb659abd6098bb699cbd66 *9abb5b99bb629abd6296bd6497bc6199bd6698bd6398ba6099bd649abd649ebf5f98bd629cbd62 *9dbd6f9ebf679bc0649abd6499be699dbe6399bc639bbd6196bd659abc6498be629bbd649bbe61 *9abc6a9bbe6799be649abd6099bd6298be639abf6899bc6497bd6999bd6f9bbd649abd6397bd5e *98bb6097bd5f99bd6997bb649bbf619bbe639ebe6396bb6296bc6498bd5e97bc6096bd6099bc62 *99c16a9ebe649bbf6a9cbe6d9cbf6699bf5c9cbd65a0c1649abd6c9cc1679cbf649bbd6099bd63 *98bb5e99bd6499bb649abd669ebf6a9bc06699bf659abd669bbe6b9ec0639abd689ec06a9ec169 *9fc16ea0c0679dbe6d9dbe6a9fbe649fbe6f9dbe649cbf6d9ec1629cc16d9fc1699cbf639abd6a *9cbf679cbd6aa0c15f99be669abf699dc36c9dbf6a9fbf689cc06c9ec16a9dc16a9cbe6699be6b *9fc068a1c1659cbe679bbd679cbd699cbd739fc06a9cbf639abe669cbc6b9abe6d9bbd80a6c595 *b1c8acbdd1adbeceaabdd0abbccfaec1d2b0c1d2b1c2d2b7c3d3b9c6d3bbc6d2bcc8d7bfc8d6c1 *c9d4c1c9d7c1c9d6c1c9d7c1c9d5c1cbd7c0c9d6c0cad3c1c9d4bcc7d4bdc9d6bdc7d6bdc7d1bd *c7d2bdc6d4bdc9d6bdc8d5bdc7d5bbc7d6bdc7d6bbc7d3bbc8d4bdc8d5c1c8d5c1c8d5c1cad6c2 *cbd7c1cad9c6ccdac5ced8c6ced8c3cdd8c0c9d9c2cad7c1cbd7c2ccd8c1ccd8c1ccd9c3cad8c6 *ccd7c5cbd7c3cbd7c3cbd7c3cbd9c6cbdbc2cbdbc6ccdbc7cfdac7cddac6cfdbc5cedac6cddbc7 *cedbc4ced9c7cfdac8cedbc9ced9c5ccd8c4ccd8c4cbd9c5cedac5ccdac6cddbc5ccdac5ccd8c6 *ccd9c3ccdac2cad8c5ccdac3ccd9c3ccdac2cbd9c3cbd8c1ccd9c5ccd8c3cbd7c2cbd8c4ccd9c2 *cbd9c2cad8c3cbd9c1cbd7c1cbd8c3ccd8c5cad9c6cddbc5ccd8c4cddbc5cedbc6ccdbc5cddbc3 *cbd7c1cbd8bec8d6bdc7d5bbc7d5b5c6d4b3c2d2b3c1d1bbc6d1b9c7d2b7c3d1bac4d3bbc7d3bb *c7d6bbc6d6bec8d7c1cad7c4cbd8c3ccd8c0c9d5c2cbd8c3cbd6c5ccd7c1c8c7cad3d7cfd9ded1 *dbe0d3dde1d2dce18a9fb9869eb6809db6789ab26c96b1698ead6a95b15c8dae6691b1688eb36c *91b26f95b57599b67d9aba86a1bc87a1bb86a2bb8da3bb8da4bb86a3bc8ea6be81a2bb86a2bb84 *a3bd89a4ba86a2b9819eb67f9db87a9dba809ebb819ebb7b9dbc779cb8789cba739ab76a94b755 *88b25286b05288b05587af5a8cb2588bb2528bb45088b25485b14e85b15489b04f85ae4d85ac4f *85af5386af5b84af5383af5482ad5886b15283ad5185b05280ad5989b14f86b24b80b14d82b150 *85ac4d84ae4e82ac4d83ae5185b14981ae437fad4d84ae4580b04a82ad4d83af4b85ae4580ac46 *83ae4682af4b81af4c80b04980ae5284af4581ad4983ae4882af4681ae4881af4d86b15084ae4d *84ae487faa4481ac5087b24684b14681b1437bae4981ae4e86b14881ad437dae4882ae4b82af4b *85b14f84b04d84ae4881b04d85b34a80af4d84af4c84ae4e84b05185b14f85b15285b14d85b34f *87b04884ae4c86af4e84b15b8bb24e85af5086b04e86b14b83b24d84b04f87b24d85b04c86af4d *86b14e85b05089b15389b45287b24b8aaf4b86b15886b0528db44f87b04d89b1528ab54b87b150 *89b5528bb05a8db15e8bb65987b15086b15589b44f87b5528ab4518cb4578db15f8bb35389b14d *88b1538bb34d86b24f8bb65991b8558eb56092b3578cb4508bb25189b1598cb24f8ab25088b15b *8db55e91b66391b5598eb45a8db4528bb25189b7528cb65f93b55b92b75892b35e91b66193b65a *8fb85d91b75c92b85991b85c91bb5a94b76393b66492b76495b86b95b9709cbb81a4be85a4c086 *a4bf85a6be83a0bb8aa5c281a4c082a4bf87a6c182a4bf81a4bf7ba2be82a4c086a1be81a2bc83 *a1bd7d9dbd759ebb6f9bba6b97ba6997b95e91b75d8fb45e8db5588eb35c92b65c94b75f94ba5d *94ba5d93b75c92b8588eb6578fb65f95b65b96b85d92b65f97b96398b86598bb6296b96893b864 *92b76997b96a9abb759dbd6fa2c07ea3bd83a8c181a4c186a4bf84a4c185a6c187a7c084a9c38b *abc589a9c389a7c38ba6c384a4bf7fa3c081a5c07fa2bf7ca1be769dbc739bbb729cbb6f99bb6c *9abc79a0bd789ebd7ba2bf7aa1bd73a1bc7ca3bf78a3bf7ea1c07aa4bf7ba1be80a4c17aa2c17b *a2bd7aa2be7fa4be799fbd6f9bbd6a98bb6696bb6498bb6699bb6498ba6b9aba649ab96699ba64 *97b86598bb6a98ba6697ba6898ba699aba689bbb6599bb6796bb6799bc6297bc6a9abb669bbb66 *99ba6097ba699abb6595ba6094ba6a97ba6396ba6295bb6697bd6698ba6499bb6397b76498bc6a *97b95c96ba6597bb689abc6595ba6798bb6498bb6598ba6b97ba6799ba5e96ba6394b76698ba62 *93bb6097ba6298bc6798b96295ba6693b75d94b86095b86897bb6398bb6397b96697b86498ba64 *95ba6694b86297bb6494ba6895ba6397ba6596ba6298bd6799bd6699bc5e94b96498ba5d98ba5f *97b96497ba649abd6b9fba6899ba6296bb6497ba6795bb6096b9639bbc6a9cbe6598bb6699bd62 *97bc6a9abc6b9aba6297ba699aba6598bc6798bb699abd6999bf6195bb6797bb6496b96d9abb66 *9dbb5f99bb679abd6398bc6296bc6b98bb6597ba6198ba6098ba6b97bb679abc6398bc6799bd5f *97bd6197bb6598b96298bb6297ba6498bb5f95b86496bd6598bc6d9bbd6598bc6898bb6095b764 *98bc6296bb6397bd5d97bb6097bb6c9bbd6499ba6199bb6298bc6096bb6698bc6c9abb6699bc67 *99bc5f97ba689abb6b9bbc6c9abc6999bc6f9ebe6798bc6798be6698bd679abb6697bb689cbb60 *98bc679cbc6e9cbe659bbd699abc6ca0bd6ea0bd689cbe6699bb6e9cbd6b9bbc6a9cbd699bbd61 *98bf699abd6599bb6a9cbd689abb699cbc6a98bc6f9dbc6c9cbe649bbe689bbd699cbd6297bb6f *9bbc6d9bbb689dbe669dbf6d9cbd6e9dbe6b9fbd6c9abc6999bb6c99bb709fbc699cbd729bbd72 *9fbf89a6c2a5b8caaebdcdadbccdacbbcbabbbccacbacdaabbceb3becfb7c2d1bbc4d0bcc6d1bd *c8d3bfc7d1c1c7d3bfc9d3c0c9d7c2cad4c5ccd6c6cbd3c4cad4c1c9d3c0c7d1bec5d3bdc4d2bf *c7d1bdc7d3bdc8d1bdc7d4bbc5cfbdc7d3bdc5d2bdc6d2bec6d2bdc7d4bec7d4c0c9d3c2c9d2c2 *c9d5c3c8d3c2c9d6c5cad6c6cdd7c7cdd7c5ccd6c6cbd7c3c9d5c7c9d4c3cad4c3cbd7c3cbd6c3 *cad8c6ccd8c9cdd8c7ccd7c7cbd6c5cbd5c6cad7c3c9d6c4c9d6c6cdd7c8d0d7c7ced8c9ced8c9 *cdd8c9cbd7c8ced6c8ccd8c7d0d8c9ced8c5ccd7c6cbd8c6cbd7c7cbd8c6cbd7c5cbd8c2cad6c1 *cbd7c2cbd6c2cbd7c5cbd8c4c9d4c7cbd4c3cbd5c1c8d4bfc7d6c1c9d6c3c9d5c5cad4c6cbd5c5 *cad7c4cad6c1cad5c1c9d3bec9d4bec7d3c1c9d3c4ccd7c7ced8c7ced8c7cdd7c7cdd7c6ced7c6 *cedac6ccd6c6ccd7c4ccd6c1c9d5bdc7d3bdc7d2bdc5d2bfc6d2bec5d1c0c7d3bec6d3c1c7d1be *c6d2bdc6d2bdc5d1bfc6d3bfc9d5c2c8d5c3cbd6c4cbd4c5ccd7c7cbd6c6cbd5bfc2becad0d4d1 *d7dcd2dbded4dde0d4dee0809fbb789fbc7a9db67b9eb76c99b3618cb0608dae6592b35d8fb660 *90b66690b6779cb8759bb7789eba81a3bb8aa3bc8aa5bc85a3bf8aa4bd8ba5be8ba6bd87a4bb80 *a2ba7ea2bc85a0bb829dbb789cbb739bbb7799ba759eba739db9749bba6b97b77399bb7099bb6a *95b75f8fb65089b1548ab15189b25289b3568ab15186b04d86b14986b15185b25488b15089b152 *8bb15585b05387b15485af4d86b24f8ab34581b15387b14a82af5286b0568ab35c8db54c84af55 *8bb34d89b44f8bb14889b15084b14d85b14782b14981ae4481ae4e8bb14987b1467fae4786af4b *82ae457fae4882b14c83b04782b14785b24985b44381b14d85b14483b0427eae4d86b04484b149 *84af4b86b34680b14585b04784b14281b04880af4985b14882b14785b44b85b14785b14486b148 *81b14d84b34c7eb04d84b24c88b54884b14683b14886b1478ab44a87b14984b04a82b14f84b34a *86b34784af4885b15289b0528cb54d8bb3568ab55189b2588db6508bb54f8bb55a8eb5528db551 *8ab4518ab54f8ab5538eb54d86b44d86b54a8ab24b8bb64d8ab44788b54e86b14d8cb65389b353 *85b45688b1538fb44f8fb54a8eb25787b5538cb3538cb74f85b3578ab35391b84f8eb65291b845 *8ab3518cb55e8fb7528fb6568cb8518db7578eb65491b75591b84b8db6508db7558db65088b54e *88b44f8eb74d8eb95393b75592b6568eb65f90b75593b75790b95b91bb578fb64f8fb8548eb75a *91ba5e91bb5a94bb5a92ba5391b85896bb5f97bb5f97bd5e94bb5d96bb6497ba759dbd7a9ebf8a *a7c387a4c186a6c287a8c387a9c188a8c383a5c086a7bf8ba8c188a5c083a3bf84a4c182a5c179 *a4c07aa2c07ca0bd6f9dbe779cbd7498bb5c94b85995b95a92b85992b75591ba5593b86496bb5d *96bb6197ba6599bb5795b85a95b65997bb5a94ba6698bc6498bb5d94b86599ba5d96bb5f95bd61 *96ba6697bd6898bc6c9abb739dbd6e9cbd79a4bf81a6c287a8c383a6c084a5c288a6c18ba8c483 *a5c185a8c385a9c389a9c48aaac28ba8c284a7c284a5bf81a5c0769dbd739fbe6d9ec06b9bbd70 *9bbc78a1bf81a4bf7aa2be80a5c077a4c07ba7c080a4c37aa4c37da4c27ca7c181a4c181a5c183 *a6c07ca4c17aa2c379a4c474a0c16a9bbf6b9ec1649abb689cbb6399ba6a99bb6898bb6199bd62 *97bb639cbc6499bc619abb6699bc6c9bbe6a9bbc689bbd669abd679bbe649bbf6398bb6899bc63 *99bd649abb679abd6199bd6498bd649bc05f9cc05c94ba6398be619bbf6695bb6798bb6499bc63 *95bb5c98bc5d96bc6497b96096b95c97bb6295ba5c97ba5f97bb6399bb6199be679abe6293b76a *9bbb6097bb619abd6398bc6797ba5f97bc5d96bb6297bc5f98bb5b97ba6598bd5d97bb6298ba5a *95bb5f95b76499bd6699bc699abc6098bb669abc6699bd6298bd679bbf659abf5c97bd649bbd64 *9dbc659cbb689cbd6e9bbc6599bc6295bb6498bd629abe6c9abc5f97ba6599bc6499bd669cbe64 *9bbd6497bd5f99bd639dbe659abe649bbe679dbe689abd6f9dbc669dbc609abc639abc639bbd60 *9abc689dbd6a9abd6197bc6d9bbe669bbd6b9cc0619ac06b9cbd639abd659abc689bbc6899bc67 *9cbc699cbe649bbd5f99bb5593ba5d95b9679abd6196bb679bbe6e9dbd6a9fbe689cbf5d97bd5f *99bd6499bd5f99bd669ac16799bc6d9fbf649abd6399bf629cbe669dbf5d97bb699cbd689abd67 *9dbe6f9fbf669dbd609bbf659cbe6ba0be6e9cbf679dbf699abd6c99bd689cc1679bbe659abd63 *9bbd6ba0c16a9dc1689dbe669bbe689bbe6d9fc1659bc1649cbf6c9fc0729fbe6a9dc16a9bbe6b *9cbf6a9bbf6c9dc2679dc16a9bbe69a1bf669bbf5e94bd669bbf6c9fc36b9cbe6c9cbe6a9dbf69 *9fbe6ca0bd729ebe6b9abd709abf6b9bbf6e9cbe679bbd649cbe70a2c06da0c0699abc719dbe73 *9ebe73a2c080a8c595b0c8a7bacbaabdcda8bbcdaabccea9b9cdaab6ccaebdd1b3c2d2b7c5d2ba *c5d3bbc7d4bfc8d3bfc8d6c1c9d3c1c8d6c1c9d6c5ccd8c5ccd7c1ccd8c3ced8c2cad4c0c8d5c1 *c7d6bfc9d5c0c8d4bcc7d4bdc8d5bdc7d6bbc7d4bdc7d4bdc6d2bdc7d3c1c9d6bdc7d4bfc7d3c0 *c9d6c1cbd7c2cbd7c0cad6c3ccd7c6ccd7c6ccd7c2cdd7c3ccdbc4cbd9c6cdd9c3ccd8c3ccd6c4 *cbd8c4ced8c8ccd8c8cdd9c8cedbc7cfdbc7d0dbc7ced9c7ccd8c7cad8c7cbd8c9ced8c8cfdcc8 *d1ddc9d2dbc6ceddcaced8c8cfd8c8cfdbc9cedac9ced9c6ccd6c7cddac4cfdbc6cddbc5cad9c3 *c9d8c2c9d9c1c9d6c2cbd7c3ccd8c3ccd9c3ccdbc3cbd8c1c9d6c0cad8c0c9d8c1cbd6c3ccd8c2 *ccd8c3ccd9c5cddac1cbd6c1cad5bdc9d3bfc7d3c2cad7c7cedac8cedbc7cfdbc7d0dcc9cfdaca *cfdac9d1dbc9d0d6c6cedac6cedbc1cbd8c1cbd8c2c9d6c1c8d3bfc9d7c3ccd7c1cbd8c4cbd8c4 *cbd8c1c9d7bdc8d6bcc7d3bcc6d2c1c8d4c2cad7c2cbd8c1c9d7c4cbd7c6cedbc6cdd9c2c8c6cb *d3d6d0daddd1dde0d4dee1d4dde286a2bc789dbb739cba7196b6658db46592b56590b26791b369 *8fb4638db65e8fb66892b86f97bb769cba7e9dbc89a1bb89a3bb89a3bd86a3be7d9ebd809ebb7f *9ebe819ebb79a0be819ebd7a9dbb7098b9739abc7298bc7097bb6e94bc6b94ba6492b96e99bb71 *98b8668fb75385b15487b15b89b35686b35286b15187b14f84b05181af4a80b14681b34c83b157 *8ab25083b14f85b14c87b54b86b15186b24c81b34882b64b81b34e81ae5184af5687b35287b152 *87b25684b24e81b14b85b24c81b14f86b04381b24d86b34e83b24e85b24c83b24b82b14e86b14a *84b44783b24785b44884b24b85b24884b14b82b1437fb14a83b14b83b34981b04780b34b86b049 *84b2538bb24880b2477fb34986b3427fb0467fb04d87b04e85b74b86b24782b34b7fb04884b142 *81b14f87b34781b14984b24c86b14e87b34b87b34c86b24885b54882b34e85b14b86b24b86b350 *86b44882b24e84b34c85b24580b35087b54d85b64d88b4538cb5568cb54f8cb6568ab75089b650 *89b94e87b55288b6518ab8508db74c88b64d84b45886b54f86b64c86b94886b74c87b6538eba53 *8db7528ab8588cb55189b6548ab7558bb65d8bb7518cb85189b5528cb7568bb7528ab9608cb451 *8ab4508dba4d8ab7558cb94e8bb5538fb95691b7598fb8578ab7568bb95289b7598fba578cb951 *8eb7588fb75c90b75f8fba578db74b8bb9518ab76194bb5790bb5b8dbb518ab8588eb8598eb858 *91b9598eba5b8fbb6091bb5b91bb5b92ba5d93b85991bb6294ba6496bd5f95bc6898bd7998bf84 *a1c081a4bf8aa7c088a8c28ba7c78aa8c687a8c587a7c587a5c580a3c08aa7c182a5c183a3c184 *a4c184a4c1799fbe6f9cbe7a9ec0759dbd739cbd6696bc6193bb6294bb5f95bb5990b95290bc5f *95b96196b85f95bb6798bf5c94bb6293bc6093bd6397ba6097c16497bd6898bd6598bd5f95ba60 *94bb6098bd6499be6999bd6a9abf6a98bb769fc086a7c289aac682a6c687a6c580a4c186a7c586 *a6c584a6c581a4c386a5c387a6c28ba9c387a7c584a6c583a6c685a5c4769fc06e9abb749dbd76 *9ebf7fa1c178a1c178a3c584a6c57da2c187a5c280a4c379a4c383a5c487a6c678a4c37ea6c38c *a9c88daac686a8c685a5c581a4c57ea4c2749cbf6e9dbe6d9cbf6c9cbe669abd6c9bbd6f9dbf67 *9bbb6998bb6396bc699abe6698be6a9ac06399bd659abd6899bd6799bd6a99bd699cc15f96bd66 *98be6a99be679cbd649abd6199be6296bd719dbf6b99be6397bd5e95bc689bbd6397bb699abd66 *99bf709bbd6998c06197bd5a94bb5f95bb6296bc5a90bb5792bc5f95bd6094bb6296bc6496bc62 *96bc6398bd6498bc6899bd5f96bb6c99bc6898bb6594ba6495bc5e97bb5a93bb6095bd6297bd5e *96bb6799bd6496bb6597be5d94bd5f95bd699abf619abc6699bd6099be659bbe6c99c0689cbd65 *97bb6096bb6599bd669abd699bbd639abb6c9abe6b97be6898bf6096bd6c9dc06e9cbe6c9fbd6b *9fbf609cbd6597bb6897bf6599bd689cbe689abc6b9bc06498bd669ac16799be6c9abf6698be67 *9abf679bc26898bd6898bc6699bc6199be669abd6b97c06997bd6499bd679abe6a9bbe5d96bc64 *98be6198bd6a98be6997be6495be6a9bbd6398bd6198bf6195bb6499bd659abb6a98bd6997bb5c *96be6499bf6198bd6198bc6397bd6b99bd6399bf669ac16499c06598be6898c16a9bbd6c9dc16a *9ec06b9bc1639bc26d97bd6b9abd6298bc6599be6199bd659abf679abc699ebd6b9ec26a9dbf66 *98c16b9dc06698c16799c2669bbf6aa0c0679dbe6599c16699c25c95c1739dc26a9cc16f9bc175 *a0c26d9ebd75a0c1709ec16a9bbe689ac36f9cbf6d9cbe669cc0689cbe6a9ac06599bf659ac269 *9cc16c9dc36d9dc16fa0c26b9bc2719dc26b9ec3649abe6e9dc0699ac16c9cc26c9dc275a3c36f *a0c271a2c06fa0c06e9ec17ba2c695afcb9eb5cc9db5cea7b6cca4b8d0a4b6ccaabbd0b1bfcfb9 *c1d1b6c1d2b7c3d4bbc5d6bec8d8bbc8d6c1c9d6c1cad6c3cbd7c6cbd8c4ccd7c1cad8c1cad7c0 *c9d8bfc8d8c1c8d5c1c9d4bfc7d4c1c7d3bfc7d6bdc6d6bcc6d6bbc7d8bdc7d3bdc7d4bdc8d4be *c7d3bfc7d5bdc8d7c3c9d8c4cad9c6cbdac6ccd9c6ccd8c4cdd9c7ccdbc5cbdbc5cbdbc5ccd8c6 *cdd8c9cddac8ced8c8d0dbc7d0d8c9d0dbc7d0dbc8ccdbc7ccdcc8ccddc7cedbc7ced9cad1dcc8 *d0dbcbcfddc9d1ddc9cedcc8ccdbc7cddac9cfdcc8d0d8c9cedbcacedbc7ccdbc9cedcc6ccdcc5 *ccdbc4cbd9c3cbd7c3ccdac3cbd9c1c9d9c2cbd9c3cbd9bfc9dac0c9dac1c9d8bdc8d8bfc9d9c2 *cad9c1c9d8c2cad7c0c9d9bdc8d8bdc7d9bdc8d5c1c8d5c6ccdac9cedbc8d0dbcbcfdcc8d0ddc7 *d0dccbd1ddcbd0ddcbd1dccad1dcc9ced8c7ccd8c4cbdac2cbdac3cbdac6ccdac7ced9c6ccd8c1 *cbd8c1c9d8bbc8d8bcc7d4bac6d3bdc8d6c1c7d6c3c9d8c4cbd8c3ccd8c5ccd7c4ced9c6cddac1 *c7cacbd3d9d1d9dfd3dce2d5dee2d5dde281a0b8759fb7759fb66d99b46693b36593b65f8daf69 *97b4568faf5c8faf5e90b46c90b36893b47599b67a9cb986a1bc87a4bc85a1bb7da0bb7ea1b67c *a0b87aa0ba809db6799cb97b9cb97598b76e98b66796b76b98b86998b66694b75e8fb36792b668 *90b56290b55c90b25a8db1548eb1588db15486ac5385ad5182af5386b04d87ae4987b14684ad50 *86af4c86ad578ab15187b25787b4588bb6528cb54f8bb14c87af4c88b04e84ad5384ae5487af54 *88b25286af558bb2538ab24b87ae4382ac4781ab4b84b04e85b14a83ad4681ad4681ae4080b052 *89b04986b14b83b04882af4a82b14a86b14d89b04383ad4e88b04785af4a82ae4781b04782ad54 *86ad4987b14986b14882af4c88b34f89b14885b34785af4684ae4d86b15186ae4382af4683b14d *86b14487b14485b04785af4987b04f86b14b85b04c88b14a84b14e8ab04a88ae4d8bb14886b251 *8ab15389b14887b04686b04a88b14486ae4686b24f8bb2538db45389b3508bb35b90b75a90b556 *90b55d90b56193b5508bb14f8cb2548db4528cb14f8bb24c8ab14e8fb14889b34987b35791b657 *91b6598cb9598db6538eb85d92b85b94b6518bb1528db14f87b65088b65a8cb5538db75c90b450 *8db35790b35290b55b8db4538eb4508cb6568eb55592b75991b25690b35a91b55d95b55891b75b *92b75d92b86193b85c90b75c91b35994b75895b75b92b8568fb45a93b8588fb65b92b85f92bb59 *92b75a92b65b95b75692b85a95b95a95b85f95b85c94b96a98b9679bbb6c9dbb6c9cbb6c9db970 *9dbb81a2be87a7c290a8c68fa9c391abc389aac28aa9c186a5bd85a5bf87a6c184a8c285a4c086 *a7c07fa4be7fa4be7ea4bc78a0bc76a1be759cbc6898bb6296b95c94b65e95b85d94b95d93b859 *95b65d96b75f96b96095ba6395b85c95ba6499b85f96ba6596bb6698bb6098bb6a99bb699abc64 *98ba6298ba5f98bb6199ba629abb6c9cbb6c9dbb75a4c089aac68da9c185a7bf87a8c185a8c084 *a8c188a6c187a7c385a6c28ba8c28ba8c387a9c388a8c284a8c183a9c279a5c071a2c176a4c17e *a4c07fa4be7ea4be7ea5be7ea8c181aac182a7c185a6c183a6c27fa4c184a8c389a5c28cabc087 *acc589aac48eafc590aec68caac68ea9c17ea5bf73a3bd6f9ebd6b9dbd6f9ebf659abc759ebe74 *9fbe659dba689cbb6c9cbb639bba6d9fbc6e9cbd6f9dbe6c9ebd6a9dbd6a9cbc6ea1bd6ca0bd6f *a0bc739fbd6b9ebc6f9cbd6f9ebd6f9dbd609bbb639abc6c9cbe6397bb689dbc699bbc6498bd64 *98bd689abb659bbb5f99bb5d9aba5f97b85f98b96598bd6496bb679abb5d97b96099b95f99ba63 *9bbb629bbb6999ba6598bb5f97ba6898bb6096b96398ba639bba6199ba639ab86597bb5d96b964 *98bc6b99bb6595ba6398bb6399bc629bba699ebb659abd6399bd6599bd699abd649abc6a9bbb5e *9bbb609bba6aa0bc6aa0be6a9fbd729cc06097bd659dbd699cbc669fbb699cbb659bba6e9cba62 *9abb679dbe669bbf629abc699eba659dbb619bbc699fbd6c9abe6999be6a9abe6299bc609abc6b *9ebc639ebc699fbb689bbc6f9abe689bbd699dbb699ebd669abb649cbc619cbc699dbe6599bd65 *98bd659abc6599ba689dbc619abc629bbc689dbd6098bd6899bc6d9bbd699abd659abd5e99bb6a *99bd6aa0bc659fbd6d9cbd5d97bd6398bb6098bb639abb679abf689cbf679bbb6e9cbd6d9bbd6b *9cbb6d9bbb669cbd6f9dbd699dbe609abb659dbd629ebc619abb679cbd699dbd669bbe6a9ebf6a *9ebd70a1bf69a0bd6a9fbc669cbc6ca0bf679ebd669dbe74a2bd6da1bf6da3c270a3bf6c9ec06d *9fbd6da0bd6fa1be6ca1c178a3bf66a0be6aa1bd68a1bd6fa1bf75a1bf6a9bbe74a0be609bbe69 *9dbd689ebb689dbd74a1be779ebd72a2c16e9dbe6c9ec06ea0c174a3be6ca3c072a3bf76a4c178 *a4c278a1bf7aa4c06ca0bf749fc078a5c17ea5c17fa6c588a9c7a1b3cba6b9cca7bbceabbbceb1 *c1ceaec1ccadbeceb1c1d0b8c3d0b9c7d3bbc6d6bdc9d4bfcad5c3ced7c5cdd6c5cdd6c3ccd5c1 *ccd3c0c7d2c0c8d6bfc9d3bdc7d3bec7d3bfc7d4bdc7d3bdc9d2bdc7d2bbc7d4bcc7d4bbc6d3be *c8d6bfc9d4c1c8d3bfc9d3c3ccd5c2cbd6c2cdd9c7ced9c7cdd8c7ced9c6cdd8c7cdd8c6ced9c8 *d0d8c7cfd8c9cfdac7cfdac9d0d9c9d1dbcad1d9c9d1d8c8d1dac9d2dbc9d0dacbd1dbc9cfdcca *d1ddcad1dbcad1d8cbd3d8cbd2d8cad0d8cbd2dcc9d0dbcbd1dbccd1dbc9d2d9c8d0d8c8cfd8c8 *cfd8c8cfdbc8cddac5ccd9c3ccd8c3cbd6c1ccd7c1cbd5c1cbd5c3c9d5bfc9d6bfcad6bfcad6c1 *cad8c2cad6bfcbd5bec9d4bec9d3bfc9d5c2cad7c3cdd5c5ccd4c7d0d9cbd1d9c7d1dbccd3dacc *d2dccbd3dbcad3dbcbd2ddcbd6dbc9d3dcc9cfdbc7ced8c4ccd8c3ced6c4ced8c6ced9c6ced7c3 *ccd8c2cbd8bac7d5bcc7d3bac8d3b7c6d2bdc7d1c0c9d6c4cbd6c6cdd7c7cdd8c3ced7c5ced8c6 *ced6c2c7c2cbd9d7d2dcdfd6dde2d8dfe4d8e0e180a0bb7e9ebc789bb77197b46794b66091b461 *90b5608fb35b8cb15e8ab26990b56c8fb46a92b7769db67d9fbb7d9eba85a2bb85a0bb7e9bbc85 *9dbc7698ba7a9dbb6f9cbc7a9eba7299b96390b65e89b6608db3648cb66a8fb8678fb75887b459 *8bb64e8ab0558ab15285ae5584b15382b24982b24e84b24c84b34a83ae4683b04880b1487eaf4d *83b24d83b14f88b25384b55489b2578cb55288b15588b35083b15687b65783b15083b25385b14f *87b15087b0437eaf5084b14f83b2477fb04f82b14980b44b85b14880b1437fae4b83b04c7fb14f *83b15386b24e84b24d83b44883b24783b24a83b14382b1457fb04f82b3437bb04e85b44c84b349 *83af5286b34c86b44f8ab54b84b44b83b34e82b64e80b34b85b34985b34c85b14c86b15485b451 *84b34e85b14d84b24881b14d85b64c83b44d85b14e85b34d8ab45185b34d84b14c84b54781b345 *83b44f84b54887b35088b3508ab24886b44d87b34d87b44f88b85c90b65c8fb4578fb76391ba63 *91b9548cb6518ab75289b74d8ab7578eb75389b34f88b55088b55889b65288b94986b84b89b354 *8cb8528db35a88b65a8fb94f86b74f8cb95990b65490b95889b6588abb558bb65188b3578db754 *90b65d8eb85b8eb9598dbb588eb75c8cb95b8cb8518cb9568dbb5e91ba5890b7588fb86090ba5a *90ba588eba5c8eb95d91b95990b95d90b9548fb76091b95e93bc5a91b95d8eba5d90bb5b91bb5f *93b75a94b76194bb6795bd5d91ba6494bd6295bb6296ba6595bb6796bd6d9abd719cbd769dbf7d *9fc29ab5c781a5c486a5c184a6c48fa9c18ca5c391a5c688a7c68ba6c381a5c383a5c481a4bf7f *a3bf77a0c17ca0c280a2c1789cbe739abe6c9abe6998bd6496bc5c93bb5c96b95b92b95f92bc65 *93bc5e93bb5d91bc6192bc5a8fba6097bc6798be6394bd6497bb6595bb6796bb6c97bc6c98bd64 *96bd6198bc6799bc6298bb6a99bd7499bd719ebd78a1c17fa5c388aac586aac587a4c18ca7c58c *a5c588a5c589a7c681a4c384a7c385a7c389aac48da9c690a8c48ea8c388a9c483a4c380a4c37f *a4c17ea5c180a4c180a4c585a5c585a7c683a5c57ea5c380a5c285aac47ea9c28aaac392aac692 *a9c692aac794aeca93afc68eaec791aec788a7c685a6c582a2c180a2c3769dc26f9cbc75a2bf71 *9ec175a0bf79a2bf749bbd7099be6499bd6999bf6d9cc0629bbf679abd669dbd679abd719dc46f *9ec0709ec1709dbf6c99c16d9ac06a9cbf6ca0be659abd679abe6a96bb689abf669ac36698be62 *99bd679abc6499bc689bbd6296ba6c98bd6898bb6294bc5a93bc5d94bd6096bb6598be6496bb63 *97bb6096bc6696bc6c96bd5e96bb5f99bd659bbb6199bb6098bb689abc6e98be6397bc6296bd62 *98bd649bbd5b99ba6597ba6398bc6995bd6997bd6897bf6c9abf6a9cbe679bbd679bbd689bbd66 *99be719abf6497be649ac1639abf6299bf6499bc5e9abd6698be699bbe639abe6b9cbd6e9ec166 *9abe689fbe669dbc5f99bf6a9cbd6f9dc06699bd6398bf699ec3699dbe639abc6b9ebc669cbd65 *99bf6599bd6e9bc16d9ac26b9ac1659dbf5f9bbc619abe5f99be6c99bf6b9bc06999be6298bf69 *9abf659bbf689cbc6a9bbe6499bf6698c16a9abe5f96bb5b95bd659abf6a9abe6397bd6399bf63 *98bd6999bd6b9cc36397be6098c1679abe6398bf619abd679bbe679bbd679dc16c9ac16e9abe67 *9bc0679bbe6799c0649cbf689bc06098be6c9bbf6b9bc16d9cc16899c26b9ec36ea2c1689fc165 *9ac16b9ec36a9ec26d9ac1689cc2739fc269a1c169a0bf699dbe6f9fc16e9cc36c9dc36a9cc460 *9bc26a9bc36ca1c16e9fbe6d9cc36a9ec1709cc26d9ec2699fc26fa1c368a0c3659cc1789fc26c *9ec16c9ec16a9dc1729fc0739cc36fa0c26e9ec16d9cc0729ec36d9cc26b9fc26ca2c26e9dc16c *a0c372a0c36c9ec0699cc074a1c273a1c185a6c675a1c1769fc184a6c792afca9eb4cba4b5cea5 *b7cda6b7cdaab9d1a9b9cdadbbd1b1bfd3b5c2d5bcc6d3bdc9d6c0c9d5c3cad7c1cad8c5cbd6c6 *ccd7c2cbd7c1c7d8c0c9d7bfc7d3bfc7d4bdc7d4bdc6d4c0c6d5bbc6d4bbc4d4bcc6d6bdc7d5bc *c7d6bdc7d4bcc8d6c1c8d6c0c9d8c3cad9c6cadbc3cbdbc6ced9c8cedbc8ced9c7cedcc8cfdaca *cedcc9d0dbcad0dbc9d0dac9d1dbcad2dacbd1dccbd0ddcbd1ddcbcedecbd0ddcaceddc9cfdec9 *d1ddc9d2dccbd1dccacfddccd1ddccd1ddccd0dacacfddcad1dccad1ddccd1dbcad2dbc9d1dccb *cfdbcad1dbc8cedcc7cddac7ccdac5ccdbc4cddbc5cddbc6cdd8c6ccd9c6cbd8c1c9d8bfc9dabb *c8d8c0c9d6c1c9d8c0c9d8bfc9d8c3cad9c3cad8c3cbd9c4ced8c6cedbc8cfddc9d2dcced5ddce *d2ddcdd3decfd2dcced6deccd5decbd3ddcbd3dccbd1dbcbd1ddc9cedcc8ccd9c6ccdac3cadbc3 *cbdbbccad8b7c6d8b5c3d5bac3d3bbc3d6bcc5d6bdc6d6c2c9d9c3cad8c4ccdbc6ccdac5cdd8c9 *cfdbcbcfdac4c8c7cdd6dbd2dce0d4dfe3d7e0e5d8e1e485a4bb88a2b67fa0b56f9bb5779eb664 *90ae6593b16091ae648eaf5c8dae5c91b06a94ae7599b6709bb6749ab67ea1ba82a0b97d9db87e *9db7709ab36d98b46a95b66f98b66e9bb76a99b76490b45a8eb2568fb26091b36191b35b8eb457 *8bb45686b04f88b14b87b04c89b04986ae5188b15286af4c83b05189b15187ae4b87b0508ab24a *89b15087b24d8ab1568db35189b24f87b15d8cb54e8bb04d8ab1548bb25387b0508aae568ab14b *85b04c85b04a86b04982af4d87b14f85b04e89af4984af5086af4e87b14482ac4f84b04886b04a *83b05286b05189b2518ab14485af4b88b14d86b04581ae4d87b14e88b15087b24785af4f88b04b *88b14885af4583b04283af508bb2528ab14b88b24b89b15189b15387b04884af528ab4508bb24c *87af4c89b34884ae4681ae4d88b24585ae4c86b14785b04b88b34685b44b86b14989b35189b048 *86ae508ab14d85b24e8cb34889b24f8eb5528eb1538ab2518bb45a91b5558db55e92b66092b658 *8eb55991b65d94b6568fb5528eb35393b5548eb85192b5508cb8528db35b8fb65290b45c91b657 *93b54d8ab24d8bb55c90b7548fb55891b9538db5528eb4588fb35992b1528cb15a94b9568eb952 *8fb65b95ba5b8fb75790b66095b75592b65890b3578fb65791b85991b75c92b95c94b65b95b662 *96b85594b95190b75c93b85091b95894bb5c93ba5b90b65d93b65b95b85c96b86a98bb5391b864 *99bb6093b96297bb6296b66796b95d92b55e97b96599bb5f96bc6499bb6d99ba75a4be7ca4bd7b *a1bd7ca4bf81a4c081a7c48ba9c386a8c285a7c190aac38ba7c087a7bf86a5bf7fa4bd81a4c180 *a4c17fa3c079a3bf6fa0be6d9dbb729ebd679cbd6a9abc6296ba5e97ba5e97bc5b95b85e97b95c *94b75894b85e97bb6697bb6898bb5a96ba669bbd6498ba689bbb6199bb6599bb689bbb679dbd6d *9cbd729fbd689bbd73a0bd789fbd79a0bd75a4bf7ca5c079a4bf80a7c388a9c386aac48baac38d *aac591aac48faac190acc681a8c388a7c284a8c487a9c391acc58caac48aabc391aec48babc488 *a9c484a8c680a6c57da3bf89a8c285a9c286a9c38caac188aac38ca9c585abc48daac690adc78e *b0c684abc390aec692b0c693aec78eaec693afc690aac689aac585a6c17ea4be73a5c178a3bf76 *a3c178a4c178a2bf76a1be6d9dbd6599bb699fbd6e9fbd74a1bf6a9ec071a0c06b9fbf6a9ebe6f *9ebe70a2c06ca0bf6b9dbe699ebd6a9dbd739fbe669dc0649ebc669abc6599bc639bbb72a1bd68 *9ebd6299bb679cbc679fbc5f99bb609abc619abb6b9bbb679bbb6a9fbd6199bd5895bc6299bc68 *99bd5f9abd6d9cbb609ab86a9ebb6097bb6399bb6198bb6297bb659abb6898bc6298ba6199b963 *99b9669abc6399ba699bbd6597bb6399bd679cbb649abd689cbd629ebe639ebf679bbf659bbe69 *9bbc669bbc649cbc659bbb699dbd669dbf719dc06f9bbe659fbc669dbc669bbc689bbb649dbb6b *a2be6b9dbe649abc679dbb649cc05c9cbe5c99bd6b9dbd6a9bbd6ea1be76a0bf6f9cbf679abc63 *9cbc6f9dbf679abd699bbd6b9ebd6fa1c26a9fbe6d9ebe649bbd6a9ebe679cbd6a9dbe679cbc64 *9cbd629dbd649bbf659abd669bbe609abc699bc1659ebc689ebe659cbd659cbd619cbe669cbe60 *97bc5f99bd689cbd70a1bd679ebb5f98ba6499bc5b99be649cbf669bbd6aa0c172a0c05f97bb5d *9abb5f99bd6499bd679dbd669bbd6b9ec2669abe679abd649bbd6ca0be669ebf6ba0c26ca0c16c *9fc165a0bf71a3c16fa0bf689cbf6da0bf679cc0679dbf73a2bf6ea0c16da4c471a3c26ca1c071 *a4c168a0bf6b9dbc70a0bf76a0be6d9fbe6ca2c16ca0bf78a3c26ea0be62a0bf6fa2c16aa0c16c *a4c36aa3c36aa1c36fa3c26ca2c174a3c36da1be679cbd7aa3c16fa1c06da2c1699fc072a4c276 *a1bf75a3c075a2be709fbd78a3c26ba1c06da1c179a5c46fa3c076a4c278a4c380a4c191aec69b *b1c9a4b8cd9fb6cb9ab2ca9ab1c99fb6c9aebfcdb3c5d2b9c7d3bdc9d6bfcad6c0cad8c3ccd8c3 *cbd7c3ccd4c2ced6c2ccd3c3cbd6bfcad6bec8d6bcc6d3bec7d3bdc7d2bec8d3bdc7d2bac6d2ba *c6d3bbc7d6bdc8d5bdc9d5bec9d3becbd5c0c9d7c3cbd6c3ccd9c4cfdac7cfdbc8d1dccad1dbca *d1d8c8d1dac8d1d9c8d1dbcbd1dccad2dcccd3ddcbd3dbcbd3dbc9d3dbcad3dbcad3dccbd3dccc *d3ddc9d2dcc9d2dbc9d1dbcbd1dcc9d4dbcbd3dbccd3dbccd3dcccd3dbcbd4dcccd2ddccd3dccc *d2dbcbd3dbcbd2dbcbd3dbcbd3dccad2dcc9d1dccad1dbc9d1dac9d2dac8cfd9c4cdd8c3ced8c4 *cdd8c2cbd6c2cdd8c3cbd8c2cbd8c1cbd6c3cbd8c3ccd6c7cfdbc7d0d8c9d0dbccd2ddccd5dece *d6ddced6ddced6dccfd8dccfd8decdd7ddccd7deccd5decdd4dec8d0dacad3dbc8d3d9c3ced9bc *cad5bbc9d6bac7d6aec1d3a7bdd1aabecdb0bed0b6c3d1bfc8d4c4ccd6c2cbd8c2cddbc4cdd8c5 *cdd7c7d0d9cad1d9c2c7c4cedadbd3dfe1d6e1e4d8e2e4d8e1e48ea7be85a4bc7da0ba7a9eb777 *96b66693b36c92b46992b3658db15f90b16692b26695b06994b57999b77599b774a0ba7c9fb976 *9cb86d98b3709bbb6a91b36c99b66b91b66e92b86591b5598bb35c8fb55a8bb45b8db2568bb454 *8ab3548ab25488b34d89ae538ab25487b35989ae5789b2558ab25488b05387b05287b05186b25a *8bb4598db5508bb55389b35b8cb5538cb15289b45386b4548bb3518ab15389b15087b35086b247 *84ae4e85b04f87af5089b14885af4d84b15187af4d84ae4c84ae4282ae4a84af5189b54c86b159 *8cb45187b14d86b25785b05285b04a85b14b89b64c89b64d84b14d88b14f88b04d88b14c86b04e *85b15085b14884b14987b14c85b24581b04281b04d85b04f86b15188b44c87b14c84b14c84b34b *84b14986b0558ab34f8bb44686b14c82b14887b44885b44b87b14e89b14e87b14382b04789b04a *84b04b87b14b86b25189b55789b34b85b15089b2528bb4598cb4548cb55b8db86295ba5d93b962 *96ba5f94ba6095ba6093b55d90b8598eb5548bb6518dbb4f8cb84f8ab4598bb5558eb5588fb653 *8eb75d90b8648eb95790b8528eb76596bb588cb46492b65c91b46092b85c91b85f93bb5c8dba5d *90b85792b75b96b96494b96392ba5492bb5f92bb568bb75a8eb86296ba6395ba5e94b96093ba5c *95b65e96b95491b95c95bc5c95bb6194ba5f94b85e94b76697b8649bbc649abe5e95bc5f96bb60 *93bd6599bb5993b66b98bb6596bb6598bb5995bb6796bb6697be5f93bb6092b96a9abc6f9fbe80 *a4c179a4bf7aa2c181a4c47da5c485a7c387a5c18baac58baac683a7c184a6c280a4c16f9ec17e *a3c1769fbe749fbf79a1bf749ebd7ba1bf749cbc6b99bd6797bd6295ba5e94ba5c93b95b92b961 *96bb6698bb6397bc5893bc6799be6a99bd6a9abd749ebe699bbd709ebd6f9dbc709ebf6b9cbe6b *9ebe6ea0bf769fbe709cbd79a2c078a2c17da3c079a4c283a6c583a8c788aac787a8c38da9c48f *a9c590acc795afc88eadc98eacc888a9c684a6c48baac688abc692b0c694acc691acc595adc88c *aac688a7c487a8c284a8c388a8c289abc691adc791abc491abc791abc889abc78daac693aec78a *adc897b1c999aec894afc8b1bdd1a2b8c79db6c995b1c792aec88cacc58baac68daac381a8c584 *a6c377a4c177a4c176a4c379a2c178a2c27aa4c17ca3c174a0c079a3c375a3c271a1c06da0bf6e *a0bf71a0c072a2c075a0c0749ec16aa0be659fbf71a0c1729fc06ba0bf689dc072a0c16aa0c06a *9ec16799bf699bbe6498bd6a9abd689fc0679abc669bbd6b9dbd6297bd699bc0699bbc6298bb5d *97bb5e95bb679dbf659abc6a9abb6999bd6698bb6798bb5e97bc669bbb6198bc669abd5c97bc65 *98bc6d9abc6398bc679bbd6b9cbd689bbb6297bd6098bd629bbe629cbb679ebe6c9fc16e9fc069 *9dc06c9bbe6b9ec0649bbd6397bd649bc068a1c16d9cc16ea1bf699fbd699ec16ca0c36ba1c16f *a0bf6a9ebf709fc36d9ebf679ebe6d9fc3709fc16c9fbf74a2c173a1c168a0c26b9cc3669fbd67 *9dc1669cc1659abd6c9ec0699abd629abc689ec1699dc26c9fc26a9dc1659abd659bbe679abe71 *a1c3699ec2659ebf649cc1679dc06a9dc0699cbd709fc1699dbe6f9ebe679bbd6099bd629bbd5f *99bd669bbd6e9fc06398bd6ba1c1699abd699dc06198bd669ebe5f99bd6d9dbe659abd6da0be6c *9dbf6d9ebf649abd639bbd689bc06a9cbd6499bd6a9dbf73a0bd6d9ebe729ebe689ec06ba0c168 *9bc0659dc16ca2c16b9fc1689ec172a0c076a2c36b9ec267a0c177a3c379a5c372a4c16aa1c173 *a4c377a4c370a2c372a1c36a9fc46ba3c2699ebf6ca2c36da1c079a2c172a1c374a3c56ea2c36c *a2c46fa2c26f9fc472a2c16fa1c274a2c175a0c170a4c277a2c471a4c46ea1c2669dbf77a3c377 *a3c36ca4c374a6c36c9ec378a3c5699dc470a1c173a0c06fa1c378a1c07ea5c480a9c779a4c583 *a9c780a8c69cb4cc98b3c98aaac585a9c597b0c8acbbceb4c1cfb6c6d3bbc7d3bdc7d3bfcad7c3 *cbd8c5ced8c5ced8c2cbd6c2ccdac1ccd8c1c9d6c1c8d6bcc7d3bfc7d3bdc8d5bec7d6bcc6d6bb *c5d5bbc6d6bbc7d3bac5d3bec9d5c1cbd7c1ccd8c2ccd7c3cbdbc6cbdbc6cedcc7d1d8cad1d9ca *d2ddcbd2ddccd3dcc9d2ddcbd2ddccd3ddccd4ddcbd3dccdd2ddccd4ddced4dccdd3ddced5ddcc *d3dfcbd3dfc9d3decad3dbcbd3ddccd3ddccd3deccd4dbcbd1dbc9d3ddcbd2dcccd5ddcbd3ddcc *d4ddccd6ddccd5ddcdd4ddcdd3deccd5e0ced4dfccd4ddccd4ddcdd5ddccd4ddcad3ddc8d2dcc8 *cfddc8cedec8cedcc7cedac5ccdac3ccdac3ced9c4cedac4ccdac3ceddc9d2dbccd1ddccd4ded0 *d7dfd0d8ded1dae1d1d8e2ced6e1cfd7e2cfd8e2ced7dfced6decfd4ddcad5ddcbd5dec8d1dcbd *c9dab3c4d4abbed1b1c2d2aac0d1a1b8ceabbfd0b2c1d1bdc7d6bdc8d8bfc8d6c1cad7c3ccdac4 *cddac5cfdcc9d2dbccd3dbc4c8c4d1d9dcd8dde3d7e2e6dbe3e6dae3e58aa4be84a4bf7ca0bc77 *9bbb7499b67095b1678fb0588cae5c90af6491b55c8fb36091b35c90b56a8fb06c92b3739cb66d *96b56c93b46697b66796b66c97b77399b36c94b66592b55388b0548aaf5089b04d8ab14f88b257 *88b25789b35082b04e89af5189af4f88af4a86af528ab15a8cb35389b15787b15b8ab25085b252 *86b35089b34f8ab3508ab4538cb14f87b25389b4588db45188af4d85b15387b25a8db45990b657 *8eb34d85b14c87b14c86b14e89b25186b04884af4c86b14b89b24982b14683b04c83b24d84b34d *85b24f86b14881b04f89b34c89b24887b34582b15187b34d88b14b84af4c87b04c8ab34c88b34a *85b14182b24782b14c83b14d86b04e87b14b87b24c87b44c89b54385b14684b14a86b24884b247 *81b14b86b14e89b24c89b44786b24e87b24982af4b84b1528ab44986b35089b2538ab54f8db648 *85b3558ab34783b14885b24e87b1568eb55189b34e8ab54f8fb7508eb7558fba5691b96297bb66 *96ba6e99bc6895bc5b90b7528db6518fb6518db4518fb74d8db65991b9558fb84d8db6528ab64e *8db55894b94d8cb6578eb8568eb6598dbb548cb7598eb66497bb5f92b85691b75b91b9548fb761 *94ba6095bb6494b96393bb6094bb5393b75f92bb508db95992ba5a91b95c91b95c96b95b92b855 *90b95b95bc5790ba5791bb5692b95b96ba5a96b95e94bb5e97bc5c94ba5e97bc6898bd6499bd66 *97bd5d92bb6198ba6396b95d95bb6297bc6299bf5e96bd5f96bd6095bb5f95bb6596b96e9abe70 *9fbd749fbe79a1c47aa0be779ebd80a5c181a4c184a3c187a5c181a4c385a8c680a6c27da3c079 *a3bf7ea3c0769dbd6e9abf6f9dbe6ea1c168a1bf6a9dbe6a97bd6297bc5e96ba5c93bb6598bb5d *95bc5c97bc5c97bd5d96bc5e97bd6197bc6f97bd6496bb769ec16f9dc0719ec2719fc06d9ec36c *a0c174a2c274a3c176a1bc749ec073a2c270a2c070a3c182a6c68aaac589a9c58daac78facc694 *aec98bacc792acc992adc98baac78aaac782a9c586aac68eabc68dadc892aec991afc990acc88e *acc68baac48faac78babc68aadc889abc786aac88aabc88caac88faec895b1ca93aec997b0c895 *afc898b1c996b1cb96b0cb97b1c99cb1caa4bacc9db5c994afc797adc791acc88babc989aac782 *a7c384a7c483a9c678a4c47ea5c676a3c376a2c27da4c57ca4c376a2c273a3c27ba4c273a2c272 *a2c2689fc16d9fc36ca2c4699ec071a1c16ca0c072a1c26c9fc1719dc070a0c2689dc165a0c26e *a1c2719ec15f99bd669abd689dc0689cbd689bbf609bbf629bbe649cbf649bbd649abe6098bb5b *99bb6498bd659cbe629abd659bbd5f97bc6297bc5c96ba689cbc6798bc5f96bd6297bd6199bd5d *9abf5d98bc649bbd6698bd649abc699cbe6299bd6099ba5f9abd639bbf649bbe659cbf629cc060 *9abe619bbf699ec2639bc16c9dc3639cc1669cc16399bd6aa2c16b9fc0689bbe6699c06d9dc165 *9bc1699dc0659cbe6a9fc16d9fc06c9dc16a9fc4659ac1629ec3659bbe6aa1bf76a2c46fa1c362 *9ac2639cc36d9fc4669cc0689cc0699fc06ca3c2649cc0679cc26b9bc3689fc3659ec2649ec162 *9cc16ba1c3679cc3669cc1639ac2659cc4639bc0679abf619abd609abd609abf649bc26699c26e *9fc16a9dc15f97bd699cbe659cbe679fc070a1c36b9cc0659abe719fc1649ac1699bc2659cc165 *a1c1639ebe689ec16c9ac1679ac1699fc16c9fc1669ec1659cc16ea1c16ba3c1699dc06d9fc26a *9dc270a0c36ea1c46ca0c36da0c266a1c172a3c4709fc36c9bc3689fc26da2c56da1c66ca0c36e *a3c66aa3c46ba4c6689ec66ba2c475a3c66ba3c36ea3c469a0c36fa2c46ba4c478a5c66ea2c46a *a1c368a3c5649fc375a4c676a4c66da2c474a5c575a4c573a4c66ca1c370a0c4669dc16a9dc477 *a3c368a1c56fa1c36da3c56ba2c370a5c66ca4c578a4c379a3c36ea0c16fa4c474a7c672a4c671 *9ec376a2c476a4c38baeca9ab3cb97b3cb82a5c785a8c79eb6cea2bad0b0c3d3bcc6d6b9c6d3bb *c7d6bdcbd6c1ced9c2ced9c6cdd9c3ccd8c6ced8c6ced8c3c9d8bdc9d8bac8d7bcc9d8bcc8d6bc *c7d5bbc6d6bac5d4bbc5d3bbc7d4bcc7d6bdc9d8bfccdbc3cbdac4ccdac5cddac6d0dcc9d1ddca *d1ddcad2e0cad3e1cad5dfcbd2dfcad3dfcdd4deccd4deccd4e1cdd3dfcdd4e0ced6e0ced5e1cc *d6e0cdd6e0cdd6decbd5decdd4decbd4deccd4dfcbd5dfcbd4decbd2ddcad3deccd3dfccd4dfce *d5decdd3e0ccd5e1cbd6e1ccd6e2cdd4e0ccd5dfced5dfced5e0ced6dfcdd6e1ccd6e0cbd5dfca *d4dfcad4dfcad3dec9d2ddc9d2ddc9ceddc4ccddc0ccdcc3ccdcc1ccddc4ceddc8d0decdd4dfcf *d7e0cfd6dfd0d8e0cfd9e1cfd9e4cfd8e2d1d9e2d0d9e2d2dae1d0d8e1cdd6dfc8d2dec6cfddc3 *ceddbeccdbaec5d5acc0d2a9bed1aac1d1a4b9d1aabed3b2c2d7bcc9d9bfcad8c0cbd9c1cbd9c3 *cddbc3cedbc7d1dec9d3ddcbd3ddc2c8c8d0dcded8e2e3d9e4e7dce4e7dbe4e78ba5be80a4bd6f *9eba729bbb789dbb7096b76c92b35f8eb1608caf5d8fb36d92b66692b8628eb6698bb36894b65a *93b66493b36891b56694b66a94b76c92b6678db65c8cb35e8fb4558cb2568cb34f89b2558bb14f *83af5789b35289b1578bb3568ab25789b1568db3578ab15086b1568bb5558ab4558bb6568bb35a *8ab4578bb3588cb25b8db45f8ab25f8db6598bb6548db75f8bb45086b0638eb45f92b65c8bb163 *8db75787b45387b55488b15089b34a85b14a83af5288b14f84b24985b14a85b45186b44c83b14b *85b05589b15589b1508ab35185b1568ab65186b35489b45185b14b84b05387b14d85b14e89b348 *84b34b85b54b86b44e86b15d90b5538bb24e8ab24989b44c89b64f85b44b84b45386b64f85b351 *8bb35287b3528bb1588bb55086b55486b35084b55085b24885b54b87b65288b1548bb54d8ab74a *84b15089b54d86b44e85b44785b34c8bb6568cb45088b1548ab4608fb65e91b96394bd669ac066 *95bc6094b76a9abd6b9bbc5d95bb548ab65b8dba5e91b9528ab85691ba5e93bb5a91b75b90b860 *8fba528db95390bb578dba598db95f92b95f94ba5f92b55d93bb6192bc6393bb5692ba5791bb5f *95bc6593bc6695bb6197bc609abd6a97bc5c95bd5e91bb5c91bc5c92ba5f95bb6298bc6297bc65 *98bd6195bb5d93bd5a8fbc5892bc5b92ba5e94bb6196ba5b95bb5c92bb6397bd5c96bd6698bd66 *97be6498c06497bb6298bb6098bb6796bb6896bd6796bf6594bd6695bb6593bb6d98bc6c9bbe6d *9cbd6b9cbe749ec27ba1c183a4c380a6c37da4c185a7c586a4c186a4c084a6c480a6c382a6c579 *a3c380a3c180a4c271a2c0739fbd699abc75a0bf729ec16e9cbe6499c16698bd6a99bd6499bd64 *99bd6698bd6499bd6696bc6196be6293c06698bd6a9bbe70a1c078a3c371a1c0709fc1719ec16f *9ebe6e9dc076a2c180a4c47fa5c579a4c47ca5c57ea5c584a8c687a8c78cabc990adc995b1c996 *b0c892afc995adc793aec894acca8daac68fa9c887a5c584a8c590acc694afc998aec992acc892 *aec991acc792acc78cabc88cabc88aadca8badc88cacc890acc995aeca98b0c999b0ca96b1c99b *b6cc9ab4cb9eb5cb9ab1cc9bb2ca9fb3c9a2b3cca2b5cb9eb2cb9eb3cc98b0cb94afc991acc88c *aac78cacc985a8c684a8c682a7c77da4c185a4c180a4c37da6c683a9c782a4c67ca4c57ea4c37f *a4c479a1c377a3c578a3c57ea8c673a3c778a3c575a2c377a3c479a4c574a3c572a3c469a0c36f *9dc36ea0c3679ec16c9ec2669bbf699ec076a0c1699bbe6a9ec06c9bbe709cbe6c99c1679ac06c *9bbf699abe669cbe6899bd669dc16a9bbf6a9bc1719bbf6697be6a99bb659bbc629bbd6899bd62 *99bc6c9cc06a99bf6598bf6799c06098bb679ebd669bbf669dc0699abf6598bd6f9ec06c9cc264 *9ec16ea3c36ba1c36ba0c16ca1c36a9fc2739ec16aa1c473a0c66fa3c3749dc3699cc26a9fc172 *a1c3689dbe71a1c369a1c3649ac3719fc36fa1c472a3c2709fc16c9ec3699dc3719fc6719fc66c *a1c3729fc4719ec3699ec16e9fc3719fc36b9bc470a0c675a0c672a1c36b9fc472a3c371a3c56a *9fc26a99c1669ec3659bc36e9ec4679ec26ca0c2649dc1659ec3689abf699cc16aa0c36897c370 *9fc36a9ec37da5c76b9fc16aa0c1659abe6499bf6b9ac3719cc36c9bc1659bc1689bbf6499c172 *9dc2659ac16ca0c26799c1729cc2659abd719ec16c9fc2659cc1649bbf70a0c3649bc26e9dc26d *9dc26ea2c266a0c1709fc174a1c3679ec36ea2c36ca1c56ca0c573a4c679a4c577a4c471a1c571 *a2c175a4c672a3c779a6c96ca2c676a3c674a2c66da2c577a6c778a6c66ca1c56aa1c66ea3c66c *a1c675a4c677a4c675a1c579a6c772a3c66fa0c476a4c76ca1c67aa3c66fa1c575a2c577a3c576 *a4c573a4c670a3c672a3c773a3c670a2c674a3c672a3c474a3c377a6c676a3c57da2c671a3c675 *a4c672a2c278a0c275a2c27fa9c681a9c688abc885a8c780a5c693b0cb9cb2cbaabbd1bbc7d6bc *c9d6bdcad8bcc9d7c1cbdbc3cedbc6cedbc7cedbc7cedbc6cddac0cbd8becbd7bbc6d6bdc6d6bf *c6d8bbc7d8bcc7d7bbc6d5bcc6d6bec6d5bcc7d8bdc8d7c2cbd9c6cddac7cddbc8d0ddc9d2decb *d2ddcad3decbd4e1cdd3e0cfd4e2ced5e2ced6e0cfd5e2ced6dfcfd6e0d1d6e0d2d6e2ced6dfd1 *d6e1d3d8e3d1d6e2d1d7e3d1d8e0d1d8dfd0d6e1ced5e2d0d6e0cfd5e0ced6e0cfd6e2d0d5e3d3 *d9e3d1d7e2cfd7e1ced5e2d0d8e2cfd7e3d1d6e3d1d4e2d1d5e0d1d6e1d1d8e2d1d8e2d1d8e2d1 *d7e4d0d6e1cfd6e1cdd6e1cdd3dfcad3e1c8d2dec4cdddc1ccddc2cbddc4ccddc5ceddced3dfce *d5e0d1d8e2d0d7e5d1d8e3d3dae2d3dae3d3dbe4d3dce5d2dbe3d1dbe2cfd8e2ccd8e1c8d3dfc2 *ceddc2ccdac4cedbb3c7d9b1c3d6aabdd3a4bbd2abbcd5b6c3d6bbc7d7c1cadac5ccdbc7cdddc7 *cedcc6cfdec8cfddc7d2ddc9d2ddccd2ddc7ced0d2dee0d9e3e7dbe5e7dde5e9dde5e989a2c084 *a0c179a2bd78a2bf6599b7729db86594b65d91b65d8db76291b46692b66197b66095b66098b665 *97b45f92b3588bb36390b66c98bb6a90b76b95b75690b6558eb35387b25089b25b8eb4578ab355 *8eb4528db55691b45c90b2548bb25c8fb25889b35a8db45c8eb55c8fb55f91b5588fb56994b96a *97ba6791b95b8db65d8eb66795ba5b91b75f8fb56491b66991b67095b66a96b86995b76695b86a *91b56095b6588db55d8db6608db5558bb3568db3548cb54e88b24c86b64f8ab6558ab5588cb64c *86b25087b4588cb6528bb3538eb7518fb7538db4548cb65489b45c92b6528bb2538bb3588db74f *8bb6538bb64f89b44d8ab64f8bb5538bb55b8cb6578cb74e8cb84c8cb94b8bb5528cb65089b557 *91b64f8bb4548db75389b6568bb74b87b55791b84c87b4578cb64e8ab55890b75c91bb5e91bb53 *8bb6518db74f8fb9508cb45090b65391ba5a90b75992bb5890b65a92b86395bc5794bb5e97bc63 *98bc6097ba6c9cbc6495ba6496bb5b96bc659abe6296bd5892bc5c93bb5693bb6296bd6695bc69 *96be6197be699abd6295be5893b66496ba6497bd6699bc6598bb6b9cbd6799be6999bd6d97bd69 *9abd6d9bbd6e9bbb6d9ac06d9cc15996bd6099bf5f97bd6898bc6195bc649abe669bbd639abd60 *98bc6f99bf6798c06397bc669abc5e98bb619abc5e98bc6297bc689ac16097be6397be6699bf6b *9bbf699ebf669dc06ea0c36c9ebf6699bd6b99c0759fbf70a1c16e9dbf6d9cbe6c9cc1709dbf70 *a1c16ca0c175a3c174a1c46e9fc16d9dbe799fbf7aa2c182a4c580a4c77ca5c77ea6c686aac783 *a9c580a8c37ca6c181a7c480a5c175a0c170a2c270a0c070a0c26d9dbf649bbd6a9dbe6d9ebe6c *9dbf6399bf6799c06198bf679cc26899be639cc06da3c37aa4c17ea4c37aa6c77ca4c779a4c679 *a5c680a4c180a6c283a8c381a6c380a7c587a9c889aaca8daecb8aaec78eadc990b1ca8daec98e *b1ca96b2cc9ab1cc99b3ca98b3cd95b2ca8cb1c98eafc98aacc78cacc994b0cb96b1ca95b1cb95 *b0cb96b0c991b0c88dadc78eacc78aabc995abc993b0cc8daecb92b2cb96b3c896b4ca9bb6cb9d *b7cea0b6cc9fb6cba2bbd1a4b6cca5b7cca6bacca5bbcda6bbcea4bbcda5b6cda0b6cc9bb2cb96 *b1cb93aec897afc889abc68aaec989acc780a6c685a7c783a8c787abc986aec887aac680a9c77c *a8c67ea7c680a6c678a4c47aa7c777a7c781a8c77ea6c67da7c684a9c77da8c780aac97aa6c87f *a8c873a5c77da4c672a1c16ca3c16ba3c06ca1c16c9ec1629cc3649cc1729fc17ea4c572a1c16a *a1c270a2c36c9cc06a9bc16899c06d9fc474a2c26a9cc16a9cbd669dbe669dc0719fc26b9fc268 *9cc16599c06b9dbf6ca0c0639fbe6fa0c171a2c371a3c376a0c373a0c273a0c26ea0c377a4c46e *a1c37ca6c77ba3c67ba5c876a7c872a4c777a5c675a4c571a4c56ea4c678a6c579a5c775a6c678 *a4c673a4c76ba3c574a5c471a6c673a4c776a4c475a2c57ca4c678a5c773a4c870a4c677a5c772 *a4c67ca4c576a4c574a5c771a4c675a4c772a4c870a4c56ca2c475a4c674a2c56fa2c479a5c571 *a4c66ea4c673a2c66ea3c768a0c570a3c56ba2c575a2c672a3c56ea1c666a2c46fa2c56aa4c56c *a3c2649ec373a3c377a4c37aa3c36da3c671a3c36ba2c271a2c36c9fc16c9cc370a1c46c9fc373 *a4c470a0c173a2c374a3c56b9fc279a4c372a4c270a3c372a3c371a2c56ca0c270a3c36ea1c36c *a1c279a4c473a2c56b9fc474a3c674a3c572a5c875a6c873a5c779a4c676a6c876a7c780a9c876 *a5c973a4c776a8c873a7c97da7c879a9c972a4c67ba5c879a8c87fa9c976a4c679a8c76ea5c87e *a6c87ca9c97aa8c978a7c77aa8c97ba4c67aa6c97ea7c883abc97eaaca78a8c875a5c87eaac876 *a7c87ca8c779a7c975a6c77ea6c875a6c77ea9c977a9c97aa9c980aaca7da8c974a6c97ea7c87d *a9c87aa9c877a5c67da6c67ba9c67ea5c67da5c781a8c979a4c775a5c786a9c690acc8a0b6ccba *c9d8bfc9d9b8c8d8bdc9dac1cedac7cfddc7d1dec7d0dcc5cfddc2cdd9c1ccddbdc8d7bbc8dbbd *c9d9bfcad8bccad8bec9d8bcc7d6bec9d7bdc7d7c1cad8c3cbdcc6cddcc4cfdec8d1ddcad3e0c9 *d5e0ccd3e2ced5e2cfd6e4d1d7e4d0d8e6d4d9e3d2dde3d3dbe3d1dae2d3dce4d4d9e5d2dde6d4 *dbe5d3dde6d4dbe6d6dbe5d5dde7d4dde4d3d9e4d3dae3d2d9e5d3d8e5d3dae6d1d9e2d1d9e3d2 *dbe5d3dae5d2d9e3d2d8e5d3dbe6d5dce7d6dde6d5dbe6d4dbe3d3dbe5d3dbe6d4dae5d5dbe5d6 *dbe5d5dbe5d3dae5d2d8e5d1d9e3ced7e0cdd4e0cad2e1c9d1e1c4cfe1c6d2e2c9d1dfcbd3dece *d9e2d1dbe3d1dbe6d3dbe5d3dbe6d6dde5d6dee6d8dfe5d7dfe6d6e0e6d4dde5d1d9e5cfd6e4ca *d3e1c2cddec5d1dec8d4dfbdccddb1c6d9a6bdd3aabbd3b6c1d8becaddc2cddec6d3decbd3ddcc *d5dfcbd6e0c8d2dfc9d2dfced5e1ccd6e2cfd6e1caceced6dfe1dbe5e8dfe7eae0e8eadee7eb8c *a3be7a9cba779cb87095b46991b36e90b4668db15c8cae5c8bae628cae578aac5c87ae688ab162 *8bae5281aa5887aa5586ab5089ab5487ab5b85aa5681aa5985b15681ac4d7fac5180aa5585ab52 *87ac5284aa5180ac5b85b15e88ae5a87af5b8bb05f8bb1638db15b87af6689b1658cb25e8bb26b *8cb6648cb56590b86890b66894b6678eb6648ab5678db36c8eb67597bb7097b86b95b76391b570 *93b6678ab46c90b6678cb5618bb65f8bb4628eb7528bb65089b45487b3518ab6528ab85289b653 *86b44c86b54d89b7598cb75a92b9578cb75d8eb85788b75686b35b8ab65689b65589b64b85b255 *8ab75288b64f87b7548cb84f8ab5578bb9568eb7568ab65891bc5390b9568ab74d89b75a8dbb5c *88ba5188b65790b9528dbb4c8cb64e86b6548bb75a8ebb5b8ab7578ebb538fbb5191bc5391bb53 *8eb65088ba518dbb5791bb568bb7508bba558cba5893bc5f96bc5292bb5a90bb5e94bb6194be6e *98c26a97c06397bf6496be5e98be5f9cc1719cc36e9ac06f9ac1699abf6c98c06597c0659ac165 *97bf6f9bbe6b98be6a99c26d9bc36297c0649ac074a1c26c9dc26d9fc26a9ac17c9ec3749bc171 *9fc3699bc16b9bc16f9dc26f9ec36c9dc16b98bd5e94bd6797c06699bf6d9ac1639bc2689cc265 *9ac4689bc16c9dc2699bc16799c16498be5c95bf6295be629ac1669dc4699cc16096bf6999c06a *9bbf6799c06b9ac16f9dc46f9dc36d9dc376a0c5679cc16da0c1679ec16c9ac170a0c5689bc26c *9ac46c9dc46da0c27da4c676a2c26ea1c576a3c677a2c67ea4c878a4c670a2c47fa4c57da4c67e *a4c684a6c87ea5c67ca4c777a4c574a2c373a3c473a2c475a1c275a2c66f9cc46c9dc5689cc469 *9bc46a9dc4659dc36a9bc26599be6d9cc0669ac16a9cc27ea4c678a2c775a3c77aa5c781a7cb7e *a6c686a9c783aac988abcb82a9ca8baacd89aacb86aac98eaecd89aecc90aecb93b2ce99b6d199 *b5d398b3d2a3bad2a4b9d39cbad59db9d39fb7d297b1cc92adcc8baccd90b3d294b1cf96b0cb91 *b1cd93b0cc90aecb97b1cd8eacca8aadcc8cafcd99b6d19db6cf9db6d097b3cd9ab6d1a1b6d2a5 *b8d39dbad5a7bbd3a3bcd3a5bad5a5bed4aabdd3a8bbd5abbed6acc0d7a8bfd6a9bdd4a4b9d49c *b6ce9eb7cea1b9d19ab6d19bb2d194b3d097b4d08fb1cc8eb0cf8eaecc8eafce8eafce8eb0cf91 *b0d084abcf8bb0cf83abca83adcb85accc86adcd89aacd8cabcb8eafcf87abcb85a6c287adcc8a *adcb85aacb81aaca7ea5c779a6c97ca4c97aaaca76a5c97aa9c877a7cb77a3c77da6c97da6c970 *a4c775a5ca74a4c774a5c874a3c674a2c66ea0c677a4c772a3c776a2c66fa1c675a4c779a4c671 *a3c56ea4c775a2c77ba5c881a7c97ca7c878a5ca7eaace7aa7ca7ba7ca7ba6c982a8ca7fa7cb85 *aacb7ea9cd7fa9cc7daacc81adcf7caccc89abcd78a7c985abcb81aace82abce7aaacc74aacb7c *aacd80acce80a9cd79a9cc83a9ce7eacce7eaccf81adce75a6c97eabce7aaccf81aace83acd087 *a9ce7faace7faace7daace7ca9cd7ca9cd7fa9cc83aacf7ea9ce81abce7daace7faccd7eacce7d *aace83add07facd181aacf81a8cb82abcd7ba8cc79acce7eabcf7caace7daacc81aace80abce79 *a7ca80a8ca78a7cb80aacc7eabcc77a6cb7da7c97fa7ca7ba7ca79a7c97fa6c978a7c97ea9cb7e *aaca7da9cc75a7ca7da7cb7aa8cb80a6c980a7c982aacc7dabcb78a9cb81abcb7ca6c97ea9cb7c *a7ca7ca6cb7aa5c97da6ca7ba8ca77a9cb7aabcf80acce82aacf85acd086aed184acd17eadd184 *afd183aece86aed089b0d187afd387b0d185aed084aad188b1d17eadce7caece80abce80accc7f *aacf8aaed189afd182b0d38ab1d381aed284b1d281acce82accf8bb1d28db2d186b0d084aecf81 *add181afd08fb1d08bacd186aed282aed081acd083adce89b0d181acce83afd188add087acd08a *b0d283acd082adce84aecd87aecf85acce7facce87afcc86abcb7faacb88abcc82a7c891b1cf9d *b6d3aec5dbb7cbddbbcbdebfcddec6d0e0c9d1ddc7d1e1c7d1e2c6d1e3c6cee2c1ccdfc1ccdec4 *cedec5cfe0c6cee2c4cee0c0c9dec3d0dec4cfe1c4cfe0c8d1e1c9d3e1cad5e5ccd5e5cdd5e6cf *d7e7d2dcead2dde8d5dee8d7dfead8e0eadbe0eddae1ebdbe0ecdce1eed9e1ebdce3ecdde2eadc *e2ecdde2eadee3ecd8d9e6d8dee8dee3eddae2eddbe1edd9e1ecdbe1eadbe3eedadfebdbe1eadc *e0ebd9e0eadae0ebd9e0e9dce2ebdbe2ecdce3eddde2eddbe1ecdce2ecdde3f0dce4efdbe2ebdf *e2eedee3ecdee4eddbe2ebdce2ebdbe2edd7e0ecd7deead6ddead6dce8d1dbe8d1dbe8d4dde8d6 *dee9d8e2ecdae2eed8e3eedae2eedee5efdee5ebdee6eee2e6f1e0e6f0e0e7f1dde6f0dbe3eed6 *dee9cdd8e6ccd8e7d0d8e7cfd8e7c9d4e4c1cee2b6cae2b8c9ddc3cee0cbd8e5cfd9e7d2dbe7d6 *dde9d3d6e2d8dde9d4dce9d4dce7d0dbe7d3dee8d6dce7cdd4d4d9e0e4dfe5e9dfe6eddee7ece0 *e8ec newhex * rmfile ./GLUT/examples/RedBook/Data/leeds.bin rmdir ./GLUT/examples/RedBook/Data hunk ./GLUT/examples/RedBook/00-README 1 -This file lists the programs that are referenced in the OpenGL Programming -Guide, Fourth Edition, by chapter. For each program, the version of OpenGL -that is required is listed with the program. - -Chapter 1: Introduction to OpenGL - - Hello.hs (1.0) - Double.hs (1.0) - -Chapter 2: State Management and Drawing Geometric Objects - - Lines.hs (1.0) - Polys.hs (1.0) - VArray.hs (1.1) - MVArray.hs (1.4) - -Chapter 3: Viewing - - Cube.hs (1.0) - Model.hs (1.0) - Clip.hs (1.0) - Planet.hs (1.0) - Robot.hs (1.0) - UnProject.hs (1.1) - -Chapter 4: Color - - Smooth.hs (1.0) - -Chapter 5: Lighting - - Light.hs (1.0) - MoveLight.hs (1.0) - Material.hs (1.0) - ColorMat.hs (1.1) - Scene.hs (1.0) - -Chapter 6: Blending, Antialiasing, Fog, and Polygon Offset - - BlendEqn.hs (1.3 or ARB_imaging_subset) - Alpha.hs (1.0) - Alpha3D.hs (1.1) - AARGB.hs (1.1) - AAIndex.hs (1.1) - Multisamp.hs (1.3) - Fog.hs (1.0) - FogIndex.hs (1.0) - FogCoord.hs (1.4) - PointP.hs (1.4) - PolyOff.hs (1.1) - -Chapter 7: Display Lists - - Torus.hs (1.0) - DList.hs (1.0) - Stroke.hs (1.0) - -Chapter 8: Drawing Pixels, Bitmaps, Fonts, and Images - - DrawF.hs (1.0) - Font.hs (1.0) - Image.hs (1.1) - ColorTable.hs (ARB_imaging_subset) - Convolution.hs (ARB_imaging_subset) - ColorMatrix.hs (ARB_imaging_subset) - Histogram.hs (ARB_imaging_subset) - Minmax.hs (ARB_imaging_subset) - -Chapter 9: Texture Mapping - - Checker.hs (1.0) - TexSub.hs (1.1) - Texture3D.hs (1.2) - Mipmap.hs (1.0) - TexBind.hs (1.1) - TexGen.hs (1.1) - CubeMap.hs (1.3) - MultiTex.hs (1.3 or ARB_multitexture) - Combiner.hs (1.3) - ShadowMap.hs (1.4) - Wrap.hs (1.0) - TexProx.hs (1.1) - -Chapter 10: The Framebuffer - - Stencil.hs (1.0) - AccPersp.hs (1.0) - AccAnti.hs (1.0) - DOF.hs (1.0) - -Chapter 11: Tessellators and Quadrics - - Tess.hs (1.1) - TessWind.hs (1.1) - Quadric.hs (1.1) - -Chapter 12: Evaluators and NURBS - - BezCurve.hs (1.1) - BezSurf.hs (1.1) - BezMesh.hs (1.1) - TextureSurf.hs (1.1) - Surface.hs (1.1) - SurfPoints.hs (1.2) - Trim.hs (1.1) - -Chapter 13: Selection and Feedback - - Select.hs (1.1) - PickSquare.hs (1.0) - PickDepth.hs (1.0) - Feedback.hs (1.0) - -Chapter 14: Now That You Know - - - -Color Plates: - - Teapots.hs (1.1) - -Some remarks regarding the style of the programs: - -To ease comparisons, the Haskell programs in this directory try to stay as -close to the original examples in C as possible. Consequently, they should -not be considered as examples for the best way to implement things in -Haskell. - -The Haskell OpenGL binding uses overloading quite extensively, which makes -its use quite flexible, e.g.: - - class Vertex a where - vertex :: a -> IO () - vertexv :: Ptr a -> IO () - -This single class subsumes all 24 vertex specification calls in OpenGL's C -binding, i.e. glVertex{234}{sifd}[v](), with the help of the following -class and instances: - - class VertexComponent a -- an opaque class - - VertexComponent GLshort - VertexComponent GLint - VertexComponent GLfloat - VertexComponent GLdouble - - VertexComponent a => Vertex (Vertex2 a) - VertexComponent a => Vertex (Vertex3 a) - VertexComponent a => Vertex (Vertex4 a) - -There is a small inconvenience with this when used in "toy" programs: -Haskell's numeric literals are overloaded, too, so the programmer's help is -needed to disambiguate the type of expressions like: - - vertex (Vertex3 0 0 1) - -Let's assume we mean the equivalent of glVertex3f() here. One can either -use an explicitly typed helper function: - - let vertex3f = vertex :: Vertex3 GLfloat -> IO () - in vertex3f (Vertex3 0 0 1) - -This comes in handy when there are a lot of uses of vertex3f. An -alternative is to use a type annotation for the literal: - - vertex (Vertex3 0 0 (1 :: GLfloat)) - -or a type annotation for the vertex: - - vertex (Vertex3 0 0 1 :: Vertex3 GLfloat) - -This is largely a matter of taste and normally not a problem in "real" -programs with type signatures for functions. - -Sometimes different callbacks need to share some state, which is done via -global variables in the C examples. To achieve a unified presentation, all -Haskell examples use a `State' type for this purpose, which collects the -different parts of the global state, i.e. one or more IORefs. There are -alternatives for modeling this, which should be considered in own programs, -depending on the use cases: - - * Separate IORefs: This makes it explicit which parts of the program need - which parts of the state. - - * A single IORef/MVar containing all the state: This enables one to change - the whole state atomically, which is often quite handy in multithreaded - programs. - - * A custom monad: This can hide all the state threading behind the scenes. rmfile ./GLUT/examples/RedBook/00-README hunk ./GLUT/examples/RedBook/AAIndex.hs 1 -{- - AAIndex.hs (adapted from aaindex.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws shows how to draw anti-aliased lines in color index - mode. It draws two diagonal lines to form an X; when 'r' is typed in the - window, the lines are rotated in opposite directions. --} - -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { rotAngle :: IORef Int } - -makeState :: IO State -makeState = do - r <- newIORef 0 - return $ State { rotAngle = r } - -rampSize, ramp1Start, ramp2Start :: GLint -rampSize = 16 -ramp1Start = 32 -ramp2Start = 48 - --- Initialize antialiasing for color index mode, including loading a green color --- ramp starting at ramp1Start, and a blue color ramp starting at ramp2Start. --- The ramps must be a multiple of 16. -myInit :: IO () -myInit = do - flip mapM_ [ 0 .. rampSize - 1 ] $ \i -> do - let shade = fromIntegral i / fromIntegral rampSize - colorMapEntry (Index1 (ramp1Start + i)) $= Color3 0 shade 0 - colorMapEntry (Index1 (ramp2Start + i)) $= Color3 0 0 shade - - lineSmooth $= Enabled - hint LineSmooth $= DontCare - lineWidth $= 1.5 - - clearIndex $= Index1 (fromIntegral ramp1Start) - --- Draw 2 diagonal lines to form an X -display :: State -> DisplayCallback -display state = do - r <- get (rotAngle state) - clear [ ColorBuffer ] - - -- resolve overloading, not needed in "real" programs - let vertex2f = vertex :: Vertex2 GLfloat -> IO () - - index (Index1 ramp1Start) - preservingMatrix $ do - rotate (-(fromIntegral r :: GLfloat)) (Vector3 0 0 0.1) - renderPrimitive Lines $ do - vertex2f (Vertex2 (-0.5) 0.5) - vertex2f (Vertex2 0.5 (-0.5)) - - index (Index1 ramp2Start) - preservingMatrix $ do - rotate (fromIntegral r :: GLfloat) (Vector3 0 0 0.1) - renderPrimitive Lines $ do - vertex2f (Vertex2 0.5 0.5) - vertex2f (Vertex2 (-0.5) (-0.5)) - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D (-1) 1 (-1*hf/wf) (1*hf/wf) - else ortho2D (-1*wf/hf) (1*wf/hf) (-1) 1 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case toLower c of - 'r' -> do rotAngle state $~ ((`mod` 360) . (+ 30)); postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ = return () - --- Main Loop --- Open window with initial window size, title bar, --- color index display mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, IndexMode ] - initialWindowSize $= Size 200 200 - createWindow progName - state <- makeState - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - displayCallback $= display state - mainLoop rmfile ./GLUT/examples/RedBook/AAIndex.hs hunk ./GLUT/examples/RedBook/AARGB.hs 1 -{- - AARGB.hs (adapted from aargb.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws shows how to draw anti-aliased lines. It draws two - diagonal lines to form an X; when 'r' is typed in the window, the lines are - rotated in opposite directions. --} - -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { rotAngle :: IORef Int } - -makeState :: IO State -makeState = do - r <- newIORef 0 - return $ State { rotAngle = r } - --- Initialize antialiasing for RGBA mode, including alpha blending, hint, and --- line width. Print out implementation specific info on line width granularity --- and width. -myInit :: IO () -myInit = do - g <- get smoothLineWidthGranularity - putStrLn ("smoothLineWidthGranularity is " ++ show g) - - r <- get smoothLineWidthRange - putStrLn ("smoothLineWidthRange is " ++ show r) - - lineSmooth $= Enabled - - blend $= Enabled - blendFunc $= (SrcAlpha, OneMinusSrcAlpha) - hint LineSmooth $= DontCare - lineWidth $= 1.5 - - clearColor $= Color4 0 0 0 0 - --- Draw 2 diagonal lines to form an X -display :: State -> DisplayCallback -display state = do - r <- get (rotAngle state) - clear [ ColorBuffer ] - - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - vertex2f = vertex :: Vertex2 GLfloat -> IO () - - color3f (Color3 0 1 0) - preservingMatrix $ do - rotate (-(fromIntegral r :: GLfloat)) (Vector3 0 0 0.1) - renderPrimitive Lines $ do - vertex2f (Vertex2 (-0.5) 0.5) - vertex2f (Vertex2 0.5 (-0.5)) - - color3f (Color3 0 0 1) - preservingMatrix $ do - rotate (fromIntegral r :: GLfloat) (Vector3 0 0 0.1) - renderPrimitive Lines $ do - vertex2f (Vertex2 0.5 0.5) - vertex2f (Vertex2 (-0.5) (-0.5)) - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D (-1) 1 (-1*hf/wf) (1*hf/wf) - else ortho2D (-1*wf/hf) (1*wf/hf) (-1) 1 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case toLower c of - 'r' -> do rotAngle state $~ ((`mod` 360) . (+ 30)); postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ = return () - --- Main Loop --- Open window with initial window size, title bar, --- RGBA display mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 200 200 - createWindow progName - state <- makeState - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - displayCallback $= display state - mainLoop rmfile ./GLUT/examples/RedBook/AARGB.hs hunk ./GLUT/examples/RedBook/AccAnti.hs 1 -{- - AccAnti.hs (adapted from accanti.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Use the accumulation buffer to do full-scene antialiasing on a scene with - orthographic parallel projection. --} - -import Data.List ( genericLength ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- j8 contains values in the range -.5 < x < .5, -.5 < y < .5, and have a --- gaussian distribution around the origin. Use these to do model jittering for --- scene anti-aliasing and view volume jittering for depth of field effects. Use --- in conjunction with the accwindow routine. -j8 :: [Vector2 GLdouble] -j8 = [ - Vector2 (-0.334818) 0.435331 , - Vector2 0.286438 (-0.393495), - Vector2 0.459462 0.141540 , - Vector2 (-0.414498) (-0.192829), - Vector2 (-0.183790) 0.082102 , - Vector2 (-0.079263) (-0.317383), - Vector2 0.102254 0.299133 , - Vector2 0.164216 (-0.054399) ] - --- Initialize lighting and other values. -myInit :: IO () -myInit = do - materialAmbient Front $= Color4 1 1 1 1 - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 50 - position (Light 0) $= Vertex4 0 0 10 1 - lightModelAmbient $= Color4 0.2 0.2 0.2 1 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - shadeModel $= Flat - - clearColor $= Color4 0 0 0 0 - clearAccum $= Color4 0 0 0 0 - -displayObjects :: IO () -displayObjects = do - -- resolve overloading, not needed in "real" programs - let translatef = translate :: Vector3 GLfloat -> IO () - rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () - - preservingMatrix $ do - rotatef 30 (Vector3 1 0 0) - - preservingMatrix $ do - translatef (Vector3 (-0.80) 0.35 0) - rotatef 100 (Vector3 1 0 0) - materialDiffuse Front $= Color4 0.7 0.7 0 1 - renderObject Solid (Torus 0.275 0.85 16 16) - - preservingMatrix $ do - translatef (Vector3 (-0.75) (-0.50) 0) - rotatef 45 (Vector3 0 0 1) - rotatef 45 (Vector3 1 0 0) - materialDiffuse Front $= Color4 0 0.7 0.7 1 - renderObject Solid (Cube 1.5) - - preservingMatrix $ do - translatef (Vector3 0.75 0.60 0) - rotatef 30 (Vector3 1 0 0) - materialDiffuse Front $= Color4 0.7 0 0.7 1 - renderObject Solid (Sphere' 1 16 16) - - preservingMatrix $ do - translatef (Vector3 0.70 (-0.90) 0.25) - materialDiffuse Front $= Color4 0.7 0.4 0.4 1 - renderObject Solid Octahedron - --- display draws 5 teapots into the accumulation buffer several times; each time --- with a jittered perspective. The focal point is at z = 5.0, so the gold --- teapot will stay in focus. The amount of jitter is adjusted by the magnitude --- of the accPerspective jitter; in this example, 0.33. In this example, the --- teapots are drawn 8 times. -display :: DisplayCallback -display = do - (_, Size w h) <- get viewport - clear [ AccumBuffer ] - - flip mapM_ j8 $ \(Vector2 x y) -> do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - -- Note that 4.5 is the distance in world space between left and right - -- and bottom and top. This formula converts fractional pixel movement - -- to world coordinates. - translate (Vector3 (x*4.5/fromIntegral w) (y*4.5/fromIntegral h) 0) - displayObjects - accum Accum (recip (genericLength j8)) - - accum Return 1 - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-2.25) 2.25 (-2.25*hf/wf) (2.25*hf/wf) (-10) 10 - else ortho (-2.25*wf/hf) (2.25*wf/hf) (-2.25) 2.25 (-10) 10 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Be certain to request an accumulation buffer. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithAccumBuffer, WithDepthBuffer ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/AccAnti.hs hunk ./GLUT/examples/RedBook/AccPersp.hs 1 -{- - AccPersp.hs (adapted from accpersp.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Use the accumulation buffer to do full-scene antialiasing on a scene with - perspective projection, using the special routines accFrustum and - accPerspective. --} - -import Data.List ( genericLength ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- j8 contains values in the range -.5 < x < .5, -.5 < y < .5, and have a --- gaussian distribution around the origin. Use these to do model jittering for --- scene anti-aliasing and view volume jittering for depth of field effects. Use --- in conjunction with the accwindow routine. -j8 :: [Vector2 GLdouble] -j8 = [ - Vector2 (-0.334818) 0.435331 , - Vector2 0.286438 (-0.393495), - Vector2 0.459462 0.141540 , - Vector2 (-0.414498) (-0.192829), - Vector2 (-0.183790) 0.082102 , - Vector2 (-0.079263) (-0.317383), - Vector2 0.102254 0.299133 , - Vector2 0.164216 (-0.054399) ] - --- The first 6 arguments are identical to the frustum call. pixD is anti-alias --- jitter in pixels. Use (Vector2 0 0) for no anti-alias jitter. eyeD is --- depth-of field jitter in pixels. Use (Vector2 0 0) for no depth of field --- effects. focus is distance from eye to plane in focus. focus must be greater --- than, but not equal to 0. Note that accFrustum calls translate. You will --- probably want to insure that your ModelView matrix has been initialized to --- identity before calling accFrustum. -accFrustum :: GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble - -> Vector2 GLdouble -> Vector2 GLdouble -> GLdouble -> IO () -accFrustum left right bottom top zNear zFar - (Vector2 pixDx pixDy) (Vector2 eyeDx eyeDy) focus = do - (_, Size w h) <- get viewport - - let xWSize = right - left; - yWSize = top - bottom; - - dx = -(pixDx * xWSize / fromIntegral w + eyeDx * zNear / focus) - dy = -(pixDy * yWSize / fromIntegral h + eyeDy * zNear / focus) - - matrixMode $= Projection - loadIdentity - frustum (left + dx) (right + dx) (bottom + dy) (top + dy) zNear zFar - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 (-eyeDx) (-eyeDy) 0) - --- The first 4 arguments are identical to the perspective call. pixD is --- anti-alias jitter in pixels. Use (Vector2 0 0) for no anti-alias jitter. eyeD --- is depth-of field jitter in pixels. Use (Vector2 0 0) for no depth of field --- effects. focus is distance from eye to plane in focus. focus must be greater --- than, but not equal to 0. Note that accPerspective calls accFrustum. -accPerspective :: GLdouble -> GLdouble -> GLdouble -> GLdouble - -> Vector2 GLdouble -> Vector2 GLdouble -> GLdouble -> IO () -accPerspective fovY aspect zNear zFar pixD eyeD focus = do - let fov2 = ((fovY * pi) / 180) / 2 - - top = zNear / (cos fov2 / sin fov2) - bottom = -top - - right = top * aspect - left = -right - - accFrustum left right bottom top zNear zFar pixD eyeD focus - --- Initialize lighting and other values. -myInit :: IO () -myInit = do - materialAmbient Front $= Color4 1 1 1 1 - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 50 - position (Light 0) $= Vertex4 0 0 10 1 - lightModelAmbient $= Color4 0.2 0.2 0.2 1 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - shadeModel $= Flat - - clearColor $= Color4 0 0 0 0 - clearAccum $= Color4 0 0 0 0 - -displayObjects :: IO () -displayObjects = do - -- resolve overloading, not needed in "real" programs - let translatef = translate :: Vector3 GLfloat -> IO () - rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () - - preservingMatrix $ do - translatef (Vector3 0 0 (-5)) - rotatef 30 (Vector3 1 0 0) - - preservingMatrix $ do - translatef (Vector3 (-0.80) 0.35 0) - rotatef 100 (Vector3 1 0 0) - materialDiffuse Front $= Color4 0.7 0.7 0 1 - renderObject Solid (Torus 0.275 0.85 16 16) - - preservingMatrix $ do - translatef (Vector3 (-0.75) (-0.50) 0) - rotatef 45 (Vector3 0 0 1) - rotatef 45 (Vector3 1 0 0) - materialDiffuse Front $= Color4 0 0.7 0.7 1 - renderObject Solid (Cube 1.5) - - preservingMatrix $ do - translatef (Vector3 0.75 0.60 0) - rotatef 30 (Vector3 1 0 0) - materialDiffuse Front $= Color4 0.7 0 0.7 1 - renderObject Solid (Sphere' 1 16 16) - - preservingMatrix $ do - translatef (Vector3 0.70 (-0.90) 0.25) - materialDiffuse Front $= Color4 0.7 0.4 0.4 1 - renderObject Solid Octahedron - --- display draws 5 teapots into the accumulation buffer several times; each time --- with a jittered perspective. The focal point is at z = 5.0, so the gold --- teapot will stay in focus. The amount of jitter is adjusted by the magnitude --- of the accPerspective jitter; in this example, 0.33. In this example, the --- teapots are drawn 8 times. -display :: DisplayCallback -display = do - (_, Size w h) <- get viewport - clear [ AccumBuffer ] - - flip mapM_ j8 $ \(Vector2 x y) -> do - clear [ ColorBuffer, DepthBuffer ] - accPerspective 50 (fromIntegral w / fromIntegral h) 1 15 - (Vector2 x y) (Vector2 0 0) 1 - displayObjects - accum Accum (recip (genericLength j8)) - - accum Return 1 - flush - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Be certain you request an accumulation buffer. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithAccumBuffer, WithDepthBuffer ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/AccPersp.hs hunk ./GLUT/examples/RedBook/Alpha.hs 1 -{- - Alpha.hs (adapted from alpha.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws several overlapping filled polygons to demonstrate the - effect order has on alpha blending results. Use the 't' key to toggle the - order of drawing polygons. --} - -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { leftFirst :: IORef Bool } - -makeState :: IO State -makeState = do - l <- newIORef True - return $ State { leftFirst = l } - --- Initialize alpha blending function. -myInit :: IO () -myInit = do - blend $= Enabled - blendFunc $= (SrcAlpha, OneMinusSrcAlpha) - shadeModel $= Flat - clearColor $= Color4 0 0 0 0 - -drawLeftTriangle :: IO () -drawLeftTriangle = - -- draw yellow triangle on LHS of screen - renderPrimitive Triangles $ do - color (Color4 1 1 0 (0.75 :: GLfloat)) - vertex (Vertex3 0.1 0.9 (0 :: GLfloat)) - vertex (Vertex3 0.1 0.1 (0 :: GLfloat)) - vertex (Vertex3 0.7 0.5 (0 :: GLfloat)) - -drawRightTriangle :: IO () -drawRightTriangle = - -- draw cyan triangle on RHS of screen - renderPrimitive Triangles $ do - color (Color4 0 1 1 (0.75 :: GLfloat)) - vertex (Vertex3 0.9 0.9 (0 :: GLfloat)) - vertex (Vertex3 0.3 0.5 (0 :: GLfloat)) - vertex (Vertex3 0.9 0.1 (0 :: GLfloat)) - -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer ] - l <- get (leftFirst state) - if l - then do drawLeftTriangle; drawRightTriangle - else do drawRightTriangle; drawLeftTriangle - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D 0 1 0 (hf/wf) - else ortho2D 0 (wf/hf) 0 1 - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case toLower c of - 't' -> do leftFirst state $~ not; postRedisplay Nothing - '\27' -> exitWith ExitSuccess -- Escape key - _ -> return () -keyboard _ _ _ _ _ = return () - --- Main Loop --- Open window with initial window size, title bar, RGBA display mode, and --- handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 200 200 - createWindow progName - state <- makeState - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - displayCallback $= display state - mainLoop rmfile ./GLUT/examples/RedBook/Alpha.hs hunk ./GLUT/examples/RedBook/Alpha3D.hs 1 -{- - Alpha3D.hs (adapted from alpha3D.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates how to intermix opaque and alpha blended polygons - in the same scene, by using depthMask. Press the 'a' key to animate moving - the transparent object through the opaque object. Press the 'r' key to reset - the scene. --} - -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -maxZ, minZ, zInc :: GLfloat -maxZ = 8 -minZ = -8 -zInc = 0.4 - --- We don't animate via the idle callback, because this is way too fast on --- modern computers. A timer with the delay below is used instead for redraw. -delay :: Timeout -delay = 100 - -data State = State { solidZ, transparentZ :: IORef GLfloat } - -makeState :: IO State -makeState = do - s <- newIORef maxZ - t <- newIORef minZ - return $ State { solidZ = s, transparentZ = t } - -data DisplayLists = DisplayLists { sphereList, cubeList :: DisplayList } - -myInit :: IO DisplayLists -myInit = do - materialSpecular Front $= Color4 1 1 1 0.15 - materialShininess Front $= 100 - position (Light 0) $= Vertex4 0.5 0.5 1 0 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - - s <- defineNewList Compile $ renderObject Solid (Sphere' 0.4 16 16) - c <- defineNewList Compile $ renderObject Solid (Cube 0.6) - return $ DisplayLists { sphereList = s, cubeList = c } - -display :: State -> DisplayLists -> DisplayCallback -display state displayLists = do - clear [ ColorBuffer, DepthBuffer ] - - preservingMatrix $ do - s <- get (solidZ state) - translate (Vector3 (-0.15) (-0.15) s) - materialEmission Front $= Color4 0 0 0 1 - materialDiffuse Front $= Color4 0.75 0.75 0 1 - callList (sphereList displayLists) - - preservingMatrix $ do - t <- get (transparentZ state) - translate (Vector3 (0.15) (0.15) t) - rotate (15 :: GLfloat) (Vector3 1 1 0) - rotate (30 :: GLfloat) (Vector3 0 1 0) - materialEmission Front $= Color4 0 0.3 0.3 0.6 - materialDiffuse Front $= Color4 0 0.8 0.8 0.6 - blend $= Enabled - depthMask $= Disabled - blendFunc $= (SrcAlpha, One) - callList (cubeList displayLists) - depthMask $= Enabled - blend $= Disabled - - swapBuffers - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-1.5) 1.5 (-1.5*hf/wf) (1.5*hf/wf) (-10) 10 - else ortho (-1.5*wf/hf) (1.5*wf/hf) (-1.5) 1.5 (-10) 10 - matrixMode $= Modelview 0 - loadIdentity - -animate :: State -> TimerCallback -animate state = do - s <- get (solidZ state) - t <- get (transparentZ state) - if (s <= minZ || t >= maxZ) - then idleCallback $= Nothing - else do - solidZ state $~ (+ (- zInc)) - transparentZ state $~ (+ zInc) - addTimerCallback delay (animate state) - postRedisplay Nothing - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case toLower c of - 'a' -> do solidZ state $= maxZ; transparentZ state $= minZ; addTimerCallback delay (animate state) - 'r' -> do solidZ state $= maxZ; transparentZ state $= minZ; postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - -- The original C example uses single buffering, which flickers a lot. - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - createWindow progName - state <- makeState - displayLists <- myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - displayCallback $= display state displayLists - mainLoop rmfile ./GLUT/examples/RedBook/Alpha3D.hs hunk ./GLUT/examples/RedBook/BezCurve.hs 1 -{- - BezCurve.hs (adapted from bezcurve.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program uses evaluators to draw a Bezier curve. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -ctrlPoints :: [Vertex3 GLfloat] -ctrlPoints = [ Vertex3 (-4)(-4) 0, Vertex3 (-2) 4 0, - Vertex3 2 (-4) 0, Vertex3 4 4 0 ] - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - m <- newMap1 (0, 1) ctrlPoints - map1 $= Just (m :: GLmap1 Vertex3 GLfloat) - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 1 1 1) - renderPrimitive LineStrip $ - mapM_ evalCoord1 [ i/30.0 :: GLfloat | i <- [0..30] ] - -- The following code displays the control points as dots. - pointSize $= 5 - color3f (Color3 1 1 0) - renderPrimitive Points $ - mapM_ vertex ctrlPoints - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-5.0) 5.0 (-5.0*hf/wf) (5.0*hf/wf) (-5.0) 5.0 - else ortho (-5.0*wf/hf) (5.0*wf/hf) (-5.0) 5.0 (-5.0) 5.0 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/BezCurve.hs hunk ./GLUT/examples/RedBook/BezMesh.hs 1 -{- - BezMesh.hs (adapted from bezmesh.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program renders a lighted, filled Bezier surface, using two-dimensional - evaluators. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Data.List ( transpose ) -import Graphics.UI.GLUT - -ctrlPoints :: [[Vertex3 GLfloat]] -ctrlPoints = [ - [ Vertex3 (-1.5) (-1.5) 4.0, Vertex3 (-0.5) (-1.5) 2.0, - Vertex3 0.5 (-1.5) (-1.0), Vertex3 1.5 (-1.5) 2.0 ], - [ Vertex3 (-1.5) (-0.5) 1.0, Vertex3 (-0.5) (-0.5) 3.0, - Vertex3 0.5 (-0.5) 0.0, Vertex3 1.5 (-0.5) (-1.0) ], - [ Vertex3 (-1.5) 0.5 4.0, Vertex3 (-0.5) 0.5 0.0, - Vertex3 0.5 0.5 3.0, Vertex3 1.5 0.5 4.0 ], - [ Vertex3 (-1.5) 1.5 (-2.0), Vertex3 (-0.5) 1.5 (-2.0), - Vertex3 0.5 1.5 0.0, Vertex3 1.5 1.5 (-1.0) ]] - -initlights :: IO () -initlights = do - lighting $= Enabled - light (Light 0) $= Enabled - - ambient (Light 0) $= Color4 0.2 0.2 0.2 1.0 - position (Light 0) $= Vertex4 0 0 2 1 - - materialDiffuse Front $= Color4 0.6 0.6 0.6 1.0 - materialSpecular Front $= Color4 1.0 1.0 1.0 1.0 - materialShininess Front $= 50 - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - rotate (85 :: GLfloat) (Vector3 1 1 1) - evalMesh2 Fill (0, 20) (0, 20) - flush - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - depthFunc $= Just Less - m <- newMap2 (0, 1) (0, 1) (transpose ctrlPoints) - map2 $= Just (m :: GLmap2 Vertex3 GLfloat) - autoNormal $= Enabled - mapGrid2 $= ((20, (0, 1)), (20, (0, 1 :: GLfloat))) - initlights -- for lighted version only - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-4.0) 4.0 (-4.0*hf/wf) (4.0*hf/wf) (-4.0) 4.0 - else ortho (-4.0*wf/hf) (4.0*wf/hf) (-4.0) 4.0 (-4.0) 4.0 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/BezMesh.hs hunk ./GLUT/examples/RedBook/BezSurf.hs 1 -{- - BezSurf.hs (adapted from bezsurf.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program renders a wireframe Bezier surface, using two-dimensional - evaluators. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -ctrlPoints :: [[Vertex3 GLfloat]] -ctrlPoints = [ - [ Vertex3 (-1.5) (-1.5) 4.0, Vertex3 (-0.5) (-1.5) 2.0, - Vertex3 0.5 (-1.5) (-1.0), Vertex3 1.5 (-1.5) 2.0 ], - [ Vertex3 (-1.5) (-0.5) 1.0, Vertex3 (-0.5) (-0.5) 3.0, - Vertex3 0.5 (-0.5) 0.0, Vertex3 1.5 (-0.5) (-1.0) ], - [ Vertex3 (-1.5) 0.5 4.0, Vertex3 (-0.5) 0.5 0.0, - Vertex3 0.5 0.5 3.0, Vertex3 1.5 0.5 4.0 ], - [ Vertex3 (-1.5) 1.5 (-2.0), Vertex3 (-0.5) 1.5 (-2.0), - Vertex3 0.5 1.5 0.0, Vertex3 1.5 1.5 (-1.0) ]] - --- Hey mom, look, it's C! ;-) -for :: GLfloat -> GLfloat -> (GLfloat -> IO ()) -> IO () -for s e f = mapM_ f [ i | i <- [ s, if s <= e then s + 1 else s - 1 .. e ] ] - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - color (Color3 1 1 1 :: Color3 GLfloat) - preservingMatrix $ do - rotate (85 :: GLfloat) (Vector3 1 1 1) - for 0 8 $ \j -> do - renderPrimitive LineStrip $ do - for 0 30 $ \i -> evalCoord2 (i/30, j/ 8) - renderPrimitive LineStrip $ do - for 0 30 $ \i -> evalCoord2 (j/ 8, i/30) - flush - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - m <- newMap2 (0, 1) (0, 1) ctrlPoints - map2 $= Just (m :: GLmap2 Vertex3 GLfloat) - mapGrid2 $= ((20, (0, 1)), (20, (0, 1 :: GLfloat))) - depthFunc $= Just Less - shadeModel $= Flat - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-4.0) 4.0 (-4.0*hf/wf) (4.0*hf/wf) (-4.0) 4.0 - else ortho (-4.0*wf/hf) (4.0*wf/hf) (-4.0) 4.0 (-4.0) 4.0 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/BezSurf.hs hunk ./GLUT/examples/RedBook/BlendEqn.hs 1 -{- - BlendEqn.hs (adapted from blendeqn.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Demonstrate the different blending functions available with the OpenGL - imaging subset. This program demonstrates use of blendEquation. - - The following keys change the selected blend equation function: - - 'a' -> FuncAdd - 's' -> FuncSubtract - 'r' -> FuncReverseSubtract - 'm' -> Min - 'x' -> Max --} - -import Data.Char ( toLower ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - clearColor $= Color4 1 1 0 0 - blendFunc $= (One, One) - blend $= Enabled - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - - color (Color3 0 0 (1 :: GLfloat)) - rect (Vertex2 (-0.5) (-0.5)) (Vertex2 0.5 (0.5 :: GLfloat)) - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - let aspect = fromIntegral w / fromIntegral h - - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - if aspect < 1 - then let aspect' = recip aspect - in ortho (-aspect') aspect' (-1) 1 (-1) 1 - else ortho (-1) 1 (-aspect) aspect (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char c) Down _ _ = case toLower c of - -- Colors are added as: (0, 0, 1) + (1, 1, 0) = (1, 1, 1) - -- which will produce a white square on a yellow background. - 'a' -> setBlendEquation FuncAdd - - -- Colors are subtracted as: (0, 0, 1) - (1, 1, 0) = (-1, -1, 1) - -- which is clamped to (0, 0, 1), producing a blue square on a - -- yellow background - 's' -> setBlendEquation FuncSubtract - - -- Colors are subtracted as: (1, 1, 0) - (0, 0, 1) = (1, 1, -1) - -- which is clamed to (1, 1, 0). This produces yellow for both - -- the square and the background. - 'r' -> setBlendEquation FuncReverseSubtract - - -- The minimum of each component is computed, as - -- [min(0, 1), min(0, 1), min(1, 0)] which equates to (0, 0, 0). - -- This will produce a black square on the yellow background. - 'm' -> setBlendEquation Min - - -- The minimum of each component is computed, as - -- [max(0, 1), max(0, 1), max(1, 0)] which equates to (1, 1, 1) - -- This will produce a white square on the yellow background. - 'x' -> setBlendEquation Max - - '\27' -> exitWith ExitSuccess - _ -> return () - where setBlendEquation e = do - blendEquation $= e - postRedisplay Nothing -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 512 512 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display - mainLoop rmfile ./GLUT/examples/RedBook/BlendEqn.hs hunk ./GLUT/examples/RedBook/Checker.hs 1 -{- - Checker.hs (adapted from checker.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program texture maps a checkerboard image onto two rectangles. - - Texture objects are only used when GL_EXT_texture_object is supported. --} - -import Control.Monad ( when ) -import Data.Maybe ( isJust, listToMaybe ) -import Data.Bits ( (.&.) ) -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Create checkerboard image -checkImageSize :: TextureSize2D -checkImageSize = TextureSize2D 64 64 - -withCheckImage :: TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) - -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () -withCheckImage (TextureSize2D w h) n f act = - withArray [ f c | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ], - let c | (i .&. n) == (j .&. n) = 0 - | otherwise = 255 ] $ - act. PixelData RGBA UnsignedByte - -myInit :: IO (Maybe TextureObject) -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - depthFunc $= Just Less - rowAlignment Unpack $= 1 - - exts <- get glExtensions - mbTexName <- if "GL_EXT_texture_object" `elem` exts - then fmap listToMaybe $ genObjectNames 1 - else return Nothing - when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName - - textureWrapMode Texture2D S $= (Repeated, Repeat) - textureWrapMode Texture2D T $= (Repeated, Repeat) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - withCheckImage checkImageSize 0x8 (\c -> Color4 c c c 255) $ - texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 - return mbTexName - -display :: Maybe TextureObject -> DisplayCallback -display mbTexName = do - clear [ ColorBuffer, DepthBuffer ] - texture Texture2D $= Enabled - textureFunction $= Decal - when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName - - -- resolve overloading, not needed in "real" programs - let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - renderPrimitive Quads $ do - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 (-2.0) (-1.0) 0.0 ) - texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 (-2.0) 1.0 0.0 ) - texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 0.0 1.0 0.0 ) - texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 0.0 (-1.0) 0.0 ) - - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 1.0 (-1.0) 0.0 ) - texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 1.0 1.0 0.0 ) - texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 2.41421 1.0 (-1.41421)) - texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 2.41421 (-1.0) (-1.41421)) - flush - texture Texture2D $= Disabled - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 60 (fromIntegral w / fromIntegral h) 1 30 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-3.6 :: GLfloat)) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - mbTexName <- myInit - displayCallback $= display mbTexName - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Checker.hs hunk ./GLUT/examples/RedBook/Clip.hs 1 -{- - Clip.hs (adapted from clip.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates arbitrary clipping planes. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - translatef = translate :: Vector3 GLfloat -> IO () - rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () - color3f (Color3 1 1 1) - - preservingMatrix $ do - translatef (Vector3 0 0 (-5)) - - -- clip lower half -- y < 0 - clipPlane (ClipPlaneName 0) $= Just (Plane 0 1 0 0) - -- clip left half -- x < 0 - clipPlane (ClipPlaneName 1) $= Just (Plane 1 0 0 0) - - rotatef 90 (Vector3 1 0 0) - renderObject Wireframe (Sphere' 1 20 16) - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 60 (fromIntegral w / fromIntegral h) 1 20 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Clip.hs hunk ./GLUT/examples/RedBook/ColorMat.hs 1 -{- - Light.hs (adapted from light.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - After initialization, the program will be in ColorMaterial mode. - Interaction: pressing the mouse buttons will change the diffuse - reflection values. --} - -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { r, g, b :: IORef GLfloat } - -diffuseMaterial :: State -> IO (Color4 GLfloat) -diffuseMaterial state = do - r' <- get (r state) - g' <- get (g state) - b' <- get (b state) - return $ Color4 r' g' b' 1 - -makeState :: IO State -makeState = do - r' <- newIORef 0.5 - g' <- newIORef 0.5 - b' <- newIORef 0.5 - return $ State { r = r', g = g', b = b' } - --- Initialize material property, light source, lighting model, --- and depth buffer. -myInit :: State -> IO () -myInit state = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Smooth - depthFunc $= Just Less - dm <- diffuseMaterial state - materialDiffuse Front $= dm - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 25 - position (Light 0) $= Vertex4 1 1 1 0 - lighting $= Enabled - light (Light 0) $= Enabled - colorMaterial $= Just (Front, Diffuse) - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - renderObject Solid (Sphere' 1 20 16) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-1.5) 1.5 (-1.5 * hf/wf) (1.5 * hf/wf) (-10) 10 - else ortho (-1.5 * wf/hf) (1.5 * wf/hf) (-1.5) 1.5 (-10) 10 - matrixMode $= Modelview 0 - loadIdentity - -keyboardMouse :: State -> KeyboardMouseCallback -keyboardMouse state (MouseButton button) Down _ _ = case button of - LeftButton -> update r - MiddleButton -> update g - RightButton -> update b - _ -> return () - where update component = do - component state $~ inc - dm <- diffuseMaterial state - color dm - postRedisplay Nothing - inc x = let s = x + 0.1 in if s > 1 then 0 else s -keyboardMouse _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboardMouse _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - myInit state - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboardMouse state) - mainLoop rmfile ./GLUT/examples/RedBook/ColorMat.hs hunk ./GLUT/examples/RedBook/ColorMatrix.hs 1 -{- - ColorMatrix.hs (adapted from colormatrix.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program uses the color matrix to exchange the color channels of an image. - - Red -> Green - Green -> Blue - Blue -> Red --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT -import ReadImage - -myInit :: IO () -myInit = do - m <- newMatrix ColumnMajor [ 0, 1, 0, 0, - 0, 0, 1, 0, - 1, 0, 0, 0, - 0, 0, 0, 1 ] - rowAlignment Unpack $= 1 - clearColor $= Color4 0 0 0 0 - matrixMode $= Color - matrix Nothing $= (m :: GLmatrix GLfloat) - matrixMode $= Modelview 0 - -display :: Size -> PixelData a -> DisplayCallback -display size pixels = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - rasterPos2i (Vertex2 1 1) - drawPixels size pixels - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, args) <- getArgsAndInitialize - (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= size - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display size pixels - mainLoop rmfile ./GLUT/examples/RedBook/ColorMatrix.hs hunk ./GLUT/examples/RedBook/ColorTable.hs 1 -{- - ColorTable.hs (adapted from colortable.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Invert a passed block of pixels. This program illustrates the use of the - colorTable function. --} - -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT -import ReadImage - -myInit :: IO () -myInit = do - rowAlignment Unpack $= 1 - clearColor $= Color4 0 0 0 0 - -- Set up an inverse color table - let tableSize = 256 - t = fromIntegral (tableSize - 1) :: GLubyte - withArray [ Color3 i i i | i <- [ t, t - 1 .. 0 ] ] $ \buf -> - colorTable NoProxy ColorTable RGB' tableSize (PixelData RGB UnsignedByte buf) - colorTableStage ColorTableStage $= Enabled - -display :: Size -> PixelData a -> DisplayCallback -display size pixels = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - rasterPos2i (Vertex2 1 1) - drawPixels size pixels - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, args) <- getArgsAndInitialize - (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= size - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display size pixels - mainLoop rmfile ./GLUT/examples/RedBook/ColorTable.hs hunk ./GLUT/examples/RedBook/Combiner.hs 1 -{- - Combiner.hs (adapted from combiner.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program renders a variety of quads showing different effects of - texture combiner functions. - - The first row renders an untextured polygon (so you can compare the - fragment colors) and then the 2 textures. - - The second row shows several different combiner functions on a single - texture: replace, modulate, add, add-signed, and subtract. - - The third row shows the interpolate combiner function on a single texture - with a constant color/alpha value, varying the amount of interpolation. - - The fourth row uses multitexturing with two textures and different - combiner functions. - - The fifth row are some combiner experiments: using the scaling factor and - reversing the order of subtraction for a combination function. --} - -import Data.Bits ( (.&.) ) -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Create checkerboard image -imageSize :: TextureSize2D -imageSize = TextureSize2D 8 8 - -makeImage :: TextureSize2D -> (GLsizei -> GLsizei -> Color4 GLubyte) - -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () -makeImage (TextureSize2D w h) f act = - withArray [ f i j | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ] ] $ - act . PixelData RGBA UnsignedByte - -myInit :: IO (TextureObject, TextureObject, DisplayList) -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Smooth - - rowAlignment Unpack $= 1 - - [texName0, texName1] <- genObjectNames 2 - - textureBinding Texture2D $= Just texName0 - textureWrapMode Texture2D S $= (Repeated, Repeat) - textureWrapMode Texture2D T $= (Repeated, Repeat) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - -- horiz b & w stripes - makeImage imageSize (\i _ -> let c = if i .&. 2 == 0 then 255 else 0 in Color4 c c c 255) $ - texImage2D Nothing NoProxy 0 RGBA' imageSize 0 - - textureBinding Texture2D $= Just texName1 - textureWrapMode Texture2D S $= (Repeated, Repeat) - textureWrapMode Texture2D T $= (Repeated, Repeat) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - textureFunction $= Decal - -- wider vertical 50% cyan and black stripes - makeImage imageSize (\_ j -> let c = if j .&. 4 /= 0 then 128 else 0 in Color4 0 c c 255) $ - texImage2D Nothing NoProxy 0 RGBA' imageSize 0 - - -- smooth-shaded polygon with multiple texture coordinates - let vert :: TexCoord2 GLfloat -> Color3 GLfloat -> Vertex3 GLfloat -> IO () - vert t c v = do - multiTexCoord (TextureUnit 0) t - multiTexCoord (TextureUnit 1) t - color c - vertex v - - dl <- defineNewList Compile $ - renderPrimitive Quads $ do - vert (TexCoord2 0 0) (Color3 0.5 1 0.25) (Vertex3 0 0 0) - vert (TexCoord2 0 2) (Color3 1 1 1 ) (Vertex3 0 1 0) - vert (TexCoord2 2 2) (Color3 1 1 1 ) (Vertex3 1 1 0) - vert (TexCoord2 2 0) (Color3 1 0.5 0.25) (Vertex3 1 0 0) - - return (texName0, texName1, dl) - -display :: (TextureObject, TextureObject, DisplayList) -> DisplayCallback -display (texName0, texName1, dl) = do - clear [ ColorBuffer ] - - let drawAt :: GLfloat -> GLfloat -> IO () - drawAt x y = preservingMatrix $ do - translate (Vector3 x y 0) - callList dl - - -- untextured polygon -- see the "fragment" colors - texture Texture2D $= Disabled - drawAt 0 5 - - texture Texture2D $= Enabled - -- draw ordinary textured polys; 1 texture unit; combine mode disabled - textureFunction $= Modulate - textureBinding Texture2D $= Just texName0 - drawAt 1 5 - - textureBinding Texture2D $= Just texName1 - drawAt 2 5 - - -- different combine modes enabled; 1 texture unit - -- defaults are: - -- argRGB Arg0 $= Arg SrcColor CurrentUnit - -- argRGB Arg1 $= Arg SrcColor Previous - - textureBinding Texture2D $= Just texName0 - textureFunction $= Combine - combineRGB $= Replace' - argRGB Arg0 $= Arg SrcColor CurrentUnit - drawAt 1 4 - - combineRGB $= Modulate' - argRGB Arg1 $= Arg SrcColor Previous - drawAt 2 4 - - combineRGB $= AddUnsigned' - drawAt 3 4 - - combineRGB $= AddSigned - drawAt 4 4 - - combineRGB $= Subtract - drawAt 5 4 - - -- interpolate combine with constant color; 1 texture unit - -- use different alpha values for constant color - -- defaults are: - -- argRGB Arg0 $= Arg SrcColor CurrentUnit - -- argRGB Arg1 $= Arg SrcColor Previous - -- argRGB Arg2 $= Arg SrcAlpha Constant - - constantColor $= Color4 0 0 0 0.2 - textureBinding Texture2D $= Just texName0 - textureFunction $= Combine - combineRGB $= Interpolate - argRGB Arg0 $= Arg SrcColor CurrentUnit - argRGB Arg1 $= Arg SrcColor Previous - argRGB Arg2 $= Arg SrcAlpha Constant - drawAt 1 3 - - constantColor $= Color4 0 0 0 0.4 - drawAt 2 3 - - constantColor $= Color4 0 0 0 0.6 - drawAt 3 3 - - constantColor $= Color4 0 0 0 0.8 - drawAt 4 3 - - -- combine textures 0 & 1 - -- defaults are: - -- argRGB Arg0 $= Arg SrcColor CurrentUnit - -- argRGB Arg1 $= Arg SrcColor Previous - - activeTexture $= TextureUnit 0 - texture Texture2D $= Enabled - textureBinding Texture2D $= Just texName0 - textureFunction $= Modulate - - activeTexture $= TextureUnit 1 - texture Texture2D $= Enabled - textureBinding Texture2D $= Just texName1 - textureFunction $= Combine - combineRGB $= Replace' - drawAt 1 2 - - -- try different combiner modes of texture unit 1 - combineRGB $= Modulate' - drawAt 2 2 - - combineRGB $= AddUnsigned' - drawAt 3 2 - - combineRGB $= AddSigned - drawAt 4 2 - - combineRGB $= Subtract - drawAt 5 2 - - -- some experiments - - -- see the effect of rgbScale - rgbScale $= 2 - combineRGB $= Replace' - drawAt 1 1 - - combineRGB $= Modulate' - drawAt 2 1 - rgbScale $= 1 - - -- reverse the order of subtraction Arg1-Arg0 - - textureFunction $= Combine - combineRGB $= Subtract - argRGB Arg0 $= Arg SrcColor Previous - argRGB Arg1 $= Arg SrcColor CurrentUnit - drawAt 5 1 - - activeTexture $= TextureUnit 1 -- deactivate multitexturing - texture Texture2D $= Disabled - activeTexture $= TextureUnit 0 -- activate single texture unit - - flush - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 7 0 7 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 400 400 - initialWindowPosition $= Position 100 100 - createWindow progName - texNamesAndDL <- myInit - displayCallback $= display texNamesAndDL - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Combiner.hs hunk ./GLUT/examples/RedBook/Convolution.hs 1 -{- - Convolution.hs (adapted from convolution.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Use various 2D convolutions filters to find edges in an image. --} - -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT -import ReadImage - -data Filter = Filter String [GLfloat] - -filterTable :: [(Key,Filter)] -filterTable = [ - (Char 'h', Filter "horizontal" [ 0, -1, 0, - 0, 1, 0, - 0, 0, 0 ]), - - (Char 'v', Filter "vertical" [ 0, 0, 0, - -1, 1, 0, - 0, 0, 0 ]), - - (Char 'l', Filter "laplacian" [ -0.125, -0.125, -0.125, - -0.125, 1.0 , -0.125, - -0.125, -0.125, -0.125 ])] - -setFilter :: Filter -> IO () -setFilter (Filter filterName filterData) = do - putStrLn ("Using the " ++ filterName ++ " filter") - withArray filterData $ \buf -> - convolutionFilter2D Luminance' (Size 3 3) (PixelData Luminance Float buf) - -myInit :: IO () -myInit = do - rowAlignment Unpack $= 1 - clearColor $= Color4 0 0 0 0 - setFilter (snd (head filterTable)) - convolution Convolution2D $= Enabled - -display :: Size -> PixelData a -> DisplayCallback -display size pixels = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - rasterPos2i (Vertex2 1 1) - drawPixels size pixels - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard key Down _ _ = - maybe (return ()) - (\f -> do setFilter f; postRedisplay Nothing) - (lookup key filterTable) -keyboard _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, args) <- getArgsAndInitialize - (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) - initialDisplayMode $= [ SingleBuffered, RGBAMode ] - initialWindowSize $= size - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display size pixels - mainLoop rmfile ./GLUT/examples/RedBook/Convolution.hs hunk ./GLUT/examples/RedBook/Cube.hs 1 -{- - Cube.hs (adapted from cube.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates a single modeling transformation, scale and a - single viewing transformation, lookAt. A wireframe cube is rendered. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () - color3f (Color3 1 1 1) - loadIdentity -- clear the matrix - -- viewing transformation - lookAt (Vertex3 0 0 5) (Vertex3 0 0 0) (Vector3 0 1 0) - scalef 1 2 1 -- modeling transformation - renderObject Wireframe (Cube 1) - flush - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - frustum (-1) 1 (-1) 1 1.5 20 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Cube.hs hunk ./GLUT/examples/RedBook/CubeMap.hs 1 -{- - CubeMap.hs (adapted from CubeMap.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates cube map textures. Six different colored checker - board textures are created and applied to a lit sphere. - - Pressing the 'f' and 'b' keys translate the viewer forward and backward. --} - -import Data.Bits ( (.&.) ) -import Data.IORef ( IORef, newIORef ) -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { zTrans :: IORef GLfloat } - -makeState :: IO State -makeState = do - z <- newIORef 0 - return $ State { zTrans = z } - -imageSize :: TextureSize2D -imageSize = TextureSize2D 4 4 - -withCheckImage :: TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) - -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () -withCheckImage (TextureSize2D w h) n f act = - withArray [ f c | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ], - let c | (i .&. n) == (j .&. n) = 0 - | otherwise = 255 ] $ - act. PixelData RGBA UnsignedByte - -makeImage :: CubeMapTarget -> (GLubyte -> (Color4 GLubyte)) -> IO () -makeImage target f = - withCheckImage imageSize 0x1 f $ - texImage2D (Just target) NoProxy 0 RGBA' imageSize 0 - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - depthFunc $= Just Less - shadeModel $= Smooth - - rowAlignment Unpack $= 1 - textureWrapMode TextureCubeMap S $= (Repeated, Repeat) - textureWrapMode TextureCubeMap T $= (Repeated, Repeat) - textureWrapMode TextureCubeMap R $= (Repeated, Repeat) - textureFilter TextureCubeMap $= ((Nearest, Nothing), Nearest) - - makeImage TextureCubeMapPositiveX (\c -> Color4 c c c 255) - makeImage TextureCubeMapNegativeX (\c -> Color4 0 c c 255) - makeImage TextureCubeMapPositiveY (\c -> Color4 c c 0 255) - makeImage TextureCubeMapNegativeY (\c -> Color4 255 c c 255) - makeImage TextureCubeMapPositiveZ (\c -> Color4 c 0 c 255) - makeImage TextureCubeMapNegativeZ (\c -> Color4 c c 255 255) - - textureGenMode S $= Just NormalMap - textureGenMode T $= Just NormalMap - textureGenMode R $= Just NormalMap - - textureFunction $= Modulate - - texture TextureCubeMap $= Enabled - lighting $= Enabled - light (Light 0) $= Enabled - autoNormal $= Enabled - normalize $= Enabled - materialDiffuse Front $= Color4 1 1 1 1 - -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - z <- get (zTrans state) - translate (Vector3 0 0 z) - renderObject Solid (Sphere' 5 20 10) - swapBuffers - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 40 (fromIntegral w / fromIntegral h) 1 300 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-20 :: GLfloat)) - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char 'f') Down _ _ = move state (-0.2) -keyboard state (Char 'b') Down _ _ = move state 0.2 -keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ _ = return () - -move :: State -> GLfloat -> IO () -move state inc = do - zTrans state $~ (+ inc) - postRedisplay Nothing - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 400 400 - initialWindowPosition $= Position 50 50 - createWindow progName - state <- makeState - myInit - displayCallback $= display state - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - mainLoop rmfile ./GLUT/examples/RedBook/CubeMap.hs hunk ./GLUT/examples/RedBook/DList.hs 1 -{- - DList.hs (adapted from list.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates how to make and execute a - display list. Note that attributes, such as current - color and matrix, are changed. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO DisplayList -myInit = do - [listName] <- genObjectNames 1 - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - vertex2f = vertex :: Vertex2 GLfloat -> IO () - translatef = translate :: Vector3 GLfloat -> IO () - defineList listName Compile $ do - color3f (Color3 1 0 0) -- current color red - renderPrimitive Triangles $ do - vertex2f (Vertex2 0 0) - vertex2f (Vertex2 1 0) - vertex2f (Vertex2 0 1) - translatef (Vector3 1.5 0.0 0.0) -- move position - shadeModel $= Flat - return listName - -drawLine :: IO () -drawLine = do - -- resolve overloading, not needed in "real" programs - let vertex2f = vertex :: Vertex2 GLfloat -> IO () - renderPrimitive Lines $ do - vertex2f (Vertex2 0.0 0.5) - vertex2f (Vertex2 15.0 0.5) - -display :: DisplayList -> DisplayCallback -display listName = do - -- NOTE: The following 'loadIdentity' is missing in the original - -- example, but without it the translatef calls accumulate and - -- the graphics wander out of the window after a few redraws... - loadIdentity - - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 0 1 0) -- current color green - sequence_ (replicate 10 (callList listName)) -- draw 10 triangles - drawLine -- is this line green? NO! - -- where is the line drawn? - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D 0.0 2.0 (-0.5*hf/wf) (1.5*hf/wf) - else ortho2D 0.0 (2.0*wf/hf) (-0.5) 1.5 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Open window with initial window size, title bar, --- RGBA display mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 650 50 - createWindow progName - listName <- myInit - reshapeCallback $= Just reshape - displayCallback $= display listName - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/DList.hs hunk ./GLUT/examples/RedBook/DOF.hs 1 -{- - DOF.hs (adapted from dof.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates use of the accumulation buffer to create an - out-of-focus depth-of-field effect. The teapots are drawn several times into - the accumulation buffer. The viewing volume is jittered, except at the focal - point, where the viewing volume is at the same position, each time. In this - case, the gold teapot remains in focus. --} - -import Data.List ( genericLength ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- j8 contains values in the range -.5 < x < .5, -.5 < y < .5, and have a --- gaussian distribution around the origin. Use these to do model jittering for --- scene anti-aliasing and view volume jittering for depth of field effects. Use --- in conjunction with the accwindow routine. -j8 :: [Vector2 GLdouble] -j8 = [ - Vector2 (-0.334818) 0.435331 , - Vector2 0.286438 (-0.393495), - Vector2 0.459462 0.141540 , - Vector2 (-0.414498) (-0.192829), - Vector2 (-0.183790) 0.082102 , - Vector2 (-0.079263) (-0.317383), - Vector2 0.102254 0.299133 , - Vector2 0.164216 (-0.054399) ] - --- The first 6 arguments are identical to the frustum call. pixD is anti-alias --- jitter in pixels. Use (Vector2 0 0) for no anti-alias jitter. eyeD is --- depth-of field jitter in pixels. Use (Vector2 0 0) for no depth of field --- effects. focus is distance from eye to plane in focus. focus must be greater --- than, but not equal to 0. Note that accFrustum calls translate. You will --- probably want to insure that your ModelView matrix has been initialized to --- identity before calling accFrustum. -accFrustum :: GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble -> GLdouble - -> Vector2 GLdouble -> Vector2 GLdouble -> GLdouble -> IO () -accFrustum left right bottom top zNear zFar - (Vector2 pixDx pixDy) (Vector2 eyeDx eyeDy) focus = do - (_, Size w h) <- get viewport - - let xWSize = right - left; - yWSize = top - bottom; - - dx = -(pixDx * xWSize / fromIntegral w + eyeDx * zNear / focus) - dy = -(pixDy * yWSize / fromIntegral h + eyeDy * zNear / focus) - - matrixMode $= Projection - loadIdentity - frustum (left + dx) (right + dx) (bottom + dy) (top + dy) zNear zFar - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 (-eyeDx) (-eyeDy) 0) - --- The first 4 arguments are identical to the perspective call. pixD is --- anti-alias jitter in pixels. Use (Vector2 0 0) for no anti-alias jitter. eyeD --- is depth-of field jitter in pixels. Use (Vector2 0 0) for no depth of field --- effects. focus is distance from eye to plane in focus. focus must be greater --- than, but not equal to 0. Note that accPerspective calls accFrustum. -accPerspective :: GLdouble -> GLdouble -> GLdouble -> GLdouble - -> Vector2 GLdouble -> Vector2 GLdouble -> GLdouble -> IO () -accPerspective fovY aspect zNear zFar pixD eyeD focus = do - let fov2 = ((fovY * pi) / 180) / 2 - - top = zNear / (cos fov2 / sin fov2) - bottom = -top - - right = top * aspect - left = -right - - accFrustum left right bottom top zNear zFar pixD eyeD focus - -myInit :: IO DisplayList -myInit = do - ambient (Light 0) $= Color4 0 0 0 1 - diffuse (Light 0) $= Color4 1 1 1 1 - position (Light 0) $= Vertex4 0 3 3 0 - - lightModelAmbient $= Color4 0.2 0.2 0.2 1 - lightModelLocalViewer $= Disabled - - frontFace $= CW - lighting $= Enabled - light (Light 0) $= Enabled - autoNormal $= Enabled - normalize $= Enabled - depthFunc $= Just Less - - clearColor $= Color4 0 0 0 0 - clearAccum $= Color4 0 0 0 0 - -- make teapot display list - defineNewList Compile $ - renderObject Solid (Teapot 0.5) - --- Move object into position, specify the material properties, draw a teapot. -renderTeapot :: DisplayList -> Vector3 GLfloat -> Color4 GLfloat - -> Color4 GLfloat -> Color4 GLfloat -> GLfloat -> IO () -renderTeapot teapotList pos amb dif spec shine = - preservingMatrix $ do - translate pos - materialAmbient Front $= amb - materialDiffuse Front $= dif - materialSpecular Front $= spec - materialShininess Front $= shine * 128 - callList teapotList - --- display draws 5 teapots into the accumulation buffer several times; each time --- with a jittered perspective. The focal point is at z = 5.0, so the gold --- teapot will stay in focus. The amount of jitter is adjusted by the magnitude --- of the accPerspective jitter; in this example, 0.33. In this example, the --- teapots are drawn 8 times. -display :: DisplayList -> DisplayCallback -display teapotList = do - (_, Size w h) <- get viewport - clear [ AccumBuffer ] - - flip mapM_ j8 $ \(Vector2 x y) -> do - clear [ ColorBuffer, DepthBuffer ] - accPerspective 45 (fromIntegral w / fromIntegral h) 1 15 - (Vector2 0 0) (Vector2 (0.33 * x) (0.33 * y)) 5 - - -- ruby, gold, silver, emerald, and cyan teapots - renderTeapot teapotList - (Vector3 (-1.1) (-0.5) (-4.5)) - (Color4 0.1745 0.01175 0.01175 1) - (Color4 0.61424 0.04136 0.04136 1) - (Color4 0.727811 0.626959 0.626959 1) - 0.6 - renderTeapot teapotList - (Vector3 (-0.5) (-0.5) (-5.0)) - (Color4 0.24725 0.1995 0.0745 1) - (Color4 0.75164 0.60648 0.22648 1) - (Color4 0.628281 0.555802 0.366065 1) - 0.4 - renderTeapot teapotList - (Vector3 0.2 (-0.5) (-5.5)) - (Color4 0.19225 0.19225 0.19225 1) - (Color4 0.50754 0.50754 0.50754 1) - (Color4 0.508273 0.508273 0.508273 1) - 0.4 - renderTeapot teapotList - (Vector3 1.0 (-0.5) (-6.0)) - (Color4 0.0215 0.1745 0.0215 1) - (Color4 0.07568 0.61424 0.07568 1) - (Color4 0.633 0.727811 0.633 1) - 0.6 - renderTeapot teapotList - (Vector3 1.8 (-0.5) (-6.5)) - (Color4 0.0 0.1 0.06 1) - (Color4 0.0 0.50980392 0.50980392 1) - (Color4 0.50196078 0.50196078 0.50196078 1) - 0.25 - accum Accum (recip (genericLength j8)) - - accum Return 1 - flush - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Be certain you request an accumulation buffer. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithAccumBuffer, WithDepthBuffer ] - initialWindowSize $= Size 400 400 - initialWindowPosition $= Position 100 100 - createWindow progName - teapotList <- myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display teapotList - mainLoop rmfile ./GLUT/examples/RedBook/DOF.hs hunk ./GLUT/examples/RedBook/Double.hs 1 -{- - Double.hs (adapted from double.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This is a simple double buffered program. - Pressing the left mouse button rotates the rectangle. - Pressing the middle mouse button stops the rotation. --} - -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { spin :: IORef GLfloat } - -makeState :: IO State -makeState = do - s <- newIORef 0 - return $ State { spin = s } - -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer ] - preservingMatrix $ do - s <- get (spin state) - rotate s (Vector3 0 0 1) - color (Color3 1 1 1 :: Color3 GLfloat) - rect (Vertex2 (-25) (-25)) (Vertex2 25 25 :: Vertex2 GLfloat) - swapBuffers - -spinDisplay :: State -> IdleCallback -spinDisplay state = do - let wrap n s = if s > n then s - n else s - spin state $~ (wrap 360 . (+ 2)) - postRedisplay Nothing - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho (-50) 50 (-50) 50 (-1) 1 - matrixMode $= Modelview 0 - loadIdentity - -keyboardMouse :: State -> KeyboardMouseCallback -keyboardMouse state (MouseButton b) Down _ _ = - idleCallback $= case b of - LeftButton -> Just (spinDisplay state) - _ -> Nothing --- ESC not handled in the original example, but useful nevertheless -keyboardMouse _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboardMouse _ _ _ _ _ = return () - --- Request double buffer display mode. --- Register mouse input callback functions -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - myInit - displayCallback $= display state - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboardMouse state) - mainLoop rmfile ./GLUT/examples/RedBook/Double.hs hunk ./GLUT/examples/RedBook/DrawF.hs 1 -{- - DrawF.hs (adapted from drawf.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Draws the bitmapped letter F on the screen (several times). - This demonstrates use of the bitmap call. --} - -import Foreign ( Ptr, newArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO (Ptr GLubyte) -myInit = do - rowAlignment Unpack $= 1 - clearColor $= Color4 0 0 0 0 - newArray [ - 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, - 0xff, 0x00, 0xff, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, - 0xff, 0xc0, 0xff, 0xc0 ] - -display :: Ptr GLubyte -> DisplayCallback -display rasters = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - color3f (Color3 1 1 1) - rasterPos2i (Vertex2 20 20) - sequence_ $ replicate 3 $ - bitmap (Size 10 12) (Vertex2 0 0) (Vector2 11 0) rasters - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop --- Open window with initial window size, title bar, --- RGBA display mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 100 100 - initialWindowPosition $= Position 100 100 - createWindow progName - rasters <- myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display rasters - mainLoop rmfile ./GLUT/examples/RedBook/DrawF.hs hunk ./GLUT/examples/RedBook/Feedback.hs 1 -{- - Feedback.hs (adapted from feedback.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates use of OpenGL feedback. First, a lighting - environment is set up and a few lines are drawn. Then feedback mode is - entered, and the same lines are drawn. The results in the feedback buffer are - printed. --} - -import Control.Monad ( when ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Initialize lighting. -myInit :: IO () -myInit = do - lighting $= Enabled - light (Light 0) $= Enabled - --- Draw a few lines and two points, one of which will be clipped. If in feedback --- mode, a passthrough token is issued between each primitive -drawGeometry :: IO () -drawGeometry = do - mode <- get renderMode - -- resolve overloading, not needed in "real" programs - let normal3f = normal :: Normal3 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - renderPrimitive LineStrip $ do - normal3f (Normal3 0 0 1) - vertex3f (Vertex3 30 30 0) - vertex3f (Vertex3 50 60 0) - vertex3f (Vertex3 70 40 0) - when (mode == Feedback) $ - passThrough (PassThroughValue 1) - renderPrimitive Points $ - vertex3f (Vertex3 (-100) (-100) (-100)) -- will be clipped - when (mode == Feedback) $ - passThrough (PassThroughValue 2) - renderPrimitive Points $ do - normal3f (Normal3 0 0 1) - vertex3f (Vertex3 50 50 0) - flush -- not in original example - -printBuffer :: Maybe [FeedbackToken] -> IO () -printBuffer = maybe (putStrLn "feedback buffer overflow") (mapM_ print) - -display :: DisplayCallback -display = do - matrixMode $= Projection - loadIdentity - ortho 0 100 0 100 0 1 - - clearColor $= Color4 0 0 0 0 - clear [ ColorBuffer ] - drawGeometry - - (_, tokens) <- getFeedbackTokens 1024 ThreeDColor drawGeometry - printBuffer tokens - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 100 100 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Feedback.hs hunk ./GLUT/examples/RedBook/Fog.hs 1 -{- - Fog.hs (adapted from fog.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws 5 red spheres, each at a different z distance from the - eye, in different types of fog. Pressing the f key chooses between 3 types - of fog: exponential, exponential squared, and linear. In this program, there - is a fixed density value, as well as fixed start and end values for the - linear fog. --} - -import Data.Char ( toLower ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - depthFunc $= Just Less - - position (Light 0) $= Vertex4 0.5 0.5 3.0 0.0 - lighting $= Enabled - light (Light 0) $= Enabled - - -- NOTE: The alpha values are missing from fog.c! - materialAmbient Front $= Color4 0.1745 0.01175 0.01175 1.0 - materialDiffuse Front $= Color4 0.61424 0.04136 0.04136 1.0 - materialSpecular Front $= Color4 0.727811 0.626959 0.626959 1.0 - materialShininess Front $= 0.6 * 128 - - fog $= Enabled - let c = Color4 0.5 0.5 0.5 1.0 - fogMode $= Exp 0.35 - fogColor $= c - hint Fog $= DontCare - clearColor $= c - -renderSpehere :: Vector3 GLfloat -> IO () -renderSpehere xyz = - preservingMatrix $ do - translate xyz - renderObject Solid (Sphere' 0.4 16 16) - --- display draws 5 spheres at different z positions. -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - mapM_ renderSpehere [ Vector3 x (-0.5) (-3 - x) | x <- [-2 .. 2] ] - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-2.5) 2.5 (-2.5*hf/wf) (2.5*hf/wf) (-10.0) 10.0 - else ortho (-2.5*wf/hf) (2.5*wf/hf) (-2.5) 2.5 (-10.0) 10.0 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char c) Down _ _ = case toLower c of - 'f' -> do - mode <- get fogMode - case mode of - Linear _ _ -> do fogMode $= Exp 0.35; putStrLn "Fog mode is Exp" - Exp _ -> do fogMode $= Exp2 0.35; putStrLn "Fog mode is Exp2" - Exp2 _ -> do fogMode $= Linear 1 5; putStrLn "Fog mode is Linear" - postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, depth buffer, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display - mainLoop rmfile ./GLUT/examples/RedBook/Fog.hs hunk ./GLUT/examples/RedBook/FogCoord.hs 1 -{- - FogCoord.hs (adapted from fogcoord.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates the use of explicit fog coordinates. You can press - the keyboard and change the fog coordinate value at any vertex. You can also - switch between using explicit fog coordinates and the default fog generation - mode. - - Pressing the 'f' and 'b' keys move the viewer forward and backwards. Pressing - 'c' initiates the default fog generation. Pressing capital 'C' restores - explicit fog coordinates. Pressing '1', '2', '3', '8', '9', and '0' add or - subtract from the fog coordinate values at one of the three vertices of the - triangle. --} - -import Control.Monad ( when ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { f1, f2, f3 :: IORef (FogCoord1 GLfloat) } - -makeState :: IO State -makeState = do - f1' <- newIORef (FogCoord1 1) - f2' <- newIORef (FogCoord1 5) - f3' <- newIORef (FogCoord1 10) - return $ State { f1 = f1', f2 = f2', f3 = f3' } - --- Initialize fog -myInit :: IO () -myInit = do - let theFogColor = Color4 0 0.25 0.25 1 - fog $= Enabled - fogMode $= Exp 0.25 - fogColor $= theFogColor - hint Fog $= DontCare - fogCoordSrc $= FogCoord - clearColor $= theFogColor - -drawTriangle :: State -> (State -> IORef (FogCoord1 GLfloat)) -> Vertex3 GLfloat -> IO () -drawTriangle state f v = do - fc <- get (f state) - fogCoord fc - vertex v - --- display draws a triangle at an angle. -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer ] - - color (Color3 1 0.75 (0 :: GLfloat)) - renderPrimitive Triangles $ do - drawTriangle state f1 (Vertex3 2 (-2) 0 ) - drawTriangle state f2 (Vertex3 (-2) 0 (-5)) - drawTriangle state f3 (Vertex3 0 2 (-10)) - - swapBuffers - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 45 1 0.25 25 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-5 :: GLfloat)) - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case c of - 'c' -> setSrc FragmentDepth - 'C' -> setSrc FogCoord - '1' -> inc f1 0.25 - '2' -> inc f2 0.25 - '3' -> inc f3 0.25 - '8' -> inc f1 (-0.25) - '9' -> inc f2 (-0.25) - '0' -> inc f3 (-0.25) - 'b' -> trans (-0.25) - 'f' -> trans 0.25 - '\27' -> exitWith ExitSuccess - _ -> return () - where setSrc :: FogCoordSrc -> IO () - setSrc s = do - fogCoordSrc $= s - postRedisplay Nothing - - inc :: (State -> IORef (FogCoord1 GLfloat)) -> GLfloat -> IO () - inc f x = do - FogCoord1 oldValue <- get (f state) - let newValue = oldValue + x - when (newValue > 0) $ do - f state $= FogCoord1 newValue - postRedisplay Nothing - - trans :: GLfloat -> IO () - trans x = do - matrixMode $= Modelview 0 - translate (Vector3 0 0 x) - postRedisplay Nothing -keyboard _ _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - createWindow progName - state <- makeState - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - displayCallback $= display state - mainLoop - - rmfile ./GLUT/examples/RedBook/FogCoord.hs hunk ./GLUT/examples/RedBook/FogIndex.hs 1 -{- - FogIndex.hs (adapted from fogindex.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws 5 wireframe spheres, each at a different z distance from - the eye, in linear fog. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Initialize color map and fog. Set screen clear color to end of color ramp. -numColors, rampStart :: GLint -numColors = 32 -rampStart = 16 - -myInit :: IO () -myInit = do - depthFunc $= Just Less - - flip mapM_ [ 0 .. numColors - 1 ] $ \i -> do - let shade = fromIntegral (numColors - i) / fromIntegral numColors - colorMapEntry (Index1 (rampStart + i)) $= Color3 shade shade shade - fog $= Enabled - - fogMode $= Linear 1 6 - fogIndex $= Index1 numColors - hint Fog $= Nicest - clearIndex $= Index1 (fromIntegral (numColors + rampStart - 1)) - -renderSpehere :: Vector3 GLfloat -> IO () -renderSpehere xyz = - preservingMatrix $ do - translate xyz - renderObject Wireframe (Sphere' 0.4 16 16) - --- display draws 5 spheres at different z positions. -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - index (Index1 rampStart) - mapM_ renderSpehere [ Vector3 x (-0.5) (-3 - x) | x <- [-2 .. 2] ] - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-2.5) 2.5 (-2.5*hf/wf) (2.5*hf/wf) (-10.0) 10.0 - else ortho (-2.5*wf/hf) (2.5*wf/hf) (-2.5) 2.5 (-10.0) 10.0 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, color index --- display mode, depth buffer, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, IndexMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display - mainLoop rmfile ./GLUT/examples/RedBook/FogIndex.hs hunk ./GLUT/examples/RedBook/Font.hs 1 -{- - Font.hs (adapted from font.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Draws some text in a bitmapped font. Uses bitmap and other pixel routines. - Also demonstrates use of display lists. --} - -import Control.Monad ( zipWithM_ ) -import Data.List ( genericDrop, genericLength ) -import Foreign.C.String ( castCharToCChar ) -import Foreign.Marshal.Array ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -space :: [GLubyte] -space = [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 ] - -letters :: [[GLubyte]] -letters = [ - [ 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18 ], - [ 0x00, 0x00, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe ], - [ 0x00, 0x00, 0x7e, 0xe7, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e ], - [ 0x00, 0x00, 0xfc, 0xce, 0xc7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc7, 0xce, 0xfc ], - [ 0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xff ], - [ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xff ], - [ 0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e ], - [ 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3 ], - [ 0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e ], - [ 0x00, 0x00, 0x7c, 0xee, 0xc6, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06 ], - [ 0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0xcc, 0xc6, 0xc3 ], - [ 0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0 ], - [ 0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xff, 0xff, 0xe7, 0xc3 ], - [ 0x00, 0x00, 0xc7, 0xc7, 0xcf, 0xcf, 0xdf, 0xdb, 0xfb, 0xf3, 0xf3, 0xe3, 0xe3 ], - [ 0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0x7e ], - [ 0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe ], - [ 0x00, 0x00, 0x3f, 0x6e, 0xdf, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c ], - [ 0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe ], - [ 0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0x7e, 0xe0, 0xc0, 0xc0, 0xe7, 0x7e ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff ], - [ 0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3 ], - [ 0x00, 0x00, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3 ], - [ 0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3 ], - [ 0x00, 0x00, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3 ], - [ 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3 ], - [ 0x00, 0x00, 0xff, 0xc0, 0xc0, 0x60, 0x30, 0x7e, 0x0c, 0x06, 0x03, 0x03, 0xff ]] - -charToGLubyte :: Char -> GLubyte -charToGLubyte = fromIntegral . castCharToCChar - -makeRasterFont :: IO DisplayList -makeRasterFont = do - rowAlignment Unpack $= 1 - - fontDisplayLists@(fontOffset:_) <- genObjectNames 128 - let listsStartingWith ch = genericDrop (charToGLubyte ch) fontDisplayLists - makeLetter dl letter = - defineList dl Compile $ - withArray letter $ - bitmap (Size 8 13) (Vertex2 0 2) (Vector2 10 0) - - zipWithM_ makeLetter (listsStartingWith 'A') letters - makeLetter (head (listsStartingWith ' ')) space - return fontOffset - -myInit :: IO DisplayList -myInit = do - shadeModel $= Flat - makeRasterFont - -printString :: DisplayList -> String -> IO () -printString fontOffset s = - preservingAttrib [ ListAttributes ] $ do - listBase $= fontOffset - withArray (map charToGLubyte s) $ - callLists (genericLength s) UnsignedByte - --- Everything above this line could be in a library --- that defines a font. To make it work, you've got --- to call makeRasterFont before you start making --- calls to printString. -display :: DisplayList -> DisplayCallback -display fontOffset = do - let white = Color3 1 1 1 - - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - color3f white - - rasterPos2i (Vertex2 20 60) - printString fontOffset "THE QUICK BROWN FOX JUMPS" - rasterPos2i (Vertex2 20 40) - printString fontOffset "OVER A LAZY DOG" - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop --- Open window with initial window size, title bar, --- RGBA display mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 300 100 - initialWindowPosition $= Position 100 100 - createWindow progName - fontOffset <- myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display fontOffset - mainLoop rmfile ./GLUT/examples/RedBook/Font.hs hunk ./GLUT/examples/RedBook/Hello.hs 1 -{- - Hello.hs (adapted from hello.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This is a simple, introductory OpenGL program. --} - -import Graphics.UI.GLUT - -display :: DisplayCallback -display = do - -- clear all pixels - clear [ ColorBuffer ] - - -- draw white polygon (rectangle) with corners at - -- (0.25, 0.25, 0.0) and (0.75, 0.75, 0.0) - color (Color3 1.0 1.0 (1.0 :: GLfloat)) - -- resolve overloading, not needed in "real" programs - let vertex3f = vertex :: Vertex3 GLfloat -> IO () - renderPrimitive Polygon $ mapM_ vertex3f [ - Vertex3 0.25 0.25 0.0, - Vertex3 0.75 0.25 0.0, - Vertex3 0.75 0.75 0.0, - Vertex3 0.25 0.75 0.0] - - -- don't wait! - -- start processing buffered OpenGL routines - flush - -myInit :: IO () -myInit = do - -- select clearing color - clearColor $= Color4 0 0 0 0 - - -- initialize viewing values - matrixMode $= Projection - loadIdentity - ortho 0 1 0 1 (-1) 1 - --- Declare initial window size, position, and display mode (single buffer and --- RGBA). Open window with "hello" in its title bar. Call initialization --- routines. Register callback function to display graphics. Enter main loop and --- process events. -main :: IO () -main = do - getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow "hello" - myInit - displayCallback $= display - mainLoop rmfile ./GLUT/examples/RedBook/Hello.hs hunk ./GLUT/examples/RedBook/Histogram.hs 1 -{- - Histogram.hs (adapted from histogram.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Compute the histogram of the image. This program illustrates the use of - the histogram function. --} - -import Control.Monad ( zipWithM_ ) -import Foreign ( allocaArray, peekArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT -import ReadImage - -histogramSize :: Int -histogramSize = 256 -- Must be a power of 2 - -myInit :: IO () -myInit = do - rowAlignment Unpack $= 1 - clearColor $= Color4 0 0 0 0 - - histogram NoProxy $= Just (fromIntegral histogramSize, RGB', PassThrough) - -display :: Size -> PixelData a -> DisplayCallback -display size pixels = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - rasterPos2i (Vertex2 1 1) - drawPixels size pixels - - values <- allocaArray histogramSize $ \buf -> do - -- Note: The example in the Red Book uses GL_UNSIGNED_SHORT here, - -- but we are more honest by using Short... - getHistogram Reset (PixelData RGB Short buf) - peekArray histogramSize buf - - -- Plot histogram - zipWithM_ (plotHistogram values) - [ Color3 1 0 0, Color3 0 1 0, Color3 0 0 1 ] - [\(Color3 r _ _) -> r, \(Color3 _ g _) -> g, \(Color3 _ _ b) -> b ] - flush - -plotHistogram :: - [Color3 GLshort] -> Color3 GLfloat -> (Color3 GLshort -> GLshort) -> IO () -plotHistogram values c selectComponent = - renderPrimitive LineStrip $ do - color c - zipWithM_ (\i h -> vertex (Vertex2 i (selectComponent h))) [ 0 .. ] values - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho 0 (fromIntegral histogramSize) 0 10000 (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char 's') Down _ _ = do - Just (width, format, sink) <- get (histogram NoProxy) - let newSink = if sink == Sink then PassThrough else Sink - histogram NoProxy $= Just (width, format, newSink) - postRedisplay Nothing -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, args) <- getArgsAndInitialize - (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= size - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display size pixels - mainLoop rmfile ./GLUT/examples/RedBook/Histogram.hs hunk ./GLUT/examples/RedBook/Image.hs 1 -{- - Image.hs (adapted from image.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates drawing pixels and shows the effect of - drawPixels, copyPixels, and pixelZoom. - - Interaction: moving the mouse while pressing the mouse button will copy - the image in the lower-left corner of the window to the mouse position, - using the current pixel zoom factors. There is no attempt to prevent you - from drawing over the original image. If you press the 'r' key, the - original image and zoom factors are reset. If you press the 'z' or 'Z' - keys, you change the zoom factors. --} - -import Data.Bits ( (.&.) ) -import Data.IORef ( IORef, newIORef ) -import Foreign ( newArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { zoomFactor :: IORef GLfloat } - -makeState :: IO State -makeState = do - z <- newIORef 1 - return $ State { zoomFactor = z } - --- Create checkerboard image -checkImageSize :: Size -checkImageSize = Size 64 64 - -type Image = PixelData (Color3 GLubyte) - -makeCheckImage :: Size -> GLsizei -> (GLubyte -> (Color3 GLubyte)) -> IO Image -makeCheckImage (Size w h) n f = - fmap (PixelData RGB UnsignedByte) $ - newArray [ f c | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ], - let c | (i .&. n) == (j .&. n) = 0 - | otherwise = 255 ] - -myInit :: IO Image -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - rowAlignment Unpack $= 1 - makeCheckImage checkImageSize 0x8 (\c -> Color3 c c c) - -display :: Image -> DisplayCallback -display pixelData = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - rasterPos2i (Vertex2 0 0) - drawPixels checkImageSize pixelData - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 (fromIntegral w) 0 (fromIntegral h) - matrixMode $= Modelview 0 - loadIdentity - -motion :: State -> MotionCallback -motion state (Position x y) = do - Size _ height <- get windowSize - let screenY = height - y - -- resolve overloading, not needed in "real" programs - let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - rasterPos2i (Vertex2 x screenY) - z <- get (zoomFactor state) - pixelZoom $= (z, z) - copyPixels (Position 0 0) checkImageSize CopyColor - pixelZoom $= (1, 1) - flush - -resetZoomFactor :: State -> IO () -resetZoomFactor state = do - zoomFactor state $= 1.0 - postRedisplay Nothing - putStrLn "zoomFactor reset to 1.0" - -incZoomFactor :: State -> GLfloat -> IO () -incZoomFactor state inc = do - zoomFactor state $~! (max 0.5 . min 3.0 . (+ inc)) - get (zoomFactor state) >>= putStrLn . ("zoomFactor is now " ++) . show - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char 'r') Down _ _ = resetZoomFactor state -keyboard state (Char 'R') Down _ _ = resetZoomFactor state -keyboard state (Char 'z') Down _ _ = incZoomFactor state 0.5 -keyboard state (Char 'Z') Down _ _ = incZoomFactor state (-0.5) -keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - checkImage <- myInit - displayCallback $= display checkImage - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - motionCallback $= Just (motion state) - mainLoop rmfile ./GLUT/examples/RedBook/Image.hs hunk ./GLUT/examples/RedBook/Light.hs 1 -{- - Light.hs (adapted from light.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates the use of the OpenGL lighting model. A sphere - is drawn using a grey material characteristic. A single light source - illuminates the object. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Smooth - - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 50 - position (Light 0) $= Vertex4 1 1 1 0 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - renderObject Solid (Sphere' 1 20 16) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-1.5) 1.5 (-1.5 * hf/wf) (1.5 * hf/wf) (-10) 10 - else ortho (-1.5 * wf/hf) (1.5 * wf/hf) (-1.5) 1.5 (-10) 10 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Light.hs hunk ./GLUT/examples/RedBook/Lines.hs 1 -{- - Lines.hs (adapted from lines.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates geometric primitives and their attributes. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -drawOneLine :: Vertex2 GLfloat -> Vertex2 GLfloat -> IO () -drawOneLine p1 p2 = renderPrimitive Lines $ do vertex p1; vertex p2 - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - -- select white for all lines - color (Color3 1.0 1.0 1.0 :: Color3 GLfloat) - - -- in 1st row, 3 lines, each with a different stipple - lineStipple $= Just (1, 0x0101) -- dotted - drawOneLine (Vertex2 50 125) (Vertex2 150 125) - lineStipple $= Just (1, 0x00FF) -- dashed - drawOneLine (Vertex2 150 125) (Vertex2 50 125) - lineStipple $= Just (1, 0x1C47) -- dash/dot/dash - drawOneLine (Vertex2 250 125) (Vertex2 350 125) - - -- in 2nd row, 3 wide lines, each with different stipple - lineWidth $= 5.0 - lineStipple $= Just (1, 0x0101) -- dotted - drawOneLine (Vertex2 50 100) (Vertex2 150 100) - lineStipple $= Just (1, 0x00FF) -- dashed - drawOneLine (Vertex2 150 100) (Vertex2 250 100) - lineStipple $= Just (1, 0x1C47) -- dash/dot/dash - drawOneLine (Vertex2 250 100) (Vertex2 350 100) - lineWidth $= 1.0 - - -- in 3rd row, 6 lines, with dash/dot/dash stipple - -- as part of a single connected line strip - lineStipple $= Just (1, 0x1C47) -- dash/dot/dash - renderPrimitive LineStrip $ mapM_ vertex [ Vertex2 (50+(i*50)) (75 :: GLint) | i <- [0..6] ] - - -- in 4th row, 6 independent lines with same stipple - sequence_ [ drawOneLine (Vertex2 (50+( i *50)) 50) - (Vertex2 (50+((i+1)*50)) 50) | i <- [0..5] ] - - -- in 5th row, 1 line, with dash/dot/dash stipple - -- and a stipple repeat factor of 5 - lineStipple $= Just (5, 0x1C47) -- dash/dot/dash - drawOneLine (Vertex2 50 25) (Vertex2 350 25) - - lineStipple $= Nothing - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 (fromIntegral w) 0 (fromIntegral h) - -- the following line is not in the original example, but it's good style... - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Request double buffer display mode. --- Register mouse input callback functions -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 400 150 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Lines.hs hunk ./GLUT/examples/RedBook/MVArray.hs 1 -{- - MVArray.hs (adapted from mvarray.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates multiple vertex arrays, specifically the OpenGL - routine multiDrawElements. --} - -import Control.Monad ( unless ) -import Data.List ( genericLength ) -import Foreign ( Storable, Ptr, newArray ) -import System.Exit ( exitFailure, exitWith, ExitCode(..) ) -import Graphics.UI.GLUT - -data MultiDrawInfo a = MultiDrawInfo (Ptr GLsizei) (Ptr (Ptr a)) GLsizei - -makeMultiDrawInfo :: Storable a => [[a]] -> IO (MultiDrawInfo a) -makeMultiDrawInfo indicesLists = do - count <- newArray $ map genericLength indicesLists - indices <- newArray =<< mapM newArray indicesLists - return $ MultiDrawInfo count indices (genericLength indicesLists) - -setupPointer :: IO () -setupPointer = do - clientState VertexArray $= Enabled - vertices <- newArray ([ - Vertex2 25 25, - Vertex2 75 75, - Vertex2 100 125, - Vertex2 150 75, - Vertex2 200 175, - Vertex2 250 150, - Vertex2 300 125, - Vertex2 100 200, - Vertex2 150 250, - Vertex2 200 225, - Vertex2 250 300, - Vertex2 300 250 ] :: [Vertex2 GLint]) - arrayPointer VertexArray $= VertexArrayDescriptor 2 Int 0 vertices - -myInit :: IO (MultiDrawInfo GLubyte) -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Smooth - setupPointer - makeMultiDrawInfo [ [ 0, 1, 2, 3, 4, 5, 6 ], - [ 1, 7, 8, 9, 10, 11 ] ] - -display :: MultiDrawInfo GLubyte -> DisplayCallback -display (MultiDrawInfo count indices primCount) = do - clear [ ColorBuffer ] - color (Color3 1 1 1 :: Color3 GLfloat) - multiDrawElements LineStrip count UnsignedByte indices primCount - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 (fromIntegral w) 0 (fromIntegral h) - -- the following line is not in the original example, but it's good style... - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 350 350 - initialWindowPosition $= Position 100 100 - createWindow progName - -- we have to do this *after* createWindow, otherwise we have no OpenGL context - exts <- get glExtensions - unless ("GL_EXT_multi_draw_arrays" `elem` exts) $ do - putStrLn "Sorry, this demo requires the GL_EXT_multi_draw_arrays extension." - exitFailure - multiDrawInfo <- myInit - displayCallback $= display multiDrawInfo - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/MVArray.hs hunk ./GLUT/examples/RedBook/Material.hs 1 -{- - Material.hs (adapted from material.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates the use of the GL lighting model. Several - objects are drawn using different material characteristics. A single - light source illuminates the objects. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Initialize z-buffer, projection matrix, light source, and lighting model. --- Do not specify a material property here. - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0.1 0.1 0 - depthFunc $= Just Less - shadeModel $= Smooth - - ambient (Light 0) $= Color4 0 0 0 1 - diffuse (Light 0) $= Color4 1 1 1 1 - position (Light 0) $= Vertex4 0 3 2 0 - lightModelAmbient $= Color4 0.4 0.4 0.4 1 - lightModelLocalViewer $= Disabled - - lighting $= Enabled - light (Light 0) $= Enabled - --- Draw twelve spheres in 3 rows with 4 columns. --- The spheres in the first row have materials with no ambient reflection. --- The second row has materials with significant ambient reflection. --- The third row has materials with colored ambient reflection. --- --- The first column has materials with blue, diffuse reflection only. --- The second column has blue diffuse reflection, as well as specular --- reflection with a low shininess exponent. --- The third column has blue diffuse reflection, as well as specular --- reflection with a high shininess exponent (a more concentrated highlight). --- The fourth column has materials which also include an emissive component. --- --- translate is used to move spheres to their appropriate locations. - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - - let draw :: GLfloat -> GLfloat -> Color4 GLfloat -> Color4 GLfloat -> Color4 GLfloat -> GLfloat -> Color4 GLfloat -> IO () - draw row column amb dif spc shi emi = - preservingMatrix $ do - translate (Vector3 (2.5 * (column - 2.5)) (3 * (2 - row)) 0) - materialAmbient Front $= amb - materialDiffuse Front $= dif - materialSpecular Front $= spc - materialShininess Front $= shi - materialEmission Front $= emi - renderObject Solid (Sphere' 1 16 16) - - noMat = Color4 0 0 0 1 - matAmbient = Color4 0.7 0.7 0.7 1 - matAmbientColor = Color4 0.8 0.8 0.2 1 - matDiffuse = Color4 0.1 0.5 0.8 1 - matSpecular = Color4 1 1 1 1 - noShininess = 0 - lowShininess = 5 - highShininess = 100 - matEmission = Color4 0.3 0.2 0.2 0 - - -- draw sphere in first row, first column - -- diffuse reflection only; no ambient or specular - draw 1 1 noMat matDiffuse noMat noShininess noMat - - -- draw sphere in first row, second column - -- diffuse and specular reflection; low shininess; no ambient - draw 1 2 noMat matDiffuse matSpecular lowShininess noMat - - -- draw sphere in first row, third column - -- diffuse and specular reflection; high shininess; no ambient - draw 1 3 noMat matDiffuse matSpecular highShininess noMat - - -- draw sphere in first row, fourth column - -- diffuse reflection; emission; no ambient or specular reflection - draw 1 4 noMat matDiffuse noMat noShininess matEmission - - -- draw sphere in second row, first column - -- ambient and diffuse reflection; no specular - draw 2 1 matAmbient matDiffuse noMat noShininess noMat - - -- draw sphere in second row, second column - -- ambient, diffuse and specular reflection; low shininess - draw 2 2 matAmbient matDiffuse matSpecular lowShininess noMat - - -- draw sphere in second row, third column - -- ambient, diffuse and specular reflection; high shininess - draw 2 3 matAmbient matDiffuse matSpecular highShininess noMat - - -- draw sphere in second row, fourth column - -- ambient and diffuse reflection; emission; no specular - draw 2 4 matAmbient matDiffuse noMat noShininess matEmission - - -- draw sphere in third row, first column - -- colored ambient and diffuse reflection; no specular - draw 3 1 matAmbientColor matDiffuse noMat noShininess noMat - - -- draw sphere in third row, second column - -- colored ambient, diffuse and specular reflection; low shininess - draw 3 2 matAmbientColor matDiffuse matSpecular lowShininess noMat - - -- draw sphere in third row, third column - -- colored ambient, diffuse and specular reflection; high shininess - draw 3 3 matAmbientColor matDiffuse matSpecular highShininess noMat - - -- draw sphere in third row, fourth column - -- colored ambient and diffuse reflection; emission; no specular - draw 3 4 matAmbientColor matDiffuse noMat noShininess matEmission - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h * 2 - then ortho (-6) 6 (-3 * (hf * 2) / wf) (3 * (hf * 2) / wf) (-10) 10 - else ortho (-6 * wf / (hf * 2)) (6 * wf / (hf * 2)) (-3) 3 (-10) 10 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 600 450 - createWindow progName - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Material.hs hunk ./GLUT/examples/RedBook/Minmax.hs 1 -{- - Minmax.hs (adapted from minmax.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Determine the minimum and maximum values of a group of pixels. This - demonstrates use of the minmax function. --} - -import Foreign ( allocaArray, peekArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT -import ReadImage - -myInit :: IO () -myInit = do - rowAlignment Unpack $= 1 - clearColor $= Color4 0 0 0 0 - minmax $= Just (RGB', PassThrough) - -display :: Size -> PixelData a -> DisplayCallback -display size pixels = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let rasterPos2i = rasterPos :: Vertex2 GLint -> IO () - rasterPos2i (Vertex2 1 1) - drawPixels size pixels - flush - - [Color3 minR minG minB, Color3 maxR maxG maxB] <- allocaArray 2 $ \buf -> do - getMinmax Reset (PixelData RGB UnsignedByte buf) - peekArray 2 buf :: IO [Color3 GLubyte] - putStrLn (" Red : min = " ++ show minR ++ " max = " ++ show maxR) - putStrLn (" Green : min = " ++ show minG ++ " max = " ++ show maxG) - putStrLn (" Blue : min = " ++ show minB ++ " max = " ++ show maxB) - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho 0 (fromIntegral w) 0 (fromIntegral h) (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, args) <- getArgsAndInitialize - (size, pixels) <- readImage (if null args then "Data/leeds.bin" else head args) - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= size - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display size pixels - mainLoop rmfile ./GLUT/examples/RedBook/Minmax.hs hunk ./GLUT/examples/RedBook/Mipmap.hs 1 -{- - Mipmap.hs (adapted from mipmap.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates using mipmaps for texture maps. To overtly show - the effect of mipmaps, each mipmap reduction level has a solidly colored, - contrasting texture image. Thus, the quadrilateral which is drawn is drawn - with several different colors. --} - -import Control.Monad ( when ) -import Data.Maybe ( isJust, listToMaybe ) -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -makeImage :: Level -> TextureSize2D -> Color4 GLubyte -> IO () -makeImage level size@(TextureSize2D w h) col = - withArray (replicate (fromIntegral (w * h)) col) $ - texImage2D Nothing NoProxy level RGBA' size 0 . PixelData RGBA UnsignedByte - -makeImages :: [Color4 GLubyte] -> IO () -makeImages colors = sequence_ $ zipWith3 makeImage levels sizes colors - where numLevels = length colors - levels = [ 0 .. fromIntegral numLevels - 1 ] - sizes = reverse (take numLevels [ TextureSize2D s s | s <- iterate (* 2) 1 ]) - -myInit :: IO (Maybe TextureObject) -myInit = do - depthFunc $= Just Less - shadeModel $= Flat - - translate (Vector3 0 0 (-3.6 :: GLfloat)) - rowAlignment Unpack $= 1 - - exts <- get glExtensions - mbTexName <- if "GL_EXT_texture_object" `elem` exts - then fmap listToMaybe $ genObjectNames 1 - else return Nothing - when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName - - textureWrapMode Texture2D S $= (Repeated, Repeat) - textureWrapMode Texture2D T $= (Repeated, Repeat) - textureFilter Texture2D $= ((Nearest, Just Nearest), Nearest) - - makeImages [ Color4 255 255 0 255, - Color4 255 0 255 255, - Color4 255 0 0 255, - Color4 0 255 0 255, - Color4 0 0 255 255, - Color4 255 255 255 255 ] - - textureFunction $= Decal - texture Texture2D $= Enabled - return mbTexName - -display :: Maybe TextureObject -> DisplayCallback -display mbTexName = do - clear [ ColorBuffer, DepthBuffer ] - when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName - -- resolve overloading, not needed in "real" programs - let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - renderPrimitive Quads $ do - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 ( -2) (-1) 0 ) - texCoord2f (TexCoord2 0 8); vertex3f (Vertex3 ( -2) 1 0 ) - texCoord2f (TexCoord2 8 8); vertex3f (Vertex3 2000 1 (-6000)) - texCoord2f (TexCoord2 8 0); vertex3f (Vertex3 2000 (-1) (-6000)) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 60 (fromIntegral w / fromIntegral h) 1 30000 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 50 50 - createWindow progName - texName <- myInit - displayCallback $= display texName - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Mipmap.hs hunk ./GLUT/examples/RedBook/Model.hs 1 -{- - Model.hs (adapted from model.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates modeling transformations. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - -drawTriangle :: IO () -drawTriangle = do - -- resolve overloading, not needed in "real" programs - let vertex2f = vertex :: Vertex2 GLfloat -> IO () - renderPrimitive LineLoop $ do - vertex2f (Vertex2 0 25 ) - vertex2f (Vertex2 25 (-25)) - vertex2f (Vertex2 (-25) (-25)) - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - translatef = translate :: Vector3 GLfloat -> IO () - scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () - rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () - color3f (Color3 1 1 1) - - loadIdentity - color3f (Color3 1 1 1) - drawTriangle - - lineStipple $= Just (1, 0xF0F0) - loadIdentity - translatef (Vector3 (-20) 0 0) - drawTriangle - - lineStipple $= Just (1, 0xF00F) - loadIdentity - scalef 1.5 0.5 1.0 - drawTriangle - - lineStipple $= Just (1, 0x8888) - loadIdentity - rotatef 90 (Vector3 0 0 1) - drawTriangle - lineStipple $= Nothing - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-50) 50 (-50 * hf/wf) (50 * hf/wf) (-1) 1 - else ortho (-50 * wf/hf) (50 * wf/hf) (-50) 50 (-1) 1 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Model.hs hunk ./GLUT/examples/RedBook/MoveLight.hs 1 -{- - MoveLight.hs (adapted from movelight.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates when to issue lighting and transformation - commands to render a model with a light which is moved by a - modeling transformation (rotate or translate). The light position - is reset after the modeling transformation is called. The eye - position does not change. - - A sphere is drawn using a grey material characteristic. A single - light source illuminates the object. - - Interaction: pressing the left mouse button alters the modeling - transformation (x rotation) by 30 degrees. The scene is then - redrawn with the light in a new position. --} - -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { spin :: IORef Int } - -makeState :: IO State -makeState = do - s <- newIORef 0 - return $ State { spin = s } - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Smooth - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - lookAt (Vertex3 0 0 5) (Vertex3 0 0 0) (Vector3 0 1 0) - preservingMatrix $ do - s <- get (spin state) - rotate (fromIntegral s :: GLdouble) (Vector3 1 0 0) - position (Light 0) $= Vertex4 0 0 1.5 1 - translate (Vector3 0 0 1.5 :: Vector3 GLdouble) - lighting $= Disabled - color (Color3 0 1 1 :: Color3 GLfloat) - renderObject Wireframe (Cube 0.1) - lighting $= Enabled - renderObject Solid (Torus 0.275 0.85 8 15) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 40 (fromIntegral w / fromIntegral h) 1 20 - matrixMode $= Modelview 0 - loadIdentity - -keyboardMouse :: State -> KeyboardMouseCallback -keyboardMouse state (MouseButton LeftButton) Down _ _ = do - spin state $~ ((`mod` 360) . (+ 30)) - postRedisplay Nothing -keyboardMouse _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboardMouse _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - myInit - displayCallback $= display state - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboardMouse state) - mainLoop rmfile ./GLUT/examples/RedBook/MoveLight.hs hunk ./GLUT/examples/RedBook/MultiTex.hs 1 -{- - MultiTex.hs (adapted from multitex.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( unless ) -import Foreign ( withArray ) -import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -specifyTexture :: TextureSize2D -> (GLubyte -> GLubyte -> Color4 GLubyte) -> IO () -specifyTexture size@(TextureSize2D w h) f = - withArray [ f i j | i <- [ 0 .. fromIntegral w - 1 ], - j <- [ 0 .. fromIntegral h - 1] ] $ - texImage2D Nothing NoProxy 0 RGBA' size 0 . PixelData RGBA UnsignedByte - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - depthFunc $= Just Less - rowAlignment Unpack $= 1 - - [texName0, texName1] <- genObjectNames 2 - textureBinding Texture2D $= Just texName0 - -- Note: We use much brighter colors than in the original example where - -- everything was almost black. - specifyTexture (TextureSize2D 32 32) (\i j -> Color4 (i*8) (j*8) ((i*j) `div` 4) 255) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - textureWrapMode Texture2D S $= (Repeated, Repeat) - textureWrapMode Texture2D T $= (Repeated, Repeat) - - textureBinding Texture2D $= Just texName1 - specifyTexture (TextureSize2D 16 16) (\i j -> Color4 255 (i*16) (j*16) 255) - textureFilter Texture2D $= ((Linear', Nothing), Linear') - textureWrapMode Texture2D S $= (Repeated, ClampToEdge) - textureWrapMode Texture2D T $= (Repeated, ClampToEdge) - -- Use the two texture objects to define two texture units - -- for use in multitexturing - activeTexture $= TextureUnit 0 - texture Texture2D $= Enabled - textureBinding Texture2D $= Just texName0 - textureFunction $= Replace - matrixMode $= Texture - loadIdentity - translate (Vector3 0.5 0.5 (0 :: GLfloat)) - rotate (45 :: GLfloat) (Vector3 0 0 1) - translate (Vector3 (-0.5) (-0.5) (0 :: GLfloat)) - matrixMode $= Modelview 0 - activeTexture $= TextureUnit 1 - texture Texture2D $= Enabled - textureBinding Texture2D $= Just texName1 - textureFunction $= Modulate - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - -- resolve overloading, not needed in "real" programs - let multiTexCoord2f = multiTexCoord :: TextureUnit -> TexCoord2 GLfloat -> IO () - vertex2f = vertex :: Vertex2 GLfloat -> IO () - renderPrimitive Triangles $ do - multiTexCoord2f (TextureUnit 0) (TexCoord2 0 0) - multiTexCoord2f (TextureUnit 1) (TexCoord2 1 0) - vertex2f (Vertex2 0 0) - multiTexCoord2f (TextureUnit 0) (TexCoord2 0.5 1) - multiTexCoord2f (TextureUnit 1) (TexCoord2 0.5 0) - vertex2f (Vertex2 50 100) - multiTexCoord2f (TextureUnit 0) (TexCoord2 1 0) - multiTexCoord2f (TextureUnit 1) (TexCoord2 1 1) - vertex2f (Vertex2 100 0) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D 0 100 0 (100*hf/wf) - else ortho2D 0 (100*wf/hf) 0 100 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - -- we have to do this *after* createWindow, otherwise we have no OpenGL context - exts <- get glExtensions - unless ("GL_ARB_multitexture" `elem` exts && - "GL_EXT_texture_object" `elem` exts) $ do - putStrLn "Sorry, this demo requires the GL_ARB_multitexture and GL_EXT_texture_object extensions." - exitFailure - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/MultiTex.hs hunk ./GLUT/examples/RedBook/Multisamp.hs 1 -{- - Multisamp.hs (adapted from multisamp.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws shows how to use multisampling to draw anti-aliased - geometric primitives. The same display list, a pinwheel of triangles and - lines of varying widths, is rendered twice. Multisampling is enabled when the - left side is drawn. Multisampling is disabled when the right side is drawn. - - Pressing the 'b' key toggles drawing of the checkerboard background. - Antialiasing is sometimes easier to see when objects are rendered over a - contrasting background. --} - -import Control.Monad ( when ) -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { bgToggle :: IORef Bool } - -makeState :: IO State -makeState = do - b <- newIORef True - return $ State { bgToggle = b } - -data DisplayLists = DisplayLists { pinwheelList, backgroundList :: DisplayList } - --- Print out state values related to multisampling. Create display list with --- "pinwheel" of lines and triangles. -myInit :: IO DisplayLists -myInit = do - clearColor $= Color4 0 0 0 0 - sb <- get sampleBuffers - putStrLn ("number of sample buffers is " ++ show sb) - s <- get samples - putStrLn ("number of samples is " ++ show s) - - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - vertex2f = vertex :: Vertex2 GLfloat -> IO () - - p <- defineNewList Compile $ do - flip mapM_ [ 0 .. 18 ] $ \i -> - preservingMatrix $ do - rotate (360 * fromIntegral i / 19 :: GLfloat) (Vector3 0 0 1) - color3f (Color3 1 1 1) - lineWidth $= fromIntegral ((i `mod` 3 :: Int) + 1) - renderPrimitive Lines $ do - vertex2f (Vertex2 0.25 0.05) - vertex2f (Vertex2 0.9 0.2) - color3f (Color3 0 1 1) - renderPrimitive Triangles $ do - vertex2f (Vertex2 0.25 0) - vertex2f (Vertex2 0.9 0) - vertex2f (Vertex2 0.875 0.1) - - b <- defineNewList Compile $ do - color3f (Color3 1 0.5 0) - renderPrimitive Quads $ - flip mapM_ [ 0 .. 15 ] $ \i -> - flip mapM_ [ 0 .. 15 ] $ \j -> - when (((i + j) `mod` 2 :: Int) == 0) $ do - let ii = fromIntegral i * 0.25 - jj = fromIntegral j * 0.25 - vertex2f (Vertex2 (-2.0 + ii) (-2.0 + jj)) - vertex2f (Vertex2 (-2.0 + ii) (-1.75 + jj)) - vertex2f (Vertex2 (-1.75 + ii) (-1.75 + jj)) - vertex2f (Vertex2 (-1.75 + ii) (-2.0 + jj)) - - return $ DisplayLists { pinwheelList = p, backgroundList = b } - --- Draw two sets of primitives, so that you can compare the user of --- multisampling against its absence. --- --- This code enables antialiasing and draws one display list and disables and --- draws the other display list -display :: State -> DisplayLists -> DisplayCallback -display state displayLists = do - clear [ ColorBuffer ] - - t <- get (bgToggle state) - when t $ - callList (backgroundList displayLists) - - -- resolve overloading, not needed in "real" programs - let translatef = translate :: Vector3 GLfloat -> IO () - - multisample $= Enabled - preservingMatrix $ do - translatef (Vector3 (-1) 0 0) - callList (pinwheelList displayLists) - - multisample $= Disabled - preservingMatrix $ do - translatef (Vector3 1 0 0) - callList (pinwheelList displayLists) - - swapBuffers - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= 2 * h - then ortho2D (-2) 2 (-2*hf/wf) (2*hf/wf) - else ortho2D (-2*wf/hf) (2*wf/hf) (-2) 2 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case toLower c of - 'b' -> do bgToggle state $~ not; postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode, Multisampling ] - initialWindowSize $= Size 600 300 - createWindow progName - state <- makeState - displayLists <- myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - displayCallback $= display state displayLists - mainLoop rmfile ./GLUT/examples/RedBook/Multisamp.hs hunk ./GLUT/examples/RedBook/PickDepth.hs 1 -{- - PickDepth.hs (adapted from pickdepth.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Picking is demonstrated in this program. In rendering mode, three - overlapping rectangles are drawn. When the left mouse button is pressed, - selection mode is entered with the picking matrix. Rectangles which are drawn - under the cursor position are "picked." Pay special attention to the depth - value range, which is returned. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - depthFunc $= Just Less - shadeModel $= Flat - depthRange $= (0, 1) -- The default z mapping - --- The nine squares are drawn. Each square is given two names: one for the row --- and the other for the column on the grid. The color of each square is --- determined by its position on the grid, and the value in the board array. --- Note: In contrast to the the original example, we always give names to --- squares, regardless of the render mode. This simplifies the code a bit and --- is even suggested by the Red Book. - --- The three rectangles are drawn, each with a different name. Note that each --- rectangle is drawn with a different z value. Note: In contrast to the the --- original example, we always give names to squares, regardless of the render --- mode. This simplifies the code a bit and is even suggested by the Red Book. -drawRects :: IO () -drawRects = do - -- resolve overloading, not needed in "real" programs - let color3 = color :: Color3 GLfloat -> IO () - vertex3 = vertex :: Vertex3 GLint -> IO () - loadName (Name 1) - renderPrimitive Quads $ do - color3 (Color3 1.0 1.0 0.0) - vertex3 (Vertex3 2 0 0) - vertex3 (Vertex3 2 6 0) - vertex3 (Vertex3 6 6 0) - vertex3 (Vertex3 6 0 0) - loadName (Name 2) - renderPrimitive Quads $ do - color3 (Color3 0.0 1.0 1.0) - vertex3 (Vertex3 3 2 (-1)) - vertex3 (Vertex3 3 8 (-1)) - vertex3 (Vertex3 8 8 (-1)) - vertex3 (Vertex3 8 2 (-1)) - loadName (Name 3) - renderPrimitive Quads $ do - color3 (Color3 1.0 0.0 1.0) - vertex3 (Vertex3 0 2 (-2)) - vertex3 (Vertex3 0 7 (-2)) - vertex3 (Vertex3 5 7 (-2)) - vertex3 (Vertex3 5 2 (-2)) - --- processHits prints the hit records. -processHits :: Maybe[HitRecord] -> IO () -processHits Nothing = putStrLn "selection buffer overflow" -processHits (Just hitRecords) = do - putStrLn ("hits = " ++ show (length hitRecords)) - flip mapM_ hitRecords $ \(HitRecord z1 z2 names) -> do - putStrLn (" number of names for hit = " ++ show (length names)) - putStr (" z1 is " ++ show z1) - putStrLn ("; z2 is " ++ show z2) - putStr " the name is" - sequence_ [ putStr (" " ++ show n) | Name n <- names ] - putChar '\n' - --- pickRects() sets up selection mode, name stack, and projection matrix for --- picking. Then the objects are drawn. - -bufSize :: GLsizei -bufSize = 512 - -pickRects :: KeyboardMouseCallback -pickRects (MouseButton LeftButton) Down _ (Position x y) = do - vp@(_, (Size _ height)) <- get viewport - (_, maybeHitRecords) <- getHitRecords bufSize $ - withName (Name 0) $ do - matrixMode $= Projection - preservingMatrix $ do - loadIdentity - -- create 5x5 pixel picking region near cursor location - pickMatrix (fromIntegral x, fromIntegral height - fromIntegral y) (5, 5) vp - ortho 0 8 0 8 (-0.5) 2.5 - drawRects - flush - processHits maybeHitRecords - postRedisplay Nothing -pickRects (Char '\27') Down _ _ = exitWith ExitSuccess -pickRects _ _ _ _ = return () - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - drawRects - flush - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho 0 8 0 8 (-0.5) 2.5 - matrixMode $= Modelview 0 - loadIdentity - --- Main Loop -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 200 200 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just pickRects - mainLoop rmfile ./GLUT/examples/RedBook/PickDepth.hs hunk ./GLUT/examples/RedBook/PickSquare.hs 1 -{- - PickSquare.hs (adapted from picksquare.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Use of multiple names and picking are demonstrated. A 3x3 grid of squares is - drawn. When the left mouse button is pressed, all squares under the cursor - position have their color changed. --} - -import Data.Array ( Array, listArray, (!) ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -type Board = Array (GLint,GLint) (IORef Int) - -data State = State { board :: Board } - -makeState :: IO State -makeState = do - refs <- sequence . replicate 9 . newIORef $ 0 - return $ State { board = listArray ((0,0),(2,2)) refs } - --- Clear color value for every square on the board -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - --- The nine squares are drawn. Each square is given two names: one for the row --- and the other for the column on the grid. The color of each square is --- determined by its position on the grid, and the value in the board array. --- Note: In contrast to the the original example, we always give names to --- squares, regardless of the render mode. This simplifies the code a bit and --- is even suggested by the Red Book. -drawSquares :: State -> IO () -drawSquares state = - flip mapM_ [ 0 .. 2 ] $ \i -> do - loadName (Name (fromIntegral i)) - flip mapM_ [ 0 .. 2 ] $ \j -> - withName (Name (fromIntegral j)) $ do - val <- get (board state ! (i,j)) - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 (fromIntegral i / 3.0) - (fromIntegral j / 3.0) - (fromIntegral val / 3.0)) - rect (Vertex2 i j) (Vertex2 (i + 1) (j + 1)) - --- processHits prints the hit records and updates the board array. -processHits :: Maybe[HitRecord] -> State -> IO () -processHits Nothing _ = putStrLn "selection buffer overflow" -processHits (Just hitRecords) state = do - putStrLn ("hits = " ++ show (length hitRecords)) - mapM_ (\(HitRecord z1 z2 names) -> do - putStrLn (" number of names for this hit = " ++ show (length names)) - putStr (" z1 is " ++ show z1) - putStrLn ("; z2 is " ++ show z2) - putStr " names are" - sequence_ [ putStr (" " ++ show n) | Name n <- names ] - putChar '\n' - let [i, j] = [ fromIntegral n | Name n <- names ] - (board state ! (i,j)) $~ (\x -> (x + 1) `mod` 3)) - hitRecords - --- pickSquares sets up selection mode, name stack, and projection matrix for --- picking. Then the objects are drawn. - -bufSize :: GLsizei -bufSize = 512 - -pickSquares :: State -> KeyboardMouseCallback -pickSquares state (MouseButton LeftButton) Down _ (Position x y) = do - vp@(_, (Size _ height)) <- get viewport - (_, maybeHitRecords) <- getHitRecords bufSize $ - withName (Name 0) $ do - matrixMode $= Projection - preservingMatrix $ do - loadIdentity - -- create 5x5 pixel picking region near cursor location - pickMatrix (fromIntegral x, fromIntegral height - fromIntegral y) (5, 5) vp - ortho2D 0 3 0 3 - drawSquares state - flush - processHits maybeHitRecords state - postRedisplay Nothing -pickSquares _ (Char '\27') Down _ _ = exitWith ExitSuccess -pickSquares _ _ _ _ _ = return () - -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer ] - drawSquares state - flush - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 3 0 3 - matrixMode $= Modelview 0 - loadIdentity - --- Main Loop -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 100 100 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - myInit - reshapeCallback $= Just reshape - displayCallback $= display state - keyboardMouseCallback $= Just (pickSquares state) - mainLoop rmfile ./GLUT/examples/RedBook/PickSquare.hs hunk ./GLUT/examples/RedBook/Planet.hs 1 -{- - Planet.hs (adapted from planet.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program shows how to composite modeling transformations to draw - translated and rotated models. Interaction: pressing the d and y keys - (day and year) alters the rotation of the planet around the sun. --} - -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { year, day :: IORef GLint } - -makeState :: IO State -makeState = do - y <- newIORef 0 - d <- newIORef 0 - return $ State { year = y, day = d } - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - translatef = translate :: Vector3 GLfloat -> IO () - color3f (Color3 1 1 1) - - preservingMatrix $ do - renderObject Wireframe (Sphere' 1 20 16) -- draw sun - y <- get (year state) - rotate (fromIntegral y :: GLfloat) (Vector3 0 1 0) - translatef (Vector3 2 0 0) - d <- get (day state) - rotate (fromIntegral d :: GLfloat) (Vector3 0 1 0) - renderObject Wireframe (Sphere' 0.2 10 8) -- draw smaller planet - - swapBuffers - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 60 (fromIntegral w / fromIntegral h) 1 20 - matrixMode $= Modelview 0 - loadIdentity - lookAt (Vertex3 0 0 5) (Vertex3 0 0 0) (Vector3 0 1 0) - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case c of - 'd' -> update day 10 - 'D' -> update day (-10) - 'y' -> update year 10 - 'Y' -> update year (-10) - '\27' -> exitWith ExitSuccess - _ -> return () - where update angle inc = do - angle state $~ ((`mod` 360) . (+ inc)) - postRedisplay Nothing -keyboard _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - myInit - displayCallback $= display state - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - mainLoop rmfile ./GLUT/examples/RedBook/Planet.hs hunk ./GLUT/examples/RedBook/PointP.hs 1 -{- - PointP.hs (adapted from pointp.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates point parameters and their effect on point - primitives. 250 points are randomly generated within a 10 by 10 by 40 region, - centered at the origin. In some modes (including the default), points that - are closer to the viewer will appear larger. - - Pressing the 'c', 'l', and 'q' keys switch the point parameters attenuation - mode to constant, linear, or quadratic, respectively. - - Pressing the 'f' and 'b' keys move the viewer forward and backwards. In - either linear or quadratic attenuation mode, the distance from the viewer to - the point will change the size of the point primitive. - - Pressing the '+' and '-' keys will change the current point size. In this - program, the point size is bounded, so it will not get less than 2, nor - greater than the maximum returned by pointSizeRange. --} - -import Control.Monad ( when, unless ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) -import System.Random ( randomRIO ) -import Graphics.UI.GLUT - -type Attenuation = (GLfloat,GLfloat,GLfloat) - -constant, linear, quadratic :: Attenuation -constant = (1, 0, 0 ) -linear = (0, 0.12, 0 ) -quadratic = (0, 0, 0.01) - -data State = State { distance :: IORef GLfloat } - -makeState :: IO State -makeState = do - d <- newIORef (-10) - return $ State { distance = d } - -randomColor :: IO (Color3 GLfloat) -randomColor = do - g <- randomRIO (0.5, 1) - b <- randomRIO (0, 1) - return $ Color3 1 g b - -randomVertex :: IO (Vertex3 GLfloat) -randomVertex = do - x <- randomRIO (-5, 5) - y <- randomRIO (-5, 5) - z <- randomRIO (-5, -45) - return $ Vertex3 x y z - -myInit :: IO DisplayList -myInit = do - pointList <- defineNewList Compile $ - renderPrimitive Points $ - sequence_ $ replicate 250 $ do - color =<< randomColor - vertex =<< randomVertex - - depthFunc $= Just Less - pointSmooth $= Enabled - blend $= Enabled - blendFunc $= (SrcAlpha, OneMinusSrcAlpha) - pointSize $= 7 - - pointDistanceAttenuation $= linear - pointFadeThresholdSize $= 2 - - return pointList - -display :: State -> DisplayList -> DisplayCallback -display state pointList = do - clear [ ColorBuffer, DepthBuffer ] - d <- get (distance state) - loadIdentity - translate (Vector3 0 0 d) - callList pointList - swapBuffers - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 35 1 0.25 200 - matrixMode $= Modelview 0 - -setPointDistanceAttenuation :: Attenuation -> IO () -setPointDistanceAttenuation att = do - pointDistanceAttenuation $= att - postRedisplay Nothing - -incDistance :: State -> GLfloat -> IO () -incDistance state inc = do - distance state $~ (+ inc) - postRedisplay Nothing - -incPointSize :: GLfloat -> IO () -incPointSize inc = do - newPointSize <- fmap (+ inc) $ get pointSize - (_,maxPointSize) <- get pointSizeRange - when (2 <= newPointSize && newPointSize <= maxPointSize) $ do - pointSize $= newPointSize - postRedisplay Nothing - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case c of - 'c' -> setPointDistanceAttenuation constant - 'l' -> setPointDistanceAttenuation linear - 'q' -> setPointDistanceAttenuation quadratic - 'b' -> incDistance state (-0.5) - 'f' -> incDistance state 0.5 - '+' -> incPointSize 1 - '-' -> incPointSize (-1) - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ RGBMode, DoubleBuffered, WithDepthBuffer, Multisampling ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - - -- We have to do this *after* createWindow, otherwise we have no OpenGL - -- context. Note that the original C example simply tests for OpenGL 1.4 at - -- compile time, we do a runtime check for the needed extension. - extensions <- get glExtensions - unless ("GL_ARB_point_parameters" `elem` extensions) $ do - putStrLn "Sorry, this demo requires the GL_ARB_point_parameters extension." - exitFailure - - state <- makeState - pointList <- myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - displayCallback $= display state pointList - mainLoop rmfile ./GLUT/examples/RedBook/PointP.hs hunk ./GLUT/examples/RedBook/PolyOff.hs 1 -{- - PolyOff.hs (adapted from polyoff.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates polygon offset to draw a shaded polygon and its - wireframe counterpart without ugly visual artifacts ("stitching"). --} - -import Control.Monad ( when ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) -import Graphics.UI.GLUT - -data State = State { - spinX, spinY :: IORef GLfloat, - tDist :: IORef GLfloat, - polyFactor :: IORef GLfloat, - polyUnits :: IORef GLfloat - } - -makeState :: IO State -makeState = do - x <- newIORef 0 - y <- newIORef 0 - t <- newIORef 0 - f <- newIORef 1 - u <- newIORef 1 - return $ State { spinX = x, spinY = y, tDist = t, polyFactor = f, polyUnits = u } - --- display draws two spheres, one with a gray, diffuse material, the other --- sphere with a magenta material with a specular highlight. -display :: State -> DisplayList -> DisplayCallback -display state sphereList = do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - t <- get (tDist state) - translate (Vector3 0 0 t) - x <- get (spinX state) - rotate x (Vector3 1 0 0) - y <- get (spinY state) - rotate y (Vector3 0 1 0) - - materialAmbientAndDiffuse Front $= Color4 0.8 0.8 0.8 1 - materialSpecular Front $= Color4 0 0 0 1 - materialShininess Front $= 0 - lighting $= Enabled - light (Light 0) $= Enabled - polygonOffsetFill $= Enabled - f <- get (polyFactor state) - u <- get (polyUnits state) - polygonOffset $= (f, u) - callList sphereList - polygonOffsetFill $= Disabled - - lighting $= Disabled - light (Light 0) $= Disabled - color (Color3 1 1 (1 :: GLfloat)) - polygonMode $= (Line, Line) - callList sphereList - polygonMode $= (Fill, Fill) - - flush - --- specify initial properties --- create display list with sphere --- initialize lighting and depth buffer -gfxinit :: IO DisplayList -gfxinit = do - clearColor $= Color4 0 0 0 1 - - sphereList <- defineNewList Compile $ - renderObject Solid (Sphere' 1 20 12) - - depthFunc $= Just Less - - ambient (Light 0) $= Color4 0 0 0 1 - diffuse (Light 0) $= Color4 1 1 1 1 - specular (Light 0) $= Color4 1 1 1 1 - position (Light 0) $= Vertex4 1 1 1 0 - lightModelAmbient $= Color4 0.2 0.2 0.2 1 - - return sphereList - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 45 (fromIntegral w / fromIntegral h) 1 10 - matrixMode $= Modelview 0 - loadIdentity - lookAt (Vertex3 0 0 5) (Vertex3 0 0 0) (Vector3 0 1 0) - -incSpin :: IORef GLfloat -> IO () -incSpin spinRef = do - let wrap n s = if s > n then s - n else s - spinRef $~ (wrap 360 . (+ 5)) - postRedisplay Nothing - -incDist :: State -> GLfloat -> IO () -incDist state inc = do - newDist <- fmap (+ inc) $ get (tDist state) - when (-5 <= newDist && newDist <= 4) $ do - tDist state $= newDist - postRedisplay Nothing - -incPoly :: String -> IORef GLfloat -> GLfloat -> IO () -incPoly name polyRef inc = do - polyRef $~ (+ inc) - p <- get polyRef - putStrLn (name ++ " is " ++ show p) - postRedisplay Nothing - -keyboardMouse :: State -> KeyboardMouseCallback -keyboardMouse state k Down _ _ = case k of - (MouseButton LeftButton) -> incSpin (spinX state) - (MouseButton MiddleButton) -> incSpin (spinY state) - (MouseButton RightButton) -> exitWith ExitSuccess - (Char 't') -> incDist state 0.5 - (Char 'T') -> incDist state (-0.5) - (Char 'F') -> incPoly "polyFactor" (polyFactor state) 0.1 - (Char 'f') -> incPoly "polyFactor" (polyFactor state) (-0.1) - (Char 'U') -> incPoly "polyUnits" (polyUnits state) 1 - (Char 'u') -> incPoly "polyUnits" (polyUnits state) (-1) - _ -> return () -keyboardMouse _ _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - createWindow progName - - -- we have to do this *after* createWindow, otherwise we have no OpenGL context - version <- get (majorMinor glVersion) - when (version == (1,0)) $ do - putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." - putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," - putStrLn "you may be able to modify this program to make it run." - exitFailure - - state <- makeState - sphereList <- gfxinit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboardMouse state) - displayCallback $= display state sphereList - mainLoop rmfile ./GLUT/examples/RedBook/PolyOff.hs hunk ./GLUT/examples/RedBook/Polys.hs 1 -{- - Polys.hs (adapted from polys.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates polygon stippling. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -fly :: IO GLpolygonstipple -fly = newPolygonStipple [ - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x03, 0x80, 0x01, 0xC0, 0x06, 0xC0, 0x03, 0x60, - 0x04, 0x60, 0x06, 0x20, 0x04, 0x30, 0x0C, 0x20, - 0x04, 0x18, 0x18, 0x20, 0x04, 0x0C, 0x30, 0x20, - 0x04, 0x06, 0x60, 0x20, 0x44, 0x03, 0xC0, 0x22, - 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, - 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, - 0x44, 0x01, 0x80, 0x22, 0x44, 0x01, 0x80, 0x22, - 0x66, 0x01, 0x80, 0x66, 0x33, 0x01, 0x80, 0xCC, - 0x19, 0x81, 0x81, 0x98, 0x0C, 0xC1, 0x83, 0x30, - 0x07, 0xe1, 0x87, 0xe0, 0x03, 0x3f, 0xfc, 0xc0, - 0x03, 0x31, 0x8c, 0xc0, 0x03, 0x33, 0xcc, 0xc0, - 0x06, 0x64, 0x26, 0x60, 0x0c, 0xcc, 0x33, 0x30, - 0x18, 0xcc, 0x33, 0x18, 0x10, 0xc4, 0x23, 0x08, - 0x10, 0x63, 0xC6, 0x08, 0x10, 0x30, 0x0c, 0x08, - 0x10, 0x18, 0x18, 0x08, 0x10, 0x00, 0x00, 0x08] - -halftone :: IO GLpolygonstipple -halftone = newPolygonStipple . take 128 . cycle $ [ - 0xAA, 0xAA, 0xAA, 0xAA, 0x55, 0x55, 0x55, 0x55] - -display :: (GLpolygonstipple, GLpolygonstipple) -> DisplayCallback -display (flyStipple, halftoneStipple) = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - rectf = rect :: Vertex2 GLfloat -> Vertex2 GLfloat -> IO () - color3f (Color3 1 1 1) - - -- draw one solid, unstippled rectangle, - -- then two stippled rectangles - rectf (Vertex2 25 25) (Vertex2 125 125) - polygonStipple $= Just flyStipple - rectf (Vertex2 125 25) (Vertex2 225 125) - polygonStipple $= Just halftoneStipple - rectf (Vertex2 225 25) (Vertex2 325 125) - polygonStipple $= (Nothing :: Maybe GLpolygonstipple) - - flush - -myInit :: IO (GLpolygonstipple, GLpolygonstipple) -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - flyStipple <- fly - halftoneStipple <- halftone - return (flyStipple, halftoneStipple) - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0.0 (fromIntegral w) 0.0 (fromIntegral h) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 350 150 - createWindow progName - stipples <- myInit - displayCallback $= display stipples - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Polys.hs hunk ./GLUT/examples/RedBook/Quadric.hs 1 -{- - Quadric.hs (adapted from quadric.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates the use of the renderQuadric routine. Quadric - objects are created with some quadric properties and errors are reported. - Note that the cylinder has no top or bottom and the circle has a hole in it. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO (DisplayList, DisplayList, DisplayList, DisplayList) -myInit = do - clearColor $= Color4 0 0 0 0 - - materialAmbient Front $= Color4 0.5 0.5 0.5 1 - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 50 - position (Light 0) $= Vertex4 1 1 1 0 - lightModelAmbient $= Color4 0.5 0.5 0.5 1 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - - -- Create 4 display lists, each with a different quadric object. - -- Different drawing styles and surface normal specifications - -- are demonstrated. - -- smooth shaded - dl1 <- newQuadricDL (Just Smooth) FillStyle (Sphere 0.75 15 10) - -- flat shaded - dl2 <- newQuadricDL (Just Flat) FillStyle (Cylinder 0.5 0.3 1 15 5) - -- all polygons wireframe - dl3 <- newQuadricDL Nothing LineStyle (Disk 0.25 1 20 4) - -- boundary only - dl4 <- newQuadricDL Nothing SilhouetteStyle (PartialDisk 0 1 20 4 0 225) - return (dl1, dl2, dl3, dl4) - -newQuadricDL :: QuadricNormal -> QuadricDrawStyle -> QuadricPrimitive -> IO DisplayList -newQuadricDL n s p = - defineNewList Compile $ do - renderQuadric (QuadricStyle n NoTextureCoordinates Outside s) p - reportErrors - -display :: (DisplayList, DisplayList, DisplayList, DisplayList) -> DisplayCallback -display (dl1, dl2, dl3, dl4) = do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - -- resolve overloading, not needed in "real" programs - let translatef = translate :: Vector3 GLfloat -> IO () - rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () - color3f = color :: Color3 GLfloat -> IO () - - lighting $= Enabled - shadeModel $= Smooth - translatef (Vector3 (-1) (-1) 0) - callList dl1 - - shadeModel $= Flat - translatef (Vector3 0 2 0) - preservingMatrix $ do - rotatef 300 (Vector3 1 0 0) - callList dl2 - - lighting $= Disabled - color3f (Color3 0 1 1) - translatef (Vector3 2 (-2) 0) - callList dl3 - - color3f (Color3 1 1 0) - translatef (Vector3 0 2 0) - callList dl4 - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-2.5) 2.5 (-2.5*hf/wf) (2.5*hf/wf) (-10) 10 - else ortho (-2.5*wf/hf) (2.5*wf/hf) (-2.5) 2.5 (-10) 10 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - displayLists <- myInit - displayCallback $= display displayLists - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Quadric.hs hunk ./GLUT/examples/RedBook/ReadImage.hs 1 -{- - ReadImage.hs (adapted from readImage.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Support for reading a file of raw RGB data: - 4 bytes big-endian width - 4 bytes big-endian height - width * height RGB byte triples --} - -module ReadImage ( readImage ) where - -import Data.Word ( Word8, Word32 ) -import Control.Exception ( bracket ) -import Control.Monad ( when ) -import System.IO ( Handle, IOMode(ReadMode), openBinaryFile, hGetBuf, hClose ) -import System.IO.Error ( mkIOError, eofErrorType ) -import Foreign ( Ptr, alloca, mallocBytes, Storable(..) ) -import Graphics.UI.GLUT - --- This is probably overkill, but anyway... -newtype Word32BigEndian = Word32BigEndian Word32 - -word32BigEndianToGLsizei :: Word32BigEndian -> GLsizei -word32BigEndianToGLsizei (Word32BigEndian x) = fromIntegral x - -instance Storable Word32BigEndian where - sizeOf ~(Word32BigEndian x) = sizeOf x - alignment ~(Word32BigEndian x) = alignment x - peek ptr = do - let numBytes = sizeOf (undefined :: Word32BigEndian) - bytes <- mapM (peekByteOff ptr) [ 0 .. numBytes - 1 ] :: IO [Word8] - let value = foldl (\val byte -> val * 256 + fromIntegral byte) 0 bytes - return $ Word32BigEndian value - poke = error "" - --- This is the reason for all this stuff above... -readGLsizei :: Handle -> IO GLsizei -readGLsizei handle = - alloca $ \buf -> do - hGetBufFully handle buf (sizeOf (undefined :: Word32BigEndian)) - fmap word32BigEndianToGLsizei $ peek buf - --- A handy variant of hGetBuf with additional error checking -hGetBufFully :: Handle -> Ptr a -> Int -> IO () -hGetBufFully handle ptr numBytes = do - bytesRead <- hGetBuf handle ptr numBytes - when (bytesRead /= numBytes) $ - ioError $ mkIOError eofErrorType "hGetBufFully" (Just handle) Nothing - --- Closing a file is nice, even when an error occurs during reading. -withBinaryFile :: FilePath -> (Handle -> IO a) -> IO a -withBinaryFile filePath = bracket (openBinaryFile filePath ReadMode) hClose - -readImage :: FilePath -> IO (Size, PixelData a) -readImage filePath = - withBinaryFile filePath $ \handle -> do - width <- readGLsizei handle - height <- readGLsizei handle - let numBytes = fromIntegral (3 * width * height) - buf <- mallocBytes numBytes - hGetBufFully handle buf numBytes - return (Size width height, PixelData RGB UnsignedByte buf) rmfile ./GLUT/examples/RedBook/ReadImage.hs hunk ./GLUT/examples/RedBook/Robot.hs 1 -{- - Robot.hs (adapted from robot.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program shows how to composite modeling transformations to draw - translated and rotated hierarchical models. Interaction: pressing the s - and e keys (shoulder and elbow) alters the rotation of the robot arm. --} - -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { shoulder, elbow :: IORef GLint } - -makeState :: IO State -makeState = do - s <- newIORef 0 - e <- newIORef 0 - return $ State { shoulder = s, elbow = e } - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let translatef = translate :: Vector3 GLfloat -> IO () - scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () - preservingMatrix $ do - translatef (Vector3 (-1) 0 0) - s <- get (shoulder state) - rotate (fromIntegral s :: GLfloat) (Vector3 0 0 1) - translatef (Vector3 1 0 0) - preservingMatrix $ do - scalef 2 0.4 1 - renderObject Wireframe (Cube 1) - translatef (Vector3 1 0 0) - e <- get (elbow state) - rotate (fromIntegral e :: GLfloat) (Vector3 0 0 1) - translatef (Vector3 1 0 0) - preservingMatrix $ do - scalef 2 0.4 1 - renderObject Wireframe (Cube 1) - swapBuffers - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 65 (fromIntegral w / fromIntegral h) 1 20 - matrixMode $= Modelview 0 - loadIdentity - -- resolve overloading, not needed in "real" programs - let translatef = translate :: Vector3 GLfloat -> IO () - translatef (Vector3 0 0 (-5)) - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case c of - 's' -> update shoulder 5 - 'S' -> update shoulder (-5) - 'e' -> update elbow 5 - 'E' -> update elbow (-5) - '\27' -> exitWith ExitSuccess - _ -> return () - where update joint inc = do - joint state $~ ((`mod` 360) . (+ inc)) - postRedisplay Nothing -keyboard _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - myInit - displayCallback $= display state - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - mainLoop rmfile ./GLUT/examples/RedBook/Robot.hs hunk ./GLUT/examples/RedBook/Scene.hs 1 -{- - Scene.hs (adapted from scene.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates the use of the GL lighting model. Objects are - drawn using a grey material characteristic. A single light source - illuminates the objects. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Initialize material property and light source. -myInit :: IO () -myInit = do - ambient (Light 0) $= Color4 0 0 0 1 - diffuse (Light 0) $= Color4 1 1 1 1 - specular (Light 0) $= Color4 1 1 1 1 - -- light position is NOT default value - position (Light 0) $= Vertex4 1 1 1 0 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - rotate (20 :: GLfloat) (Vector3 1 0 0) - preservingMatrix $ do - translate (Vector3 (-0.75) 0.5 (0 :: GLfloat)) - rotate (90 :: GLfloat) (Vector3 1 0 0) - renderObject Solid (Torus 0.275 0.85 15 15) - preservingMatrix $ do - translate (Vector3 (-0.75) (-0.5) (0 :: GLfloat)) - rotate (270 :: GLfloat) (Vector3 1 0 0) - renderObject Solid (Cone 1 2 15 15) - preservingMatrix $ do - translate (Vector3 0.75 0 (-1 :: GLfloat)) - renderObject Solid (Sphere' 1 15 15) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-2.5) 2.5 (-2.5 * hf/wf) (2.5 * hf/wf) (-10) 10 - else ortho (-2.5 * wf/hf) (2.5 * wf/hf) (-2.5) 2.5 (-10) 10 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - createWindow progName - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Scene.hs hunk ./GLUT/examples/RedBook/Select.hs 1 -{- - Select.hs (adapted from select.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This is an illustration of the selection mode and name stack, which detects - whether objects which collide with a viewing volume. First, four triangles - and a rectangular box representing a viewing volume are drawn (drawScene - routine). The green triangle and yellow triangles appear to lie within the - viewing volume, but the red triangle appears to lie outside it. Then the - selection mode is entered (selectObjects routine). Drawing to the screen - ceases. To see if any collisions occur, the four triangles are called. In - this example, the green triangle causes one hit with the name 1, and the - yellow triangles cause one hit with the name 3. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- draw a triangle with vertices at (x1, y1), (x2, y2) and (x3, y3) at z units --- away from the origin. -drawTriangle :: - Vertex2 GLfloat -> Vertex2 GLfloat -> Vertex2 GLfloat -> GLfloat -> IO () -drawTriangle (Vertex2 x1 y1) (Vertex2 x2 y2) (Vertex2 x3 y3) z = do - renderPrimitive Triangles $ mapM_ vertex [ - Vertex3 x1 y1 z, - Vertex3 x2 y2 z, - Vertex3 x3 y3 z] - --- draw a rectangular box with these outer x, y, and z values -drawViewVolume :: Vertex3 GLfloat -> Vertex3 GLfloat -> IO () -drawViewVolume (Vertex3 x1 y1 z1) (Vertex3 x2 y2 z2) = do - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 1 1 1) - renderPrimitive LineLoop $ mapM_ vertex [ - Vertex3 x1 y1 (-z1), - Vertex3 x2 y1 (-z1), - Vertex3 x2 y2 (-z1), - Vertex3 x1 y2 (-z1)] - - renderPrimitive LineLoop $ mapM_ vertex [ - Vertex3 x1 y1 (-z2), - Vertex3 x2 y1 (-z2), - Vertex3 x2 y2 (-z2), - Vertex3 x1 y2 (-z2)] - - renderPrimitive Lines $ mapM_ vertex [ -- 4 lines - Vertex3 x1 y1 (-z1), - Vertex3 x1 y1 (-z2), - Vertex3 x1 y2 (-z1), - Vertex3 x1 y2 (-z2), - Vertex3 x2 y1 (-z1), - Vertex3 x2 y1 (-z2), - Vertex3 x2 y2 (-z1), - Vertex3 x2 y2 (-z2)] - --- drawScene draws 4 triangles and a wire frame which represents the viewing --- volume. -drawScene :: IO () -drawScene = do - matrixMode $= Projection - loadIdentity - perspective 40 (4/3) 1 100 - - matrixMode $= Modelview 0 - loadIdentity - lookAt (Vertex3 7.5 7.5 12.5) (Vertex3 2.5 2.5 (-5)) (Vector3 0 1 0) - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 0 1 0) -- green triangle - drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-5) - color3f (Color3 1 0 0) -- red triangle - drawTriangle (Vertex2 2 7) (Vertex2 3 7) (Vertex2 2.5 8) (-5) - color3f (Color3 1 1 0) -- yellow triangles - drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-1) - drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-9) - drawViewVolume (Vertex3 0 0 0) (Vertex3 5 5 10) - -processHits :: Maybe [HitRecord] -> IO () -processHits Nothing = putStrLn "selection buffer overflow" -processHits (Just hitRecords) = do - putStrLn ("hits = " ++ show (length hitRecords)) - mapM_ (\(HitRecord z1 z2 names) -> do - putStrLn (" number of names for hit = " ++ show (length names)) - putStr (" z1 is " ++ show z1) - putStrLn ("; z2 is " ++ show z2) - putStr " the name is" - sequence_ [ putStr (" " ++ show n) | Name n <- names ] - putChar '\n') - hitRecords - --- selectObjects "draws" the triangles in selection mode, assigning names for --- the triangles. Note that the third and fourth triangles share one name, so --- that if either or both triangles intersects the viewing/clipping volume, --- only one hit will be registered. - -bufSize :: GLsizei -bufSize = 512 - -selectObjects :: IO () -selectObjects = do - (_, maybeHitRecords) <- getHitRecords bufSize $ do - withName (Name 0) $ do - preservingMatrix $ do - matrixMode $= Projection - loadIdentity - ortho 0 5 0 5 0 10 - matrixMode $= Modelview 0 - loadIdentity - loadName (Name 1) - drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-5) - loadName (Name 2) - drawTriangle (Vertex2 2 7) (Vertex2 3 7) (Vertex2 2.5 8) (-5) - loadName (Name 3) - drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-1) - drawTriangle (Vertex2 2 2) (Vertex2 3 2) (Vertex2 2.5 3) (-9) - flush - processHits maybeHitRecords - -myInit :: IO () -myInit = do - depthFunc $= Just Less - shadeModel $= Flat - -display :: DisplayCallback -display = do - clearColor $= Color4 0 0 0 0 - clear [ ColorBuffer, DepthBuffer ] - drawScene - selectObjects - flush - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 200 200 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Select.hs hunk ./GLUT/examples/RedBook/ShadowMap.hs 1 -{- - ShadowMap.hs (adapted from shadowmap.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( when, unless ) -import Data.IORef ( IORef, newIORef ) -import Foreign.Marshal.Array ( allocaArray ) -import Foreign.Ptr ( nullPtr ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -shadowMapSize :: TextureSize2D -shadowMapSize = TextureSize2D 256 256 - -fovy, nearPlane, farPlane :: GLdouble -fovy = 60 -nearPlane = 10 -farPlane = 100 - -lightPos :: Vertex4 GLfloat -lightPos = Vertex4 25 25 25 1 - -lookat :: Vertex3 GLdouble -lookat = Vertex3 0 0 0 - -up :: Vector3 GLdouble -up = Vector3 0 0 1 - -data State = State { - angle :: IORef GLdouble, - torusAngle :: IORef GLfloat, - showShadow :: IORef Bool, - animate :: IORef Bool, - funcMode :: IORef ComparisonFunction } - -makeState :: IO State -makeState = do - a <- newIORef 0 - t <- newIORef 0 - s <- newIORef False - n <- newIORef True - f <- newIORef Lequal - return $ State { angle = a, torusAngle = t, showShadow = s, - animate = n, funcMode = f } - -myInit :: IO () -myInit = do - texImage2D Nothing NoProxy 0 DepthComponent' shadowMapSize 0 - (PixelData DepthComponent UnsignedByte nullPtr) - - position (Light 0) $= lightPos - let white = Color4 1 1 1 1 - specular (Light 0) $= white - diffuse (Light 0) $= white - - textureWrapMode Texture2D S $= (Repeated, ClampToEdge) - textureWrapMode Texture2D T $= (Repeated, ClampToEdge) - textureFilter Texture2D $= ((Linear', Nothing), Linear') - textureCompareMode Texture2D $= Just Lequal - depthTextureMode Texture2D $= Luminance' - - colorMaterial $= Just (FrontAndBack, AmbientAndDiffuse) - - cullFace $= Just Back - - depthFunc $= Just Less - light (Light 0) $= Enabled - lighting $= Enabled - texture Texture2D $= Enabled - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective fovy (fromIntegral w / fromIntegral h) nearPlane farPlane - matrixMode $= Modelview 0 - -idle :: State -> IdleCallback -idle state = do - angle state $~! (+ (pi / 10000)) - torusAngle state $~! (+ 0.1) - postRedisplay Nothing - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = do - case c of - '\27' -> exitWith ExitSuccess - 't' -> - texture Texture2D $~ \cap -> if cap == Enabled then Disabled else Enabled - 'm' -> do - fm <- get (funcMode state) - textureCompareMode Texture2D $~ maybe (Just fm) (const Nothing) - compareMode <- get (textureCompareMode Texture2D) - putStrLn ("Compare mode " ++ maybe "Off" (const "On") compareMode) - 'f' -> do - funcMode state $~ \fm -> if fm == Lequal then Gequal else Lequal - fm <- get (funcMode state) - putStrLn ("Operator " ++ show fm) - textureCompareMode Texture2D $~ maybe Nothing (const (Just fm)) - 's' -> showShadow state $~ not - 'p' -> do - animate state $~ not - animate' <- get (animate state) - idleCallback $= if animate' then Just (idle state) else Nothing - _ -> return () - postRedisplay Nothing -keyboard _ _ _ _ _ = return () - -drawObjects :: GLfloat -> Bool -> IO () -drawObjects torusAngle' shadowRender = do - textureOn <- get (texture Texture2D) - - when shadowRender $ - texture Texture2D $= Disabled - - -- resolve overloading, not needed in "real" programs - let normal3f = normal :: Normal3 GLfloat -> IO () - color3f = color :: Color3 GLfloat -> IO () - rectf = rect :: Vertex2 GLfloat -> Vertex2 GLfloat -> IO () - translatef = translate :: Vector3 GLfloat -> IO () - rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () - - unless shadowRender $ do - normal3f (Normal3 0 0 1) - color3f (Color3 1 1 1) - rectf (Vertex2 (-20) (-20)) (Vertex2 20 20) - - preservingMatrix $ do - translatef (Vector3 11 11 11) - rotatef 54.73 (Vector3 (-5) 5 0) - rotate torusAngle' (Vector3 1 0 0) - color3f (Color3 1 0 0) - renderObject Solid (Torus 1 4 8 36) - - preservingMatrix $ do - translatef (Vector3 2 2 2) - color3f (Color3 0 0 1) - renderObject Solid (Cube 4) - - preservingMatrix $ do - getLightPos Vector3 >>= translate - color3f (Color3 1 1 1) - renderObject Wireframe (Sphere' 0.5 6 6) - - when (shadowRender && textureOn == Enabled) $ - texture Texture2D $= Enabled - -getLightPos :: (GLdouble -> GLdouble -> GLdouble -> a) -> IO a -getLightPos f = do - Vertex4 x y z _ <- get (position (Light 0)) - return $ f (realToFrac x) (realToFrac y) (realToFrac z) - -generateShadowMap :: GLfloat -> Bool -> IO () -generateShadowMap torusAngle' showShadow' = do - lightPos' <- getLightPos Vertex3 - let (TextureSize2D shadowMapWidth shadowMapHeight) = shadowMapSize - shadowMapSize' = Size shadowMapWidth shadowMapHeight - - preservingViewport $ do - viewport $= (Position 0 0, shadowMapSize') - - clear [ ColorBuffer, DepthBuffer ] - - matrixMode $= Projection - preservingMatrix $ do - loadIdentity - perspective 80 1 10 1000 - matrixMode $= Modelview 0 - preservingMatrix $ do - loadIdentity - lookAt lightPos' lookat up - drawObjects torusAngle' True - matrixMode $= Projection - matrixMode $= Modelview 0 - - copyTexImage2D Nothing 0 DepthComponent' (Position 0 0) shadowMapSize 0 - - when showShadow' $ do - let numShadowMapPixels = fromIntegral (shadowMapWidth * shadowMapHeight) - allocaArray numShadowMapPixels $ \depthImage -> do - let pixelData fmt = PixelData fmt Float depthImage :: PixelData GLfloat - readPixels (Position 0 0) shadowMapSize' (pixelData DepthComponent) - (_, Size viewPortWidth _) <- get viewport - windowPos (Vertex2 (fromIntegral viewPortWidth / 2 :: GLfloat) 0) - drawPixels shadowMapSize' (pixelData Luminance) - swapBuffers - --- Note: preservingViewport is not exception safe, but it doesn't matter here -preservingViewport :: IO a -> IO a -preservingViewport act = do - v <- get viewport - x <- act - viewport $= v - return x - -generateTextureMatrix :: IO () -generateTextureMatrix = do - -- Set up projective texture matrix. We use the Modelview matrix stack and - -- OpenGL matrix commands to make the matrix. - m <- preservingMatrix $ do - loadIdentity - -- resolve overloading, not needed in "real" programs - let translatef = translate :: Vector3 GLfloat -> IO () - scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () - translatef (Vector3 0.5 0.5 0.0) - scalef 0.5 0.5 1.0 - perspective 60 1 1 1000 - lightPos' <- getLightPos Vertex3 - lookAt lightPos' lookat up - get (matrix (Just (Modelview 0))) - - [ sx, sy, sz, sw, - tx, ty, tz, tw, - rx, ry, rz, rw, - qx, qy, qz, qw ] <- getMatrixComponents RowMajor (m :: GLmatrix GLdouble) - - textureGenMode S $= Just (ObjectLinear (Plane sx sy sz sw)) - textureGenMode T $= Just (ObjectLinear (Plane tx ty tz tw)) - textureGenMode R $= Just (ObjectLinear (Plane rx ry rz rw)) - textureGenMode Q $= Just (ObjectLinear (Plane qx qy qz qw)) - -display :: State -> DisplayCallback -display state = do - let radius = 30 - torusAngle' <- get (torusAngle state) - showShadow' <- get (showShadow state) - generateShadowMap torusAngle' showShadow' - generateTextureMatrix - unless showShadow' $ do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - angle' <- get (angle state) - lookAt (Vertex3 (radius * cos angle') (radius * sin angle') 30) lookat up - drawObjects torusAngle' False - swapBuffers - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ RGBAMode, WithDepthBuffer, DoubleBuffered ] - initialWindowSize $= Size 521 512 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - myInit - displayCallback $= display state - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - idleCallback $= Just (idle state) - - mainLoop rmfile ./GLUT/examples/RedBook/ShadowMap.hs hunk ./GLUT/examples/RedBook/Smooth.hs 1 -{- - Smooth.hs (adapted from smooth.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates smooth shading. A smooth shaded polygon is drawn in - a 2-D projection. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Smooth - -triangle :: IO () -triangle = - -- resolve overloading, not needed in "real" programs - let vertex2f = vertex :: Vertex2 GLfloat -> IO () - color3f = color :: Color3 GLfloat -> IO () - in renderPrimitive Triangles $ do - color3f (Color3 1 0 0) - vertex2f (Vertex2 5 5) - color3f (Color3 0 1 0) - vertex2f (Vertex2 25 5) - color3f (Color3 0 0 1) - vertex2f (Vertex2 5 25) - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - triangle - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D 0 30 0 (30 * hf/wf) - else ortho2D 0 (30 * wf/hf) 0 30 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Smooth.hs hunk ./GLUT/examples/RedBook/Stencil.hs 1 -{- - Stencil.hs (adapted from stencil.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates use of the stencil buffer for masking - nonrectangular regions. Whenever the window is redrawn, a value of 1 is drawn - into a diamond-shaped region in the stencil buffer. Elsewhere in the stencil - buffer, the value is 0. Then a blue sphere is drawn where the stencil value - is 1, and yellow torii are drawn where the stencil value is not 1. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data DisplayLists = DisplayLists { yellowMat, blueMat :: DisplayList } - -myInit :: IO DisplayLists -myInit = do - y <- defineNewList Compile $ do - materialDiffuse Front $= Color4 0.7 0.7 0 1 - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 64 - - b <- defineNewList Compile $ do - materialDiffuse Front $= Color4 0.1 0.1 0.7 1 - materialSpecular Front $= Color4 0.1 1 1 1 - materialShininess Front $= 45 - - position (Light 0) $= Vertex4 1 1 1 0 - - light (Light 0) $= Enabled - lighting $= Enabled - depthFunc $= Just Less - - clearStencil $= 0 - stencilTest $= Enabled - - return $ DisplayLists { yellowMat = y, blueMat = b } - --- Draw a sphere in a diamond-shaped section in the middle of a window with 2 --- torii. -display :: DisplayLists -> DisplayCallback -display displayLists = do - clear [ ColorBuffer, DepthBuffer ] - - -- draw blue sphere where the stencil is 1 - stencilFunc $= (Equal, 1, 1) - stencilOp $= (OpKeep, OpKeep, OpKeep) - callList (blueMat displayLists) - renderObject Solid (Sphere' 0.5 15 15) - - -- resolve overloading, not needed in "real" programs - let rotatef = rotate :: GLfloat -> Vector3 GLfloat -> IO () - - -- draw the tori where the stencil is not 1 - stencilFunc $= (Notequal, 1, 1) - preservingMatrix $ do - rotatef 45 (Vector3 0 0 1) - rotatef 45 (Vector3 0 1 0) - callList (yellowMat displayLists) - renderObject Solid (Torus 0.275 0.85 15 15) - preservingMatrix $ do - rotatef 90 (Vector3 1 0 0) - renderObject Solid (Torus 0.275 0.85 15 15) - - flush - --- Whenever the window is reshaped, redefine the coordinate system and redraw --- the stencil area. -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - - -- create a diamond shaped stencil area - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D (-3) 3 (-3*hf/wf) (3*hf/wf) - else ortho2D (-3*wf/hf) (3*wf/hf) (-3) 3 - matrixMode $= Modelview 0 - loadIdentity - - -- resolve overloading, not needed in "real" programs - let vertex2f = vertex :: Vertex2 GLfloat -> IO () - translatef = translate :: Vector3 GLfloat -> IO () - - clear [ StencilBuffer ] - stencilFunc $= (Always, 1, 1) - stencilOp $= (OpReplace, OpReplace, OpReplace) - renderPrimitive Quads $ do - vertex2f (Vertex2 (-1) 0) - vertex2f (Vertex2 0 1) - vertex2f (Vertex2 1 0) - vertex2f (Vertex2 0 (-1)) - - matrixMode $= Projection - loadIdentity - perspective 45 (wf/hf) 3 7 - matrixMode $= Modelview 0 - loadIdentity - translatef (Vector3 0 0 (-5)) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop: Be certain to request stencil bits. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer, WithStencilBuffer ] - initialWindowSize $= Size 400 400 - initialWindowPosition $= Position 100 100 - createWindow progName - displayLists <- myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display displayLists - mainLoop rmfile ./GLUT/examples/RedBook/Stencil.hs hunk ./GLUT/examples/RedBook/Stroke.hs 1 -{- - Stroke.hs (adapted from stroke.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates some characters of a stroke (vector) font. The - characters are represented by display lists, which are given numbers which - correspond to the ASCII values of the characters. Use of callLists is - demonstrated. --} - -import Data.List ( genericLength ) -import Foreign.C.String ( castCharToCChar ) -import Foreign.Marshal.Array ( withArray ) -import Graphics.UI.GLUT -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) - -aData, eData, pData, rData, sData :: [[Vertex2 GLfloat]] -aData = [ - [ Vertex2 0 0, Vertex2 0 9, Vertex2 1 10, Vertex2 4 10, Vertex2 5 9, - Vertex2 5 0 ], - [ Vertex2 0 5, Vertex2 5 5 ] ] - -eData = [ - [ Vertex2 5 0, Vertex2 0 0, Vertex2 0 10, Vertex2 5 10 ], - [ Vertex2 0 5, Vertex2 4 5 ] ] - -pData = [ - [ Vertex2 0 0, Vertex2 0 10, Vertex2 4 10, Vertex2 5 9, Vertex2 5 6, - Vertex2 4 5, Vertex2 0 5 ] ] - -rData = [ - [ Vertex2 0 0, Vertex2 0 10, Vertex2 4 10, Vertex2 5 9, Vertex2 5 6, - Vertex2 4 5, Vertex2 0 5 ], - [ Vertex2 3 5, Vertex2 5 0 ] ] - -sData = [ - [ Vertex2 0 1, Vertex2 1 0, Vertex2 4 0, Vertex2 5 1, Vertex2 5 4, - Vertex2 4 5, Vertex2 1 5, Vertex2 0 6, Vertex2 0 9, Vertex2 1 10, - Vertex2 4 10, Vertex2 5 9 ] ] - -advance :: IO () -advance = translate (Vector3 8 0 (0 :: GLfloat)) - --- drawLetter renders a letter with line segments given by the list of line --- strips. -drawLetter :: [[Vertex2 GLfloat]] -> IO () -drawLetter lineStrips = do - mapM_ (renderPrimitive LineStrip . mapM_ vertex) lineStrips - advance - -charToGLubyte :: Char -> GLubyte -charToGLubyte = fromIntegral . castCharToCChar - -myInit :: IO () -myInit = do - shadeModel $= Flat - - (base@(DisplayList b):_) <- genObjectNames 128 - listBase $= base - let charToDisplayList c = DisplayList (b + fromIntegral (charToGLubyte c)) - mapM_ (\(c, d) -> defineList (charToDisplayList c) Compile d) - [ ('A', drawLetter aData), - ('E', drawLetter eData), - ('P', drawLetter pData), - ('R', drawLetter rData), - ('S', drawLetter sData), - (' ', advance) ] - -test1, test2 :: String -test1 = "A SPARE SERAPE APPEARS AS" -test2 = "APES PREPARE RARE PEPPERS" - -printStrokedString :: String -> IO () -printStrokedString s = - withArray (map charToGLubyte s) $ - callLists (genericLength s) UnsignedByte - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - scalef = scale :: GLfloat -> GLfloat -> GLfloat -> IO () - translatef = translate :: Vector3 GLfloat -> IO () - - color3f (Color3 1 1 1) - preservingMatrix $ do - scalef 2 2 2 - translatef (Vector3 10 30 0) - printStrokedString test1 - preservingMatrix $ do - scalef 2 2 2 - translatef (Vector3 10 13 0) - printStrokedString test2 - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 (fromIntegral w) 0 (fromIntegral h) - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char c) Down _ _ = case c of - ' ' -> postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ = return () - --- Main Loop: Open window with initial window size, title bar, RGBA display --- mode, and handle input events. -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 440 120 - createWindow progName - myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - displayCallback $= display - mainLoop rmfile ./GLUT/examples/RedBook/Stroke.hs hunk ./GLUT/examples/RedBook/SurfPoints.hs 1 -{- - SurfPoints.hs (adapted from surfpoints.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program is a modification of the earlier Surface.hs program. The - vertex data are not directly rendered, but are instead passed to the - callback function. The values of the tessellated vertices are printed - out there. - - This program draws a NURBS surface in the shape of a symmetrical hill. - The 'c' keyboard key allows you to toggle the visibility of the control - points themselves. Note that some of the control points are hidden by - the surface itself. - - NOTE: This example does NOT demonstrate the final NURBS API, it's currently - just a test for the internals... --} - -import Control.Monad ( when ) -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import Foreign.Marshal ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) -import Graphics.UI.GLUT - -data State = State { showPoints :: IORef Bool } - -makeState :: IO State -makeState = do - s <- newIORef False - return $ State { showPoints = s } - --- The control points of the surface form a small hill and --- range from -3 to +3 in x, y, and z. -ctlPoints :: [[Vertex3 GLfloat]] -ctlPoints = - [ [ Vertex3 (2 * u - 3) - (2 * v - 3) - (if (u == 1 || u ==2) && (v == 1 || v == 2) then 3 else -3) - | v <- [ 0 .. 3 ] ] - | u <- [ 0 .. 3 ]] - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - materialDiffuse Front $= Color4 0.7 0.7 0.7 1 - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 100 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - autoNormal $= Enabled - normalize $= Enabled - --------------------------------------------------------------------------------- - -display :: State -> DisplayCallback -display state = do - let knots = [ 0, 0, 0, 0, 1, 1, 1, 1 ] :: [GLfloat] - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - rotate (330 :: GLfloat) (Vector3 1 0 0) - scale 0.5 0.5 (0.5 :: GLfloat) - - withNURBSObj () $ \nurbsObj -> do - setNURBSMode nurbsObj NURBSTessellator - setSamplingMethod nurbsObj (PathLength 25) - setDisplayMode' nurbsObj Fill' - checkForNURBSError nurbsObj $ - withNURBSBeginCallback nurbsObj print $ - withNURBSVertexCallback nurbsObj print $ - withNURBSNormalCallback nurbsObj print $ - withNURBSEndCallback nurbsObj (putStrLn "end") $ - nurbsBeginEndSurface nurbsObj $ - withArray (concat ctlPoints) $ \cBuf -> - withArray knots $ \kBuf -> - nurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 cBuf 4 4 - - s <- get (showPoints state) - when s $ do - pointSize $= 5 - lighting $= Disabled - color (Color3 1 1 (0 :: GLfloat)) - renderPrimitive Points $ - mapM_ (mapM_ vertex) ctlPoints - lighting $= Enabled - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 45 (fromIntegral w / fromIntegral h) 3 8 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-5 :: GLfloat)) - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case toLower c of - 'c' -> do showPoints state $~ not; postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - version <- get (majorMinor gluVersion) - when (version < (1,3)) $ do - putStrLn "This program demonstrates a feature which is introduced in the" - putStrLn "OpenGL Utility Library (GLU) Version 1.3." - putStrLn "If your implementation of GLU has the right extensions," - putStrLn "you may be able to modify this program to make it run." - exitFailure - state <- makeState - myInit - reshapeCallback $= Just reshape - displayCallback $= display state - keyboardMouseCallback $= Just (keyboard state) - mainLoop rmfile ./GLUT/examples/RedBook/SurfPoints.hs hunk ./GLUT/examples/RedBook/Surface.hs 1 -{- - Surface.hs (adapted from surface.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws a NURBS surface in the shape of a symmetrical hill. - The 'c' keyboard key allows you to toggle the visibility of the control - points themselves. Note that some of the control points are hidden by - the surface itself. - - NOTE: This example does NOT demonstrate the final NURBS API, it's currently - just a test for the internals... --} - -import Control.Monad ( when ) -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import Foreign.Marshal ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { showPoints :: IORef Bool } - -makeState :: IO State -makeState = do - s <- newIORef False - return $ State { showPoints = s } - --- The control points of the surface form a small hill and --- range from -3 to +3 in x, y, and z. -ctlPoints :: [[Vertex3 GLfloat]] -ctlPoints = - [ [ Vertex3 (2 * u - 3) - (2 * v - 3) - (if (u == 1 || u ==2) && (v == 1 || v == 2) then 3 else -3) - | v <- [ 0 .. 3 ] ] - | u <- [ 0 .. 3 ]] - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - materialDiffuse Front $= Color4 0.7 0.7 0.7 1 - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 100 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - autoNormal $= Enabled - normalize $= Enabled - --------------------------------------------------------------------------------- - -display :: State -> DisplayCallback -display state = do - let knots = [ 0, 0, 0, 0, 1, 1, 1, 1 ] :: [GLfloat] - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - rotate (330 :: GLfloat) (Vector3 1 0 0) - scale 0.5 0.5 (0.5 :: GLfloat) - - withNURBSObj () $ \nurbsObj -> do - setSamplingMethod nurbsObj (PathLength 25) - setDisplayMode' nurbsObj Fill' - checkForNURBSError nurbsObj $ - nurbsBeginEndSurface nurbsObj $ - withArray (concat ctlPoints) $ \cBuf -> - withArray knots $ \kBuf -> - nurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 cBuf 4 4 - - s <- get (showPoints state) - when s $ do - pointSize $= 5 - lighting $= Disabled - color (Color3 1 1 (0 :: GLfloat)) - renderPrimitive Points $ - mapM_ (mapM_ vertex) ctlPoints - lighting $= Enabled - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 45 (fromIntegral w / fromIntegral h) 3 8 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-5 :: GLfloat)) - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case toLower c of - 'c' -> do showPoints state $~ not; postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - state <- makeState - myInit - reshapeCallback $= Just reshape - displayCallback $= display state - keyboardMouseCallback $= Just (keyboard state) - mainLoop rmfile ./GLUT/examples/RedBook/Surface.hs hunk ./GLUT/examples/RedBook/Teapots.hs 1 -{- - Teapots.hs (adapted from teapots.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates lots of material properties. A single light - source illuminates the objects. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Initialize depth buffer, projection matrix, light source, and lighting --- model. Do not specify a material property here. -myInit :: IO DisplayList -myInit = do - ambient (Light 0) $= Color4 0 0 0 1 - diffuse (Light 0) $= Color4 1 1 1 1 - position (Light 0) $= Vertex4 0 3 3 0 - lightModelAmbient $= Color4 0.2 0.2 0.2 1 - lightModelLocalViewer $= Disabled - - frontFace $= CW - lighting $= Enabled - light (Light 0) $= Enabled - autoNormal $= Enabled - normalize $= Enabled - depthFunc $= Just Less - -- be efficient--make teapot display list - defineNewList Compile $ - renderObject Solid (Teapot 1) - --- Move object into position, specify the material properties, draw a teapot. -renderTeapot :: DisplayList -> Vector3 GLfloat -> Color4 GLfloat - -> Color4 GLfloat -> Color4 GLfloat -> GLfloat -> IO () -renderTeapot teapotList pos amb dif spec shine = do - preservingMatrix $ do - translate pos - materialAmbient Front $= amb - materialDiffuse Front $= dif - materialSpecular Front $= spec - materialShininess Front $= shine * 128 - callList teapotList - --- 1st column: emerald, jade, obsidian, pearl, ruby, turquoise --- 2nd column: brass, bronze, chrome, copper, gold, silver --- 3rd column: black, cyan, green, red, white, yellow plastic --- 4th column: black, cyan, green, red, white, yellow rubber -display :: DisplayList -> DisplayCallback -display teapotList = do - clear [ ColorBuffer, DepthBuffer ] - renderTeapot teapotList - (Vector3 2 17 0) - (Color4 0.0215 0.1745 0.0215 1) - (Color4 0.07568 0.61424 0.07568 1) - (Color4 0.633 0.727811 0.633 1) - 0.6 - renderTeapot teapotList - (Vector3 2 14 0) - (Color4 0.135 0.2225 0.1575 1) - (Color4 0.54 0.89 0.63 1) - (Color4 0.316228 0.316228 0.316228 1) - 0.1 - renderTeapot teapotList - (Vector3 2 11 0) - (Color4 0.05375 0.05 0.06625 1) - (Color4 0.18275 0.17 0.22525 1) - (Color4 0.332741 0.328634 0.346435 1) - 0.3 - renderTeapot teapotList - (Vector3 2 8 0) - (Color4 0.25 0.20725 0.20725 1) - (Color4 1 0.829 0.829 1) - (Color4 0.296648 0.296648 0.296648 1) - 0.088 - renderTeapot teapotList - (Vector3 2 5 0) - (Color4 0.1745 0.01175 0.01175 1) - (Color4 0.61424 0.04136 0.04136 1) - (Color4 0.727811 0.626959 0.626959 1) - 0.6 - renderTeapot teapotList - (Vector3 2 2 0) - (Color4 0.1 0.18725 0.1745 1) - (Color4 0.396 0.74151 0.69102 1) - (Color4 0.297254 0.30829 0.306678 1) - 0.1 - renderTeapot teapotList - (Vector3 6 17 0) - (Color4 0.329412 0.223529 0.027451 1) - (Color4 0.780392 0.568627 0.113725 1) - (Color4 0.992157 0.941176 0.807843 1) - 0.21794872 - renderTeapot teapotList - (Vector3 6 14 0) - (Color4 0.2125 0.1275 0.054 1) - (Color4 0.714 0.4284 0.18144 1) - (Color4 0.393548 0.271906 0.166721 1) - 0.2 - renderTeapot teapotList - (Vector3 6 11 0) - (Color4 0.25 0.25 0.25 1) - (Color4 0.4 0.4 0.4 1) - (Color4 0.774597 0.774597 0.774597 1) - 0.6 - renderTeapot teapotList - (Vector3 6 8 0) - (Color4 0.19125 0.0735 0.0225 1) - (Color4 0.7038 0.27048 0.0828 1) - (Color4 0.256777 0.137622 0.086014 1) - 0.1 - renderTeapot teapotList - (Vector3 6 5 0) - (Color4 0.24725 0.1995 0.0745 1) - (Color4 0.75164 0.60648 0.22648 1) - (Color4 0.628281 0.555802 0.366065 1) - 0.4 - renderTeapot teapotList - (Vector3 6 2 0) - (Color4 0.19225 0.19225 0.19225 1) - (Color4 0.50754 0.50754 0.50754 1) - (Color4 0.508273 0.508273 0.508273 1) - 0.4 - renderTeapot teapotList - (Vector3 10 17 0) - (Color4 0 0 0 1) - (Color4 0.01 0.01 0.01 1) - (Color4 0.50 0.50 0.50 1) - 0.25 - renderTeapot teapotList - (Vector3 10 14 0) - (Color4 0 0.1 0.06 1) - (Color4 0 0.50980392 0.50980392 1) - (Color4 0.50196078 0.50196078 0.50196078 1) - 0.25 - renderTeapot teapotList - (Vector3 10 11 0) - (Color4 0 0 0 1) - (Color4 0.1 0.35 0.1 1) - (Color4 0.45 0.55 0.45 1) - 0.25 - renderTeapot teapotList - (Vector3 10 8 0) - (Color4 0 0 0 1) - (Color4 0.5 0 0 1) - (Color4 0.7 0.6 0.6 1) - 0.25 - renderTeapot teapotList - (Vector3 10 5 0) - (Color4 0 0 0 1) - (Color4 0.55 0.55 0.55 1) - (Color4 0.70 0.70 0.70 1) - 0.25 - renderTeapot teapotList - (Vector3 10 2 0) - (Color4 0 0 0 1) - (Color4 0.5 0.5 0 1) - (Color4 0.60 0.60 0.50 1) - 0.25 - renderTeapot teapotList - (Vector3 14 17 0) - (Color4 0.02 0.02 0.02 1) - (Color4 0.01 0.01 0.01 1) - (Color4 0.4 0.4 0.4 1) - 0.078125 - renderTeapot teapotList - (Vector3 14 14 0) - (Color4 0 0.05 0.05 1) - (Color4 0.4 0.5 0.5 1) - (Color4 0.04 0.7 0.7 1) - 0.078125 - renderTeapot teapotList - (Vector3 14 11 0) - (Color4 0 0.05 0 1) - (Color4 0.4 0.5 0.4 1) - (Color4 0.04 0.7 0.04 1) - 0.078125 - renderTeapot teapotList - (Vector3 14 8 0) - (Color4 0.05 0 0 1) - (Color4 0.5 0.4 0.4 1) - (Color4 0.7 0.04 0.04 1) - 0.078125 - renderTeapot teapotList - (Vector3 14 5 0) - (Color4 0.05 0.05 0.05 1) - (Color4 0.5 0.5 0.5 1) - (Color4 0.7 0.7 0.7 1) - 0.078125 - renderTeapot teapotList - (Vector3 14 2 0) - (Color4 0.05 0.05 0 1) - (Color4 0.5 0.5 0.4 1) - (Color4 0.7 0.7 0.04 1) - 0.078125 - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho 0 16 0 (16 * hf/wf) (-10) 10 - else ortho 0 (16 * wf/hf) 0 16 (-10) 10 - matrixMode $= Modelview 0 - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 600 - initialWindowPosition $= Position 50 50 - createWindow progName - teapotList <- myInit - reshapeCallback $= Just reshape - displayCallback $= display teapotList - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Teapots.hs hunk ./GLUT/examples/RedBook/Tess.hs 1 -{- - Tess.hs (adapted from tess.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates polygon tessellation. Two tesselated objects are - drawn. The first is a rectangle with a triangular hole. The second is a - smooth shaded, self-intersecting star. - - Note the exterior rectangle is drawn with its vertices in counter-clockwise - order, but its interior clockwise. Note the combineCallback is needed for the - self-intersecting star. Also note that removing the TessProperty for the - star will make the interior unshaded (TessWindingOdd). --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -display :: [DisplayList] -> DisplayCallback -display displayLists = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 1 1 1) - mapM callList displayLists - flush - --- 'Float' is a dummy, any marshalable type would do -type DontCare = Float - -rectangle :: ComplexContour DontCare -rectangle = ComplexContour [ - AnnotatedVertex (Vertex3 50 50 0) 0, - AnnotatedVertex (Vertex3 200 50 0) 0, - AnnotatedVertex (Vertex3 200 200 0) 0, - AnnotatedVertex (Vertex3 50 200 0) 0 ] - -tri :: ComplexContour DontCare -tri = ComplexContour [ - AnnotatedVertex (Vertex3 75 75 0) 0, - AnnotatedVertex (Vertex3 125 175 0) 0, - AnnotatedVertex (Vertex3 175 75 0) 0 ] - -rectAndTri :: ComplexPolygon DontCare -rectAndTri = ComplexPolygon [ rectangle, tri ] - -noOpCombiner :: Combiner DontCare -noOpCombiner _newVertex _weightedProperties = 0 - -star :: ComplexPolygon (Color3 GLclampf) -star = ComplexPolygon [ - ComplexContour [ - AnnotatedVertex (Vertex3 250 50 0) (Color3 1 0 1), - AnnotatedVertex (Vertex3 325 200 0) (Color3 1 1 0), - AnnotatedVertex (Vertex3 400 50 0) (Color3 0 1 1), - AnnotatedVertex (Vertex3 250 150 0) (Color3 1 0 0), - AnnotatedVertex (Vertex3 400 150 0) (Color3 0 1 0) ] ] - -combineColors :: Combiner (Color3 GLclampf) -combineColors - _newVertex - (WeightedProperties - (w0, Color3 r0 g0 b0) - (w1, Color3 r1 g1 b1) - (w2, Color3 r2 g2 b2) - (w3, Color3 r3 g3 b3)) = - Color3 (w0*r0 + w1*r1 + w2*r2 + w3*r3) - (w0*g0 + w1*g1 + w2*g2 + w3*g3) - (w0*b0 + w1*b1 + w2*b2 + w3*b3) - -myInit :: IO [DisplayList] -myInit = do - clearColor $= Color4 0 0 0 0 - - rectAndTriList <- defineNewList Compile $ - drawSimplePolygon (\_ -> return ()) =<< - tessellate TessWindingOdd 0 (Normal3 0 0 0) noOpCombiner rectAndTri - - starList <- defineNewList Compile $ - drawSimplePolygon color =<< - tessellate TessWindingPositive 0 (Normal3 0 0 0) combineColors star - - return [ rectAndTriList, starList ] - -drawSimplePolygon :: (v -> IO ()) -> SimplePolygon v -> IO () -drawSimplePolygon colorHandler (SimplePolygon primitives) = - flip mapM_ primitives $ \(Primitive primitiveMode vertices) -> - renderPrimitive primitiveMode $ - flip mapM_ vertices $ \(AnnotatedVertex plainVertex col) -> do - colorHandler col - vertex plainVertex - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 (fromIntegral w) 0 (fromIntegral h) - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - createWindow progName - displayLists <- myInit - displayCallback $= display displayLists - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Tess.hs hunk ./GLUT/examples/RedBook/TessWind.hs 1 -{- - TessWind.hs (adapted from tesswind.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates the winding rule polygon tessellation property. - Four tessellated objects are drawn, each with very different contours. When - the w key is pressed, the objects are drawn with a different winding rule. --} - -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { currentWindingRule :: IORef TessWinding } - -makeState :: IO State -makeState = do - c <- newIORef TessWindingOdd - return $ State { currentWindingRule = c } - -type DisplayLists = (DisplayList, DisplayList, DisplayList, DisplayList) - --- 'Float' is a dummy, any marshalable type would do -type DontCare = Float - -rect1 :: ComplexContour DontCare -rect1 = ComplexContour [ - AnnotatedVertex (Vertex3 50 50 0) 0, - AnnotatedVertex (Vertex3 300 50 0) 0, - AnnotatedVertex (Vertex3 300 300 0) 0, - AnnotatedVertex (Vertex3 50 300 0) 0 ] - -rect2 :: ComplexContour DontCare -rect2 = ComplexContour [ - AnnotatedVertex (Vertex3 100 100 0) 0, - AnnotatedVertex (Vertex3 250 100 0) 0, - AnnotatedVertex (Vertex3 250 250 0) 0, - AnnotatedVertex (Vertex3 100 250 0) 0 ] - -rect3 :: ComplexContour DontCare -rect3 = ComplexContour [ - AnnotatedVertex (Vertex3 150 150 0) 0, - AnnotatedVertex (Vertex3 200 150 0) 0, - AnnotatedVertex (Vertex3 200 200 0) 0, - AnnotatedVertex (Vertex3 150 200 0) 0 ] - -rects1 :: ComplexPolygon DontCare -rects1 = ComplexPolygon [ rect1, rect2, rect3 ] - -rects2 :: ComplexPolygon DontCare -rects2 = ComplexPolygon [ - rect1, reverseComplexContour rect2, reverseComplexContour rect3 ] - -spiral :: ComplexPolygon DontCare -spiral = ComplexPolygon [ - ComplexContour [ - AnnotatedVertex (Vertex3 400 250 0) 0, - AnnotatedVertex (Vertex3 400 50 0) 0, - AnnotatedVertex (Vertex3 50 50 0) 0, - AnnotatedVertex (Vertex3 50 400 0) 0, - AnnotatedVertex (Vertex3 350 400 0) 0, - AnnotatedVertex (Vertex3 350 100 0) 0, - AnnotatedVertex (Vertex3 100 100 0) 0, - AnnotatedVertex (Vertex3 100 350 0) 0, - AnnotatedVertex (Vertex3 300 350 0) 0, - AnnotatedVertex (Vertex3 300 150 0) 0, - AnnotatedVertex (Vertex3 150 150 0) 0, - AnnotatedVertex (Vertex3 150 300 0) 0, - AnnotatedVertex (Vertex3 250 300 0) 0, - AnnotatedVertex (Vertex3 250 200 0) 0, - AnnotatedVertex (Vertex3 200 200 0) 0, - AnnotatedVertex (Vertex3 200 250 0) 0 ] ] - -quad1 :: ComplexContour DontCare -quad1 = ComplexContour [ - AnnotatedVertex (Vertex3 50 150 0) 0, - AnnotatedVertex (Vertex3 350 150 0) 0, - AnnotatedVertex (Vertex3 350 200 0) 0, - AnnotatedVertex (Vertex3 50 200 0) 0 ] - -quad2 :: ComplexContour DontCare -quad2 = ComplexContour [ - AnnotatedVertex (Vertex3 100 100 0) 0, - AnnotatedVertex (Vertex3 300 100 0) 0, - AnnotatedVertex (Vertex3 300 350 0) 0, - AnnotatedVertex (Vertex3 100 350 0) 0 ] - -tri :: ComplexContour DontCare -tri = ComplexContour [ - AnnotatedVertex (Vertex3 200 50 0) 0, - AnnotatedVertex (Vertex3 250 300 0) 0, - AnnotatedVertex (Vertex3 150 300 0) 0 ] - -quadsAndTri :: ComplexPolygon DontCare -quadsAndTri = ComplexPolygon [ quad1, quad2, tri ] - -reverseComplexContour :: ComplexContour DontCare -> ComplexContour DontCare -reverseComplexContour (ComplexContour avs) = ComplexContour (reverse avs) - -makeNewLists :: State -> DisplayLists -> IO () -makeNewLists state (dl1, dl2, dl3, dl4) = do - windingRule <- get (currentWindingRule state) - print windingRule -- not in original program, but useful - compileList windingRule dl1 rects1 - compileList windingRule dl2 rects2 - compileList windingRule dl3 spiral - compileList windingRule dl4 quadsAndTri - -compileList :: TessWinding -> DisplayList -> ComplexPolygon DontCare -> IO () -compileList windingRule displayList complexPolygon = - defineList displayList Compile $ - drawSimplePolygon =<< - tessellate windingRule 0 (Normal3 0 0 0) noOpCombiner complexPolygon - -noOpCombiner :: Combiner DontCare -noOpCombiner _newVertex _weightedProperties = 0 - -drawSimplePolygon :: SimplePolygon DontCare -> IO () -drawSimplePolygon (SimplePolygon primitives) = - flip mapM_ primitives $ \(Primitive primitiveMode vertices) -> - renderPrimitive primitiveMode $ - flip mapM_ vertices $ \(AnnotatedVertex plainVertex _) -> - vertex plainVertex - -display :: DisplayLists -> DisplayCallback -display (dl1, dl2, dl3, dl4) = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - translatef = translate :: Vector3 GLfloat -> IO () - color3f (Color3 1 1 1) - preservingMatrix $ do - callList dl1 - translatef (Vector3 0 500 0) - callList dl2 - translatef (Vector3 500 (-500) 0) - callList dl3 - translatef (Vector3 0 500 0) - callList dl4 - flush - -myInit :: State -> IO DisplayLists -myInit state = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - [dl1, dl2, dl3, dl4] <- genObjectNames 4 - let displayLists = (dl1, dl2, dl3, dl4) - makeNewLists state displayLists - return displayLists - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho2D 0 1000 0 (1000 * hf/wf) - else ortho2D 0 (1000 * wf/hf) 0 1000 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: State -> DisplayLists -> KeyboardMouseCallback -keyboard state displayLists (Char c) Down _ _ = case toLower c of - 'w' -> do currentWindingRule state $~ nextWindingRule - makeNewLists state displayLists - postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ _ = return () - -nextWindingRule :: TessWinding -> TessWinding -nextWindingRule r = case r of - TessWindingOdd -> TessWindingNonzero - TessWindingNonzero -> TessWindingPositive - TessWindingPositive -> TessWindingNegative - TessWindingNegative -> TessWindingAbsGeqTwo - TessWindingAbsGeqTwo -> TessWindingOdd - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - createWindow progName - state <- makeState - displayLists <- myInit state - displayCallback $= display displayLists - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state displayLists) - mainLoop rmfile ./GLUT/examples/RedBook/TessWind.hs hunk ./GLUT/examples/RedBook/TexBind.hs 1 -{- - TexBind.hs (adapted from texbind.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates using textureBinding by creating and managing - two textures. --} - -import Control.Monad ( when ) -import Data.Bits ( (.&.) ) -import Foreign ( withArray ) -import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Create checkerboard image -checkImageSize :: TextureSize2D -checkImageSize = TextureSize2D 64 64 - -withCheckImage :: TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) - -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () -withCheckImage (TextureSize2D w h) n f act = - withArray [ f c | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ], - let c | (i .&. n) == (j .&. n) = 0 - | otherwise = 255 ] $ - act . PixelData RGBA UnsignedByte - -myInit :: IO (TextureObject, TextureObject) -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - depthFunc $= Just Less - rowAlignment Unpack $= 1 - - [texName0, texName1] <- genObjectNames 2 - textureBinding Texture2D $= Just texName0 - textureWrapMode Texture2D S $= (Repeated, Clamp) - textureWrapMode Texture2D T $= (Repeated, Clamp) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - withCheckImage checkImageSize 0x08 (\c -> Color4 c c c 255) $ - texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 - - textureBinding Texture2D $= Just texName1 - textureWrapMode Texture2D S $= (Repeated, Clamp) - textureWrapMode Texture2D T $= (Repeated, Clamp) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - textureFunction $= Decal - withCheckImage checkImageSize 0x10 (\c -> Color4 c 0 0 255) $ - texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 - texture Texture2D $= Enabled - return (texName0, texName1) - -display :: (TextureObject, TextureObject) -> DisplayCallback -display (texName0, texName1) = do - clear [ ColorBuffer, DepthBuffer ] - -- resolve overloading, not needed in "real" programs - let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - textureBinding Texture2D $= Just texName0 - renderPrimitive Quads $ do - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 (-2.0) (-1.0) 0.0 ) - texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 (-2.0) 1.0 0.0 ) - texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 0.0 1.0 0.0 ) - texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 0.0 (-1.0) 0.0 ) - textureBinding Texture2D $= Just texName1 - renderPrimitive Quads $ do - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 1.0 (-1.0) 0.0 ) - texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 1.0 1.0 0.0 ) - texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 2.41421 1.0 (-1.41421)) - texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 2.41421 (-1.0) (-1.41421)) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 60 (fromIntegral w / fromIntegral h) 1 30 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-3.6 :: GLfloat)) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - -- we have to do this *after* createWindow, otherwise we have no OpenGL context - version <- get (majorMinor glVersion) - when (version == (1,0)) $ do - putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." - putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," - putStrLn "you may be able to modify this program to make it run." - exitFailure - texNames <- myInit - reshapeCallback $= Just reshape - displayCallback $= display texNames - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/TexBind.hs hunk ./GLUT/examples/RedBook/TexGen.hs 1 -{- - TexGen.hs (adapted from texgen.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws a texture mapped teapot with automatically generated - texture coordinates. The texture is rendered as stripes on the teapot. - Initially, the object is drawn with texture coordinates based upon the - object coordinates of the vertex and distance from the plane x = 0. - Pressing the 'e' key changes the coordinate generation to eye coordinates - of the vertex. Pressing the 'o' key switches it back to the object - coordinates. Pressing the 's' key changes the plane to a slanted one - (x + y + z = 0). Pressing the 'x' key switches it back to x = 0. --} - -import Control.Monad ( when ) -import Data.Char ( toLower ) -import Data.Maybe ( isJust, listToMaybe ) -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -stripeImageWidth :: TextureSize1D -stripeImageWidth = TextureSize1D 32 - -xEqualZero, slanted :: Plane GLdouble -xEqualZero = Plane 1 0 0 0 -slanted = Plane 1 1 1 0 - -withStripeImage :: (PixelData (Color4 GLubyte) -> IO a) -> IO a -withStripeImage act = - withArray [ Color4 (if j <= 4 then 255 else 0) - (if j > 4 then 255 else 0) - 0 - 255 - | j <- [ 0 .. w - 1 ] ] $ - act . PixelData RGBA UnsignedByte - where TextureSize1D w = stripeImageWidth - -myInit :: IO (Maybe TextureObject) -myInit = do - clearColor $= Color4 0 0 0 0 - depthFunc $= Just Less - shadeModel $= Smooth - rowAlignment Unpack $= 1 - - exts <- get glExtensions - mbTexName <- if "GL_EXT_texture_object" `elem` exts - then fmap listToMaybe $ genObjectNames 1 - else return Nothing - when (isJust mbTexName) $ textureBinding Texture1D $= mbTexName - - textureWrapMode Texture1D S $= (Repeated, Repeat) - textureFilter Texture1D $= ((Linear', Nothing), Linear') - withStripeImage $ texImage1D NoProxy 0 RGBA' stripeImageWidth 0 - - textureFunction $= Modulate - textureGenMode S $= Just (ObjectLinear xEqualZero) - - texture Texture1D $= Enabled - lighting $= Enabled - light (Light 0) $= Enabled - autoNormal $= Enabled - normalize $= Enabled - frontFace $= CW - cullFace $= Just Back - materialShininess Front $= 64 - return mbTexName - -display :: Maybe TextureObject -> DisplayCallback -display mbTexName = do - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - rotate (45 :: GLfloat) (Vector3 0 0 1) - when (isJust mbTexName) $ textureBinding Texture1D $= mbTexName - renderObject Solid (Teapot 2) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-3.5) 3.5 (-3.5*hf/wf) (3.5*hf/wf) (-3.5) 3.5 - else ortho (-3.5*wf/hf) (3.5*wf/hf) (-3.5) 3.5 (-3.5) 3.5 - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char c) Down _ _ = case toLower c of - 'e' -> setGenMode EyeLinear - 'o' -> setGenMode ObjectLinear - 's' -> setPlane slanted - 'x' -> setPlane xEqualZero - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ = return () - -setGenMode :: (Plane GLdouble -> TextureGenMode) -> IO () -setGenMode mode = do - currentGenMode <- get (textureGenMode S) - case currentGenMode of - Just (EyeLinear plane) -> textureGenMode S $= Just (mode plane) - Just (ObjectLinear plane) -> textureGenMode S $= Just (mode plane) - _ -> error "setGenMode: should never happen..." - postRedisplay Nothing - -setPlane :: Plane GLdouble -> IO () -setPlane plane = do - currentGenMode <- get (textureGenMode S) - case currentGenMode of - Just (EyeLinear _) -> textureGenMode S $= Just (EyeLinear plane) - Just (ObjectLinear _) -> textureGenMode S $= Just (ObjectLinear plane) - _ -> error "setPlane: should never happen..." - postRedisplay Nothing - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 256 256 - initialWindowPosition $= Position 100 100 - createWindow progName - mbTexName <- myInit - displayCallback $= display mbTexName - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/TexGen.hs hunk ./GLUT/examples/RedBook/TexProx.hs 1 -{- - TexProx.hs (adapted from texprox.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - The brief program illustrates use of texture proxies. This program only - prints out some messages about whether certain size textures are supported - and then exits. --} - -import Control.Monad ( when ) -import Foreign.Ptr ( nullPtr ) -import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -myInit :: IO () -myInit = do - let check = do - ok <- get (textureProxyOK (Left Texture2D) 0) - putStrLn ("proxy allocation " ++ if ok then "succeeded" else "failed") - - texImage2D Nothing Proxy 0 RGBA8 (TextureSize2D 64 64) 0 (PixelData RGBA UnsignedByte nullPtr) - check - - -- Note: We use a larger texture size here to demonstrate failure, - -- modern graphic cards can handle the original size. - texImage2D Nothing Proxy 0 RGBA16 (TextureSize2D 8192 8192) 0 (PixelData RGBA UnsignedShort nullPtr) - check - - -display :: DisplayCallback -display = exitWith ExitSuccess - -reshape :: ReshapeCallback -reshape size = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - -- we have to do this *after* createWindow, otherwise we have no OpenGL context - version <- get (majorMinor glVersion) - when (version == (1,0)) $ do - putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." - putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," - putStrLn "you may be able to modify this program to make it run." - exitFailure - myInit - displayCallback $= display - reshapeCallback $= Just reshape - mainLoop rmfile ./GLUT/examples/RedBook/TexProx.hs hunk ./GLUT/examples/RedBook/TexSub.hs 1 -{- - TexSub.hs (adapted from texsub.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program texture maps a checkerboard image onto two rectangles. This - program clamps the texture, if the texture coordinates fall outside 0.0 - and 1.0. If the s key is pressed, a texture subimage is used to alter the - original texture. If the r key is pressed, the original texture is restored. --} - -import Control.Monad ( when ) -import Data.Char ( toLower ) -import Data.Bits ( (.&.) ) -import Foreign ( newArray ) -import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -checkImageSize, subImageSize :: TextureSize2D -checkImageSize = TextureSize2D 64 64 -subImageSize = TextureSize2D 16 16 - -type Image = PixelData (Color4 GLubyte) - -makeCheckImage :: - TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) -> IO Image -makeCheckImage (TextureSize2D w h) n f = - fmap (PixelData RGBA UnsignedByte) $ - newArray [ f c | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ], - let c | (i .&. n) == (j .&. n) = 0 - | otherwise = 255 ] - -myInit :: IO (TextureObject, Image, Image) -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - depthFunc $= Just Less - - checkImage <- makeCheckImage checkImageSize 0x8 (\c -> Color4 c c c 255) - subImage <- makeCheckImage subImageSize 0x4 (\c -> Color4 c 0 0 255) - rowAlignment Unpack $= 1 - - [texName] <- genObjectNames 1 - textureBinding Texture2D $= Just texName - - textureWrapMode Texture2D S $= (Repeated, Repeat) - textureWrapMode Texture2D T $= (Repeated, Repeat) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 checkImage - return (texName, checkImage, subImage) - -display :: TextureObject -> DisplayCallback -display texName = do - clear [ ColorBuffer, DepthBuffer ] - texture Texture2D $= Enabled - textureFunction $= Decal - textureBinding Texture2D $= Just texName - - -- resolve overloading, not needed in "real" programs - let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - renderPrimitive Quads $ do - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 (-2.0) (-1.0) 0.0 ) - texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 (-2.0) 1.0 0.0 ) - texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 0.0 1.0 0.0 ) - texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 0.0 (-1.0) 0.0 ) - - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 1.0 (-1.0) 0.0 ) - texCoord2f (TexCoord2 0 1); vertex3f (Vertex3 1.0 1.0 0.0 ) - texCoord2f (TexCoord2 1 1); vertex3f (Vertex3 2.41421 1.0 (-1.41421)) - texCoord2f (TexCoord2 1 0); vertex3f (Vertex3 2.41421 (-1.0) (-1.41421)) - flush - texture Texture2D $= Disabled - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 60 (fromIntegral w / fromIntegral h) 1 30 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-3.6 :: GLfloat)) - -keyboard :: TextureObject -> Image -> Image -> KeyboardMouseCallback -keyboard texName checkImage subImage (Char c) Down _ _ = case toLower c of - 's' -> do - textureBinding Texture2D $= Just texName - texSubImage2D Nothing 0 (TexturePosition2D 12 44) subImageSize subImage - postRedisplay Nothing - 'r' -> do - textureBinding Texture2D $= Just texName - texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 checkImage - postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - -- we have to do this *after* createWindow, otherwise we have no OpenGL context - version <- get (majorMinor glVersion) - when (version == (1,0)) $ do - putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." - putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," - putStrLn "you may be able to modify this program to make it run." - exitFailure - (texName, checkImage, subImage) <- myInit - displayCallback $= display texName - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard texName checkImage subImage) - mainLoop rmfile ./GLUT/examples/RedBook/TexSub.hs hunk ./GLUT/examples/RedBook/Texture3D.hs 1 -{- - Texture3D.hs (adapted from texture3d.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates using a three-dimensional texture. It creates - a 3D texture and then renders two rectangles with different texture - coordinates to obtain different "slices" of the 3D texture. --} - -import Control.Monad ( unless ) -import Foreign ( withArray ) -import System.Exit ( exitFailure, exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Create checkerboard image -imageSize :: TextureSize3D -imageSize = TextureSize3D 16 16 16 - -withImage :: (PixelData (Color3 GLubyte) -> IO ()) -> IO () -withImage act = - withArray [ Color3 (s * 17) (t * 17) (r * 17) | - r <- [ 0 .. fromIntegral d - 1 ], - t <- [ 0 .. fromIntegral h - 1 ], - s <- [ 0 .. fromIntegral w - 1 ] ] $ - act . PixelData RGB UnsignedByte - where (TextureSize3D w h d) = imageSize - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - depthFunc $= Just Less - rowAlignment Unpack $= 1 - - [texName] <- genObjectNames 1 - textureBinding Texture3D $= Just texName - textureWrapMode Texture3D S $= (Repeated, Clamp) - textureWrapMode Texture3D T $= (Repeated, Clamp) - textureWrapMode Texture3D R $= (Repeated, Clamp) - textureFilter Texture3D $= ((Nearest, Nothing), Nearest) - withImage $ texImage3D NoProxy 0 RGB' imageSize 0 - texture Texture3D $= Enabled - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - -- resolve overloading, not needed in "real" programs - let texCoord3f = texCoord :: TexCoord3 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - renderPrimitive Quads $ do - texCoord3f (TexCoord3 0 0 0); vertex3f (Vertex3 (-2.25) (-1) 0) - texCoord3f (TexCoord3 0 1 0); vertex3f (Vertex3 (-2.25) 1 0) - texCoord3f (TexCoord3 1 1 1); vertex3f (Vertex3 (-0.25) 1 0) - texCoord3f (TexCoord3 1 0 1); vertex3f (Vertex3 (-0.25) (-1) 0) - - texCoord3f (TexCoord3 0 0 1); vertex3f (Vertex3 0.25 (-1) 0) - texCoord3f (TexCoord3 0 1 1); vertex3f (Vertex3 0.25 1 0) - texCoord3f (TexCoord3 1 1 0); vertex3f (Vertex3 2.25 1 0) - texCoord3f (TexCoord3 1 0 0); vertex3f (Vertex3 2.25 (-1) 0) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 60 (fromIntegral w / fromIntegral h) 1 30 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-4 :: GLfloat)) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - -- we have to do this *after* createWindow, otherwise we have no OpenGL context - exts <- get glExtensions - unless ("GL_EXT_texture3D" `elem` exts) $ do - putStrLn "Sorry, this demo requires the GL_EXT_texture3D extension." - exitFailure - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Texture3D.hs hunk ./GLUT/examples/RedBook/TextureSurf.hs 1 -{- - TextureSurf.hs (adapted from texturesurf.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program uses evaluators to generate a curved surface and automatically - generated texture coordinates. --} - -import Data.List ( transpose ) -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -ctrlPoints :: [[Vertex3 GLfloat]] -ctrlPoints = [ - [ Vertex3 (-1.5) (-1.5) 4.0, Vertex3 (-0.5) (-1.5) 2.0, - Vertex3 0.5 (-1.5) (-1.0), Vertex3 1.5 (-1.5) 2.0 ], - [ Vertex3 (-1.5) (-0.5) 1.0, Vertex3 (-0.5) (-0.5) 3.0, - Vertex3 0.5 (-0.5) 0.0, Vertex3 1.5 (-0.5) (-1.0) ], - [ Vertex3 (-1.5) 0.5 4.0, Vertex3 (-0.5) 0.5 0.0, - Vertex3 0.5 0.5 3.0, Vertex3 1.5 0.5 4.0 ], - [ Vertex3 (-1.5) 1.5 (-2.0), Vertex3 (-0.5) 1.5 (-2.0), - Vertex3 0.5 1.5 0.0, Vertex3 1.5 1.5 (-1.0) ]] - -texPts :: [[TexCoord2 GLfloat]] -texPts = [ - [ TexCoord2 0 0, TexCoord2 0 1 ], - [ TexCoord2 1 0, TexCoord2 1 1 ]] - -display :: DisplayCallback -display = do - clear [ ColorBuffer, DepthBuffer ] - color (Color3 1 1 1 :: Color3 GLfloat) - evalMesh2 Fill (0, 20) (0, 20) - flush - -imageSize :: TextureSize2D -imageSize = TextureSize2D 64 64 - -withImage :: (PixelData (Color3 GLubyte) -> IO ()) -> IO () -withImage act = - withArray [ Color3 (s (sin ti)) (s (cos (2 * tj))) (s (cos (ti + tj))) | - i <- [ 0 .. fromIntegral w - 1 ], - let ti = 2 * pi * i / fromIntegral w, - j <- [ 0 .. fromIntegral h - 1 ], - let tj = 2 * pi * j / fromIntegral h ] $ - act . PixelData RGB UnsignedByte - where (TextureSize2D w h) = imageSize - s :: Double -> GLubyte - s x = truncate (127 * (1 + x)) - -myInit :: IO () -myInit = do - m <- newMap2 (0, 1) (0, 1) (transpose ctrlPoints) - map2 $= Just (m :: GLmap2 Vertex3 GLfloat) - t <- newMap2 (0, 1) (0, 1) (transpose texPts) - map2 $= Just (t :: GLmap2 TexCoord2 GLfloat) - mapGrid2 $= ((20, (0, 1)), (20, (0, 1 :: GLfloat))) - textureFunction $= Decal - textureWrapMode Texture2D S $= (Repeated, Repeat) - textureWrapMode Texture2D T $= (Repeated, Repeat) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - withImage $ texImage2D Nothing NoProxy 0 RGB' imageSize 0 - texture Texture2D $= Enabled - depthFunc $= Just Less - shadeModel $= Flat - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - let wf = fromIntegral w - hf = fromIntegral h - if w <= h - then ortho (-4.0) 4.0 (-4.0*hf/wf) (4.0*hf/wf) (-4.0) 4.0 - else ortho (-4.0*wf/hf) (4.0*wf/hf) (-4.0) 4.0 (-4.0) 4.0 - matrixMode $= Modelview 0 - loadIdentity - rotate (85 :: GLfloat) (Vector3 1 1 1) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/TextureSurf.hs hunk ./GLUT/examples/RedBook/Torus.hs 1 -{- - Torus.hs (adapted from torus.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates the creation of a display list. --} - -import Data.Char ( toLower ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -data State = State { spinX, spinY :: IORef GLfloat } - -makeState :: IO State -makeState = do - x <- newIORef 0 - y <- newIORef 0 - return $ State { spinX = x, spinY = y } - -torus :: Int -> Int -> IO () -torus numC numT = do - let stepC = 2 * pi / fromIntegral numC :: GLfloat - stepT = 2 * pi / fromIntegral numT - flip mapM_ [ 0 .. numC - 1 ] $ \i -> - renderPrimitive QuadStrip $ - flip mapM_ [ 0 .. numT ] $ \j -> - flip mapM_ [ 1, 0 ] $ \k -> do - let s = (fromIntegral ((i + k) `mod` numC) + 0.5) * stepC - t = (fromIntegral ( j `mod` numT) ) * stepT - x = (1 + 0.1 * cos s) * cos t - y = (1 + 0.1 * cos s) * sin t - z = 0.1 * sin s - vertex (Vertex3 x y z) - -myInit :: IO DisplayList -myInit = do - theTorus <- defineNewList Compile $ - torus 8 25 - shadeModel $= Flat - clearColor $= Color4 0 0 0 0 - return theTorus - -display :: State -> DisplayList -> DisplayCallback -display state theTorus = do - clear [ ColorBuffer ] - loadIdentity - lookAt (Vertex3 0 0 10) (Vertex3 0 0 0) (Vector3 0 1 0) - x <- get (spinX state) - rotate x (Vector3 1 0 0) - y <- get (spinY state) - rotate y (Vector3 0 1 0) - color (Color3 1 1 (1 :: GLfloat)) - callList theTorus - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 30 (fromIntegral w / fromIntegral h) 1 100 - matrixMode $= Modelview 0 - -incSpin :: IORef GLfloat -> IO () -incSpin spinRef = do - let wrap n s = if s > n then s - n else s - spinRef $~ (wrap 360 . (+ 30)) - postRedisplay Nothing - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char c) Down _ _ = case toLower c of - 'x' -> incSpin (spinX state) - 'y' -> incSpin (spinY state) - 'i' -> do spinX state $= 0; spinY state $= 0; postRedisplay Nothing - '\27' -> exitWith ExitSuccess - _ -> return () -keyboard _ _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 200 200 - createWindow progName - state <- makeState - theTorus <- myInit - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - displayCallback $= display state theTorus - mainLoop rmfile ./GLUT/examples/RedBook/Torus.hs hunk ./GLUT/examples/RedBook/Trim.hs 1 -{- - Trim.hs (adapted from trim.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program draws a NURBS surface in the shape of a symmetrical hill, - using both a NURBS curve and pwl (piecewise linear) curve to trim part - of the surface. - - NOTE: This example does NOT demonstrate the final NURBS API, it's currently - just a test for the internals... --} - -import Foreign.Marshal ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- The control points of the surface form a small hill and --- range from -3 to +3 in x, y, and z. -ctlPoints :: [[Vertex3 GLfloat]] -ctlPoints = - [ [ Vertex3 (2 * u - 3) - (2 * v - 3) - (if (u == 1 || u ==2) && (v == 1 || v == 2) then 3 else -3) - | v <- [ 0 .. 3 ] ] - | u <- [ 0 .. 3 ]] - -myInit :: IO () -myInit = do - clearColor $= Color4 0 0 0 0 - materialDiffuse Front $= Color4 0.7 0.7 0.7 1 - materialSpecular Front $= Color4 1 1 1 1 - materialShininess Front $= 100 - - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - autoNormal $= Enabled - normalize $= Enabled - --------------------------------------------------------------------------------- - -display :: DisplayCallback -display = do - let knots = [ 0, 0, 0, 0, 1, 1, 1, 1 ] :: [GLfloat] - edgePt = -- counter clockwise - [ Vertex2 0 0, Vertex2 1 0, Vertex2 1 1, Vertex2 0 1, Vertex2 0 0 ] :: [Vertex2 GLfloat] - curvePt = -- clockwise - [ Vertex2 0.25 0.5, Vertex2 0.25 0.75, Vertex2 0.75 0.75, Vertex2 0.75 0.5 ] :: [Vertex2 GLfloat] - curveKnots = - [ 0, 0, 0, 0, 1, 1, 1, 1 ] :: [GLfloat] - pwlPt = -- clockwise - [Vertex2 0.75 0.5, Vertex2 0.5 0.25, Vertex2 0.25 0.5 ] :: [Vertex2 GLfloat] - - clear [ ColorBuffer, DepthBuffer ] - preservingMatrix $ do - rotate (330 :: GLfloat) (Vector3 1 0 0) - scale 0.5 0.5 (0.5 :: GLfloat) - - withNURBSObj () $ \nurbsObj -> do - setSamplingMethod nurbsObj (PathLength 25) - setDisplayMode' nurbsObj Fill' - checkForNURBSError nurbsObj $ - nurbsBeginEndSurface nurbsObj $ - withArray (concat ctlPoints) $ \cBuf -> - withArray knots $ \kBuf -> do - nurbsSurface nurbsObj 8 kBuf 8 kBuf (4 * 3) 3 cBuf 4 4 - nurbsBeginEndTrim nurbsObj $ - withArray edgePt $ \edgePtBuf -> - pwlCurve nurbsObj 5 edgePtBuf 2 - nurbsBeginEndTrim nurbsObj $ do - withArray curveKnots $ \curveKnotsBuf -> - withArray curvePt $ \curvePtBuf -> - trimmingCurve nurbsObj 8 curveKnotsBuf 2 curvePtBuf 4 - withArray pwlPt $ \pwlPtBuf -> - pwlCurve nurbsObj 3 pwlPtBuf 2 - - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 45 (fromIntegral w / fromIntegral h) 3 8 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-5 :: GLfloat)) - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - --- Main Loop -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - myInit - reshapeCallback $= Just reshape - displayCallback $= display - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Trim.hs hunk ./GLUT/examples/RedBook/UnProject.hs 1 -{- - UnProject.hs (adapted from unproject.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - When the left mouse button is pressed, this program reads the mouse - position and determines two 3D points from which it was transformed. - Very little is displayed. --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -display :: DisplayCallback -display = do - clear [ ColorBuffer ] - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 45 (fromIntegral w / fromIntegral h) 1 100 - matrixMode $= Modelview 0 - loadIdentity - -keyboardMouse :: KeyboardMouseCallback -keyboardMouse (MouseButton LeftButton) Down _ (Position x y) = do - v@(_, Size _ h) <- get viewport - mvMatrix <- get (matrix (Just (Modelview 0))) :: IO (GLmatrix GLdouble) - projMatrix <- get (matrix (Just Projection)) :: IO (GLmatrix GLdouble) - let realY = h - y -1 - putStrLn ("Coordinates at cursor are (" ++ show x ++", " ++ show realY ++ ")") - w0 <- unProject (Vertex3 (fromIntegral x) (fromIntegral realY) 0) mvMatrix projMatrix v - putStrLn ("World coords at z=0.0 are " ++ show w0) - w1 <- unProject (Vertex3 (fromIntegral x) (fromIntegral realY) 1) mvMatrix projMatrix v - putStrLn ("World coords at z=1.0 are " ++ show w1) -keyboardMouse (MouseButton RightButton) Down _ _ = exitWith ExitSuccess -keyboardMouse (Char '\27') Down _ _ = exitWith ExitSuccess -keyboardMouse _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - initialWindowPosition $= Position 100 100 - createWindow progName - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboardMouse - mainLoop rmfile ./GLUT/examples/RedBook/UnProject.hs hunk ./GLUT/examples/RedBook/VArray.hs 1 -{- - VArray.hs (adapted from varray.c which is (c) Silicon Graphics, Inc.) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates vertex arrays. --} - -import Control.Monad ( when ) -import Data.IORef ( IORef, newIORef ) -import Foreign ( Ptr, newArray ) -import System.Exit ( exitFailure, exitWith, ExitCode(..) ) -import Graphics.UI.GLUT - -data SetupMethod = Pointer | Interleaved - deriving ( Eq, Bounded, Enum ) - -data DerefMethod = DrawArray | ArrayElement | DrawElements - deriving ( Eq, Bounded, Enum ) - -makeVertices :: IO (Ptr (Vertex2 GLint)) -makeVertices = newArray [ - Vertex2 25 25, - Vertex2 100 325, - Vertex2 175 25, - Vertex2 175 325, - Vertex2 250 25, - Vertex2 325 325 ] - -makeColors :: IO (Ptr (Color3 GLfloat)) -makeColors = newArray [ - Color3 1.0 0.2 0.2, - Color3 0.2 0.2 1.0, - Color3 0.8 1.0 0.2, - Color3 0.75 0.75 0.75, - Color3 0.35 0.35 0.35, - Color3 0.5 0.5 0.5 ] - -makeIntertwined :: IO (Ptr GLfloat) -makeIntertwined = newArray [ - 1.0, 0.2, 1.0, 100.0, 100.0, 0.0, - 1.0, 0.2, 0.2, 0.0, 200.0, 0.0, - 1.0, 1.0, 0.2, 100.0, 300.0, 0.0, - 0.2, 1.0, 0.2, 200.0, 300.0, 0.0, - 0.2, 1.0, 1.0, 300.0, 200.0, 0.0, - 0.2, 0.2, 1.0, 200.0, 100.0, 0.0 ] - -makeIndices :: IO (Ptr GLuint) -makeIndices = newArray [ 0, 1, 3, 4 ] - -data State = State { - vertices :: Ptr (Vertex2 GLint), - colors :: Ptr (Color3 GLfloat), - intertwined :: Ptr GLfloat, - indices :: Ptr GLuint, - setupMethod :: IORef SetupMethod, - derefMethod :: IORef DerefMethod } - -makeState :: IO State -makeState = do - v <- makeVertices - c <- makeColors - i <- makeIntertwined - n <- makeIndices - s <- newIORef Pointer - d <- newIORef DrawArray - return $ State { vertices = v, colors = c, intertwined = i, - indices = n, setupMethod = s, derefMethod = d } - -setup :: State -> IO () -setup state = do - s <- get (setupMethod state) - case s of - Pointer -> do - clientState VertexArray $= Enabled - clientState ColorArray $= Enabled - arrayPointer VertexArray $= VertexArrayDescriptor 2 Int 0 (vertices state) - arrayPointer ColorArray $= VertexArrayDescriptor 3 Float 0 (colors state) - Interleaved -> - interleavedArrays C3fV3f 0 (intertwined state) - -myInit :: State -> IO () -myInit state = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Smooth - setup state - -display :: State -> DisplayCallback -display state = do - clear [ ColorBuffer ] - d <- get (derefMethod state) - case d of - DrawArray -> drawArrays Triangles 0 6 - ArrayElement -> renderPrimitive Triangles $ mapM_ arrayElement [ 2, 3, 5 ] - DrawElements -> drawElements Polygon 4 UnsignedInt (indices state) - flush - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 (fromIntegral w) 0 (fromIntegral h) - -- the following line is not in the original example, but it's good style... - matrixMode $= Modelview 0 - -keyboardMouse :: State -> KeyboardMouseCallback -keyboardMouse state (MouseButton LeftButton) Down _ _ = do - setupMethod state $~ nextValue - setup state - postRedisplay Nothing -keyboardMouse state (MouseButton _) Down _ _ = do - derefMethod state $~ nextValue - postRedisplay Nothing -keyboardMouse _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboardMouse _ _ _ _ _ = return () - -nextValue :: (Eq a, Bounded a, Enum a) => a -> a -nextValue x = if x == maxBound then minBound else succ x - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 350 350 - initialWindowPosition $= Position 100 100 - createWindow progName - -- we have to do this *after* createWindow, otherwise we have no OpenGL context - version <- get (majorMinor glVersion) - when (version == (1,0)) $ do - putStrLn "This program demonstrates a feature which is not in OpenGL Version 1.0." - putStrLn "If your implementation of OpenGL Version 1.0 has the right extensions," - putStrLn "you may be able to modify this program to make it run." - exitFailure - state <- makeState - myInit state - displayCallback $= display state - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboardMouse state) - mainLoop rmfile ./GLUT/examples/RedBook/VArray.hs hunk ./GLUT/examples/RedBook/Wrap.hs 1 -{- - Wrap.hs (adapted from wrap.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program texture maps a checkerboard image onto two rectangles. This - program demonstrates the wrapping modes, if the texture coordinates fall - outside 0.0 and 1.0. Interaction: Pressing the 's' and 'S' keys switch the - wrapping between clamping and repeating for the s parameter. The 't' and 'T' - keys control the wrapping for the t parameter. - - Texture objects are only used when GL_EXT_texture_object is supported. --} - -import Control.Monad ( when ) -import Data.Maybe ( isJust, listToMaybe ) -import Data.Bits ( (.&.) ) -import Foreign ( withArray ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - --- Create checkerboard image -checkImageSize :: TextureSize2D -checkImageSize = TextureSize2D 64 64 - -withCheckImage :: TextureSize2D -> GLsizei -> (GLubyte -> (Color4 GLubyte)) - -> (PixelData (Color4 GLubyte) -> IO ()) -> IO () -withCheckImage (TextureSize2D w h) n f act = - withArray [ f c | - i <- [ 0 .. w - 1 ], - j <- [ 0 .. h - 1 ], - let c | (i .&. n) == (j .&. n) = 0 - | otherwise = 255 ] $ - act. PixelData RGBA UnsignedByte - -myInit :: IO (Maybe TextureObject) -myInit = do - clearColor $= Color4 0 0 0 0 - shadeModel $= Flat - depthFunc $= Just Less - rowAlignment Unpack $= 1 - - exts <- get glExtensions - mbTexName <- if "GL_EXT_texture_object" `elem` exts - then fmap listToMaybe $ genObjectNames 1 - else return Nothing - when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName - - textureWrapMode Texture2D S $= (Repeated, Repeat) - textureWrapMode Texture2D T $= (Repeated, Repeat) - textureFilter Texture2D $= ((Nearest, Nothing), Nearest) - withCheckImage checkImageSize 0x8 (\c -> Color4 c c c 255) $ - texImage2D Nothing NoProxy 0 RGBA' checkImageSize 0 - return mbTexName - -display :: Maybe TextureObject -> DisplayCallback -display mbTexName = do - clear [ ColorBuffer, DepthBuffer ] - texture Texture2D $= Enabled - textureFunction $= Decal - when (isJust mbTexName) $ textureBinding Texture2D $= mbTexName - - -- resolve overloading, not needed in "real" programs - let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - renderPrimitive Quads $ do - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 (-2.0) (-1.0) 0.0 ) - texCoord2f (TexCoord2 0 3); vertex3f (Vertex3 (-2.0) 1.0 0.0 ) - texCoord2f (TexCoord2 3 3); vertex3f (Vertex3 0.0 1.0 0.0 ) - texCoord2f (TexCoord2 3 0); vertex3f (Vertex3 0.0 (-1.0) 0.0 ) - - texCoord2f (TexCoord2 0 0); vertex3f (Vertex3 1.0 (-1.0) 0.0 ) - texCoord2f (TexCoord2 0 3); vertex3f (Vertex3 1.0 1.0 0.0 ) - texCoord2f (TexCoord2 3 3); vertex3f (Vertex3 2.41421 1.0 (-1.41421)) - texCoord2f (TexCoord2 3 0); vertex3f (Vertex3 2.41421 (-1.0) (-1.41421)) - flush - texture Texture2D $= Disabled - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 60 (fromIntegral w / fromIntegral h) 1 30 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-3.6 :: GLfloat)) - -keyboard :: KeyboardMouseCallback -keyboard (Char 's' ) Down _ _ = setClamping S Clamp -keyboard (Char 'S' ) Down _ _ = setClamping S Repeat -keyboard (Char 't' ) Down _ _ = setClamping T Clamp -keyboard (Char 'T' ) Down _ _ = setClamping T Repeat -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -setClamping :: TextureCoordName -> Clamping -> IO () -setClamping coord clamp = do - textureWrapMode Texture2D coord $= (Repeated, clamp); - postRedisplay Nothing - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode, WithDepthBuffer ] - initialWindowSize $= Size 250 250 - initialWindowPosition $= Position 100 100 - createWindow progName - mbTexName <- myInit - displayCallback $= display mbTexName - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/RedBook/Wrap.hs hunk ./GLUT/examples/RedBook/index.html 1 - - - - Index of /packages/GLUT/examples/RedBook - - -

Index of /packages/GLUT/examples/RedBook

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[   ] 00-README 11-Jan-2006 10:29 5.3K -[TXT] AAIndex.hs 15-Nov-2006 02:07 3.2K -[TXT] AARGB.hs 15-Nov-2006 02:07 3.0K -[TXT] AccAnti.hs 03-May-2006 06:36 4.4K -[TXT] AccPersp.hs 03-May-2006 06:36 6.0K -[TXT] Alpha.hs 11-Jan-2006 10:33 2.7K -[TXT] Alpha3D.hs 28-Apr-2006 02:32 3.9K -[TXT] BezCurve.hs 11-Jan-2006 10:33 2.0K -[TXT] BezMesh.hs 11-Jan-2006 10:33 2.7K -[TXT] BezSurf.hs 11-Jan-2006 10:33 2.6K -[TXT] BlendEqn.hs 15-Nov-2006 02:07 2.9K -[TXT] Checker.hs 15-Nov-2006 02:07 3.7K -[TXT] Clip.hs 11-Jan-2006 10:33 1.8K -[TXT] ColorMat.hs 11-Jan-2006 10:33 2.8K -[TXT] ColorMatrix.hs 15-Nov-2006 02:07 2.0K -[TXT] ColorTable.hs 11-Jan-2006 10:33 2.0K -[TXT] Combiner.hs 15-Nov-2006 02:07 6.9K -[TXT] Convolution.hs 11-Jan-2006 10:33 2.7K -[TXT] Cube.hs 11-Jan-2006 10:33 1.7K -[TXT] CubeMap.hs 11-Jan-2006 10:33 3.8K -[TXT] DList.hs 15-Nov-2006 02:07 2.8K -[TXT] DOF.hs 15-Nov-2006 02:07 7.2K -[DIR] Data/ 11-Jan-2006 10:25 - -[TXT] Double.hs 11-Jan-2006 10:33 2.2K -[TXT] DrawF.hs 15-Nov-2006 02:07 2.0K -[TXT] Feedback.hs 11-Jan-2006 10:33 2.4K -[TXT] Fog.hs 11-Jan-2006 10:33 2.9K -[TXT] FogCoord.hs 11-Jan-2006 10:33 3.7K -[TXT] FogIndex.hs 27-Apr-2006 07:46 2.3K -[TXT] Font.hs 15-Nov-2006 02:07 5.3K -[TXT] Hello.hs 15-Nov-2006 02:07 1.6K -[TXT] Histogram.hs 28-Apr-2006 06:45 2.9K -[TXT] Image.hs 11-Jan-2006 10:34 3.8K -[TXT] Light.hs 11-Jan-2006 10:33 1.8K -[TXT] Lines.hs 11-Jan-2006 10:33 3.0K -[TXT] MVArray.hs 15-Nov-2006 02:07 2.9K -[TXT] Material.hs 11-Jan-2006 10:33 5.6K -[TXT] Minmax.hs 11-Jan-2006 10:33 2.2K -[TXT] Mipmap.hs 11-Jan-2006 10:34 3.5K -[TXT] Model.hs 11-Jan-2006 10:33 2.3K -[TXT] MoveLight.hs 11-Jan-2006 10:33 2.7K -[TXT] MultiTex.hs 11-Jan-2006 10:33 4.0K -[TXT] Multisamp.hs 28-Apr-2006 03:42 4.7K -[TXT] PickDepth.hs 11-Jan-2006 10:33 4.4K -[TXT] PickSquare.hs 11-Jan-2006 10:33 4.2K -[TXT] Planet.hs 11-Jan-2006 10:33 2.5K -[TXT] PointP.hs 28-Apr-2006 04:57 4.5K -[TXT] PolyOff.hs 15-Nov-2006 02:07 4.9K -[TXT] Polys.hs 11-Jan-2006 10:33 2.9K -[TXT] Quadric.hs 11-Jan-2006 10:33 3.4K -[TXT] ReadImage.hs 11-Jan-2006 10:34 2.5K -[TXT] Robot.hs 11-Jan-2006 10:33 2.8K -[TXT] Scene.hs 11-Jan-2006 10:33 2.3K -[TXT] Select.hs 11-Jan-2006 10:33 5.3K -[TXT] ShadowMap.hs 15-Nov-2006 02:07 8.1K -[TXT] Smooth.hs 11-Jan-2006 10:33 1.8K -[TXT] Stencil.hs 02-May-2006 06:07 3.9K -[TXT] Stroke.hs 02-May-2006 04:56 3.8K -[TXT] SurfPoints.hs 12-Nov-2006 05:25 4.4K -[TXT] Surface.hs 12-Oct-2006 04:45 3.5K -[TXT] Teapots.hs 02-May-2006 08:02 8.9K -[TXT] Tess.hs 11-Jan-2006 10:34 3.9K -[TXT] TessWind.hs 15-Nov-2006 02:07 6.6K -[TXT] TexBind.hs 12-Nov-2006 05:25 4.3K -[TXT] TexGen.hs 11-Jan-2006 10:34 4.5K -[TXT] TexProx.hs 12-Nov-2006 05:25 2.0K -[TXT] TexSub.hs 15-Nov-2006 02:07 4.7K -[TXT] Texture3D.hs 11-Jan-2006 10:34 3.4K -[TXT] TextureSurf.hs 11-Jan-2006 10:34 3.4K -[TXT] Torus.hs 01-May-2006 03:13 2.8K -[TXT] Trim.hs 12-Oct-2006 04:45 3.7K -[TXT] UnProject.hs 11-Jan-2006 10:34 2.0K -[TXT] VArray.hs 12-Nov-2006 05:25 4.4K -[TXT] Wrap.hs 15-Nov-2006 02:07 4.4K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/RedBook/index.html rmdir ./GLUT/examples/RedBook hunk ./GLUT/examples/OrangeBook/ogl2brick/Brick.frag 1 -// -// Fragment shader for procedural bricks -// -// Authors: Dave Baldwin, Steve Koren, Randi Rost -// based on a shader by Darwyn Peachey -// -// Copyright (c) 2002-2004 3Dlabs Inc. Ltd. -// -// See 3Dlabs-License.txt for license information -// - -uniform vec3 BrickColor, MortarColor; -uniform vec2 BrickSize; -uniform vec2 BrickPct; - -varying vec2 MCposition; -varying float LightIntensity; - -void main(void) -{ - vec3 color; - vec2 position, useBrick; - - position = MCposition / BrickSize; - - if (fract(position.y * 0.5) > 0.5) - position.x += 0.5; - - position = fract(position); - - useBrick = step(position, BrickPct); - - color = mix(MortarColor, BrickColor, useBrick.x * useBrick.y); - color *= LightIntensity; - gl_FragColor = vec4 (color, 1.0); -} rmfile ./GLUT/examples/OrangeBook/ogl2brick/Brick.frag hunk ./GLUT/examples/OrangeBook/ogl2brick/Brick.hs 1 -{- - Brick.hs (adapted from ogl2brick.c which is (c) 3Dlabs Inc. Ltd.) - Copyright (c) Sven Panne 2006 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad -import Data.IORef -import System.Exit -import Graphics.UI.GLUT - -inertiaThreshold, inertiaFactor :: GLfloat -inertiaThreshold = 1 -inertiaFactor = 0.5 - -scaleFactor, scaleIncrement :: GLfloat -scaleFactor = 0.01 -scaleIncrement = 0.5 - -timerFrequencyMillis :: Timeout -timerFrequencyMillis = 20 - -clearColors :: [Color4 GLfloat] -clearColors = [ - Color4 0.0 0.0 0.0 1, - Color4 0.2 0.2 0.3 1, - Color4 0.7 0.7 0.7 1 ] - -models :: [IO ()] -models = [ - drawCube, - renderObject Solid (Teapot 0.6), - renderObject Solid (Sphere' 0.6 64 64), - renderObject Solid (Torus 0.2 0.6 64 64) ] - -initialDiff :: Vector3 GLfloat -initialDiff = Vector3 206 16 10 - -initialInertia :: Vector3 GLfloat -initialInertia = Vector3 (-0.5) 0 0 - -data State = State { - diff :: IORef (Vector3 GLfloat), - lastIncr :: IORef (Vector3 GLfloat), - inertia :: IORef (Vector3 GLfloat), - inertiaOld :: IORef (Vector3 GLfloat), - theScale :: IORef GLfloat, - lastPosition :: IORef Position, - shouldRotate :: IORef Bool, - colorCycle :: IORef [Color4 GLfloat], - modelCycle :: IORef [IO ()], - modifiers :: IORef Modifiers - } - -makeState :: IO State -makeState = do - di <- newIORef initialDiff - li <- newIORef 0 - ia <- newIORef initialInertia - io <- newIORef 0 - sc <- newIORef 1 - lp <- newIORef (Position (-1) (-1)) - sr <- newIORef True - cc <- newIORef (cycle clearColors) - mc <- newIORef (cycle models) - mo <- newIORef (Modifiers Up Up Up) - return $ State { - diff = di, - lastIncr = li, - inertia = ia, - inertiaOld = io, - theScale = sc, - lastPosition = lp, - shouldRotate = sr, - colorCycle = cc, - modelCycle = mc, - modifiers = mo - } - -instance Num a => Num (Vector3 a) where - (Vector3 x1 y1 z1) + (Vector3 x2 y2 z2) = - Vector3 (x1 + x2) (y1 + y2) (z1 + z2) - (Vector3 x1 y1 z1) - (Vector3 x2 y2 z2) = - Vector3 (x1 - x2) (y1 - y2) (z1 - z2) - (Vector3 x1 y1 z1) * (Vector3 x2 y2 z2) = - Vector3 (x1 * x2) (y1 * y2) (z1 * z2) - negate (Vector3 x y z) = - Vector3 (negate x) (negate y) (negate z) - abs (Vector3 x y z) = - Vector3 (abs x) (abs y) (abs z) - signum (Vector3 x y z) = - Vector3 (signum x) (signum y) (signum z) - fromInteger i = - Vector3 (fromInteger i) (fromInteger i) (fromInteger i) - -fromScalar :: Num a => a -> Vector3 a -fromScalar s = Vector3 s s s - -step :: (Num a, Ord a) => Vector3 a -> Vector3 a -> Vector3 a -step (Vector3 x1 y1 z1) (Vector3 x2 y2 z2) = - Vector3 (s x1 x2) (s y1 y2) (s z1 z2) - where s e x = if x < e then 0 else 1 - -dot :: Num a => Vector3 a -> Vector3 a -> a -dot (Vector3 x1 y1 z1) (Vector3 x2 y2 z2) = x1 * x2 + y1 * y2 + z1 * z2 - -drawFace :: Normal3 GLfloat -> Vertex3 GLfloat -> Vertex3 GLfloat - -> Vertex3 GLfloat -> Vertex3 GLfloat -> IO () -drawFace p q r s t = do - let texCoord2f = texCoord :: TexCoord2 GLfloat -> IO () - normal p - texCoord2f (TexCoord2 1 1) - vertex q - texCoord2f (TexCoord2 0 1) - vertex r - texCoord2f (TexCoord2 0 0) - vertex s - texCoord2f (TexCoord2 1 0) - vertex t - -drawCube :: IO () -drawCube = do - let size = 1 - sc = 0.2 - delta = 0.1 - - a = Vertex3 size size ( size * sc + delta) - b = Vertex3 size size (-size * sc + delta) - c = Vertex3 size (-size) (-size * sc) - d = Vertex3 size (-size) ( size * sc) - e = Vertex3 (-size) size ( size * sc + delta) - f = Vertex3 (-size) size (-size * sc + delta) - g = Vertex3 (-size) (-size) (-size * sc) - h = Vertex3 (-size) (-size) ( size * sc) - - i = Normal3 1 0 0 - k = Normal3 (-1) 0 0 - l = Normal3 0 0 (-1) - m = Normal3 0 0 1 - n = Normal3 0 1 0 - o = Normal3 0 (-1) 0 - - renderPrimitive Quads $ do - drawFace i d c b a - drawFace k g h e f - drawFace l c g f b - drawFace m h d a e - drawFace n e a b f - drawFace o g c d h - -display :: State -> DisplayCallback -display state = do - loadIdentity - translate (Vector3 0 0 (-5 :: GLfloat)) - - Vector3 xDiff yDiff zDiff <- get (diff state) - rotate yDiff (Vector3 1 0 0) - rotate xDiff (Vector3 0 1 0) - rotate zDiff (Vector3 0 0 1) - - sc <- get (theScale state) - scale sc sc sc - - clear [ ColorBuffer, DepthBuffer ] - (drawModel:_) <- get (modelCycle state) - drawModel - - flush - swapBuffers - -nextClearColor :: State -> IO () -nextClearColor state = do - cc <- get (colorCycle state) - clearColor $= head cc - colorCycle state $~ tail - -toggleRotation :: State -> IO () -toggleRotation state = do - rot <- get (shouldRotate state) - shouldRotate state $~ not - if rot - then do - ia <- get (inertia state) - inertiaOld state $= ia - else do - io <- get (inertiaOld state) - inertia state $= io - -- To prevent confusion, force some rotation - when (dot io io == 0) $ - inertia state $= initialInertia - -printHelp :: IO () -printHelp = mapM_ putStrLn [ - "", - "Keyboard commands:", - "", - "b - Toggle among background clear colors", - "q, - Quit", - "t - Toggle among models to render", - "? - Help", - " - reset zoom and rotation", - " or - stop rotation", - "<+>, <-> or - zoom model", - " or - rotate model", - ""] - -resetState :: State -> IO () -resetState state = do - diff state $= initialDiff - lastIncr state $= 0 - inertia state $= initialInertia - theScale state $= 1 - -calcInertia :: State -> IO () -calcInertia state = do - lastPosition state $= Position (-1) (-1) - li <- get (lastIncr state) - ia <- get (inertia state) - let t = fromScalar inertiaThreshold - f = fromScalar inertiaFactor - l = (1 - (step (-t) li)) * ((li + t) * f - ia) - r = (step t li) * ((li - t) * f - ia) - inertia state $= l + ia + r - lastIncr state $= 0 - -keyboard :: State -> KeyboardMouseCallback -keyboard state key keyState mods _ = do - modifiers state $= mods - postRedisplay Nothing - case (key, keyState) of - (Char 'b', Down) -> nextClearColor state - (Char 'q', Down) -> exitWith ExitSuccess - (Char '\27', Down) -> exitWith ExitSuccess - (Char 't', Down) -> modelCycle state $~ tail - (Char ' ', Down) -> toggleRotation state - (Char '+', Down) -> theScale state $~ (+ scaleIncrement) - (Char '-', Down) -> theScale state $~ (+ (- scaleIncrement)) - (Char _, Down) -> printHelp - (SpecialKey KeyHome, Down) -> resetState state - (SpecialKey KeyLeft, Down) -> diff state $~ (+ (- Vector3 1 0 0)) - (SpecialKey KeyRight, Down) -> diff state $~ (+ Vector3 1 0 0) - (SpecialKey KeyUp, Down) -> diff state $~ (+ (- Vector3 0 1 0)) - (SpecialKey KeyDown, Down) -> diff state $~ (+ Vector3 0 1 0) - (MouseButton LeftButton, Down) -> do - inertia state $= 0 - lastIncr state $= 0 - (MouseButton LeftButton, Up) -> calcInertia state - (_, _) -> return () - -motion :: State -> MotionCallback -motion state pos@(Position x y) = do - postRedisplay Nothing - Position xt yt <- get (lastPosition state) - lastPosition state $= pos - when (xt /= -1 || yt /= -1) $ do - let li@(Vector3 xl yl _) = Vector3 (fromIntegral (x - xt)) (fromIntegral (y - yt)) 0 - lastIncr state $= li - when (xt /= -1) $ do - mods <- get (modifiers state) - if ctrl mods == Down - then do diff state $~ (+ Vector3 0 0 xl) - theScale state $~ (+ (yl * scaleFactor)) - else diff state $~ (+ li) - -timer :: State -> TimerCallback -timer state = do - rot <- get (shouldRotate state) - when rot $ do - ia <- get (inertia state) - diff state $~ (+ ia) - postRedisplay Nothing - addTimerCallback timerFrequencyMillis (timer state) - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - let vp = 0.8 - aspect = fromIntegral w / fromIntegral h - - viewport $= (Position 0 0, size) - - matrixMode $= Projection - loadIdentity - frustum (-vp) vp (-vp / aspect) (vp / aspect) 3 10 - - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-5 :: GLfloat)) - --- Make sure that GLSL is supported by the driver, either directly by the core --- or via an extension. -checkGLSLSupport :: IO () -checkGLSLSupport = do - version <- get (majorMinor glVersion) - unless (version >= (2,0)) $ do - extensions <- get glExtensions - unless ("GL_ARB_shading_language_100" `elem` extensions) $ - ioError (userError "No GLSL support found.") - -readAndCompileShader :: Shader s => FilePath -> IO s -readAndCompileShader filePath = do - src <- readFile filePath - [shader] <- genObjectNames 1 - shaderSource shader $= [src] - compileShader shader - reportErrors - ok <- get (compileStatus shader) - infoLog <- get (shaderInfoLog shader) - mapM_ putStrLn ["Shader info log for '" ++ filePath ++ "':", infoLog, ""] - unless ok $ do - deleteObjectNames [shader] - ioError (userError "shader compilation failed") - return shader - -installBrickShaders :: [VertexShader] -> [FragmentShader] -> IO () -installBrickShaders vs fs = do - [brickProg] <- genObjectNames 1 - attachedShaders brickProg $= (vs, fs) - linkProgram brickProg - reportErrors - ok <- get (linkStatus brickProg) - infoLog <- get (programInfoLog brickProg) - mapM_ putStrLn ["Program info log:", infoLog, ""] - unless ok $ do - deleteObjectNames [brickProg] - ioError (userError "linking failed") - - currentProgram $= Just brickProg - - let setUniform var val = do - location <- get (uniformLocation brickProg var) - reportErrors - uniform location $= val - - setUniform "BrickColor" (Color3 1.0 0.3 (0.2 :: GLfloat)) - setUniform "MortarColor" (Color3 0.85 0.86 (0.84 :: GLfloat)) - setUniform "BrickSize" (Vertex2 0.30 (0.15 :: GLfloat)) - setUniform "BrickPct" (Vertex2 0.90 (0.85 :: GLfloat)) - setUniform "LightPosition" (Vertex3 0 0 (4 :: GLfloat)) - -main :: IO () -main = do - getArgsAndInitialize - initialDisplayMode $= [ RGBMode, WithDepthBuffer, DoubleBuffered ] - initialWindowSize $= Size 500 500 - createWindow "3Dlabs Brick Shader" - - -- Note: We don't use an idle callback, we redisplay more intelligently. - state <- makeState - displayCallback $= display state - keyboardMouseCallback $= Just (keyboard state) - reshapeCallback $= Just reshape - motionCallback $= Just (motion state) - addTimerCallback timerFrequencyMillis (timer state) - - catch - (do checkGLSLSupport - vs <- readAndCompileShader "Brick.vert" - fs <- readAndCompileShader "Brick.frag" - installBrickShaders [vs] [fs]) - (\exception -> do - print exception - putStrLn "Using fixed function pipeline." - materialDiffuse Front $= Color4 1 0.3 0.2 1 - materialSpecular Front $= Color4 0.3 0.3 0.3 1 - materialShininess Front $= 16 - position (Light 0) $= Vertex4 0 0 4 0 - lighting $= Enabled - light (Light 0) $= Enabled) - - depthFunc $= Just Less - nextClearColor state - - -- display help - keyboard state (Char '?') Down (Modifiers Up Up Up) (Position 0 0) - - mainLoop rmfile ./GLUT/examples/OrangeBook/ogl2brick/Brick.hs hunk ./GLUT/examples/OrangeBook/ogl2brick/Brick.vert 1 -// -// Vertex shader for procedural bricks -// -// Authors: Dave Baldwin, Steve Koren, Randi Rost -// based on a shader by Darwyn Peachey -// -// Copyright (c) 2002-2004 3Dlabs Inc. Ltd. -// -// See 3Dlabs-License.txt for license information -// - -uniform vec3 LightPosition; - -const float SpecularContribution = 0.3; -const float DiffuseContribution = 1.0 - SpecularContribution; - -varying float LightIntensity; -varying vec2 MCposition; - -void main(void) -{ - vec3 ecPosition = vec3 (gl_ModelViewMatrix * gl_Vertex); - vec3 tnorm = normalize(gl_NormalMatrix * gl_Normal); - vec3 lightVec = normalize(LightPosition - ecPosition); - vec3 reflectVec = reflect(-lightVec, tnorm); - vec3 viewVec = normalize(-ecPosition); - float diffuse = max(dot(lightVec, tnorm), 0.0); - float spec = 0.0; - - if (diffuse > 0.0) - { - spec = max(dot(reflectVec, viewVec), 0.0); - spec = pow(spec, 16.0); - } - - LightIntensity = DiffuseContribution * diffuse + - SpecularContribution * spec; - - MCposition = gl_Vertex.xy; - gl_Position = ftransform(); -} rmfile ./GLUT/examples/OrangeBook/ogl2brick/Brick.vert hunk ./GLUT/examples/OrangeBook/ogl2brick/index.html 1 - - - - Index of /packages/GLUT/examples/OrangeBook/ogl2brick - - -

Index of /packages/GLUT/examples/OrangeBook/ogl2brick

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[   ] Brick.frag 15-Nov-2006 02:07 780 -[TXT] Brick.hs 22-Nov-2006 05:02 11K -[   ] Brick.vert 15-Nov-2006 02:07 1.1K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/OrangeBook/ogl2brick/index.html rmdir ./GLUT/examples/OrangeBook/ogl2brick hunk ./GLUT/examples/OrangeBook/3Dlabs-License.txt 1 -Copyright (C) 2002-2005 3Dlabs Inc. Ltd. -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions -are met: - - Redistributions of source code must retain the above copyright - notice, this list of conditions and the following disclaimer. - - Redistributions in binary form must reproduce the above - copyright notice, this list of conditions and the following - disclaimer in the documentation and/or other materials provided - with the distribution. - - Neither the name of 3Dlabs Inc. Ltd. nor the names of its - contributors may be used to endorse or promote products derived - from this software without specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS -FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE -COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; -LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN -ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. - - rmfile ./GLUT/examples/OrangeBook/3Dlabs-License.txt hunk ./GLUT/examples/OrangeBook/index.html 1 - - - - Index of /packages/GLUT/examples/OrangeBook - - -

Index of /packages/GLUT/examples/OrangeBook

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] 3Dlabs-License.txt 14-Nov-2006 09:18 1.5K -[DIR] ogl2brick/ 02-May-2009 08:54 - -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/OrangeBook/index.html rmdir ./GLUT/examples/OrangeBook hunk ./GLUT/examples/Misc/ARBOcclude.hs 1 -{- - ARBOcclude.hs (adapted from arbocclude.c which is (c) Brian Paul) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( unless, when ) -import Data.IORef ( IORef, newIORef ) -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) -import Graphics.UI.GLUT - -data State = State { - anim :: IORef Bool, - xPos :: IORef GLfloat, - sign :: IORef GLfloat, - lastTime :: IORef Int } - -makeState :: IO State -makeState = do - a <- newIORef True - x <- newIORef 0 - s <- newIORef 1 - l <- newIORef =<< get elapsedTime - return $ State { anim = a, xPos = x, sign = s, lastTime = l } - -petrol, orange, white :: Color3 GLfloat -petrol = Color3 0.0 0.6 0.8 -orange = Color3 0.8 0.5 0.0 -white = Color3 1.0 1.0 1.0 - -printString :: Vertex2 GLfloat -> String -> IO () -printString pos s = do - color white - rasterPos pos - renderString Fixed8By13 s - -idle :: State -> IdleCallback -idle state = do - time <- get elapsedTime - l <- get (lastTime state) - let timeDiff = fromIntegral (time - l) - - when (timeDiff >= 20) $ do -- 50Hz update - lastTime state $= time - - s <- get (sign state) - step state (timeDiff / 1000 * s) - x <- get (xPos state) - - when (x > 2.5) $ do - xPos state $= 2.5 - sign state $= (-1) - - when (x < -2.5) $ do - xPos state $= (-2.5) - sign state $= 1 - -display :: QueryObject -> State -> DisplayCallback -display occQuery state = do - clear [ ColorBuffer, DepthBuffer ] - - matrixMode $= Projection - loadIdentity - frustum (-1) 1 (-1) 1 5 25 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-15 :: GLfloat)) - - drawOccludingPolygons - - -- draw the test polygon with occlusion testing - passed <- preservingMatrix $ do - x <- get (xPos state) - translate (Vector3 x 0 (-0.5)) - scale 0.3 0.3 (1.0 :: GLfloat) - rotate (-90 * x) (Vector3 0 0 1) - - withQuery SamplesPassed occQuery $ do - colorMask $= Color4 Disabled Disabled Disabled Disabled - depthMask $= Disabled - drawRect - - p <- waitForResult occQuery - - -- turn off occlusion testing - colorMask $= Color4 Enabled Enabled Enabled Enabled - depthMask $= Enabled - - -- draw the orange rect, so we can see what's going on - color orange - drawRect - - return p - - -- Print result message - matrixMode $= Projection - loadIdentity - ortho (-1) 1 (-1) 1 (-1) 1 - matrixMode $= Modelview 0 - loadIdentity - - printString (Vertex2 (-0.50) (-0.7)) - (" " ++ flushRight 4 passed ++ " Fragments Visible") - when (passed == 0) $ - printString (Vertex2 (-0.25) (-0.8)) "Fully Occluded" - - swapBuffers - -drawOccludingPolygons :: IO () -drawOccludingPolygons = do - color petrol - drawQuads [ - Vertex2 (-1.6) (-1.5), - Vertex2 (-0.4) (-1.5), - Vertex2 (-0.4) 1.5 , - Vertex2 (-1.6) 1.5 , - - Vertex2 0.4 (-1.5), - Vertex2 1.6 (-1.5), - Vertex2 1.6 1.5 , - Vertex2 0.4 1.5 ] - -drawRect :: IO () -drawRect = do - drawQuads [ - Vertex2 (-1) (-1), - Vertex2 1 (-1), - Vertex2 1 1 , - Vertex2 (-1) 1 ] - -drawQuads :: [Vertex2 GLfloat] -> IO () -drawQuads = renderPrimitive Quads . mapM_ vertex - -waitForResult :: QueryObject -> IO GLuint -waitForResult occQuery = do - let loop = do -- do useful work here, if any - ready <- get (queryResultAvailable occQuery) - unless ready loop - loop - get (queryResult occQuery) - -flushRight :: Show a => Int -> a -> String -flushRight width x = replicate (width - length s) ' ' ++ s - where s = show x - -keyboard :: State -> KeyboardMouseCallback -keyboard _ (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard state (Char ' ') Down _ _ = do anim state $~ not - setIdleCallback state -keyboard state (SpecialKey KeyLeft) Down _ _ = step state (-0.1) -keyboard state (SpecialKey KeyRight) Down _ _ = step state 0.1 -keyboard _ _ _ _ _ = return () - -setIdleCallback :: State -> IO () -setIdleCallback state = do - a <- get (anim state) - idleCallback $= if a then Just (idle state) else Nothing - -step :: State -> GLfloat -> IO () -step state s = do - xPos state $~ (+ s) - postRedisplay Nothing - -myInit :: IO () -myInit = do - exts <- get glExtensions - unless ("GL_ARB_occlusion_query" `elem` exts) $ do - putStrLn "Sorry, this demo requires the GL_ARB_occlusion_query extension." - exitFailure - - bits <- get (queryCounterBits SamplesPassed) - unless (bits > 0) $ do - putStrLn "Hmmm, GL_QUERY_COUNTER_BITS_ARB is zero!" - exitFailure - - depthFunc $= Just Less - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialWindowPosition $= Position 0 0 - initialWindowSize $= Size 400 400 - initialDisplayMode $= [ RGBMode, DoubleBuffered, WithDepthBuffer ] - createWindow progName - state <- makeState - reshapeCallback $= Just (\size -> viewport $= (Position 0 0, size)) - keyboardMouseCallback $= Just (keyboard state) - setIdleCallback state - [ occQuery ] <- genObjectNames 1 - displayCallback $= display occQuery state - myInit - mainLoop rmfile ./GLUT/examples/Misc/ARBOcclude.hs hunk ./GLUT/examples/Misc/ExtractContours.hs 1 -{- - ExtractContours.hs (adapted from tess.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates contour extraction. Two tesselated objects are - drawn. The first is a rectangle with a triangular hole. The second is a - smooth shaded, self-intersecting star. - - Note the exterior rectangle is drawn with its vertices in counter-clockwise - order, but its interior clockwise. Note the combineCallback is needed for the - self-intersecting star. Also note that removing the TessProperty for the - star will make the interior unshaded (TessWindingOdd). --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT - -display :: [DisplayList] -> DisplayCallback -display displayLists = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 1 1 1) - mapM callList displayLists - flush - --- 'Float' is a dummy, any marshalable type would do -type DontCare = Float - -rectangle :: ComplexContour DontCare -rectangle = ComplexContour [ - AnnotatedVertex (Vertex3 50 50 0) 0, - AnnotatedVertex (Vertex3 200 50 0) 0, - AnnotatedVertex (Vertex3 200 200 0) 0, - AnnotatedVertex (Vertex3 50 200 0) 0 ] - -tri :: ComplexContour DontCare -tri = ComplexContour [ - AnnotatedVertex (Vertex3 75 75 0) 0, - AnnotatedVertex (Vertex3 125 175 0) 0, - AnnotatedVertex (Vertex3 175 75 0) 0 ] - -rectAndTri :: ComplexPolygon DontCare -rectAndTri = ComplexPolygon [ rectangle, tri ] - -noOpCombiner :: Combiner DontCare -noOpCombiner _newVertex _weightedProperties = 0 - -star :: ComplexPolygon (Color3 GLclampf) -star = ComplexPolygon [ - ComplexContour [ - AnnotatedVertex (Vertex3 250 50 0) (Color3 1 0 1), - AnnotatedVertex (Vertex3 325 200 0) (Color3 1 1 0), - AnnotatedVertex (Vertex3 400 50 0) (Color3 0 1 1), - AnnotatedVertex (Vertex3 250 150 0) (Color3 1 0 0), - AnnotatedVertex (Vertex3 400 150 0) (Color3 0 1 0) ] ] - -combineColors :: Combiner (Color3 GLclampf) -combineColors - _newVertex - (WeightedProperties - (w0, Color3 r0 g0 b0) - (w1, Color3 r1 g1 b1) - (w2, Color3 r2 g2 b2) - (w3, Color3 r3 g3 b3)) = - Color3 (w0*r0 + w1*r1 + w2*r2 + w3*r3) - (w0*g0 + w1*g1 + w2*g2 + w3*g3) - (w0*b0 + w1*b1 + w2*b2 + w3*b3) - -myInit :: IO [DisplayList] -myInit = do - clearColor $= Color4 0 0 0 0 - - rectAndTriList <- defineNewList Compile $ - drawPolygonContours (\_ -> return ()) =<< - extractContours TessWindingOdd 0 (Normal3 0 0 0) noOpCombiner rectAndTri - - starList <- defineNewList Compile $ - drawPolygonContours color =<< - extractContours TessWindingPositive 0 (Normal3 0 0 0) combineColors star - - return [ rectAndTriList, starList ] - -drawPolygonContours :: (v -> IO ()) -> PolygonContours v -> IO () -drawPolygonContours colorHandler (PolygonContours simpleContours) = - flip mapM_ simpleContours $ \(SimpleContour vertices) -> - renderPrimitive LineLoop $ - flip mapM_ vertices $ \(AnnotatedVertex plainVertex col) -> do - colorHandler col - vertex plainVertex - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 (fromIntegral w) 0 (fromIntegral h) - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - createWindow progName - displayLists <- myInit - displayCallback $= display displayLists - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/Misc/ExtractContours.hs hunk ./GLUT/examples/Misc/Gears.hs 1 -{- - Gears.hs (adapted from gears.c which is (c) Brian Paul) - Copyright (c) Shawn P. Garbett 2004 - Further hacked by Sven Panne - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - Command line options: - -info print GL implementation information - -exit automatically exit after 30 seconds --} - --------------------------------------------------------------------------------- - -import Control.Monad ( when ) -import Data.IORef ( IORef, newIORef ) -import Data.List ( intersperse ) -import System.Console.GetOpt -import System.Exit ( exitWith, ExitCode(ExitSuccess), exitFailure ) -import Graphics.UI.GLUT - --------------------------------------------------------------------------------- - -type View = (GLfloat, GLfloat, GLfloat) - -data State = State { - frames :: IORef Int, - t0 :: IORef Int, - viewRot :: IORef View, - angle' :: IORef GLfloat } - -makeState :: IO State -makeState = do - f <- newIORef 0 - t <- newIORef 0 - v <- newIORef (20, 30, 0) - a <- newIORef 0 - return $ State { frames = f, t0 = t, viewRot = v, angle' = a } - --- Draw a gear wheel. You'll probably want to call this function when --- building a display list since we do a lot of trig here. --- --- Input: innerRadius - radius of hole at center --- outerRadius - radius at center of teeth --- width - width of gear --- teeth - number of teeth --- toothDepth - depth of tooth - -gear :: GLfloat -> GLfloat -> GLfloat -> GLint -> GLfloat -> IO () -gear innerRadius outerRadius width teeth toothDepth = do - let r0 = innerRadius - r1 = outerRadius - toothDepth / 2 - r2 = outerRadius + toothDepth / 2 - - da = 2 * pi / fromIntegral teeth / 4 - w = 0.5 * width - - render p f = - renderPrimitive p $ - mapM_ (\i -> let angle = fromIntegral i * 2 * pi / fromIntegral teeth - in f r0 r1 r2 w da teeth i angle) - [ 0 .. teeth ] - - shadeModel $= Flat - currentNormal $= Normal3 0 0 1 - render QuadStrip gearFront - render Quads teethFront - currentNormal $= Normal3 0 0 (-1) - render QuadStrip gearBack - render Quads teethBack - render QuadStrip teethFace - shadeModel $= Smooth - render QuadStrip gearInside - -type Renderer = - GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLfloat -> GLint -> GLint -> GLfloat -> IO () - --- draw front face -gearFront :: Renderer -gearFront r0 r1 _ w da teeth i angle = do - vertex (Vertex3 (r0 * cos angle) (r0 * sin angle) w) - vertex (Vertex3 (r1 * cos angle) (r1 * sin angle) w) - when (i < teeth) $ do - vertex (Vertex3 (r0 * cos angle ) (r0 * sin angle ) w) - vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) w) - --- draw front sides of teeth -teethFront :: Renderer -teethFront _ r1 r2 w da teeth i angle = - when (i < teeth) $ do - vertex (Vertex3 (r1 * cos angle ) (r1 * sin angle ) w) - vertex (Vertex3 (r2 * cos (angle + da)) (r2 * sin (angle + da)) w) - vertex (Vertex3 (r2 * cos (angle + 2 * da)) (r2 * sin (angle + 2 * da)) w) - vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) w) - --- draw back face -gearBack :: Renderer -gearBack r0 r1 _ w da teeth i angle = do - vertex (Vertex3 (r1 * cos angle) (r1 * sin angle) (-w)) - vertex (Vertex3 (r0 * cos angle) (r0 * sin angle) (-w)) - when (i < teeth) $ do - vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) (-w)) - vertex (Vertex3 (r0 * cos angle ) (r0 * sin angle ) (-w)) - --- draw back sides of teeth -teethBack :: Renderer -teethBack _ r1 r2 w da teeth i angle = - when (i < teeth) $ do - vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) (-w)) - vertex (Vertex3 (r2 * cos (angle + 2 * da)) (r2 * sin (angle + 2 * da)) (-w)) - vertex (Vertex3 (r2 * cos (angle + da)) (r2 * sin (angle + da)) (-w)) - vertex (Vertex3 (r1 * cos angle ) (r1 * sin angle ) (-w)) - --- draw outward faces of teeth -teethFace :: Renderer -teethFace _ r1 r2 w da teeth i angle = - if (i < teeth) then do - vertex (Vertex3 (r1*(cos angle)) (r1*(sin angle)) w) - vertex (Vertex3 (r1*(cos angle)) (r1*(sin angle)) (-w)) - - let u' = r2 * cos (angle + da) - r1 * cos angle - v' = r2 * sin (angle + da) - r1 * sin angle - len = sqrt (u' * u' + v' * v') - u = u' / len - v = v' / len - currentNormal $= Normal3 v (-u) 0 - vertex (Vertex3 (r2 * cos (angle + da)) (r2 * sin (angle + da)) w ) - vertex (Vertex3 (r2 * cos (angle + da)) (r2 * sin (angle + da)) (-w)) - currentNormal $= Normal3 (cos angle) (sin angle) 0 - vertex (Vertex3 (r2 * cos (angle + 2 * da)) (r2 * sin (angle + 2 * da)) w ) - vertex (Vertex3 (r2 * cos (angle + 2 * da)) (r2 * sin (angle + 2 * da)) (-w)) - let u2 = r1 * cos (angle + 3 * da) - r2 * cos (angle + 2 * da); - v2 = r1 * sin (angle + 3 * da) - r2 * sin (angle + 2 * da); - currentNormal $= Normal3 v2 (-u2) 0 - vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) w ) - vertex (Vertex3 (r1 * cos (angle + 3 * da)) (r1 * sin (angle + 3 * da)) (-w)) - currentNormal $= Normal3 (cos angle) (sin angle) 0 - else do - vertex (Vertex3 (r1 * cos 0) (r1 * sin 0) w ) - vertex (Vertex3 (r1 * cos 0) (r1 * sin 0) (-w)) - --- draw inside radius cylinder -gearInside :: Renderer -gearInside r0 _ _ w _ _ _ angle = do - currentNormal $= Normal3 (-cos angle) (-sin angle) 0 - vertex (Vertex3 (r0 * cos angle) (r0 * sin angle) (-w)) - vertex (Vertex3 (r0 * cos angle) (r0 * sin angle) w ) - -draw :: (DisplayList,DisplayList,DisplayList,Int) -> State -> IO () -draw (gear1, gear2, gear3, autoexit) state = do - clear [ ColorBuffer, DepthBuffer ] - (x, y, z) <- get (viewRot state) - a <- get (angle' state) - - let translatef = translate :: Vector3 GLfloat -> IO () - preservingMatrix $ do - rotate x (Vector3 1 0 0) - rotate y (Vector3 0 1 0) - rotate z (Vector3 0 0 1) - - preservingMatrix $ do - translatef (Vector3 (-3) (-2) 0) - rotate a (Vector3 0 0 1) - callList gear1 - - preservingMatrix $ do - translatef (Vector3 3.1 (-2) 0) - rotate (-2 * a - 9) (Vector3 0 0 1) - callList gear2 - - preservingMatrix $ do - translatef (Vector3 (-3.1) 4.2 0) - rotate (-2 * a - 25) (Vector3 0 0 1) - callList gear3 - - swapBuffers - frames state $~! (+1) - t0' <- get (t0 state) - t <- get elapsedTime - when (t - t0' >= 5000) $ do - f <- get (frames state) - let seconds = fromIntegral (t - t0') / 1000 :: GLfloat - fps = fromIntegral f / seconds - putStrLn (show f ++ " frames in " ++ show seconds ++ " seconds = "++ show fps ++ " FPS") - t0 state $= t - frames state $= 0 - when ((t >= 999 * autoexit) && (autoexit /= 0)) $ - exitWith ExitSuccess - -idle :: State -> IdleCallback -idle state = do - angle' state $~! (+2) - postRedisplay Nothing - -keyboard :: State -> KeyboardMouseCallback -keyboard state (Char 'z') _ _ _ = modRot state ( 0, 0, 5) -keyboard state (Char 'Z') _ _ _ = modRot state ( 0, 0, -5) -keyboard state (SpecialKey KeyUp) _ _ _ = modRot state ( 5, 0, 0) -keyboard state (SpecialKey KeyDown) _ _ _ = modRot state (-5, 0, 0) -keyboard state (SpecialKey KeyLeft) _ _ _ = modRot state ( 0, 5, 0) -keyboard state (SpecialKey KeyRight)_ _ _ = modRot state ( 0, -5, 0) -keyboard _ (Char '\27') _ _ _ = exitWith ExitSuccess -keyboard _ _ _ _ _ = return () - -modRot :: State -> View -> IO () -modRot state (dx,dy,dz) = do - (x, y, z) <- get (viewRot state) - viewRot state $= (x + dx, y + dy, z + dz) - postRedisplay Nothing - --- new window size or exposure -reshape :: ReshapeCallback -reshape s@(Size width height) = do - let h = fromIntegral height / fromIntegral width - - viewport $= (Position 0 0, s) - matrixMode $= Projection - loadIdentity - frustum (-1) 1 (-h) h 5 60 - matrixMode $= Modelview 0 - loadIdentity - translate (Vector3 0 0 (-40 :: GLfloat)) - -data Flag = GLInfo | AutoExit deriving ( Eq, Ord, Show ) - -argInfo :: [OptDescr Flag] -argInfo = [ - Option ['i'] ["info"] (NoArg GLInfo) "print gl information", - Option ['e'] ["exit"] (NoArg AutoExit) "auto exit after 30 seconds" ] - -opts :: [String] -> IO [Flag] -opts args = - case getOpt Permute argInfo args of - (o,_,[]) -> return o - (_,_,errs) -> do - putStr (concat errs ++ usageInfo "Usage: Gears [OPTION...]" argInfo) - exitFailure - -info :: IO () -info = do - rendererStr <- get renderer - putStrLn ("GL_RENDERER = " ++ rendererStr) - vendorStr <- get vendor - putStrLn ("GL_VENDOR = " ++ vendorStr) - versionStr <- get glVersion - putStrLn ("GL_VERSION = " ++ versionStr) - exts <- get glExtensions - putStrLn ("GL_EXTENSIONS = " ++ concat (intersperse " " exts)) - -myInit :: [String] -> IO (DisplayList,DisplayList,DisplayList,Int) -myInit args = do - position (Light 0) $= Vertex4 5 5 10 0 - cullFace $= Just Back - lighting $= Enabled - light (Light 0) $= Enabled - depthFunc $= Just Less - - -- make the gears - g1 <- defineNewList Compile $ do - materialAmbientAndDiffuse Front $= Color4 0.8 0.1 0.0 1.0 - gear 1 4 1 20 0.7 - - g2 <- defineNewList Compile $ do - materialAmbientAndDiffuse Front $= Color4 0.0 0.8 0.2 1.0 - gear 0.5 2 2 10 0.7 - - g3 <- defineNewList Compile $ do - materialAmbientAndDiffuse Front $= Color4 0.2 0.2 1.0 1.0 - gear 1.3 2 0.5 10 0.7 - - normalize $= Enabled - - flags <- opts args - when (GLInfo `elem` flags) info - let autoexit = if AutoExit `elem` flags then 30 else 0 - when (autoexit /= 0) $ - putStrLn ("Auto Exit after " ++ show autoexit ++ " seconds.") - - return (g1, g2, g3, autoexit) - -visible :: State -> Visibility -> IO () -visible state Visible = idleCallback $= Just (idle state) -visible _ NotVisible = idleCallback $= Nothing - -main :: IO () -main = do - (_progName, args) <- getArgsAndInitialize - initialDisplayMode $= [ RGBMode, WithDepthBuffer, DoubleBuffered ] - - initialWindowPosition $= Position 0 0 - initialWindowSize $= Size 300 300 - createWindow "Gears" - state <- makeState - gearsAndAuto <- myInit args - - displayCallback $= draw gearsAndAuto state - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just (keyboard state) - visibilityCallback $= Just (visible state) - - mainLoop rmfile ./GLUT/examples/Misc/Gears.hs hunk ./GLUT/examples/Misc/Pitfall14.hs 1 -{- - Pitfall14 - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates pitfall 14 (Careful Enabling Color Material) - of Mark Kilgard's "16 Common OpenGL Pitfalls", see: - http://www.opengl.org/resources/features/KilgardTechniques/oglpitfall/ --} - -import Control.Monad ( unless ) -import System.Exit ( exitFailure ) -import Graphics.UI.GLUT - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - createWindow progName - - currentColor $= Color4 1 1 1 1 - materialAmbient Front $= Color4 0.1 0.1 0.1 1 - -- re-get to avoid any rounding issues - mafBefore <- get (materialAmbient Front) - - colorMaterial $= Just (Front, Diffuse) - mafAfter <- get (materialAmbient Front) - unless (mafBefore == mafAfter) $ do - putStrLn "ERROR: The ambient material property changed!" - putStrLn (" before: " ++ show mafBefore) - putStrLn (" after : " ++ show mafAfter) - exitFailure rmfile ./GLUT/examples/Misc/Pitfall14.hs hunk ./GLUT/examples/Misc/Triangulate.hs 1 -{- - Triangulate.hs (adapted from tess.c which is (c) Silicon Graphics, Inc) - Copyright (c) Sven Panne 2002-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE - - This program demonstrates polygon triangulation. Two tesselated objects are - drawn. The first is a rectangle with a triangular hole. The second is a - smooth shaded, self-intersecting star. - - Note the exterior rectangle is drawn with its vertices in counter-clockwise - order, but its interior clockwise. Note the combineCallback is needed for the - self-intersecting star. Also note that removing the TessProperty for the - star will make the interior unshaded (TessWindingOdd). --} - -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import System.Random ( randomIO ) -import Graphics.UI.GLUT - -display :: [DisplayList] -> DisplayCallback -display displayLists = do - clear [ ColorBuffer ] - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 1 1 1) - mapM callList displayLists - flush - --- 'Float' is a dummy, any marshalable type would do -type DontCare = Float - -rectangle :: ComplexContour DontCare -rectangle = ComplexContour [ - AnnotatedVertex (Vertex3 50 50 0) 0, - AnnotatedVertex (Vertex3 200 50 0) 0, - AnnotatedVertex (Vertex3 200 200 0) 0, - AnnotatedVertex (Vertex3 50 200 0) 0 ] - -tri :: ComplexContour DontCare -tri = ComplexContour [ - AnnotatedVertex (Vertex3 75 75 0) 0, - AnnotatedVertex (Vertex3 125 175 0) 0, - AnnotatedVertex (Vertex3 175 75 0) 0 ] - -rectAndTri :: ComplexPolygon DontCare -rectAndTri = ComplexPolygon [ rectangle, tri ] - -star :: ComplexPolygon DontCare -star = ComplexPolygon [ - ComplexContour [ - AnnotatedVertex (Vertex3 250 50 0) 0, - AnnotatedVertex (Vertex3 325 200 0) 0, - AnnotatedVertex (Vertex3 400 50 0) 0, - AnnotatedVertex (Vertex3 250 150 0) 0, - AnnotatedVertex (Vertex3 400 150 0) 0 ] ] - -myInit :: IO [DisplayList] -myInit = do - clearColor $= Color4 0 0 0 0 - rectAndTriList <- compileNewList TessWindingOdd rectAndTri - starList <- compileNewList TessWindingPositive star - return [ rectAndTriList, starList ] - -compileNewList :: TessWinding -> ComplexPolygon DontCare -> IO DisplayList -compileNewList windingRule complexPolygon = - defineNewList Compile $ - drawTriangulation =<< - triangulate windingRule 0 (Normal3 0 0 0) noOpCombiner complexPolygon - -noOpCombiner :: Combiner DontCare -noOpCombiner _newVertex _weightedProperties = 0 - -drawTriangulation :: Triangulation DontCare -> IO () -drawTriangulation (Triangulation triangles) = - renderPrimitive Triangles $ - flip mapM_ triangles $ \(Triangle tv1 tv2 tv3) -> do - randomColor - drawTriangleVertex tv1 - drawTriangleVertex tv2 - drawTriangleVertex tv3 - -randomColor :: IO () -randomColor = do - r <- randomIO - g <- randomIO - b <- randomIO - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - color3f (Color3 r g b) - -drawTriangleVertex :: TriangleVertex DontCare -> IO () -drawTriangleVertex (AnnotatedVertex plainVertex (_, e)) = do - edgeFlag $= e - vertex plainVertex - -reshape :: ReshapeCallback -reshape size@(Size w h) = do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - ortho2D 0 (fromIntegral w) 0 (fromIntegral h) - matrixMode $= Modelview 0 - loadIdentity - -keyboard :: KeyboardMouseCallback -keyboard (Char '\27') Down _ _ = exitWith ExitSuccess -keyboard _ _ _ _ = return () - -main :: IO () -main = do - (progName, _args) <- getArgsAndInitialize - initialDisplayMode $= [ SingleBuffered, RGBMode ] - initialWindowSize $= Size 500 500 - createWindow progName - displayLists <- myInit - displayCallback $= display displayLists - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboard - mainLoop rmfile ./GLUT/examples/Misc/Triangulate.hs hunk ./GLUT/examples/Misc/index.html 1 - - - - Index of /packages/GLUT/examples/Misc - - -

Index of /packages/GLUT/examples/Misc

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] ARBOcclude.hs 15-Nov-2006 02:07 5.2K -[TXT] ExtractContours.hs 11-Jan-2006 10:33 3.9K -[TXT] Gears.hs 15-Nov-2006 02:07 10K -[TXT] Pitfall14.hs 11-Jan-2006 10:33 1.1K -[TXT] Triangulate.hs 11-Jan-2006 10:33 3.9K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/Misc/index.html rmdir ./GLUT/examples/Misc hunk ./GLUT/examples/BOGLGP/Chapter03/Lines.hs 1 -{- - Lines.hs (adapted from Lines which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2004-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( when, unless, zipWithM_ ) -import Data.Maybe ( isJust ) -import Graphics.UI.GLUT hiding ( initialize ) -import System.Console.GetOpt -import System.Environment ( getProgName ) -import System.Exit ( exitWith, ExitCode(..) ) -import System.IO ( hPutStr, stderr ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - (_, args) <- getArgsAndInitialize - opts <- parseOptions args - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - (if useFullscreen opts then fullscreenMode else windowedMode) opts - - initialize - - -- Register the event callback functions - displayCallback $= do render; swapBuffers - reshapeCallback $= Just setupProjection - keyboardMouseCallback $= Just keyboardMouseHandler - -- No need for an idle callback here, this would just hog the CPU - -- without any visible effect - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - -fullscreenMode :: Options -> IO () -fullscreenMode opts = do - let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) - gameModeCapabilities $= - (addCapability GameModeWidth (Just (windowWidth opts)) . - addCapability GameModeHeight (Just (windowHeight opts)) . - addCapability GameModeBitsPerPlane (bpp opts) . - addCapability GameModeRefreshRate (refreshRate opts)) [] - enterGameMode - maybeWin <- get currentWindow - if isJust maybeWin - then cursor $= None - else do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) - -windowedMode :: Options -> IO () -windowedMode opts = do - initialWindowSize $= - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - createWindow "BOGLGP - Chapter 3 - Lines" - return () - --------------------------------------------------------------------------------- --- Option handling --------------------------------------------------------------------------------- -data Options = Options { - useFullscreen :: Bool, - windowWidth :: Int, - windowHeight :: Int, - bpp :: Maybe Int, - refreshRate :: Maybe Int - } - -startOpt :: Options -startOpt = Options { - useFullscreen = False, - windowWidth = 800, - windowHeight = 600, - bpp = Nothing, - refreshRate = Nothing - } - -options :: [OptDescr (Options -> IO Options)] -options = [ - Option ['f'] ["fullscreen"] - (NoArg (\opt -> return opt { useFullscreen = True })) - "use fullscreen mode if possible", - Option ['w'] ["width"] - (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg - return opt { windowWidth = w }) - "WIDTH") - "use window width WIDTH", - Option ['h'] ["height"] - (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg - return opt { windowHeight = h }) - "HEIGHT") - "use window height HEIGHT", - Option ['b'] ["bpp"] - (ReqArg (\arg opt -> do b <- readInt "BPP" arg - return opt { bpp = Just b }) - "BPP") - "use BPP bits per plane (ignored in windowed mode)", - Option ['r'] ["refresh-rate"] - (ReqArg (\arg opt -> do r <- readInt "HZ" arg - return opt { refreshRate = Just r }) - "HZ") - "use refresh rate HZ (ignored in windowed mode)", - Option ['?'] ["help"] - (NoArg (\_ -> do usage >>= putStr - safeExitWith ExitSuccess)) - "show help" ] - -readInt :: String -> String -> IO Int -readInt name arg = - case reads arg of - ((x,[]) : _) -> return x - _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] - -usage :: IO String -usage = do - progName <- getProgName - return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options - -parseOptions :: [String] -> IO Options -parseOptions args = do - let (optsActions, nonOptions, errs) = getOpt Permute options args - unless (null nonOptions && null errs) (dieWith errs) - foldl (>>=) (return startOpt) optsActions - -dieWith :: [String] -> IO a -dieWith errs = do - u <- usage - mapM_ (hPutStr stderr) (errs ++ [u]) - safeExitWith (ExitFailure 1) - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit when --- ESCAPE is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = return () - -safeExitWith :: ExitCode -> IO a -safeExitWith code = do - gma <- get gameModeActive - when gma leaveGameMode - exitWith code - --------------------------------------------------------------------------------- --- Do one time setup, i.e. set the clear color. --------------------------------------------------------------------------------- -initialize :: IO () -initialize = clearColor $= Color4 0 0 0 0 - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -setupProjection :: ReshapeCallback -setupProjection (Size width height) = do - -- don't want a divide by zero - let h = max 1 height - -- reset the viewport to new dimensions - viewport $= (Position 0 0, Size width h) - -- set projection matrix as the current matrix - matrixMode $= Projection - -- reset projection matrix - loadIdentity - - -- calculate aspect ratio of window - perspective 52 (fromIntegral width / fromIntegral h) 1 1000 - - -- set modelview matrix - matrixMode $= Modelview 0 - -- reset modelview matrix - loadIdentity - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -render :: DisplayCallback -render = do - -- clear screen and depth buffer - clear [ ColorBuffer, DepthBuffer ] - loadIdentity - lookAt (Vertex3 0 10 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) - - -- function to draw a series of lines of increasing width - let drawLines x = zipWithM_ (\lw line -> do - -- set the line width - lineWidth $= lw - - -- draw the line - renderPrimitive Lines $ do - vertex (Vertex3 x 0 (line - 3)) - vertex (Vertex3 (x + 4) 0 (line - 3))) - [ 0.5 .. ] - [ 0, 0.5 .. 6.5 :: GLfloat ] - - -- draw a series of lines of increasing width without stippling - drawLines (-5) - - -- set the stipple pattern, 0xAAAA = 1010 1010 1010 1010 - lineStipple $= Just (2, 0xAAAA) - - -- draw a series of lines of increasing width with stippling - drawLines 1 - - -- disable stippling - lineStipple $= Nothing rmfile ./GLUT/examples/BOGLGP/Chapter03/Lines.hs hunk ./GLUT/examples/BOGLGP/Chapter03/OnYourOwn1.hs 1 -{- - OnYourOwn1.hs (adapted from OnYourOwn1 which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( when, unless ) -import Data.Maybe ( isJust ) -import Graphics.UI.GLUT hiding ( initialize ) -import System.Console.GetOpt -import System.Environment ( getProgName ) -import System.Exit ( exitWith, ExitCode(..) ) -import System.IO ( hPutStr, stderr ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - (_, args) <- getArgsAndInitialize - opts <- parseOptions args - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - (if useFullscreen opts then fullscreenMode else windowedMode) opts - - initialize - - -- Register the event callback functions - displayCallback $= do render; swapBuffers - reshapeCallback $= Just setupProjection - keyboardMouseCallback $= Just keyboardMouseHandler - -- No need for an idle callback here, this would just hog the CPU - -- without any visible effect - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - -fullscreenMode :: Options -> IO () -fullscreenMode opts = do - let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) - gameModeCapabilities $= - (addCapability GameModeWidth (Just (windowWidth opts)) . - addCapability GameModeHeight (Just (windowHeight opts)) . - addCapability GameModeBitsPerPlane (bpp opts) . - addCapability GameModeRefreshRate (refreshRate opts)) [] - enterGameMode - maybeWin <- get currentWindow - if isJust maybeWin - then cursor $= None - else do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) - -windowedMode :: Options -> IO () -windowedMode opts = do - initialWindowSize $= - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - createWindow "BOGLGP - Chapter 3 - On Your Own 1" - return () - --------------------------------------------------------------------------------- --- Option handling --------------------------------------------------------------------------------- -data Options = Options { - useFullscreen :: Bool, - windowWidth :: Int, - windowHeight :: Int, - bpp :: Maybe Int, - refreshRate :: Maybe Int - } - -startOpt :: Options -startOpt = Options { - useFullscreen = False, - windowWidth = 800, - windowHeight = 600, - bpp = Nothing, - refreshRate = Nothing - } - -options :: [OptDescr (Options -> IO Options)] -options = [ - Option ['f'] ["fullscreen"] - (NoArg (\opt -> return opt { useFullscreen = True })) - "use fullscreen mode if possible", - Option ['w'] ["width"] - (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg - return opt { windowWidth = w }) - "WIDTH") - "use window width WIDTH", - Option ['h'] ["height"] - (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg - return opt { windowHeight = h }) - "HEIGHT") - "use window height HEIGHT", - Option ['b'] ["bpp"] - (ReqArg (\arg opt -> do b <- readInt "BPP" arg - return opt { bpp = Just b }) - "BPP") - "use BPP bits per plane (ignored in windowed mode)", - Option ['r'] ["refresh-rate"] - (ReqArg (\arg opt -> do r <- readInt "HZ" arg - return opt { refreshRate = Just r }) - "HZ") - "use refresh rate HZ (ignored in windowed mode)", - Option ['?'] ["help"] - (NoArg (\_ -> do usage >>= putStr - safeExitWith ExitSuccess)) - "show help" ] - -readInt :: String -> String -> IO Int -readInt name arg = - case reads arg of - ((x,[]) : _) -> return x - _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] - -usage :: IO String -usage = do - progName <- getProgName - return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options - -parseOptions :: [String] -> IO Options -parseOptions args = do - let (optsActions, nonOptions, errs) = getOpt Permute options args - unless (null nonOptions && null errs) (dieWith errs) - foldl (>>=) (return startOpt) optsActions - -dieWith :: [String] -> IO a -dieWith errs = do - u <- usage - mapM_ (hPutStr stderr) (errs ++ [u]) - safeExitWith (ExitFailure 1) - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit when --- ESCAPE is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = return () - -safeExitWith :: ExitCode -> IO a -safeExitWith code = do - gma <- get gameModeActive - when gma leaveGameMode - exitWith code - --------------------------------------------------------------------------------- --- Do one time setup, i.e. set the clear color. --------------------------------------------------------------------------------- -initialize :: IO () -initialize = do - -- clear to black background - clearColor $= Color4 0 0 0 0 - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -setupProjection :: ReshapeCallback -setupProjection (Size width height) = do - -- don't want a divide by zero - let h = max 1 height - -- reset the viewport to new dimensions - viewport $= (Position 0 0, Size width h) - -- set projection matrix as the current matrix - matrixMode $= Projection - -- reset projection matrix - loadIdentity - - -- calculate aspect ratio of window - perspective 52 (fromIntegral width / fromIntegral h) 1 1000 - - -- set modelview matrix - matrixMode $= Modelview 0 - -- reset modelview matrix - loadIdentity - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -render :: DisplayCallback -render = do - -- clear screen and depth buffer - clear [ ColorBuffer, DepthBuffer ] - loadIdentity - lookAt (Vertex3 0 10 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) - - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - - color3f (Color3 1 1 1) - - drawCircleApproximation 2 10 False - --- Hello, this is C... :-) -for :: [GLint] -> (GLint -> IO ()) -> IO () -for = flip mapM_ - -drawCircleApproximation :: GLfloat -> GLint -> Bool -> IO () -drawCircleApproximation radius numberOfSides edgeOnly = - -- if edge only, use line strips; otherwise, use polygons - renderPrimitive (if edgeOnly then LineStrip else Polygon) $ do - - -- calculate each vertex on the circle - for [ 0 .. numberOfSides - 1 ] $ \v -> do - - -- calculate the angle of the current vertex - let angle = fromIntegral v * 2 * pi / fromIntegral numberOfSides - - -- draw the current vertex at the correct radius - vertex (Vertex3 (cos angle * radius) 0 (sin angle * radius)) - - -- if drawing edge only, then need to complete the loop with first vertex - when edgeOnly $ - vertex (Vertex3 radius 0 0) rmfile ./GLUT/examples/BOGLGP/Chapter03/OnYourOwn1.hs hunk ./GLUT/examples/BOGLGP/Chapter03/Points.hs 1 -{- - Points.hs (adapted from Points which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2004-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( when, unless, zipWithM_ ) -import Data.Maybe ( isJust ) -import Graphics.UI.GLUT hiding ( initialize ) -import System.Console.GetOpt -import System.Environment ( getProgName ) -import System.Exit ( exitWith, ExitCode(..) ) -import System.IO ( hPutStr, stderr ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - (_, args) <- getArgsAndInitialize - opts <- parseOptions args - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - (if useFullscreen opts then fullscreenMode else windowedMode) opts - - initialize - - -- Register the event callback functions - displayCallback $= do render; swapBuffers - reshapeCallback $= Just setupProjection - keyboardMouseCallback $= Just keyboardMouseHandler - -- No need for an idle callback here, this would just hog the CPU - -- without any visible effect - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - -fullscreenMode :: Options -> IO () -fullscreenMode opts = do - let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) - gameModeCapabilities $= - (addCapability GameModeWidth (Just (windowWidth opts)) . - addCapability GameModeHeight (Just (windowHeight opts)) . - addCapability GameModeBitsPerPlane (bpp opts) . - addCapability GameModeRefreshRate (refreshRate opts)) [] - enterGameMode - maybeWin <- get currentWindow - if isJust maybeWin - then cursor $= None - else do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) - -windowedMode :: Options -> IO () -windowedMode opts = do - initialWindowSize $= - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - createWindow "BOGLGP - Chapter 3 - Points" - return () - --------------------------------------------------------------------------------- --- Option handling --------------------------------------------------------------------------------- -data Options = Options { - useFullscreen :: Bool, - windowWidth :: Int, - windowHeight :: Int, - bpp :: Maybe Int, - refreshRate :: Maybe Int - } - -startOpt :: Options -startOpt = Options { - useFullscreen = False, - windowWidth = 800, - windowHeight = 600, - bpp = Nothing, - refreshRate = Nothing - } - -options :: [OptDescr (Options -> IO Options)] -options = [ - Option ['f'] ["fullscreen"] - (NoArg (\opt -> return opt { useFullscreen = True })) - "use fullscreen mode if possible", - Option ['w'] ["width"] - (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg - return opt { windowWidth = w }) - "WIDTH") - "use window width WIDTH", - Option ['h'] ["height"] - (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg - return opt { windowHeight = h }) - "HEIGHT") - "use window height HEIGHT", - Option ['b'] ["bpp"] - (ReqArg (\arg opt -> do b <- readInt "BPP" arg - return opt { bpp = Just b }) - "BPP") - "use BPP bits per plane (ignored in windowed mode)", - Option ['r'] ["refresh-rate"] - (ReqArg (\arg opt -> do r <- readInt "HZ" arg - return opt { refreshRate = Just r }) - "HZ") - "use refresh rate HZ (ignored in windowed mode)", - Option ['?'] ["help"] - (NoArg (\_ -> do usage >>= putStr - safeExitWith ExitSuccess)) - "show help" ] - -readInt :: String -> String -> IO Int -readInt name arg = - case reads arg of - ((x,[]) : _) -> return x - _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] - -usage :: IO String -usage = do - progName <- getProgName - return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options - -parseOptions :: [String] -> IO Options -parseOptions args = do - let (optsActions, nonOptions, errs) = getOpt Permute options args - unless (null nonOptions && null errs) (dieWith errs) - foldl (>>=) (return startOpt) optsActions - -dieWith :: [String] -> IO a -dieWith errs = do - u <- usage - mapM_ (hPutStr stderr) (errs ++ [u]) - safeExitWith (ExitFailure 1) - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit when --- ESCAPE is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = return () - -safeExitWith :: ExitCode -> IO a -safeExitWith code = do - gma <- get gameModeActive - when gma leaveGameMode - exitWith code - --------------------------------------------------------------------------------- --- Do one time setup, i.e. set the clear color. --------------------------------------------------------------------------------- -initialize :: IO () -initialize = clearColor $= Color4 0 0 0 0 - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -setupProjection :: ReshapeCallback -setupProjection (Size width height) = do - -- don't want a divide by zero - let h = max 1 height - -- reset the viewport to new dimensions - viewport $= (Position 0 0, Size width h) - -- set projection matrix as the current matrix - matrixMode $= Projection - -- reset projection matrix - loadIdentity - - -- calculate aspect ratio of window - perspective 52 (fromIntegral width / fromIntegral h) 1 1000 - - -- set modelview matrix - matrixMode $= Modelview 0 - -- reset modelview matrix - loadIdentity - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -render :: DisplayCallback -render = do - -- clear screen and depth buffer - clear [ ColorBuffer, DepthBuffer ] - loadIdentity - lookAt (Vertex3 0 6 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) - - -- draw a line of points of increasing size - zipWithM_ (\ps point -> do - -- set the point size - pointSize $= ps - -- draw the point - renderPrimitive Points $ - vertex (Vertex3 point 0 0)) - [ 0.5 .. ] - [ -4, -3.5 .. 4.5 :: GLfloat ] rmfile ./GLUT/examples/BOGLGP/Chapter03/Points.hs hunk ./GLUT/examples/BOGLGP/Chapter03/Polygons.hs 1 -{- - Polygons.hs (adapted from Polygons which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2004-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( when, unless ) -import Data.IORef ( IORef, newIORef ) -import Data.Maybe ( isJust ) -import Graphics.UI.GLUT hiding ( initialize ) -import System.Console.GetOpt -import System.Environment ( getProgName ) -import System.Exit ( exitWith, ExitCode(..) ) -import System.IO ( hPutStr, stderr ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - (_, args) <- getArgsAndInitialize - opts <- parseOptions args - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - (if useFullscreen opts then fullscreenMode else windowedMode) opts - - state <- initialize - - -- Register the event callback functions - displayCallback $= do render state; swapBuffers - reshapeCallback $= Just setupProjection - keyboardMouseCallback $= Just keyboardMouseHandler - idleCallback $= Just (postRedisplay Nothing) - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - -fullscreenMode :: Options -> IO () -fullscreenMode opts = do - let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) - gameModeCapabilities $= - (addCapability GameModeWidth (Just (windowWidth opts)) . - addCapability GameModeHeight (Just (windowHeight opts)) . - addCapability GameModeBitsPerPlane (bpp opts) . - addCapability GameModeRefreshRate (refreshRate opts)) [] - enterGameMode - maybeWin <- get currentWindow - if isJust maybeWin - then cursor $= None - else do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) - -windowedMode :: Options -> IO () -windowedMode opts = do - initialWindowSize $= - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - createWindow "BOGLGP - Chapter 3 - Polygons" - return () - --------------------------------------------------------------------------------- --- Option handling --------------------------------------------------------------------------------- -data Options = Options { - useFullscreen :: Bool, - windowWidth :: Int, - windowHeight :: Int, - bpp :: Maybe Int, - refreshRate :: Maybe Int - } - -startOpt :: Options -startOpt = Options { - useFullscreen = False, - windowWidth = 800, - windowHeight = 600, - bpp = Nothing, - refreshRate = Nothing - } - -options :: [OptDescr (Options -> IO Options)] -options = [ - Option ['f'] ["fullscreen"] - (NoArg (\opt -> return opt { useFullscreen = True })) - "use fullscreen mode if possible", - Option ['w'] ["width"] - (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg - return opt { windowWidth = w }) - "WIDTH") - "use window width WIDTH", - Option ['h'] ["height"] - (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg - return opt { windowHeight = h }) - "HEIGHT") - "use window height HEIGHT", - Option ['b'] ["bpp"] - (ReqArg (\arg opt -> do b <- readInt "BPP" arg - return opt { bpp = Just b }) - "BPP") - "use BPP bits per plane (ignored in windowed mode)", - Option ['r'] ["refresh-rate"] - (ReqArg (\arg opt -> do r <- readInt "HZ" arg - return opt { refreshRate = Just r }) - "HZ") - "use refresh rate HZ (ignored in windowed mode)", - Option ['?'] ["help"] - (NoArg (\_ -> do usage >>= putStr - safeExitWith ExitSuccess)) - "show help" ] - -readInt :: String -> String -> IO Int -readInt name arg = - case reads arg of - ((x,[]) : _) -> return x - _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] - -usage :: IO String -usage = do - progName <- getProgName - return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options - -parseOptions :: [String] -> IO Options -parseOptions args = do - let (optsActions, nonOptions, errs) = getOpt Permute options args - unless (null nonOptions && null errs) (dieWith errs) - foldl (>>=) (return startOpt) optsActions - -dieWith :: [String] -> IO a -dieWith errs = do - u <- usage - mapM_ (hPutStr stderr) (errs ++ [u]) - safeExitWith (ExitFailure 1) - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit when --- ESCAPE is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = return () - -safeExitWith :: ExitCode -> IO a -safeExitWith code = do - gma <- get gameModeActive - when gma leaveGameMode - exitWith code - --------------------------------------------------------------------------------- --- The globale state, which is only the current angle in this simple demo. --- We don't need the window dimensions here, they are not used and would --- be easily available via GLUT anyway. --------------------------------------------------------------------------------- -data State = State { angle :: IORef GLfloat } - -makeState :: IO State -makeState = do - a <- newIORef 0 - return $ State { angle = a } - --------------------------------------------------------------------------------- --- Do one time setup, i.e. set the clear color and create the global state. --- Note that there is no need to set the polygon mode here, because we always --- set the front and back mode together. --------------------------------------------------------------------------------- -initialize :: IO State -initialize = do - -- clear to black background - clearColor $= Color4 0 0 0 0 - - makeState - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -setupProjection :: ReshapeCallback -setupProjection (Size width height) = do - -- don't want a divide by zero - let h = max 1 height - -- reset the viewport to new dimensions - viewport $= (Position 0 0, Size width h) - -- set projection matrix as the current matrix - matrixMode $= Projection - -- reset projection matrix - loadIdentity - - -- calculate aspect ratio of window - perspective 52 (fromIntegral width / fromIntegral h) 1 1000 - - -- set modelview matrix - matrixMode $= Modelview 0 - -- reset modelview matrix - loadIdentity - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -render :: State -> DisplayCallback -render state = do - -- clear screen and depth buffer - clear [ ColorBuffer, DepthBuffer ] - loadIdentity - lookAt (Vertex3 0 10 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) - - a <- get (angle state) - mapM_ (draw2DSquare a) [ - (Line, Fill, -4, Color3 1 0 0), - (Fill, Point, -2, Color3 0 1 0), - (Fill, Fill, 0, Color3 0 0 1), - (Fill, Line, 2, Color3 1 0 1), - (Line, Line, 4, Color3 1 1 0)] - - angle state $~ (+ 0.2) - -draw2DSquare :: - GLfloat -> (PolygonMode, PolygonMode, GLfloat, Color3 GLfloat) -> IO () -draw2DSquare a (polygonModeFront, polygonModeBack, deltaX, c) = do - polygonMode $= (polygonModeFront, polygonModeBack) - preservingMatrix $ do - translate (Vector3 deltaX 0 0) - rotate a (Vector3 0 0 1) - color c - renderPrimitive Polygon $ do - -- resolve overloading, not needed in "real" programs - let vertex3f = vertex :: Vertex3 GLfloat -> IO () - vertex3f (Vertex3 (-0.5) 0 0 ) - vertex3f (Vertex3 0.5 0 0 ) - vertex3f (Vertex3 0.5 0 (-1)) - vertex3f (Vertex3 (-0.5) 0 (-1)) rmfile ./GLUT/examples/BOGLGP/Chapter03/Polygons.hs hunk ./GLUT/examples/BOGLGP/Chapter03/TrianglesQuads.hs 1 -{- - TrianglesQuads.hs (adapted from TrianglesQuads which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2004-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( when, unless ) -import Data.Maybe ( isJust ) -import Graphics.UI.GLUT hiding ( initialize ) -import System.Console.GetOpt -import System.Environment ( getProgName ) -import System.Exit ( exitWith, ExitCode(..) ) -import System.IO ( hPutStr, stderr ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - (_, args) <- getArgsAndInitialize - opts <- parseOptions args - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - (if useFullscreen opts then fullscreenMode else windowedMode) opts - - initialize - - -- Register the event callback functions - displayCallback $= do render; swapBuffers - reshapeCallback $= Just setupProjection - keyboardMouseCallback $= Just keyboardMouseHandler - -- No need for an idle callback here, this would just hog the CPU - -- without any visible effect - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - -fullscreenMode :: Options -> IO () -fullscreenMode opts = do - let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) - gameModeCapabilities $= - (addCapability GameModeWidth (Just (windowWidth opts)) . - addCapability GameModeHeight (Just (windowHeight opts)) . - addCapability GameModeBitsPerPlane (bpp opts) . - addCapability GameModeRefreshRate (refreshRate opts)) [] - enterGameMode - maybeWin <- get currentWindow - if isJust maybeWin - then cursor $= None - else do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) - -windowedMode :: Options -> IO () -windowedMode opts = do - initialWindowSize $= - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - createWindow "BOGLGP - Chapter 3 - TrianglesQuads" - return () - --------------------------------------------------------------------------------- --- Option handling --------------------------------------------------------------------------------- -data Options = Options { - useFullscreen :: Bool, - windowWidth :: Int, - windowHeight :: Int, - bpp :: Maybe Int, - refreshRate :: Maybe Int - } - -startOpt :: Options -startOpt = Options { - useFullscreen = False, - windowWidth = 800, - windowHeight = 600, - bpp = Nothing, - refreshRate = Nothing - } - -options :: [OptDescr (Options -> IO Options)] -options = [ - Option ['f'] ["fullscreen"] - (NoArg (\opt -> return opt { useFullscreen = True })) - "use fullscreen mode if possible", - Option ['w'] ["width"] - (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg - return opt { windowWidth = w }) - "WIDTH") - "use window width WIDTH", - Option ['h'] ["height"] - (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg - return opt { windowHeight = h }) - "HEIGHT") - "use window height HEIGHT", - Option ['b'] ["bpp"] - (ReqArg (\arg opt -> do b <- readInt "BPP" arg - return opt { bpp = Just b }) - "BPP") - "use BPP bits per plane (ignored in windowed mode)", - Option ['r'] ["refresh-rate"] - (ReqArg (\arg opt -> do r <- readInt "HZ" arg - return opt { refreshRate = Just r }) - "HZ") - "use refresh rate HZ (ignored in windowed mode)", - Option ['?'] ["help"] - (NoArg (\_ -> do usage >>= putStr - safeExitWith ExitSuccess)) - "show help" ] - -readInt :: String -> String -> IO Int -readInt name arg = - case reads arg of - ((x,[]) : _) -> return x - _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] - -usage :: IO String -usage = do - progName <- getProgName - return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options - -parseOptions :: [String] -> IO Options -parseOptions args = do - let (optsActions, nonOptions, errs) = getOpt Permute options args - unless (null nonOptions && null errs) (dieWith errs) - foldl (>>=) (return startOpt) optsActions - -dieWith :: [String] -> IO a -dieWith errs = do - u <- usage - mapM_ (hPutStr stderr) (errs ++ [u]) - safeExitWith (ExitFailure 1) - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit when --- ESCAPE is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = return () - -safeExitWith :: ExitCode -> IO a -safeExitWith code = do - gma <- get gameModeActive - when gma leaveGameMode - exitWith code - --------------------------------------------------------------------------------- --- Do one time setup, i.e. set the clear color. --------------------------------------------------------------------------------- -initialize :: IO () -initialize = clearColor $= Color4 0 0 0 0 - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -setupProjection :: ReshapeCallback -setupProjection (Size width height) = do - -- don't want a divide by zero - let h = max 1 height - -- reset the viewport to new dimensions - viewport $= (Position 0 0, Size width h) - -- set projection matrix as the current matrix - matrixMode $= Projection - -- reset projection matrix - loadIdentity - - -- calculate aspect ratio of window - perspective 52 (fromIntegral width / fromIntegral h) 1 1000 - - -- set modelview matrix - matrixMode $= Modelview 0 - -- reset modelview matrix - loadIdentity - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -render :: DisplayCallback -render = do - -- clear screen and depth buffer - clear [ ColorBuffer, DepthBuffer ] - loadIdentity - lookAt (Vertex3 0 10 0.1) (Vertex3 0 0 0) (Vector3 0 1 0) - - -- resolve overloading, not needed in "real" programs - let translate3f = translate :: Vector3 GLfloat -> IO () - - -- top left - preservingMatrix $ do - translate3f (Vector3 (-6) 0 (-4)) - drawPoints - - -- top middle - preservingMatrix $ do - polygonMode $= (Fill, Fill) - translate3f (Vector3 (-2) 0 (-4)) - drawTriangles - - -- top right - preservingMatrix $ do - polygonMode $= (Line, Line) - translate3f (Vector3 2 0 (-4)) - drawQuads - - -- bottom left - preservingMatrix $ do - polygonMode $= (Line, Line) - translate3f (Vector3 (-6) 0 0.5) - drawTriangleStrip - - -- bottom middle - preservingMatrix $ do - polygonMode $= (Line, Line) - translate3f (Vector3 (-2) 0 0.5) - drawTriangleFan - - -- bottom right - preservingMatrix $ do - polygonMode $= (Line, Line) - translate3f (Vector3 2 0 0.5) - drawQuadStrip - --- Hello, this is C... :-) -for :: [GLfloat] -> (GLfloat -> IO ()) -> IO () -for = flip mapM_ - --- draw grid of points showing dataset we are working with -drawPoints :: IO () -drawPoints = do - pointSize $= 4 - renderPrimitive Points $ - for [ 0 .. 3 ] $ \x -> - for [ 0 .. 3 ] $ \z -> - vertex (Vertex3 x 0 z) - --- draw grid as individual triangles -drawTriangles :: IO () -drawTriangles = - renderPrimitive Triangles $ - for [ 0 .. 2 ] $ \x -> - for [ 0 .. 2 ] $ \z -> do - vertex (Vertex3 x 0 z ) - vertex (Vertex3 (x + 1) 0 z ) - vertex (Vertex3 x 0 (z + 1)) - --- draw grid as triangle fan -drawTriangleFan :: IO () -drawTriangleFan = - renderPrimitive TriangleFan $ do - -- center vertex of fan - vertex (Vertex3 0 0 (0 :: GLfloat)) - - -- bottom side - for [ 3, 2 .. 0 ] $ \x -> - vertex (Vertex3 x 0 3) - - -- right side - for [ 3, 2 .. 0 ] $ \z -> - vertex (Vertex3 3 0 z) - --- draw grid as triangle strips -drawTriangleStrip :: IO () -drawTriangleStrip = - -- 3 rows of triangle strips - for [ 0 .. 2 ] $ \x -> - renderPrimitive TriangleStrip $ - for [ 0 .. 2 ] $ \z -> do - vertex (Vertex3 x 0 z ) - vertex (Vertex3 (x + 1) 0 z ) - vertex (Vertex3 x 0 (z + 1)) - vertex (Vertex3 (x + 1) 0 (z + 1)) - --- draw grid as individual quads -drawQuads :: IO () -drawQuads = - renderPrimitive Quads $ - for [ 0 .. 2 ] $ \x -> - for [ 0 .. 2 ] $ \z -> do - vertex (Vertex3 x 0 z ) - vertex (Vertex3 (x + 1) 0 z ) - vertex (Vertex3 (x + 1) 0 (z + 1)) - vertex (Vertex3 x 0 (z + 1)) - --- draw grid as quad strips -drawQuadStrip :: IO () -drawQuadStrip = - for [ 0 .. 2 ] $ \x -> - renderPrimitive QuadStrip $ - for [ 0 .. 3 ] $ \z -> do - vertex (Vertex3 x 0 z) - vertex (Vertex3 (x + 1) 0 z) rmfile ./GLUT/examples/BOGLGP/Chapter03/TrianglesQuads.hs hunk ./GLUT/examples/BOGLGP/Chapter03/index.html 1 - - - - Index of /packages/GLUT/examples/BOGLGP/Chapter03 - - -

Index of /packages/GLUT/examples/BOGLGP/Chapter03

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] Lines.hs 11-Jan-2006 10:33 7.2K -[TXT] OnYourOwn1.hs 11-Jan-2006 10:34 7.5K -[TXT] Points.hs 11-Jan-2006 10:33 6.8K -[TXT] Polygons.hs 11-Jan-2006 10:33 8.1K -[TXT] TrianglesQuads.hs 11-Jan-2006 10:34 9.4K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/BOGLGP/Chapter03/index.html rmdir ./GLUT/examples/BOGLGP/Chapter03 hunk ./GLUT/examples/BOGLGP/Chapter02/OnYourOwn1.hs 1 -{- - OnYourOwn1.hs (adapted from OpenGLApplication which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2004-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( when, unless ) -import Data.IORef ( IORef, newIORef ) -import Data.Maybe ( isJust ) -import Graphics.UI.GLUT hiding ( initialize ) -import System.Console.GetOpt -import System.Environment ( getProgName ) -import System.Exit ( exitWith, ExitCode(..) ) -import System.IO ( hPutStr, stderr ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - (_, args) <- getArgsAndInitialize - opts <- parseOptions args - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - (if useFullscreen opts then fullscreenMode else windowedMode) opts - - state <- initialize - - -- Register the event callback functions - displayCallback $= do render state; swapBuffers - reshapeCallback $= Just setupProjection - keyboardMouseCallback $= Just keyboardMouseHandler - idleCallback $= Just (do prepare state; postRedisplay Nothing) - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - -fullscreenMode :: Options -> IO () -fullscreenMode opts = do - let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) - gameModeCapabilities $= - (addCapability GameModeWidth (Just (windowWidth opts)) . - addCapability GameModeHeight (Just (windowHeight opts)) . - addCapability GameModeBitsPerPlane (bpp opts) . - addCapability GameModeRefreshRate (refreshRate opts)) [] - enterGameMode - maybeWin <- get currentWindow - if isJust maybeWin - then cursor $= None - else do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) - -windowedMode :: Options -> IO () -windowedMode opts = do - initialWindowSize $= - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - createWindow "BOGLGP - Chapter 2 - On Your Own 1" - return () - --------------------------------------------------------------------------------- --- Option handling --------------------------------------------------------------------------------- -data Options = Options { - useFullscreen :: Bool, - windowWidth :: Int, - windowHeight :: Int, - bpp :: Maybe Int, - refreshRate :: Maybe Int - } - -startOpt :: Options -startOpt = Options { - useFullscreen = False, - windowWidth = 800, - windowHeight = 600, - bpp = Nothing, - refreshRate = Nothing - } - -options :: [OptDescr (Options -> IO Options)] -options = [ - Option ['f'] ["fullscreen"] - (NoArg (\opt -> return opt { useFullscreen = True })) - "use fullscreen mode if possible", - Option ['w'] ["width"] - (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg - return opt { windowWidth = w }) - "WIDTH") - "use window width WIDTH", - Option ['h'] ["height"] - (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg - return opt { windowHeight = h }) - "HEIGHT") - "use window height HEIGHT", - Option ['b'] ["bpp"] - (ReqArg (\arg opt -> do b <- readInt "BPP" arg - return opt { bpp = Just b }) - "BPP") - "use BPP bits per plane (ignored in windowed mode)", - Option ['r'] ["refresh-rate"] - (ReqArg (\arg opt -> do r <- readInt "HZ" arg - return opt { refreshRate = Just r }) - "HZ") - "use refresh rate HZ (ignored in windowed mode)", - Option ['?'] ["help"] - (NoArg (\_ -> do usage >>= putStr - safeExitWith ExitSuccess)) - "show help" ] - -readInt :: String -> String -> IO Int -readInt name arg = - case reads arg of - ((x,[]) : _) -> return x - _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] - -usage :: IO String -usage = do - progName <- getProgName - return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options - -parseOptions :: [String] -> IO Options -parseOptions args = do - let (optsActions, nonOptions, errs) = getOpt Permute options args - unless (null nonOptions && null errs) (dieWith errs) - foldl (>>=) (return startOpt) optsActions - -dieWith :: [String] -> IO a -dieWith errs = do - u <- usage - mapM_ (hPutStr stderr) (errs ++ [u]) - safeExitWith (ExitFailure 1) - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit when --- ESCAPE is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = return () - -safeExitWith :: ExitCode -> IO a -safeExitWith code = do - gma <- get gameModeActive - when gma leaveGameMode - exitWith code - --------------------------------------------------------------------------------- --- The globale state, which is only the current angle in this simple demo. --- We don't need the window dimensions here, they are not used and would --- be easily available via GLUT anyway. --------------------------------------------------------------------------------- -data State = State { angle :: IORef GLfloat } - -makeState :: IO State -makeState = do - a <- newIORef 0 - return $ State { angle = a } - --------------------------------------------------------------------------------- --- Do one time setup, i.e. set the clear color and create the global state. --------------------------------------------------------------------------------- -initialize :: IO State -initialize = do - -- clear to white background - clearColor $= Color4 1 1 1 0 - - makeState - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -setupProjection :: ReshapeCallback -setupProjection (Size width height) = do - -- don't want a divide by zero - let h = max 1 height - -- reset the viewport to new dimensions - viewport $= (Position 0 0, Size width h) - -- set projection matrix as the current matrix - matrixMode $= Projection - -- reset projection matrix - loadIdentity - - -- calculate aspect ratio of window - perspective 52 (fromIntegral width / fromIntegral h) 1 1000 - - -- set modelview matrix - matrixMode $= Modelview 0 - -- reset modelview matrix - loadIdentity - --------------------------------------------------------------------------------- --- Perform any data-specific updates for a frame. Here we only increment the --- angle for the rotation of the triangle. --------------------------------------------------------------------------------- -prepare :: State -> IdleCallback -prepare state = do - angle state $~ (+ 0.1) - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -render :: State -> DisplayCallback -render state = do - -- clear screen and depth buffer - clear [ ColorBuffer, DepthBuffer ] - loadIdentity - - -- resolve overloading, not needed in "real" programs - let translate3f = translate :: Vector3 GLfloat -> IO () - color3f = color :: Color3 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - - -- move back 5 units and rotate about all 3 axes - translate3f (Vector3 0 0 (-5)) - a <- get (angle state) - rotate a (Vector3 1 0 0) - rotate a (Vector3 0 1 0) - rotate a (Vector3 0 0 1) - - -- red color - color3f (Color3 1 0 0) - - -- draw the triangle such that the rotation point is in the center - renderPrimitive Triangles $ do - vertex3f (Vertex3 1 (-1) 0) - vertex3f (Vertex3 (-1) (-1) 0) - vertex3f (Vertex3 0 1 0) rmfile ./GLUT/examples/BOGLGP/Chapter02/OnYourOwn1.hs hunk ./GLUT/examples/BOGLGP/Chapter02/OpenGLApplication.hs 1 -{- - OpenGLApplication.hs (adapted from OpenGLApplication which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2004-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( when, unless ) -import Data.IORef ( IORef, newIORef ) -import Data.Maybe ( isJust ) -import Graphics.UI.GLUT hiding ( initialize ) -import System.Console.GetOpt -import System.Environment ( getProgName ) -import System.Exit ( exitWith, ExitCode(..) ) -import System.IO ( hPutStr, stderr ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - (_, args) <- getArgsAndInitialize - opts <- parseOptions args - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - (if useFullscreen opts then fullscreenMode else windowedMode) opts - - state <- initialize - - -- Register the event callback functions - displayCallback $= do render state; swapBuffers - reshapeCallback $= Just setupProjection - keyboardMouseCallback $= Just keyboardMouseHandler - idleCallback $= Just (do prepare state; postRedisplay Nothing) - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - -fullscreenMode :: Options -> IO () -fullscreenMode opts = do - let addCapability c = maybe id (\x -> (Where' c IsEqualTo x :)) - gameModeCapabilities $= - (addCapability GameModeWidth (Just (windowWidth opts)) . - addCapability GameModeHeight (Just (windowHeight opts)) . - addCapability GameModeBitsPerPlane (bpp opts) . - addCapability GameModeRefreshRate (refreshRate opts)) [] - enterGameMode - maybeWin <- get currentWindow - if isJust maybeWin - then cursor $= None - else do - hPutStr stderr "Could not enter fullscreen mode, using windowed mode\n" - windowedMode (opts { useFullscreen = False } ) - -windowedMode :: Options -> IO () -windowedMode opts = do - initialWindowSize $= - Size (fromIntegral (windowWidth opts)) (fromIntegral (windowHeight opts)) - createWindow "BOGLGP - Chapter 2 - OpenGL Application" - return () - --------------------------------------------------------------------------------- --- Option handling --------------------------------------------------------------------------------- -data Options = Options { - useFullscreen :: Bool, - windowWidth :: Int, - windowHeight :: Int, - bpp :: Maybe Int, - refreshRate :: Maybe Int - } - -startOpt :: Options -startOpt = Options { - useFullscreen = False, - windowWidth = 800, - windowHeight = 600, - bpp = Nothing, - refreshRate = Nothing - } - -options :: [OptDescr (Options -> IO Options)] -options = [ - Option ['f'] ["fullscreen"] - (NoArg (\opt -> return opt { useFullscreen = True })) - "use fullscreen mode if possible", - Option ['w'] ["width"] - (ReqArg (\arg opt -> do w <- readInt "WIDTH" arg - return opt { windowWidth = w }) - "WIDTH") - "use window width WIDTH", - Option ['h'] ["height"] - (ReqArg (\arg opt -> do h <- readInt "HEIGHT" arg - return opt { windowHeight = h }) - "HEIGHT") - "use window height HEIGHT", - Option ['b'] ["bpp"] - (ReqArg (\arg opt -> do b <- readInt "BPP" arg - return opt { bpp = Just b }) - "BPP") - "use BPP bits per plane (ignored in windowed mode)", - Option ['r'] ["refresh-rate"] - (ReqArg (\arg opt -> do r <- readInt "HZ" arg - return opt { refreshRate = Just r }) - "HZ") - "use refresh rate HZ (ignored in windowed mode)", - Option ['?'] ["help"] - (NoArg (\_ -> do usage >>= putStr - safeExitWith ExitSuccess)) - "show help" ] - -readInt :: String -> String -> IO Int -readInt name arg = - case reads arg of - ((x,[]) : _) -> return x - _ -> dieWith ["Can't parse " ++ name ++ " argument '" ++ arg ++ "'\n"] - -usage :: IO String -usage = do - progName <- getProgName - return $ usageInfo ("Usage: " ++ progName ++ " [OPTION...]") options - -parseOptions :: [String] -> IO Options -parseOptions args = do - let (optsActions, nonOptions, errs) = getOpt Permute options args - unless (null nonOptions && null errs) (dieWith errs) - foldl (>>=) (return startOpt) optsActions - -dieWith :: [String] -> IO a -dieWith errs = do - u <- usage - mapM_ (hPutStr stderr) (errs ++ [u]) - safeExitWith (ExitFailure 1) - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit when --- ESCAPE is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (Char '\27') Down _ _ = safeExitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = return () - -safeExitWith :: ExitCode -> IO a -safeExitWith code = do - gma <- get gameModeActive - when gma leaveGameMode - exitWith code - --------------------------------------------------------------------------------- --- The globale state, which is only the current angle in this simple demo. --- We don't need the window dimensions here, they are not used and would --- be easily available via GLUT anyway. --------------------------------------------------------------------------------- -data State = State { angle :: IORef GLfloat } - -makeState :: IO State -makeState = do - a <- newIORef 0 - return $ State { angle = a } - --------------------------------------------------------------------------------- --- Do one time setup, i.e. set the clear color and create the global state. --------------------------------------------------------------------------------- -initialize :: IO State -initialize = do - -- clear to black background - clearColor $= Color4 0 0 0 0 - - makeState - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -setupProjection :: ReshapeCallback -setupProjection (Size width height) = do - -- don't want a divide by zero - let h = max 1 height - -- reset the viewport to new dimensions - viewport $= (Position 0 0, Size width h) - -- set projection matrix as the current matrix - matrixMode $= Projection - -- reset projection matrix - loadIdentity - - -- calculate aspect ratio of window - perspective 52 (fromIntegral width / fromIntegral h) 1 1000 - - -- set modelview matrix - matrixMode $= Modelview 0 - -- reset modelview matrix - loadIdentity - --------------------------------------------------------------------------------- --- Perform any data-specific updates for a frame. Here we only increment the --- angle for the rotation of the triangle. --------------------------------------------------------------------------------- -prepare :: State -> IdleCallback -prepare state = do - angle state $~ (+ 0.1) - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -render :: State -> DisplayCallback -render state = do - -- clear screen and depth buffer - clear [ ColorBuffer, DepthBuffer ] - loadIdentity - - -- resolve overloading, not needed in "real" programs - let translate3f = translate :: Vector3 GLfloat -> IO () - color3f = color :: Color3 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - - -- move back 5 units and rotate about all 3 axes - translate3f (Vector3 0 0 (-5)) - a <- get (angle state) - rotate a (Vector3 1 0 0) - rotate a (Vector3 0 1 0) - rotate a (Vector3 0 0 1) - - -- lime greenish color - color3f (Color3 0.7 1 0.3) - - -- draw the triangle such that the rotation point is in the center - renderPrimitive Triangles $ do - vertex3f (Vertex3 1 (-1) 0) - vertex3f (Vertex3 (-1) (-1) 0) - vertex3f (Vertex3 0 1 0) rmfile ./GLUT/examples/BOGLGP/Chapter02/OpenGLApplication.hs hunk ./GLUT/examples/BOGLGP/Chapter02/index.html 1 - - - - Index of /packages/GLUT/examples/BOGLGP/Chapter02 - - -

Index of /packages/GLUT/examples/BOGLGP/Chapter02

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] OnYourOwn1.hs 11-Jan-2006 10:34 8.1K -[TXT] OpenGLApplication.hs 11-Jan-2006 10:33 8.1K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/BOGLGP/Chapter02/index.html rmdir ./GLUT/examples/BOGLGP/Chapter02 hunk ./GLUT/examples/BOGLGP/Chapter01/OnYourOwn1.hs 1 -{- - OnYourOwn1.hs (adapted from Simple.cpp which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2004-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( unless ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT hiding ( initialize ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - - -- Create the window - initialWindowSize $= Size 1024 768 - initialWindowPosition $= Position 100 150 - createWindow "BOGLGP - Chapter 1 - On Your Own 1" - - initialize - - -- Register the event callback functions - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboardMouseHandler - -- No need for an idle callback here, this would just hog the CPU - -- without any visible effect - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - --------------------------------------------------------------------------------- --- One time setup, including creating menus, creating a light, setting the --- shading mode and clear color, and loading textures. --------------------------------------------------------------------------------- -initialize :: IO () -initialize = do - -- set up the only meny - attachMenu RightButton (Menu [MenuEntry "Exit" (exitWith ExitSuccess)]) - - depthFunc $= Just Less - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit on a --- left click or when q is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (MouseButton LeftButton)_ _ _ = exitWith ExitSuccess -keyboardMouseHandler (Char 'q') _ _ _ = exitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = postRedisplay Nothing - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -reshape :: ReshapeCallback -reshape size@(Size width height) = - unless (height == 0) $ do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 90 (fromIntegral width / fromIntegral height) 1 100 - - matrixMode $= Modelview 0 - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -display :: DisplayCallback -display = do - -- set up the camera - loadIdentity - lookAt (Vertex3 0 1 6) (Vertex3 0 0 0) (Vector3 0 1 0) - - -- clear the screen - clear [ ColorBuffer, DepthBuffer ] - - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - - -- draw a triangle - renderPrimitive Triangles $ do - color3f (Color3 1 0 0) - vertex3f (Vertex3 2 2.5 (-1)) - color3f (Color3 1 0 0) - vertex3f (Vertex3 (-3.5) (-2.5) (-1)) - color3f (Color3 1 0 0) - vertex3f (Vertex3 2 (-4) 0) - - -- draw a polygon - renderPrimitive Polygon $ do - color3f (Color3 0 0 1) - vertex3f (Vertex3 (-1) 2 0) - color3f (Color3 0 0 1) - vertex3f (Vertex3 (-3) (-0.5) 0) - color3f (Color3 0 0 1) - vertex3f (Vertex3 (-1.5) (-3) 0) - color3f (Color3 0 0 1) - vertex3f (Vertex3 1 (-2) 0) - color3f (Color3 0 0 1) - vertex3f (Vertex3 1 1 0) - - -- draw everything and swap the display buffer - swapBuffers rmfile ./GLUT/examples/BOGLGP/Chapter01/OnYourOwn1.hs hunk ./GLUT/examples/BOGLGP/Chapter01/Simple.hs 1 -{- - Simple.hs (adapted from Simple.cpp which is (c) 2004 Astle/Hawkins) - Copyright (c) Sven Panne 2004-2005 - This file is part of HOpenGL and distributed under a BSD-style license - See the file libraries/GLUT/LICENSE --} - -import Control.Monad ( unless ) -import System.Exit ( exitWith, ExitCode(ExitSuccess) ) -import Graphics.UI.GLUT hiding ( initialize ) - --------------------------------------------------------------------------------- --- Setup GLUT and OpenGL, drop into the event loop. --------------------------------------------------------------------------------- -main :: IO () -main = do - -- Setup the basic GLUT stuff - getArgsAndInitialize - initialDisplayMode $= [ DoubleBuffered, RGBMode, WithDepthBuffer ] - - -- Create the window - initialWindowSize $= Size 1024 768 - initialWindowPosition $= Position 100 150 - createWindow "BOGLGP - Chapter 1 - Simple" - - initialize - - -- Register the event callback functions - displayCallback $= display - reshapeCallback $= Just reshape - keyboardMouseCallback $= Just keyboardMouseHandler - -- No need for an idle callback here, this would just hog the CPU - -- without any visible effect - - -- At this point, control is relinquished to the GLUT event handler. - -- Control is returned as events occur, via the callback functions. - mainLoop - --------------------------------------------------------------------------------- --- One time setup, including creating menus, creating a light, setting the --- shading mode and clear color, and loading textures. --------------------------------------------------------------------------------- -initialize :: IO () -initialize = do - -- set up the only meny - attachMenu RightButton (Menu [MenuEntry "Exit" (exitWith ExitSuccess)]) - - depthFunc $= Just Less - --------------------------------------------------------------------------------- --- Handle mouse and keyboard events. For this simple demo, just exit on a --- left click or when q is pressed. --------------------------------------------------------------------------------- -keyboardMouseHandler :: KeyboardMouseCallback -keyboardMouseHandler (MouseButton LeftButton)_ _ _ = exitWith ExitSuccess -keyboardMouseHandler (Char 'q') _ _ _ = exitWith ExitSuccess -keyboardMouseHandler _ _ _ _ = postRedisplay Nothing - --------------------------------------------------------------------------------- --- Reset the viewport for window changes. --------------------------------------------------------------------------------- -reshape :: ReshapeCallback -reshape size@(Size width height) = - unless (height == 0) $ do - viewport $= (Position 0 0, size) - matrixMode $= Projection - loadIdentity - perspective 90 (fromIntegral width / fromIntegral height) 1 100 - - matrixMode $= Modelview 0 - --------------------------------------------------------------------------------- --- Clear and redraw the scene. --------------------------------------------------------------------------------- -display :: DisplayCallback -display = do - -- set up the camera - loadIdentity - lookAt (Vertex3 0 1 6) (Vertex3 0 0 0) (Vector3 0 1 0) - - -- clear the screen - clear [ ColorBuffer, DepthBuffer ] - - -- resolve overloading, not needed in "real" programs - let color3f = color :: Color3 GLfloat -> IO () - vertex3f = vertex :: Vertex3 GLfloat -> IO () - - -- draw a triangle - renderPrimitive Triangles $ do - color3f (Color3 1 0 0) - vertex3f (Vertex3 2 2.5 (-1)) - color3f (Color3 0 1 0) - vertex3f (Vertex3 (-3.5) (-2.5) (-1)) - color3f (Color3 0 0 1) - vertex3f (Vertex3 2 (-4) 0) - - -- draw a polygon - renderPrimitive Polygon $ do - color3f (Color3 1 1 1) - vertex3f (Vertex3 (-1) 2 0) - color3f (Color3 1 1 0) - vertex3f (Vertex3 (-3) (-0.5) 0) - color3f (Color3 0 1 1) - vertex3f (Vertex3 (-1.5) (-3) 0) - color3f (Color3 0 0 0) - vertex3f (Vertex3 1 (-2) 0) - color3f (Color3 1 0 1) - vertex3f (Vertex3 1 1 0) - - -- draw everything and swap the display buffer - swapBuffers rmfile ./GLUT/examples/BOGLGP/Chapter01/Simple.hs hunk ./GLUT/examples/BOGLGP/Chapter01/index.html 1 - - - - Index of /packages/GLUT/examples/BOGLGP/Chapter01 - - -

Index of /packages/GLUT/examples/BOGLGP/Chapter01

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] OnYourOwn1.hs 11-Jan-2006 10:34 4.0K -[TXT] Simple.hs 11-Jan-2006 10:34 4.0K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/BOGLGP/Chapter01/index.html rmdir ./GLUT/examples/BOGLGP/Chapter01 hunk ./GLUT/examples/BOGLGP/index.html 1 - - - - Index of /packages/GLUT/examples/BOGLGP - - -

Index of /packages/GLUT/examples/BOGLGP

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[DIR] Chapter01/ 02-May-2009 08:54 - -[DIR] Chapter02/ 02-May-2009 08:54 - -[DIR] Chapter03/ 02-May-2009 08:54 - -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/BOGLGP/index.html rmdir ./GLUT/examples/BOGLGP hunk ./GLUT/examples/index.html 1 - - - - Index of /packages/GLUT/examples - - -

Index of /packages/GLUT/examples

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[DIR] BOGLGP/ 02-May-2009 08:54 - -[DIR] Misc/ 02-May-2009 08:54 - -[DIR] OrangeBook/ 02-May-2009 08:54 - -[DIR] RedBook/ 02-May-2009 08:54 - -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/examples/index.html rmdir ./GLUT/examples hunk ./GLUT/doc/scripts/index.html 1 - - - - Index of /packages/GLUT/doc/scripts - - -

Index of /packages/GLUT/doc/scripts

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[   ] deleteTags.xquery 23-May-2004 13:49 336 -[   ] latexVerbatim.xquery 23-May-2004 13:49 1.3K -[   ] transformscript.xquery 11-Jan-2006 10:28 17K -[   ] transformscript.xsl 23-May-2004 13:49 7.2K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/doc/scripts/index.html rmdir ./GLUT/doc/scripts hunk ./GLUT/doc/images/index.html 1 - - - - Index of /packages/GLUT/doc/images - - -

Index of /packages/GLUT/doc/images

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[IMG] APolygon.gif 23-May-2004 13:49 2.1K -[IMG] ApproxCircle.gif 23-May-2004 13:49 2.6K -[IMG] Body.gif 23-May-2004 13:49 6.5K -[IMG] Coffee.gif 23-May-2004 13:49 2.2K -[IMG] Compose.gif 23-May-2004 13:49 3.1K -[IMG] FillCircle.gif 23-May-2004 13:49 2.5K -[IMG] Foot.gif 23-May-2004 13:49 8.2K -[IMG] Hidden.gif 23-May-2004 13:49 2.6K -[IMG] LightCube.gif 23-May-2004 13:49 3.6K -[IMG] LineAttributes.gif 23-May-2004 13:49 2.7K -[IMG] NotHidden.gif 23-May-2004 13:49 2.7K -[IMG] NotSmaller.gif 23-May-2004 13:49 2.0K -[IMG] OrbitAroundCube.gif 23-May-2004 13:49 3.0K -[IMG] Ortho.gif 23-May-2004 13:49 4.5K -[IMG] Orto1.gif 23-May-2004 13:49 2.0K -[IMG] Orto2.gif 23-May-2004 13:49 2.6K -[IMG] PointSize.gif 23-May-2004 13:49 2.1K -[IMG] PolyColor.gif 23-May-2004 13:49 7.5K -[IMG] Pong.gif 23-May-2004 13:49 2.0K -[IMG] RenderCube.gif 23-May-2004 13:49 2.4K -[IMG] RenderLineLoop.gif 23-May-2004 13:49 2.4K -[IMG] RenderLineStrip.gif 23-May-2004 13:49 2.4K -[IMG] RenderLines.gif 23-May-2004 13:49 2.1K -[IMG] RenderQuadStrip.gif 23-May-2004 13:49 2.7K -[IMG] RenderQuads.gif 23-May-2004 13:49 2.4K -[IMG] RenderRubikFace.gif 23-May-2004 13:49 4.4K -[IMG] RenderStar.gif 23-May-2004 13:49 3.1K -[IMG] RenderTriangleFan.gif 23-May-2004 13:49 2.4K -[IMG] RenderTriangleStrip.gif 23-May-2004 13:49 2.7K -[IMG] RenderTriangles.gif 23-May-2004 13:49 2.4K -[IMG] Reshape1.gif 23-May-2004 13:49 5.5K -[IMG] Ring.gif 23-May-2004 13:49 3.0K -[IMG] RubiksCube.gif 23-May-2004 13:49 4.5K -[IMG] Smaller.gif 23-May-2004 13:49 2.1K -[IMG] SomeRings.gif 23-May-2004 13:49 3.4K -[IMG] SomeSquares.gif 23-May-2004 13:49 2.7K -[IMG] Tea.gif 23-May-2004 13:49 2.4K -[IMG] TestCircle.gif 23-May-2004 13:49 2.6K -[IMG] TestRing.gif 23-May-2004 13:49 3.0K -[IMG] TestShear.gif 23-May-2004 13:49 2.5K -[IMG] Torso.gif 23-May-2004 13:49 6.0K -[IMG] Tux.gif 23-May-2004 13:49 12K -[IMG] Viewport.gif 23-May-2004 13:49 2.8K -[   ] frustum.fig 23-May-2004 13:49 1.7K -[   ] perspective.fig 23-May-2004 13:49 1.7K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/doc/images/index.html rmdir ./GLUT/doc/images hunk ./GLUT/doc/bib.bib 1 -@MISC{glu - ,author = {Norman Chin AND Chris Frazier AND Paul Ho AND Zicheng Lui AND Kevin P.~Smith} - ,EDITOR = {Jon Leech} - ,title = {{The OpenGL Graphics System Utility Library}} - ,year = 1998 - ,note = "\verb+http://www.opengl.org/documentation/specs/glu/glu1.3.ps+" -} - -@MISC{glut - ,author = {Mark J.~Kilgard} - ,title = {{The OpenGL Utility Toolkit (GLUT})} - ,year = 1996 - ,note = "\verb+http://www.opengl.org/resources/libraries/glut/glut-3.spec.ps+" -} - -@BOOK{redbook, - AUTHOR = {Mason Woo AND OpenGL Architecture Review Board AND Jackie Neider AND Tom Davis AND Dave Shreiner}, - TITLE = {{OpenGL Programming Guide 3rd Edition}}, - PUBLISHER = {Addison-Wesley}, - address = "Reading, MA", - YEAR = 1997} - -@INPROCEEDINGS{spjw:93, - author = {Peyton Jones, Simon L. AND Wadler, Philip}, - title = {Imperative Functional Programming}, - booktitle = {Proceedings 20th Symposium on Principles of Programming Languages}, - year = {1993}, - pages = {71--84}, - address = {Charleston, South Carolina}, - organization = {ACM}, -} - -@INPROCEEDINGS{wadler:90, - author = {Wadler, P.}, - title = {Comprehending Monads}, - booktitle = {Proceedings of Symposium on Lisp and Functional Programming}, - year = {1990}, - pages = {61--78}, - address = {Nice, France}, - month = jun, - organization = {ACM}, -} - -@book {revisedHaskellReport, - EDITOR = {Peyton Jones, Simon L.}, - TITLE = {Haskell 98 Language and Libraries: The Revised Report}, - YEAR = {2003}, - PUBLISHER = {Cambridge University Press}, - ISBN = {0-521-82614-4}, - URL = {http://haskell.org/definition} -} rmfile ./GLUT/doc/bib.bib hunk ./GLUT/doc/extractExamples 1 -#! /bin/sh - -QUIP=quip -SKRIPTE=scripts -JAVAC="javac -source 1.5 -encoding iso-8859-1 -Xlint:unchecked" -# TODO: This should be ghc-inplace... -GHC="ghc -O -Wall -v0" - -rm -rf src obj bin -mkdir src obj bin - -${QUIP} -input tutorial.xml -o header.xml -include ${SKRIPTE}/deleteTags.xquery -query ' -let $withoutDeleted := deleteTags(input()) -return $withoutDeleted//code[@lang="h"]' - -X=1 -Y=`${QUIP} -unwrapped_result -input header.xml -query 'count(distinct-values(input()//code/@class))';` - -echo ====================================================================== -echo "found $Y headers" - -while test $X -le $Y; do - ${QUIP} -unwrapped_result -input header.xml -o name.txt -query 'let $klassen := distinct-values(input()//code[@class]/@class) return (string($klassen['$X']))' - - NAME=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := distinct-values(input()//code[@class]/@class) return (string($klassen['$X']))';` - - OPTION=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := distinct-values(input()//code[@class]) return (string($klassen['$X']/@compileoptions))';` - - LANG=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := input()//code[string(@class)="'$NAME'"] return if (count($klassen/@lang)=0) then "java" else string(($klassen/@lang)[1])';` - - PACK=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := input()//code[string(@class)="'$NAME'"] return if (count($klassen/@package)=0) then "." else string(($klassen/@package)[1])';` - - MAIN=`${QUIP} -unwrapped_result -input header.xml -query 'let $klassen := input()//code[string(@class)="'$NAME'"] return if (count($klassen/@main)=0) then "no" else string(($klassen/@main)[1])';` - - # echo "*** header no. $X, name $NAME, option $OPTION, language $LANG, package $PACK, main $MAIN" - - mkdir src/$PACK - mkdir obj/$PACK - - ${QUIP} -value_output -unwrapped_result -input header.xml -o src/$PACK/$NAME.$LANG -query 'define function further($x) {if (node-kind($x) = "text") then $x else if (name($x)=QName("w")) then " " else if (name($x)=QName("nl")) then " -" else for $y in $x/node() return further($y)} string(for $code in input()//code[@class="'$NAME'"] return ((further($code))," - -"))'; - - X=$((X+1)) -done - -############################################## -${QUIP} -unwrapped_result -input tutorial.xml -include ${SKRIPTE}/deleteTags.xquery -o code.xml -query ' -{ -let $withoutDeleted := deleteTags(input()) -return $withoutDeleted//code[not(@lang="h")]} -' - -X=1 -Y=`${QUIP} -unwrapped_result -input code.xml -query 'count(distinct-values( -let $in := input() -for $at in $in/*/codes/code/@class return $at))';` - -echo ====================================================================== -echo "found $Y non-headers" - -while test $X -le $Y; do - ${QUIP} -unwrapped_result -input code.xml -o klasse.xml -query ' - let $codes := input()/*/codes/code[@class] - let $klassenname := string(distinct-values($codes/@class)['$X']) - let $klasse := ($codes[@class=$klassenname])[1] - return - {string($klasse/@class)} - - {string($klasse/@lang)} - {string($klasse/@package)} -
{string($klasse/@main)}
-
' - - NAME=`${QUIP} -unwrapped_result -input klasse.xml -query 'string(input()/*/*/name)';` - - OPTION=`${QUIP} -unwrapped_result -input klasse.xml -query 'string(input()/*/*/option)';` - - LANG=`${QUIP} -unwrapped_result -input klasse.xml -query ' - let $l := string(input()/*/*/lang) - return if ($l="") then "java" else $l';` - - PACK=`${QUIP} -unwrapped_result -input klasse.xml -query ' - let $l := string(input()/*/*/pack) - return if ($l="") then "." else $l';` - - MAIN=`${QUIP} -unwrapped_result -input klasse.xml -query ' - let $l := string(input()/*/*/main) - return if ($l="") then "no" else $l';` - - # echo "*** file no. $X, name $NAME, option $OPTION, language $LANG, package $PACK, main $MAIN" - - if test x$PACK = x.; then - SEPPACK= - else - SEPPACK=/$PACK - fi - mkdir -p src$SEPPACK - - ${QUIP} -value_output -unwrapped_result -input code.xml -o src$SEPPACK/$NAME.$LANG -query ' -define function further($x) { - if (node-kind($x) = "text") then $x - else if (name($x)=QName("w")) then " " - else if (name($x)=QName("nl")) then " -" else - for $y in $x/node() - return further($y)} - -string(( -(if ("'$LANG'"="java") then "//generated class! do not change -" else "") -,for $code in input()//code[@class="'$NAME'"] return ((further($code))," - -")))' - - case $LANG in - hs) - cd src - ${GHC} $OPTION -o $PACK/$NAME.o -c $PACK/$NAME.$LANG - case $MAIN in - main) ${GHC} $OPTION --make -o ../bin/$PACK/$NAME $PACK/$NAME.$LANG - strip ../bin/$PACK/$NAME ;; - no) # echo "no main" - ;; - *) # echo $MAIN; $MAIN - ;; - esac - cd .. - esac; - case $LANG in - # java) cd src;$JAVAC -classpath ../classes:$CLASSPATH -d ../classes $OPTION -source 1.5 $PACK/$NAME.$LANG; cd ..; - esac; - case $LANG in - jj) cd src;javacc -OUTPUT_DIRECTORY:$PACK $PACK/$NAME.$LANG; cd ..; - esac; - case $LANG in - cpp) cd src;echo g++ $OPTION -o $NAME.o -c $PACK/$NAME.$LANG;g++ $OPTION -o $NAME.o -c $PACK/$NAME.$LANG; - case $MAIN in - main) echo $NAME; g++ $OPTION -LDIR../obj -o ../bin/$NAME $PACK/$NAME.$LANG; strip ../bin/$NAME;mv $NAME.o ../obj/$PACK/$NAME.o;; - no) echo "no main";; - *) echo $MAIN > ._ttt; chmod u+x ._ttt; ./._ttt;rm ._ttt;mv $NAME ../bin/;; - esac; - cd .. - esac; - case $LANG in - c) cd src;echo "-c" ;echo $NAME; gcc $OPTION -o $NAME.o -c $PACK/$NAME.$LANG; - case $MAIN in - main) echo $NAME; gcc $OPTION -LDIR../obj -o ../bin/$NAME $PACK/$NAME.$LANG; strip ../bin/$NAME;mv $NAME.o ../obj/$PACK/$NAME.o; - esac; - cd .. - esac; - case $LANG in - h) echo "../obj/$PACK/$NAME.$LANG" - esac; - - X=$((X+1)); -done - -echo ====================================================================== - -cd src - -KLASSENPFAD=`${QUIP} -unwrapped_result -query ' - string({("../classes/", - for $p in document("../tutorial.xml")//use - return (":../../../",string($p),"/examples/classes/") - , for $p in document("../tutorial.xml")//jar - return (":",string($p)) -)})';` - -FIRST=`${QUIP} -unwrapped_result -query ' -let $x :=document("../tutorial.xml")/*//@javacompilefirst -return if ($x) then string($x) else "" -';` - -echo "first $FIRST, classpath $KLASSENPFAD" -if test x"$FIRST" != x; then - echo "compiling..." - $JAVAC -classpath $KLASSENPFAD -d ../classes $OPTION $FIRST -fi - -PACKAGES=`${QUIP} -unwrapped_result -query ' - string({ - for $p in distinct-values(document("../code.xml")//code[@lang="adt"]/@package) - return (" ",string($p),"/*.adt") - })';`; - -echo "adt packages $PACKAGES" -if test x"$PACKAGES" != x; then - echo "compiling..." - java -classpath ~/fh/adt/examples/classes/:/home/sep/fh/java1.5/examples/classes/ name.panitz.crempel.util.adt.ADTMain $PACKAGES -fi - -PACKAGES=`${QUIP} -unwrapped_result -query ' - string({ - for $p in distinct-values(document("../code.xml")//code[@lang="dtd"]/@package) - return (" ",string($p),"/*.dtd") - })';`; - -echo "dtd packages $PACKAGES" -if test x"$PACKAGES" != x; then - echo "compiling..." - java -classpath ~/fh/adt/examples/classes/:/home/sep/fh/java1.5/examples/classes/:/home/sep/fh/xmlparslib/examples/classes/ name.panitz.crempel.util.xml.dtd.parser.MainDTDParse $PACKAGES -fi - -PACKAGES=`${QUIP} -unwrapped_result -query ' - string({ - (for $p in distinct-values(document("../code.xml")//code/@package) - return (" ",string($p),"/*.java") - ) - })';`; - -echo "java packages $PACKAGES, classpath $KLASSENPFAD" -if test x"$PACKAGES" != x; then - echo "compiling..." - $JAVAC -classpath $KLASSENPFAD -d ../classes $OPTION $PACKAGES -fi - -cd .. - -echo ====================================================================== - -mv src/*.o src/*.hi obj -tar czvf tutorial_examples.tar.gz src - -echo ====================================================================== - -${QUIP} -unwrapped_result -o examples.html -query ' -Examples from the Tutorial -

Examples from the Tutorial

-{(let $used := document("tutorial.xml")//use - return if ($used) -then -(

Library classes used

-,) -else ()), -

Defined Modules

-,
    { - let $header := ( - for $k in distinct-values(document("header.xml")//code[@class]/@class) - return (string((string($k),".h")))) - let $cpp := ( - for $k in distinct-values( - for $code in document("code.xml")//code[@class] - let $lang := if ($code/@lang) then string(($code/@lang)) else "java" - return string((string($code/@package),(string($code/@class),".",$lang)))) - return $k) - for $n in $header | $cpp - return
  • {$n}
  • - sortBy (.//@href)}
-,all examples as a gzipped tar file}' rmfile ./GLUT/doc/extractExamples hunk ./GLUT/doc/index.html 1 - - - - Index of /packages/GLUT/doc - - -

Index of /packages/GLUT/doc

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] bib.bib 11-Jan-2006 10:28 1.6K -[   ] extractExamples 11-Jan-2006 10:28 9.1K -[DIR] images/ 11-Jan-2006 10:28 - -[DIR] scripts/ 11-Jan-2006 10:28 - -[   ] tutorial.xml 11-Jan-2006 10:28 132K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/doc/index.html hunk ./GLUT/doc/tutorial.xml 1 - - - - - -HOpenGL -- 3D Graphics with Haskell

-A small Tutorial - -

(Draft) - -Sven Eric Panitz -TFH Berlin - - -Publish early and publish often. That is the reason why you can read this. I -started playing around with HOpenGL, the Haskell port of OpenGL a -common library for doing 3D graphics. I more or less took minutes of my efforts -and make them public in this tutorial. I did not have any prior experience in -graphics programming when I started to work with HOpenGL.

- -The source of this paper is an XML-file. The sources are processed by an XQuery -processor, XSLT scripts and in order to produce the different -formats of the tutorial.

- -I'd like to thank Sven PanneSimilar name different person., -the author of HOpenGL, who has been so kind to comment on first drafts of this -tutorial. - - - - - - -In this chapter some basic background information can be found. You can read the -sections of this chapter in an arbitrary order, whatever your personal -preference is. - -

-Before you read a lot of technical details, you will probably like to see -something on your screen. Therefore you find some very simple examples in the -beginning. This will give you a first impression of how an OpenGL program might -look like in Haskell. - - -OpenGL's main purpose is to render some graphics on a device. This device is -generally a window on your computer screen. Before you can draw something on a -screen, you will need to open a window. So let's have a look at the simplest -OpenGL program which just opens an empty window: - - IO () -createAWindow windowName = do - createWindow windowName - displayCallback $= clear [ColorBuffer]]]> - -The first line imports the necessary modules, in our case simply the one -containing the GLUT API. GLUT is a graphical user interface which is usually -shipped with most OpenGL distributions. All OpenGL-related modules are -re-exported from this module, keeping things simple. - -The main function does three things: - -Initialize the OpenGL system -Define a window -Start the main procedure for displaying everything and reacting on -events - - -For the definition of a window with a given name we do two things: - -Create some window with the given name -Define what is to be done when the window contents are to be displayed. In -the simple example above, we simply clear the screen by filling it with the -default clear color (black). - - -These 12 lines can be compiled with ghc. Do not forget to specify the -packages which contain the OpenGL and GLUT libraries. It suffices to include the -package GLUT, which automatically forces the inclusion of the -package OpenGL: - - ghc -package GLUT -o HelloWindow HelloWindow.hs -sep@swe10:~/hopengl/examples> ./HelloWindow]]> - -Alternatively, ghc's make-like mode can be used for -compilation, which will especially be handy when multiple modules are involved -in a single program. In this mode, no OpenGL or GLUT packages need to specified, -because these are so-called auto packages: - - ghc --make -o HelloWindow HelloWindow.hs]]> - -If you don't want to compile the example, just use ghc in its -interpreter mode: - - ghci HelloWindow]]> - -Note that this only loads the example into the interpreter, so you'll have to -call main explicitly on the interpreter prompt. As a shortcut, one can -give the interpreter an expression to evaluate: - - ghc -e main HelloWindow]]> - -When you start the program, a window will be opened on your desktop. As you may -have noticed, we only specified the title of the window, not any other attribute -like size or position. GLUT is defined in a way that initial default values are -used for unspecified attributes. - - - -The simple program above just opened a window, but the main purpose of OpenGL is -to render graphics. Before starting to systematically explore the OpenGL -library, let's have a look at two examples that draw something into a window -frame. - - -First we will draw some tiny points onto the screen, using the same code for -opening a window: - - - -The only thing that has changed is that we make use of one of the values -returned by getArgsAndInitialize: the name of the program.

- -For the window definition we use the code from HelloWindow.hs. But -instead of simply clearing the screen when the window contents are to be -displayed, we use a more elaborate display function: - - IO () -createAWindow windowName = do - createWindow windowName - displayCallback $= displayPoints]]> - -We want to draw some points on the screen, so let's define some points in a -list. Points in three-dimensional space are triples of coordinates. We can use -floating point numbers for coordinates in OpenGL. For the points itself, we use -the Vertex3 data type defined in the OpenGL package instead of plain -Haskell triples, which improves readability and type safety: - - - -Eventually we need the display function, which displays these points: - - - -As you see when the window ist displayed, everything is cleared from the -window. Then we use the HOpenGL function renderPrimitive. The first -argument Points specifies what it is that we want to render; points in -this case. The second argument is an action sending our points to OpenGL for -rendering.

- -As before, you will notice that again for quite a number of attributes we did -not supply explicit values, e.g. the color of the points to be drawn or the -coordinates of the graphics window. Looking at the result, it is obviously a two -dimensional view where the lower left corner seems to have coordinates (-1,-1) -and the upper right corner the coordinates (1,1). These values are the default -values chosen by the OpenGL library. - - - -Did you find the points in the last section rather boring? By changing a single -word, we can span an area with these points. Instead of telling OpenGL to render -our data as points, we can tell it to render them as a polygon.

- - -So here the program from above with one word changed, Points -becomes Polygon: - - IO () -createAWindow windowName = do - createWindow windowName - displayCallback $= displayPoints - -myPoints :: [Vertex3 GLfloat] -myPoints = [ - Vertex3 (-0.25) 0.25 0.0, - Vertex3 0.75 0.35 0.0, - Vertex3 0.75 (-0.15) 0.0, - Vertex3 (-0.75) (-0.25) 0.0] - -displayPoints :: DisplayCallback -displayPoints = do - clear [ColorBuffer] - renderPrimitive ]]>Polygon - -The resulting window can be found in figure. - - - - - -

- -
- - -Haskell is a lazily evaluated functional -programming language, which means, amongst other things, that there are no -mutable variables. A Haskell program consists of expressions, which are only -evalutated to some value when it is absolutely necessary for program execution. -This makes predicting the order in which the subexpressions get evaluated -extremely hard.

- -Expressions evaluate to some value without changing any state. This is a nice -property of Haskell, because it makes reasoning about programs easier and -programs are very robust. - - - - -OpenGL on the other hand is a graphics library which is defined in terms of a -state machine, where a mutable state models the current state of the -world. Functions are executed one after another on this state in order to modify -certain variables, e.g. one state variable keeps the current color which most -rendering commands use implicitly. There is a command which allows to set the -current color variable to a given value.

- -A comprehensive introduction to OpenGL can be found in the so called Red -Book. OpenGL comes along with a utility -library called GLU and a simple system independent GUI -library called GLUT . - - - - -Having said this, Haskell and OpenGL seem to cooperate badly and there seems to -be a great mismatch between the fundamental concepts of the two. However, the -designers of Haskell discovered a very powerful structure, which is a perfect -concept for modeling state changing functions in a purely functional -language: Monads. Most Haskell -programmers do not worry about the theory of monads, but simply use them -whenever they need I/O, state changing functions or parsers. With monads -functional programs can almost look like ordinary imperative progams , without losing all the nice properties of a functional -language.

- -Monads are so essential to functional programming, that they have a special -syntactic construct in Haskell, the do notation. Consider the following -simple Haskell program, which uses monads: - - - -The monadic statements start with the keyword do. These statements can -have side effects and a result. This result can be retrieved from the statement -by the <- notation. Variables can be bound by let-expressions. -Note that these are not variables as known from imperative languages. Line 5 in -the example above does not assign a new value to the variable x but -defines a new one with the same name, which shadows the first one.

- -Regarding another aspect GLUT and Haskell match perfectly: In GLUT, functions -are assigned to different data objects, e.g. a display function is associated -with a window. Since functions are first class citizens in Haskell, they can -easily be passed around in a type safe way. In this respect, Haskell differs -from e.g. the object orientated language Java, which misses an easy way to pass -functions around. - - -

- -
-If you want to start programming OpenGL in Haskell, you need to be one -of the brave, who compile sources from the functional programming CVS -repository in Glasgow. There is not yet a precompiled version of the -current HOpenGL library. Go to -the website of the Glasgow -Haskell Compiler (GHC), follow closely the instructions on the -page CVS cheat sheet. When doing the ./configure step, then use the option --enable-hopengl. i.e. start the -command ./configure --enable-hopengl. This will ensure -that the Haskell OpenGL library will be build and the packages OpenGL and GLUT are added to your GHC installation.

- -To compile Haskell OpenGL programs you simply have to add the -package information to he command line invocation of GHC, -i.e. use:
-ghc -package GLUT MyProgram.hs

- -Everything else, linking etc is done by GHC. You do not have to worry -about library paths or anything else. -

- - - -
-The Haskell port of OpenGL has been done by Sven Panne. Currently a -stable version exists and can be downloaded as precompiled -binary. This tutorial deals with the completely revised version of -HopenGL, which has a more Haskell like API and needs less technical -overhead. This new version is not yet available as ready to use -package. You need to compile it yourself.

- -This tutorial has been written with no prior knowledge of OpenGL and -no documentation of HOpenGL at hand.

- -For the old version 1.04 of HOpenGL an online tutorial written -by Andre W B Furtado exists -at . -

- - - -
-From what we have learnt in the introduction, we know that we are -dealing with a state machine and will write a sequence of monadic -functions which effect this machine. Before we start drawing fancy -pictures let us explore the way values are set and retrieved in -HOpenGL. - - -The most basic operation is to -assign values to variables in the state machine. In HOpenGL this is -done by means of the operator $=A nicer choice for -this operator would have been :=, but this is not allowed -for a function operator in Haskell, but denotes an infix -constructor. You do not need to understand, how this -operator is implemented. You simply can imagine that it is an -assignment operator. The left operand is a variable which gets -assigned the right operand. We can revisit the first program, which -simply opened a window. - - -When we have created a window, we assign a -size to it: - IO () -myWindow name = do - createWindow name - ]]>windowSize $= Size 800 500 - - - -One example of the assignment operator we have already seen. In the -last line we assign a function to the variable displayCallback. This function will be executed, whenever the -window is displayed. - -As you see, more you do not need to know about $=. But if you -want to learn more about it read the next section. - - -The operator $= is defined in the module
-Graphics.Rendering.OpenGL.GL.StateVar as a member function of -a type class: - a -> IO ()]]> - -The variables of HOpenGL, which can be set are of -type SettableStateVar e.g.:
-windowTitle :: SettableStateVar String. Further variables -that can be set for windows are: windowStatus, windowTitle, iconTitle, pointerPosition, -
-
- - -You might want to retrieve certain values from the state. -This can be done with the function get, which is in -a way the corresponding function to the operator $=. - -You can retrieve the size of the screen: -x <- get screenSize -When you compile and run this example the size of your screen it - printed: - - ghc -package GLUT -o Get Get.hs -sep@swe10:~/hopengl/examples> ./Get -Size 1024 768 -sep@swe10:~/hopengl/examples>]]> - - - -There is a corresponding type class, which denotes that values can be -retrieved from a variable: - IO a]]> -Variables which implement this class are of -type GettableStateVar a. - - - - -For most variables you would want to do both: setting them and -retrieving their values. These variables implement both type classes -and are usually of type: StateVar.

- -But things do not always work so simple as this sounds. - - - -The following program sets the size of a window. Afterwards the -variable windowSize is retrieved: - IO () -myWindow name = do - createWindow name - windowSize $= Size 800 500 - x<-get windowSize - print x - displayCallback $= clear [ColorBuffer]]]> -Running this program gives the somehow surprising result: - ./SetGet -Size 300 300 -]]> -The window we created, has the expected size of (800,500) but the -variable windowSize still has the default value (300,300).

- -The reason for this is, that setting the window size state variable -has not a direct effect. It just states a wish for a window size. Only -in the execution of the function mainLoop actual windows will -be created by the window system. Only then the window size will be -taken into account. Up to that moment the window size variable still -has the default value. If you print the window size state within some -function which is executed in the main loop, then you will get the -actual size. By the way: you can try initialWindowSize without -getting such complecated surprising results. - - - - windowSize spezifiziert nämlich nur einen *Wunsch* an den - Window-Manager. Da das Fenster direkt nach createWindow aber noch - nicht wirklich da ist (passiert erst in mainLoop) und somit auch gar - nicht klar ist, ob der Window-Manager mit der Größe einverstanden - ist, wird zunächst erstmal der Default zurückgegeben. Wird das - get/print im Display-Callback gemacht, wo es das Fenster ja schon - wirklich gibt, wird auch der erwartete Wert zurückgegeben. Bei - initialWindowSize gibt es übrigens solche Überraschungen nicht. - - - - - - -The state machine contains variables and stacks of objects, which are -effectedly mutated by calls to monadic functions. However not only the -get and set statements modify the state but also statements -like createWindow. This makes it in the beginning a bit hard -to understand, when the state is changed in which way.

- -The createWindow statement not only constructs a window -object, but keeps this new window as the current window in the -state. After the createWindow statement all window effecting -statements like setting the window size, are applied to this new -window object. - - - -Hier wäre eine kurze Erklärung gut, welche Arten von Zustand es gibt: - - * OpenGL state (global pro Rendering-Context, z.B. Window) - * global GLUT state - * window-local GLUT state - - - - - -

- -
- - -There is a window specific variable which stores the function -that is to be executed -whenever a window is to be displayed, the variable displayCallback. Since Haskell is a higher order language, it is -very natural to pass a function to the assignment operator. -We can define a function with some arbitrary name. The function can be -assigned to the variable displayCallback. In this function we -can define a sequence of monadic statements. - - -A first step we would like to do whenever the window needs to be drawn -is to clear from it whatever it containsOtherwise you might -see arbitrary parts of other applications in your window -frame.. HOpenGL provides the -function clear, which does exactly this job. It has one -argument. It is a list of objects to be cleared. Generally you will -clear the so called color buffer, which contains the color displayed -for every pixel on the screen. - - -The following simple program opens a window and clears its content -pane whenever it is displayed: - IO () -createAWindow windowName = do - createWindow windowName - displayCallback $= display - -display :: DisplayCallback -display = ]]>clear [ColorBuffer] - - - - -The window in the last section has a black background. This is because -we did not specify the color of the background and HOpenGL's default value -for the background color is black. There is simply a variable for the -background color.

- -For colors several data types are defined. An easy to use one is: -data Color4 a = Color4 a a a a - deriving ( Eq, Ord, Show ) -The four parameters of this constructor specify the red, green and -blue values of the color and additionally a fourth argument, which -denotes the opaqueness of the color. The values are usually -specified by floating numbers of type GLfloat. Values for -number attributes are between 0 and 1.

- -You may wonder, why there is a special type GLfloat for -numbers in HOpenGL. The reason is that OpenGL is defined in a way that -it is as independent from concrete types in any implementation as -possible. -However you do not have to worry too much -about this type. You can use ordinary float literals for numbers of -type GLfloat. Haskells overloading mechanism ensures that -these literals can create GLfloat numbers. - - - Der - Grund für die ganzen GLblah-Typen ist, daß die OpenGL-Spec bewußt - ungenau bzgl. der konkreten Typen ist, um Implementationen nicht zu - sehr einzuschränken. GLfloat könnte daher z.B. Haskells Float sein, - aber auch Double (obwohl ich letzteres noch nie gesehen habe). - - - -This program opens a window with a red background. - IO () -createAWindow windowName = do - createWindow windowName - displayCallback $= display - -display :: DisplayCallback -display = do - ]]>clearColor $= Color4 1 0 0 1 - - - - -Whenever in a display function a sequence of monadic statements is -defined, a final call to the function flush should be -made. Only such a call will ensure that the statements are completely -committed to the device, on which is drawn. - - - - -So most preperatory things we know by now. We can start drawing onto the -screen. Astonishingly in OpenGL there is only very limited number of shapes -for drawing. Just points, simple lines and polygons. No curves or more -complicated objects. Everything needs to be performed with these -primitive drawing functions. The main function used for drawing -something is renderPrimitive. The first argument of this -functions specifies what kind of primitive is to be drawn. There are -the following primitives defined in OpenGL:
- - - -The second -argument defines the points which specify the primitives. These points -are so called vertexes. Vertexes are actually monadic functions which -constitute a point. If you want to define a point in a 3-dimensional -universe with the coordinates x, y, z then you can use -the following expression in HOpenGL: -vertex (Vertex3 x y z) -or, if you prefer the use of the standard prelude operator $: -vertex $ Vertex3 x y z - - -We have seen in the introductory example that we can draw -points. We can simply define a vertex and use this in the -function renderPrimitive. - - -This program draws one single yellow point on a black screen. - IO () -createAWindow windowName = do - createWindow windowName - displayCallback $= display - -display :: DisplayCallback -display = do - clear [ColorBuffer] - currentColor $= Color4 1 1 0 1 - ]]>renderPrimitive Points -If you do not like parantheses then you can of course use the -operator $ from the prelude and rewrite the line:
-renderPrimitive Points $ vertex $ Vertex3 (0.1::GLfloat) 0.5 0 -
- -Unfortunately Haskell needs sometimes a little bit of help for -overloaded type classes. Therefore you find the type -annotation (0.1::GLfloat) on one of the float literals. In -larger applications Haskell can usually infer this information from -the context. Just in smaller applications you will sometimes need to -help Haskell's type checker a bit.

- -The second argument of renderPrimitive is a sequence of -monadic statements. So, if you want more than one point to be drawn, -you can define these in a nested do statement - - -In this program we use a nested do statement to define more -points. - - IO () -createAWindow windowName = do - createWindow windowName - displayCallback $= display - -display :: DisplayCallback -display = do - clear [ColorBuffer] - currentColor $= Color4 1 1 0 1 - renderPrimitive Points $ - ]]>do - - vertex (Vertex3 (0.1::GLfloat) 0.6 0) - vertex (Vertex3 (0.1::GLfloat) 0.1 0)flush - - -If you want to think of points mainly as triples then you can convert -a list of points into a sequence of monadic statements by first maping -every triple into a vertex, e.g.by:
map (\(x,y,z)->vertex $ Vertex3 x y z)
and then combining the -sequence of monadic statements into one monadic statement. Therefore -you can use the standard function for monads: sequence_. The -standard function mapM_ is simply the composition of map and sequence_, such that a list of triples can be -converted to a monadic vertex statement by:
-mapM_ (\(x,y,z) -> vertex $ Vertex3 x y z)
-which is the technique used in the introductory example. - - - -Thus we can rewrite a points example in the following way: points are -defined as a list of triples. Furthermore we define -some useful auxilliary functions: - IO () -createAWindow windowName = do - createWindow windowName - displayCallback $= display - -display :: DisplayCallback -display = do - clear [ColorBuffer] - currentColor $= Color4 1 1 0 1 - let points = [(0.1,0.6,0) - ,(0.2,0.8,0) - ,(0.3,0.1,0) - ,(0,0,0) - ,(0.4,-0.8,0) - ,(-0.2,-0.8,0) - ] - renderPoints points - flush - -makeVertexes :: [(GLfloat,GLfloat,GLfloat)] -> IO () -makeVertexes = mapM_ (\(x,y,z)->vertex $ Vertex3 x y z) - -renderPoints :: [(GLfloat,GLfloat,GLfloat)] -> IO () -renderPoints = renderAs Points - -renderAs :: PrimitiveMode -> [(GLfloat,GLfloat,GLfloat)] -> IO () -renderAs figure ps = renderPrimitive figure $ makeVertexes ps]]> - - - - -In the following we want to explore all the other different shapes -which can be rendered by OpenGL. All shapes are defined in terms of -vertexes which you can think of as points. We have already seen how -to define vertexes and how to open a window and such things. We -provide a simple module, which will be used in the consecutive -examples. Some useful functions are defined in this module. - - -A first function will open a window und use a given display function -for the window graphics: - IO () -renderInWindow displayFunction = do - (progName,_) <- getArgsAndInitialize - createWindow progName - displayCallback $= displayFunction - mainLoop]]> - -The next function creates for a list of points, which are expressed as -triples, and a basic shape a display function which renders the -desired shape. - - PrimitiveMode -> IO () -displayPoints points primitiveShape = do - renderAs primitiveShape points - flush - -renderAs :: PrimitiveMode -> [(GLfloat,GLfloat,GLfloat)] -> IO () -renderAs figure ps = renderPrimitive figure $ makeVertexes ps - -makeVertexes :: [(GLfloat,GLfloat,GLfloat)] -> IO () -makeVertexes = mapM_ (\(x,y,z)->vertex $ Vertex3 x y z)]]> -Eventually we define a list of points as example and provide a -function for easy use of these points: - IO () -mainFor primitiveShape - = renderInWindow (displayMyPoints primitiveShape) - -displayMyPoints :: PrimitiveMode -> IO () -displayMyPoints primitiveShape = do - clear [ColorBuffer] - currentColor $= Color4 1 1 0 1 - displayPoints myPoints primitiveShape - -myPoints :: [(GLfloat,GLfloat,GLfloat)] -myPoints - = [(0.2,-0.4,0) - ,(0.46,-0.26,0) - ,(0.6,0,0) - ,(0.6,0.2,0) - ,(0.46,0.46,0) - ,(0.2,0.6,0) - ,(0.0,0.6,0) - ,(-0.26,0.46,0) - ,(-0.4,0.2,0) - ,(-0.4,0,0) - ,(-0.26,-0.26,0) - ,(0,-0.4,0) - ]]]> - - -We can now render the example points in a oneliner: -import PointsForRendering - -main :: IO () -main = mainFor Points - - - - - - -The next basic thing to do with vertexes is to connect them, i.e. -consider them as starting and end point of a line. There are three -ways to connect points with lines in OpenGL. - - -The most natural way is to take pairs of points and draw lines between these. -This is done in the primitive mode Lines. In order that this -works properly an even number of vertexes needs to be supplied to the -function renderPrimitive. - - -Connecting our example points by lines. Pairs of points define -singleton lines. -import PointsForRendering - -main :: IO () -main = mainFor Lines -The resulting window can be found in figure -. - - - - - -The next way to connect points with lines you probably can imagine is -to make a closed figure. The end point of a line is the starting point -of the next line and the last point is connected with the first, such -that a closed loop of lines is created. - -Now we make a loop of lines with our example points. -import PointsForRendering - -main :: IO () -main = mainFor LineLoop - -The resulting window can be found in figure -. - - - - - - - - -A strip of lines is very close to a loop of lines. The only thing -missing is the last line which connects the last point with the first -one again. - - -Now we make a strip of lines with our example points. -import PointsForRendering - -main :: IO () -main = mainFor LineStrip -The resulting window can be found in figure -. - - - - - - - - -The next basic shape which can be rendered by OpenGL are -triangles. Triples of points are taken and triangles are drawn with -these. As for lines there are three flavours of triangles. - - - -The most natural way of drawing triangles is to take triples and draw -triangles. In order to work for triangles, the number of points -provided needs to be a multiple of 3. - - -Our example vertexes define 12 points such that we get 4 triangles -import PointsForRendering - -main :: IO () -main = mainFor Triangles -The resulting window can be found in figure -. - - - - - - - -A triangle strip makes a sequence of triangles where the next triangle -uses two points of its predecessor and one new point. - -For our 12 points a triangle strip will create 10 triangles. - -import PointsForRendering - -main :: IO () -main = mainFor TriangleStrip -The resulting window can be found in figure -. - - - - - - -A fan has one starting point for all triangles. Triangles are always -drawn starting from the first point. - -Our example points as a fan. 10 triangles are rendered. -import PointsForRendering - -main :: IO () -main = mainFor TriangleFan -The resulting window can be found in figure -. - - - - - - - - -Lines connected two points, triangles three points, now we will connect -four points. This is calles a quad. There are two flavours of -quads. - - -The primitive mode Quads takes quadruples of points and -connects them in order to render a filled figure. - -For our 12 example points OpenGL renders 3 quads - -import PointsForRendering - -main :: IO () -main = mainFor Quads -The resulting window can be found in figure -. - - - - -In a three dimensional world quads are unlike triangles not -necessarily plane areas. - - - - -For a strip of quads OpenGL uses two points of the preceeding quads -for the next quad. The number n of vertexes therefore -needs to be of the form: n=4+2*m. - - -Our examples vertexes now used for a strip of quads. -import PointsForRendering - -main :: IO () -main = mainFor QuadStrip - -The resulting window can be found in figure -.Which somehow does not -look like the expected? - - - - - - - - - -We connected two, three and for points. Eventually there is a shape -that connects an arbitrary number of points. This is generally called -a polygon. There are some restrictions for polygons: - -no convex corners are allowed. -lines may not cross each other. -polygons need to be planar. - - - - -Noch nicht mal allgemeine Polygone sind -erlaubt, sondern nur einfache Polygone, d.h. planare, konvexe und - nicht selbstüberschneidende Polygone. Kompliziertere Polygone kann - man sich mit Hilfe des GLU-Tessellators in einfachere übersetzen - lassen. - - - - - -Eventually our vertexes are used to define a polygon. - -import PointsForRendering - -main :: IO () -main = mainFor Polygon -In this case the resulting window looks like the triangle fan we have -seen before. - - -If you want to render polygons which hurt some of the restrictions -above, you need to represent them by a set of smaller polygons. Since -this is a tedious task to be done manually there is a library -available, which does this for you: the GLU tessellation. - - - - - - - -In the last sections you have seen all primitive shapes, which can be -rendered by OpenGL. Everything else needs to be constructed in term of -these primitives. Especially you might wonder where curves and circles -are. The bad news is: you have to do these by yourself. - - - -With a bit mathematics you probably have already guessed how to do -curves and especially circles. You need to approximate them with a -large number of lines. If the lines get very small we eventually see a -curve. Let us try this with circles. We write a module which gives us -some utility functions for rendering circles. - - - -The crucial function calculates a list of points which are all on the -circle. You need a bit of basic geometrical knowledge for this. -The coordinates of the points on a circle can be determined -by \sin(\alpha) and \cos(\alpha) where \alpha is between 0 and 2\pi.

- -Thus we can easily calculate the coordinates of an arbitrary number of -points on a circle: - - a -> Int -> [(a,a,a)] -circlePoints radius number = - [let alpha = 2 * pi * fromIntegral i / fromIntegral number - in (radius * sin alpha, radius * cos alpha, 0) - | i <- [1, 2 .. number]] -]]> -If we take a large enough number then we will eventually get a circle: - [(GLfloat,GLfloat,GLfloat)] -circle radius = circlePoints radius 100]]> -The following function can be used to render the circle figures: - Int -> IO () -renderCircleApprox r n = - displayPoints (circlePoints r n) LineLoop - -renderCircle :: GLfloat -> IO () -renderCircle r = displayPoints (circle r) LineLoop - -fillCircle :: GLfloat -> IO () -fillCircle r = displayPoints (circle r) Polygon]]> - - -First we test what kind of shape we get for small approximation -numbers. -import PointsForRendering -import Circle - -main :: IO () -main = renderInWindow $ do - clear [ColorBuffer] - renderCircleApprox 0.8 10 - -The resulting graphic can be seen in figure -. - - - - - -Now we can test, if the resulting circle is, what we expected. - - -The resulting graphic can be seen in figure -. - - - - - -And eventually have a look at the filled circle. - -The resulting graphic can be seen in figure -. - - - - - - - -Now, where you know how to do circles, you can equally as easy define -functions for rendering rings. A ring has an inner and an outer circle -and fills the space between these. So we can approximate these two -rings and render quads between them. - - - - -We can simply define the points of the inner and outer ring and merge -these. The resulting list of points can then be rendered as -a QuadStrip. Since there is no primitive mode for quad loops, -we need to append the first two points as the last points again: - - GLfloat -> [(GLfloat,GLfloat,GLfloat)] -ringPoints innerRadius outerRadius - = concat $ map (\(x,y)->[x,y]) (points++[p]) - where - innerPoints = circle innerRadius - outerPoints = circle outerRadius - points@(p:_) = zip innerPoints outerPoints]]> - -Eventually we provide a small function for rendering ring shapes. - GLfloat -> IO () -ring innerRadius outerRadius - = displayPoints (ringPoints innerRadius outerRadius) QuadStrip]]> - - -We can test the ring functions: - - -The resulting graphic can be seen in figure -. - - - - - - - - -There are some more attributes that can be set for primitive shapes -(besides the color, which we have already set). - - - -You could argue that there is no need for single points. A point can -be modelled by a circle that has a small radius (or in the third -dimension a sphere). However, there is something like a point in -OpenGL and you can set its size. This size value for points does not -refer to a radius in the coordinate system but is measured in terms of -screen pixels. The default value is, one pixel per point. - - -We set the point size to 10 pixels: -import PointsForRendering - -main :: IO () -main = renderInWindow display - -display :: DisplayCallback -display = do - pointSize $= 10 - displayMyPoints Points - - -The resulting graphic can be seen in figure -. - - - - - - -As for points, there are also further attributes for lines. First of all -there is a line width. As for the point size, this is measured in -screen pixels. Furthermore, you can set some line stipple: this is the -pattern of the line, dashes etc. For the line stipple there is a -state variable of type: Maybe (GLint, GLushort). The second -argument of the value pair denotes the kind of stipple. For every -short value there is one stipple. The short value has 16 bits. Every -bit stands for a pixel. If for the corresponding short number the bit -is set, then the pixel will be drawn, otherwise not. This means that -for the short number 0 you will not see anything of your -line, and for the value 65535 you will see a solid line.

- -The integer number of the value pair denotes a factor for the chosen -stipple. For some positiv integer n every bit of the -short number stands for n bits. - - -Setting the width of lines and a stipple: - -import PointsForRendering - -main :: IO () -main = renderInWindow display - -display :: DisplayCallback -display = do - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer] - lineStipple $= Just (1,255) - currentColor $= Color4 0 0 0 1 - lineWidth $= 10 - displayPoints squarePoints LineLoop - flush - -squarePoints :: [(GLfloat,GLfloat,GLfloat)] -squarePoints - = [(-0.7,-0.7,0),(0.7,-0.7,0),(0.7,0.7,0),(-0.7,0.7,0)] - - -The resulting graphic can be seen in figure -. - - - - - - - - -You might have wondered, why the function renderPrimitive takes monadic statements as argument and not -simply a list of vertexes? This means we could pass any monadic -statement to the function renderPrimitive, not only -statements that define vertexes by the call of the -function vertex. There are some statements, which are allowed -in the statements passed to renderPrimitive. -One of these is setting the current color before -every call of vertex to a new value. When finally rendering -the primitive, OpenGL takes these color values into acount. - - - -We define a triangle. Before the three vertexes of the triangle are -defined, the current color is set to a new value. -import PointsForRendering - -colorTriangle :: IO () -colorTriangle = do - currentColor $= Color4 1 0 0 1 - vertex $ Vertex3 (-0.5) (-0.5) (0::GLfloat) - currentColor $= Color4 0 1 0 1 - vertex $ Vertex3 (0.5) (-0.5) (0::GLfloat) - currentColor $= Color4 0 0 1 1 - vertex $ Vertex3 (-0.5) (0.5) (0::GLfloat) - -main :: IO () -main = renderInWindow display - -display :: DisplayCallback -display = do - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer] - renderPrimitive Triangles colorTriangle - flush - -The resulting window can be found in figure -. - - - - - - - - - -Rendering of polygons is very limited. We cannot render polygons for -crossing lines, or convex corners. Such polygons need to be expressed -by a set of simpler polygons. -In the module Graphics.Rendering.OpenGL.GLU.Tessellation there are a number of -functions, which calculate a set of simpler polygons. -For the time being, we will not go -into detail, but give one single example, of how to use this library. - - -We want to render stars. These are shapes with convex corners. - - - - -We can easily calculate the points on the star rays. They are all on -one circle. We can use our function for defining circle points and get -a list of points. For rendering the star, we take first the points -with odd index followed by the points with even index. - - Int -> [Vertex3 GLdouble] -starPoints radius rays = - map (\(_,(x,y,z)) -> Vertex3 x y z) (os ++ es) - where (os,es) = partition (odd . fst) $ - zip [1 :: Int, 2 ..] $ - circlePoints radius rays]]> - -For tessellation we need to create a ComplexPolygon, which consists of -a list of ComplexContours and a ComplexContour consists of a -list of AnnotatedVertexes. The annotation can be used for color or -similar information, but we do not make use of this annotation and simple -annotate every vertex with 0. - - ComplexPolygon DontCare -complexPolygon points = - ComplexPolygon - [ComplexContour $ map (\v -> AnnotatedVertex v 0) points]]]> - -The function tessellate creates a list of simple polygons. It needs -some control information, which we do not explain here. - - Int -> IO () -star radius rays = do - starTess <- - tessellate - TessWindingPositive 0 (Normal3 0 0 0) noOpCombiner $ - complexPolygon (starPoints radius rays) - drawSimplePolygon starTess]]> - -The resulting simple polygons can be rendered with the function -renderPrimitive. - - IO () -drawSimplePolygon (SimplePolygon primitiveParts) = - mapM_ renderPrimitiveParts primitiveParts - -renderPrimitiveParts :: Primitive DontCare -> IO () -renderPrimitiveParts (Primitive primitiveMode vertices) = - renderPrimitive primitiveMode $ - mapM_ (vertex . stripAnnotation) vertices - -stripAnnotation :: AnnotatedVertex DontCare -> Vertex3 GLdouble -stripAnnotation (AnnotatedVertex plainVertex _) = plainVertex - -noOpCombiner :: Vertex3 GLdouble -> WeightedProperties DontCare -> DontCare -noOpCombiner _newVertex _weightedProperties = 0]]> - -Now we can test our stars. We render two stars, one with 7 and one with 5 rays. - -import PointsForRendering -import Star - -main :: IO () -main = renderInWindow $ do - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer] - - currentColor $= Color4 1 0 0 1 - star 0.9 7 - - currentColor $= Color4 1 1 0 1 - star 0.4 5 - -The resulting window can be found in figure -. - - - - - - - -The bad news was that just very basic shapes are provided by OpenGL -for rendering. The good news is that the OpenGL library comes along -with a library that contains a large number of shapes. - - - -You probably need very often the shape of a teapot. Since this is so -elementary a library function is provided for this. - -import PointsForRendering - -main :: IO () -main = renderInWindow display - -display :: DisplayCallback -display = do - clear [ColorBuffer] - renderObject Solid $ Teapot 0.6 - flush -The resulting graphic can be seen in figure -. - - - - - -

- -
- - -By now you know, how to define different shapes for rendering. You -might wonder how to place shapes on special positions or how to -scale or rotate your shapes. This is done by so called transformation -matrixes. Before something is rendered by OpenGL a transformation -operation is performed on it. Every point will get multiplied with -the transformation matrix. The transformation matrix is part of the -state. So in order to transform a shape in some way, first the -transformation matrix has to be set and then the shapes are to be -rendered. -If not specified otherwise the transformation matrix is the identity -operation, i.e. no transformation is performed. You can -always reset the transformation matrix to the identity by the call of -the monadic statement loadIdentity. Then the current matrix -is discarded and no transformation is applied to the next rendering -operations. - -
-One transformation is to move a shape to another position. The -according matrix is set by the statement translate. It has -one argument: a vector of size three which denotes in which direction -the following shapes are to be moved. Every vertex that will be -rendered after a translate statement will be moved by the -values of this vector. - - - -The function ring we defined before only defined rings which -have the center coordinates (0,0,0). If we want to place -rings somewhere else then we need to apply a translate matrix. -import PointsForRendering -import Ring - -We define a function, which creates a ring at a given -position. Therefore we first set the transformation to the -translate transformation then define the ring and finally set the -transformation matrix back to the identity: -ringAt :: GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO () -ringAt x y innerRadius outerRadius = do - translate $ Vector3 x y 0 - ring innerRadius outerRadius -We can test this by placing some ring in different colors on the -screen. -main :: IO () -main = renderInWindow someRings - -someRings :: DisplayCallback -someRings = do - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer] - - loadIdentity - currentColor $= Color4 1 0 0 1 - ringAt 0.5 0.3 0.1 0.12 - - loadIdentity - currentColor $= Color4 0 1 0 1 - ringAt (-0.5) 0.3 0.3 0.5 - - loadIdentity - currentColor $= Color4 0 0 1 1 - ringAt (-1) (-1) 0.7 0.75 - - loadIdentity - currentColor $= Color4 0 1 1 1 - ringAt 0.7 0.7 0.2 0.3 - - -The resulting graphic can be seen in figure -. - -Note that if we did not reset the transformation back to the identity, -we would get the composition of all transformations. - - - - -
-
-Another transformation that can be performed is rotation. The rotate -statement has two arguments. The first one specifies by which degree -the following shapes are to be rotated counterclockwise. The second -argument is a vector which specifies around which axis the shape is -to be rotated. - - -In this example we apply the composition of two -transformations. Squares are moved to some position and furthermore -rotated around the z-axis.

- -We write a simple module for rendering filled rectangles: -module Squares where -import PointsForRendering -Here is a function for arbitrary rectangles: - GLfloat -> IO () -myRect width height = - displayPoints [(w,h,0),(w,-h,0),(-w,-h,0),(-w,h,0)] Quads - where w = width / 2 - h = height / 2]]> -A square is just a special case: - IO () -square width = myRect width width]]> - -Now we will transform squares. - -import PointsForRendering -import Squares -We define a function, which applies the rotate transformation to a -square. It is rotated around the z-axis. - -rotatedSquare :: GLfloat -> GLfloat -> IO () -rotatedSquare alpha width = do - rotate alpha $ Vector3 0 0 1 - square width - -A further utility function moves some shape to a specified -position. Note that this function resets the matrix again. - -displayAt :: GLfloat -> GLfloat -> IO () -> IO () -displayAt x y displayMe = do - translate $ Vector3 x y 0 - displayMe - loadIdentity - -Some squares are defined and rotated: - -main :: IO () -main = renderInWindow someSquares - -someSquares :: DisplayCallback -someSquares = do - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer] - - currentColor $= Color4 1 0 0 1 - displayAt 0.5 0.3$rotatedSquare 15 0.12 - - currentColor $= Color4 0 1 0 1 - displayAt (-0.5) 0.3$rotatedSquare 25 0.5 - - currentColor $= Color4 0 0 1 1 - displayAt (-1) (-1)$rotatedSquare 4 0.75 - - currentColor $= Color4 0 1 1 1 - displayAt 0.7 0.7$rotatedSquare 40 0.3 - -The resulting graphic can be seen in figure -. - - - - -

- -
-The third transformation enables you to scale shapes. This is not only -useful for changing the size of some object but for stretching it in -some direction. The transformation scale has three arguments, -which represent the scaling factors in the three dimensional space. - - - -We apply three transformations on the tea pot example. We rotate and -translate it and finally we stretch it a bit by a scale -transformation. -import PointsForRendering - -main :: IO () -main = renderInWindow display - -display :: DisplayCallback -display = do - clear [ColorBuffer] - scale 0.3 0.9 (0.3::GLfloat) - translate $ Vector3 (-0.3) 0.3 (0::GLfloat) - rotate 30 $ Vector3 0 1 (0::GLfloat) - renderObject Solid $ Teapot 0.6 - loadIdentity - flush -The resulting graphic can be seen in figure -. As you see it looks now like a coffee pot. - - - - -Remember that the scale and the rotate transformation always refer to -the origin (0,0,0) of your coordinates. Rotating an object, -which is not situated at the origin will move it around the -origin. Scaling an object which is not situated at the origin might -deform the object in surprising ways. -
- -
-Since Haskell is a functional programming language let us think of -transformations as functions. A transformation is a function that is -applied to every vertex before it is rendered. If you define two -transformations for an object, e.g. a rotation and a translation, then -you define a composition of these transformations.

- -The code: -rotatedSquareAt width alpha x y z = do - translate $ Vector3 x w y - rotate alpha $ Vector3 0 0 (1::GLfloat) - square width -defines a composition of a translate und a rotate transformation, - which is applied to a square figure. A sequence of transformation - statements is composed to a single transformation in the same way as - the standard function composition operator (.) composes - functions: (f . g) x = f(g(x)). The compositional -function (f . g) is the same as first applying -function g and then applying f. For transformations - in HOpenGL this means that for a sequence of transformations -translate $ Vector3 x w y -rotate alpha $ Vector3 0 0 (1::GLfloat) -first the points are rotated and then they are translated.

- -The order in which transformations are performed is of course not -arbitrary. A rotation after a translation is different to a -translation after a rotation. - - -This example illustrates the different compositions of rotation and -translation. - -A black square at the origin: - currentColor $= Color4 0 0 0 1 - square 0.5 - loadIdentity -A blue square translated: - currentColor $= Color4 0 0 1 1 - translate $ Vector3 0.5 0.5 (0::GLfloat) - square 0.5 - loadIdentity -A light blue square that is rotated: - currentColor $= Color4 0 1 1 1 - rotate 35 $ Vector3 0 0 (1::GLfloat) - square 0.5 - loadIdentity -A red square that is first rotated and then translated: - currentColor $= Color4 1 0 0 1 - translate $ Vector3 0.5 0.5 (0::GLfloat) - rotate 35 $ Vector3 0 0 (1::GLfloat) - square 0.5 - loadIdentity -A yellow square that is first translated and then rotated: - currentColor $= Color4 1 1 0 1 - rotate 35 $ Vector3 0 0 (1::GLfloat) - translate $ Vector3 0.5 0.5 (0::GLfloat) - square 0.5 - loadIdentity - -The resulting window can be found in figure -. - - - - - -Since the scale und the rotate transformation refer both to the origin -and the translate transformation can move objects away from the origin -it is a good policy to create objects at the origin, then rotate and -scale it and finally translate it to its final position. Therefore -predefined shapes in the library are usually positioned at the origin, -as e.g. the tea pot. -

- - -
-The three ready to usee transformations rotation, scaling and -translation or their composition might not suffice for your -needs. Then you can define your own transformations. Technically a -transformation in OpenGL is represented as a matrix. Every vertex gets -multiplied by the transformation matrix before it is rendered. In -order to define a transformation, we will need to construct such a -matrix.

- -Internally every vertex in OpenGL is not represented by 3 -coordinates (x,y,z) but by four -coordinates (x,y,z,w). The x, y, z values -are devided by w. Usually the value -of w is 1.0.

- -Thus for a transformation matrix you need a matrix of four rows and four -columns. Remember that a matrix is multiplied with a vector in the -following way: - - - - - -OpenGL provides a function for creation of a transformation -matrix out of a list: matrix. It takes as first argument a -parameter, which specifies in which order the matrix elements appear -in the list: RowMajor for row wise and ColumMajor for column wise appearance. The function multMatrix allows to multiply your newly created transformation -matrix to the current transformation context. - - - -We can now define our own transformations. We can define the -transformation shear. Mathematical textbooks -define shear in the following way: - - -Eric -Weissteins's world of mathematics - -A transformation in which all points along a given -line L remain fixed while other points are shifted -parallel to L by a distance proportional to their -perpendicular distance from L. -Shearing a plane figure does not change its area. - - - -We define a shear transformation, which leaves y and z coordinates unchanged, and adds to -the x coordinate some value depending on the value -of y. For some f we need the following -transformation matrix: - - - -As you can see, this is almost the identity. -We can define this in HOpenGL: - - IO () -shear f = do - m <- newMatrix RowMajor [1,f,0,0 - ,0,1,0,0 - ,0,0,1,0 - ,0,0,0,1] - multMatrix (m :: GLmatrix GLfloat)]]> - -Let us test our new transformation: - -import PointsForRendering -import Circle -import Squares -import MyTransformations - -main :: IO () -main = renderInWindow $ do - loadIdentity - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer] - translate $ Vector3 0.5 0.5 (0::GLfloat) - shear 0.5 - currentColor $= Color4 0 0 1 1 - fillCircle 0.5 - - loadIdentity - translate $ Vector3 (-0.5) (-0.5) (0::GLfloat) - shear 0.5 - currentColor $= Color4 1 0 0 1 - square 0.5 - - -The resulting window can be found in figure -. - - - - -

- -
-You might get strange effects when you forget to reset the -transformation matrix. This might not only effect further rendering -statements but also applies to the redisplay of your window. The display -function you specified for your window will be called whenever the -window needs to be displayed. However this does not automatically -reset the transformation matrix to the identity matrix. This results -in the effect that every redisplay of your window changes its contents. - - -In this example a ring is displayed. Each time the display function is -called the contents of the ring moves a bit. Compile the program and -hide the resulting window behind some other window. You will observe -how the ring moves within the window, until it is no longer displayed. -import PointsForRendering -import Ring - -main :: IO () -main = renderInWindow display - -display :: DisplayCallback -display = do - clear [ColorBuffer] - translate $ Vector3 (-0.1) 0.1 (0::GLfloat) - ring 0.2 0.4 - flush - - -As a matter of fact this effect may not only occur with -transformations, but every state changing statement. If you set the -color as last statement in your display function to some value then -this will be the current color in the next call of the display -function. Thus it is better to ensure that the display function leaves -a clean state, i.e.the state it espects to find, when -it is called, or even better let the display functions -not rely on any previously set states. -
- -
-Often you will have the situation, that you are in a context of some -transformations. Maybe for certain parts of you shape you want -to add some -further transformation but for other parts return to the outer -transformation context. In such situations you cannot use -the statement loadIdentity since this will not only delete -the transformations you wanted to be applied to your local part of the -the complete shape but the whole transformation context.

- -HOpenGL provides a function which allows to add some more -transformations to some local parts of your shape. This function is -called preservingMatrix which refers to the fact that -transformations are technically implemented as -matrixes. preservingMatrix has one argument, which is a -monadic statement. The application of preservingMatrix is a -monadic statement: -preservingMatrix :: IO a -> IO a -Every transformation done within this monadic -statement will not be done only locally. It does not effect the -statements which follow after the application of preservingMatrix. - - -To demonstrate the use of preservingMatrix we provide -a module, which is able to render a side of the famous Rubik's -Cube. Such a side consists of 9 squares which are of some color and -which have a black frame. We can render such a shape, by rendering the -single framed squares at the origin and then move them to their -position. This movement is done within -a preservingMatrix application. - - - -Doing a frame involves the four sides of a frame. Each side is created -at the origin and then moved to its final position: - GLfloat -> GLfloat -> IO () -frame width height border = do - let bh = border / 2 - let wh = width / 2 - bh - let hh = height / 2 - bh - - preservingMatrix $ do - translate $ Vector3 0 hh 0 - myRect width border - preservingMatrix $ do - translate $ Vector3 0 (-hh) 0 - myRect width border - preservingMatrix $ do - translate $ Vector3 (-wh) 0 0 - myRect border height - preservingMatrix $ do - translate $ Vector3 wh 0 0 - myRect border height]]> - -Each of the nine fields is rendered by drawing its frame and its colored square: - - Color4 GLfloat -> IO () -originField width col = do - let frameWidth = width / 10 - currentColor $= Color4 0 0 0 1 - frame width width frameWidth - currentColor $= col - square (width - frameWidth)]]> - -Eventually the side of Rubik's Cube can be drawn: - - [[Color4 GLfloat]] -> IO () -renderArea width css = do - let cs = concat css - cps = zip cs $ areaFields width - mapM_ (\(c,f) -> f (originField width c)) cps - -areaFields :: GLfloat -> [IO () -> IO ()] -areaFields width = - [makeSquare x y | x<-[1,0,-1], y<-[1,0,-1]] - where makeSquare xn yn = \f -> preservingMatrix $ do - let x = xn * width - y = yn * width - translate $ Vector3 x y 0 - f -red, green, blue, yellow, white, black :: Color4 GLfloat -red = Color4 1 0 0 1 -green = Color4 0 1 0 1 -blue = Color4 0 0 1 1 -yellow = Color4 1 1 0 1 -white = Color4 1 1 1 1 -black = Color4 0 0 0 1]]> - -The following module tests the rendering. Two sides are -rendered. Further transformations are applied to them. - -import PointsForRendering -import RubikFace - -_FIELD_WIDTH :: GLfloat -_FIELD_WIDTH = 1/5 - -main :: IO () -main = renderInWindow faces - -faces :: DisplayCallback -faces = do - clearColor $= white - clear [ColorBuffer] - - loadIdentity - translate $ Vector3 (-0.6) 0.4 (0::GLfloat) - renderArea _FIELD_WIDTH r1 - - loadIdentity - translate $ Vector3 (0.1) (-0.3) (0::GLfloat) - rotate 290 $ Vector3 0 0 (1::GLfloat) - scale 1.5 1.5 (1::GLfloat) - renderArea _FIELD_WIDTH r1 - -r1 :: [[Color4 GLfloat]] -r1 = [[red,blue,yellow],[white,green,red],[green,yellow,blue]] - - -The resulting window can be found in figure -. - - - -

- - -
- - - - -
-Up to now we always relied on the default values for most attributes -which are concerned with projection. From where do we look at the -scenery? Which coordinates are displayed to what extend on the -screen. Such attributes can be set in the reshape callback -function. This function gets the window size as argument and specifies -which coordinates are to be seen on the screen. At first glance the -name seems to be a bit misleading, since it evokes the image that it is -just called, when someone resizes the window. The first time the -reshape function is called is at the opening of the window.

- -The reshape function might be empty. This is modelled by the Haskell -data type Maybe. - - -We define the first reshape function for a window. It is the identity -function, which does not specify anything, how to render the picture. -reshapeCallback $= Just reshape - -When you run this example, you will see a white square in the middle of a black -screen. Now resize the window, and you will notice that the size of the square -will not change. If you make the window smaller, parts of the picture are not -displayed, if you enlarge the window, parts of the window contain no image -(which means it might be some arbitrary image). Figure shows how the window looks after enlarging it a bit. - - - -

- - -
-Usually you want to define in the reshape function, which parts of the -window pane are to be used for rendering the picture. There is a state -variable viewport, which contains exactly this -information. It is a pair, of a position and a size. The position is -the offset from the upper left corner in pixels. The size is the size -of the screen to be used for rendering in pixels. - - -If you want the window to be used completely for rendering the image, -then the position needs to be set to Position 0 0. i.e. no -offset and as size the complete window size is to be used: -reshapeCallback $= Just reshapeviewport $= (Position 0 0, s) - -If you start this program and resize the window, then always the -complete window pane will be used for rendering your image. - - - -In this example only parts of the window are used for rendering the -image. The image is smaller than the window. - -import PointsForRendering - -main :: IO () -main = do - (progName,_) <- getArgsAndInitialize - createWindow progName - clearColor $= Color4 0 0 0 0 - displayCallback $= display - reshapeCallback $= Just reshape - mainLoop - -display :: DisplayCallback -display = do - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer] - currentColor $= Color4 1 0 0 1 - displayPoints ps1 LineLoop - displayPoints ps2 Lines - where - ps1=[(0.5,0.5,0),(-0.5,0.5,0),(-0.5,-0.5,0),(0.5,-0.5,0)] - ps2=[(1,1,0),(-1,-1,0),(-1,1,0),(1,-1,0) ] - -reshape :: ReshapeCallback -reshape (Size w h) = do - viewport $= (Position 50 50, Size (w-80) (h-60)) - - -The resulting window can be found in figure -. - - - -
- -
- -The viewport defines which parts of your window pane are used for -rendering your image. The actual projection defines which coordinates -you want to display. The simpliest way to specify this is by the -function ortho. It has six arguments, the lower and upper -bounds of the x, y, z coordinates.

- -Projection is equally as transformation internally expressed in terms -of a matrix. The statement loadIdentity can refer to the -transformation or to the projection matrix. A state variabble matrixMode defines, which of these matrixes these statements -refer to. Therefore it is necessary to switch this variable to the -value Projection, before applying the function ortho and afterwards to reset the variable back to the -value ModelView. - - - -We render the same image in two windows with different projection values: -import Graphics.UI.GLUT -import Star - -main :: IO () -main = do - (progName,_) <- getArgsAndInitialize - - createWindow (progName++"1") - displayCallback $= display - projection (-5) 5 (-5) 5 (-5) 5 - - createWindow (progName++"2") - displayCallback $= display - projection 0 0.8 (-0.8) 0.8 (-0.5) 0.5 - - mainLoop - -projection :: GLdouble -> GLdouble -> GLdouble - -> GLdouble -> GLdouble -> GLdouble -> IO () -projection xl xu yl yu zl zu = do - matrixMode $= Projection - loadIdentity - ortho xl xu yl yu zl zu - matrixMode $= Modelview 0 - -display :: DisplayCallback -display = do - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer] - currentColor $= Color4 1 0 0 1 - star 0.9 7 - currentColor $= Color4 1 1 0 1 - star 0.4 5 - -The resulting windows can be found in figure -. - - - - - -ortho is the simpliest projection we can define. When we will -consider third dimensional szeneries we will learn a more powerful -projection. - -

- - - -
- - -OpenGL is not only designed to render static images, but to have -changing images. There are to ways how your image might change: - -it might react to some event, like some keyboard input or mouse -event. -it might change over time. - - -In order to change your image in some coordinated way, you need a -state which can change. An event may change your state, or over the time -your state might be changed. - - -
-A state is of course something, which does not match the purely -functional paradigm of Haskell. However in the context of I/O the -designers of Haskell came up with some clever way to integrate state changing -variables into the Haskell's purely functional setting. The trick are -again monads, as you have seen before for the state machine of -OpenGL. There is a standard library in Haskell for state changing -variables: Data.IORef. This provides functions for creation, -setting, retrieving and modification of state variables. These functions are -called:
- newIORef, writeIORef, readIORef, modifyIORef.

-

- -
-Now we know how to modell our own state. We can use this for reacting -on some events. Event handling in HOpenGL is done by setting a -callback function for mouse and keyboard events. -A callback function for mouse and keyboard events needs to be of the -following type: - - KeyState -> Modifiers -> Position -> IO ()]]> - -A Key can be some character, some special character or some -mouse buttom: -data Key - = Char Char - | SpecialKey SpecialKey - | MouseButton MouseButton - deriving ( Eq, Ord, Show ) - -The keystate informs, if the key has been pressed or released. - -data KeyState - = Down - | Up - deriving ( Eq, Ord, Show ) - -A modifier denotes, if some extra key is used, like the alt, strg or -shift key: -data Modifiers = Modifiers { shift, ctrl, alt :: KeyState } - deriving ( Eq, Ord, Show ) - -And finally the position informs about the current mouse pointer -position. - - -With the close look at the event handling function above it is fairly -easy to write a program that reacts on keyboard events. A function of -type KeyboardMouseCallback is to be written and assigned to -the state variable keyboardMouseCallback of your -window. Usually your KeyboardMouseCallback will have access -to some of your state variables, since you want to change a state when -an event occurs. When the state has been changed, HOpenGL needs to be -forced to redisplay the picture with the new state values. Therefore a -call to the function postRedisplay needs to be done. - -In this example we draw a circle. The radius of the circle -can be changed by use of the + and - key. - - -We create a state variable which stores the current radius of the circle: - - radius <- newIORef 0.1 - -The display function gets this state variable as first argument: - - - -And the keyboard callback gets this variable as first argument: - - keyboardMouseCallback $= Just (keyboard radius) - mainLoop - -The display function gets the current value for the radius and draws a -filled circle: - -display :: IORef GLfloat -> DisplayCallback -display radius = do - clear [ColorBuffer] - r <- get radius - fillCircle r - -The keyboard callback reacts on two keyboard events. The value of the -radius variable are changed: - - KeyboardMouseCallback -keyboard radius (Char '+') Down _ _ = do - r <- get radius - radius $= r+0.05 - postRedisplay Nothing -keyboard radius (Char '-') Down _ _ = do - r <- get radius - radius $= r-0.05 - postRedisplay Nothing -keyboard _ _ _ _ _ = return ()]]> - -Compile and start this program and press the + and - key. - - - - - - - -
- -
-The second way to change your picture is over time. You can create an -animation if your picture changes a tiny bit every moment. In HOpenGL -you can a define a so called idle function. This function -will be evaluated whenever the picture has been displayed. There you -can define, in what way your state will change before the next -redisplay is performed. The last statement in an idle function will be -usually a call to postRedisplay. - - -We define our first animation. A ring is displayed with a changing -radius. - - - -We define a constant which denotes the value by which the radius -changes between every redisplay: - - -Within the main function an idle callback is added to the window: - -main :: IO () -main = do - (progName,_) <- getArgsAndInitialize - createWindow progName - radius <- newIORef 0.1 - step <- newIORef _STEP - displayCallback $= display radius - idleCallback $= Just (idle radius step) - mainLoop - -The display function renders a ring, depending on the state variable for the -radius: - - DisplayCallback -display radius = do - clear [ColorBuffer] - r <- get radius - ring r (r+0.2) - flush]]> - -The idle function changes the value of the variable radius depending -on the second state variable step. - -idle :: IORef GLfloat -> IORef GLfloat -> IdleCallback -idle radius step = do - r <- get radius - if r>=1 then step $= (-_STEP) - else if r<=0 then step $= _STEP - else return () - s <- get step - radius $= r+s - postRedisplay Nothing - - - -The animation created in the last example was not very satisfactory. A -ring with changing radius was displayed, but the animation was somehow -flickering. The reason for that was, that the display function as its -first statement clears the screen, i.e. makes it alltogether -black. Only afterwards the ring is rendered. For a short moment the -screen will be completely black. This is what makes this flickering -effect.

- -A common solution for this problem in animated pictures is, not to -apply the statements of the display function directly to the screen, -but to an invisible buffer. When all statements of the display -function have been applied to this invisible background buffer, this -buffer is copied to the screen. This way only the ready to use final -picture is shown on screen and not any intermediate rendering step -(e.g. the picture after the clear statement).

- -OpenGL provides a double buffering mechanism. We only have to activate -this. Therefore we need to set the initial display mode variable -accordingly. Instead of a call to the function flush a call -to the function swapBuffers needs to be done as last -statement of the display function. - -The ring with changing radius over time now with double -buffering. -import Data.IORef -import Ring -import PointsForRendering - -_STEP :: GLfloat -_STEP = 0.001 - -main :: IO () -main = do - (progName,_) <- getArgsAndInitialize - initialDisplayMode $= [DoubleBuffered] - createWindow progName - radius <- newIORef 0.1 - step <- newIORef _STEP - displayCallback $= display radius - idleCallback $= Just (idle radius step) - mainLoop - -display :: IORef GLfloat -> DisplayCallback -display radius = do - clear [ColorBuffer] - r <- get radius - ring r (r+0.2) - swapBuffers - -idle :: IORef GLfloat -> IORef GLfloat -> IdleCallback -idle radius step = do - r <- get radius - if r>=1 then step $= (-_STEP) - else if r<=0 then step $= _STEP - else return () - s <- get step - radius $= r+s - postRedisplay Nothing - - - - -

- - - - -
-By now you have seen a lot of tiny examples. It is time to draw the techniques -together and do an application with HOpenGL. In this section we will implement -one of the first animated computer games ever: Pong. It consists of a -small white circle which moves over a black screen and two paddles which can -move on a vertical line. - -Pong in action can be found in figure . - - - - - -First of all we define some constant values for the game: x-, y-coordinates of -the game, width and height of a paddle, the radius of the ball, initial factor, -how a ball and a paddle changes its position, and an initial board size. - - - -We define a data type, game. The game state can be characterized by the position -of the ball and the values these coordinates change for the next redisplay: - - - -The paddles, which are characterized by their position and the position change -on the y-axis (x-axis is fixed for a paddle). - - - -Additionally a game has points for the left and the right player and a factor -which denotes how fast ball and paddles move: - - - -For a starting game we provide the following initial game state: - - - -The main function creates a double buffering window in fullscreen mode. An -initial game state is created and passed to the keyboard, display, idle and -reshape function: - - - - -The display function simply gets the ball and paddles from the game state and -renders these: - - DisplayCallback -display game = do - clear [ColorBuffer] - g <- get game - let (Ball pos _xDir _yDir) = ball g - -- a ball is a circle - displayAt pos $ fillCircle ballRadius - displayPaddle $ leftP g - displayPaddle $ rightP g - swapBuffers]]> - -Paddles are simply rectangles: - - IO () -displayPaddle (x,y,_) = preservingMatrix $ do - translate $ Vector3 (paddleWidth/2) (paddleHeight/2) 0 - displayAt (x,y) $ myRect paddleWidth paddleHeight]]> - -We made use of the utility function which moves a shape to some position: - - IO () -> IO () -displayAt (x, y) displayMe = preservingMatrix $ do - translate $ Vector3 x y 0 - displayMe]]> - -Within the idle function ball and paddles need to be set to their next position -on the field: - - IdleCallback -idle game = do - g <- get game - let fac = moveFactor g - game - $= g{ball = moveBall g - ,leftP = movePaddle (leftP g) fac - ,rightP = movePaddle (rightP g) fac - } - postRedisplay Nothing]]> - -The movement on the ball is determined by the upper and lower bound of -the field, by the left and right bound of the field and the position -of the paddles: - - Ball -moveBall g - = Ball (x+factor*newXDir,y+factor*newYDir) newXDir newYDir - where - newXDir - | x-ballRadius <= xl+paddleWidth - && y+ballRadius >=yl - && y <=yl+paddleHeight - = -xDir - |x <= _LEFT-ballRadius = 0 - | x+ballRadius >= xr - && y+ballRadius >=yr - && y <=yr+paddleHeight - = -xDir - |x >= _RIGHT+ballRadius = 0 - |otherwise = xDir - newYDir - |y > _TOP-ballRadius || y< _BOTTOM+ballRadius = -yDir - |newXDir == 0 = 0 - |otherwise = yDir - (Ball (x,y) xDir yDir) = ball g - factor = moveFactor g - (xl,yl,_) = leftP g - (xr,yr,_) = rightP g]]> - -A paddle moves only on the y-axis. We just need to ensure that it -does not leaves the field. There are maximum and minimum values for y: - - GLfloat -> Paddle -movePaddle (x,y,dir) factor = - let y1 = y+ factor*dir - newY = min (_TOP-paddleHeight) $max _BOTTOM y1 - in (x,newY,dir)]]> - -The keyboard function: key 'a' moves the left paddle, key 'l' the -right paddle and the space key gets a new ball: - - KeyboardMouseCallback -keyboard game (Char 'a') upDown _ _ = do - g <- get game - let (x,y,_) = leftP g - game $= g{leftP=(x,y,paddleDir upDown)} -keyboard game (Char 'l') upDown _ _ = do - g <- get game - let (x,y,_) = rightP g - game $= g{rightP=(x,y,paddleDir upDown)} -keyboard game (Char '\32') Down _ _ = do - g <- get game - let Ball (x,y) xD _yD = ball g - let xDir - |x<=_LEFT+3*paddleWidth = _INITIAL_BALL_DIR - |x>=_RIGHT-3*paddleWidth = - _INITIAL_BALL_DIR - |otherwise = xD - if (xD==0) - then game$=g{ball=Ball (x+4*xDir,y) xDir _INITIAL_BALL_DIR} - else return () -keyboard _ _ _ _ _ = return () - -paddleDir :: KeyState -> GLfloat -paddleDir Down = _INITIAL_PADDLE_DIR -paddleDir Up = -_INITIAL_PADDLE_DIR]]> - -Finally we define the visual part of the screen. The movement factor -of the ball depends on the width of the screen: - - ReshapeCallback -reshape game s@(Size w _) = do - viewport $= (Position 0 0, s) - matrixMode $= Projection - loadIdentity - ortho (-2.0) 1.0 (-1.0) 1.0 (-1.0) 1.0 - matrixMode $= Modelview 0 - g <- get game - game$=g{moveFactor=fromIntegral w/fromIntegral _INITIAL_WIDTH}]]> - -Have a break and play Pong. - -
- - - -
- - -Up to now everything was pretty boring. We never considered the three -dimensional space provided by OpenGL. Strictly we just considered two -dimensions. Thus the library was not any more powerfull than any -simple graphics libaray e.g.like Java's java.awt.Graphics class. In this chapter we will explore the -true power of OpenGL by actually rendering three dimensional objects. - - -
-In a three dimensional space some objects will be in front of others -and hide them. We would expect to see only those areas which are not -hidden by areas closer to the viewer. - - - -We render two shapes. A red square which is closer to the viewer and a -blue circle which is farer away: - -import Graphics.UI.GLUT -import Squares -import Circle - -main :: IO () -main = do - (progName,_) <- getArgsAndInitialize - createWindow progName - displayCallback $= display - clearColor $= Color4 1 1 1 1 - mainLoop - -display :: DisplayCallback -display = do - clear [ColorBuffer,DepthBuffer] - loadIdentity - translate (Vector3 0 0 (-0.5::GLfloat)) - currentColor $= Color4 1 0 0 1 - square 1 - - loadIdentity - translate (Vector3 0.2 0.2 (0.5::GLfloat)) - currentColor $= Color4 0 0 1 1 - fillCircle 0.5 - flush -However as can be seen in figure , -the blue circle hides parts of the - red square. - - - - - -By default OpenGL does not take the depth into account. Shapes -rendered later hide -other shapes which were rendered earlier, neglecting the depth of the -shapes. OpenGL provides a mechanism for automatically considering the -depth of a shape. This simply needs to be activated. -Three steps need to be done: - -as -initial display mode Depth needs to be set. -a depth function -needs to be set. Usually the Less mode is used as function -here. This ensures that closer objects hide objects farer away. -the depth buffer needs to be cleared in the beginning of the -display function. - - - - -Now we render the same to shapes as in the example before, but the -depth machanism of OpenGL is activated. - - - -Now as can be seen in figure , the -red square hides parts of the blue circle. - - - - - -
- - - -
-In the real world objects closer to the viewer appear larger than -objects farer away from the viewer. Up to now we only learnt how to -set up an orthographic projection. In an orthographic projection -objects farer away have the same size as object close to the viewer. - - -We can test the orthographic projection. Two squares equally in size, -but in different distances from the viewer are rendered: - -import Graphics.UI.GLUT -import Squares - -main :: IO () -main = do - (progName,_) <- getArgsAndInitialize - initialDisplayMode $= [WithDepthBuffer] - createWindow progName - depthFunc $= Just Less - displayCallback $= display - - matrixMode $= Projection - loadIdentity - ortho (-5) 5 (-5) 5 (1) 40 - matrixMode $= Modelview 0 - - clearColor $= Color4 1 1 1 1 - mainLoop - -display :: DisplayCallback -display = do - clear [ColorBuffer,DepthBuffer] - loadIdentity - translate (Vector3 0 0 (-2::GLfloat)) - currentColor $= Color4 1 0 0 1 - square 1 - - loadIdentity - translate (Vector3 4 4 (-5::GLfloat)) - currentColor $= Color4 0 0 1 1 - square 1 - flush - -As can be seen in figure , the -two squares have the same size, even though the red one is closer to -the viewer. - - - - - -OpenGL provides the function frustum for specifying a -perspective projection. frustum has 6 arguments: - -left: left bound for the closest orthogonal plane -right: right bound for the closest orthogonal plane -top: upper bound for the closest orthogonal plane -bottom: lower bound for the closest orthogonal plane -near: the closest things that can be seen -far: the farest away things that can be seen - - -Figure illustrates these six values. - - - -Usually you will have negated values for top/botton and left/right. - - -Now we render the two squares from the previous example again. This -time we use a perspective projection: -import Graphics.UI.GLUT - -import Squares - -main :: IO () -main = do - (progName,_) <- getArgsAndInitialize - initialDisplayMode $= [WithDepthBuffer] - createWindow progName - depthFunc $= Just Less - displayCallback $= display - - matrixMode $= Projection - loadIdentity - let near = 1 - far = 40 - right = 1 - top = 1 - frustum (-right) right (-top) top near far - matrixMode $= Modelview 0 - - clearColor $= Color4 1 1 1 1 - mainLoop - -display :: DisplayCallback -display = do - clear [ColorBuffer,DepthBuffer] - loadIdentity - translate (Vector3 0 0 (-2::GLfloat)) - currentColor $= Color4 1 0 0 1 - square 1 - - loadIdentity - translate (Vector3 4 4 (-5::GLfloat)) - currentColor $= Color4 0 0 1 1 - square 1 - flush - - -Now, as can be seen in figure , the -blue square appears to be smaller than the red square. - - - - - -HopenGL provides a second function to define a perspective -projection: perspective. Here instead of left, right, top, -bottom an angle between the top/bottom ray and the width of the -closest plane can be specified. - -Figure illustrates these values. - - - - -
- -
-In the previous section we have learnt that there is a second way how -to project the three dimensional space onto the two dimensional area -of the screen. We did however not yet specify, where in the three -dimensional space the viewer is situated and in what direction they -are looking. In order to define this, OpenGL provides the -function lookAt. It has three arguments: - -the point, where the viewer is situated. -the point at which the viewer is looking. -and a vector, which specifies the direction which is to be up -for the viewer. - - - -The point of view, where we are looking from is interesting, when we - change it. In the following a module is defined, which allows -the viewer to move along a sphere. The -point of view can be set for a given sphere position. The position is -specified by two angles and a radius. The first angle defines which -way to move around the x-axis the second angle, which angle to move - around the y-axis. The radius defines the distance from the origin. -The position can be changed through keyboard events. - - - IO () -setPointOfView pPos = do - (alpha,beta,r) <- get pPos - let - (x,y,z) = calculatePointOfView alpha beta r - (x2,y2,z2) = calculatePointOfView ((alpha+90)`mod` 360) beta r - lookAt (Vertex3 x y z) (Vertex3 0 0 0) (Vector3 x2 y2 z2) - -calculatePointOfView :: Int -> Int -> GLdouble -> (GLdouble,GLdouble,GLdouble) -calculatePointOfView alp bet r = - let alpha = fromIntegral alp * 2 * pi / 360 - beta = fromIntegral bet * 2 * pi / 360 - y = r * cos alpha - u = r * sin alpha - x = u * cos beta - z = u * sin beta - in (x,y,z) - -keyForPos :: IORef (Int,Int,GLdouble) -> Key -> IO () -keyForPos pPos (Char '+') = modPos pPos (id,id,\x->x-0.1) -keyForPos pPos (Char '-') = modPos pPos (id,id,(+)0.1) -keyForPos pPos (SpecialKey KeyLeft) = modPos pPos (id,(+)359,id) -keyForPos pPos (SpecialKey KeyRight)= modPos pPos (id,(+)1,id) -keyForPos pPos (SpecialKey KeyUp) = modPos pPos ((+)1,id,id) -keyForPos pPos (SpecialKey KeyDown) = modPos pPos ((+)359,id,id) -keyForPos _ _ = return () - -modPos :: IORef (Int,Int,GLdouble) -> (Int -> Int, Int -> Int, GLdouble -> GLdouble) -> IO () -modPos pPos (ffst,fsnd,ftrd) = do - (alpha,beta,r) <- get pPos - pPos $= (ffst alpha `mod` 360,fsnd beta `mod` 360,ftrd r) - postRedisplay Nothing - -reshape :: ReshapeCallback -reshape s@(Size w h) = do - viewport $= (Position 0 0, s) - matrixMode $= Projection - loadIdentity - let near = 0.001 - far = 40 - fov = 90 - ang = (fov*pi)/(360) - top = near / ( cos(ang) / sin(ang) ) - aspect = fromIntegral(w)/fromIntegral(h) - right = top*aspect - frustum (-right) right (-top) top near far - matrixMode $= Modelview 0]]> - - -Let us use the module above, to orbit around a cube. Therefore we a define -simple module, which renders a cube with differently colored areas. The cube is -situated at the origin. We render the six areas by rendering a square at the -origin and translate and rotate it into its final position. - -module ColorCube where -import Graphics.UI.GLUT -import Squares - -colorCube :: GLfloat -> IO () -colorCube n = do - preservingMatrix $ do - currentColor $= Color4 1 0 0 1 - translate $ Vector3 0 0 (-n/2) - square n - preservingMatrix $ do - currentColor $= Color4 0 1 0 1 - translate $ Vector3 0 0 (n/2) - square n - preservingMatrix $ do - currentColor $= Color4 0 0 1 1 - translate $ Vector3 (n/2) 0 0 - rotate 90 $ Vector3 0 (1::GLfloat) 0 - square n - preservingMatrix $ do - currentColor $= Color4 1 1 0 1 - translate $ Vector3 (-n/2) 0 0 - rotate 90 $ Vector3 0 (1::GLfloat) 0 - square n - preservingMatrix $ do - currentColor $= Color4 0 1 1 1 - translate $ Vector3 0 (-n/2) 0 - rotate 90 $ Vector3 (1::GLfloat) 0 0 - square n - preservingMatrix $ do - currentColor $= Color4 1 1 1 1 - translate $ Vector3 0 (n/2) 0 - rotate 90 $ Vector3 (1::GLfloat) 0 0 - square n - -The following program allows to use the cursor keys to move around a cube at the -origin: - -import Data.IORef -import Graphics.UI.GLUT -import OrbitPointOfView -import ColorCube - -main :: IO () -main = do - (progName,_) <- getArgsAndInitialize - initialDisplayMode $= [WithDepthBuffer,DoubleBuffered] - createWindow progName - depthFunc $= Just Less - - pPos <- newIORef (90, 270, 2) - keyboardMouseCallback $= Just (keyboard pPos) - - displayCallback $= display pPos - reshapeCallback $= Just reshape - mainLoop - -The display function sets the viewer's position before rendering the cube: - -display :: IORef (Int,Int,GLdouble) -> DisplayCallback -display pPos = do - loadIdentity - setPointOfView pPos - clear [ColorBuffer,DepthBuffer] - colorCube 1 - swapBuffers - -The keyboard function is directly mapped to the function defined in -OrbitPointOfView. - - KeyboardMouseCallback -]]>keyboard pPos c _ _ _ = keyForPos pPos c - -An example how the colored cube can now be seen - is given in figure -. - - - - -
- - -
-In this section we implement a primitive version of Rubik's cube. - - -Rubik's cube in action can be found in figure -. - - - - - -First of all we modell the logics of Rubic's CubeThere are certainly cleverer ways to do this, but I did not take the -time to think of them..

- -A data type is provided for representation of a cube: - -module RubikLogic where - -data Rubik a - = Rubik (Front a) (Top a) (Back a) (Bottom a) (Left a) (Right a) - -type Front a = Area a -type Top a = Area a -type Back a = Area a -type Bottom a = Area a -type Left a = Area a -type Right a = Area a - -type Area a = [Row a] -type Row a = [a] - -data AreaPosition = Front |Top| Back| Bottom| Left| Right - -data RubikColor = Red|Blue|Yellow|Green|Orange|White|Black - -We make the type Rubik an instance of the class Functor: - -instance Functor Rubik where - fmap f (Rubik front top back bottom left right) - = Rubik (mf front) (mf top) (mf back) - (mf bottom) (mf left) (mf right) - where - mf = map (map f) -The initial cube is defined -initCube :: Rubik RubikColor -initCube = Rubik (area Red) (area Blue) (area Yellow) - (area Green)(area Orange)(area White) - -area :: RubikColor -> Area RubikColor -area c = [[c,c,c],[c,c,c],[c,c,c]] - -The main operation on a cube is to turn one of its six sides. The -function rotateArea specifies, how this effects a cube. - -rotateArea :: AreaPosition -> Rubik RubikColor -> Rubik RubikColor -rotateArea RubikLogic.Front - (Rubik front top back bottom left right) = - Rubik front' top' back bottom' left' right' - where - top' = newRow 3 (reverse$column 3 left) top - bottom' = newRow 1 (reverse$column 1 right) bottom - left' = newColumn 3 (row 1 bottom) left - right' = newColumn 1 (row 3 top) right - front' = rotateBy3 front - -rotateArea RubikLogic.Back - (Rubik front top back bottom left right) = - Rubik front' top' back' bottom' - (rotateBy2 left') (rotateBy2 right') - where - (Rubik back' bottom' front' top' left' right') = - rotateArea RubikLogic.Front - (Rubik back bottom front top - (rotateBy2 left) (rotateBy2 right)) - -rotateArea RubikLogic.Bottom - (Rubik front top back bottom left right) = - Rubik front' top back' bottom' left' right' - where - back' = newRow 1 (reverse$row 3 left) back - front' = newRow 3 (row 3 right) front - left' = newRow 3 (row 3 front) left - right' = newRow 3 (reverse$row 1 back) right - bottom' = rotateBy1 bottom - - -rotateArea RubikLogic.Top - (Rubik front top back bottom left right) = - Rubik front' top' back' bottom left' right' - where - back' = newRow 3 (reverse$row 1 right) back - front' = newRow 1 (row 1 left) front - left' = newRow 1 (reverse$row 3 back) left - right' = newRow 1 (row 1 front) right - top' = rotateBy1 top - -rotateArea RubikLogic.Left - (Rubik front top back bottom left right) = - Rubik front' top' back' bottom' left' right - where - top' = newColumn 1 (column 1 front) top - bottom' = newColumn 1 (column 1 back) bottom - left' = rotateBy3 left - back' = newColumn 1 (column 1 top) back - front' = newColumn 1 (column 1 bottom) front - -rotateArea RubikLogic.Right - (Rubik front top back bottom left right) = - Rubik front' top' back' bottom' left right' - where - top' = newColumn 3 (column 3 back) top - bottom' = newColumn 3 (column 3 front) bottom - right' = rotateBy3 right - back' = newColumn 3 (column 3 bottom) back - front' = newColumn 3 (column 3 top) front - -rotateBy1, rotateBy2, rotateBy3 :: Area a -> Area a -rotateBy1 - [[x1,x2,x3] - ,[x8,x,x4] - ,[x7,x6,x5]] = - [[x3,x4,x5] - ,[x2,x,x6] - ,[x1,x8,x7]] -rotateBy1 _ = error "rotateBy1: should not happen" - -rotateBy2 = rotateBy1 .rotateBy1 -rotateBy3 = rotateBy2 .rotateBy1 - -Finally some useful functions for manipulation of an area are given. - -column :: Int -> Area a -> Row a -column n = map (\row_ -> row_ !! (n-1)) - -row :: Int -> Area a -> Row a -row n area_ = area_ !! (n-1) - -newRow :: Int -> Row a -> Area a -> Area a -newRow 1 row_ [_,r,ea] = [row_,r,ea] -newRow 2 row_ [a,_,ea] = [a,row_,ea] -newRow 3 row_ [a,r,_ ] = [a,r,row_] -newRow _ _ _ = error "newRow: should not happen" - -newColumn :: Int -> Row a -> Area a -> Area a -newColumn n column_ area_ = map (doIt n) areaC - where - areaC = zip area_ column_ - doIt 1 ((_:ow),c) = c:ow - doIt 2 ((r:_:w),c) = r:c:w - doIt 3 ((r:o:_:xs),c) = r:o:c:xs - doIt _ _ = error "doIt: should not happen" - - - - -We have a logical model of a cube. Now we can render this in a coordinate -system. In an earlier section we already provided a function to render one -single side. We simply need to render the six sides and move them to the correct -position. - - IO () -renderCube (Rubik front top back bottom left right) = do - render RubikLogic.Top top - render RubikLogic.Back back - render RubikLogic.Front front - render RubikLogic.Bottom bottom - render RubikLogic.Left left - render RubikLogic.Right right - -render :: AreaPosition -> [[Color4 GLfloat]] -> IO () -render Top cs = preservingMatrix $ do - translate $ Vector3 (1.5 * _FIELD_WIDTH) 0 0 - rotate 90 $ Vector3 0 1 (0 :: GLfloat) - renderCubeSide cs - -render RubikLogic.Back cs = preservingMatrix $ do - translate $ Vector3 0 0 (-1.5 * _FIELD_WIDTH) - rotate 180 $ Vector3 0 0 (1 :: GLfloat) - rotate 180 $ Vector3 1 0 (0 :: GLfloat) - renderCubeSide cs - -render Bottom cs = preservingMatrix $ do - translate $ Vector3 (-1.5 * _FIELD_WIDTH) 0 0 - rotate 270 $ Vector3 0 1 (0::GLfloat) - renderCubeSide cs - -render RubikLogic.Front cs = preservingMatrix $ do - translate $ Vector3 0 0 (1.5 * _FIELD_WIDTH) - renderCubeSide cs - -render RubikLogic.Left cs = preservingMatrix $ do - translate $ Vector3 0 (1.5 * _FIELD_WIDTH) 0 - rotate 270 $ Vector3 1 0 (0 :: GLfloat) - renderCubeSide cs - -render RubikLogic.Right cs = preservingMatrix $ do - translate $ Vector3 0 (-1.5*_FIELD_WIDTH) 0 - rotate 270 $ Vector3 1 0 (0 :: GLfloat) - rotate 180 $ Vector3 1 0 (0 :: GLfloat) - renderCubeSide cs - -renderCubeSide :: [[Color4 GLfloat]] -> IO () -renderCubeSide css = renderArea _FIELD_WIDTH css - -field :: IO () -field = square _FIELD_WIDTH]]> - -The following function maps our abstract color type to concrete OpenGL -colors: - -doColor :: RubikColor -> Color4 GLfloat -doColor Red = Color4 1 0 0 1 -doColor Green = Color4 0 1 0 1 -doColor Blue = Color4 0 0 1 1 -doColor Yellow = Color4 1 1 0 1 -doColor Orange = Color4 1 0.5 0.5 1 -doColor White = Color4 1 1 1 1 -doColor Black = Color4 0 0 0 1 - - - - -Finally we can create a simple application. - - IORef (Rubik RubikColor) -> DisplayCallback -display pPos pCube = do - clearColor $= Color4 1 1 1 1 - clear [ColorBuffer,DepthBuffer] - loadIdentity - setPointOfView pPos - cube <- get pCube - renderCube$fmap doColor cube - swapBuffers - -keyboard :: IORef (Int, Int, GLdouble) -> IORef (Rubik RubikColor) -> KeyboardMouseCallback -keyboard _ pCube (Char '1') Down _ _ - = rot pCube RubikLogic.Top -keyboard _ pCube (Char '2') Down _ _ - = rot pCube RubikLogic.Bottom -keyboard _ pCube (Char '3') Down _ _ - = rot pCube RubikLogic.Front -keyboard _ pCube (Char '4') Down _ _ - = rot pCube RubikLogic.Back -keyboard _ pCube (Char '5') Down _ _ - = rot pCube RubikLogic.Left -keyboard _ pCube (Char '6') Down _ _ - = rot pCube RubikLogic.Right -keyboard pPos _ c _ _ _ - = keyForPos pPos c - -rot :: IORef (Rubik RubikColor) -> AreaPosition -> IO () -rot pCube p = do - cube <- get pCube - pCube $= rotateArea p cube - postRedisplay Nothing]]> - - -

- -
-Let us begin with a simple 3-dimensional shape: a cube. -A cube has six squares which we can render as the primitive -shape Quad. - - IO () -cube l = renderAs Quads corners - where - corners = - [(l,0,l),(0,0,l),(0,l,l),(l,l,l) - ,(l,l,l),(l,l,0),(l,0,0),(l,0,l) - ,(0,0,0),(l,0,0),(l,0,l),(0,0,l) - ,(l,l,0),(0,l,0),(0,0,0),(l,0,0) - ,(0,l,l),(l,l,l),(l,l,0),(0,l,0) - ,(0,l,l),(0,l,0),(0,0,0),(0,0,l) - ]]]> - - - -We make a first try at rendering a cube: - - - -The resulting window can be found in figure -. It is not very exiting, we see a white -shape, which has the outline of a cube, but do not get the three -dimensional visual effect of a cube. - - - - - -For rendering three dimensional objects it is not enough to specifiy -their shapes and your viewing position. Crucial is the way the objects -are illuminated. In order to get a three dimensional viesual effect on -your two dimensional computer screen, it needs to be defined what kind -of light source lights the object.

- -A light source can be specified fairly easy. First you need to set the -state variable lighting to the value Enabled. Then -you need to specify the position of your light source. This can -be done by setting a special position state variable, -e.g. by
-position (Light 0) $= Vertex4 0.8 0 3.0 5.0.
-And finally you need to turn the light source on by setting its state -variable to enabled: light (Light 0) $= Enabled. - -Now we can render a cube with a defined light source: - - - -The resulting window can be found in figure -. Now we can identify a bit more the cube. - - - - -You might wonder, why the vertex for the light source position has -four parameters. The forth parameter is a value by which the other -three (the x, y, z coordinates) get divided. - - - - - - - - -Let us render some cute object: Tux the penguin. We will roughly use the data -from the OpenGL -game tuxracer. -The nice thing about a penguin is, that you can built it almost completely out -of spheres. We will render Tux simply by rendering spheres, which are scaled -to different forms and moved to the correct position. - - - - -The main display function clears the necessary buffers and calls the main -function for rendering the penguin Tux. - - - - - - -We will use some auxilliary functions. First of all a function, which renders a -scaled sphere. - - GLfloat -> GLfloat -> IO () -scal x y z = scale x y z]]> - -Furthermore some functions for easy translate and rotate transformations: - - GLfloat -> GLfloat -> IO () -transl x y z = translate (Vector3 x y z) - -rota:: GLfloat -> GLfloat -> GLfloat -> GLfloat -> IO () -rota a x y z = rotate a (Vector3 x y z) - -rotateZ a = rota a 0 0 1 -rotateY a = rota a 0 1 0 -rotateX a = rota a 1 0 0]]> -And eventually some functions to set the material properties for the different -parts of a penguin. - - - - - -The neck and torso of a penguin are almost black spheres with some white front -parts. We will modell such figures by setting s white sphere in front of a -black sphere. - - - -The resulting image can be found in figure -. - - - - -Torso and shoulders are scaled body parts: - - - -The resulting image for torso and shoulders -can be found in figure -. - - - - - - - - - - - - - - - - - - - - - - -The resulting image can be found in figure -. - - - - - - - - - - -We can use all the parts to define Tux. - - - - -The resulting window can be found in figure -. - - - - - -

-
- - - - - - -
rmfile ./GLUT/doc/tutorial.xml rmdir ./GLUT/doc hunk ./GLUT/cbits/HsGLUT.c 1 -/* ----------------------------------------------------------------------------- - * - * Module : C support for Graphics.UI.GLUT.Fonts - * Copyright : (c) Sven Panne 2002-2005 - * License : BSD-style (see the file libraries/GLUT/LICENSE) - * - * Maintainer : sven.panne@aedion.de - * Stability : provisional - * Portability : portable - * - * -------------------------------------------------------------------------- */ - -#include "HsGLUT.h" - -/* needed only for GLUT_GET_PROC_ADDRESS_IS_BROKEN */ -#include "HsGLUTConfig.h" - -#if (FREEGLUT || GLUT_API_VERSION >= 5) && GLUT_GET_PROC_ADDRESS_IS_BROKEN -#include -#endif - -void* -hs_GLUT_marshalBitmapFont(int fontID) -{ - switch (fontID) { - case 0 : return GLUT_BITMAP_8_BY_13; - case 1 : return GLUT_BITMAP_9_BY_15; - case 2 : return GLUT_BITMAP_TIMES_ROMAN_10; - case 3 : return GLUT_BITMAP_TIMES_ROMAN_24; - case 4 : return GLUT_BITMAP_HELVETICA_10; - case 5 : return GLUT_BITMAP_HELVETICA_12; - case 6 : return GLUT_BITMAP_HELVETICA_18; - } - return (void*)0; -} - -void* -hs_GLUT_marshalStrokeFont(int fontID) -{ - switch (fontID) { - case 0 : return GLUT_STROKE_ROMAN; - case 1 : return GLUT_STROKE_MONO_ROMAN; - } - return (void*)0; -} - -/* procName is really a const char*, but currently we can't specify this in - Haskell's FFI and consequently get a warning from the C compiler. */ -void* -hs_GLUT_getProcAddress(char *procName) -{ -#if (FREEGLUT || GLUT_API_VERSION >= 5) -#if GLUT_GET_PROC_ADDRESS_IS_BROKEN - /* There are a few typos/omissions in freeglut 2.20 */ - if (strcmp(procName, "glutWireCylinder" ) == 0) return (void*)glutWireCylinder; - if (strcmp(procName, "glutSolidCylinder" ) == 0) return (void*)glutSolidCylinder; - if (strcmp(procName, "glutWireSierpinskiSponge" ) == 0) return (void*)glutWireSierpinskiSponge; - if (strcmp(procName, "glutSolidSierpinskiSponge") == 0) return (void*)glutSolidSierpinskiSponge; -#endif - return glutGetProcAddress(procName); -#else - return (void*)0; -#endif -} rmfile ./GLUT/cbits/HsGLUT.c hunk ./GLUT/cbits/index.html 1 - - - - Index of /packages/GLUT/cbits - - -

Index of /packages/GLUT/cbits

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] HsGLUT.c 15-Nov-2006 02:07 1.9K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/cbits/index.html rmdir ./GLUT/cbits hunk ./GLUT/Graphics/UI/index.html 1 - - - - Index of /packages/GLUT/Graphics/UI - - -

Index of /packages/GLUT/Graphics/UI

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[TXT] GLUT.hs 15-Nov-2006 02:07 17K -[DIR] GLUT/ 19-Apr-2009 13:43 - -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/Graphics/UI/index.html rmdir ./GLUT/Graphics/UI hunk ./GLUT/Graphics/index.html 1 - - - - Index of /packages/GLUT/Graphics - - -

Index of /packages/GLUT/Graphics

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[DIR] UI/ 15-Nov-2006 02:07 - -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/Graphics/index.html rmdir ./GLUT/Graphics hunk ./GLUT/GLUT.buildinfo.in 1 --- @configure_input@ --- System-dependent values used by Distribution.Simple.defaultUserHooks --- -buildable: @BUILD_PACKAGE_BOOL@ -ghc-options: -DCALLCONV=@CALLCONV@ -cc-options: -DCALLCONV=@CALLCONV@ @GLUT_CFLAGS@ -ld-options: @GLUT_LIBS@ -frameworks: @GLUT_FRAMEWORKS@ rmfile ./GLUT/GLUT.buildinfo.in hunk ./GLUT/GLUT.cabal 1 -name: GLUT -version: 2.1.2.1 -license: BSD3 -license-file: LICENSE -maintainer: Sven Panne -bug-reports: mailto:hopengl@haskell.org -homepage: http://www.haskell.org/HOpenGL/ -category: Graphics -synopsis: A binding for the OpenGL Utility Toolkit -description: - A Haskell binding for the OpenGL Utility Toolkit, a window - system independent toolkit for writing OpenGL programs. For more - information about the C library on which this binding is based, - please see: . -build-type: Configure -cabal-version: >=1.2 -extra-source-files: - GLUT.buildinfo.in - README - aclocal.m4 - config.guess - config.sub - configure - configure.ac - examples/BOGLGP/Chapter01/OnYourOwn1.hs - examples/BOGLGP/Chapter01/Simple.hs - examples/BOGLGP/Chapter02/OnYourOwn1.hs - examples/BOGLGP/Chapter02/OpenGLApplication.hs - examples/BOGLGP/Chapter03/Lines.hs - examples/BOGLGP/Chapter03/OnYourOwn1.hs - examples/BOGLGP/Chapter03/Points.hs - examples/BOGLGP/Chapter03/Polygons.hs - examples/BOGLGP/Chapter03/TrianglesQuads.hs - examples/Misc/ARBOcclude.hs - examples/Misc/ExtractContours.hs - examples/Misc/Gears.hs - examples/Misc/Pitfall14.hs - examples/Misc/Triangulate.hs - examples/OrangeBook/3Dlabs-License.txt - examples/OrangeBook/ogl2brick/Brick.frag - examples/OrangeBook/ogl2brick/Brick.hs - examples/OrangeBook/ogl2brick/Brick.vert - examples/RedBook/00-README - examples/RedBook/AAIndex.hs - examples/RedBook/AARGB.hs - examples/RedBook/AccAnti.hs - examples/RedBook/AccPersp.hs - examples/RedBook/Alpha.hs - examples/RedBook/Alpha3D.hs - examples/RedBook/BezCurve.hs - examples/RedBook/BezMesh.hs - examples/RedBook/BezSurf.hs - examples/RedBook/BlendEqn.hs - examples/RedBook/Checker.hs - examples/RedBook/Clip.hs - examples/RedBook/ColorMat.hs - examples/RedBook/ColorMatrix.hs - examples/RedBook/ColorTable.hs - examples/RedBook/Combiner.hs - examples/RedBook/Convolution.hs - examples/RedBook/Cube.hs - examples/RedBook/CubeMap.hs - examples/RedBook/DList.hs - examples/RedBook/DOF.hs - examples/RedBook/Data/leeds.bin - examples/RedBook/Double.hs - examples/RedBook/DrawF.hs - examples/RedBook/Feedback.hs - examples/RedBook/Fog.hs - examples/RedBook/FogCoord.hs - examples/RedBook/FogIndex.hs - examples/RedBook/Font.hs - examples/RedBook/Hello.hs - examples/RedBook/Histogram.hs - examples/RedBook/Image.hs - examples/RedBook/Light.hs - examples/RedBook/Lines.hs - examples/RedBook/MVArray.hs - examples/RedBook/Material.hs - examples/RedBook/Minmax.hs - examples/RedBook/Mipmap.hs - examples/RedBook/Model.hs - examples/RedBook/MoveLight.hs - examples/RedBook/MultiTex.hs - examples/RedBook/Multisamp.hs - examples/RedBook/PickDepth.hs - examples/RedBook/PickSquare.hs - examples/RedBook/Planet.hs - examples/RedBook/PointP.hs - examples/RedBook/PolyOff.hs - examples/RedBook/Polys.hs - examples/RedBook/Quadric.hs - examples/RedBook/ReadImage.hs - examples/RedBook/Robot.hs - examples/RedBook/Scene.hs - examples/RedBook/Select.hs - examples/RedBook/ShadowMap.hs - examples/RedBook/Smooth.hs - examples/RedBook/Stencil.hs - examples/RedBook/Stroke.hs - examples/RedBook/SurfPoints.hs - examples/RedBook/Surface.hs - examples/RedBook/Teapots.hs - examples/RedBook/Tess.hs - examples/RedBook/TessWind.hs - examples/RedBook/TexBind.hs - examples/RedBook/TexGen.hs - examples/RedBook/TexProx.hs - examples/RedBook/TexSub.hs - examples/RedBook/Texture3D.hs - examples/RedBook/TextureSurf.hs - examples/RedBook/Torus.hs - examples/RedBook/Trim.hs - examples/RedBook/UnProject.hs - examples/RedBook/VArray.hs - examples/RedBook/Wrap.hs - include/HsGLUT.h.in - include/HsGLUTConfig.h.in - include/HsGLUTExt.h - install-sh -extra-tmp-files: - config.log config.status autom4te.cache - GLUT.buildinfo include/HsGLUTConfig.h include/HsGLUT.h - -flag split-base - -library - exposed-modules: - Graphics.UI.GLUT, - Graphics.UI.GLUT.Begin, - Graphics.UI.GLUT.Callbacks, - Graphics.UI.GLUT.Callbacks.Global, - Graphics.UI.GLUT.Callbacks.Window, - Graphics.UI.GLUT.Colormap, - Graphics.UI.GLUT.Debugging, - Graphics.UI.GLUT.DeviceControl, - Graphics.UI.GLUT.Fonts, - Graphics.UI.GLUT.GameMode, - Graphics.UI.GLUT.Initialization, - Graphics.UI.GLUT.Menu, - Graphics.UI.GLUT.Objects, - Graphics.UI.GLUT.Overlay, - Graphics.UI.GLUT.State, - Graphics.UI.GLUT.Window - other-modules: - Graphics.UI.GLUT.Callbacks.Registration, - Graphics.UI.GLUT.Constants, - Graphics.UI.GLUT.Extensions, - Graphics.UI.GLUT.QueryUtils, - Graphics.UI.GLUT.Types - include-dirs: include - includes: HsGLUT.h - install-includes: HsGLUT.h - c-sources: cbits/HsGLUT.c - if flag(split-base) - build-depends: base >= 3, array, containers - else - build-depends: base < 3 - build-depends: OpenGL >= 2.2 - extensions: CPP, ForeignFunctionInterface rmfile ./GLUT/GLUT.cabal hunk ./GLUT/LICENSE 1 -Copyright (c) 2002-2005, Sven Panne -All rights reserved. - -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are met: - -1. Redistributions of source code must retain the above copyright notice, - this list of conditions and the following disclaimer. - -2. Redistributions in binary form must reproduce the above copyright - notice, this list of conditions and the following disclaimer in the - documentation and/or other materials provided with the distribution. - -3. Neither the name of the author nor the names of its contributors may be - used to endorse or promote products derived from this software without - specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE -LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR -CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF -SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS -INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN -CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) -ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE -POSSIBILITY OF SUCH DAMAGE. rmfile ./GLUT/LICENSE hunk ./GLUT/README 1 -To build this package using Cabal directly from darcs, you must run -"autoreconf" before the usual Cabal build steps (configure/build/install). -autoreconf is included in the GNU autoconf tools. There is no need to run -the "configure" script: the "setup configure" step will do this for you. rmfile ./GLUT/README hunk ./GLUT/Setup.hs 1 -module Main (main) where - -import Distribution.Simple - -main :: IO () -main = defaultMainWithHooks autoconfUserHooks rmfile ./GLUT/Setup.hs hunk ./GLUT/aclocal.m4 1 -# Extra autoconf macros for the Glasgow fptools -# -# To be a good autoconf citizen, names of local macros have prefixed with FP_ to -# ensure we don't clash with any pre-supplied autoconf ones. - -dnl ** Map an arithmetic C type to a Haskell type. -dnl Based on autconf's AC_CHECK_SIZEOF. - -dnl FPTOOLS_CHECK_HTYPE(TYPE [, DEFAULT_VALUE, [, VALUE-FOR-CROSS-COMPILATION]) -AC_DEFUN([FPTOOLS_CHECK_HTYPE], -[changequote(<<, >>)dnl -dnl The name to #define. -define(<>, translit(htype_$1, [a-z *], [A-Z_P]))dnl -dnl The cache variable name. -define(<>, translit(fptools_cv_htype_$1, [ *], [_p]))dnl -define(<>, translit(fptools_cv_htype_sup_$1, [ *], [_p]))dnl -changequote([, ])dnl -AC_MSG_CHECKING(Haskell type for $1) -AC_CACHE_VAL(AC_CV_NAME, -[AC_CV_NAME_supported=yes -fp_check_htype_save_cppflags="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" -AC_RUN_IFELSE([AC_LANG_SOURCE([[#include -#include - -#if HAVE_SYS_TYPES_H -# include -#endif - -#if HAVE_UNISTD_H -# include -#endif - -#if HAVE_SYS_STAT_H -# include -#endif - -#if HAVE_FCNTL_H -# include -#endif - -#if HAVE_SIGNAL_H -# include -#endif - -#if HAVE_TIME_H -# include -#endif - -#if HAVE_TERMIOS_H -# include -#endif - -#if HAVE_STRING_H -# include -#endif - -#if HAVE_CTYPE_H -# include -#endif - -#if defined(HAVE_GL_GL_H) -# include -#elif defined(HAVE_OPENGL_GL_H) -# include -#endif - -#if defined(HAVE_AL_AL_H) -# include -#elif defined(HAVE_OPENAL_AL_H) -# include -#endif - -#if defined(HAVE_AL_ALC_H) -# include -#elif defined(HAVE_OPENAL_ALC_H) -# include -#endif - -#if HAVE_SYS_RESOURCE_H -# include -#endif - -typedef $1 testing; - -main() { - FILE *f=fopen("conftestval", "w"); - if (!f) exit(1); - if (((testing)((int)((testing)1.4))) == ((testing)1.4)) { - fprintf(f, "%s%d\n", - ((testing)(-1) < (testing)0) ? "Int" : "Word", - sizeof(testing)*8); - } else { - fprintf(f,"%s\n", - (sizeof(testing) > sizeof(double)) ? "LDouble" : - (sizeof(testing) == sizeof(double)) ? "Double" : "Float"); - } - fclose(f); - exit(0); -}]])],[AC_CV_NAME=`cat conftestval`], -[ifelse([$2], , [AC_CV_NAME=NotReallyAType; AC_CV_NAME_supported=no], [AC_CV_NAME=$2])], -[ifelse([$3], , [AC_CV_NAME=NotReallyATypeCross; AC_CV_NAME_supported=no], [AC_CV_NAME=$3])]) -CPPFLAGS="$fp_check_htype_save_cppflags"]) dnl -if test "$AC_CV_NAME_supported" = yes; then - AC_MSG_RESULT($AC_CV_NAME) - AC_DEFINE_UNQUOTED(AC_TYPE_NAME, $AC_CV_NAME, [Define to Haskell type for $1]) -else - AC_MSG_RESULT([not supported]) -fi -undefine([AC_TYPE_NAME])dnl -undefine([AC_CV_NAME])dnl -undefine([AC_CV_NAME_supported])dnl -]) - - -# FP_ARG_OPENGL -# ------------- -AC_DEFUN([FP_ARG_OPENGL], -[AC_ARG_ENABLE([opengl], - [AC_HELP_STRING([--enable-opengl], - [build a Haskell binding for OpenGL (GL/GLU). On Mac OS X, use - --enable-opengl=x11 to use X11 instead of the "native" libraries. - (default=autodetect)])], - [enable_opengl=$enableval], - [enable_opengl=yes]) -])# FP_ARG_OPENGL - - -# FP_ARG_GLUT -# ------------- -AC_DEFUN([FP_ARG_GLUT], -[AC_REQUIRE([FP_ARG_OPENGL]) -AC_ARG_ENABLE([glut], - [AC_HELP_STRING([--enable-glut], - [build a Haskell binding for GLUT (default=autodetect)])], - [enable_glut=$enableval], - [enable_glut=yes]) -])# FP_ARG_GLUT - - -# FP_CHECK_QUARTZ_OPENGL -# ---------------------- -AC_DEFUN([FP_CHECK_QUARTZ_OPENGL], -[AC_REQUIRE([FP_ARG_OPENGL]) -AC_REQUIRE([AC_CANONICAL_TARGET]) - -use_quartz_opengl=no -if test x"$enable_opengl" = xyes; then - case $target_os in - darwin*) - AC_DEFINE([USE_QUARTZ_OPENGL], [1], - [Define to 1 if native OpenGL should be used on Mac OS X]) - use_quartz_opengl=yes - ;; - esac -fi - -GLU_FRAMEWORKS= -GLUT_FRAMEWORKS= -GLUT_EXTRA_LIBS= -if test x"$use_quartz_opengl" = xyes; then - GLU_FRAMEWORKS=OpenGL - GLUT_FRAMEWORKS=GLUT - GLUT_EXTRA_LIBS=objc -fi -AC_SUBST([GLU_FRAMEWORKS]) -AC_SUBST([GLUT_FRAMEWORKS]) -AC_SUBST([GLUT_EXTRA_LIBS]) -])# FP_CHECK_QUARTZ_OPENGL - - -# FP_CHECK_WIN32 -# -------------- -# If Windows is the target platform (e.g. MinGW/MSYS or Cygwin with -# -mno-cygwin), the variable "fp_is_win32" is set to "yes", otherwise (e.g. *nix -# systems or plain Cygwin) it is set to "no". -AC_DEFUN([FP_CHECK_WIN32], -[AC_CACHE_CHECK([for Windows environment], [fp_cv_is_win32], - [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [ -#if !_WIN32 - syntax error; -#endif -])], [fp_cv_is_win32=yes], [fp_cv_is_win32=no])]) -fp_is_win32="$fp_cv_is_win32"[]dnl -])# FP_CHECK_WIN32 - - -# FP_PATH_XTRA -# ------------ -# Same as AC_PATH_XTRA, but works even for broken Cygwins which try to include -# the non-existant header when -mno-cygwin is used. -AC_DEFUN([FP_PATH_XTRA], -[AC_REQUIRE([FP_CHECK_WIN32]) -if test x"$fp_is_win32" = xyes; then - no_x=yes -else - AC_PATH_XTRA -fi -])# FP_PATH_XTRA - - -# FP_CHECK_GL_HELPER(LIBNAME, LIBS, INCLUDES, FUNCTION-BODY) -# ---------------------------------------------------------- -# Try each library in LIBS to successfully link INCLUDES plus FUNCTION-BODY, -# setting LIBNAME_CFLAGS and LIBNAME_LIBS to the corresponding values. Sets -# no_LIBNAME to "yes" if no suitable library was found. (LIBNAME_CFLAGS0 -# contains the value of LIBNAME_CFLAGS without CPPFLAGS, and LIBNAME_LIBS0 -# contains the value of LIBNAME_LIBS without LDFLAGS, but these are only -# used internally.) -AC_DEFUN([FP_CHECK_GL_HELPER], -[AC_CACHE_CHECK([for $1 library], [fp_cv_check_$1_lib], - [fp_cv_check_$1_lib="no" - fp_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS ${$1_CFLAGS}" - fp_save_LIBS="$LIBS" - for fp_try_lib in $2; do - # transform "-lfoo" to "foo.lib" when using cl - if test x"$CC" = xcl; then - fp_try_lib=`echo $fp_try_lib | sed -e 's/^-l//' -e 's/$/.lib/'` - fi - LIBS="$fp_try_lib ${$1_LIBS} $fp_save_LIBS" - AC_LINK_IFELSE([AC_LANG_PROGRAM([$3], [$4])], [fp_cv_check_$1_lib="$fp_try_lib ${$1_LIBS}"; break]) - done - LIBS="$fp_save_LIBS" - CPPFLAGS="$fp_save_CPPFLAGS"]) - - if test x"$fp_cv_check_$1_lib" = xno; then - no_$1=yes - $1_CFLAGS= - $1_LIBS= - else - $1_CFLAGS0="${$1_CFLAGS}" - $1_CFLAGS="$CPPFLAGS ${$1_CFLAGS0}" - $1_LIBS0="$fp_cv_check_$1_lib" - $1_LIBS="$LDFLAGS ${$1_LIBS0}" - fi -])# FP_CHECK_GL_HELPER - - -# FP_CHECK_GL -# ----------- -AC_DEFUN([FP_CHECK_GL], -[AC_REQUIRE([FP_PATH_XTRA]) -AC_REQUIRE([FP_CHECK_QUARTZ_OPENGL]) -AC_REQUIRE([FP_CHECK_WIN32]) - -if test x"$use_quartz_opengl" = xno; then - AC_CHECK_FUNC(atan,[fp_libm_not_needed=yes],[fp_libm_not_needed=dunno]) - if test x"$fp_libm_not_needed" = xdunno; then - AC_CHECK_LIB([m], [atan], [GL_LIBS="-lm $GL_LIBS"]) - fi - - if test x"$no_x" != xyes; then - test -n "$x_includes" && GL_CFLAGS="-I$x_includes $GL_CFLAGS" - test -n "$x_libraries" && GL_LIBS="-L$x_libraries -lX11 $GL_LIBS" - fi - - FP_CHECK_GL_HELPER([GL], [-lGL -lopengl32], [@%:@include ], [glEnd()]) - - if test x"$fp_is_win32" = xyes; then - # Ugly: To get wglGetProcAddress on Windows, we have to link with - # opengl32.dll, too, even when we are using Cygwin with X11. - case "$GL_LIBS" in - *-lopengl32*|*opengl32.lib*) ;; - *) fp_save_LIBS="$LIBS" - LIBS="$LIBS -lopengl32" - AC_LINK_IFELSE([AC_LANG_PROGRAM([[@%:@include ]], [[glEnd()]])], - [GL_LIBS="$GL_LIBS -lopengl32"; GL_LIBS0="$GL_LIBS0 -lopengl32"]) - LIBS="$fp_save_LIBS" - ;; - esac - fi -fi -AC_SUBST([GL_CFLAGS]) -AC_SUBST([GL_LIBS]) -])# FP_CHECK_GL - - -# FP_CHECK_GLU -# ------------ -AC_DEFUN([FP_CHECK_GLU], -[AC_REQUIRE([FP_CHECK_GL])dnl -GLU_CFLAGS="$GL_CFLAGS0" -GLU_LIBS="$GL_LIBS0" - -if test x"$use_quartz_opengl" = xno; then - FP_CHECK_GL_HELPER([GLU], [-lglu32 -lGLU], [@%:@include ], [gluNewQuadric()]) -fi - -AC_SUBST([GLU_CFLAGS]) -AC_SUBST([GLU_LIBS]) -])# FP_CHECK_GLU - - -# FP_CHECK_GLUT -# ------------- -AC_DEFUN([FP_CHECK_GLUT], -[AC_REQUIRE([FP_CHECK_GLU]) -AC_REQUIRE([FP_CHECK_QUARTZ_OPENGL]) - -if test x"$use_quartz_opengl" = xno; then - GLUT_CFLAGS="$GLU_CFLAGS0" - GLUT_LIBS="$GLU_LIBS0" - - if test x"$no_x" != xyes; then - GLUT_LIBS="$X_PRE_LIBS -lXmu -lXi $X_EXTRA_LIBS $GLUT_LIBS" - fi - - AC_CHECK_HEADERS([windows.h]) - - fp_save_cppflags="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS $X_CFLAGS" - AC_CHECK_HEADERS([GL/glut.h]) - CPPFLAGS="$fp_save_cppflags" - - # Note 1: On Cygwin with X11, GL/GLU functions use the "normal" calling - # convention, but GLUT functions use stdcall. To get this right, it is - # necessary to include first. - # Note 2: MinGW/MSYS comes without a GLUT header, so we use Cygwin's one in - # that case. - FP_CHECK_GL_HELPER([GLUT], [-lglut32 -lglut], [ -#if HAVE_WINDOWS_H -#include -#endif -#if HAVE_GL_GLUT_H -#include -#else -#include "glut_local.h" -#endif - ], [glutMainLoop()]) -fi - -AC_SUBST([GLUT_CFLAGS]) -AC_SUBST([GLUT_LIBS]) -])# FP_CHECK_GLUT - - -# FP_ARG_COMPILER -# ------------- -AC_DEFUN([FP_ARG_COMPILER], -[AC_ARG_WITH([compiler], - [AC_HELP_STRING([--with-compiler@<:@=HC@:>@], - [use the given Haskell compiler (default=ghc)])], - [with_compiler=$withval], - [with_compiler=ghc]) -])# FP_ARG_COMPILER rmfile ./GLUT/aclocal.m4 hunk ./GLUT/config.guess 1 -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - -timestamp='2006-02-23' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner . -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# The plan is that this can be called by configure scripts if you -# don't specify an explicit build system type. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep __ELF__ >/dev/null - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerppc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:SunOS:5.*:*) - echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[45]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep __LP64__ >/dev/null - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - i*:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:MSYS_NT-*:*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - x86:Interix*:[345]*) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - EM64T:Interix*:[345]*) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - arm*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips - #undef mipsel - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mipsel - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef mips64 - #undef mips64el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=mips64el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=mips64 - #else - CPU= - #endif - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^CPU/{ - s: ::g - p - }'`" - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - # The BFD linker knows what the default object file format is, so - # first see if it will tell us. cd to the root directory to prevent - # problems with other programs or directories called `ld' in the path. - # Set LC_ALL=C to ensure ld outputs messages in English. - ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \ - | sed -ne '/supported targets:/!d - s/[ ][ ]*/ /g - s/.*supported targets: *// - s/ .*// - p'` - case "$ld_supported_targets" in - elf32-i386) - TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu" - ;; - a.out-i386-linux) - echo "${UNAME_MACHINE}-pc-linux-gnuaout" - exit ;; - coff-i386) - echo "${UNAME_MACHINE}-pc-linux-gnucoff" - exit ;; - "") - # Either a pre-BFD a.out linker (linux-gnuoldld) or - # one that does not give us useful --help. - echo "${UNAME_MACHINE}-pc-linux-gnuoldld" - exit ;; - esac - # Determine whether the default compiler is a.out or elf - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - #ifdef __ELF__ - # ifdef __GLIBC__ - # if __GLIBC__ >= 2 - LIBC=gnu - # else - LIBC=gnulibc1 - # endif - # else - LIBC=gnulibc1 - # endif - #else - #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__sun) - LIBC=gnu - #else - LIBC=gnuaout - #endif - #endif - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n ' - /^LIBC/{ - s: ::g - p - }'`" - test x"${LIBC}" != x && { - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit - } - test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; } - ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i386. - echo i386-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: rmfile ./GLUT/config.guess hunk ./GLUT/config.sub 1 -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. - -timestamp='2006-02-23' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 -Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32r | m32rle | m68000 | m68k | m88k | maxq | mb | microblaze | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | mt \ - | msp430 \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m32c) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - m32c-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16c) - basic_machine=cr16c-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: rmfile ./GLUT/config.sub hunk ./GLUT/configure.ac 1 -AC_INIT([Haskell GLUT package], [2.1.2.1], [sven.panne@aedion.de], [GLUT]) - -# Safety check: Ensure that we are in the correct source directory. -AC_CONFIG_SRCDIR([include/HsGLUT.h.in]) - -# The first file mentioned below will be generated by autoheader and contains -# defines which are needed during package build time only. The second header -# contains all kinds of stuff which is needed for using this package. -AC_CONFIG_HEADERS([include/HsGLUTConfig.h include/HsGLUT.h]) - -# Necessary for Cabal, which passes with --with-cc flag on Windows: -AC_ARG_WITH([cc], - [C compiler], - [CC=$withval]) -AC_PROG_CC() - -# we do not really care about this here, but this avoids a warning about an -# unknown option -FP_ARG_COMPILER - -# We set this to "yes" later when we have found GLUT libs and headers. -GLUT_BUILD_PACKAGE=no - -# Shall we build this package at all? -FP_ARG_GLUT - -if test x"$enable_glut" = xyes; then - -# Check for GLUT include paths and libraries -FP_CHECK_GLUT - -if test "$GLUT_LIBS" = no; then - AC_MSG_FAILURE([no GLUT library found, so this package cannot be built]) -fi - -# check for GLUT include files -glut_found_header=no -fp_save_cppflags="$CPPFLAGS" -CPPFLAGS="$CPPFLAGS $X_CFLAGS" -AC_CHECK_HEADERS([GL/glut.h GLUT/glut.h], [glut_found_header=yes]) -CPPFLAGS="$fp_save_cppflags" - -if test "$glut_found_header" = no; then - AC_MSG_FAILURE([no GLUT header found, so this package cannot be built]) -fi - -GLUT_BUILD_PACKAGE=yes - -AC_CHECK_HEADERS([windows.h]) - -AC_DEFINE_UNQUOTED([GLUT_EXTRA_LIBS], - [`echo HSGLUT_cbits $GLUT_EXTRA_LIBS | sed -e 's/[[^ ]]*/,"&"/g' -e 's/^ *,//'`], - [Extra libraries for GLUT, as a list of string literals.]) - -AC_DEFINE_UNQUOTED([GLUT_CFLAGS], - [`echo '' $GLUT_CFLAGS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], - [C flags for GLUT, as a list of string literals.]) - -AC_DEFINE_UNQUOTED([GLUT_LIBS], - [`echo '' $GLUT_LIBS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], - [Library flags for GLUT, as a list of string literals.]) - -AC_DEFINE_UNQUOTED([GLUT_FRAMEWORKS], - [`echo '' $GLUT_FRAMEWORKS | sed -e 's/-[[^ ]]*/,"&"/g' -e 's/^ *,//'`], - [Framework flags for GLUT, as a list of string literals.]) - -fi - -if test "$GLUT_BUILD_PACKAGE" = yes; then - BUILD_PACKAGE_BOOL=True -else - BUILD_PACKAGE_BOOL=False -fi -AC_SUBST([BUILD_PACKAGE_BOOL]) - -case "$host" in -*-mingw32) CALLCONV=stdcall ;; -*) CALLCONV=ccall ;; -esac -AC_SUBST([CALLCONV]) - -AC_CONFIG_FILES([GLUT.buildinfo]) -AC_OUTPUT rmfile ./GLUT/configure.ac hunk ./GLUT/index.html 1 - - - - Index of /packages/GLUT - - -

Index of /packages/GLUT

-
Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - -[   ] GLUT.buildinfo.in 11-Jan-2006 10:34 265 -[   ] GLUT.cabal 02-May-2009 09:02 4.7K -[DIR] Graphics/ 11-Jan-2006 10:17 - -[   ] LICENSE 11-Jan-2006 10:32 1.5K -[   ] README 18-Feb-2007 03:04 291 -[TXT] Setup.hs 16-Mar-2009 10:10 114 -[DIR] _darcs/ 07-May-2009 09:00 - -[   ] aclocal.m4 16-Mar-2009 10:10 8.9K -[DIR] cbits/ 02-May-2009 08:54 - -[   ] config.guess 18-May-2006 11:11 43K -[   ] config.sub 18-May-2006 11:11 32K -[   ] configure.ac 02-May-2009 08:08 2.4K -[DIR] doc/ 02-May-2009 08:54 - -[DIR] examples/ 02-May-2009 08:54 - -[DIR] include/ 02-May-2009 08:54 - -[   ] install-sh 18-May-2006 11:11 8.1K -
-
Apache/2.2.3 (Debian) Server at darcs.haskell.org Port 80
- rmfile ./GLUT/index.html hunk ./GLUT/install-sh 1 -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2003-09-24.23 - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. It can only install one file at a time, a restriction -# shared with many OS's install programs. - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit="${DOITPROG-}" - -# put in absolute paths if you don't have them in your path; or use env. vars. - -mvprog="${MVPROG-mv}" -cpprog="${CPPROG-cp}" -chmodprog="${CHMODPROG-chmod}" -chownprog="${CHOWNPROG-chown}" -chgrpprog="${CHGRPPROG-chgrp}" -stripprog="${STRIPPROG-strip}" -rmprog="${RMPROG-rm}" -mkdirprog="${MKDIRPROG-mkdir}" - -transformbasename= -transform_arg= -instcmd="$mvprog" -chmodcmd="$chmodprog 0755" -chowncmd= -chgrpcmd= -stripcmd= -rmcmd="$rmprog -f" -mvcmd="$mvprog" -src= -dst= -dir_arg= - -usage="Usage: $0 [OPTION]... SRCFILE DSTFILE - or: $0 -d DIR1 DIR2... - -In the first form, install SRCFILE to DSTFILE, removing SRCFILE by default. -In the second, create the directory path DIR. - -Options: --b=TRANSFORMBASENAME --c copy source (using $cpprog) instead of moving (using $mvprog). --d create directories instead of installing files. --g GROUP $chgrp installed files to GROUP. --m MODE $chmod installed files to MODE. --o USER $chown installed files to USER. --s strip installed files (using $stripprog). --t=TRANSFORM ---help display this help and exit. ---version display version info and exit. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG -" - -while test -n "$1"; do - case $1 in - -b=*) transformbasename=`echo $1 | sed 's/-b=//'` - shift - continue;; - - -c) instcmd=$cpprog - shift - continue;; - - -d) dir_arg=true - shift - continue;; - - -g) chgrpcmd="$chgrpprog $2" - shift - shift - continue;; - - --help) echo "$usage"; exit 0;; - - -m) chmodcmd="$chmodprog $2" - shift - shift - continue;; - - -o) chowncmd="$chownprog $2" - shift - shift - continue;; - - -s) stripcmd=$stripprog - shift - continue;; - - -t=*) transformarg=`echo $1 | sed 's/-t=//'` - shift - continue;; - - --version) echo "$0 $scriptversion"; exit 0;; - - *) if test -z "$src"; then - src=$1 - else - # this colon is to work around a 386BSD /bin/sh bug - : - dst=$1 - fi - shift - continue;; - esac -done - -if test -z "$src"; then - echo "$0: no input file specified." >&2 - exit 1 -fi - -# Protect names starting with `-'. -case $src in - -*) src=./$src ;; -esac - -if test -n "$dir_arg"; then - dst=$src - src= - - if test -d "$dst"; then - instcmd=: - chmodcmd= - else - instcmd=$mkdirprog - fi -else - # Waiting for this to be detected by the "$instcmd $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst ;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - dst=$dst/`basename "$src"` - fi -fi - -# This sed command emulates the dirname command. -dstdir=`echo "$dst" | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` - -# Make sure that the destination directory exists. - -# Skip lots of stat calls in the usual case. -if test ! -d "$dstdir"; then - defaultIFS=' - ' - IFS="${IFS-$defaultIFS}" - - oIFS=$IFS - # Some sh's can't handle IFS=/ for some reason. - IFS='%' - set - `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'` - IFS=$oIFS - - pathcomp= - - while test $# -ne 0 ; do - pathcomp=$pathcomp$1 - shift - test -d "$pathcomp" || $mkdirprog "$pathcomp" - pathcomp=$pathcomp/ - done -fi - -if test -n "$dir_arg"; then - $doit $instcmd "$dst" \ - && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; } - -else - # If we're going to rename the final executable, determine the name now. - if test -z "$transformarg"; then - dstfile=`basename "$dst"` - else - dstfile=`basename "$dst" $transformbasename \ - | sed $transformarg`$transformbasename - fi - - # don't allow the sed command to completely eliminate the filename. - test -z "$dstfile" && dstfile=`basename "$dst"` - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'status=$?; rm -f "$dsttmp" "$rmtmp" && exit $status' 0 - trap '(exit $?); exit' 1 2 13 15 - - # Move or copy the file name to the temp name - $doit $instcmd "$src" "$dsttmp" && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $instcmd $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \ - && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \ - && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \ - && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } && - - # Now remove or move aside any old file at destination location. We - # try this two ways since rm can't unlink itself on some systems and - # the destination file might be busy for other reasons. In this case, - # the final cleanup might fail but the new file should still install - # successfully. - { - if test -f "$dstdir/$dstfile"; then - $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \ - || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \ - || { - echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2 - (exit 1); exit - } - else - : - fi - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dstdir/$dstfile" -fi && - -# The final little trick to "correctly" pass the exit status to the exit trap. -{ - (exit 0); exit -} - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-end: "$" -# End: rmfile ./GLUT/install-sh rmdir ./GLUT hunk ./Demo/Color.hs 1 +module Demo.Color where + +import Graphics.UI.GLUT + +type Coord = GLfloat + +colorFunction :: Coord -> Coord -> Color3 Coord +colorFunction = f4 + +f1 x y = Color3 (x * x + y * y) (x * x + y * y) (x * x + y * y) +f2 x y = Color3 s s s where s = if x - y < 3.0 then 1.0 else 0.0 +f3 x y = Color3 s s s where s = if 1.0 < x - y && x - y < 3.0 then 1.0 else 0.0 +f4 x y = if x == y then Color3 1.0 1.0 1.0 else if x == -y then Color3 1.0 0.0 0.0 else Color3 0.0 0.0 0.0 + +xmin :: Coord +xmin = 0 +xmax :: Coord +xmax = 10 +ymin :: Coord +ymin = 0 +ymax :: Coord +ymax = 10 hunk ./Demo/CumulativeDistances.hs 1 -module AmuseEllie.CumulativeDistances +module Demo.CumulativeDistances hunk ./Demo/CumulativeDistances.hs 24 + hunk ./Demo/DrawTail.hs 1 -module AmuseEllie.DisplayTail - ( displayTail +{-# LANGUAGE ScopedTypeVariables #-} +{-# OPTIONS -Wall -Wwarn -fno-warn-unused-binds -fno-warn-unused-imports #-} +module Demo.DrawTail + ( drawTail hunk ./Demo/DrawTail.hs 8 -import AmuseEllie.MouseTail -import AmuseEllie.AmuseEllie (constantLength, normalizeMouse, vertex2f, drawLineStrip, interleave) +import Demo.MouseTail +import Control.Monad.State hunk ./Demo/DrawTail.hs 11 -import Graphics.UI.GLUT +import Data.List (concat, transpose) +import Graphics.UI.GLUT hiding (get, position) hunk ./Demo/DrawTail.hs 14 +import System.Random hunk ./Demo/DrawTail.hs 16 -displayTail :: MouseTail -> IdleCallback -displayTail mt = do - wsize <- get windowSize - t <- readIORef $ mouseTail mt - let nmt = constantLength 1.5 $ normalizeMouse wsize t - -- let _ = trace ("length nmt " ++ (show $ length nmt)) () - let pts = map (vertex2f . (uncurry Vertex2)) ({-trace ("length nmt " ++ (show $ length nmt))-} nmt) - drawLineStrip (interleave tailColors pts) +-- Things to do: +-- 1. Make points scattered around the mouse +-- 2. Make the mouse like a sparkler +-- 3. Make a comet's tail hunk ./Demo/DrawTail.hs 21 -tailColors = take tailLength $ map (\r -> color $ Color3 (max r 0.1) 0.0 (0.0 :: GLfloat)) (iterate (* 0.995) 1.0) -tailLength = 1000 +{- +data PrimitiveMode + = Points + | Lines + | LineLoop + | LineStrip + | Triangles + | TriangleStrip + | TriangleFan + | Quads + | QuadStrip + | Polygon +-} + +type RandomState a = State StdGen a + +drawTail :: [Vertex2 Coord] -> IO () +drawTail [] = return () +drawTail points@(mouse : _) = + do g <- newStdGen + let (a, g') = runState (sparkle mouse 10) g + drawLineStrip (interleave tailColors (a ++ {-perturb rands-} points)) + +-- Assign the tail points colors depending on how far from the mouse they are +tailColors :: [Color3 Coord] +tailColors = take tailLength $ map (\r -> Color3 (max r 0.1) 0.0 (0.0 :: GLfloat)) (iterate (* 0.995) 1.0) + +tailLength = 10000 + +-- +interleave colors points = concat $ transpose [map color colors, map vertex2f points] + +-- drawLineStrip :: [Vertex2 GLfloat] -> IO () +drawLineStrip ps = renderPrimitive LineStrip $ sequence_ ps + +{- +perturb :: [Coord] -> [Vertex2 Coord] -> [Vertex2 Coord] +perturb (r1 : r2 : rands') (Vertex2 x y : vs) = Vertex2 (x + (r1 - 0.5) * 0.2) (y + (r2 - 0.5) * 0.2) : perturb rands' vs +perturb _ [] = [] +-} + +vertex2f :: Vertex2 Coord -> IO () +vertex2f = vertex + +type Point = Vertex2 Coord +type RandomSource = StdGen + +sparkle :: Point -> Int -> RandomState [Point] +sparkle _ 0 = return [] +sparkle position count = + do v1 <- perturb position + vs <- sparkle position (count - 1) + return (v1 : vs) + +perturb :: Point -> RandomState Point +perturb (Vertex2 x y) = + do r1 <- rand + r2 <- rand + return (Vertex2 (x + (r1 - 0.5) * 0.1) (y + (r2 - 0.5) * 0.1)) + +rand :: RandomState Coord +rand = + do (x, g') <- get >>= return . random + put g' + return x + +{- +-- Create a "sparkle" around a position +sparkle :: [Coord] -> (Vertex2 Coord) -> [Vertex2 Coord] +sparkle _ [] = [] +sparkle rands point@(Vertex2 x y) = + take 10 (randomPoints point) + where + randomPoints = randomPoint point : randomPoints point + randomPoint point = + + ray rands 11 + where + ray _ 0 = [] + ray (r1 : r2 : rands') n = [Vertex2 x y, + Vertex2 (x + (r1 - 0.5) * 0.1) (y + (r2 - 0.5) * 0.1)] ++ + ray rands' (n - 1) +-} hunk ./Demo/Grid.hs 1 +{-# OPTIONS -Wwarn #-} +module Demo.Grid where + +import Demo.Color (colorFunction, xmin, xmax, ymin, ymax) +import Data.List (concat, transpose) +import Graphics.UI.GLUT -- (GLfloat, ($=), Color3, clear, ClearBuffer(ColorBuffer), color) +import Graphics.UI.GLUT.Begin +import Graphics.UI.GLUT.Callbacks.Window +import Graphics.UI.GLUT.Window + +type Coord = GLfloat + +gridLoop :: IO () +gridLoop = do + displayCallback $= display colorFunction + mainLoop + +-- We display from (xmin - 0.5) to (xmax + 0.5) and from (ymin - 0.5) +-- to (ymax + 0.5), so that each square is centered at a pair of +-- integer coordinates. + +display :: (Coord -> Coord -> Color3 Coord) -> DisplayCallback +display colorFn = do + -- clear all pixels + clear [ ColorBuffer ] + color (Color3 1.0 0.0 (0.0 :: GLfloat)) + (Size w h) <- get windowSize + let points :: [(Coord, Coord)] + points = [(x, y) | x <- [xmin..xmax], y <- [ymin..ymax]] + colors = norm (map (uncurry colorFn) points) + quads = map (quad xmin xmax ymin ymax) (map (uncurry Vertex2) points) + -- putStrLn ("quads: " ++ show quads) + renderPrimitive Quads $ sequence_ (interleave colors quads) + flush + +interleave colors quads = concat $ transpose [map color colors, map vertex4 quads] + +norm colors@(c : cs) = + let (cmin, cmax) = foldr f (c, c) cs in + map (scale cmin cmax) colors + where + f (Color3 r g b) (Color3 rmin gmin bmin, Color3 rmax gmax bmax) = + (Color3 (min r rmin) (min g gmin) (min b bmin), + Color3 (max r rmax) (max g gmax) (max b bmax)) + scale (Color3 rmin gmin bmin) (Color3 rmax gmax bmax) (Color3 r g b) = + Color3 ((r - rmin) / (rmax - rmin)) ((g - gmin) / (gmax - gmin)) ((b - bmin) / (bmax - bmin)) + +-- Assume that xmin <= x <= xmax, ymin <= y <= ymax, scale the values so that +-- the resulting 0 <= x' <= w, 0 <= y' <= h. +quad :: Coord -> Coord -> Coord -> Coord -> Vertex2 Coord -> + (Vertex2 Coord, Vertex2 Coord, Vertex2 Coord, Vertex2 Coord) +quad xmin xmax ymin ymax (Vertex2 x y) = + (Vertex2 (xc - sw/2) (yc - sh/2), + Vertex2 (xc - sw/2) (yc + sh/2), + Vertex2 (xc + sw/2) (yc + sh/2), + Vertex2 (xc + sw/2) (yc - sh/2)) + where + xc = (x - left) / w + yc = (y - bottom) / h + -- Square dimensions normalized + sw = 1.0 / w + sh = 1.0 / h + w = right - left + h = top - bottom + left = xmin - 0.5 + right = xmax + 0.5 + top = ymax + 0.5 + bottom = ymin - 0.5 + +vertex4 :: (Vertex2 Coord, Vertex2 Coord, Vertex2 Coord, Vertex2 Coord) -> IO () +vertex4 (a, b, c, d) = vertex a >> vertex b >> vertex c >> vertex d hunk ./Demo/Main.hs 1 +{-# OPTIONS -fno-warn-unused-imports #-} hunk ./Demo/Main.hs 4 -import AmuseEllie.MouseTail -import AmuseEllie.DisplayTail +--import Demo.MouseParams (constantLength, normalizeMouse) +import Demo.Mouse +import Demo.Grid +--import Demo.MouseTail +--import Demo.DrawTail hunk ./Demo/Main.hs 10 -import Data.IORef ( newIORef, readIORef, modifyIORef ) +--import Data.IORef ( newIORef, readIORef, modifyIORef ) hunk ./Demo/Main.hs 12 -import Graphics.UI.GLUT.Begin +--import Graphics.UI.GLUT.Begin hunk ./Demo/Main.hs 18 +--import qualified System.Random as R hunk ./Demo/Main.hs 20 --- import AmuseEllie.DisplayTail +-- import Demo.DisplayTail hunk ./Demo/Main.hs 31 - initialWindowPosition $= Position 100 100 + -- initialWindowPosition $= Position 100 100 hunk ./Demo/Main.hs 34 - mt <- makeMouseTail - displayCallback $= display mt - passiveMotionCallback $= Just (motion (take tailLength) mt) + addTimerCallback timerFrequencyMillis timer hunk ./Demo/Main.hs 36 - mainLoop + mouseLoop + --gridLoop + +timerFrequencyMillis = 2000 + +timer :: TimerCallback +timer = + do postRedisplay Nothing + addTimerCallback timerFrequencyMillis timer hunk ./Demo/Main.hs 53 -makeMouseTail :: IO MouseTail -makeMouseTail = do - t <- newIORef [] - return $ MouseTail { mouseTail = t } - - -display :: MouseTail -> DisplayCallback -display mt = do - -- clear all pixels - clear [ ColorBuffer ] - color (Color3 1.0 0.0 (0.0 :: GLfloat)) - - displayTail mt - -- don't wait! - -- start processing buffered OpenGL routines - flush - -motion :: ([Position] -> [Position]) -> MouseTail -> MotionCallback -motion filter mt p@(Position _x _y) = do - _t <- readIORef (mouseTail mt) - modifyIORef (mouseTail mt) (filter . (p:)) - postRedisplay Nothing +{- +-- A source of random numbers between 0 and 1. +randoms :: IO [Coord] +randoms = R.newStdGen >>= return . R.randoms +-} hunk ./Demo/Mouse.hs 1 +module Demo.Mouse where + +import Data.IORef ( newIORef, readIORef, modifyIORef ) +import Demo.MouseParams (constantLength, normalizeMouse) +import Demo.DrawTail (drawTail, tailLength) +import Demo.MouseTail (MouseTail(MouseTail, mouseTail)) +import Graphics.UI.GLUT +import Graphics.UI.GLUT.Begin +import Graphics.UI.GLUT.Callbacks.Window +import Graphics.UI.GLUT.Window + +mouseLoop :: IO () +mouseLoop = do + mt <- makeMouseTail + displayCallback $= display mt + passiveMotionCallback $= Just (motion (take tailLength) mt) + mainLoop + +motion :: ([Position] -> [Position]) -> MouseTail -> MotionCallback +motion filter mt p@(Position _x _y) = do + _t <- readIORef (mouseTail mt) + modifyIORef (mouseTail mt) (filter . (p:)) + postRedisplay Nothing + +makeMouseTail :: IO MouseTail +makeMouseTail = do + t <- newIORef [] + return $ MouseTail { mouseTail = t } + + +display :: MouseTail -> DisplayCallback +display mt = do + -- clear all pixels + clear [ ColorBuffer ] + color (Color3 1.0 0.0 (0.0 :: GLfloat)) + + displayTail mt + -- don't wait! + -- start processing buffered OpenGL routines + flush + +displayTail :: MouseTail -> IdleCallback +displayTail mt = do + wsize <- get windowSize + t <- readIORef $ mouseTail mt + let nmt = constantLength 1.5 $ normalizeMouse wsize t + -- let _ = trace ("length nmt " ++ (show $ length nmt)) () + let pts = map (uncurry Vertex2) ({-trace ("length nmt " ++ (show $ length nmt))-} nmt) + drawTail pts hunk ./Demo/MouseParams.hs 1 -module AmuseEllie.AmuseEllie +module Demo.MouseParams hunk ./Demo/MouseParams.hs 4 - , vertex2f hunk ./Demo/MouseParams.hs 5 - , drawLineStrip - , interleave hunk ./Demo/MouseParams.hs 7 -import Data.List (concat, transpose) hunk ./Demo/MouseParams.hs 8 -import System.IO -import AmuseEllie.MouseTail -import AmuseEllie.CumulativeDistances +-- import System.IO +import Demo.MouseTail +import Demo.CumulativeDistances hunk ./Demo/MouseParams.hs 24 -vertex2f :: Vertex2 GLfloat -> IO () -vertex2f = vertex - -interleave xs ys = concat $ transpose [xs,ys] - --- drawLineStrip :: [Vertex2 GLfloat] -> IO () -drawLineStrip ps = renderPrimitive LineStrip $ sequence_ ps - hunk ./Demo/MouseTail.hs 1 -module AmuseEllie.MouseTail +module Demo.MouseTail hunk ./README 1 -OpenGL learning tools for Ellie. +OpenGL learning tools. hunk ./demo.cabal 1 -Name: AmuseEllie +Name: OpenGLDemo hunk ./demo.cabal 7 -Synopsis: Amuse Ellie +Synopsis: OpenGL learning tools hunk ./demo.cabal 13 -Executable amuseellie - Main-Is: AmuseEllie/Main.hs - Build-depends: base, OpenGL, GLUT - GHC-options: -Wall -Werror -fno-warn-missing-signatures -fno-warn-name-shadowing +Executable demo + Main-Is: Demo/Main.hs + Build-depends: base, OpenGL, GLUT, random, mtl + GHC-options: -Wall -fno-warn-missing-signatures -fno-warn-name-shadowing