From 6a19363758d94359cfb6fd910c4aad3cc7c12c3b Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Mercier Date: Mon, 17 Nov 2008 12:00:00 +0100 Subject: [PATCH] Version 1.0a --- Class/class.combat.php | 423 ++- Class/class.gerefile.php | 90 + Class/class.rapport.php | 114 + Class/class.smtp.php | 8 +- Class/flotte.php | 246 -- Class/gererFile.php | 67 - ...iler.lang-en.php => phpmailer.lang-fr.php} | 14 +- Class/test/message.txt | 355 --- Class/test/phpmailer_test.php | 558 ---- Class/test/phpunit.php | 376 --- Class/test/rocks.png | 1 - .../lancer_flotte.php => DELlancer_flotte.php | 33 +- Halo-Battle.PHPEditProject | 3 - ab/sound.php | 128 - ab/un.ttf | Bin 30948 -> 0 bytes ab/wave/1.WAV | Bin 7700 -> 0 bytes ab/wave/2.WAV | Bin 7566 -> 0 bytes ab/wave/3.WAV | Bin 9682 -> 0 bytes ab/wave/4.WAV | Bin 10154 -> 0 bytes ab/wave/5.wav | Bin 14248 -> 0 bytes ab/wave/6.WAV | Bin 10734 -> 0 bytes ab/wave/7.WAV | Bin 12402 -> 0 bytes ab/wave/8.WAV | Bin 9784 -> 0 bytes ab/wave/9.WAV | Bin 11606 -> 0 bytes ab/wave/A.WAV | Bin 8030 -> 0 bytes ab/wave/B.WAV | Bin 11868 -> 0 bytes ab/wave/C.WAV | Bin 11070 -> 0 bytes ab/wave/D.WAV | Bin 8088 -> 0 bytes ab/wave/E.WAV | Bin 8244 -> 0 bytes ab/wave/F.WAV | Bin 10762 -> 0 bytes ab/wave/G.WAV | Bin 10434 -> 0 bytes ab/wave/H.WAV | Bin 11084 -> 0 bytes ab/wave/I.WAV | Bin 6442 -> 0 bytes ab/wave/J.WAV | Bin 10814 -> 0 bytes ab/wave/K.WAV | Bin 6772 -> 0 bytes ab/wave/L.WAV | Bin 12026 -> 0 bytes ab/wave/M.WAV | Bin 12518 -> 0 bytes ab/wave/N.WAV | Bin 11768 -> 0 bytes ab/wave/O.WAV | Bin 7826 -> 0 bytes ab/wave/P.WAV | Bin 7460 -> 0 bytes ab/wave/Q.WAV | Bin 7644 -> 0 bytes ab/wave/R.WAV | Bin 9576 -> 0 bytes ab/wave/S.WAV | Bin 9994 -> 0 bytes ab/wave/T.WAV | Bin 8206 -> 0 bytes ab/wave/U.WAV | Bin 8514 -> 0 bytes ab/wave/V.WAV | Bin 10058 -> 0 bytes ab/wave/W.WAV | Bin 18822 -> 0 bytes ab/wave/X.WAV | Bin 12738 -> 0 bytes ab/wave/Y.WAV | Bin 15144 -> 0 bytes ab/wave/Z.WAV | Bin 11300 -> 0 bytes admin.php | 42 + ajax_flotte.php | 194 ++ b_index.php | 37 - captcha/.htaccess | 6 + {ab => captcha}/0.TTF | Bin {ab => captcha}/1.TTF | Bin {ab => captcha}/2.TTF | Bin {ab => captcha}/fond_verif_img.gif | Bin {ab => captcha}/fond_verif_img.png | Bin ab/ab.php => captcha/image.php | 8 +- connectBDD.php | 43 - cron/classement.php | 150 +- cron/optimize.php | 22 + favicon.ico | Bin 926 -> 1150 bytes fonctions.php | 225 -- game/accueil.php | 36 + game/alliances.php | 388 +++ game/arbre.php | 56 + game/batiments.php | 120 + game/bugs.php | 23 + game/carte.php | 55 + game/chantierspatial.php | 129 + game/classement.php | 41 + game/conditions.php | 159 ++ game/defenses.php | 130 + game/envoyer.php | 29 + game/flotte.php | 393 +++ game/inscription.php | 142 + game/laboratoire.php | 119 + game/logout.php | 9 + game/messagerie.php | 54 + game/njoueur.php | 175 ++ game/options.php | 207 ++ game/regles.php | 123 + game/rename.php | 50 + game/ressources.php | 11 + game/templates.lnk | Bin 0 -> 989 bytes game/validation.php | 40 + game/version.php | 13 + images/Thumbs.db | Bin 33280 -> 0 bytes images/accueil/annonce.jpg | Bin 0 -> 20166 bytes .../accueil/dossier.jpg | Bin 17198 -> 16056 bytes images/accueil/news_img.jpg | Bin 0 -> 17808 bytes images/accueil/stat.png | Bin 0 -> 33477 bytes images/background.jpg | Bin 241568 -> 0 bytes .../batiments/baseradardl3.jpg | Bin .../batiments/caserncov0ry.jpg | Bin .../images => images}/batiments/caserne.jpg | Bin .../batiments/centrale electrique.jpg | Bin .../batiments/centrale solaire.jpg | Bin .../batiments/centrale_f.png | Bin .../batiments/centrale_fusion.jpg | Bin .../batiments/centrale_s.JPG | Bin .../batiments/centrederecherchegu9.jpg | Bin .../batiments/chantier spatial.jpg | Bin .../batiments/chantier-spatial.jpg | Bin .../batiments/chantier-terrestre.jpg | Bin .../batiments/chantier_terrestre.jpg | Bin .../batiments/chantier_terrestre.png | Bin .../batiments/chantierspatialff8.jpg | Bin .../batiments/chantierterrestrecopybj8.jpg | Bin .../batiments/chantierterrestrehg1.jpg | Bin .../batiments/chantierterrestrenz5.jpg | Bin .../batiments/covbase25ro.jpg | Bin .../batiments/covielabocn5.jpg | Bin .../batiments/cristaloo3.png | Bin .../batiments/ecole militaire.jpg | Bin .../batiments/ecole_militaire.jpg | Bin .../images => images}/batiments/entrepot.jpg | Bin .../batiments/generateurafusiondb2.jpg | Bin .../batiments/generateurdecristalmh5.jpg | Bin .../batiments/generateurdemetalsg0.jpg | Bin .../batiments/generateurdenergievb7.jpg | Bin .../batiments/generateurdhydrognedh3.jpg | Bin .../batiments/informatique.jpg | Bin .../batiments/ionisateur.png | Bin .../batiments/ioniseurdn4.jpg | Bin images/batiments/mine_c.png | Bin 0 -> 33060 bytes images/batiments/mine_m.jpg | Bin 0 -> 39347 bytes images/batiments/mine_m.png | Bin 0 -> 33694 bytes {pages/images => images}/batiments/nanw9.jpg | Bin {pages/images => images}/batiments/oeil.png | Bin .../batiments/oeilduprophetewj6.jpg | Bin .../batiments/ordianteur_hologramme.jpg | Bin .../batiments/purificateur_c.png | Bin .../batiments/purificateur_m.png | Bin .../batiments/purificateurdemtalhb3.jpg | Bin {pages/images => images}/batiments/radar.jpg | Bin .../batiments/recherches.jpg | Bin .../batiments/sanstitretruecolor09zn6.jpg | Bin .../batiments/sanstitrevi7.jpg | Bin .../images => images}/batiments/search0yp.jpg | Bin {pages/images => images}/batiments/silo.jpg | Bin .../images => images}/batiments/solaire.jpg | Bin .../images => images}/batiments/stockage.jpg | Bin .../batiments/stockagebasement1cs10bl.jpg | Bin .../batiments/synchroniseur.jpg | Bin {pages/images => images}/caserne/TCAO2.jpg | Bin {pages/images => images}/caserne/brute.jpg | Bin .../caserne/defenseurlegerhs8.jpg | Bin .../caserne/defenseurlourdhr3.jpg | Bin {pages/images => images}/caserne/drone.jpg | Bin {pages/images => images}/caserne/elite.jpg | Bin .../images => images}/caserne/grenadier.jpg | Bin {pages/images => images}/caserne/grunt1.jpg | Bin {pages/images => images}/caserne/hunter1.jpg | Bin .../images => images}/caserne/ingenieur_c.jpg | Bin .../images => images}/caserne/ingenieurs.jpg | Bin {pages/images => images}/caserne/jackal.jpg | Bin .../caserne/jackalsniper.jpg | Bin .../images => images}/caserne/marinehf0.jpg | Bin {pages/images => images}/caserne/marines.jpg | Bin {pages/images => images}/caserne/medecin.jpg | Bin .../images => images}/caserne/medecin_c.jpg | Bin {pages/images => images}/caserne/scoutma3.jpg | Bin .../caserne/sentinellelegerecn4.jpg | Bin {pages/images => images}/caserne/sniper.jpg | Bin {pages/images => images}/caserne/spartan.jpg | Bin images/covenant_na.jpg | Bin 0 -> 44144 bytes .../nanw9.jpg => images/forerunner_na.jpg | Bin .../img_na_ig.jpg => images/humain_na.jpg | Bin .../diz/planete => images/planetes}/1.jpg | Bin .../diz/planete => images/planetes}/10.jpg | Bin .../diz/planete => images/planetes}/11.jpg | Bin .../diz/planete => images/planetes}/12.jpg | Bin .../diz/planete => images/planetes}/13.jpg | Bin .../diz/planete => images/planetes}/14.jpg | Bin .../diz/planete => images/planetes}/15.jpg | Bin .../diz/planete => images/planetes}/2.jpg | Bin .../diz/planete => images/planetes}/3.jpg | Bin .../diz/planete => images/planetes}/4.jpg | Bin .../diz/planete => images/planetes}/5.jpg | Bin .../diz/planete => images/planetes}/6.jpg | Bin .../diz/planete => images/planetes}/7.jpg | Bin .../diz/planete => images/planetes}/8.jpg | Bin .../diz/planete => images/planetes}/9.jpg | Bin images/smiles/biggrin.gif | Bin 0 -> 172 bytes images/smiles/confused.gif | Bin 0 -> 171 bytes images/smiles/cool.gif | Bin 0 -> 172 bytes images/smiles/eek.gif | Bin 0 -> 170 bytes images/smiles/evil.gif | Bin 0 -> 236 bytes images/smiles/lol.gif | Bin 0 -> 336 bytes images/smiles/mad.gif | Bin 0 -> 174 bytes images/smiles/neutral.gif | Bin 0 -> 171 bytes images/smiles/razz.gif | Bin 0 -> 176 bytes images/smiles/redface.gif | Bin 0 -> 650 bytes images/smiles/rolleyes.gif | Bin 0 -> 485 bytes images/smiles/sad.gif | Bin 0 -> 171 bytes images/smiles/smile.gif | Bin 0 -> 174 bytes images/smiles/surprised.gif | Bin 0 -> 174 bytes images/smiles/twisted.gif | Bin 0 -> 238 bytes images/smiles/wink.gif | Bin 0 -> 170 bytes {pages/images => images}/technologies/IA4.jpg | Bin .../technologies/Mjolnir.jpg | Bin .../images => images}/technologies/arme.jpg | Bin images/technologies/arme.png | Bin 0 -> 40693 bytes .../technologies/armement.jpg | Bin .../technologies/armuremc8ij.jpg | Bin images/technologies/blindage.jpg | Bin 0 -> 49960 bytes .../boucliervaiseaucovenantey4.jpg | Bin .../technologies/citydevlopment1px.jpg | Bin .../technologies/commandement.jpg | Bin .../technologies/detection.jpg | Bin .../technologies/developpement.jpg | Bin .../technologies/energie.jpg | Bin .../technologies/hyperespace.jpg | Bin .../technologies/hyperespace2.jpg | Bin .../technologies/informatique1.jpg | Bin .../technologies/medecin1.jpg | Bin .../technologies/medecine.JPG | Bin .../technologies/nucleartech9qm.jpg | Bin .../technologies/plasma4yl.jpg | Bin .../technologies/radar7zr.jpg | Bin .../technologies/reacteur_f.jpg | Bin .../technologies/reacteuracombustion.jpg | Bin .../technologies/reacteurantigravyd1.jpg | Bin .../reacteurfusionforerunnewu0.jpg | Bin .../technologies/reacteurfusiontype1al5.jpg | Bin .../technologies/reacteurfusiontype2nn6.jpg | Bin .../technologies/sanstitretruecolor04no6.jpg | Bin .../technologies/sousespacety4.jpg | Bin .../technologies/tactique.jpg | Bin .../technologies/techarmes1jk1.jpg | Bin .../terrestre/M12A1_LAAV_Warthog.jpg | Bin .../terrestre/M12G1_LAAV_Warthog.jpg | Bin .../terrestre/M12_LRV_Warthog.jpg | Bin .../images => images}/terrestre/albatross.jpg | Bin .../terrestre/apparition.jpg | Bin .../terrestre/bansheeqp0.jpg | Bin .../terrestre/boardingcraft.jpg | Bin .../terrestre/csnulancemissileol5.jpg | Bin .../terrestre/csnushortswordad3.jpg | Bin .../terrestre/csnusparrowhawkkp4.jpg | Bin .../terrestre}/dca_legere.jpg | Bin images/terrestre/dca_lourde.jpg | Bin 0 -> 47897 bytes .../images => images}/terrestre/ghostic1.jpg | Bin .../terrestre/lanceur_torpilles.jpg | Bin .../images => images}/terrestre/pelican.jpg | Bin .../terrestre/pelican_armed.jpg | Bin .../terrestre/phantomfu2.jpg | Bin .../images => images}/terrestre/scorpion.jpg | Bin .../images => images}/terrestre/scorpionN.jpg | Bin {pages/images => images}/terrestre/shade.jpg | Bin {pages/images => images}/terrestre/shadow.jpg | Bin .../images => images}/terrestre/spectre1.jpg | Bin .../images => images}/terrestre/spirit1.jpg | Bin .../terrestre/stationdedefensent8.jpg | Bin .../terrestre/strongshade.jpg | Bin .../images => images}/terrestre/tourelle.jpg | Bin .../terrestre}/tourelle_fixe.jpg | Bin .../terrestre/tourelle_gauss.jpg | Bin .../terrestre/tourelle_plasma.jpg | Bin .../terrestre/tourellebarreau.jpg | Bin .../terrestre/tourioniquegr6.jpg | Bin .../terrestre/tourplasmasl4.jpg | Bin .../terrestre/warthog-vrl.jpg | Bin {pages/images => images}/terrestre/wraith.jpg | Bin .../vaisseaux/cargosladen.jpg | Bin .../vaisseaux/cargosparabola.jpg | Bin .../vaisseaux/charognard.jpg | Bin .../vaisseaux/chasseurlourd7id.jpg | Bin .../vaisseaux/chasseurlourdfk8.jpg | Bin .../vaisseaux/citecovenant.jpg | Bin .../vaisseaux/colonisation.jpg | Bin .../vaisseaux/coviecolobv3.jpg | Bin .../images => images}/vaisseaux/croiseur.jpg | Bin .../vaisseaux/croiseur8er.jpg | Bin .../vaisseaux/croiseurclassealcyon130om6.jpg | Bin .../vaisseaux/croiseurclassemarathon1oc0.jpg | Bin .../vaisseaux/croiseurforrunerns4.jpg | Bin .../vaisseaux/croiseurmarathonke3.jpg | Bin .../vaisseaux/csnucargoladen2al8.jpg | Bin .../vaisseaux/csnucargoparabola2mc9.jpg | Bin .../vaisseaux/csnufregatedk7.jpg | Bin .../vaisseaux/csnuportevaisseauxgy3.jpg | Bin .../vaisseaux/csnusuperportevaisseauxrw4.jpg | Bin 0 -> 29407 bytes .../vaisseaux/destructeur2ci0.jpg | Bin .../vaisseaux/drone_clarion.jpg | Bin .../vaisseaux/fregate2ky.jpg | Bin .../vaisseaux/fregatewz5.jpg | Bin .../images => images}/vaisseaux/longsword.jpg | Bin .../terrestre => images/vaisseaux}/nanw9.jpg | Bin images/vaisseaux/pv.jpg | Bin 0 -> 46952 bytes .../images => images}/vaisseaux/recycleur.jpg | Bin .../vaisseaux/sonde_despionnage1.jpg | Bin .../images => images}/vaisseaux/station.jpg | Bin images/vaisseaux/station1.jpg | Bin 0 -> 55885 bytes .../vaisseaux/superdestroyerwa6.jpg | Bin .../images => images}/vaisseaux/vaisseau.jpg | Bin .../vaisseaux/vaisseaucolonisationmm4.jpg | Bin .../vaisseaux/vaisseaudebataille9na.jpg | Bin includes/classement/conf.php | 6 + includes/classement/fonctions.php | 284 ++ includes/classement/footer.php | 3 + includes/classement/header.php | 8 + includes/common.php | 60 + includes/constructions.php | 83 + .../fermerServeur.php | 2 + includes/flottes.php | 300 +++ includes/function.php | 180 ++ {pages/includes => includes}/noms.php | 185 +- includes/onyx/access.php | 12 + includes/onyx/ban.xlist | 1 + includes/onyx/bdd.class.php | 292 +++ includes/onyx/config.xconf | 75 + includes/onyx/kernel.php | 252 ++ includes/onyx/logs/16-05-2008.log | 1 + includes/onyx/logs/16-05-2008.xlog | 1 + includes/onyx/logs/php.log | 0 includes/onyx/phpbb_functions.php | 111 + includes/onyx/session.class.php | 122 + .../onyx/templates/libs/Config_File.class.php | 389 +++ includes/onyx/templates/libs/Smarty.class.php | 1960 ++++++++++++++ .../templates/libs/Smarty_Compiler.class.php | 2325 +++++++++++++++++ includes/onyx/templates/libs/debug.tpl | 157 ++ .../core.assemble_plugin_filepath.php | 67 + .../core.assign_smarty_interface.php | 43 + .../internals/core.create_dir_structure.php | 79 + .../internals/core.display_debug_console.php | 61 + .../libs/internals/core.get_include_path.php | 44 + .../libs/internals/core.get_microtime.php | 23 + .../libs/internals/core.get_php_resource.php | 80 + .../libs/internals/core.is_secure.php | 59 + .../libs/internals/core.is_trusted.php | 47 + .../libs/internals/core.load_plugins.php | 125 + .../internals/core.load_resource_plugin.php | 74 + .../internals/core.process_cached_inserts.php | 71 + .../core.process_compiled_include.php | 37 + .../libs/internals/core.read_cache_file.php | 101 + .../templates/libs/internals/core.rm_auto.php | 71 + .../templates/libs/internals/core.rmdir.php | 54 + .../internals/core.run_insert_handler.php | 71 + .../internals/core.smarty_include_php.php | 50 + .../libs/internals/core.write_cache_file.php | 96 + .../internals/core.write_compiled_include.php | 91 + .../core.write_compiled_resource.php | 35 + .../libs/internals/core.write_file.php | 54 + .../libs/plugins/block.textformat.php | 103 + .../libs/plugins/compiler.assign.php | 40 + .../plugins/function.assign_debug_info.php | 40 + .../libs/plugins/function.config_load.php | 142 + .../libs/plugins/function.counter.php | 80 + .../templates/libs/plugins/function.cycle.php | 102 + .../templates/libs/plugins/function.debug.php | 35 + .../templates/libs/plugins/function.eval.php | 49 + .../templates/libs/plugins/function.fetch.php | 221 ++ .../libs/plugins/function.html_checkboxes.php | 143 + .../libs/plugins/function.html_image.php | 142 + .../libs/plugins/function.html_options.php | 122 + .../libs/plugins/function.html_radios.php | 156 ++ .../plugins/function.html_select_date.php | 331 +++ .../plugins/function.html_select_time.php | 194 ++ .../libs/plugins/function.html_table.php | 177 ++ .../libs/plugins/function.mailto.php | 165 ++ .../templates/libs/plugins/function.math.php | 84 + .../templates/libs/plugins/function.popup.php | 119 + .../libs/plugins/function.popup_init.php | 40 + .../libs/plugins/modifier.capitalize.php | 43 + .../templates/libs/plugins/modifier.cat.php | 33 + .../plugins/modifier.count_characters.php | 32 + .../plugins/modifier.count_paragraphs.php | 29 + .../libs/plugins/modifier.count_sentences.php | 29 + .../libs/plugins/modifier.count_words.php | 33 + .../libs/plugins/modifier.date_format.php | 58 + .../libs/plugins/modifier.debug_print_var.php | 90 + .../libs/plugins/modifier.default.php | 32 + .../libs/plugins/modifier.escape.php | 93 + .../libs/plugins/modifier.indent.php | 28 + .../templates/libs/plugins/modifier.lower.php | 26 + .../templates/libs/plugins/modifier.nl2br.php | 35 + .../libs/plugins/modifier.regex_replace.php | 37 + .../libs/plugins/modifier.replace.php | 30 + .../libs/plugins/modifier.spacify.php | 30 + .../libs/plugins/modifier.string_format.php | 29 + .../templates/libs/plugins/modifier.strip.php | 33 + .../libs/plugins/modifier.strip_tags.php | 32 + .../libs/plugins/modifier.truncate.php | 50 + .../templates/libs/plugins/modifier.upper.php | 26 + .../libs/plugins/modifier.wordwrap.php | 29 + .../plugins/outputfilter.trimwhitespace.php | 75 + .../plugins/shared.escape_special_chars.php | 31 + .../libs/plugins/shared.make_timestamp.php | 46 + .../onyx/templates/templates/admin/vp.tpl | 6 + .../onyx/templates/templates/blog/erreur.xtpl | 3 + .../onyx/templates/templates/blog/footer.xtpl | 9 + .../onyx/templates/templates/blog/header.xtpl | 64 + .../onyx/templates/templates/blog/index.xtpl | 5 + .../onyx/templates/templates/blog/page.xtpl | 34 + .../onyx/templates/templates/cms/erreur.tpl | 3 + .../onyx/templates/templates/cms/footer.tpl | 14 + .../onyx/templates/templates/cms/header.tpl | 23 + .../templates/templates/cms/inscription.tpl | 52 + .../onyx/templates/templates/cms/mini.tpl | 8 + .../onyx/templates/templates/cms/secours.tpl | 14 + .../onyx/templates/templates/cms/test.tpl | 71 + .../onyx/templates/templates/cms/vide.tpl | 3 + .../onyx/templates/templates/game/accueil.tpl | 19 + .../templates/game/alliance_accueil.tpl | 68 + .../templates/game/alliance_adm_admin.tpl | 49 + .../templates/game/alliance_adm_chat.tpl | 28 + .../templates/game/alliance_adm_ecritures.tpl | 16 + .../templates/game/alliance_adm_grades.tpl | 35 + .../game/alliance_adm_grades_add.tpl | 43 + .../templates/game/alliance_adm_header.tpl | 6 + .../templates/game/alliance_adm_membres.tpl | 54 + .../templates/game/alliance_chat.tpl | 27 + .../templates/game/alliance_liste.tpl | 27 + .../templates/game/alliance_nm_accueil.tpl | 36 + .../templates/game/alliance_nm_fonder.tpl | 39 + .../templates/game/alliance_nm_postuler.tpl | 23 + .../templates/game/alliance_nm_search.tpl | 20 + .../templates/game/alliance_nm_view.tpl | 39 + .../onyx/templates/templates/game/arbre.tpl | 46 + .../templates/templates/game/batiments.tpl | 54 + .../onyx/templates/templates/game/bugs.tpl | 18 + .../onyx/templates/templates/game/carte.tpl | 34 + .../templates/game/chantierspatial.tpl | 51 + .../templates/templates/game/classement.tpl | 12 + .../templates/templates/game/defenses.tpl | 51 + .../onyx/templates/templates/game/envoyer.tpl | 12 + .../onyx/templates/templates/game/erreur.tpl | 5 + .../onyx/templates/templates/game/flotte1.tpl | 45 + .../onyx/templates/templates/game/flotte2.tpl | 32 + .../onyx/templates/templates/game/flotten.tpl | 18 + .../onyx/templates/templates/game/footer.tpl | 15 + .../onyx/templates/templates/game/game.lnk | Bin 0 -> 663 bytes .../onyx/templates/templates/game/header.tpl | 52 + .../templates/templates/game/laboratoire.tpl | 56 + .../templates/templates/game/messagerie.tpl | 23 + .../onyx/templates/templates/game/options.tpl | 24 + .../templates/game/prochainement.tpl | 5 + .../onyx/templates/templates/game/rename.tpl | 12 + .../templates/templates/game/ressources.tpl | 16 + .../onyx/templates/templates/game/version.tpl | 10 + includes/onyx/templates/templates/game/vp.tpl | 6 + includes/ressources.php | 166 ++ includes/securite.php | 67 + includes/tables.php | 24 + includes/vars.php | 550 ++++ index.php | 342 ++- indexB.php | 21 - inscription.php | 57 - inscription_validation.php | 110 - js/cms.js | 18 + js/flotte.js | 80 + js/fonctions.js | 75 + js/img_manques.js | 16 + js/infos.js | 62 + js/inscription.js | 45 + js/prototype.js | 499 ++-- logout.php | 13 - pages/admin.php | 20 - pages/ajax_flotte.php | 82 - pages/annul_bat.php | 109 - pages/annul_def.php | 84 - pages/annul_tec.php | 136 - pages/annul_vais.php | 124 - pages/anul_tec.php | 130 - pages/arbre_bat_covenant.php | 165 -- pages/arbre_bat_humain.php | 166 -- pages/arbre_techno_covenant.php | 157 -- pages/arbre_techno_humain.php | 165 -- pages/arbre_unitees_covenant.php | 140 - pages/arbre_unitees_humain.php | 140 - pages/arbre_vaisseaux_covenant.php | 154 -- pages/arbre_vaisseaux_humain.php | 154 -- pages/arbre_vehicules_covenant.php | 161 -- pages/arbre_vehicules_humain.php | 161 -- pages/base.php | 1359 ---------- pages/batiment.php | 273 -- pages/batiment_validation.php | 116 - pages/carte.php | 84 - pages/chantier_spatial.php | 297 --- pages/chantier_spatial_validation.php | 141 - pages/charg.php | 27 - pages/common.php | 25 - pages/creerflotte.php | 191 -- pages/defense.php | 212 -- pages/defense_validation.php | 94 - pages/depart.php | 104 - pages/descriptions.php | 170 -- pages/diz/descriptions/bdd.php | 108 - pages/diz/descriptions/description.php | 58 - pages/diz/descriptions/description_bat.php | 58 - pages/diz/descriptions/description_pt.php | 73 - pages/diz/descriptions/diz/1720.jpg | Bin 252529 -> 0 bytes pages/diz/descriptions/diz/1782.jpg | Bin 254162 -> 0 bytes pages/diz/descriptions/diz/1783.jpg | Bin 1263791 -> 0 bytes pages/diz/descriptions/diz/180.jpg | Bin 102360 -> 0 bytes pages/diz/descriptions/diz/180p.jpg | Bin 16992 -> 0 bytes pages/diz/descriptions/diz/181.jpg | Bin 17105 -> 0 bytes pages/diz/descriptions/diz/182.jpg | Bin 17126 -> 0 bytes pages/diz/descriptions/diz/183.jpg | Bin 103041 -> 0 bytes pages/diz/descriptions/diz/205.jpg | Bin 18675 -> 0 bytes pages/diz/descriptions/diz/Copy of fond.jpg | Bin 1337886 -> 0 bytes pages/diz/descriptions/diz/Thumbs.db | Bin 27648 -> 0 bytes pages/diz/descriptions/diz/admin.css | 49 - pages/diz/descriptions/diz/base.anc.css | 215 -- pages/diz/descriptions/diz/base.css | 253 -- pages/diz/descriptions/diz/fond.jpg | Bin 1337886 -> 0 bytes pages/diz/descriptions/diz/fond/Thumbs.db | Bin 10240 -> 0 bytes pages/diz/descriptions/diz/fond/apb.jpg | Bin 2366 -> 0 bytes pages/diz/descriptions/diz/fond/apc.jpg | Bin 1460 -> 0 bytes pages/diz/descriptions/diz/fond/apfin.jpg | Bin 1386 -> 0 bytes pages/diz/descriptions/diz/fond/apmenu.jpg | Bin 827 -> 0 bytes pages/diz/descriptions/diz/fondf.jpg | Bin 1263791 -> 0 bytes pages/diz/descriptions/diz/fondfp.jpg | Bin 253818 -> 0 bytes pages/diz/descriptions/diz/m.gif | Bin 591 -> 0 bytes pages/diz/descriptions/diz/panel/Thumbs.db | Bin 6656 -> 0 bytes .../diz/descriptions/diz/panel/background.jpg | Bin 6014 -> 0 bytes pages/diz/descriptions/diz/planete/Thumbs.db | Bin 162816 -> 0 bytes .../diz/descriptions/diz/planete/anneaux1.jpg | Bin 51681 -> 0 bytes .../descriptions/diz/planete/asteroide1.jpg | Bin 29157 -> 0 bytes .../descriptions/diz/planete/asteroide2.jpg | Bin 30055 -> 0 bytes .../descriptions/diz/planete/asteroide4.jpg | Bin 29784 -> 0 bytes .../descriptions/diz/planete/asteroide5.jpg | Bin 32602 -> 0 bytes .../diz/descriptions/diz/planete/desert2.jpg | Bin 27354 -> 0 bytes .../diz/descriptions/diz/planete/etrange1.jpg | Bin 26473 -> 0 bytes .../diz/descriptions/diz/planete/etrange3.jpg | Bin 20382 -> 0 bytes .../diz/descriptions/diz/planete/etrange6.jpg | Bin 29138 -> 0 bytes .../diz/descriptions/diz/planete/fusion2.jpg | Bin 24461 -> 0 bytes .../diz/descriptions/diz/planete/normal3.jpg | Bin 32398 -> 0 bytes .../diz/descriptions/diz/planete/normal4.jpg | Bin 34050 -> 0 bytes .../diz/descriptions/diz/planete/normal5.jpg | Bin 37908 -> 0 bytes pages/diz/descriptions/diz/planete/ocean2.jpg | Bin 33101 -> 0 bytes pages/diz/descriptions/diz/planete/rien1.jpg | Bin 34813 -> 0 bytes pages/diz/descriptions/diz/planete/rien10.jpg | Bin 35549 -> 0 bytes pages/diz/descriptions/diz/planete/rien2.jpg | Bin 31162 -> 0 bytes pages/diz/descriptions/diz/planete/rien3.jpg | Bin 26994 -> 0 bytes pages/diz/descriptions/diz/planete/rien4.jpg | Bin 29816 -> 0 bytes pages/diz/descriptions/diz/planete/rien5.jpg | Bin 26777 -> 0 bytes pages/diz/descriptions/diz/planete/rien6.jpg | Bin 27790 -> 0 bytes pages/diz/descriptions/diz/planete/rien7.jpg | Bin 30178 -> 0 bytes pages/diz/descriptions/diz/planete/rien8.jpg | Bin 28342 -> 0 bytes pages/diz/descriptions/diz/planete/rien9.jpg | Bin 33939 -> 0 bytes pages/diz/descriptions/diz/planete/soleil.jpg | Bin 37819 -> 0 bytes pages/diz/descriptions/flotte_dep.php | 428 --- pages/diz/forerunner/base.css | 381 --- pages/diz/forerunner/images/IA.jpg | Bin 35944 -> 0 bytes pages/diz/forerunner/images/armement.jpg | Bin 22797 -> 0 bytes pages/diz/forerunner/images/button.gif | Bin 142 -> 0 bytes pages/diz/forerunner/images/button_hover.gif | Bin 142 -> 0 bytes pages/diz/forerunner/images/cargo.jpg | Bin 33249 -> 0 bytes pages/diz/forerunner/images/cristal.png | Bin 30172 -> 0 bytes pages/diz/forerunner/images/dca_lourde.jpg | Bin 45185 -> 0 bytes pages/diz/forerunner/images/drone.jpg | Bin 30718 -> 0 bytes pages/diz/forerunner/images/fregate.jpg | Bin 36770 -> 0 bytes pages/diz/forerunner/images/header.jpg | Bin 66184 -> 0 bytes pages/diz/forerunner/images/hydrogene.jpg | Bin 39550 -> 0 bytes pages/diz/forerunner/images/metal.png | Bin 30694 -> 0 bytes pages/diz/forerunner/images/msg.gif | Bin 588 -> 0 bytes pages/diz/forerunner/images/planete.jpg | Bin 45523 -> 0 bytes pages/diz/forerunner/images/planete2.jpg | Bin 45189 -> 0 bytes pages/diz/forerunner/images/planete3.jpg | Bin 38033 -> 0 bytes pages/diz/forerunner/images/planete4.jpg | Bin 47472 -> 0 bytes pages/diz/forerunner/images/radar.jpg | Bin 61214 -> 0 bytes pages/diz/forerunner/menu.js | 149 -- pages/diz/humain/1720.jpg | Bin 252529 -> 0 bytes pages/diz/humain/Thumbs.db | Bin 4608 -> 0 bytes pages/diz/humain/base.css | 270 -- pages/flotte.js | 42 - pages/flotte.php | 83 - pages/flotte_detail.php | 60 - pages/images/Thumbs.db | Bin 10752 -> 0 bytes pages/images/arme.jpg | Bin 28380 -> 0 bytes pages/images/batiments/Thumbs.db | Bin 8192 -> 0 bytes pages/images/batiments/mine_c.png | Bin 30172 -> 0 bytes pages/images/batiments/mine_m.png | Bin 30694 -> 0 bytes pages/images/caserne/Thumbs.db | Bin 7680 -> 0 bytes pages/images/menu/Thumbs.db | Bin 5632 -> 0 bytes pages/images/menu/espaceur.gif | Bin 43 -> 0 bytes pages/images/menu/f_header.jpg | Bin 66184 -> 0 bytes pages/images/menu/h_header.jpg | Bin 72041 -> 0 bytes pages/images/menu/menu_01.jpg | Bin 790 -> 0 bytes pages/images/menu/menu_01.png | Bin 174 -> 0 bytes pages/images/menu/menu_02.jpg | Bin 1157 -> 0 bytes pages/images/menu/menu_02.png | Bin 6242 -> 0 bytes pages/images/menu/menu_03.jpg | Bin 537 -> 0 bytes pages/images/menu/menu_03.png | Bin 4674 -> 0 bytes pages/images/menu/menu_04.jpg | Bin 686 -> 0 bytes pages/images/menu/menu_04.png | Bin 1183 -> 0 bytes pages/images/menu/menu_05.jpg | Bin 559 -> 0 bytes pages/images/menu/menu_05.png | Bin 2477 -> 0 bytes pages/images/menu/menu_05_2.jpg | Bin 7308 -> 0 bytes pages/images/menu/menu_06.jpg | Bin 2503 -> 0 bytes pages/images/menu/menu_06.png | Bin 716 -> 0 bytes pages/images/menu/menu_07.jpg | Bin 601 -> 0 bytes pages/images/menu/menu_07.png | Bin 719 -> 0 bytes pages/images/menu/menu_08.jpg | Bin 2961 -> 0 bytes pages/images/menu/menu_08.png | Bin 3608 -> 0 bytes pages/images/menu/menu_09.jpg | Bin 786 -> 0 bytes pages/images/menu/menu_09.png | Bin 5927 -> 0 bytes pages/images/menu/menu_10.jpg | Bin 2218 -> 0 bytes pages/images/menu/menu_10.png | Bin 1217 -> 0 bytes pages/images/menu/menu_11.jpg | Bin 791 -> 0 bytes pages/images/menu/menu_11.png | Bin 4991 -> 0 bytes pages/images/menu/menu_12.jpg | Bin 2405 -> 0 bytes pages/images/menu/menu_12.png | Bin 856 -> 0 bytes pages/images/menu/menu_13.jpg | Bin 699 -> 0 bytes pages/images/menu/menu_13.png | Bin 4762 -> 0 bytes pages/images/menu/menu_14.jpg | Bin 2293 -> 0 bytes pages/images/menu/menu_14.png | Bin 872 -> 0 bytes pages/images/menu/menu_15.jpg | Bin 838 -> 0 bytes pages/images/menu/menu_15.png | Bin 3976 -> 0 bytes pages/images/menu/menu_16.jpg | Bin 2779 -> 0 bytes pages/images/menu/menu_16.png | Bin 855 -> 0 bytes pages/images/menu/menu_17.jpg | Bin 919 -> 0 bytes pages/images/menu/menu_17.png | Bin 4724 -> 0 bytes pages/images/menu/menu_18.jpg | Bin 2885 -> 0 bytes pages/images/menu/menu_18.png | Bin 865 -> 0 bytes pages/images/menu/menu_19.jpg | Bin 679 -> 0 bytes pages/images/menu/menu_19.png | Bin 5064 -> 0 bytes pages/images/menu/menu_20.jpg | Bin 2297 -> 0 bytes pages/images/menu/menu_20.png | Bin 864 -> 0 bytes pages/images/menu/menu_21.jpg | Bin 894 -> 0 bytes pages/images/menu/menu_21.png | Bin 4514 -> 0 bytes pages/images/menu/menu_22.jpg | Bin 2481 -> 0 bytes pages/images/menu/menu_22.png | Bin 868 -> 0 bytes pages/images/menu/menu_23.jpg | Bin 847 -> 0 bytes pages/images/menu/menu_23.png | Bin 4399 -> 0 bytes pages/images/menu/menu_24.jpg | Bin 3014 -> 0 bytes pages/images/menu/menu_24.png | Bin 929 -> 0 bytes pages/images/menu/menu_25.jpg | Bin 1656 -> 0 bytes pages/images/menu/menu_25.png | Bin 4412 -> 0 bytes pages/images/menu/menu_26.jpg | Bin 2472 -> 0 bytes pages/images/menu/menu_26.png | Bin 3229 -> 0 bytes pages/images/menu/menu_27.jpg | Bin 887 -> 0 bytes pages/images/menu/menu_27.png | Bin 4310 -> 0 bytes pages/images/menu/menu_28.jpg | Bin 2347 -> 0 bytes pages/images/menu/menu_28.png | Bin 827 -> 0 bytes pages/images/menu/menu_29.jpg | Bin 910 -> 0 bytes pages/images/menu/menu_29.png | Bin 3790 -> 0 bytes pages/images/menu/menu_30.jpg | Bin 2135 -> 0 bytes pages/images/menu/menu_30.png | Bin 720 -> 0 bytes pages/images/menu/menu_31.jpg | Bin 676 -> 0 bytes pages/images/menu/menu_31.png | Bin 3623 -> 0 bytes pages/images/menu/menu_32.jpg | Bin 2127 -> 0 bytes pages/images/menu/menu_32.png | Bin 728 -> 0 bytes pages/images/menu/menu_33.jpg | Bin 839 -> 0 bytes pages/images/menu/menu_33.png | Bin 4010 -> 0 bytes pages/images/menu/menu_34.jpg | Bin 2606 -> 0 bytes pages/images/menu/menu_34.png | Bin 795 -> 0 bytes pages/images/menu/menu_35.jpg | Bin 860 -> 0 bytes pages/images/menu/menu_35.png | Bin 4836 -> 0 bytes pages/images/menu/menu_36.jpg | Bin 2273 -> 0 bytes pages/images/menu/menu_36.png | Bin 795 -> 0 bytes pages/images/menu/menu_37.jpg | Bin 1734 -> 0 bytes pages/images/menu/menu_37.png | Bin 3851 -> 0 bytes pages/images/menu/menu_38.jpg | Bin 2365 -> 0 bytes pages/images/menu/menu_38.png | Bin 2673 -> 0 bytes pages/images/menu/menu_39.jpg | Bin 837 -> 0 bytes pages/images/menu/menu_39.png | Bin 3343 -> 0 bytes pages/images/menu/menu_40.jpg | Bin 2230 -> 0 bytes pages/images/menu/menu_40.png | Bin 620 -> 0 bytes pages/images/menu/menu_41.jpg | Bin 864 -> 0 bytes pages/images/menu/menu_41.png | Bin 3072 -> 0 bytes pages/images/menu/menu_42.jpg | Bin 2433 -> 0 bytes pages/images/menu/menu_42.png | Bin 734 -> 0 bytes pages/images/menu/menu_43.jpg | Bin 644 -> 0 bytes pages/images/menu/menu_43.png | Bin 3291 -> 0 bytes pages/images/menu/menu_44.jpg | Bin 2158 -> 0 bytes pages/images/menu/menu_44.png | Bin 666 -> 0 bytes pages/images/menu/menu_45.jpg | Bin 808 -> 0 bytes pages/images/menu/menu_45.png | Bin 3011 -> 0 bytes pages/images/menu/menu_46.jpg | Bin 2775 -> 0 bytes pages/images/menu/menu_46.png | Bin 715 -> 0 bytes pages/images/menu/menu_47.jpg | Bin 842 -> 0 bytes pages/images/menu/menu_47.png | Bin 3557 -> 0 bytes pages/images/menu/menu_48.jpg | Bin 1973 -> 0 bytes pages/images/menu/menu_48.png | Bin 774 -> 0 bytes pages/images/menu/menu_49.jpg | Bin 638 -> 0 bytes pages/images/menu/menu_49.png | Bin 3500 -> 0 bytes pages/images/menu/menu_50.jpg | Bin 2538 -> 0 bytes pages/images/menu/menu_50.png | Bin 1477 -> 0 bytes pages/images/menu/menu_51.jpg | Bin 1000 -> 0 bytes pages/images/menu/menu_51.png | Bin 4359 -> 0 bytes pages/images/menu/menu_52.png | Bin 304 -> 0 bytes pages/images/menu/menu_53.png | Bin 4081 -> 0 bytes pages/images/menu/menu_F.jpg | Bin 1734 -> 0 bytes pages/images/planetecrackerrp3.jpg | Bin 32291 -> 0 bytes pages/images/planetes/1.jpg | Bin 45523 -> 0 bytes pages/images/planetes/10.jpg | Bin 53892 -> 0 bytes pages/images/planetes/11.jpg | Bin 63902 -> 0 bytes pages/images/planetes/12.jpg | Bin 69627 -> 0 bytes pages/images/planetes/13.jpg | Bin 31014 -> 0 bytes pages/images/planetes/14.jpg | Bin 28046 -> 0 bytes pages/images/planetes/15.jpg | Bin 36131 -> 0 bytes pages/images/planetes/2.jpg | Bin 38033 -> 0 bytes pages/images/planetes/3.jpg | Bin 45189 -> 0 bytes pages/images/planetes/4.jpg | Bin 47472 -> 0 bytes pages/images/planetes/5.jpg | Bin 68252 -> 0 bytes pages/images/planetes/6.jpg | Bin 71940 -> 0 bytes pages/images/planetes/7.jpg | Bin 44956 -> 0 bytes pages/images/planetes/8.jpg | Bin 43716 -> 0 bytes pages/images/planetes/9.jpg | Bin 44212 -> 0 bytes pages/images/planetes/Thumbs.db | Bin 8192 -> 0 bytes pages/images/technologies/Thumbs.db | Bin 7680 -> 0 bytes pages/images/technologies/blindage.jpg | Bin 40655 -> 0 bytes pages/images/terrestre/Thumbs.db | Bin 8192 -> 0 bytes pages/images/terrestre/dca_legere.jpg | Bin 52957 -> 0 bytes pages/images/terrestre/dca_lourde.jpg | Bin 45185 -> 0 bytes pages/images/terrestre/tourelle_fixe.jpg | Bin 41080 -> 0 bytes pages/images/vaisseaux/Thumbs.db | Bin 7680 -> 0 bytes pages/images/vaisseaux/img_na_ig.jpg | Bin 26880 -> 0 bytes pages/images/vaisseaux/nanw9.jpg | Bin 18756 -> 0 bytes pages/images/vaisseaux/pv.jpg | Bin 28428 -> 0 bytes pages/includes/batiment_ajout.php | 75 - pages/includes/bdd.php | 169 -- pages/includes/chantier_spacial_ajout.php | 66 - pages/includes/defense_ajout.php | 61 - pages/includes/flotte.php | 508 ---- pages/includes/laboratoire_ajout.php | 53 - pages/includes/ressources.php | 216 -- pages/includes/vars.php | 65 - pages/laboratoire.php | 276 -- pages/laboratoire_validation.php | 122 - pages/menu.php | 412 --- pages/messagerie.php | 120 - pages/ndepart.php | 25 - pages/nom.php | 18 - pages/options.php | 72 - pages/options_validation.php | 123 - pages/prochainement.php | 38 - pages/rapport_bug.php | 55 - pages/rename.php | 38 - pages/ressource.php | 114 - pages/ressources.php | 130 - pages/suppr_msg.php | 25 - pages/testcombat.php | 14 - pages/time.js | 31 - pages/validation_bug.php | 24 - pages/validation_vaisseaux.php | 200 -- pages/version.php | 45 - pages/version_ecrire.php | 40 - pages/version_ecrire_validation.php | 33 - pages/voir_classement.php | 92 - secours.php | 35 + securite.php | 83 - securitebanni.php | 13 - snow.js | 117 - snow1.gif | Bin 845 -> 0 bytes style.css | 133 - template.php | 478 ---- templates/cms/default.css | 1081 ++++++++ templates/cms/defaultANCIEN.css | 1036 ++++++++ templates/cms/images/all.gif | Bin 0 -> 89 bytes templates/cms/images/annonce_bg.gif | Bin 0 -> 543 bytes templates/cms/images/annonce_titre.gif | Bin 0 -> 66 bytes templates/cms/images/block_bg.gif | Bin 0 -> 35 bytes templates/cms/images/block_footer.gif | Bin 0 -> 66 bytes templates/cms/images/block_footer2.gif | Bin 0 -> 66 bytes templates/cms/images/block_footer3.gif | Bin 0 -> 67 bytes templates/cms/images/block_footer4.gif | Bin 0 -> 66 bytes templates/cms/images/block_header.gif | Bin 0 -> 121 bytes templates/cms/images/block_header2.gif | Bin 0 -> 183 bytes templates/cms/images/block_header3.gif | Bin 0 -> 68 bytes templates/cms/images/button.gif | Bin 0 -> 3960 bytes templates/cms/images/com.gif | Bin 0 -> 544 bytes templates/cms/images/connexion_plus.gif | Bin 0 -> 77 bytes templates/cms/images/cornerbt.gif | Bin 0 -> 1024 bytes templates/cms/images/cornertop.gif | Bin 0 -> 1017 bytes templates/cms/images/date.gif | Bin 0 -> 70 bytes templates/cms/images/date_bg.gif | Bin 0 -> 35 bytes templates/cms/images/fleche.gif | Bin 0 -> 562 bytes templates/cms/images/footer.gif | Bin 0 -> 316 bytes templates/cms/images/header.gif | Bin 0 -> 301 bytes templates/cms/images/header.jpg | Bin 0 -> 20279 bytes templates/cms/images/inscription.png | Bin 0 -> 21853 bytes templates/cms/images/link.gif | Bin 0 -> 74 bytes templates/cms/images/new.gif | Bin 0 -> 552 bytes templates/{csnu => cms}/images/ok.gif | Bin templates/cms/images/ombre_bt.gif | Bin 0 -> 845 bytes .../cms/images}/recherche.gif | Bin .../menu => templates/cms/images}/rss.gif | Bin templates/covenants.css | 921 +++++++ templates/csnu.css | 921 +++++++ templates/csnu/base.css | 366 --- templates/csnu/base.tpl | 65 - templates/csnu/depart.tpl | 12 - templates/csnu/images/Thumbs.db | Bin 22528 -> 0 bytes templates/csnu/images/button.gif | Bin 146 -> 0 bytes templates/csnu/images/button_hover.gif | Bin 2354 -> 0 bytes templates/csnu/images/menu.gif | Bin 152 -> 0 bytes templates/csnu/rename.tpl | 22 - templates/defaut.tpl | 20 - templates/forerunner/base.css | 381 --- templates/forerunner/base.tpl | 54 - templates/forerunner/batiments.tpl | 22 - templates/forerunner/carte.tpl | 39 - templates/forerunner/chantier_spatial.tpl | 22 - templates/forerunner/defaut.tpl | 20 - templates/forerunner/defense.tpl | 22 - templates/forerunner/depart.tpl | 10 - templates/forerunner/flotte1.tpl | 31 - templates/forerunner/flotte2.tpl | 74 - templates/forerunner/flotte3.tpl | 31 - templates/forerunner/images/IA.jpg | Bin 35944 -> 0 bytes templates/forerunner/images/Thumbs.db | Bin 154624 -> 0 bytes templates/forerunner/images/armement.jpg | Bin 22797 -> 0 bytes templates/forerunner/images/button.gif | Bin 142 -> 0 bytes templates/forerunner/images/button_hover.gif | Bin 142 -> 0 bytes templates/forerunner/images/cargo.jpg | Bin 33249 -> 0 bytes templates/forerunner/images/cristal.png | Bin 30172 -> 0 bytes templates/forerunner/images/dca_legere.jpg | Bin 52957 -> 0 bytes templates/forerunner/images/dca_lourde.jpg | Bin 45185 -> 0 bytes templates/forerunner/images/drone.jpg | Bin 30718 -> 0 bytes templates/forerunner/images/fregate.jpg | Bin 36770 -> 0 bytes templates/forerunner/images/header.jpg | Bin 66184 -> 0 bytes templates/forerunner/images/hydrogene.jpg | Bin 39550 -> 0 bytes templates/forerunner/images/metal.png | Bin 30694 -> 0 bytes templates/forerunner/images/msg.gif | Bin 588 -> 0 bytes templates/forerunner/images/planete.jpg | Bin 45523 -> 0 bytes templates/forerunner/images/planete2.jpg | Bin 45189 -> 0 bytes templates/forerunner/images/planete3.jpg | Bin 38033 -> 0 bytes templates/forerunner/images/planete4.jpg | Bin 47472 -> 0 bytes templates/forerunner/images/radar.jpg | Bin 61214 -> 0 bytes templates/forerunner/images/tourelle_fixe.jpg | Bin 41080 -> 0 bytes templates/forerunner/laboratoire.tpl | 22 - templates/forerunner/manque.tpl | 1 - templates/forerunner/menu.js | 149 -- templates/forerunner/messagerie_accueil.tpl | 62 - templates/forerunner/messagerie_lire.tpl | 35 - .../forerunner/messagerie_lirerapport.tpl | 31 - templates/forerunner/messagerie_nouveau.tpl | 31 - templates/forerunner/options.tpl | 51 - templates/forerunner/rename.tpl | 22 - templates/forerunner/ressources.tpl | 22 - templates/forerunner/version.tpl | 15 - templates/humain/1720.jpg | Bin 252529 -> 0 bytes templates/humain/base.css | 270 -- templates/humain/base.tpl | 63 - templates/humain/batiments.tpl | 52 - templates/humain/carte.tpl | 39 - templates/humain/chantier_spatial.tpl | 55 - templates/humain/defaut.tpl | 20 - templates/humain/defense.tpl | 55 - templates/humain/depart.tpl | 47 - templates/humain/flotte1.tpl | 27 - templates/humain/flotte2.tpl | 70 - templates/humain/flotte3.tpl | 27 - templates/humain/laboratoire.tpl | 50 - templates/humain/manque.tpl | 7 - templates/humain/messagerie_accueil.tpl | 54 - templates/humain/messagerie_lire.tpl | 31 - templates/humain/messagerie_lirerapport.tpl | 27 - templates/humain/messagerie_nouveau.tpl | 27 - templates/humain/options.tpl | 47 - templates/humain/rename.tpl | 22 - templates/humain/ressources.tpl | 22 - templates/humain/version.tpl | 15 - templates/images/background.jpg | Bin 0 -> 15211 bytes templates/images/background2.jpg | Bin 0 -> 14142 bytes templates/{csnu => }/images/barre.gif | Bin templates/images/barre2.gif | Bin 0 -> 327 bytes templates/images/button.gif | Bin 0 -> 2829 bytes templates/images/button2.gif | Bin 0 -> 3136 bytes templates/images/cornerbt.gif | Bin 0 -> 192 bytes templates/images/cornerbt2.gif | Bin 0 -> 221 bytes templates/images/cornertop.gif | Bin 0 -> 190 bytes templates/images/cornertop2.gif | Bin 0 -> 190 bytes templates/{csnu => }/images/corps.gif | Bin templates/images/corps2.gif | Bin 0 -> 83 bytes templates/{csnu => }/images/corpsbt.gif | Bin templates/images/corpsbt2.gif | Bin 0 -> 449 bytes templates/{csnu => }/images/corpstop.gif | Bin templates/images/corpstop2.gif | Bin 0 -> 447 bytes templates/images/dd.gif | Bin 0 -> 253 bytes templates/images/dd2.gif | Bin 0 -> 258 bytes templates/images/dt.gif | Bin 0 -> 257 bytes templates/images/dt2.gif | Bin 0 -> 257 bytes templates/images/header.jpg | Bin 0 -> 25035 bytes templates/images/header2.jpg | Bin 0 -> 22796 bytes templates/images/menu.gif | Bin 0 -> 42 bytes templates/images/menu2.gif | Bin 0 -> 42 bytes templates/images/menu_bt.gif | Bin 0 -> 292 bytes templates/images/menu_bt2.gif | Bin 0 -> 298 bytes templates/images/menu_head.gif | Bin 0 -> 389 bytes templates/images/menu_head2.gif | Bin 0 -> 414 bytes templates/{csnu => }/images/menu_lien.gif | Bin templates/images/menu_lien2.gif | Bin 0 -> 88 bytes templates/images/msg.gif | Bin 0 -> 578 bytes templates/images/msg2.gif | Bin 0 -> 577 bytes templates/images/ok.gif | Bin 0 -> 155 bytes templates/{csnu => }/images/ombre_bt.gif | Bin templates/images/ombre_bt2.gif | Bin 0 -> 951 bytes templates/images/plus.gif | Bin 0 -> 372 bytes templates/images/plus2.gif | Bin 0 -> 632 bytes templates/{csnu => }/images/recherche.gif | Bin templates/{csnu => }/images/ressource.gif | Bin templates/images/ressource2.gif | Bin 0 -> 452 bytes templates/{csnu => }/images/rss.gif | Bin templates/index.tpl | 172 -- templates/stat_body.tpl | 32 - templates/stat_playertable.tpl | 13 - templates/stat_playertable_footer.tpl | 7 - templates/stat_playertable_header.tpl | 12 - textlog.php | 7 - verifLogin.php | 92 - 908 files changed, 22193 insertions(+), 17408 deletions(-) create mode 100644 Class/class.gerefile.php create mode 100644 Class/class.rapport.php delete mode 100644 Class/flotte.php delete mode 100644 Class/gererFile.php rename Class/{phpmailer.lang-en.php => phpmailer.lang-fr.php} (56%) delete mode 100644 Class/test/message.txt delete mode 100644 Class/test/phpmailer_test.php delete mode 100644 Class/test/phpunit.php delete mode 100644 Class/test/rocks.png rename pages/lancer_flotte.php => DELlancer_flotte.php (60%) delete mode 100644 Halo-Battle.PHPEditProject delete mode 100644 ab/sound.php delete mode 100644 ab/un.ttf delete mode 100644 ab/wave/1.WAV delete mode 100644 ab/wave/2.WAV delete mode 100644 ab/wave/3.WAV delete mode 100644 ab/wave/4.WAV delete mode 100644 ab/wave/5.wav delete mode 100644 ab/wave/6.WAV delete mode 100644 ab/wave/7.WAV delete mode 100644 ab/wave/8.WAV delete mode 100644 ab/wave/9.WAV delete mode 100644 ab/wave/A.WAV delete mode 100644 ab/wave/B.WAV delete mode 100644 ab/wave/C.WAV delete mode 100644 ab/wave/D.WAV delete mode 100644 ab/wave/E.WAV delete mode 100644 ab/wave/F.WAV delete mode 100644 ab/wave/G.WAV delete mode 100644 ab/wave/H.WAV delete mode 100644 ab/wave/I.WAV delete mode 100644 ab/wave/J.WAV delete mode 100644 ab/wave/K.WAV delete mode 100644 ab/wave/L.WAV delete mode 100644 ab/wave/M.WAV delete mode 100644 ab/wave/N.WAV delete mode 100644 ab/wave/O.WAV delete mode 100644 ab/wave/P.WAV delete mode 100644 ab/wave/Q.WAV delete mode 100644 ab/wave/R.WAV delete mode 100644 ab/wave/S.WAV delete mode 100644 ab/wave/T.WAV delete mode 100644 ab/wave/U.WAV delete mode 100644 ab/wave/V.WAV delete mode 100644 ab/wave/W.WAV delete mode 100644 ab/wave/X.WAV delete mode 100644 ab/wave/Y.WAV delete mode 100644 ab/wave/Z.WAV create mode 100644 admin.php create mode 100644 ajax_flotte.php delete mode 100644 b_index.php create mode 100644 captcha/.htaccess rename {ab => captcha}/0.TTF (100%) rename {ab => captcha}/1.TTF (100%) rename {ab => captcha}/2.TTF (100%) rename {ab => captcha}/fond_verif_img.gif (100%) rename {ab => captcha}/fond_verif_img.png (100%) rename ab/ab.php => captcha/image.php (91%) delete mode 100644 connectBDD.php create mode 100644 cron/optimize.php delete mode 100644 fonctions.php create mode 100644 game/accueil.php create mode 100644 game/alliances.php create mode 100644 game/arbre.php create mode 100644 game/batiments.php create mode 100644 game/bugs.php create mode 100644 game/carte.php create mode 100644 game/chantierspatial.php create mode 100644 game/classement.php create mode 100644 game/conditions.php create mode 100644 game/defenses.php create mode 100644 game/envoyer.php create mode 100644 game/flotte.php create mode 100644 game/inscription.php create mode 100644 game/laboratoire.php create mode 100644 game/logout.php create mode 100644 game/messagerie.php create mode 100644 game/njoueur.php create mode 100644 game/options.php create mode 100644 game/regles.php create mode 100644 game/rename.php create mode 100644 game/ressources.php create mode 100644 game/templates.lnk create mode 100644 game/validation.php create mode 100644 game/version.php delete mode 100644 images/Thumbs.db create mode 100644 images/accueil/annonce.jpg rename pages/images/missilearcheriz2.jpg => images/accueil/dossier.jpg (57%) create mode 100644 images/accueil/news_img.jpg create mode 100644 images/accueil/stat.png delete mode 100644 images/background.jpg rename {pages/images => images}/batiments/baseradardl3.jpg (100%) rename {pages/images => images}/batiments/caserncov0ry.jpg (100%) rename {pages/images => images}/batiments/caserne.jpg (100%) rename {pages/images => images}/batiments/centrale electrique.jpg (100%) rename {pages/images => images}/batiments/centrale solaire.jpg (100%) rename {pages/images => images}/batiments/centrale_f.png (100%) rename {pages/images => images}/batiments/centrale_fusion.jpg (100%) rename {pages/images => images}/batiments/centrale_s.JPG (100%) rename {pages/images => images}/batiments/centrederecherchegu9.jpg (100%) rename {pages/images => images}/batiments/chantier spatial.jpg (100%) rename {pages/images => images}/batiments/chantier-spatial.jpg (100%) rename {pages/images => images}/batiments/chantier-terrestre.jpg (100%) rename {pages/images => images}/batiments/chantier_terrestre.jpg (100%) rename {pages/images => images}/batiments/chantier_terrestre.png (100%) rename {pages/images => images}/batiments/chantierspatialff8.jpg (100%) rename {pages/images => images}/batiments/chantierterrestrecopybj8.jpg (100%) rename {pages/images => images}/batiments/chantierterrestrehg1.jpg (100%) rename {pages/images => images}/batiments/chantierterrestrenz5.jpg (100%) rename {pages/images => images}/batiments/covbase25ro.jpg (100%) rename {pages/images => images}/batiments/covielabocn5.jpg (100%) rename {pages/images => images}/batiments/cristaloo3.png (100%) rename {pages/images => images}/batiments/ecole militaire.jpg (100%) rename {pages/images => images}/batiments/ecole_militaire.jpg (100%) rename {pages/images => images}/batiments/entrepot.jpg (100%) rename {pages/images => images}/batiments/generateurafusiondb2.jpg (100%) rename {pages/images => images}/batiments/generateurdecristalmh5.jpg (100%) rename {pages/images => images}/batiments/generateurdemetalsg0.jpg (100%) rename {pages/images => images}/batiments/generateurdenergievb7.jpg (100%) rename {pages/images => images}/batiments/generateurdhydrognedh3.jpg (100%) rename {pages/images => images}/batiments/informatique.jpg (100%) rename {pages/images => images}/batiments/ionisateur.png (100%) rename {pages/images => images}/batiments/ioniseurdn4.jpg (100%) create mode 100644 images/batiments/mine_c.png create mode 100644 images/batiments/mine_m.jpg create mode 100644 images/batiments/mine_m.png rename {pages/images => images}/batiments/nanw9.jpg (100%) rename {pages/images => images}/batiments/oeil.png (100%) rename {pages/images => images}/batiments/oeilduprophetewj6.jpg (100%) rename {pages/images => images}/batiments/ordianteur_hologramme.jpg (100%) rename {pages/images => images}/batiments/purificateur_c.png (100%) rename {pages/images => images}/batiments/purificateur_m.png (100%) rename {pages/images => images}/batiments/purificateurdemtalhb3.jpg (100%) rename {pages/images => images}/batiments/radar.jpg (100%) rename {pages/images => images}/batiments/recherches.jpg (100%) rename {pages/images => images}/batiments/sanstitretruecolor09zn6.jpg (100%) rename {pages/images => images}/batiments/sanstitrevi7.jpg (100%) rename {pages/images => images}/batiments/search0yp.jpg (100%) rename {pages/images => images}/batiments/silo.jpg (100%) rename {pages/images => images}/batiments/solaire.jpg (100%) rename {pages/images => images}/batiments/stockage.jpg (100%) rename {pages/images => images}/batiments/stockagebasement1cs10bl.jpg (100%) rename {pages/images => images}/batiments/synchroniseur.jpg (100%) rename {pages/images => images}/caserne/TCAO2.jpg (100%) rename {pages/images => images}/caserne/brute.jpg (100%) rename {pages/images => images}/caserne/defenseurlegerhs8.jpg (100%) rename {pages/images => images}/caserne/defenseurlourdhr3.jpg (100%) rename {pages/images => images}/caserne/drone.jpg (100%) rename {pages/images => images}/caserne/elite.jpg (100%) rename {pages/images => images}/caserne/grenadier.jpg (100%) rename {pages/images => images}/caserne/grunt1.jpg (100%) rename {pages/images => images}/caserne/hunter1.jpg (100%) rename {pages/images => images}/caserne/ingenieur_c.jpg (100%) rename {pages/images => images}/caserne/ingenieurs.jpg (100%) rename {pages/images => images}/caserne/jackal.jpg (100%) rename {pages/images => images}/caserne/jackalsniper.jpg (100%) rename {pages/images => images}/caserne/marinehf0.jpg (100%) rename {pages/images => images}/caserne/marines.jpg (100%) rename {pages/images => images}/caserne/medecin.jpg (100%) rename {pages/images => images}/caserne/medecin_c.jpg (100%) rename {pages/images => images}/caserne/scoutma3.jpg (100%) rename {pages/images => images}/caserne/sentinellelegerecn4.jpg (100%) rename {pages/images => images}/caserne/sniper.jpg (100%) rename {pages/images => images}/caserne/spartan.jpg (100%) create mode 100644 images/covenant_na.jpg rename pages/images/caserne/nanw9.jpg => images/forerunner_na.jpg (100%) rename pages/images/caserne/img_na_ig.jpg => images/humain_na.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/1.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/10.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/11.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/12.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/13.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/14.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/15.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/2.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/3.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/4.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/5.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/6.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/7.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/8.jpg (100%) rename {pages/diz/descriptions/diz/planete => images/planetes}/9.jpg (100%) create mode 100644 images/smiles/biggrin.gif create mode 100644 images/smiles/confused.gif create mode 100644 images/smiles/cool.gif create mode 100644 images/smiles/eek.gif create mode 100644 images/smiles/evil.gif create mode 100644 images/smiles/lol.gif create mode 100644 images/smiles/mad.gif create mode 100644 images/smiles/neutral.gif create mode 100644 images/smiles/razz.gif create mode 100644 images/smiles/redface.gif create mode 100644 images/smiles/rolleyes.gif create mode 100644 images/smiles/sad.gif create mode 100644 images/smiles/smile.gif create mode 100644 images/smiles/surprised.gif create mode 100644 images/smiles/twisted.gif create mode 100644 images/smiles/wink.gif rename {pages/images => images}/technologies/IA4.jpg (100%) rename {pages/images => images}/technologies/Mjolnir.jpg (100%) rename {pages/images => images}/technologies/arme.jpg (100%) create mode 100644 images/technologies/arme.png rename {pages/images => images}/technologies/armement.jpg (100%) rename {pages/images => images}/technologies/armuremc8ij.jpg (100%) create mode 100644 images/technologies/blindage.jpg rename {pages/images => images}/technologies/boucliervaiseaucovenantey4.jpg (100%) rename {pages/images => images}/technologies/citydevlopment1px.jpg (100%) rename {pages/images => images}/technologies/commandement.jpg (100%) rename {pages/images => images}/technologies/detection.jpg (100%) rename {pages/images => images}/technologies/developpement.jpg (100%) rename {pages/images => images}/technologies/energie.jpg (100%) rename {pages/images => images}/technologies/hyperespace.jpg (100%) rename {pages/images => images}/technologies/hyperespace2.jpg (100%) rename {pages/images => images}/technologies/informatique1.jpg (100%) rename {pages/images => images}/technologies/medecin1.jpg (100%) rename {pages/images => images}/technologies/medecine.JPG (100%) rename {pages/images => images}/technologies/nucleartech9qm.jpg (100%) rename {pages/images => images}/technologies/plasma4yl.jpg (100%) rename {pages/images => images}/technologies/radar7zr.jpg (100%) rename {pages/images => images}/technologies/reacteur_f.jpg (100%) rename {pages/images => images}/technologies/reacteuracombustion.jpg (100%) rename {pages/images => images}/technologies/reacteurantigravyd1.jpg (100%) rename {pages/images => images}/technologies/reacteurfusionforerunnewu0.jpg (100%) rename {pages/images => images}/technologies/reacteurfusiontype1al5.jpg (100%) rename {pages/images => images}/technologies/reacteurfusiontype2nn6.jpg (100%) rename {pages/images => images}/technologies/sanstitretruecolor04no6.jpg (100%) rename {pages/images => images}/technologies/sousespacety4.jpg (100%) rename {pages/images => images}/technologies/tactique.jpg (100%) rename {pages/images => images}/technologies/techarmes1jk1.jpg (100%) rename {pages/images => images}/terrestre/M12A1_LAAV_Warthog.jpg (100%) rename {pages/images => images}/terrestre/M12G1_LAAV_Warthog.jpg (100%) rename {pages/images => images}/terrestre/M12_LRV_Warthog.jpg (100%) rename {pages/images => images}/terrestre/albatross.jpg (100%) rename {pages/images => images}/terrestre/apparition.jpg (100%) rename {pages/images => images}/terrestre/bansheeqp0.jpg (100%) rename {pages/images => images}/terrestre/boardingcraft.jpg (100%) rename {pages/images => images}/terrestre/csnulancemissileol5.jpg (100%) rename {pages/images => images}/terrestre/csnushortswordad3.jpg (100%) rename {pages/images => images}/terrestre/csnusparrowhawkkp4.jpg (100%) rename {pages/diz/forerunner/images => images/terrestre}/dca_legere.jpg (100%) create mode 100644 images/terrestre/dca_lourde.jpg rename {pages/images => images}/terrestre/ghostic1.jpg (100%) rename {pages/images => images}/terrestre/lanceur_torpilles.jpg (100%) rename {pages/images => images}/terrestre/pelican.jpg (100%) rename {pages/images => images}/terrestre/pelican_armed.jpg (100%) rename {pages/images => images}/terrestre/phantomfu2.jpg (100%) rename {pages/images => images}/terrestre/scorpion.jpg (100%) rename {pages/images => images}/terrestre/scorpionN.jpg (100%) rename {pages/images => images}/terrestre/shade.jpg (100%) rename {pages/images => images}/terrestre/shadow.jpg (100%) rename {pages/images => images}/terrestre/spectre1.jpg (100%) rename {pages/images => images}/terrestre/spirit1.jpg (100%) rename {pages/images => images}/terrestre/stationdedefensent8.jpg (100%) rename {pages/images => images}/terrestre/strongshade.jpg (100%) rename {pages/images => images}/terrestre/tourelle.jpg (100%) rename {pages/diz/forerunner/images => images/terrestre}/tourelle_fixe.jpg (100%) rename {pages/images => images}/terrestre/tourelle_gauss.jpg (100%) rename {pages/images => images}/terrestre/tourelle_plasma.jpg (100%) rename {pages/images => images}/terrestre/tourellebarreau.jpg (100%) rename {pages/images => images}/terrestre/tourioniquegr6.jpg (100%) rename {pages/images => images}/terrestre/tourplasmasl4.jpg (100%) rename {pages/images => images}/terrestre/warthog-vrl.jpg (100%) rename {pages/images => images}/terrestre/wraith.jpg (100%) rename {pages/images => images}/vaisseaux/cargosladen.jpg (100%) rename {pages/images => images}/vaisseaux/cargosparabola.jpg (100%) rename {pages/images => images}/vaisseaux/charognard.jpg (100%) rename {pages/images => images}/vaisseaux/chasseurlourd7id.jpg (100%) rename {pages/images => images}/vaisseaux/chasseurlourdfk8.jpg (100%) rename {pages/images => images}/vaisseaux/citecovenant.jpg (100%) rename {pages/images => images}/vaisseaux/colonisation.jpg (100%) rename {pages/images => images}/vaisseaux/coviecolobv3.jpg (100%) rename {pages/images => images}/vaisseaux/croiseur.jpg (100%) rename {pages/images => images}/vaisseaux/croiseur8er.jpg (100%) rename {pages/images => images}/vaisseaux/croiseurclassealcyon130om6.jpg (100%) rename {pages/images => images}/vaisseaux/croiseurclassemarathon1oc0.jpg (100%) rename {pages/images => images}/vaisseaux/croiseurforrunerns4.jpg (100%) rename {pages/images => images}/vaisseaux/croiseurmarathonke3.jpg (100%) rename {pages/images => images}/vaisseaux/csnucargoladen2al8.jpg (100%) rename {pages/images => images}/vaisseaux/csnucargoparabola2mc9.jpg (100%) rename {pages/images => images}/vaisseaux/csnufregatedk7.jpg (100%) rename {pages/images => images}/vaisseaux/csnuportevaisseauxgy3.jpg (100%) create mode 100644 images/vaisseaux/csnusuperportevaisseauxrw4.jpg rename {pages/images => images}/vaisseaux/destructeur2ci0.jpg (100%) rename {pages/images => images}/vaisseaux/drone_clarion.jpg (100%) rename {pages/images => images}/vaisseaux/fregate2ky.jpg (100%) rename {pages/images => images}/vaisseaux/fregatewz5.jpg (100%) rename {pages/images => images}/vaisseaux/longsword.jpg (100%) rename {pages/images/terrestre => images/vaisseaux}/nanw9.jpg (100%) create mode 100644 images/vaisseaux/pv.jpg rename {pages/images => images}/vaisseaux/recycleur.jpg (100%) rename {pages/images => images}/vaisseaux/sonde_despionnage1.jpg (100%) rename {pages/images => images}/vaisseaux/station.jpg (100%) create mode 100644 images/vaisseaux/station1.jpg rename {pages/images => images}/vaisseaux/superdestroyerwa6.jpg (100%) rename {pages/images => images}/vaisseaux/vaisseau.jpg (100%) rename {pages/images => images}/vaisseaux/vaisseaucolonisationmm4.jpg (100%) rename {pages/images => images}/vaisseaux/vaisseaudebataille9na.jpg (100%) create mode 100644 includes/classement/conf.php create mode 100644 includes/classement/fonctions.php create mode 100644 includes/classement/footer.php create mode 100644 includes/classement/header.php create mode 100644 includes/common.php create mode 100644 includes/constructions.php rename fermerServeur.php => includes/fermerServeur.php (92%) create mode 100644 includes/flottes.php create mode 100644 includes/function.php rename {pages/includes => includes}/noms.php (62%) create mode 100644 includes/onyx/access.php create mode 100644 includes/onyx/ban.xlist create mode 100644 includes/onyx/bdd.class.php create mode 100644 includes/onyx/config.xconf create mode 100644 includes/onyx/kernel.php create mode 100644 includes/onyx/logs/16-05-2008.log create mode 100644 includes/onyx/logs/16-05-2008.xlog create mode 100644 includes/onyx/logs/php.log create mode 100644 includes/onyx/phpbb_functions.php create mode 100644 includes/onyx/session.class.php create mode 100644 includes/onyx/templates/libs/Config_File.class.php create mode 100644 includes/onyx/templates/libs/Smarty.class.php create mode 100644 includes/onyx/templates/libs/Smarty_Compiler.class.php create mode 100644 includes/onyx/templates/libs/debug.tpl create mode 100644 includes/onyx/templates/libs/internals/core.assemble_plugin_filepath.php create mode 100644 includes/onyx/templates/libs/internals/core.assign_smarty_interface.php create mode 100644 includes/onyx/templates/libs/internals/core.create_dir_structure.php create mode 100644 includes/onyx/templates/libs/internals/core.display_debug_console.php create mode 100644 includes/onyx/templates/libs/internals/core.get_include_path.php create mode 100644 includes/onyx/templates/libs/internals/core.get_microtime.php create mode 100644 includes/onyx/templates/libs/internals/core.get_php_resource.php create mode 100644 includes/onyx/templates/libs/internals/core.is_secure.php create mode 100644 includes/onyx/templates/libs/internals/core.is_trusted.php create mode 100644 includes/onyx/templates/libs/internals/core.load_plugins.php create mode 100644 includes/onyx/templates/libs/internals/core.load_resource_plugin.php create mode 100644 includes/onyx/templates/libs/internals/core.process_cached_inserts.php create mode 100644 includes/onyx/templates/libs/internals/core.process_compiled_include.php create mode 100644 includes/onyx/templates/libs/internals/core.read_cache_file.php create mode 100644 includes/onyx/templates/libs/internals/core.rm_auto.php create mode 100644 includes/onyx/templates/libs/internals/core.rmdir.php create mode 100644 includes/onyx/templates/libs/internals/core.run_insert_handler.php create mode 100644 includes/onyx/templates/libs/internals/core.smarty_include_php.php create mode 100644 includes/onyx/templates/libs/internals/core.write_cache_file.php create mode 100644 includes/onyx/templates/libs/internals/core.write_compiled_include.php create mode 100644 includes/onyx/templates/libs/internals/core.write_compiled_resource.php create mode 100644 includes/onyx/templates/libs/internals/core.write_file.php create mode 100644 includes/onyx/templates/libs/plugins/block.textformat.php create mode 100644 includes/onyx/templates/libs/plugins/compiler.assign.php create mode 100644 includes/onyx/templates/libs/plugins/function.assign_debug_info.php create mode 100644 includes/onyx/templates/libs/plugins/function.config_load.php create mode 100644 includes/onyx/templates/libs/plugins/function.counter.php create mode 100644 includes/onyx/templates/libs/plugins/function.cycle.php create mode 100644 includes/onyx/templates/libs/plugins/function.debug.php create mode 100644 includes/onyx/templates/libs/plugins/function.eval.php create mode 100644 includes/onyx/templates/libs/plugins/function.fetch.php create mode 100644 includes/onyx/templates/libs/plugins/function.html_checkboxes.php create mode 100644 includes/onyx/templates/libs/plugins/function.html_image.php create mode 100644 includes/onyx/templates/libs/plugins/function.html_options.php create mode 100644 includes/onyx/templates/libs/plugins/function.html_radios.php create mode 100644 includes/onyx/templates/libs/plugins/function.html_select_date.php create mode 100644 includes/onyx/templates/libs/plugins/function.html_select_time.php create mode 100644 includes/onyx/templates/libs/plugins/function.html_table.php create mode 100644 includes/onyx/templates/libs/plugins/function.mailto.php create mode 100644 includes/onyx/templates/libs/plugins/function.math.php create mode 100644 includes/onyx/templates/libs/plugins/function.popup.php create mode 100644 includes/onyx/templates/libs/plugins/function.popup_init.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.capitalize.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.cat.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.count_characters.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.count_paragraphs.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.count_sentences.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.count_words.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.date_format.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.debug_print_var.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.default.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.escape.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.indent.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.lower.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.nl2br.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.regex_replace.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.replace.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.spacify.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.string_format.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.strip.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.strip_tags.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.truncate.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.upper.php create mode 100644 includes/onyx/templates/libs/plugins/modifier.wordwrap.php create mode 100644 includes/onyx/templates/libs/plugins/outputfilter.trimwhitespace.php create mode 100644 includes/onyx/templates/libs/plugins/shared.escape_special_chars.php create mode 100644 includes/onyx/templates/libs/plugins/shared.make_timestamp.php create mode 100644 includes/onyx/templates/templates/admin/vp.tpl create mode 100644 includes/onyx/templates/templates/blog/erreur.xtpl create mode 100644 includes/onyx/templates/templates/blog/footer.xtpl create mode 100644 includes/onyx/templates/templates/blog/header.xtpl create mode 100644 includes/onyx/templates/templates/blog/index.xtpl create mode 100644 includes/onyx/templates/templates/blog/page.xtpl create mode 100644 includes/onyx/templates/templates/cms/erreur.tpl create mode 100644 includes/onyx/templates/templates/cms/footer.tpl create mode 100644 includes/onyx/templates/templates/cms/header.tpl create mode 100644 includes/onyx/templates/templates/cms/inscription.tpl create mode 100644 includes/onyx/templates/templates/cms/mini.tpl create mode 100644 includes/onyx/templates/templates/cms/secours.tpl create mode 100644 includes/onyx/templates/templates/cms/test.tpl create mode 100644 includes/onyx/templates/templates/cms/vide.tpl create mode 100644 includes/onyx/templates/templates/game/accueil.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_accueil.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_adm_admin.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_adm_chat.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_adm_ecritures.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_adm_grades.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_adm_grades_add.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_adm_header.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_adm_membres.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_chat.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_liste.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_nm_accueil.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_nm_fonder.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_nm_postuler.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_nm_search.tpl create mode 100644 includes/onyx/templates/templates/game/alliance_nm_view.tpl create mode 100644 includes/onyx/templates/templates/game/arbre.tpl create mode 100644 includes/onyx/templates/templates/game/batiments.tpl create mode 100644 includes/onyx/templates/templates/game/bugs.tpl create mode 100644 includes/onyx/templates/templates/game/carte.tpl create mode 100644 includes/onyx/templates/templates/game/chantierspatial.tpl create mode 100644 includes/onyx/templates/templates/game/classement.tpl create mode 100644 includes/onyx/templates/templates/game/defenses.tpl create mode 100644 includes/onyx/templates/templates/game/envoyer.tpl create mode 100644 includes/onyx/templates/templates/game/erreur.tpl create mode 100644 includes/onyx/templates/templates/game/flotte1.tpl create mode 100644 includes/onyx/templates/templates/game/flotte2.tpl create mode 100644 includes/onyx/templates/templates/game/flotten.tpl create mode 100644 includes/onyx/templates/templates/game/footer.tpl create mode 100644 includes/onyx/templates/templates/game/game.lnk create mode 100644 includes/onyx/templates/templates/game/header.tpl create mode 100644 includes/onyx/templates/templates/game/laboratoire.tpl create mode 100644 includes/onyx/templates/templates/game/messagerie.tpl create mode 100644 includes/onyx/templates/templates/game/options.tpl create mode 100644 includes/onyx/templates/templates/game/prochainement.tpl create mode 100644 includes/onyx/templates/templates/game/rename.tpl create mode 100644 includes/onyx/templates/templates/game/ressources.tpl create mode 100644 includes/onyx/templates/templates/game/version.tpl create mode 100644 includes/onyx/templates/templates/game/vp.tpl create mode 100644 includes/ressources.php create mode 100644 includes/securite.php create mode 100644 includes/tables.php create mode 100644 includes/vars.php delete mode 100644 indexB.php delete mode 100644 inscription.php delete mode 100644 inscription_validation.php create mode 100644 js/cms.js create mode 100644 js/flotte.js create mode 100644 js/fonctions.js create mode 100644 js/img_manques.js create mode 100644 js/infos.js create mode 100644 js/inscription.js delete mode 100644 logout.php delete mode 100644 pages/admin.php delete mode 100644 pages/ajax_flotte.php delete mode 100644 pages/annul_bat.php delete mode 100644 pages/annul_def.php delete mode 100644 pages/annul_tec.php delete mode 100644 pages/annul_vais.php delete mode 100644 pages/anul_tec.php delete mode 100644 pages/arbre_bat_covenant.php delete mode 100644 pages/arbre_bat_humain.php delete mode 100644 pages/arbre_techno_covenant.php delete mode 100644 pages/arbre_techno_humain.php delete mode 100644 pages/arbre_unitees_covenant.php delete mode 100644 pages/arbre_unitees_humain.php delete mode 100644 pages/arbre_vaisseaux_covenant.php delete mode 100644 pages/arbre_vaisseaux_humain.php delete mode 100644 pages/arbre_vehicules_covenant.php delete mode 100644 pages/arbre_vehicules_humain.php delete mode 100644 pages/base.php delete mode 100644 pages/batiment.php delete mode 100644 pages/batiment_validation.php delete mode 100644 pages/carte.php delete mode 100644 pages/chantier_spatial.php delete mode 100644 pages/chantier_spatial_validation.php delete mode 100644 pages/charg.php delete mode 100644 pages/common.php delete mode 100644 pages/creerflotte.php delete mode 100644 pages/defense.php delete mode 100644 pages/defense_validation.php delete mode 100644 pages/depart.php delete mode 100644 pages/descriptions.php delete mode 100644 pages/diz/descriptions/bdd.php delete mode 100644 pages/diz/descriptions/description.php delete mode 100644 pages/diz/descriptions/description_bat.php delete mode 100644 pages/diz/descriptions/description_pt.php delete mode 100644 pages/diz/descriptions/diz/1720.jpg delete mode 100644 pages/diz/descriptions/diz/1782.jpg delete mode 100644 pages/diz/descriptions/diz/1783.jpg delete mode 100644 pages/diz/descriptions/diz/180.jpg delete mode 100644 pages/diz/descriptions/diz/180p.jpg delete mode 100644 pages/diz/descriptions/diz/181.jpg delete mode 100644 pages/diz/descriptions/diz/182.jpg delete mode 100644 pages/diz/descriptions/diz/183.jpg delete mode 100644 pages/diz/descriptions/diz/205.jpg delete mode 100644 pages/diz/descriptions/diz/Copy of fond.jpg delete mode 100644 pages/diz/descriptions/diz/Thumbs.db delete mode 100644 pages/diz/descriptions/diz/admin.css delete mode 100644 pages/diz/descriptions/diz/base.anc.css delete mode 100644 pages/diz/descriptions/diz/base.css delete mode 100644 pages/diz/descriptions/diz/fond.jpg delete mode 100644 pages/diz/descriptions/diz/fond/Thumbs.db delete mode 100644 pages/diz/descriptions/diz/fond/apb.jpg delete mode 100644 pages/diz/descriptions/diz/fond/apc.jpg delete mode 100644 pages/diz/descriptions/diz/fond/apfin.jpg delete mode 100644 pages/diz/descriptions/diz/fond/apmenu.jpg delete mode 100644 pages/diz/descriptions/diz/fondf.jpg delete mode 100644 pages/diz/descriptions/diz/fondfp.jpg delete mode 100644 pages/diz/descriptions/diz/m.gif delete mode 100644 pages/diz/descriptions/diz/panel/Thumbs.db delete mode 100644 pages/diz/descriptions/diz/panel/background.jpg delete mode 100644 pages/diz/descriptions/diz/planete/Thumbs.db delete mode 100644 pages/diz/descriptions/diz/planete/anneaux1.jpg delete mode 100644 pages/diz/descriptions/diz/planete/asteroide1.jpg delete mode 100644 pages/diz/descriptions/diz/planete/asteroide2.jpg delete mode 100644 pages/diz/descriptions/diz/planete/asteroide4.jpg delete mode 100644 pages/diz/descriptions/diz/planete/asteroide5.jpg delete mode 100644 pages/diz/descriptions/diz/planete/desert2.jpg delete mode 100644 pages/diz/descriptions/diz/planete/etrange1.jpg delete mode 100644 pages/diz/descriptions/diz/planete/etrange3.jpg delete mode 100644 pages/diz/descriptions/diz/planete/etrange6.jpg delete mode 100644 pages/diz/descriptions/diz/planete/fusion2.jpg delete mode 100644 pages/diz/descriptions/diz/planete/normal3.jpg delete mode 100644 pages/diz/descriptions/diz/planete/normal4.jpg delete mode 100644 pages/diz/descriptions/diz/planete/normal5.jpg delete mode 100644 pages/diz/descriptions/diz/planete/ocean2.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien1.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien10.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien2.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien3.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien4.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien5.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien6.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien7.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien8.jpg delete mode 100644 pages/diz/descriptions/diz/planete/rien9.jpg delete mode 100644 pages/diz/descriptions/diz/planete/soleil.jpg delete mode 100644 pages/diz/descriptions/flotte_dep.php delete mode 100644 pages/diz/forerunner/base.css delete mode 100644 pages/diz/forerunner/images/IA.jpg delete mode 100644 pages/diz/forerunner/images/armement.jpg delete mode 100644 pages/diz/forerunner/images/button.gif delete mode 100644 pages/diz/forerunner/images/button_hover.gif delete mode 100644 pages/diz/forerunner/images/cargo.jpg delete mode 100644 pages/diz/forerunner/images/cristal.png delete mode 100644 pages/diz/forerunner/images/dca_lourde.jpg delete mode 100644 pages/diz/forerunner/images/drone.jpg delete mode 100644 pages/diz/forerunner/images/fregate.jpg delete mode 100644 pages/diz/forerunner/images/header.jpg delete mode 100644 pages/diz/forerunner/images/hydrogene.jpg delete mode 100644 pages/diz/forerunner/images/metal.png delete mode 100644 pages/diz/forerunner/images/msg.gif delete mode 100644 pages/diz/forerunner/images/planete.jpg delete mode 100644 pages/diz/forerunner/images/planete2.jpg delete mode 100644 pages/diz/forerunner/images/planete3.jpg delete mode 100644 pages/diz/forerunner/images/planete4.jpg delete mode 100644 pages/diz/forerunner/images/radar.jpg delete mode 100644 pages/diz/forerunner/menu.js delete mode 100644 pages/diz/humain/1720.jpg delete mode 100644 pages/diz/humain/Thumbs.db delete mode 100644 pages/diz/humain/base.css delete mode 100644 pages/flotte.js delete mode 100644 pages/flotte.php delete mode 100644 pages/flotte_detail.php delete mode 100644 pages/images/Thumbs.db delete mode 100644 pages/images/arme.jpg delete mode 100644 pages/images/batiments/Thumbs.db delete mode 100644 pages/images/batiments/mine_c.png delete mode 100644 pages/images/batiments/mine_m.png delete mode 100644 pages/images/caserne/Thumbs.db delete mode 100644 pages/images/menu/Thumbs.db delete mode 100644 pages/images/menu/espaceur.gif delete mode 100644 pages/images/menu/f_header.jpg delete mode 100644 pages/images/menu/h_header.jpg delete mode 100644 pages/images/menu/menu_01.jpg delete mode 100644 pages/images/menu/menu_01.png delete mode 100644 pages/images/menu/menu_02.jpg delete mode 100644 pages/images/menu/menu_02.png delete mode 100644 pages/images/menu/menu_03.jpg delete mode 100644 pages/images/menu/menu_03.png delete mode 100644 pages/images/menu/menu_04.jpg delete mode 100644 pages/images/menu/menu_04.png delete mode 100644 pages/images/menu/menu_05.jpg delete mode 100644 pages/images/menu/menu_05.png delete mode 100644 pages/images/menu/menu_05_2.jpg delete mode 100644 pages/images/menu/menu_06.jpg delete mode 100644 pages/images/menu/menu_06.png delete mode 100644 pages/images/menu/menu_07.jpg delete mode 100644 pages/images/menu/menu_07.png delete mode 100644 pages/images/menu/menu_08.jpg delete mode 100644 pages/images/menu/menu_08.png delete mode 100644 pages/images/menu/menu_09.jpg delete mode 100644 pages/images/menu/menu_09.png delete mode 100644 pages/images/menu/menu_10.jpg delete mode 100644 pages/images/menu/menu_10.png delete mode 100644 pages/images/menu/menu_11.jpg delete mode 100644 pages/images/menu/menu_11.png delete mode 100644 pages/images/menu/menu_12.jpg delete mode 100644 pages/images/menu/menu_12.png delete mode 100644 pages/images/menu/menu_13.jpg delete mode 100644 pages/images/menu/menu_13.png delete mode 100644 pages/images/menu/menu_14.jpg delete mode 100644 pages/images/menu/menu_14.png delete mode 100644 pages/images/menu/menu_15.jpg delete mode 100644 pages/images/menu/menu_15.png delete mode 100644 pages/images/menu/menu_16.jpg delete mode 100644 pages/images/menu/menu_16.png delete mode 100644 pages/images/menu/menu_17.jpg delete mode 100644 pages/images/menu/menu_17.png delete mode 100644 pages/images/menu/menu_18.jpg delete mode 100644 pages/images/menu/menu_18.png delete mode 100644 pages/images/menu/menu_19.jpg delete mode 100644 pages/images/menu/menu_19.png delete mode 100644 pages/images/menu/menu_20.jpg delete mode 100644 pages/images/menu/menu_20.png delete mode 100644 pages/images/menu/menu_21.jpg delete mode 100644 pages/images/menu/menu_21.png delete mode 100644 pages/images/menu/menu_22.jpg delete mode 100644 pages/images/menu/menu_22.png delete mode 100644 pages/images/menu/menu_23.jpg delete mode 100644 pages/images/menu/menu_23.png delete mode 100644 pages/images/menu/menu_24.jpg delete mode 100644 pages/images/menu/menu_24.png delete mode 100644 pages/images/menu/menu_25.jpg delete mode 100644 pages/images/menu/menu_25.png delete mode 100644 pages/images/menu/menu_26.jpg delete mode 100644 pages/images/menu/menu_26.png delete mode 100644 pages/images/menu/menu_27.jpg delete mode 100644 pages/images/menu/menu_27.png delete mode 100644 pages/images/menu/menu_28.jpg delete mode 100644 pages/images/menu/menu_28.png delete mode 100644 pages/images/menu/menu_29.jpg delete mode 100644 pages/images/menu/menu_29.png delete mode 100644 pages/images/menu/menu_30.jpg delete mode 100644 pages/images/menu/menu_30.png delete mode 100644 pages/images/menu/menu_31.jpg delete mode 100644 pages/images/menu/menu_31.png delete mode 100644 pages/images/menu/menu_32.jpg delete mode 100644 pages/images/menu/menu_32.png delete mode 100644 pages/images/menu/menu_33.jpg delete mode 100644 pages/images/menu/menu_33.png delete mode 100644 pages/images/menu/menu_34.jpg delete mode 100644 pages/images/menu/menu_34.png delete mode 100644 pages/images/menu/menu_35.jpg delete mode 100644 pages/images/menu/menu_35.png delete mode 100644 pages/images/menu/menu_36.jpg delete mode 100644 pages/images/menu/menu_36.png delete mode 100644 pages/images/menu/menu_37.jpg delete mode 100644 pages/images/menu/menu_37.png delete mode 100644 pages/images/menu/menu_38.jpg delete mode 100644 pages/images/menu/menu_38.png delete mode 100644 pages/images/menu/menu_39.jpg delete mode 100644 pages/images/menu/menu_39.png delete mode 100644 pages/images/menu/menu_40.jpg delete mode 100644 pages/images/menu/menu_40.png delete mode 100644 pages/images/menu/menu_41.jpg delete mode 100644 pages/images/menu/menu_41.png delete mode 100644 pages/images/menu/menu_42.jpg delete mode 100644 pages/images/menu/menu_42.png delete mode 100644 pages/images/menu/menu_43.jpg delete mode 100644 pages/images/menu/menu_43.png delete mode 100644 pages/images/menu/menu_44.jpg delete mode 100644 pages/images/menu/menu_44.png delete mode 100644 pages/images/menu/menu_45.jpg delete mode 100644 pages/images/menu/menu_45.png delete mode 100644 pages/images/menu/menu_46.jpg delete mode 100644 pages/images/menu/menu_46.png delete mode 100644 pages/images/menu/menu_47.jpg delete mode 100644 pages/images/menu/menu_47.png delete mode 100644 pages/images/menu/menu_48.jpg delete mode 100644 pages/images/menu/menu_48.png delete mode 100644 pages/images/menu/menu_49.jpg delete mode 100644 pages/images/menu/menu_49.png delete mode 100644 pages/images/menu/menu_50.jpg delete mode 100644 pages/images/menu/menu_50.png delete mode 100644 pages/images/menu/menu_51.jpg delete mode 100644 pages/images/menu/menu_51.png delete mode 100644 pages/images/menu/menu_52.png delete mode 100644 pages/images/menu/menu_53.png delete mode 100644 pages/images/menu/menu_F.jpg delete mode 100644 pages/images/planetecrackerrp3.jpg delete mode 100644 pages/images/planetes/1.jpg delete mode 100644 pages/images/planetes/10.jpg delete mode 100644 pages/images/planetes/11.jpg delete mode 100644 pages/images/planetes/12.jpg delete mode 100644 pages/images/planetes/13.jpg delete mode 100644 pages/images/planetes/14.jpg delete mode 100644 pages/images/planetes/15.jpg delete mode 100644 pages/images/planetes/2.jpg delete mode 100644 pages/images/planetes/3.jpg delete mode 100644 pages/images/planetes/4.jpg delete mode 100644 pages/images/planetes/5.jpg delete mode 100644 pages/images/planetes/6.jpg delete mode 100644 pages/images/planetes/7.jpg delete mode 100644 pages/images/planetes/8.jpg delete mode 100644 pages/images/planetes/9.jpg delete mode 100644 pages/images/planetes/Thumbs.db delete mode 100644 pages/images/technologies/Thumbs.db delete mode 100644 pages/images/technologies/blindage.jpg delete mode 100644 pages/images/terrestre/Thumbs.db delete mode 100644 pages/images/terrestre/dca_legere.jpg delete mode 100644 pages/images/terrestre/dca_lourde.jpg delete mode 100644 pages/images/terrestre/tourelle_fixe.jpg delete mode 100644 pages/images/vaisseaux/Thumbs.db delete mode 100644 pages/images/vaisseaux/img_na_ig.jpg delete mode 100644 pages/images/vaisseaux/nanw9.jpg delete mode 100644 pages/images/vaisseaux/pv.jpg delete mode 100644 pages/includes/batiment_ajout.php delete mode 100644 pages/includes/bdd.php delete mode 100644 pages/includes/chantier_spacial_ajout.php delete mode 100644 pages/includes/defense_ajout.php delete mode 100644 pages/includes/flotte.php delete mode 100644 pages/includes/laboratoire_ajout.php delete mode 100644 pages/includes/ressources.php delete mode 100644 pages/includes/vars.php delete mode 100644 pages/laboratoire.php delete mode 100644 pages/laboratoire_validation.php delete mode 100644 pages/menu.php delete mode 100644 pages/messagerie.php delete mode 100644 pages/ndepart.php delete mode 100644 pages/nom.php delete mode 100644 pages/options.php delete mode 100644 pages/options_validation.php delete mode 100644 pages/prochainement.php delete mode 100644 pages/rapport_bug.php delete mode 100644 pages/rename.php delete mode 100644 pages/ressource.php delete mode 100644 pages/ressources.php delete mode 100644 pages/suppr_msg.php delete mode 100644 pages/testcombat.php delete mode 100644 pages/time.js delete mode 100644 pages/validation_bug.php delete mode 100644 pages/validation_vaisseaux.php delete mode 100644 pages/version.php delete mode 100644 pages/version_ecrire.php delete mode 100644 pages/version_ecrire_validation.php delete mode 100644 pages/voir_classement.php create mode 100644 secours.php delete mode 100644 securite.php delete mode 100644 securitebanni.php delete mode 100644 snow.js delete mode 100644 snow1.gif delete mode 100644 style.css delete mode 100644 template.php create mode 100644 templates/cms/default.css create mode 100644 templates/cms/defaultANCIEN.css create mode 100644 templates/cms/images/all.gif create mode 100644 templates/cms/images/annonce_bg.gif create mode 100644 templates/cms/images/annonce_titre.gif create mode 100644 templates/cms/images/block_bg.gif create mode 100644 templates/cms/images/block_footer.gif create mode 100644 templates/cms/images/block_footer2.gif create mode 100644 templates/cms/images/block_footer3.gif create mode 100644 templates/cms/images/block_footer4.gif create mode 100644 templates/cms/images/block_header.gif create mode 100644 templates/cms/images/block_header2.gif create mode 100644 templates/cms/images/block_header3.gif create mode 100644 templates/cms/images/button.gif create mode 100644 templates/cms/images/com.gif create mode 100644 templates/cms/images/connexion_plus.gif create mode 100644 templates/cms/images/cornerbt.gif create mode 100644 templates/cms/images/cornertop.gif create mode 100644 templates/cms/images/date.gif create mode 100644 templates/cms/images/date_bg.gif create mode 100644 templates/cms/images/fleche.gif create mode 100644 templates/cms/images/footer.gif create mode 100644 templates/cms/images/header.gif create mode 100644 templates/cms/images/header.jpg create mode 100644 templates/cms/images/inscription.png create mode 100644 templates/cms/images/link.gif create mode 100644 templates/cms/images/new.gif rename templates/{csnu => cms}/images/ok.gif (100%) create mode 100644 templates/cms/images/ombre_bt.gif rename {pages/images/menu => templates/cms/images}/recherche.gif (100%) rename {pages/images/menu => templates/cms/images}/rss.gif (100%) create mode 100644 templates/covenants.css create mode 100644 templates/csnu.css delete mode 100644 templates/csnu/base.css delete mode 100644 templates/csnu/base.tpl delete mode 100644 templates/csnu/depart.tpl delete mode 100644 templates/csnu/images/Thumbs.db delete mode 100644 templates/csnu/images/button.gif delete mode 100644 templates/csnu/images/button_hover.gif delete mode 100644 templates/csnu/images/menu.gif delete mode 100644 templates/csnu/rename.tpl delete mode 100644 templates/defaut.tpl delete mode 100644 templates/forerunner/base.css delete mode 100644 templates/forerunner/base.tpl delete mode 100644 templates/forerunner/batiments.tpl delete mode 100644 templates/forerunner/carte.tpl delete mode 100644 templates/forerunner/chantier_spatial.tpl delete mode 100644 templates/forerunner/defaut.tpl delete mode 100644 templates/forerunner/defense.tpl delete mode 100644 templates/forerunner/depart.tpl delete mode 100644 templates/forerunner/flotte1.tpl delete mode 100644 templates/forerunner/flotte2.tpl delete mode 100644 templates/forerunner/flotte3.tpl delete mode 100644 templates/forerunner/images/IA.jpg delete mode 100644 templates/forerunner/images/Thumbs.db delete mode 100644 templates/forerunner/images/armement.jpg delete mode 100644 templates/forerunner/images/button.gif delete mode 100644 templates/forerunner/images/button_hover.gif delete mode 100644 templates/forerunner/images/cargo.jpg delete mode 100644 templates/forerunner/images/cristal.png delete mode 100644 templates/forerunner/images/dca_legere.jpg delete mode 100644 templates/forerunner/images/dca_lourde.jpg delete mode 100644 templates/forerunner/images/drone.jpg delete mode 100644 templates/forerunner/images/fregate.jpg delete mode 100644 templates/forerunner/images/header.jpg delete mode 100644 templates/forerunner/images/hydrogene.jpg delete mode 100644 templates/forerunner/images/metal.png delete mode 100644 templates/forerunner/images/msg.gif delete mode 100644 templates/forerunner/images/planete.jpg delete mode 100644 templates/forerunner/images/planete2.jpg delete mode 100644 templates/forerunner/images/planete3.jpg delete mode 100644 templates/forerunner/images/planete4.jpg delete mode 100644 templates/forerunner/images/radar.jpg delete mode 100644 templates/forerunner/images/tourelle_fixe.jpg delete mode 100644 templates/forerunner/laboratoire.tpl delete mode 100644 templates/forerunner/manque.tpl delete mode 100644 templates/forerunner/menu.js delete mode 100644 templates/forerunner/messagerie_accueil.tpl delete mode 100644 templates/forerunner/messagerie_lire.tpl delete mode 100644 templates/forerunner/messagerie_lirerapport.tpl delete mode 100644 templates/forerunner/messagerie_nouveau.tpl delete mode 100644 templates/forerunner/options.tpl delete mode 100644 templates/forerunner/rename.tpl delete mode 100644 templates/forerunner/ressources.tpl delete mode 100644 templates/forerunner/version.tpl delete mode 100644 templates/humain/1720.jpg delete mode 100644 templates/humain/base.css delete mode 100644 templates/humain/base.tpl delete mode 100644 templates/humain/batiments.tpl delete mode 100644 templates/humain/carte.tpl delete mode 100644 templates/humain/chantier_spatial.tpl delete mode 100644 templates/humain/defaut.tpl delete mode 100644 templates/humain/defense.tpl delete mode 100644 templates/humain/depart.tpl delete mode 100644 templates/humain/flotte1.tpl delete mode 100644 templates/humain/flotte2.tpl delete mode 100644 templates/humain/flotte3.tpl delete mode 100644 templates/humain/laboratoire.tpl delete mode 100644 templates/humain/manque.tpl delete mode 100644 templates/humain/messagerie_accueil.tpl delete mode 100644 templates/humain/messagerie_lire.tpl delete mode 100644 templates/humain/messagerie_lirerapport.tpl delete mode 100644 templates/humain/messagerie_nouveau.tpl delete mode 100644 templates/humain/options.tpl delete mode 100644 templates/humain/rename.tpl delete mode 100644 templates/humain/ressources.tpl delete mode 100644 templates/humain/version.tpl create mode 100644 templates/images/background.jpg create mode 100644 templates/images/background2.jpg rename templates/{csnu => }/images/barre.gif (100%) create mode 100644 templates/images/barre2.gif create mode 100644 templates/images/button.gif create mode 100644 templates/images/button2.gif create mode 100644 templates/images/cornerbt.gif create mode 100644 templates/images/cornerbt2.gif create mode 100644 templates/images/cornertop.gif create mode 100644 templates/images/cornertop2.gif rename templates/{csnu => }/images/corps.gif (100%) create mode 100644 templates/images/corps2.gif rename templates/{csnu => }/images/corpsbt.gif (100%) create mode 100644 templates/images/corpsbt2.gif rename templates/{csnu => }/images/corpstop.gif (100%) create mode 100644 templates/images/corpstop2.gif create mode 100644 templates/images/dd.gif create mode 100644 templates/images/dd2.gif create mode 100644 templates/images/dt.gif create mode 100644 templates/images/dt2.gif create mode 100644 templates/images/header.jpg create mode 100644 templates/images/header2.jpg create mode 100644 templates/images/menu.gif create mode 100644 templates/images/menu2.gif create mode 100644 templates/images/menu_bt.gif create mode 100644 templates/images/menu_bt2.gif create mode 100644 templates/images/menu_head.gif create mode 100644 templates/images/menu_head2.gif rename templates/{csnu => }/images/menu_lien.gif (100%) create mode 100644 templates/images/menu_lien2.gif create mode 100644 templates/images/msg.gif create mode 100644 templates/images/msg2.gif create mode 100644 templates/images/ok.gif rename templates/{csnu => }/images/ombre_bt.gif (100%) create mode 100644 templates/images/ombre_bt2.gif create mode 100644 templates/images/plus.gif create mode 100644 templates/images/plus2.gif rename templates/{csnu => }/images/recherche.gif (100%) rename templates/{csnu => }/images/ressource.gif (100%) create mode 100644 templates/images/ressource2.gif rename templates/{csnu => }/images/rss.gif (100%) delete mode 100644 templates/index.tpl delete mode 100644 templates/stat_body.tpl delete mode 100644 templates/stat_playertable.tpl delete mode 100644 templates/stat_playertable_footer.tpl delete mode 100644 templates/stat_playertable_header.tpl delete mode 100644 textlog.php delete mode 100644 verifLogin.php diff --git a/Class/class.combat.php b/Class/class.combat.php index 093800b..5992d2b 100644 --- a/Class/class.combat.php +++ b/Class/class.combat.php @@ -3,6 +3,7 @@ * class.combat.php * ------------------- * begin : Samedi 26 janvier 2008 + * update : Samedi 12 mai 2008 * email : nemunaire@gmail.com * * @@ -16,43 +17,95 @@ class Combat { var $Ntour = 0; var $ATtactique = 0; var $ENtactique = 0; + var $timestamp = 0; + var $vaisContenu = 0; + var $vaisContenuM = 0; + var $vaisContenuC = 0; + var $vaisContenuH = 0; + + var $debriM = 0; + var $debriC = 0; /** * Constructeur - * @param array $flotteAT tableau SQL des vaisseaux envoyés par l'attaquant - * @param array $flotteEN tableau SQL de la planète du défenseur - * @param array $defEN tableau SQL de la planète du défenseur + * @param array $flotteAT tableau SQL des vaisseaux envoyés par l'attaquant + * @param array $flotteEN tableau SQL de la planète du défenseur + * @param array $defEN tableau SQL de la planète du défenseur * * @return void * @access public */ function Combat($flotteAT, $flotteEN, $defEN) { include('includes/vars.php'); - //Génération des vaisseaux attaquants + //Génération des vaisseaux attaquants for ($i=1 ; $i<=12 ; $i++) { - if ($flotteAT['vaisseau'.$i] >= 1) { - $this->ATvais[] = array($i, $flotteAT['vaisseau'.$i], array(array($nomvais_pv[$i-1], $flotteAT['vaisseau'.$i])), array(array($nomvais_bc[$i-1], $flotteAT['vaisseau'.$i]))); + if ($flotteAT['vaisseau_'.$i] >= 1) { + //Création des groupes + $nbvais = $flotteAT['vaisseau_'.$i]; + $nbgroupes = floor(sqrt(ceil($nbvais/10))); + $nbvaispgroupe = floor($nbvais/$nbgroupes); + $nbrest = $nbvais - $nbvaispgroupe * $nbgroupes; + + if (isset($groupe)) unset($groupe); + $groupe = array(); + for ($j=0 ; $j < $nbgroupes ; $j++) { + if ($j == $nbgroupes) $nbvaispgroupe += $nbrest; + $groupe[] = array($nbvaispgroupe, $nomvais_bc[$i-1], $nomvais_pv[$i-1]); + } + $this->ATvais[] = array($i, $flotteAT['vaisseau_'.$i], $nbgroupes, $groupe); } } - //Génération des vaisseaux défenseurs + //Définition d'autres variables de la classe concernant la flotte + $this->refflotte = $flotteAT['id']; + $this->vaisContenu = $flotteAT['contenu_max']; + $this->vaisContenuM = $flotteAT['contenu_metal']; + $this->vaisContenuC = $flotteAT['contenu_cristal']; + $this->vaisContenuH = $flotteAT['contenu_hydrogene']; + $this->timestamp = $flotteAT['start_time'] + $flotteAT['end_time']; + + //Génération des vaisseaux défenseurs for ($i=1 ; $i<=12 ; $i++) { if ($flotteEN['vaisseau_'.$i] >= 1) { - $this->ENvais[] = array($i, $flotteEN['vaisseau_'.$i], array(array($nomvais_pv[$i-1], $flotteEN['vaisseau_'.$i])), array(array($nomvais_bc[$i-1], $flotteEN['vaisseau_'.$i]))); + //Création des groupes + $nbvais = $flotteEN['vaisseau_'.$i]; + $nbgroupes = floor(sqrt(ceil($nbvais/10))); + $nbvaispgroupe = floor($nbvais/$nbgroupes); + $nbrest = $nbvais - $nbvaispgroupe * $nbgroupes; + + if (isset($groupe)) unset($groupe); + $groupe = array(); + for ($j=0 ; $j < $nbgroupes ; $j++) { + if ($j == $nbgroupes) $nbvaispgroupe += $nbrest; + $groupe[] = array($nbvaispgroupe, $nomvais_bc[$i-1], $nomvais_pv[$i-1]); + } + $this->ENvais[] = array($i, $flotteEN['vaisseau_'.$i], $nbgroupes, $groupe); } } - //Génération des défenses défenseurs + //Génération des défenses défenseurs for ($i=1 ; $i<=5 ; $i++) { if ($defEN['def_'.$i] >= 1) { - $this->ENdef[] = array($i, $defEN['def_'.$i], array(array($nomvais_pv[$i-1], $defEN['def_'.$i])), array(array($nomvais_bc[$i-1], $defEN['def_'.$i]))); + //Création des groupes + $nbvais = $defEN['def_'.$i]; + $nbgroupes = floor(sqrt(ceil($nbvais/10))); + $nbvaispgroupe = floor($nbvais/$nbgroupes); + $nbrest = $nbvais - $nbvaispgroupe * $nbgroupes; + + if (isset($groupe)) unset($groupe); + $groupe = array(); + for ($j=0 ; $j < $nbgroupes ; $j++) { + if ($j == $nbgroupes) $nbvaispgroupe += $nbrest; + $groupe[] = array($nbvaispgroupe, $defense_bc[$i-1], $defense_pv[$i-1]); + } + $this->ENdef[] = array($i, $defEN['def_'.$i], $nbgroupes, $groupe); } } } /** * Change la tactique de l'attaquant - * @param int $tactique numéro de la tactique choisie + * @param int $tactique numéro de la tactique choisie * * @return void * @access public @@ -62,8 +115,8 @@ class Combat { } /** - * Change la tactique du défenseur - * @param int $tactique numéro de la tactique choisie + * Change la tactique du défenseur + * @param int $tactique numéro de la tactique choisie * * @return void * @access public @@ -73,12 +126,12 @@ class Combat { } /** - * Régénére les boucliers - * @param int $pourcentage pourcentage de régénération - * @param bool $attaquant régénére le bouclier de l'attaquant si true, sinon régénrére celui du défenseur - * @param bool $retour si true, renvoie true ou false si !le pourcentage a été consommé ou non, si false, retrourne ne nombre de pourcentage restant + * Régénére les boucliers + * @param int $pourcentage pourcentage de régénération + * @param bool $attaquant régénére le bouclier de l'attaquant si true, sinon régénrére celui du défenseur + * @param bool $retour si true, renvoie true ou false si !le pourcentage a été consommé ou non, si false, retrourne ne nombre de pourcentage restant * - * @return float pourcentage non utilisé + * @return float pourcentage non utilisé * @access public */ function regenereBC($pourcentage, $attaquant, $retour = false) { @@ -91,22 +144,23 @@ class Combat { $type = $this->ATvais[$i][0]-1; $maxbc = $nomvais_bc[$type]; $ajout = $maxbc*$pourcentage/100; - $norm += $maxbc * $this->ATvais[$i][1]; $cntbc = count($this->ATvais[$i][3]); for ($j=0 ; $j<$cntbc ; $j++) { - if ($this->ATvais[$i][3][$j][0] < $maxbc) { - $this->ATvais[$i][3][$j][0] += $ajout; + $norm += $maxbc * $this->ATvais[$i][3][$j][0]; + + if ($this->ATvais[$i][3][$j][1] < $maxbc) { + $this->ATvais[$i][3][$j][1] += $ajout; } - else $enplus += $ajout * $this->ATvais[$i][3][$j][1]; - if ($this->ATvais[$i][3][$j][0] > $maxbc) { - $enplus += ($this->ATvais[$i][3][$j][0] - $maxbc)*$this->ATvais[$i][3][$j][1]; - $this->ATvais[$i][3][$j][0] = $maxbc; + else $enplus += $ajout * $this->ATvais[$i][3][$j][0]; + if ($this->ATvais[$i][3][$j][1] > $maxbc) { + $enplus += ($this->ATvais[$i][3][$j][1] - $maxbc)*$this->ATvais[$i][3][$j][0]; + $this->ATvais[$i][3][$j][1] = $maxbc; } } } if ($retour) { - if($enplus/$norm == 1) return true; + if($enplus/$norm == 1) return $pourcentage; else return false; } else return $enplus/$norm; @@ -119,23 +173,23 @@ class Combat { $type = $this->ENvais[$i][0]-1; $maxbc = $nomvais_bc[$type]; $ajout = $maxbc*$pourcentage/100; - $norm += $maxbc * $this->ENvais[$i][1]; $cntbc = count($this->ENvais[$i][3]); for ($j=0 ; $j<$cntbc ; $j++) { - if ($this->ENvais[$i][3][$j][0] < $maxbc) { - $this->ENvais[$i][3][$j][0] += $ajout; + $norm += $maxbc * $this->ENvais[$i][3][$j][0]; + if ($this->ENvais[$i][3][$j][1] < $maxbc) { + $this->ENvais[$i][3][$j][1] += $ajout; } - else $enplus += $ajout * $this->ENvais[$i][3][$j][1]; - if ($this->ENvais[$i][3][$j][0] > $maxbc) { - $enplus += ($this->ENvais[$i][3][$j][0] - $maxbc)*$this->ENvais[$i][3][$j][1]; - $this->ENvais[$i][3][$j][0] = $maxbc; + else $enplus += $ajout * $this->ENvais[$i][3][$j][0]; + if ($this->ENvais[$i][3][$j][1] > $maxbc) { + $enplus += ($this->ENvais[$i][3][$j][1] - $maxbc)*$this->ENvais[$i][3][$j][0]; + $this->ENvais[$i][3][$j][1] = $maxbc; } } } $return = $enplus/$norm; - //Défenses + //Défenses $count = count($this->ENdef); $enplus = 0; $norm = 0; @@ -143,29 +197,33 @@ class Combat { $type = $this->ENdef[$i][0]-1; $maxbc = $defense_bc[$type]; $ajout = $maxbc*$pourcentage/100; - $norm += $maxbc * $this->ENdef[$i][1]; $cntbc = count($this->ENdef[$i][3]); for ($j=0 ; $j<$cntbc ; $j++) { - if ($this->ENdef[$i][3][$j][0] < $maxbc) { - $this->ENdef[$i][3][$j][0] += $ajout; + $norm += $maxbc * $this->ENdef[$i][3][$j][0]; + if ($this->ENdef[$i][3][$j][1] < $maxbc) { + $this->ENdef[$i][3][$j][1] += $ajout; } - else $enplus += $ajout * $this->ENdef[$i][3][$j][1]; - if ($this->ENdef[$i][3][$j][0] > $maxbc) { - $enplus += ($this->ENdef[$i][3][$j][0] - $maxbc)*$this->ENdef[$i][3][$j][1]; - $this->ENdef[$i][3][$j][0] = $maxbc; + else $enplus += $ajout * $this->ENdef[$i][3][$j][0]; + if ($this->ENdef[$i][3][$j][1] > $maxbc) { + $enplus += ($this->ENdef[$i][3][$j][1] - $maxbc)*$this->ENdef[$i][3][$j][0]; + $this->ENdef[$i][3][$j][1] = $maxbc; } } } $return += $enplus/$norm; - return $return/2; + if ($retour) { + if($enplus/$norm == 1) return $pourcentage; + else return false; + } + else return $return/2; } } /** * Calcul la puissance d'attaque disponible - * @param int $pourcentage pourcentage de régénération - * @param bool $attaquant calcul les points de l'attaquant si true, sinon calcul pour le défenseur + * @param int $pourcentage pourcentage de régénération + * @param bool $attaquant calcul les points de l'attaquant si true, sinon calcul pour le défenseur * * @return int points disponibles * @access public @@ -189,7 +247,7 @@ class Combat { $puissance += $maxat * $pourcentage/100 * $this->ENvais[$i][1]; } - //Défenses + //Défenses $count = count($this->ENdef); for ($i=0 ; $i<$count ; $i++) { $maxat = $defense_at[$this->ENdef[$i][0]-1]; @@ -202,77 +260,270 @@ class Combat { /** * Attaque les vaisseaux adverses * @param int $points points d'attaque disponible pour l'attaque - * @param bool $attaquant attaque le défenseur si true, sinon attaque l'attaquant + * @param bool $attaquant attaque le défenseur si true, sinon attaque l'attaquant * * @return void * @access public */ function attaquerVais($points, $attaquant) { + include('includes/vars.php'); if ($attaquant) { while($points > 0) { - // Calcul du nombre de vaisseaux et défenses à attaquer + // Calcul du nombre de vaisseaux et défenses à attaquer $nbvais = 0; + $nbgroupes = 0; $nb = count($this->ENvais); for ($i=0 ; $i<$nb ; $i++) { $nbvais += $this->ENvais[$i][1]; + $nbgroupes += $this->ENvais[$i][2]; } $nb = count($this->ENdef); for ($i=0 ; $i<$nb ; $i++) { $nbvais += $this->ENdef[$i][1]; + $nbgroupes += $this->ENdef[$i][2]; } - //S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle - if ($nbvais < 0 || $points < 0) break; + //S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle + if ($nbvais <= 0 || $nbgroupes <= 0 || $points <= 0) break; - //Calcul du nombre de points qui sera enlevé par vaisseau ou défense - $ppv = $points / $nbvais; + //Calcul du nombre de points qui sera enlevé par vaisseau ou défense + $ppv = $points / $nbgroupes; + $points = 0; - //On lance l'attaque - $nb = count($this->ENvais); - for ($i=0 ; $i<$nb ; $i++) { - $persage = 0; //Initialisation du nombre de point restant pour attaquer les PV - $nbpersage = 0; //Initialisation du nombre de vaisseaux affectuer par le persage - $nbj = count($this->ENvais[$i][3]); //Nombre de vaisseaux dans le groupe + //On lance l'attaque contre les vaisseaux + for ($j=0 ; $j<$nbgroupes ; $j++){ + $k = rand(0, count($this->ENvais)-1); + $l = rand(0, count($this->ENvais[$k][3])-1); - //Attaque des boucliers - for ($j=0 ; $j<$nbj ; $j++) { - $this->ENvais[$i][3][$j][0] -= $ppv; - if ($this->ENvais[$i][3][$j][0] <= 0) { - $persage += abs($this->ENvais[$i][3][$j][0]); - $nbpersage += $this->ENvais[$i][3][$j][1]; - $this->ENvais[$i][3][$j][0] = 0; - } - } - - //Attaque des PV - while($persage > 0) { - $j = count($this->ENvais[$i][2])-1; //Nombre de vaisseaux dans le groupe - if ($this->ENvais[$i][2][$j][0] * $this->ENvais[$i][2][$j][1] < $persage * $nbpersage) { //Si il y a suffisament de point de persage pour détruire tous les vaisseaux de cette ligne - //On efface les vaisseaux du nombre total - $nbvais -= $this->ENvais[$i][2][$j][1]; - $this->ENvais[$i][1] -= $this->ENvais[$i][2][$j][1]; - - //On efface le groupe - unset($this->ENvais[$i][2][$j]); - - //S'il ne reste aucun vaisseaux du type, on le supprime - if ($j == 0 || $this->ENvais[$i][1] == 0) { - unset($this->ENvais[$i]); - $persage = 0; + $this->ENvais[$k][3][$l][1] -= $ppv; + if ($this->ENvais[$k][3][$l][1] < 0) { + $this->ENvais[$k][3][$l][2] -= abs($this->ENvais[$k][3][$l][1]); + $this->ENvais[$k][3][$l][1] = 0; + if ($this->ENvais[$k][3][$l][2] <= 0) { + $this->ENvais[$k][1] -= $this->ENvais[$k][3][$l][0]; + $this->ENvais[$k][2] --; + unset($this->ENvais[$k][3][$l]); + $this->ENvais[$k][3] = array_merge($this->ENvais[$k][3]); + if (!count($this->ENvais[$k][3])) { + unset($this->ENvais[$k]); + $this->ENvais[$k] = array_merge($this->ENvais[$k]); } } - else { //Attaque vaisseau par vaisseau dans le groupe - $nbmod = floor(($this->ENvais[$i][2][$j][0] * $this->ENvais[$i][2][$j][1])/($persage * $nbpersage)); - $this->ENvais[$i][1] -= $nbmod; - $nbvais -= $nbmod; + } + } + //On lance l'attaque contre les défenses + for ($j=0 ; $j<$nbgroupes ; $j++){ + $k = rand(0, count($this->ENdef)-1); + $l = rand(0, count($this->ENdef[$k][3])-1); + + $this->ENdef[$k][3][$l][1] -= $ppv; + if ($this->ENdef[$k][3][$l][1] < 0) { + $this->ENdef[$k][3][$l][2] -= abs($this->ENdef[$k][3][$l][1]); + $this->ENdef[$k][3][$l][1] = 0; + if ($this->ENdef[$k][3][$l][2] <= 0) { + $this->ENdef[$k][1] -= $this->ENdef[$k][3][$l][0]; + $this->ENdef[$k][2] --; + unset($this->ENdef[$k][3][$l]); + $this->ENdef[$k][3] = array_merge($this->ENdef[$k][3]); + if (!count($this->ENdef[$k][3])) { + unset($this->ENdef[$k]); + $this->ENdef[$k] = array_merge($this->ENdef[$k]); + } } } } } + return count($this->ENvais) + count($this->ENdef); + } + else { + while($points > 0) { + // Calcul du nombre de vaisseaux et défenses à attaquer + $nbvais = 0; + $nbgroupes = 0; + $nb = count($this->ATvais); + for ($i=0 ; $i<$nb ; $i++) { + $nbvais += $this->ATvais[$i][1]; + $nbgroupes += $this->ATvais[$i][2]; + } + + //S'il ne reste plus de vaisseaux et de défenses, on arrête la boucle + if ($nbvais <= 0 || $nbgroupes <= 0 || $points <= 0) break; + + //Calcul du nombre de points qui sera enlevé par vaisseau ou défense + $ppv = $points / $nbvais; + $points = 0; + + //On lance l'attaque + for ($j=0 ; $j<$nbgroupes ; $j++){ + $k = rand(0, count($this->ENdef)-1); + $l = rand(0, count($this->ENdef[$k][3])-1); + + $this->ENdef[$k][3][$l][1] -= $ppv; + if ($this->ENdef[$k][3][$l][1] < 0) { + $this->ENdef[$k][3][$l][2] -= abs($this->ENdef[$k][3][$l][1]); + $this->ENdef[$k][3][$l][1] = 0; + if ($this->ENdef[$k][3][$l][2] <= 0) { + $this->ENdef[$k][1] -= $this->ENdef[$k][3][$l][0]; + $this->ENdef[$k][2] --; + unset($this->ENdef[$k][3][$l]); + $this->ENdef[$k][3] = array_merge($this->ENdef[$k][3]); + if (!count($this->ENdef[$k][3])) { + unset($this->ENdef[$k]); + $this->ENdef[$k] = array_merge($this->ENdef[$k]); + } + } + } + } + } + return count($this->ATvais); } } + function exportAT($pillage = false){ + include('includes/vars.php'); + $nb = count($this->ATvais); + $nbvais = 0; $vaisContenu = 0; $vaisseau_1 = 0; $vaisseau_2 = 0; $vaisseau_3 = 0; $vaisseau_4 = 0; $vaisseau_5 = 0; $vaisseau_6 = 0; $vaisseau_7 = 0; $vaisseau_8 = 0; $vaisseau_9 = 0; $vaisseau_10 = 0; $vaisseau_11 = 0; $vaisseau_12 = 0; + for($i=0 ; $i<$nb ; $i++) { + ${'vaisseau_'.$this->ATvais[$i][0]} += $this->ATvais[$i][1]; + $nbvais += $this->ATvais[$i][1]; + $this->vaisContenu += $nomvais_rs[$this->ATvais[$i][0]-1]; + } + $sommeCont = $this->vaisContenuM + $this->vaisContenuC + $this->vaisContenuH; + if ($sommeCont > $this->vaisContenu) { + $retirer = $sommeCont/$this->vaisContenu; + $this->vaisContenuM = floor($this->vaisContenuM/$retirer); + $this->vaisContenuC = floor($this->vaisContenuC/$retirer); + $this->vaisContenuH = floor($this->vaisContenuH/$retirer); + } + if ($pillage) { + $req = mysql_query("SELECT * FROM flottes WHERE `id` = '".$this->refflotte."'"); + $resultat = mysql_fetch_array($req); + $reqDef = mysql_query("SELECT * FROM `planete` WHERE `galaxie` = '".$resultat['end_galaxie']."' AND `ss` = '".$resultat['end_ss']."' AND `position` = '".$resultat['end_position']."'") or die ("erreur sql ".mysql_error()); + $resultatDef = mysql_fetch_array($reqDef); + $ressplus = pillage($resultatDef['metal'], $resultatDef['cristal'], $resultatDef['hydrogene'], $this->vaisContenu - $this->vaisContenuM - $this->vaisContenuC - $this->vaisContenuH); + $this->vaisContenuM += $ressplus[0]; + $this->vaisContenuC += $ressplus[1]; + $this->vaisContenuH += $ressplus[2]; + } + return '`nb_vais` = \''.$nbvais.'\', `contenu_max` = \''.$this->vaisContenu.'\', `contenu_metal` = \''.$this->vaisContenuM.'\', `contenu_cristal` = \''.$this->vaisContenuC.'\', `contenu_hydrogene` = \''.$this->vaisContenuH.'\', `vaisseau_1` = \''.$vaisseau_1.'\', `vaisseau_2` = \''.$vaisseau_2.'\', `vaisseau_3` = \''.$vaisseau_3.'\', `vaisseau_4` = \''.$vaisseau_4.'\', `vaisseau_5` = \''.$vaisseau_5.'\', `vaisseau_6` = \''.$vaisseau_6.'\', `vaisseau_7` = \''.$vaisseau_7.'\', `vaisseau_8` = \''.$vaisseau_8.'\', `vaisseau_9` = \''.$vaisseau_9.'\', `vaisseau_10` = \''.$vaisseau_10.'\', `vaisseau_11` = \''.$vaisseau_11.'\', `vaisseau_12` = \''.$vaisseau_12.'\''; + } + + function exportEN(){ + $nb = count($this->ENvais); + $vaisseau_1 = 0; $vaisseau_2 = 0; $vaisseau_3 = 0; $vaisseau_4 = 0; $vaisseau_5 = 0; $vaisseau_6 = 0; $vaisseau_7 = 0; $vaisseau_8 = 0; $vaisseau_9 = 0; $vaisseau_10 = 0; $vaisseau_11 = 0; $vaisseau_12 = 0; + for($i=0 ; $i<$nb ; $i++) { + ${'vaisseau_'.$this->ENvais[$i][0]} += $this->ENvais[$i][1]; + } + $nb = count($this->ENdef); + $def_1 = 0; $def_2 = 0; $def_3 = 0; $def_4 = 0; $def_5 = 0; + for($i=0 ; $i<$nb ; $i++) { + ${'def_'.$this->ENdef[$i][0]} += $this->ENdef[$i][1]; + } + return '`vaisseau_1` = \''.$vaisseau_1.'\', `vaisseau_2` = \''.$vaisseau_2.'\', `vaisseau_3` = \''.$vaisseau_3.'\', `vaisseau_4` = \''.$vaisseau_4.'\', `vaisseau_5` = \''.$vaisseau_5.'\', `vaisseau_6` = \''.$vaisseau_6.'\', `vaisseau_7` = \''.$vaisseau_7.'\', `vaisseau_8` = \''.$vaisseau_8.'\', `vaisseau_9` = \''.$vaisseau_9.'\', `vaisseau_10` = \''.$vaisseau_10.'\', `vaisseau_11` = \''.$vaisseau_11.'\', `vaisseau_12` = \''.$vaisseau_12.'\', `def_1` = \''.$def_1.'\', `def_2` = \''.$def_2.'\', `def_3` = \''.$def_3.'\', `def_4` = \''.$def_4.'\', `def_5` = \''.$def_5.'\''; + } + + function genRapport($fin, $ATgagnant = false){ + $req = mysql_query("SELECT * FROM `flottes` WHERE `id` = '".$this->refflotte."'"); + $resultat = mysql_fetch_array($req); + $reqDef = mysql_query("SELECT `id_user` FROM `planete` WHERE `galaxie` = '".$resultat['end_galaxie']."' AND `ss` = '".$resultat['end_ss']."' AND `position` = '".$resultat['end_position']."'") or die ("erreur sql ".mysql_error()); + $resultatDef = mysql_fetch_array($reqDef); + + if ($this->Ntour == 0) { + $rapportAT = '[b]Le combat contre '.trouvNom($resultatDef['id_user']).' est engagé ![/b] + + '; + $rapportEN = '[b]Un combat est engagé contre '.trouvNom($resultatDef['id_user']).' ![/b] + + '; + } + elseif ($fin) { + $rapportAT = '[b]Le combat contre '.trouvNom($resultatDef['id_user']).' est terminé ![/b] + + '; + $rapportEN = '[b]Le combat contre '.trouvNom($resultatDef['id_user']).' est terminé ![/b] + + '; + } + else { + $rapportAT = '[b]Suite du combat contre '.trouvNom($resultatDef['id_user']).' ![/b] + + '; + $rapportEN = '[b]Suite du combat contre '.trouvNom($resultatDef['id_user']).' ![/b] + + '; + } + $rapportAT .= 'Tactique lors de ce tour : '.txtTactique($this->ATtactique).'. + + Lieux : ['.$resultat['end_galaxie'].':'.$resultat['end_ss'].':'.$resultat['end_position'].'] METTRE UN LIEN + + Vaisseaux au début de notre côté : + Array + + Vaisseaux adverse au début : + Array + + Défenses adverse au début : + Array + + Etat de notre flotte à la fin de ce tour : + Grand Array ^^ + + Etat de la flotte adverse à la fin de ce tour : + Grand Array ^^ + + '; + + $rapportEN .= 'Tactique lors de ce tour : '.txtTactique($this->ENtactique).'. + + Lieux : ['.$resultat['end_galaxie'].':'.$resultat['end_ss'].':'.$resultat['end_position'].'] METTRE UN LIEN + + Vaisseaux au début de notre côté : + Array + + Défenses au début de notre côté : + Array + + Vaisseaux adverse au début : + Array + + Etat de notre flotte à la fin de ce tour : + Grand Array ^^ + + Etat de la flotte adverse à la fin de ce tour : + Grand Array ^^ + + '; + + if (floor($this->Ntour/2) == $this->Ntour/2 && !$fin) { + $rapportAT .= 'Vous pouvez profiter du temps de régénération des boucliers et des armes pour envoyer un nouvel ordre de tactique : Cliquez ici ! + + La prochaine attaque est prévue à '.date('/dm/ H:i:s', $this->timestamp+600); + $rapportEN .= 'Vous pouvez profiter du temps de régénération des boucliers et des armes pour envoyer un nouvel ordre de tactique : Cliquez ici ! + + La prochaine attaque est prévue à '.date('/dm/ H:i:s', $this->timestamp+300); + } + elseif (!$fin) { + $rapportAT .= 'Vous pouvez profiter du temps de régénération des boucliers et des armes pour envoyer un nouvel ordre de tactique : Cliquez ici ! + + La prochaine attaque est prévue à '.date('/dm/ H:i:s', $this->timestamp+300); + $rapportEN .= 'Vous pouvez profiter du temps de régénération des boucliers et des armes pour envoyer un nouvel ordre de tactique : Cliquez ici ! + + La prochaine attaque est prévue à '.date('/dm/ H:i:s', $this->timestamp+600); + } + elseif ($fin && $ATgagnant) { + $rapportAT .= 'Nous avons gagné le combat ! + + Nous repartons avec plein de choses.'; + $rapportEN .= 'Nous n\'avons pas pu repousser l\'envahisseur qui repart avec plein de chose.'; + } + elseif ($fin && !$ATgagnant) { + $rapportAT .= 'Nous avons perdu le combat !'; + $rapportEN .= 'Nous avons pu repousser l\'envahisseur qui repart sans rien.'; + } + + return array(mysql_real_escape_string($rapportAT), mysql_real_escape_string($rapportEN), $resultat['id_user'], $resultatDef['id_user']); + } } ?> \ No newline at end of file diff --git a/Class/class.gerefile.php b/Class/class.gerefile.php new file mode 100644 index 0000000..130e2ba --- /dev/null +++ b/Class/class.gerefile.php @@ -0,0 +1,90 @@ +limite = $limite; + } + + function addObjet($objet,$nombre,$temps) { + $nbF = count($this->file); + if ($nbF >= $this->limite) return false; + $this->chaine = false; + if($nbF == 0) $this->timestamp = time(); + if($nbF > 0 && $this->file[$nbF-1][0] == $objet) $this->file[$nbF-1][1] += $nombre; + else $this->file[] = array($objet, $nombre, $temps); + return true; + } + + function existe($objet) { + $this->file = array_merge($this->file); + $nbF=count($this->file); + for ($i=0 ; $i<$nbF ; $i++){ + if($objet == $this->file[$i][0]) return true; + } + return false; + } + + function delobjet($objet, $nombre=1) { + $this->file = array_merge($this->file); + for($i=count($this->file)-1 ; $i>=0 ; $i--) { + if($this->file[$i][0] == $objet){ + $nombre=min($nombre, $this->file[$i][1]); + $this->file[$i][1] -= $nombre; + if($this->file[$i][1]<=0) { + unset($this->file[$i]); + $this->file = array_merge($this->file); + } + } + } + return $nombre; + } + + function pret() { + $out = array(); + $nbF = count($this->file); + if ($nbF == 1 && $this->chaine) { + $nb = floor((time()-$this->timestamp)/$this->file[0][2]); + if ($nb > 0) { + $out[] = array($this->file[0][0], $nb); + $this->timestamp += $nb * $this->file[0][2]; + } + } + elseif ($nbF != 0) { + $this->file = array_merge($this->file); + for($i=0 ; $i<$nbF ; $i++){ + $tps = time() - $this->timestamp; + if($this->file[$i][1] * $this->file[$i][2] < $tps) { + $out[] = array($this->file[$i][0], $this->file[$i][1]); + $this->timestamp += $this->file[$i][1] * $this->file[$i][2]; + unset($this->file[$i]); + } + elseif ($this->file[$i][2] < $tps) { + for($j=0 ; $j*$this->file[$i][2]<$tps ; $j++) {} + $j--; + $out[] = array($this->file[$i][0], $j); + $this->timestamp += $j * $this->file[$i][2]; + $this->file[$i][1] -= $j; + break; + } + else { + return $out; + } + } + $this->file = array_merge($this->file); + } + return $out; + } + + function export(){ + $nbF = count($this->file); + $out = ''; + for($i=0;$i<$nbF;$i++){ + $out .= implode(',',$this->file[$i]).';'; + } + return $out; + } +} \ No newline at end of file diff --git a/Class/class.rapport.php b/Class/class.rapport.php new file mode 100644 index 0000000..d332ed7 --- /dev/null +++ b/Class/class.rapport.php @@ -0,0 +1,114 @@ +type = $type; + $this->utilA = $utilA; + $this->utilB = $utilB; + $this->timestamp = $time; + } + + function addInfo($info, $id){ + $this->var[$id] = $info; + } + + function send(){ + if ($this->type == '1') $this->sendCombat(); + elseif ($this->type == '2') $this->sendTransport(); + elseif ($this->type == '3') $this->sendColonisation(); + elseif ($this->type == '4') $this->sendRecyclage(); + elseif ($this->type == '5') $this->sendEspionnage(); + elseif ($this->type == '6') $this->sendAlliance(); + } + + function sendEspionnage(){ + include_once('includes/function.php'); + $titreA = 'Rapport d\'espionnage de '.$this->var[0]['nom_planete'].' ['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']'; + $rapportA = 'Espionnage de '.trouvNom($this->utilB).' sur '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].']

'; + + $race = trouvInfo($this->utilB, 'race'); + $auth_level = 0; + include('includes/noms.php'); + include('includes/vars.php'); + + if (isset($this->var[1]) && $this->var[1] == false) $rapportA .= 'Nos sondes n\'ont pas pu récolter d\'information sur cette planète.'; + else { + $rapportA .= '
Ressources sur la planète :
Métal :'.$this->var[0]['metal'].'
Cristal :'.$this->var[0]['cristal'].'
Hydrogène :'.$this->var[0]['hydrogene'].'

'; + if (isset($this->var[1]) && $this->var[1] == true) { + $rapportA .= ''; + $nbvais = count($nomvaisn); + for($i=1 ; $i<$nbvais ; $i++) { + if ($this->var[0]['vaisseau_'.$i] >= 1) $rapportA .= ''; + } + $rapportA .= '
NombreVaisseaux
'.$this->var[0]['vaisseau_'.$i].''.$nomvaisn[$i-1].'

'; + } + if (isset($this->var[2]) && $this->var[2] == true) { + $rapportA .= ''; + $nbdef = count($nomterrn) - 7; + for($i=1 ; $i<$nbdef ; $i++) { + if ($this->var[0]['def_'.$i] >= 1) $rapportA .= ''; + } + $rapportA .= '
NombreDéfenses
'.$this->var[0]['def_'.$i].''.$nomterrn[$i+7].'

'; + } + if (isset($this->var[3]) && $this->var[3] == true) { + $rapportA .= ''; + $nbbat = count($batiment); + for($i=1 ; $i<$nbbat ; $i++) { + if ($this->var[0][$batimentVAR[$i-1]] >= 1) $rapportA .= ''; + } + $rapportA .= '
NiveauBatiment
'.$this->var[0][$batimentVAR[$i-1]].''.$batiment[$i-1].'

'; + } + if (isset($this->var[4]) && is_array($this->var[4])) { + $rapportA .= ''; + $nbtec = count($technolo); + for($i=1 ; $i<$nbtec ; $i++) { + if ($this->var[4][$technoloVAR[$i-1]] >= 1) $rapportA .= ''; + } + $rapportA .= '
NiveauTechnologie
'.$this->var[4][$technoloVAR[$i-1]].''.$technolo[$i-1].'

'; + } + if (isset($this->var[5]) && is_array($this->var[5])) { + //ISOLEMENT + } + } + + $titreB = 'Rapport de contre-espionnage'; + $rapportB = 'Nous vennons d\'apprendre que notre planète : '.$this->var[0]['nom_planete'].'['.$this->var[0]['galaxie'].':'.$this->var[0]['ss'].':'.$this->var[0]['position'].'] a été la cible d\'un espionnage de la part de '.trouvNom($this->utilA); + + $titreA = mysql_real_escape_string($titreA); + $rapportA = mysql_real_escape_string($rapportA); + $titreB = mysql_real_escape_string($titreB); + $rapportB = mysql_real_escape_string($rapportB); + $temps = $this->timestamp; + + mysql_query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titreA', '$rapportA', '$temps')"); + mysql_query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilB)."', '', '$titreB', '$rapportB', '$temps')"); + } + + function sendAlliance(){ + include_once('includes/function.php'); + $titreA = 'Déclaration officielle de votre alliance !'; + $rapportA = 'Félicitations, votre alliance a recueilli suffisament de signature, sa déclaration est maintenant officielle !

Vous pouvez dès maintenant administrer votre alliance en vous randant sur la page Alliance.'; + + $titreA = mysql_real_escape_string($titreA); + $rapportA = mysql_real_escape_string($rapportA); + $temps = $this->timestamp; + + mysql_query("INSERT INTO mail VALUES('', '1', '".trouvNom($this->utilA)."', '', '$titreA', '$rapportA', '$temps')"); + } +} +?> \ No newline at end of file diff --git a/Class/class.smtp.php b/Class/class.smtp.php index 6b45c3a..75baf9c 100644 --- a/Class/class.smtp.php +++ b/Class/class.smtp.php @@ -28,13 +28,13 @@ class SMTP * @var int */ var $SMTP_PORT = 25; - + /** * SMTP reply line ending * @var string */ var $CRLF = "\r\n"; - + /** * Sets whether debugging is turned on * @var bool @@ -98,7 +98,7 @@ class SMTP } #connect to the smtp server - $this->smtp_conn = fsockopen($host, # the host of the server + @$this->smtp_conn = fsockopen($host, # the host of the server $port, # the port to use $errno, # error number if any $errstr, # error message if any @@ -502,7 +502,7 @@ class SMTP } $this->helo_rply = $rply; - + return true; } diff --git a/Class/flotte.php b/Class/flotte.php deleted file mode 100644 index 73ba1cc..0000000 --- a/Class/flotte.php +++ /dev/null @@ -1,246 +0,0 @@ -vaisseaux[0] = $vaisseau_1; $this->vaisseaux[1] = $vaisseau_2; $this->vaisseaux[2] = $vaisseau_3; $this->vaisseaux[3] = $vaisseau_4; $this->vaisseaux[4] = $vaisseau_5; $this->vaisseaux[5] = $vaisseau_6; $this->vaisseaux[6] = $vaisseau_7; $this->vaisseaux[7] = $vaisseau_8; $this->vaisseaux[8] = $vaisseau_9; $this->vaisseaux[9] = $vaisseau_10; $this->vaisseaux[10] = $vaisseau_11; $this->vaisseaux[11] = $vaisseau_12; - $this->ressources_max = $Tressources_max; - $this->vitesses_cd = $Tvitesses_cd; - $this->vitesses_ld = $Tvitesses_ld; - $this->preparation_cd = $Tpreparation_cd; - $this->preparation_ld = $Tpreparation_ld; - $this->chauffe_ld = $Tchauffe_ld; - $this->calcFret(); - } - - /** - * Ajouter $nombre vaisseaux de type $type - * - */ - function addVaisseaux($type, $nombre) { - $type--; - $this->vaisseaux[$type] += $nombre; - - $this->calcFret(); - } - - /** - * Supprime $nombre vaisseaux de type $type - * - */ - function delVaisseaux($type, $nombre) { - $type--; - $this->vaisseaux[$type] -= $nombre; - if ($this->vaisseaux[$type] < 0) $this->vaisseaux[$type] = 0; - - $this->calcFret(); - } - - /** - * Vérifie qu'il reste assez de place dans les vaisseaux pour transporter $nombre de ressources du type $type - * - */ - function verifRessources($type, $nombre) { - $type--; - if ($type == 0) { - if ($this->vaisseaux_fret[$type]+$nombre+$this->vaisseaux_fret[$type+1]+$this->vaisseaux_fret[$type+2] > $this->fret_max) return false; // Retourne false si la quantité à ajouter est trop importante - else return true; - } - elseif ($type == 1) { - if ($this->vaisseaux_fret[$type]+$nombre+$this->vaisseaux_fret[$type+1]+$this->vaisseaux_fret[$type-1] > $this->fret_max) return false; // Retourne false si la quantité à ajouter est trop importante - else return true; - } - elseif ($type == 2) { - if ($this->vaisseaux_fret[$type]+$nombre+$this->vaisseaux_fret[$type-1]+$this->vaisseaux_fret[$type-2] > $this->fret_max) return false; // Retourne false si la quantité à ajouter est trop importante - else return true; - } - else return false; - } - - /** - * Ajouter $nombre ressources de type $type - * - */ - function addRessources($type, $nombre) { - if ($this->verifRessources($type, $nombre) == true) { - $type--; - $this->vaisseaux_fret[$type] += $nombre; - return true; - } - else return false; - } - - /** - * Enlève $nombre ressources de type $type - * - */ - function delRessources($type, $nombre) { - $type--; - $this->vaisseaux_fret[$type] -= $nombre; - if ($this->vaisseaux_fret[$type] < 0) $this->vaisseaux_fret[$type] = 0; - } - - /** - * Enlève toutes les ressources de type $type - * Si $type = 0, enlève toutes les ressources - * - */ - function razRessources($type = 0) { - $type--; - if ($type == -1) $this->vaisseaux_fret = array(0,0,0); - else $this->vaisseaux_fret[$type] = 0; - } - - /** - * Recalcul le nombre maximum de ressource que peuvent transporter tous les vaisseaux - * - */ - function calcFret() { - $cnt = count($this->vaisseaux); - for ($i=0 ; $i<$cnt ; $i++) { - $this->fret_max += $this->vaisseaux[$i] * $this->ressources_max[$i]; - } - } - - /** - * Fixer position de départ - * - */ - function fixePosition($galaxie, $systeme, $planete, $time = 0) { - if ($time == 0) $time = time(); - - $this->position_galaxie = $galaxie; - $this->position_systeme = $systeme; - $this->position_planete = $planete; - $this->position_temps = $time; - } - - /** - * Déplacer la flotte vers une destination et calcul du temps de déplacement - * - */ - function deplacerFlotte($galaxie, $systeme, $planete, $coefficient = 1) { - $this->destination_galaxie = $galaxie; - $this->destination_systeme = $systeme; - $this->destination_planete = $planete; - $this->vitesse_coefficient = $coefficient; - - $this->calcTemps(); - } - - /** - * Recalcul le temps de déplacement - * - */ - function calcTemps() { - $start_galaxie = $this->position_galaxie; - $start_ss = $this->position_systeme; - $start_position = $this->position_planete; - $end_galaxie = $this->destination_galaxie; - $end_ss = $this->destination_systeme; - $end_position = $this->destination_planete; - - $AvaisType = ''; $AvaisVitesseC = ''; $AvaisVitesseL = ''; $AvaisPrepC = ''; $AvaisChauffe = ''; $AvaisContenu = 0; - for ($i=0 ; $i<=12 ; $i++) { - for ($j = 1; $j <= $this->vaisseaux[$i]; $j++) { - $AvaisType .= ($i).' '; - $AvaisVitesseC .= $this->vitesses_cd[$i].' '; - $AvaisVitesseL .= $this->vitesses_ld[$i].' '; - $AvaisPrepC .= $this->preparation_cd[$i].' '; - $AvaisPrepL .= $this->preparation_ld[$i].' '; - $AvaisChauffe .= $this->chauffe_ld[$i].' '; - } - } - $AvaisType = split(' ', trim($AvaisType)); $AvaisVitesseC = split(' ', trim($AvaisVitesseC)); $AvaisVitesseL = split(' ', trim($AvaisVitesseL)); $AvaisContenu = split(' ', trim($AvaisContenu)); $AvaisPrepC = split(' ', trim($AvaisPrepC)); $AvaisPrepL = split(' ', trim($AvaisPrepL)); $AvaisChauffe = split(' ', trim($AvaisChauffe)); - - if(min($AvaisVitesseL) != 0) { - $vitesse = min($AvaisVitesseL); - $preparation = max($AvaisPrepL); - $chauffe = max($AvaisChauffe); - } - else { - $vitesse = min($AvaisVitesseC); - $preparation = max($AvaisPrepC); - $chauffe = 0; - } - - $this->vaisseaux_nombre = count($AvaisType); - $coefvitesse = $this->vitesse_coefficient; - - if ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $end_position-$start_position == 0) $temps = 0; - elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $chauffe == 0) $temps = $preparation+abs($end_position-$start_position)*$vitesse/12; - elseif ($end_galaxie-$start_galaxie == 0 && $chauffe == 0) $temps = $preparation+abs($end_ss-$start_ss)*$vitesse; - elseif ($chauffe == 0) $temps = $preparation+abs($end_galaxie-$start_galaxie)*$vitesse*300; - elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0) $temps = $preparation+abs($end_position-$start_position)*($vitesse*2)/12+$preparation; - /*elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss <= $chauffe) $temps = abs($end_ss-$start_ss)*(($vitesse/$chauffe)*($chauffe-abs($end_ss-$start_ss))+$vitesse)+$preparation; - elseif ($end_galaxie-$start_galaxie == 0) $temps = $vitesse*abs($end_ss-$start_ss)+$vitesse*10+$preparation;*/ - elseif ($end_galaxie-$start_galaxie == 0) $temps = (abs($end_ss-$start_ss)*(($vitesse/$chauffe)*((abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)+$vitesse))+(20-(abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)*54+$preparation; - else $temps = (($vitesse/$chauffe)*($chauffe-abs($end_galaxie-$start_galaxie))+$vitesse)*300+108+$preparation; - - $this->destination_temps = $temps/$coefvitesse; - return $temps/$coefvitesse; - } - - /** - * Calcul la consomation de la flotte - * - */ - function calcConso() { - return intval($this->destination_temps*$this->vaisseaux_nombre/20); - } -} - -$race = 'humain'; -$auth_level = 7; -include('../languages/fr_FR/noms.php'); - -$flotte = new flotte($nomvais_rs,$nomvais_dc,$nomvais_lc,$nomvais_pdc,$nomvais_pdl,$nomvais_cdl,0,0,0,4); -$flotte->addRessources(1,11); -$flotte->deplacerFlotte(1,1,1); -$flotte->calcTemps(); -print_r ($flotte->calcConso()); -?> \ No newline at end of file diff --git a/Class/gererFile.php b/Class/gererFile.php deleted file mode 100644 index fd5b215..0000000 --- a/Class/gererFile.php +++ /dev/null @@ -1,67 +0,0 @@ -fileArray = $fileArray; - $this->fileTexte = implode(' ',$fileArray); - $this->tempsArray = $tempsArray; - $this->tempsTexte = implode(' ',$tempsArray); - } - - /** - * Ajouter une action à la file - * - */ - function add($file, $temps) { - $file = trim($file); - $temps = trim($temps); - $this->fileTexte .= ' '.$file; - $this->fileArray = explode(' ',$fileTexte); - $this->tempsTexte .= ' '.$temps; - $this->tempsArray = explode(' ',$tempsTexte); - } - - /** - * Supprime une action de la file - * - */ - function delId($id) { - $pos = strpos(implode(',', $fileTec).',', $_GET['tec'].','); - $this->fileTexte .= ' '.$file; - $this->fileArray = explode(' ',$fileTexte); - $this->tempsTexte .= ' '.$temps; - $this->tempsArray = explode(' ',$tempsTexte); - } -} - -$gestion = new gererFile(explode(' ','1 2 3 4 5'), explode(' ', '123 456 789 101112 131415 161718')); -$gestion->add('6', '192021'); -print $gestion->fileTexte; -?> \ No newline at end of file diff --git a/Class/phpmailer.lang-en.php b/Class/phpmailer.lang-fr.php similarity index 56% rename from Class/phpmailer.lang-en.php rename to Class/phpmailer.lang-fr.php index 2f45383..7ba2ef2 100644 --- a/Class/phpmailer.lang-en.php +++ b/Class/phpmailer.lang-fr.php @@ -1,6 +1,6 @@ diff --git a/Class/test/message.txt b/Class/test/message.txt deleted file mode 100644 index 2ae06f6..0000000 --- a/Class/test/message.txt +++ /dev/null @@ -1,355 +0,0 @@ -Received: from phpmailer ([127.0.0.1]) - by 127.0.0.1 with HTTP (PHPMailer); - Tue, 22 Jan 2008 23:56:42 +0100 -Date: Tue, 22 Jan 2008 23:56:42 +0100 -Return-Path: nobody@example.com -To: Test User -Cc: Carbon User -From: Unit Tester -Reply-to: Reply Guy -Subject: Unit Test: AltBody + Attachment -Message-ID: -X-Priority: 3 -X-Mailer: PHPMailer [version 1.71] -MIME-Version: 1.0 -Content-Type: multipart/mixed; - boundary="b1_a0169dc7929d1c609a827b4d1a0c3f74" - - ---b1_a0169dc7929d1c609a827b4d1a0c3f74 -Content-Type: multipart/alternative; - boundary="b2_a0169dc7929d1c609a827b4d1a0c3f74" - ---b2_a0169dc7929d1c609a827b4d1a0c3f74 -Content-Type: text/plain; charset = "iso-8859-1" -Content-Transfer-Encoding: 8bit - - -This is the text part of the email. - - ---b2_a0169dc7929d1c609a827b4d1a0c3f74 -Content-Type: text/html; charset = "iso-8859-1" -Content-Transfer-Encoding: 8bit - - -This is the HTML part of the email.

---------------------
Unit Test Information
---------------------
phpmailer version: 1.71
Content Type: text/html
Host: localhost
Attachments:
  • Name: phpmailer_test.php, Encoding: base64, Type: application/octet-stream

Changes
-------
  • Sender was changed to [nobody@example.com]
  • Mailer was changed to [smtp]


- - - ---b2_a0169dc7929d1c609a827b4d1a0c3f74-- ---b1_a0169dc7929d1c609a827b4d1a0c3f74 -Content-Type: application/octet-stream; name="test_attach.txt" -Content-Transfer-Encoding: base64 -Content-Disposition: attachment; filename="test_attach.txt" - -PD9waHANCi8qKioqKioqKioqKioqKioqKioqDQogIFVuaXQgVGVzdA0KICBUeXBlOiBwaHBtYWls -ZXIgY2xhc3MNCioqKioqKioqKioqKioqKioqKioqLw0KDQokSU5DTFVERV9ESVIgPSAiLi4vIjsN -Cg0KcmVxdWlyZSgicGhwdW5pdC5waHAiKTsNCnJlcXVpcmUoJElOQ0xVREVfRElSIC4gImNsYXNz -LnBocG1haWxlci5waHAiKTsNCmVycm9yX3JlcG9ydGluZyhFX0FMTCk7DQoNCi8qKg0KICogUGVy -Zm9ybXMgYXV0aGVudGljYXRpb24gdGVzdHMNCiAqLw0KY2xhc3MgcGhwbWFpbGVyVGVzdCBleHRl -bmRzIFRlc3RDYXNlDQp7DQogICAgLyoqDQogICAgICogSG9sZHMgdGhlIGRlZmF1bHQgcGhwbWFp -bGVyIGluc3RhbmNlLg0KICAgICAqIEBwcml2YXRlDQogICAgICogQHR5cGUgb2JqZWN0DQogICAg -ICovDQogICAgdmFyICRNYWlsID0gZmFsc2U7DQoNCiAgICAvKioNCiAgICAgKiBIb2xkcyB0aGUg -U01UUCBtYWlsIGhvc3QuDQogICAgICogQHB1YmxpYw0KICAgICAqIEB0eXBlIHN0cmluZw0KICAg -ICAqLw0KICAgIHZhciAkSG9zdCA9ICIiOw0KDQogICAgLyoqDQogICAgICogSG9sZHMgdGhlIGNo -YW5nZSBsb2cuDQogICAgICogQHByaXZhdGUNCiAgICAgKiBAdHlwZSBzdHJpbmcgYXJyYXkNCiAg -ICAgKi8NCiAgICB2YXIgJENoYW5nZUxvZyA9IGFycmF5KCk7DQoNCiAgICAgLyoqDQogICAgICog -SG9sZHMgdGhlIG5vdGUgbG9nLg0KICAgICAqIEBwcml2YXRlDQogICAgICogQHR5cGUgc3RyaW5n -IGFycmF5DQogICAgICovDQogICAgdmFyICROb3RlTG9nID0gYXJyYXkoKTsNCg0KICAgIC8qKg0K -ICAgICAqIENsYXNzIGNvbnN0dWN0b3IuDQogICAgICovDQogICAgZnVuY3Rpb24gcGhwbWFpbGVy -VGVzdCgkbmFtZSkgew0KICAgICAgICAvKiBtdXN0IGRlZmluZSB0aGlzIGNvbnN0cnVjdG9yICov -DQogICAgICAgICR0aGlzLT5UZXN0Q2FzZSggJG5hbWUgKTsNCiAgICB9DQoNCiAgICAvKioNCiAg -ICAgKiBSdW4gYmVmb3JlIGVhY2ggdGVzdCBpcyBzdGFydGVkLg0KICAgICAqLw0KICAgIGZ1bmN0 -aW9uIHNldFVwKCkgew0KICAgICAgICBnbG9iYWwgJGdsb2JhbF92YXJzOw0KICAgICAgICBnbG9i -YWwgJElOQ0xVREVfRElSOw0KDQogICAgICAgICR0aGlzLT5NYWlsID0gbmV3IFBIUE1haWxlcigp -Ow0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Qcmlvcml0eSA9IDM7DQogICAgICAgICR0aGlzLT5N -YWlsLT5FbmNvZGluZyA9ICI4Yml0IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPkNoYXJTZXQgPSAi -aXNvLTg4NTktMSI7DQogICAgICAgICR0aGlzLT5NYWlsLT5Gcm9tID0gInVuaXRfdGVzdEBwaHBt -YWlsZXIuc2YubmV0IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPkZyb21OYW1lID0gIlVuaXQgVGVz -dGVyIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlNlbmRlciA9ICIiOw0KICAgICAgICAkdGhpcy0+ -TWFpbC0+U3ViamVjdCA9ICJVbml0IFRlc3QiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9 -ICIiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+QWx0Qm9keSA9ICIiOw0KICAgICAgICAkdGhpcy0+ -TWFpbC0+V29yZFdyYXAgPSAwOw0KICAgICAgICAkdGhpcy0+TWFpbC0+SG9zdCA9ICRnbG9iYWxf -dmFyc1sibWFpbF9ob3N0Il07DQogICAgICAgICR0aGlzLT5NYWlsLT5Qb3J0ID0gMjU7DQogICAg -ICAgICR0aGlzLT5NYWlsLT5IZWxvID0gImxvY2FsaG9zdC5sb2NhbGRvbWFpbiI7DQogICAgICAg -ICR0aGlzLT5NYWlsLT5TTVRQQXV0aCA9IGZhbHNlOw0KICAgICAgICAkdGhpcy0+TWFpbC0+VXNl -cm5hbWUgPSAiIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPlBhc3N3b3JkID0gIiI7DQogICAgICAg -ICR0aGlzLT5NYWlsLT5QbHVnaW5EaXIgPSAkSU5DTFVERV9ESVI7DQoJCSR0aGlzLT5NYWlsLT5B -ZGRSZXBseVRvKCJub19yZXBseUBwaHBtYWlsZXIuc2YubmV0IiwgIlJlcGx5IEd1eSIpOw0KICAg -ICAgICAkdGhpcy0+TWFpbC0+U2VuZGVyID0gIm5vYm9keUBleGFtcGxlLmNvbSI7DQoNCiAgICAg -ICAgaWYoc3RybGVuKCR0aGlzLT5NYWlsLT5Ib3N0KSA+IDApDQogICAgICAgICAgICAkdGhpcy0+ -TWFpbC0+TWFpbGVyID0gInNtdHAiOw0KICAgICAgICBlbHNlDQogICAgICAgIHsNCiAgICAgICAg -ICAgICR0aGlzLT5NYWlsLT5NYWlsZXIgPSAibWFpbCI7DQogICAgICAgICAgICAkdGhpcy0+U2Vu -ZGVyID0gInVuaXRfdGVzdEBwaHBtYWlsZXIuc2YubmV0IjsNCiAgICAgICAgfQ0KDQogICAgICAg -IGdsb2JhbCAkZ2xvYmFsX3ZhcnM7DQogICAgICAgICR0aGlzLT5TZXRBZGRyZXNzKCRnbG9iYWxf -dmFyc1sibWFpbF90byJdLCAiVGVzdCBVc2VyIik7DQogICAgICAgIGlmKHN0cmxlbigkZ2xvYmFs -X3ZhcnNbIm1haWxfY2MiXSkgPiAwKQ0KICAgICAgICAgICAgJHRoaXMtPlNldEFkZHJlc3MoJGds -b2JhbF92YXJzWyJtYWlsX2NjIl0sICJDYXJib24gVXNlciIsICJjYyIpOw0KICAgIH0NCg0KICAg -IC8qKg0KICAgICAqIFJ1biBhZnRlciBlYWNoIHRlc3QgaXMgY29tcGxldGVkLg0KICAgICAqLw0K -ICAgIGZ1bmN0aW9uIHRlYXJEb3duKCkgew0KICAgICAgICAvLyBDbGVhbiBnbG9iYWwgdmFyaWFi -bGVzDQogICAgICAgICR0aGlzLT5NYWlsID0gTlVMTDsNCiAgICAgICAgJHRoaXMtPkNoYW5nZUxv -ZyA9IGFycmF5KCk7DQogICAgICAgICR0aGlzLT5Ob3RlTG9nID0gYXJyYXkoKTsNCiAgICB9DQoN -Cg0KICAgIC8qKg0KICAgICAqIEJ1aWxkIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIGluIHRoZSBh -cHByb3ByaWF0ZSBmb3JtYXQuDQogICAgICogQHByaXZhdGUNCiAgICAgKiBAcmV0dXJucyB2b2lk -DQogICAgICovDQogICAgZnVuY3Rpb24gQnVpbGRCb2R5KCkgew0KICAgICAgICAkdGhpcy0+Q2hl -Y2tDaGFuZ2VzKCk7DQoNCiAgICAgICAgLy8gRGV0ZXJtaW5lIGxpbmUgZW5kaW5ncyBmb3IgbWVz -c2FnZQ0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+Q29udGVudFR5cGUgPT0gInRleHQvaHRtbCIg -fHwgc3RybGVuKCR0aGlzLT5NYWlsLT5BbHRCb2R5KSA+IDApDQogICAgICAgIHsNCiAgICAgICAg -ICAgICRlb2wgPSAiPGJyLz4iOw0KICAgICAgICAgICAgJGJ1bGxldCA9ICI8bGk+IjsNCiAgICAg -ICAgICAgICRidWxsZXRfc3RhcnQgPSAiPHVsPiI7DQogICAgICAgICAgICAkYnVsbGV0X2VuZCA9 -ICI8L3VsPiI7DQogICAgICAgIH0NCiAgICAgICAgZWxzZQ0KICAgICAgICB7DQogICAgICAgICAg -ICAkZW9sID0gIlxuIjsNCiAgICAgICAgICAgICRidWxsZXQgPSAiIC0gIjsNCiAgICAgICAgICAg -ICRidWxsZXRfc3RhcnQgPSAiIjsNCiAgICAgICAgICAgICRidWxsZXRfZW5kID0gIiI7DQogICAg -ICAgIH0NCg0KICAgICAgICAkUmVwb3J0Qm9keSA9ICIiOw0KDQogICAgICAgICRSZXBvcnRCb2R5 -IC49ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0iIC4gJGVvbDsNCiAgICAgICAgJFJlcG9ydEJvZHkg -Lj0gIlVuaXQgVGVzdCBJbmZvcm1hdGlvbiIgLiAkZW9sOw0KICAgICAgICAkUmVwb3J0Qm9keSAu -PSAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiAuICRlb2w7DQogICAgICAgICRSZXBvcnRCb2R5IC49 -ICJwaHBtYWlsZXIgdmVyc2lvbjogIiAuICR0aGlzLT5NYWlsLT5WZXJzaW9uIC4gJGVvbDsNCiAg -ICAgICAgJFJlcG9ydEJvZHkgLj0gIkNvbnRlbnQgVHlwZTogIiAuICR0aGlzLT5NYWlsLT5Db250 -ZW50VHlwZSAuICRlb2w7DQoNCiAgICAgICAgaWYoc3RybGVuKCR0aGlzLT5NYWlsLT5Ib3N0KSA+ -IDApDQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAiSG9zdDogIiAuICR0aGlzLT5NYWlsLT5I -b3N0IC4gJGVvbDsNCg0KICAgICAgICAvLyBJZiBhdHRhY2htZW50cyB0aGVuIGNyZWF0ZSBhbiBh -dHRhY2htZW50IGxpc3QNCiAgICAgICAgaWYoY291bnQoJHRoaXMtPk1haWwtPmF0dGFjaG1lbnQp -ID4gMCkNCiAgICAgICAgew0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gIkF0dGFjaG1lbnRz -OiIgLiAkZW9sOw0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gJGJ1bGxldF9zdGFydDsNCiAg -ICAgICAgICAgIGZvcigkaSA9IDA7ICRpIDwgY291bnQoJHRoaXMtPk1haWwtPmF0dGFjaG1lbnQp -OyAkaSsrKQ0KICAgICAgICAgICAgew0KICAgICAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICRi -dWxsZXQgLiAiTmFtZTogIiAuICR0aGlzLT5NYWlsLT5hdHRhY2htZW50WyRpXVsxXSAuICIsICI7 -DQogICAgICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0gIkVuY29kaW5nOiAiIC4gJHRoaXMtPk1h -aWwtPmF0dGFjaG1lbnRbJGldWzNdIC4gIiwgIjsNCiAgICAgICAgICAgICAgICAkUmVwb3J0Qm9k -eSAuPSAiVHlwZTogIiAuICR0aGlzLT5NYWlsLT5hdHRhY2htZW50WyRpXVs0XSAuICRlb2w7DQog -ICAgICAgICAgICB9DQogICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0X2VuZCAuICRl -b2w7DQogICAgICAgIH0NCg0KICAgICAgICAvLyBJZiB0aGVyZSBhcmUgY2hhbmdlcyB0aGVuIGxp -c3QgdGhlbQ0KICAgICAgICBpZihjb3VudCgkdGhpcy0+Q2hhbmdlTG9nKSA+IDApDQogICAgICAg -IHsNCiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICJDaGFuZ2VzIiAuICRlb2w7DQogICAgICAg -ICAgICAkUmVwb3J0Qm9keSAuPSAiLS0tLS0tLSIgLiAkZW9sOw0KDQogICAgICAgICAgICAkUmVw -b3J0Qm9keSAuPSAkYnVsbGV0X3N0YXJ0Ow0KICAgICAgICAgICAgZm9yKCRpID0gMDsgJGkgPCBj -b3VudCgkdGhpcy0+Q2hhbmdlTG9nKTsgJGkrKykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAg -ICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0IC4gJHRoaXMtPkNoYW5nZUxvZ1skaV1bMF0gLiAi -IHdhcyBjaGFuZ2VkIHRvIFsiIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkdGhp -cy0+Q2hhbmdlTG9nWyRpXVsxXSAuICJdIiAuICRlb2w7DQogICAgICAgICAgICB9DQogICAgICAg -ICAgICAkUmVwb3J0Qm9keSAuPSAkYnVsbGV0X2VuZCAuICRlb2wgLiAkZW9sOw0KICAgICAgICB9 -DQoNCiAgICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vdGVzIHRoZW4gbGlzdCB0aGVtDQogICAgICAg -IGlmKGNvdW50KCR0aGlzLT5Ob3RlTG9nKSA+IDApDQogICAgICAgIHsNCiAgICAgICAgICAgICRS -ZXBvcnRCb2R5IC49ICJOb3RlcyIgLiAkZW9sOw0KICAgICAgICAgICAgJFJlcG9ydEJvZHkgLj0g -Ii0tLS0tIiAuICRlb2w7DQoNCiAgICAgICAgICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXRfc3Rh -cnQ7DQogICAgICAgICAgICBmb3IoJGkgPSAwOyAkaSA8IGNvdW50KCR0aGlzLT5Ob3RlTG9nKTsg -JGkrKykNCiAgICAgICAgICAgIHsNCiAgICAgICAgICAgICAgICAkUmVwb3J0Qm9keSAuPSAkYnVs -bGV0IC4gJHRoaXMtPk5vdGVMb2dbJGldIC4gJGVvbDsNCiAgICAgICAgICAgIH0NCiAgICAgICAg -ICAgICRSZXBvcnRCb2R5IC49ICRidWxsZXRfZW5kOw0KICAgICAgICB9DQoNCiAgICAgICAgLy8g -UmUtYXR0YWNoIHRoZSBvcmlnaW5hbCBib2R5DQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5IC49 -ICRlb2wgLiAkZW9sIC4gJFJlcG9ydEJvZHk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQ2hl -Y2sgd2hpY2ggZGVmYXVsdCBzZXR0aW5ncyBoYXZlIGJlZW4gY2hhbmdlZCBmb3IgdGhlIHJlcG9y -dC4NCiAgICAgKiBAcHJpdmF0ZQ0KICAgICAqIEByZXR1cm5zIHZvaWQNCiAgICAgKi8NCiAgICBm -dW5jdGlvbiBDaGVja0NoYW5nZXMoKSB7DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5Qcmlvcml0 -eSAhPSAzKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiUHJpb3JpdHkiLCAkdGhpcy0+ -TWFpbC0+UHJpb3JpdHkpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+RW5jb2RpbmcgIT0gIjhi -aXQiKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiRW5jb2RpbmciLCAkdGhpcy0+TWFp -bC0+RW5jb2RpbmcpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+Q2hhclNldCAhPSAiaXNvLTg4 -NTktMSIpDQogICAgICAgICAgICAkdGhpcy0+QWRkQ2hhbmdlKCJDaGFyU2V0IiwgJHRoaXMtPk1h -aWwtPkNoYXJTZXQpOw0KICAgICAgICBpZigkdGhpcy0+TWFpbC0+U2VuZGVyICE9ICIiKQ0KICAg -ICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiU2VuZGVyIiwgJHRoaXMtPk1haWwtPlNlbmRlcik7 -DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5Xb3JkV3JhcCAhPSAwKQ0KICAgICAgICAgICAgJHRo -aXMtPkFkZENoYW5nZSgiV29yZFdyYXAiLCAkdGhpcy0+TWFpbC0+V29yZFdyYXApOw0KICAgICAg -ICBpZigkdGhpcy0+TWFpbC0+TWFpbGVyICE9ICJtYWlsIikNCiAgICAgICAgICAgICR0aGlzLT5B -ZGRDaGFuZ2UoIk1haWxlciIsICR0aGlzLT5NYWlsLT5NYWlsZXIpOw0KICAgICAgICBpZigkdGhp -cy0+TWFpbC0+UG9ydCAhPSAyNSkNCiAgICAgICAgICAgICR0aGlzLT5BZGRDaGFuZ2UoIlBvcnQi -LCAkdGhpcy0+TWFpbC0+UG9ydCk7DQogICAgICAgIGlmKCR0aGlzLT5NYWlsLT5IZWxvICE9ICJs -b2NhbGhvc3QubG9jYWxkb21haW4iKQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiSGVs -byIsICR0aGlzLT5NYWlsLT5IZWxvKTsNCiAgICAgICAgaWYoJHRoaXMtPk1haWwtPlNNVFBBdXRo -KQ0KICAgICAgICAgICAgJHRoaXMtPkFkZENoYW5nZSgiU01UUEF1dGgiLCAidHJ1ZSIpOw0KICAg -IH0NCg0KICAgIC8qKg0KICAgICAqIEFkZHMgYSBjaGFuZ2UgZW50cnkuDQogICAgICogQHByaXZh -dGUNCiAgICAgKiBAcmV0dXJucyB2b2lkDQogICAgICovDQogICAgZnVuY3Rpb24gQWRkQ2hhbmdl -KCRzTmFtZSwgJHNOZXdWYWx1ZSkgew0KICAgICAgICAkY3VyID0gY291bnQoJHRoaXMtPkNoYW5n -ZUxvZyk7DQogICAgICAgICR0aGlzLT5DaGFuZ2VMb2dbJGN1cl1bMF0gPSAkc05hbWU7DQogICAg -ICAgICR0aGlzLT5DaGFuZ2VMb2dbJGN1cl1bMV0gPSAkc05ld1ZhbHVlOw0KICAgIH0NCg0KICAg -IC8qKg0KICAgICAqIEFkZHMgYSBzaW1wbGUgbm90ZSB0byB0aGUgbWVzc2FnZS4NCiAgICAgKiBA -cHVibGljDQogICAgICogQHJldHVybnMgdm9pZA0KICAgICAqLw0KICAgIGZ1bmN0aW9uIEFkZE5v -dGUoJHNWYWx1ZSkgew0KICAgICAgICAkdGhpcy0+Tm90ZUxvZ1tdID0gJHNWYWx1ZTsNCiAgICB9 -DQoNCiAgICAvKioNCiAgICAgKiBBZGRzIGFsbCBvZiB0aGUgYWRkcmVzc2VzDQogICAgICogQHB1 -YmxpYw0KICAgICAqIEByZXR1cm5zIHZvaWQNCiAgICAgKi8NCiAgICBmdW5jdGlvbiBTZXRBZGRy -ZXNzKCRzQWRkcmVzcywgJHNOYW1lID0gIiIsICRzVHlwZSA9ICJ0byIpIHsNCiAgICAgICAgc3dp -dGNoKCRzVHlwZSkNCiAgICAgICAgew0KICAgICAgICAgICAgY2FzZSAidG8iOg0KICAgICAgICAg -ICAgICAgICR0aGlzLT5NYWlsLT5BZGRBZGRyZXNzKCRzQWRkcmVzcywgJHNOYW1lKTsNCiAgICAg -ICAgICAgICAgICBicmVhazsNCiAgICAgICAgICAgIGNhc2UgImNjIjoNCiAgICAgICAgICAgICAg -ICAkdGhpcy0+TWFpbC0+QWRkQ0MoJHNBZGRyZXNzLCAkc05hbWUpOw0KICAgICAgICAgICAgICAg -IGJyZWFrOw0KICAgICAgICAgICAgY2FzZSAiYmNjIjoNCiAgICAgICAgICAgICAgICAkdGhpcy0+ -TWFpbC0+QWRkQkNDKCRzQWRkcmVzcywgJHNOYW1lKTsNCiAgICAgICAgICAgICAgICBicmVhazsN -CiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v -Ly8vLy8vLy8vLy8vLy8vLy8NCiAgICAvLyBVTklUIFRFU1RTDQogICAgLy8vLy8vLy8vLy8vLy8v -Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLw0KDQogICAgLyoqDQogICAgICogVHJ5 -IGEgcGxhaW4gbWVzc2FnZS4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiB0ZXN0X1dvcmRXcmFwKCkg -ew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Xb3JkV3JhcCA9IDQwOw0KICAgICAgICAkbXlfYm9k -eSA9ICJIZXJlIGlzIHRoZSBtYWluIGJvZHkgb2YgdGhpcyBtZXNzYWdlLiAgSXQgc2hvdWxkICIg -Lg0KICAgICAgICAgICAgICAgICAgICJiZSBxdWl0ZSBhIGZldyBsaW5lcy4gIEl0IHNob3VsZCBi -ZSB3cmFwcGVkIGF0IHRoZSAiIC4NCiAgICAgICAgICAgICAgICAgICAiNDAgY2hhcmFjdGVycy4g -IE1ha2Ugc3VyZSB0aGF0IGl0IGlzLiI7DQogICAgICAgICRuQm9keUxlbiA9IHN0cmxlbigkbXlf -Ym9keSk7DQogICAgICAgICRteV9ib2R5IC49ICJcblxuVGhpcyBpcyB0aGUgYWJvdmUgYm9keSBs -ZW5ndGg6ICIgLiAkbkJvZHlMZW47DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkgPSAkbXlf -Ym9keTsNCiAgICAgICAgJHRoaXMtPk1haWwtPlN1YmplY3QgLj0gIjogV29yZHdyYXAiOw0KDQog -ICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAgICAgICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+ -TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICB9DQoNCiAgICAvKioN -CiAgICAgKiBUcnkgYSBwbGFpbiBtZXNzYWdlLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlc3Rf -TG93X1ByaW9yaXR5KCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Qcmlvcml0eSA9IDU7DQog -ICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIkhlcmUgaXMgdGhlIG1haW4gYm9keS4gIFRoZXJl -IHNob3VsZCBiZSAiIC4NCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYSByZXBseSB0byBh -ZGRyZXNzIGluIHRoaXMgbWVzc2FnZS4iOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAu -PSAiOiBMb3cgUHJpb3JpdHkiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+QWRkUmVwbHlUbygibm9i -b2R5QG5vYm9keS5jb20iLCAiTm9ib2R5IChVbml0IFRlc3QpIik7DQoNCiAgICAgICAgJHRoaXMt -PkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5kKCks -ICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNpbXBs -ZSBwbGFpbiBmaWxlIGF0dGFjaG1lbnQgdGVzdC4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiB0ZXN0 -X011bHRpcGxlX1BsYWluX0ZpbGVBdHRhY2htZW50KCkgew0KDQogICAgICAgICR0aGlzLT5NYWls -LT5Cb2R5ID0gIkhlcmUgaXMgdGhlIHRleHQgYm9keSI7DQogICAgICAgICR0aGlzLT5NYWlsLT5T -dWJqZWN0IC49ICI6IFBsYWluICsgTXVsdGlwbGUgRmlsZUF0dGFjaG1lbnRzIjsNCg0KICAgICAg -ICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInJvY2tzLnBuZyIpKQ0KICAgICAgICB7 -DQogICAgICAgICAgICAkdGhpcy0+YXNzZXJ0KGZhbHNlLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZv -KTsNCiAgICAgICAgICAgIHJldHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgIGlmKCEkdGhpcy0+ -TWFpbC0+QWRkQXR0YWNobWVudCgicGhwbWFpbGVyX3Rlc3QucGhwIiwgInRlc3QudHh0IikpDQog -ICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5hc3NlcnQoZmFsc2UsICR0aGlzLT5NYWlsLT5F -cnJvckluZm8pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRo -aXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5k -KCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFNp -bXBsZSBwbGFpbiBzdHJpbmcgYXR0YWNobWVudCB0ZXN0Lg0KICAgICAqLw0KICAgIGZ1bmN0aW9u -IHRlc3RfUGxhaW5fU3RyaW5nQXR0YWNobWVudCgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+ -Qm9keSA9ICJIZXJlIGlzIHRoZSB0ZXh0IGJvZHkiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3Vi -amVjdCAuPSAiOiBQbGFpbiArIFN0cmluZ0F0dGFjaG1lbnQiOw0KDQogICAgICAgICRzQXR0YWNo -bWVudCA9ICJUaGVzZSBjaGFyYWN0ZXJzIGFyZSB0aGUgY29udGVudCBvZiB0aGUgIiAuDQogICAg -ICAgICAgICAgICAgICAgICAgICJzdHJpbmcgYXR0YWNobWVudC5cblRoaXMgbWlnaHQgYmUgdGFr -ZW4gZnJvbSBhICIuDQogICAgICAgICAgICAgICAgICAgICAgICJkYXRhYmFzZSBvciBzb21lIG90 -aGVyIHN1Y2ggdGhpbmcuICI7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkFkZFN0cmluZ0F0dGFj -aG1lbnQoJHNBdHRhY2htZW50LCAic3RyaW5nX2F0dGFjaC50eHQiKTsNCg0KICAgICAgICAkdGhp -cy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQo -KSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogUGxh -aW4gcXVvdGVkLXByaW50YWJsZSBtZXNzYWdlLg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlc3Rf -UXVvdGVkX1ByaW50YWJsZSgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9ICJIZXJl -IGlzIHRoZSBtYWluIGJvZHkiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBQ -bGFpbiArIFF1b3RlZC1wcmludGFibGUiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+RW5jb2Rpbmcg -PSAicXVvdGVkLXByaW50YWJsZSI7DQoNCiAgICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAg -ICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJv -ckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIFRyeSBhIHBsYWluIG1lc3NhZ2UuDQog -ICAgICovDQogICAgZnVuY3Rpb24gdGVzdF9IdG1sKCkgew0KDQogICAgICAgICR0aGlzLT5NYWls -LT5Jc0hUTUwodHJ1ZSk7DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEhUTUwg -b25seSI7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkgPSAiVGhpcyBpcyBhIDxiPnRlc3Qg -bWVzc2FnZTwvYj4gd3JpdHRlbiBpbiBIVE1MLiA8L2JyPiIgLg0KICAgICAgICAgICAgICAgICAg -ICAgICAgICAgICJHbyB0byA8YSBocmVmPVwiaHR0cDovL3BocG1haWxlci5zb3VyY2Vmb3JnZS5u -ZXQvXCI+IiAuDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9waHBtYWlsZXIu -c291cmNlZm9yZ2UubmV0LzwvYT4gZm9yIG5ldyB2ZXJzaW9ucyBvZiAiIC4NCiAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAicGhwbWFpbGVyLiAgPHAvPiBUaGFuayB5b3UhIjsNCg0KICAgICAg -ICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwt -PlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoqDQogICAg -ICogU2ltcGxlIEhUTUwgYW5kIGF0dGFjaG1lbnQgdGVzdA0KICAgICAqLw0KICAgIGZ1bmN0aW9u -IHRlc3RfSFRNTF9BdHRhY2htZW50KCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0g -IlRoaXMgaXMgdGhlIDxiPkhUTUw8L2I+IHBhcnQgb2YgdGhlIGVtYWlsLiI7DQogICAgICAgICR0 -aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEhUTUwgKyBBdHRhY2htZW50IjsNCiAgICAgICAgJHRo -aXMtPk1haWwtPklzSFRNTCh0cnVlKTsNCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0 -dGFjaG1lbnQoInBocG1haWxlcl90ZXN0LnBocCIsICJ0ZXN0X2F0dGFjaC50eHQiKSkNCiAgICAg -ICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2VydChmYWxzZSwgJHRoaXMtPk1haWwtPkVycm9y -SW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCg0KICAgICAgICAkdGhpcy0+ -QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQoKSwg -JHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgfQ0KDQogICAgLyoqDQogICAgICogQW4gZW1i -ZWRkZWQgYXR0YWNobWVudCB0ZXN0Lg0KICAgICAqLw0KICAgIGZ1bmN0aW9uIHRlc3RfRW1iZWRk -ZWRfSW1hZ2UoKSB7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPkJvZHkgPSAiRW1iZWRkZWQgSW1h -Z2U6IDxpbWcgYWx0PVwicGhwbWFpbGVyXCIgc3JjPVwiY2lkOm15LWF0dGFjaFwiPiIgLg0KICAg -ICAgICAgICAgICAgICAgICAgIkhlcmUgaXMgYW4gaW1hZ2UhPC9hPiI7DQogICAgICAgICR0aGlz -LT5NYWlsLT5TdWJqZWN0IC49ICI6IEVtYmVkZGVkIEltYWdlIjsNCiAgICAgICAgJHRoaXMtPk1h -aWwtPklzSFRNTCh0cnVlKTsNCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEVtYmVkZGVk -SW1hZ2UoInJvY2tzLnBuZyIsICJteS1hdHRhY2giLCAicm9ja3MucG5nIiwNCiAgICAgICAgICAg -ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYXNlNjQiLCAiaW1hZ2UvcG5nIikpDQog -ICAgICAgIHsNCiAgICAgICAgICAgICR0aGlzLT5hc3NlcnQoZmFsc2UsICR0aGlzLT5NYWlsLT5F -cnJvckluZm8pOw0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQoNCiAgICAgICAgJHRo -aXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWlsLT5TZW5k -KCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0KICAgICAqIEFu -IGVtYmVkZGVkIGF0dGFjaG1lbnQgdGVzdC4NCiAgICAgKi8NCiAgICBmdW5jdGlvbiB0ZXN0X011 -bHRpX0VtYmVkZGVkX0ltYWdlKCkgew0KDQogICAgICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIkVt -YmVkZGVkIEltYWdlOiA8aW1nIGFsdD1cInBocG1haWxlclwiIHNyYz1cImNpZDpteS1hdHRhY2hc -Ij4iIC4NCiAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIGFuIGltYWdlITwvYT4iOw0KICAg -ICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCAuPSAiOiBFbWJlZGRlZCBJbWFnZSArIEF0dGFjaG1l -bnQiOw0KICAgICAgICAkdGhpcy0+TWFpbC0+SXNIVE1MKHRydWUpOw0KDQogICAgICAgIGlmKCEk -dGhpcy0+TWFpbC0+QWRkRW1iZWRkZWRJbWFnZSgicm9ja3MucG5nIiwgIm15LWF0dGFjaCIsICJy -b2Nrcy5wbmciLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJh -c2U2NCIsICJpbWFnZS9wbmciKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2Vy -dChmYWxzZSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQog -ICAgICAgIH0NCg0KICAgICAgICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBocG1h -aWxlcl90ZXN0LnBocCIsICJ0ZXN0LnR4dCIpKQ0KICAgICAgICB7DQogICAgICAgICAgICAkdGhp -cy0+YXNzZXJ0KGZhbHNlLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICAgICAgICAgIHJl -dHVybjsNCiAgICAgICAgfQ0KDQogICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAgICAgICAg -JHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZv -KTsNCiAgICB9DQoNCiAgICAvKioNCiAgICAgKiBTaW1wbGUgbXVsdGlwYXJ0L2FsdGVybmF0aXZl -IHRlc3QuDQogICAgICovDQogICAgZnVuY3Rpb24gdGVzdF9BbHRCb2R5KCkgew0KDQogICAgICAg -ICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgaXMgdGhlIDxiPkhUTUw8L2I+IHBhcnQgb2YgdGhl -IGVtYWlsLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5BbHRCb2R5ID0gIkhlcmUgaXMgdGhlIHRl -eHQgYm9keSBvZiB0aGlzIG1lc3NhZ2UuICAiIC4NCiAgICAgICAgICAgICAgICAgICAiSXQgc2hv -dWxkIGJlIHF1aXRlIGEgZmV3IGxpbmVzLiAgSXQgc2hvdWxkIGJlIHdyYXBwZWQgYXQgdGhlICIg -Lg0KICAgICAgICAgICAgICAgICAgICI0MCBjaGFyYWN0ZXJzLiAgTWFrZSBzdXJlIHRoYXQgaXQg -aXMuIjsNCiAgICAgICAgJHRoaXMtPk1haWwtPldvcmRXcmFwID0gNDA7DQogICAgICAgICR0aGlz -LT5BZGROb3RlKCJUaGlzIGlzIGEgbXVsaXBhcnQgYWx0ZXJuYXRpdmUgZW1haWwiKTsNCiAgICAg -ICAgJHRoaXMtPk1haWwtPlN1YmplY3QgLj0gIjogQWx0Qm9keSArIFdvcmQgV3JhcCI7DQoNCiAg -ICAgICAgJHRoaXMtPkJ1aWxkQm9keSgpOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5N -YWlsLT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KICAgIH0NCg0KICAgIC8qKg0K -ICAgICAqIFNpbXBsZSBIVE1MIGFuZCBhdHRhY2htZW50IHRlc3QNCiAgICAgKi8NCiAgICBmdW5j -dGlvbiB0ZXN0X0FsdEJvZHlfQXR0YWNobWVudCgpIHsNCg0KICAgICAgICAkdGhpcy0+TWFpbC0+ -Qm9keSA9ICJUaGlzIGlzIHRoZSA8Yj5IVE1MPC9iPiBwYXJ0IG9mIHRoZSBlbWFpbC4iOw0KICAg -ICAgICAkdGhpcy0+TWFpbC0+QWx0Qm9keSA9ICJUaGlzIGlzIHRoZSB0ZXh0IHBhcnQgb2YgdGhl -IGVtYWlsLiI7DQogICAgICAgICR0aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IEFsdEJvZHkgKyBB -dHRhY2htZW50IjsNCiAgICAgICAgJHRoaXMtPk1haWwtPklzSFRNTCh0cnVlKTsNCg0KICAgICAg -ICBpZighJHRoaXMtPk1haWwtPkFkZEF0dGFjaG1lbnQoInBocG1haWxlcl90ZXN0LnBocCIsICJ0 -ZXN0X2F0dGFjaC50eHQiKSkNCiAgICAgICAgew0KICAgICAgICAgICAgJHRoaXMtPmFzc2VydChm -YWxzZSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQogICAgICAgICAgICByZXR1cm47DQogICAg -ICAgIH0NCg0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0aGlzLT5hc3Nl -cnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7DQoNCiAgICAg -ICAgJGZwID0gZm9wZW4oIm1lc3NhZ2UudHh0IiwgInciKTsNCiAgICAgICAgZndyaXRlKCRmcCwg -JHRoaXMtPk1haWwtPkNyZWF0ZUhlYWRlcigpIC4gJHRoaXMtPk1haWwtPkNyZWF0ZUJvZHkoKSk7 -DQogICAgICAgIGZjbG9zZSgkZnApOw0KICAgIH0NCg0KICAgIGZ1bmN0aW9uIHRlc3RfTXVsdGlw -bGVTZW5kKCkgew0KICAgICAgICAkdGhpcy0+TWFpbC0+Qm9keSA9ICJTZW5kaW5nIHR3byBtZXNz -YWdlcyB3aXRob3V0IGtlZXBhbGl2ZSI7DQogICAgICAgICR0aGlzLT5CdWlsZEJvZHkoKTsNCiAg -ICAgICAgJHN1YmplY3QgPSAkdGhpcy0+TWFpbC0+U3ViamVjdDsNCg0KICAgICAgICAkdGhpcy0+ -TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4gIjogU01UUCAxIjsNCiAgICAgICAgJHRoaXMtPmFz -c2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCg0KICAg -ICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4gIjogU01UUCAyIjsNCiAgICAg -ICAgJHRoaXMtPmFzc2VydCgkdGhpcy0+TWFpbC0+U2VuZCgpLCAkdGhpcy0+TWFpbC0+RXJyb3JJ -bmZvKTsNCiAgICB9DQoNCiAgICBmdW5jdGlvbiB0ZXN0X1NtdHBLZWVwQWxpdmUoKSB7DQogICAg -ICAgICR0aGlzLT5NYWlsLT5Cb2R5ID0gIlRoaXMgd2FzIGRvbmUgdXNpbmcgdGhlIFNNVFAga2Vl -cC1hbGl2ZS4iOw0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICRzdWJqZWN0 -ID0gJHRoaXMtPk1haWwtPlN1YmplY3Q7DQoNCiAgICAgICAgJHRoaXMtPk1haWwtPlNNVFBLZWVw -QWxpdmUgPSB0cnVlOw0KICAgICAgICAkdGhpcy0+TWFpbC0+U3ViamVjdCA9ICRzdWJqZWN0IC4g -IjogU01UUCBrZWVwLWFsaXZlIDEiOw0KICAgICAgICAkdGhpcy0+YXNzZXJ0KCR0aGlzLT5NYWls -LT5TZW5kKCksICR0aGlzLT5NYWlsLT5FcnJvckluZm8pOw0KDQogICAgICAgICR0aGlzLT5NYWls -LT5TdWJqZWN0ID0gJHN1YmplY3QgLiAiOiBTTVRQIGtlZXAtYWxpdmUgMiI7DQogICAgICAgICR0 -aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPlNlbmQoKSwgJHRoaXMtPk1haWwtPkVycm9ySW5mbyk7 -DQogICAgICAgICR0aGlzLT5NYWlsLT5TbXRwQ2xvc2UoKTsNCiAgICB9DQoNCiAgICBmdW5jdGlv -biB0ZXN0X0Vycm9yKCkgew0KICAgICAgICAkdGhpcy0+QnVpbGRCb2R5KCk7DQogICAgICAgICR0 -aGlzLT5NYWlsLT5TdWJqZWN0IC49ICI6IFRoaXMgc2hvdWxkIG5vdCBiZSBzZW50IjsNCiAgICAg -ICAgJHRoaXMtPk1haWwtPkNsZWFyQWxsUmVjaXBpZW50cygpOyAvLyBubyBhZGRyZXNzZXMgc2hv -dWxkIGNhdXNlIGFuIGVycm9yDQogICAgICAgICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPklz -RXJyb3IoKSA9PSBmYWxzZSwgIkVycm9yIGZvdW5kIik7DQogICAgICAgICR0aGlzLT5hc3NlcnQo -JHRoaXMtPk1haWwtPlNlbmQoKSA9PSBmYWxzZSwgIlNlbmQgc3VjY2VlZGVkIik7DQogICAgICAg -ICR0aGlzLT5hc3NlcnQoJHRoaXMtPk1haWwtPklzRXJyb3IoKSwgIk5vIGVycm9yIGZvdW5kIik7 -DQogICAgICAgICR0aGlzLT5hc3NlcnRFcXVhbHMoJ1lvdSBtdXN0IHByb3ZpZGUgYXQgbGVhc3Qg -b25lICcgLg0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZWNpcGllbnQgZW1haWwgYWRk -cmVzcy4nLCAkdGhpcy0+TWFpbC0+RXJyb3JJbmZvKTsNCiAgICB9DQp9DQoNCi8qKg0KICogQ3Jl -YXRlIGFuZCBydW4gdGVzdCBpbnN0YW5jZS4NCiAqLw0KDQppZihpc3NldCgkSFRUUF9HRVRfVkFS -UykpDQogICAgJGdsb2JhbF92YXJzID0gJEhUVFBfR0VUX1ZBUlM7DQplbHNlDQogICAgJGdsb2Jh -bF92YXJzID0gJF9SRVFVRVNUOw0KDQppZihpc3NldCgkZ2xvYmFsX3ZhcnNbInN1Ym1pdHRlZCJd -KSkNCnsNCiAgICBlY2hvICJUZXN0IHJlc3VsdHM6PGJyPiI7DQogICAgJHN1aXRlID0gbmV3IFRl -c3RTdWl0ZSggInBocG1haWxlclRlc3QiICk7DQoNCiAgICAkdGVzdFJ1bm5lciA9IG5ldyBUZXN0 -UnVubmVyOw0KICAgICR0ZXN0UnVubmVyLT5ydW4oJHN1aXRlKTsNCiAgICBlY2hvICI8aHIgbm9z -aGFkZS8+IjsNCn0NCg0KZnVuY3Rpb24gZ2V0KCRzTmFtZSkgew0KICAgIGdsb2JhbCAkZ2xvYmFs -X3ZhcnM7DQogICAgaWYoaXNzZXQoJGdsb2JhbF92YXJzWyRzTmFtZV0pKQ0KICAgICAgICByZXR1 -cm4gJGdsb2JhbF92YXJzWyRzTmFtZV07DQogICAgZWxzZQ0KICAgICAgICByZXR1cm4gIiI7DQp9 -DQoNCj8+DQoNCjxodG1sPg0KPGJvZHk+DQo8aDM+cGhwbWFpbGVyIFVuaXQgVGVzdDwvaDM+DQpC -eSBlbnRlcmluZyBhIFNNVFAgaG9zdG5hbWUgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IHBlcmZvcm0g -dGVzdHMgd2l0aCBTTVRQLg0KDQo8Zm9ybSBuYW1lPSJwaHBtYWlsZXJfdW5pdCIgYWN0aW9uPSJw -aHBtYWlsZXJfdGVzdC5waHAiIG1ldGhvZD0iZ2V0Ij4NCjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5h -bWU9InN1Ym1pdHRlZCIgdmFsdWU9IjEiLz4NClRvIEFkZHJlc3M6IDxpbnB1dCB0eXBlPSJ0ZXh0 -IiBzaXplPSI1MCIgbmFtZT0ibWFpbF90byIgdmFsdWU9Ijw/cGhwIGVjaG8gZ2V0KCJtYWlsX3Rv -Iik7ID8+Ii8+DQo8YnIvPg0KQ2MgQWRkcmVzczogPGlucHV0IHR5cGU9InRleHQiIHNpemU9IjUw -IiBuYW1lPSJtYWlsX2NjIiB2YWx1ZT0iPD9waHAgZWNobyBnZXQoIm1haWxfY2MiKTsgPz4iLz4N -Cjxici8+DQpTTVRQIEhvc3RuYW1lOiA8aW5wdXQgdHlwZT0idGV4dCIgc2l6ZT0iNTAiIG5hbWU9 -Im1haWxfaG9zdCIgdmFsdWU9Ijw/cGhwIGVjaG8gZ2V0KCJtYWlsX2hvc3QiKTsgPz4iLz4NCjxw -Lz4NCjxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSJSdW4gVGVzdCIvPg0KDQo8L2Zvcm0+DQo8 -L2JvZHk+DQo8L2h0bWw+DQo= - - ---b1_a0169dc7929d1c609a827b4d1a0c3f74-- diff --git a/Class/test/phpmailer_test.php b/Class/test/phpmailer_test.php deleted file mode 100644 index 4264a4f..0000000 --- a/Class/test/phpmailer_test.php +++ /dev/null @@ -1,558 +0,0 @@ -TestCase( $name ); - } - - /** - * Run before each test is started. - */ - function setUp() { - global $global_vars; - global $INCLUDE_DIR; - - $this->Mail = new PHPMailer(); - - $this->Mail->Priority = 3; - $this->Mail->Encoding = "8bit"; - $this->Mail->CharSet = "iso-8859-1"; - $this->Mail->From = "unit_test@phpmailer.sf.net"; - $this->Mail->FromName = "Unit Tester"; - $this->Mail->Sender = ""; - $this->Mail->Subject = "Unit Test"; - $this->Mail->Body = ""; - $this->Mail->AltBody = ""; - $this->Mail->WordWrap = 0; - $this->Mail->Host = $global_vars["mail_host"]; - $this->Mail->Port = 25; - $this->Mail->Helo = "localhost.localdomain"; - $this->Mail->SMTPAuth = false; - $this->Mail->Username = ""; - $this->Mail->Password = ""; - $this->Mail->PluginDir = $INCLUDE_DIR; - $this->Mail->AddReplyTo("no_reply@phpmailer.sf.net", "Reply Guy"); - $this->Mail->Sender = "nobody@example.com"; - - if(strlen($this->Mail->Host) > 0) - $this->Mail->Mailer = "smtp"; - else - { - $this->Mail->Mailer = "mail"; - $this->Sender = "unit_test@phpmailer.sf.net"; - } - - global $global_vars; - $this->SetAddress($global_vars["mail_to"], "Test User"); - if(strlen($global_vars["mail_cc"]) > 0) - $this->SetAddress($global_vars["mail_cc"], "Carbon User", "cc"); - } - - /** - * Run after each test is completed. - */ - function tearDown() { - // Clean global variables - $this->Mail = NULL; - $this->ChangeLog = array(); - $this->NoteLog = array(); - } - - - /** - * Build the body of the message in the appropriate format. - * @private - * @returns void - */ - function BuildBody() { - $this->CheckChanges(); - - // Determine line endings for message - if($this->Mail->ContentType == "text/html" || strlen($this->Mail->AltBody) > 0) - { - $eol = "
"; - $bullet = "
  • "; - $bullet_start = "
      "; - $bullet_end = "
    "; - } - else - { - $eol = "\n"; - $bullet = " - "; - $bullet_start = ""; - $bullet_end = ""; - } - - $ReportBody = ""; - - $ReportBody .= "---------------------" . $eol; - $ReportBody .= "Unit Test Information" . $eol; - $ReportBody .= "---------------------" . $eol; - $ReportBody .= "phpmailer version: " . $this->Mail->Version . $eol; - $ReportBody .= "Content Type: " . $this->Mail->ContentType . $eol; - - if(strlen($this->Mail->Host) > 0) - $ReportBody .= "Host: " . $this->Mail->Host . $eol; - - // If attachments then create an attachment list - if(count($this->Mail->attachment) > 0) - { - $ReportBody .= "Attachments:" . $eol; - $ReportBody .= $bullet_start; - for($i = 0; $i < count($this->Mail->attachment); $i++) - { - $ReportBody .= $bullet . "Name: " . $this->Mail->attachment[$i][1] . ", "; - $ReportBody .= "Encoding: " . $this->Mail->attachment[$i][3] . ", "; - $ReportBody .= "Type: " . $this->Mail->attachment[$i][4] . $eol; - } - $ReportBody .= $bullet_end . $eol; - } - - // If there are changes then list them - if(count($this->ChangeLog) > 0) - { - $ReportBody .= "Changes" . $eol; - $ReportBody .= "-------" . $eol; - - $ReportBody .= $bullet_start; - for($i = 0; $i < count($this->ChangeLog); $i++) - { - $ReportBody .= $bullet . $this->ChangeLog[$i][0] . " was changed to [" . - $this->ChangeLog[$i][1] . "]" . $eol; - } - $ReportBody .= $bullet_end . $eol . $eol; - } - - // If there are notes then list them - if(count($this->NoteLog) > 0) - { - $ReportBody .= "Notes" . $eol; - $ReportBody .= "-----" . $eol; - - $ReportBody .= $bullet_start; - for($i = 0; $i < count($this->NoteLog); $i++) - { - $ReportBody .= $bullet . $this->NoteLog[$i] . $eol; - } - $ReportBody .= $bullet_end; - } - - // Re-attach the original body - $this->Mail->Body .= $eol . $eol . $ReportBody; - } - - /** - * Check which default settings have been changed for the report. - * @private - * @returns void - */ - function CheckChanges() { - if($this->Mail->Priority != 3) - $this->AddChange("Priority", $this->Mail->Priority); - if($this->Mail->Encoding != "8bit") - $this->AddChange("Encoding", $this->Mail->Encoding); - if($this->Mail->CharSet != "iso-8859-1") - $this->AddChange("CharSet", $this->Mail->CharSet); - if($this->Mail->Sender != "") - $this->AddChange("Sender", $this->Mail->Sender); - if($this->Mail->WordWrap != 0) - $this->AddChange("WordWrap", $this->Mail->WordWrap); - if($this->Mail->Mailer != "mail") - $this->AddChange("Mailer", $this->Mail->Mailer); - if($this->Mail->Port != 25) - $this->AddChange("Port", $this->Mail->Port); - if($this->Mail->Helo != "localhost.localdomain") - $this->AddChange("Helo", $this->Mail->Helo); - if($this->Mail->SMTPAuth) - $this->AddChange("SMTPAuth", "true"); - } - - /** - * Adds a change entry. - * @private - * @returns void - */ - function AddChange($sName, $sNewValue) { - $cur = count($this->ChangeLog); - $this->ChangeLog[$cur][0] = $sName; - $this->ChangeLog[$cur][1] = $sNewValue; - } - - /** - * Adds a simple note to the message. - * @public - * @returns void - */ - function AddNote($sValue) { - $this->NoteLog[] = $sValue; - } - - /** - * Adds all of the addresses - * @public - * @returns void - */ - function SetAddress($sAddress, $sName = "", $sType = "to") { - switch($sType) - { - case "to": - $this->Mail->AddAddress($sAddress, $sName); - break; - case "cc": - $this->Mail->AddCC($sAddress, $sName); - break; - case "bcc": - $this->Mail->AddBCC($sAddress, $sName); - break; - } - } - - ///////////////////////////////////////////////// - // UNIT TESTS - ///////////////////////////////////////////////// - - /** - * Try a plain message. - */ - function test_WordWrap() { - - $this->Mail->WordWrap = 40; - $my_body = "Here is the main body of this message. It should " . - "be quite a few lines. It should be wrapped at the " . - "40 characters. Make sure that it is."; - $nBodyLen = strlen($my_body); - $my_body .= "\n\nThis is the above body length: " . $nBodyLen; - - $this->Mail->Body = $my_body; - $this->Mail->Subject .= ": Wordwrap"; - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Try a plain message. - */ - function test_Low_Priority() { - - $this->Mail->Priority = 5; - $this->Mail->Body = "Here is the main body. There should be " . - "a reply to address in this message."; - $this->Mail->Subject .= ": Low Priority"; - $this->Mail->AddReplyTo("nobody@nobody.com", "Nobody (Unit Test)"); - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple plain file attachment test. - */ - function test_Multiple_Plain_FileAttachment() { - - $this->Mail->Body = "Here is the text body"; - $this->Mail->Subject .= ": Plain + Multiple FileAttachments"; - - if(!$this->Mail->AddAttachment("rocks.png")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple plain string attachment test. - */ - function test_Plain_StringAttachment() { - - $this->Mail->Body = "Here is the text body"; - $this->Mail->Subject .= ": Plain + StringAttachment"; - - $sAttachment = "These characters are the content of the " . - "string attachment.\nThis might be taken from a ". - "database or some other such thing. "; - - $this->Mail->AddStringAttachment($sAttachment, "string_attach.txt"); - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Plain quoted-printable message. - */ - function test_Quoted_Printable() { - - $this->Mail->Body = "Here is the main body"; - $this->Mail->Subject .= ": Plain + Quoted-printable"; - $this->Mail->Encoding = "quoted-printable"; - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Try a plain message. - */ - function test_Html() { - - $this->Mail->IsHTML(true); - $this->Mail->Subject .= ": HTML only"; - - $this->Mail->Body = "This is a test message written in HTML.
    " . - "Go to " . - "http://phpmailer.sourceforge.net/ for new versions of " . - "phpmailer.

    Thank you!"; - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple HTML and attachment test - */ - function test_HTML_Attachment() { - - $this->Mail->Body = "This is the HTML part of the email."; - $this->Mail->Subject .= ": HTML + Attachment"; - $this->Mail->IsHTML(true); - - if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * An embedded attachment test. - */ - function test_Embedded_Image() { - - $this->Mail->Body = "Embedded Image: \"phpmailer\"" . - "Here is an image!"; - $this->Mail->Subject .= ": Embedded Image"; - $this->Mail->IsHTML(true); - - if(!$this->Mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png", - "base64", "image/png")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * An embedded attachment test. - */ - function test_Multi_Embedded_Image() { - - $this->Mail->Body = "Embedded Image: \"phpmailer\"" . - "Here is an image!"; - $this->Mail->Subject .= ": Embedded Image + Attachment"; - $this->Mail->IsHTML(true); - - if(!$this->Mail->AddEmbeddedImage("rocks.png", "my-attach", "rocks.png", - "base64", "image/png")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - if(!$this->Mail->AddAttachment("phpmailer_test.php", "test.txt")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple multipart/alternative test. - */ - function test_AltBody() { - - $this->Mail->Body = "This is the HTML part of the email."; - $this->Mail->AltBody = "Here is the text body of this message. " . - "It should be quite a few lines. It should be wrapped at the " . - "40 characters. Make sure that it is."; - $this->Mail->WordWrap = 40; - $this->AddNote("This is a mulipart alternative email"); - $this->Mail->Subject .= ": AltBody + Word Wrap"; - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - /** - * Simple HTML and attachment test - */ - function test_AltBody_Attachment() { - - $this->Mail->Body = "This is the HTML part of the email."; - $this->Mail->AltBody = "This is the text part of the email."; - $this->Mail->Subject .= ": AltBody + Attachment"; - $this->Mail->IsHTML(true); - - if(!$this->Mail->AddAttachment("phpmailer_test.php", "test_attach.txt")) - { - $this->assert(false, $this->Mail->ErrorInfo); - return; - } - - $this->BuildBody(); - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - - $fp = fopen("message.txt", "w"); - fwrite($fp, $this->Mail->CreateHeader() . $this->Mail->CreateBody()); - fclose($fp); - } - - function test_MultipleSend() { - $this->Mail->Body = "Sending two messages without keepalive"; - $this->BuildBody(); - $subject = $this->Mail->Subject; - - $this->Mail->Subject = $subject . ": SMTP 1"; - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - - $this->Mail->Subject = $subject . ": SMTP 2"; - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - } - - function test_SmtpKeepAlive() { - $this->Mail->Body = "This was done using the SMTP keep-alive."; - $this->BuildBody(); - $subject = $this->Mail->Subject; - - $this->Mail->SMTPKeepAlive = true; - $this->Mail->Subject = $subject . ": SMTP keep-alive 1"; - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - - $this->Mail->Subject = $subject . ": SMTP keep-alive 2"; - $this->assert($this->Mail->Send(), $this->Mail->ErrorInfo); - $this->Mail->SmtpClose(); - } - - function test_Error() { - $this->BuildBody(); - $this->Mail->Subject .= ": This should not be sent"; - $this->Mail->ClearAllRecipients(); // no addresses should cause an error - $this->assert($this->Mail->IsError() == false, "Error found"); - $this->assert($this->Mail->Send() == false, "Send succeeded"); - $this->assert($this->Mail->IsError(), "No error found"); - $this->assertEquals('You must provide at least one ' . - 'recipient email address.', $this->Mail->ErrorInfo); - } -} - -/** - * Create and run test instance. - */ - -if(isset($HTTP_GET_VARS)) - $global_vars = $HTTP_GET_VARS; -else - $global_vars = $_REQUEST; - -if(isset($global_vars["submitted"])) -{ - echo "Test results:
    "; - $suite = new TestSuite( "phpmailerTest" ); - - $testRunner = new TestRunner; - $testRunner->run($suite); - echo "


    "; -} - -function get($sName) { - global $global_vars; - if(isset($global_vars[$sName])) - return $global_vars[$sName]; - else - return ""; -} - -?> - - - -

    phpmailer Unit Test

    -By entering a SMTP hostname it will automatically perform tests with SMTP. - -
    - -To Address: "/> -
    -Cc Address: "/> -
    -SMTP Hostname: "/> -

    - - -

    - - diff --git a/Class/test/phpunit.php b/Class/test/phpunit.php deleted file mode 100644 index 45b1bf0..0000000 --- a/Class/test/phpunit.php +++ /dev/null @@ -1,376 +0,0 @@ - -// OntoSys, Inc -// -// $Id: phpunit.php,v 1.1 2002/03/30 19:32:17 bmatzelle Exp $ - -// Copyright (c) 2000 Fred Yankowski - -// Permission is hereby granted, free of charge, to any person -// obtaining a copy of this software and associated documentation -// files (the "Software"), to deal in the Software without -// restriction, including without limitation the rights to use, copy, -// modify, merge, publish, distribute, sublicense, and/or sell copies -// of the Software, and to permit persons to whom the Software is -// furnished to do so, subject to the following conditions: -// -// The above copyright notice and this permission notice shall be -// included in all copies or substantial portions of the Software. -// -// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS -// BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN -// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN -// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -// SOFTWARE. -// -/*error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE | - E_CORE_ERROR | E_CORE_WARNING);*/ - -/* -interface Test { - function run(&$aTestResult); - function countTestCases(); -} -*/ - -function trace($msg) { - return; - print($msg); - flush(); -} - - -/*class Exception { - /* Emulate a Java exception, sort of... */ - /*var $message; - function Exception($message) { - $this->message = $message; - } - function getMessage() { - return $this->message; - } -}*/ - -class Assert { - function assert($boolean, $message=0) { - if (! $boolean) - $this->fail($message); - } - - function assertEquals($expected, $actual, $message=0) { - if ($expected != $actual) { - $this->failNotEquals($expected, $actual, "expected", $message); - } - } - - function assertRegexp($regexp, $actual, $message=false) { - if (! preg_match($regexp, $actual)) { - $this->failNotEquals($regexp, $actual, "pattern", $message); - } - } - - function failNotEquals($expected, $actual, $expected_label, $message=0) { - // Private function for reporting failure to match. - $str = $message ? ($message . ' ') : ''; - $str .= "($expected_label/actual)
    "; - $htmlExpected = htmlspecialchars($expected); - $htmlActual = htmlspecialchars($actual); - $str .= sprintf("
    %s\n--------\n%s
    ", - $htmlExpected, $htmlActual); - $this->fail($str); - } -} - -class TestCase extends Assert /* implements Test */ { - /* Defines context for running tests. Specific context -- such as - instance variables, global variables, global state -- is defined - by creating a subclass that specializes the setUp() and - tearDown() methods. A specific test is defined by a subclass - that specializes the runTest() method. */ - var $fName; - var $fResult; - var $fExceptions = array(); - - function TestCase($name) { - $this->fName = $name; - } - - function run($testResult=0) { - /* Run this single test, by calling the run() method of the - TestResult object which will in turn call the runBare() method - of this object. That complication allows the TestResult object - to do various kinds of progress reporting as it invokes each - test. Create/obtain a TestResult object if none was passed in. - Note that if a TestResult object was passed in, it must be by - reference. */ - if (! $testResult) - $testResult = $this->_createResult(); - $this->fResult = $testResult; - $testResult->run(&$this); - $this->fResult = 0; - return $testResult; - } - - function countTestCases() { - return 1; - } - - function runTest() { - $name = $this->name(); - // Since isset($this->$name) is false, no way to run defensive checks - $this->$name(); - } - - function setUp() /* expect override */ { - //print("TestCase::setUp()
    \n"); - } - - function tearDown() /* possible override */ { - //print("TestCase::tearDown()
    \n"); - } - - //////////////////////////////////////////////////////////////// - - - function _createResult() /* protected */ { - /* override this to use specialized subclass of TestResult */ - return new TestResult; - } - - function fail($message=0) { - //printf("TestCase::fail(%s)
    \n", ($message) ? $message : ''); - /* JUnit throws AssertionFailedError here. We just record the - failure and carry on */ - $this->fExceptions[] = new Exception(&$message); - } - - function error($message) { - /* report error that requires correction in the test script - itself, or (heaven forbid) in this testing infrastructure */ - printf('ERROR: ' . $message . '
    '); - $this->fResult->stop(); - } - - function failed() { - return count($this->fExceptions); - } - - function getExceptions() { - return $this->fExceptions; - } - - function name() { - return $this->fName; - } - - function runBare() { - $this->setup(); - $this->runTest(); - $this->tearDown(); - } -} - - -class TestSuite /* implements Test */ { - /* Compose a set of Tests (instances of TestCase or TestSuite), and - run them all. */ - var $fTests = array(); - - function TestSuite($classname=false) { - if ($classname) { - // Find all methods of the given class whose name starts with - // "test" and add them to the test suite. We are just _barely_ - // able to do this with PHP's limited introspection... Note - // that PHP seems to store method names in lower case, and we - // have to avoid the constructor function for the TestCase class - // superclass. This will fail when $classname starts with - // "Test" since that will have a constructor method that will - // get matched below and then treated (incorrectly) as a test - // method. So don't name any TestCase subclasses as "Test..."! - if (floor(phpversion()) >= 4) { - // PHP4 introspection, submitted by Dylan Kuhn - $names = get_class_methods($classname); - while (list($key, $method) = each($names)) { - if (preg_match('/^test/', $method) && $method != "testcase") { - $this->addTest(new $classname($method)); - } - } - } - else { - $dummy = new $classname("dummy"); - $names = (array) $dummy; - while (list($key, $value) = each($names)) { - $type = gettype($value); - if ($type == "user function" && preg_match('/^test/', $key) - && $key != "testcase") { - $this->addTest(new $classname($key)); - } - } - } - } - } - - function addTest($test) { - /* Add TestCase or TestSuite to this TestSuite */ - $this->fTests[] = $test; - } - - function run(&$testResult) { - /* Run all TestCases and TestSuites comprising this TestSuite, - accumulating results in the given TestResult object. */ - reset($this->fTests); - while (list($na, $test) = each($this->fTests)) { - if ($testResult->shouldStop()) - break; - $test->run(&$testResult); - } - } - - function countTestCases() { - /* Number of TestCases comprising this TestSuite (including those - in any constituent TestSuites) */ - $count = 0; - reset($fTests); - while (list($na, $test_case) = each($this->fTests)) { - $count += $test_case->countTestCases(); - } - return $count; - } -} - - -class TestFailure { - /* Record failure of a single TestCase, associating it with the - exception(s) that occurred */ - var $fFailedTestName; - var $fExceptions; - - function TestFailure(&$test, &$exceptions) { - $this->fFailedTestName = $test->name(); - $this->fExceptions = $exceptions; - } - - function getExceptions() { - return $this->fExceptions; - } - function getTestName() { - return $this->fFailedTestName; - } -} - - -class TestResult { - /* Collect the results of running a set of TestCases. */ - var $fFailures = array(); - var $fRunTests = 0; - var $fStop = false; - - function TestResult() { } - - function _endTest($test) /* protected */ { - /* specialize this for end-of-test action, such as progress - reports */ - } - - function getFailures() { - return $this->fFailures; - } - - function run($test) { - /* Run a single TestCase in the context of this TestResult */ - $this->_startTest($test); - $this->fRunTests++; - - $test->runBare(); - - /* this is where JUnit would catch AssertionFailedError */ - $exceptions = $test->getExceptions(); - if ($exceptions) - $this->fFailures[] = new TestFailure(&$test, &$exceptions); - $this->_endTest($test); - } - - function countTests() { - return $this->fRunTests; - } - - function shouldStop() { - return $this->fStop; - } - - function _startTest($test) /* protected */ { - /* specialize this for start-of-test actions */ - } - - function stop() { - /* set indication that the test sequence should halt */ - $fStop = true; - } - - function countFailures() { - return count($this->fFailures); - } -} - - -class TextTestResult extends TestResult { - /* Specialize TestResult to produce text/html report */ - function TextTestResult() { - $this->TestResult(); // call superclass constructor - } - - function report() { - /* report result of test run */ - $nRun = $this->countTests(); - $nFailures = $this->countFailures(); - printf("

    %s test%s run
    ", $nRun, ($nRun == 1) ? '' : 's'); - printf("%s failure%s.
    \n", $nFailures, ($nFailures == 1) ? '' : 's'); - if ($nFailures == 0) - return; - - print("

      \n"); - $failures = $this->getFailures(); - while (list($i, $failure) = each($failures)) { - $failedTestName = $failure->getTestName(); - printf("
    1. %s\n", $failedTestName); - - $exceptions = $failure->getExceptions(); - print("
        "); - while (list($na, $exception) = each($exceptions)) - printf("
      • %s\n", $exception->getMessage()); - print("
      "); - } - print("
    \n"); - } - - function _startTest($test) { - printf("%s ", $test->name()); - flush(); - } - - function _endTest($test) { - $outcome = $test->failed() - ? "FAIL" - : "ok"; - printf("$outcome
    \n"); - flush(); - } -} - - -class TestRunner { - /* Run a suite of tests and report results. */ - function run($suite) { - $result = new TextTestResult; - $suite->run($result); - $result->report(); - } -} - -?> diff --git a/Class/test/rocks.png b/Class/test/rocks.png deleted file mode 100644 index f1ad755..0000000 --- a/Class/test/rocks.png +++ /dev/null @@ -1 +0,0 @@ -‰PNG diff --git a/pages/lancer_flotte.php b/DELlancer_flotte.php similarity index 60% rename from pages/lancer_flotte.php rename to DELlancer_flotte.php index fb00a73..1935006 100644 --- a/pages/lancer_flotte.php +++ b/DELlancer_flotte.php @@ -1,21 +1,11 @@ Création * */ -$template->set_filenames(array('flotte' => 'flotte2.tpl')); +$template->set_filenames(array('contenu' => 'flotte2.tpl')); $_SESSION['FL_time'] = time(); $ACTIONSUPP =''; @@ -27,8 +17,9 @@ for ($i=1 ; $i<=12 ; $i++) { $_SESSION['FL_vaisseau'.$i] = $_POST['vaisseau'.$i]; $nombreVaisseau += $_POST['vaisseau'.$i]; } - if ($i == 5 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= ''; - if ($i == 3 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= ''; + if ($i == 5 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= ''; + if ($i == 4 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= ''; + if ($i == 3 && $_POST['vaisseau'.$i] >= 1) $ACTIONSUPP .= ''; } // On vérifie que l'utilisateur ait bien envoyé au moins un vaisseau @@ -69,17 +60,5 @@ $template->assign_vars(array('ACTIONSUPP' => $ACTIONSUPP, 'GALAXIE' => $galaxy, * */ -require('../connectBDD.php'); -$result = mysql_query("SELECT * FROM version ORDER BY temps DESC"); -$data = mysql_fetch_array($result); -$version = $data['version']; -mysql_close(); - -$template->set_filenames(array('base' => 'base.tpl')); -$template->assign_vars(array('PUB' => $PUB, 'VERSION' => $version, 'RES_IMAGE' => $RES_IMAGE, 'NOM_METAL' => strtolower($NOM_METAL), 'NOM_CRISTAL' => strtolower($NOM_CRISTAL), 'NOM_HYDROGENE' => strtolower($NOM_HYDROGENE), 'NOM_ENERGIE' => strtolower($NOM_ENERGIE), 'RES_METAL' => $RES_METAL, 'RES_CRISTAL' => $RES_CRISTAL, 'RES_HYDROGENE' => $RES_HYDROGENE, 'RES_ENERGIE' => $RES_ENERGIE, 'DATEHEURET' => date('/dm/ H:i'), 'COUNTHUMAINS' => '7500', 'COUNTCOVENANTS' => '4500', 'PSEUDO' => $pseudo)); -for ($i=0 ; $iassign_block_vars('planetes',array('RES_VALUE' => $Aplan_value[$i], 'RES_MORE' => $Aplan_more[$i], 'RES_IMG' => $Aplan_img[$i], 'RES_NOM' => $Aplan_nom[$i], 'RES_REF' => $Aplan_ref[$i])); -} -$template->assign_var_from_handle('CONTENU', 'flotte'); -$template->pparse('base'); +include('includes/footer.php'); ?> \ No newline at end of file diff --git a/Halo-Battle.PHPEditProject b/Halo-Battle.PHPEditProject deleted file mode 100644 index 3f0fa49..0000000 --- a/Halo-Battle.PHPEditProject +++ /dev/null @@ -1,3 +0,0 @@ - - - diff --git a/ab/sound.php b/ab/sound.php deleted file mode 100644 index 97fa504..0000000 --- a/ab/sound.php +++ /dev/null @@ -1,128 +0,0 @@ -nombre = $nombre.'r'.$nombre; - $strlen = strlen($this->nombre); - - $binary = ''; // Contiendra les donnees, juste les donnees. - - for($i = 0; $i < $strlen; $i++) - { - $binary .= $this->get_datas('../'.$this->nombre{$i}.'.wav'); - } - - $this->package($binary); - } - } - - public function analyse($wav,$arg = FALSE) - { - if(file_exists('../'.$wav)) - { - - $entete_unpack = 'a4file_type/Lfile_size/a4file_id/A4nom_zone1/Ltaille_zone1/SFormatTag/SChannels/LSamplesPerSec/LAvgBytesPerSec/SBlockAlign/SBitsPerSample/A4nom_data/Ltaille_data'; - - $fp = fopen('../'.$wav,'r'); - $file = fread($fp, 44 ); - - $entete = unpack($entete_unpack,$file); - fclose($fp); - - - if( ($entete['file_type'] !== chr(0x52).chr(0x49).chr(0x46).chr(0x46) ) OR ( $entete['file_id'] !== chr(0x57).chr(0x41).chr(0x56).chr(0x45) ) ) - { - trigger_error('Le fichier '.$wav.' n\'est pas un fichier wav',E_USER_ERROR); - } - - if(!$arg) - return $entete; - else - return $entete[$arg]; - } - else - { - - trigger_error('fonction analyse, le fichier '.$wav.' est neccessaire mais manquant', E_USER_ERROR); - return FALSE; - } - - } - - - private function get_datas($wav) - { - if(file_exists('../'.$wav)) - { - $fp = fopen('../'.$wav,'r'); - fseek($fp, 44 ); - - $datas = fread($fp, $this->analyse($wav, 'taille_data')); - - fclose($fp); - - return $datas; - } - else - { - trigger_error('fonction analyse, le fichier '.$wav.' est neccessaire mais manquant', E_USER_ERROR); - return FALSE; - } - } - - private function package($datas) - { - $entete_pack = 'a4La4A4LSSLLSSA4L'; - - $entete = $this->analyse('../'.$this->nombre{0}.'.wav'); - - for($i = 1;$inombre); $i ++) - { - $entete2 = $this->analyse('../'.$this->nombre{$i}.'.wav'); - if($entete !== $entete2) - { - if($entete['Channels'] !== $entete2['Channels']) - { - trigger_error('fonction package, un ou plusieurs fichiers wad n\'ont pas le même nombre de canaux',E_USER_ERROR); - } - - if($entete['BitsPerSample'] !== $entete2['BitsPerSample']) - { - trigger_error('fonction package, un ou plusieurs fichiers wad, n\'on pas le même nombres d\'échantillons par seconde', E_USER_ERROR); - } - - if($entete['SamplesPerSec'] !== $entete2['SamplesPerSec']) - { - trigger_error('fonction package, un ou plusieurs fichiers wad, n\'ont pas la même fréquence d\'échantillonage', E_USER_WARNING); - } - } - } - - /* On calcule la taille des donnees que l'on à creer selon la formule de soundeditor */ - $entete['taille_data'] = strlen($datas); - $entete['taille_data'] /= $entete['BlockAlign']; - $entete['taille_data'] *= $entete['BlockAlign']; - - $entete['file_size'] = 44 + strlen($datas); - - /* on "pack l entete et on y ajoute les donnees */ - $binary = pack($entete_pack, $entete['file_type'],$entete['file_size'],$entete['file_id'],$entete['nom_zone1'], - $entete['taille_zone1'],$entete['FormatTag'],$entete['Channels'],$entete['SamplesPerSec'],$entete['AvgBytesPerSec'], - $entete['BlockAlign'],$entete['BitsPerSample'],$entete['nom_data'],$entete['taille_data']); - $binary .= $datas; - - /* On transmet ou enregistre */ - header('Content-type: audio/x-wav'); - header('Content-Disposition: attachment; filename="code.wav"'); - echo $binary; - } - } - -$wav = new wave($_SESSION['aleat_nbr']); -?> \ No newline at end of file diff --git a/ab/un.ttf b/ab/un.ttf deleted file mode 100644 index 8fea13fa583e33021ad7fda7b8a5fcecad7fb56d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30948 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 diff --git a/ab/wave/3.WAV b/ab/wave/3.WAV deleted file mode 100644 index 7ea846024158d4f5b8275294a84d44f8840dda3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9682 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 JW5g%c{{@v1u9yG- diff --git a/ab/wave/5.wav b/ab/wave/5.wav deleted file mode 100644 index e2eb7e0848aaf45517168d6b88e5ff2f7ad322d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14248 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 diff --git a/ab/wave/6.WAV b/ab/wave/6.WAV deleted file mode 100644 index d3a4ac1cb5c6b8cc31efc499be9c7e73abfa1bb0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10734 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

    $vxl883^@-!; z2TXy(lXZ|gjtc^W$K>k-5D{ydO%P0b&$VQ9litP}N0W=JQ4IEB_a)3@oF`|=T{IEn zI0t)jcQW!4=@Gv7wVXsxRuYY#85bAGxA8Ti_O$K&{b}z9UXqj3Ai{h+sIfSYGYgptc-kwB*JKukg!o`#i452AP_fs}}`Tn_Pk77vR zMbF3e;61X>Onzh{i6Bwa_`LediVt+Y*FJI-lEIYs*WORwZ~W}!{nAe+pWX1e8=vgI zpz_{lntZ(GbCN!~{_&O%zI`P4Q_-{zV0|R%=YM%VAfVAFqCRicheiUC4;KD8rk|Mc z#jk%3eb34GqSCLw`JCwg+iTBJ=xZ$a*vIE7bGiEQ+RL{eY59;fH2=|prwbPuf6C{R zw4X8iQxrb!{gJ{?U4Q@mM=PfbPojR_>@(ti{^g&i_G$Ic*YvdGNy^vGp7wt2>^<-w zPoCZWwN`v--Lrzf`r?-)f8D*WR`s;->jXc)>eH_2N$Q_6dtTR1Uwu~R$APDB&o2Ai zA$zHL=g*%u;*%B6EBn&bPXthhcDZ!kc4^u!pI?&p(Y+6_xb#_{L1WrRjoOF$FLq3y If0p3?FJC{;)c^nh diff --git a/ab/wave/7.WAV b/ab/wave/7.WAV deleted file mode 100644 index a45eeb628198a87a9cbb457d55bc9d24c5108799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12402 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 diff --git a/ab/wave/8.WAV b/ab/wave/8.WAV deleted file mode 100644 index 76552e81cb07d400b7bd7e9c7d56039b771221cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9784 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 R`B!GV$aVJOmDSH){Rau5_4WV& diff --git a/ab/wave/9.WAV b/ab/wave/9.WAV deleted file mode 100644 index 6b9465b017ad95942b70a79acc17cb8fc598e678..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11606 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 ay(G!>HRcnav2}pV3eKZ}`O-UrvhZKh(SbVv diff --git a/ab/wave/A.WAV b/ab/wave/A.WAV deleted file mode 100644 index 0b01deaf2cda4539423f871e8d4a22a232526867..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8030 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 diff --git a/ab/wave/B.WAV b/ab/wave/B.WAV deleted file mode 100644 index f4f33037741617b6dfb54e443f43d1237b27a469..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11868 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 diff --git a/ab/wave/C.WAV b/ab/wave/C.WAV deleted file mode 100644 index f51fcdc04fec01df2bdf61c98441d172c9b43ad3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11070 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 diff --git a/ab/wave/E.WAV b/ab/wave/E.WAV deleted file mode 100644 index a0554e814654157cb9ec283a038f0a4ea7819c93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8244 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 K4M4xL>c0W_>-FOR diff --git a/ab/wave/F.WAV b/ab/wave/F.WAV deleted file mode 100644 index ce53a2098208da468b94862fe9cecc71ef860862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10762 zcmcJVNsnCTb%yDzvd%9EvP=F&7BLV6a6*}4Hz%>lCaZ_)>Y9f;&$s5DC$ia1iK1!B z6m5;RCTp? z@o+ed-JTc4vFH0y9Qk}Xw&lfX<>MfT^WlKrAPRlUv3=L!vO3L<<%hoGcs@G@ z%n73;WJ7)7rV1HyZC`_JlAEu>)5tq zJ7!1Q4$tP>eYI)-L`DUvU;}bdtl@AtX{X% zZqeTDwj0&;TBBBNRI8QsR{rSKrysw6da(cG?dQ**ojiGbxI2kj<)zhX$9B54a=F@d zqjWgg+TGvX942u#-rSn@{a&Z5H7&%i(d@n~ynW7J2lGz|k(k7CcN*P1=g_pENK z)oOP-twz1oZr95XOAj8F9xmR$xA4}TI}7(qrKQ!TH$FUh_q|U(|MF*_{NUxQAARut z_fC#>$3eSZtyNY^%j=DLWp%A#he-|q(_w!&nT`g-@nnSdmR*Q~uGkxxv+>@eM+aNu z@nkaUXDL>7tzN6%Xm)LvD~J=MOwtHjcAM4Jwo_HFF$?fd!PRNtB;>O-rpT|OABw^p1XeY!Fuh%+#9#bE`*!z?(OXD?MxHP8y_8w zt;$-X+pg6lT)SgiZ5G=+*xwvaclM8tPfng3A3c6@yf;dse7ZRbArd^aU0f^4($ML( zJKb)xURio@_x8>C8#k`MId}8s+?#J)o4bAI*22Bga=Eg$UTa&?#{S#yfBcJo`;UM5 z`HPcRpMUw;_l{suxVCWX)~&huyX9tW@#dY1mk)-UhuCX6nGUls9!&>MrL z>t1PPWo>P3mCss(_~P4*N~K&WH_~_i@z?+G|Mc~HAAR=e`$yB< zT3=rC@~pSCuw3sn)@oKd$e?{_wYsrDwVf!-0ypZ9h8WWAb?s;{?59cAA7uG>=ke+3 z+i#zq93LEK#ZL#-Xj?*j%qv-KSsv^ow^#8&6+<{K4y2Kl%K}AD$j=W5r~9 zZyMHC%2gIzt+qO?+B)P~sk`|gcC4UJAR2EUo;*Eye6TedZ|y&Rv^VYNd8YUtXM@pn zItA3d$Mo;-?(A+6yaq(3$idHh(2xk(tX0b^%cX}87Z>i{xq0)}?Ys9DA1UuXDM2*#@^$sbbL+oU zBWOxiBp)UjVJ^>8B0gz13_zT)-fkkDB5;RnfZO>VIjB*u15lOE%JOQtyk2iA{x|E@ za(Q*FvR+wTez^Ex5#p?@t*(|=R#sNm${Jm(@vr6Vz4zfKFOE-NeDI_9fAH#~&p-S4 zy=NyowEmsu05pG9<*4k|-H$Y;SE$CL0^m(Qr6cddN*SCk?v*ql%d~9xRj0f_~G*x1jE-<6f#5(o$wX)#nT3g2-SIcV^uJY=V z7{9nE2e^+$%Y?r5YKy!_C6N%?SapL)KN^k42QNSR$p`NqA3uLd414kF^{eN{2ixO8 z+MjN33?hmN>WVITAoNH}YvoFVxZ44_E?3Wu@Z*evD8eY%a5Ur*qd+bKP~f?~A0o47 zRPNa%=Fza9k?L|F0TUdJTA*h+j@@b2pcQpOi=~Nyy>8DYV`EoBCsKIS8d|4K-ZqK8 z)2gHYTBXL6dQF5>P>ui}X25W&nKVm6ug8>5N1ye&l?=Bw#<<1)!O_w2>9gn0U%YsR zzS}!H+mk+=ayoT@tbkUvx?ZWZBm%k($0#?RU`9-lsB}^hh{ec3E_E5tkWYS2B}F&R zA2KZ;l9^n`B27`_$#ybvgn{K~R0YJ`9QMKtR8)dMRdlCNlDdJg>Ge#pWp&%lW}_iC zQYTfQXoZTY*@OnL$hP1)RhlMunW9gTi;Ja1E0!|?k`#g{n{4mxp)~c=?#|Bc-u@nW z7)KjTHeegq=5$O!hcT%NLyy(Z)>6sVu_PRYs!)h9<$$Z7Lr+L5n#KYrGS5smwPoL| z1u`mf2(6T)7AqB^w%ekUga#;CUdjNi$_=b79h*%otQrz#*jylG>RI@VD5jPLLK8S)<0%$c{cI~^>J0}!%6njl-)M6zlxDIBvcsFDix3WK`F z2|!a@%m^eHG(*l4gK`r3%we^dRd`vzet`fM9z)y(6A%x%q3+`aD@+33mbkR7l7i+D zDm*Wa6j=Pg@_NAH`jl*#gjXSa&3EObKJP-je0gq&^Mno^e1zPEyg`wU!UX%F4^Mh) zlKTn+vWn%hp6vy0=wd6woY;-CC=0P<3g0x7qF%BjA@xKQxu_W^Rp@Ol^+T^8N0^tF zIZCz64-yxB6(r&SJK_O;F9`5t%i-B^A~(P-uv?J$qM8X8j19qvv0e{lJio`AB~NG< z#Rf(qcO2zVtRJLoBatZ{EU3fsx^R-rRI%0fIX#Iz_z-t<5XTP{&>&Xq3^JUF7~tb{32qJOm>A^Tm@!Ub zr>+Mgc$W@h(8-B{9OXkCi8M^n)s2V`lqFtj1+kr4z?Mfzq-jDhAq03a%3y0J4DHnM zEv*#?hI@6RAj31#sGCFJX8v+3FBveRG?4gHP zne7wDgA{(Ka3ix&bcDSy0s#1hayoM2T#66{e~2KSJ78pl6Zn`!gNQjc>dSW{PNp(n zkWsra`e#I<58;~9d@PPwOF#|TR;kBwq_Kfg1;t~jZ ze(w5K50G=bE1}PJdrZNhC{W#?i}{EgBYcX>!kmOv6f~jHhx##rDuH&$gVhOGBp#x9 zKtdPcGP0Gm#WTWE;t`S#fs9F%l#m#L_GY+lYk_8}$MYKY;9{ zV(F*QCNX@6_gpUn9`dnD6_Ou7>%D?Jm7or)5>67bHPHqi;TiIhV}l%?B#!Y5c0_s( z2B8r$iK7sKeiDf%j)ghQ_X%vO(@A3TZ506oEEN=dlGn%(9$Y|L_9xn8tOPI^TuPJe z`6ILvfSAL(D0ZgAz_7A;80Bc68t0&N0630=U^sH7`!wNm${_ zF6;!x91iFtm;@iW8&%i6G9gr#U z8N**>`vgHQ7fRvd38LUXB&Zb1BLhaqXke7^ga@gdj5CjtlC=n396t5f8~+Cn+)YS$ zBt8jBi_d}z5d5d2mIelKx~x14b~q~eLnq#tS|uQ%Tv-IL$loF^u}RSZ#=;^BP=D$}tvIC<7=Ed_pV( zX%5j7ojr<6+?R^Lje41tb`#}m4|-t^bVomZLn7>DN;>64fY2j3K#rspr8#a)f+5+U z8B!_K5#>NYbsmX8k_tsFNen6y-| zDwvU-keN`~5GYjqsgv4?W!MNAB&-B5$|E)W6IYQFmZ)sTilGB$P|no0^pd<`ftW|( z!z(8}=qX=-SZ1s;ws$itxztr{r*3kjmIte7M{ z_-oT4^5n0U^0~#<0{1;I6%} z9kNhvn1xveHtJbOaT-A!kTc7>#Xwd4Bt+pN0MC?CbTx6Oi1BP__yMU*oH4s1Cq{H7 z1DFbAt%sVbzCc7KEzs3#mIYubU{lo7n@lMM~Fn>0M?4@EW_CbtQE+NqzY2nBbIQ$C^XqZYhe|3kfJCgN5g|< zIfRyi%9QF+l;%r8N>Cyp>0JR$wLBq%dnqF-fd}xim`r9?!hZUrkG+)UnMUxGU1fQp zXmDkK6xJ89k7EF226~$0knG2N6IjViT938FEJFdt!F8-iGSVOU0SqLIG!>a;YPpaR zO#8{KwDSdx*p&{&McG&gDG=~UFIxy2v{CBUrNQPIUQ2bRGKgk5GONn%izl-Sn;10c zGluMqyue5M7Z)vRGgHl6;-W+}LK*Cg7>4s^cRqA6z#t$H zioueQr?aX0(o-?mY%AA65C$1(it%QGBH~O&t$ikw*~ZM$DrTOxVrfZiz)?Fb7u{xi z4MmHhhn7p%*>W=(jOb=XBVzGrwqQ=Nl|e`pkq{SM#gnFLr2dL!&K^z2*>E$|w9i_L z4k2&QpKV(pDCxP3&4ia}h2osSP`y$?7%t)&oEH?2(pD!QdeR>cQonFrT2+1PoG0eD zgzj_8fyGk zUZsJun^D{BpoiHLb$KDaT?B@_7&Pew2SZjP zaxoZyqzWQPwE`3Ai7V?ev@aAlOpt8z}{h=e*l?(?f4zg(%yU``TeV+R9@PX5hN^%)FB7}k;^m04Uj zg8oc9sc?R4)HDJVLyJj93%UyRG~v=kqgffoUPf)UJl{tB*^Jp}Ehe-~zb1-?0%a!M z3@S5GixgKei;-fK%x+HQ3((Hw09PtpVPY;hl(3R%W|y%Od-JRXxpc>pW|EX^gqn0xUGCV7Svj$(<#EdN%EQJiA6{!s<+OklxxYNX$cxJRZ3tTRZG?KE^Y-Z6l zL(ynqx{NXxA2a>vGv+gJ7mAxMwR05!NIZj3@omH`I?om~+sz~?q%KgMZFqT225T|8 z%ob*$*`3)@lg=9q3TDZ(d9#_br3=h>I$QK&>iHVFG0kU-o$q31NxQ<}=MydqaNbzB z)Jz`pebGnfr3Y@$#k;uq`hd$%W{ets>)`W7X*j#i8~=x!*;w;E8+U1sqDj5yotLE& zLBIZdY3^CaY$D%Z+wE&xnn9OVx-{vMr7sQm&09_QdfT}fE}Fl#>Nh6*X7B9zV*bV5 ztWV!(t(TjA%l$WWzZmn4uCs=V5wp8utJ%}V_l02Q?!2Q|==|}2d-EI1{kF&d26*D! AU;qFB diff --git a/ab/wave/G.WAV b/ab/wave/G.WAV deleted file mode 100644 index 785a247b9d29194860196e6e7205fafd94a49888..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10434 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 diff --git a/ab/wave/H.WAV b/ab/wave/H.WAV deleted file mode 100644 index 1663c7f354fc86dc3b563c5adcc57d3c51a75775..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11084 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

    c(DLgwR?oR(HC(BV;kF(3Xxf5iwdSV1ek-tO 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 diff --git a/ab/wave/I.WAV b/ab/wave/I.WAV deleted file mode 100644 index 149466ddc7bfdb29952b59e1cbfb7521043d63f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6442 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 diff --git a/ab/wave/J.WAV b/ab/wave/J.WAV deleted file mode 100644 index 060e880aafb385369f17ce4b81ce3f5d4096ce33..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10814 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 diff --git a/ab/wave/K.WAV b/ab/wave/K.WAV deleted file mode 100644 index d436f427ab0d383f35e9e044a863c7256e2ce29f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6772 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 F{|4;z8p8kp diff --git a/ab/wave/L.WAV b/ab/wave/L.WAV deleted file mode 100644 index c7c9b2a36caa5ee0b02fec56b8506fd5402c037e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12026 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 diff --git a/ab/wave/Q.WAV b/ab/wave/Q.WAV deleted file mode 100644 index ff71a43faab879c86105b903ddab9a6a4b30d49c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7644 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 diff --git a/ab/wave/T.WAV b/ab/wave/T.WAV deleted file mode 100644 index fc455ebec1fcde8bec79faf3225b032048191e28..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8206 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 Y3Kkb9ex%k9!OL`iBph!t^LC8?0=ci`rvLx| diff --git a/ab/wave/U.WAV b/ab/wave/U.WAV deleted file mode 100644 index 4274e5e0e52b6d9939d82e34fb233a36eeb7be4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8514 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 Psp~YZpT8dKFRuJAq2hfD diff --git a/ab/wave/V.WAV b/ab/wave/V.WAV deleted file mode 100644 index b023b1280f4bbdcd64cf2de084f49cda3020511d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10058 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 diff --git a/ab/wave/W.WAV b/ab/wave/W.WAV deleted file mode 100644 index 526aa7ac4bd332a9ebc51dd4043d65378d656216..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18822 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 CDTrwR diff --git a/ab/wave/X.WAV b/ab/wave/X.WAV deleted file mode 100644 index 7732137390da9cc1cbbac6eed4a57323580693d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12738 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 I*Za@^0DuLwg8%>k diff --git a/ab/wave/Y.WAV b/ab/wave/Y.WAV deleted file mode 100644 index 6970acdc9ae0174b7de06f2bb3435dbab6fcbcbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15144 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 diff --git a/ab/wave/Z.WAV b/ab/wave/Z.WAV deleted file mode 100644 index a8503108528d42fde2e4e312c554c1a0c173d615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11300 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 diff --git a/admin.php b/admin.php new file mode 100644 index 0000000..6e092d7 --- /dev/null +++ b/admin.php @@ -0,0 +1,42 @@ +values['connected']) && $sess->values['connected'] && !empty($sess->values['id']) && isset($sess->values['auth_level']) && $sess->values['auth_level'] >= 3 && !empty($sess->values['idPlan'])) { + //Connexion à la base de données + $chapeau = new bdd(); + $chapeau->connexion(); + $chapeau->db(); + + //Passage des valeurs générales au template + $template->assign('version', VERSION); + $template->assign('page','admin'); + + $table = $config['db_prefix'].'user_inscriptions'; + $chapeau->unique_query("SELECT * FROM `$table` WHERE `race` = 'covenant'"); + $nbcovie = $chapeau->num_rows; + $table = $config['db_prefix'].'user_inscriptions'; + $chapeau->unique_query("SELECT * FROM `$table` WHERE `race` = 'humain'"); + $nbhumain = $chapeau->num_rows; + $template->assign('count',array('humains' => $nbhumain, 'covenants' => $nbcovie, 'serveurs' => 'cette')); + + $id_user = $sess->values['id']; + $table = $config['db_prefix'].'user'; + $queryUser = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id` = '$id_user'"); + $race = $queryUser['race']; + $template->assign('race',$queryUser['race']); + //$template->assign('race','covenant'); + $template->assign('user',$queryUser); + $tpsdejeu = time() - $queryUser['last_visite']; + $heur = floor($tpsdejeu/3600); + $min = floor(($tpsdejeu - $heur*3600)/60); + if ($heur > 0) $min = $heur.' h '.$min; + $template->assign('tpsdejeu',$min.' min'); + + $pagea = 'vp'; + + $template->display('admin/'.$pagea.'.tpl'); +} +else header('Location: index.php'); +?> \ No newline at end of file diff --git a/ajax_flotte.php b/ajax_flotte.php new file mode 100644 index 0000000..5e41907 --- /dev/null +++ b/ajax_flotte.php @@ -0,0 +1,194 @@ +values['connected']) && $sess->values['connected'] && !empty($sess->values['id']) && isset($sess->values['auth_level']) && !empty($sess->values['idPlan'])) { + $json = new Services_JSON(); + + $chapeau = new bdd(); + $chapeau->connexion(); + $chapeau->db(); + $table = $config['db_prefix'].'planete'; + $idPlan = $sess->values['idPlan']; + $queryPlanete = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id` = '$idPlan'"); + $start_galaxie = $queryPlanete['galaxie']; + $start_ss = $queryPlanete['ss']; + $start_position = $queryPlanete['position']; + + if (empty($sess->values['fltime']) || $sess->values['fltime'] + 600 < time() || empty($sess->values['flnbvais']) || empty($sess->values['flvitesse']) && isset($sess->values['auth_level'])) + $datas = array( + 'root' => array( + 'temps' => '-', + 'deblok' => 'Une erreur est survenue lors de la création de la flotte. Veuillez recommencer', + 'conso' => '-', + 'tactique' => '' + ) + ); + elseif (empty($_POST['nom']) || preg_replace('@[^a-zA-Z0-9_ ]@i', '', $_POST['nom']) != $_POST['nom']) + $datas = array( + 'root' => array( + 'temps' => '-', + 'deblok' => 'Nom de la flotte incorrect !', + 'conso' => '-', + 'tactique' => '' + ) + ); + elseif ($_POST['galaxie'] > MAX_AMAS || $_POST['ss'] > MAX_SYSTEME || $_POST['pos'] > MAX_PLANETE || $_POST['galaxie'] < 0 || $_POST['ss'] < 1 || $_POST['pos'] < 1 || ($_POST['galaxie'] < 1 && $sess->values['auth_level'] < 6)) + $datas = array( + 'root' => array( + 'temps' => 'Lieu inaccessible', + 'deblok' => 'Corrigez la destination !', + 'conso' => '-', + 'tactique' => '' + ) + ); + else { + $_POST['vitesse'] /= 100; + $temps = vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$_POST['galaxie'],$_POST['ss'],$_POST['pos'],$sess->values['flvitesse'],$_POST['vitesse'],$sess->values['flpreparation'],$sess->values['flchauffe']); + if ($temps <= 0) $temps = 454; + $conso = vais_conso($temps, $sess->values['flnbvais'])*($_POST['vitesse']*10); + $tactique = ''; + if ($_POST['mission'] == '1') { + $tactique = ' utiliser la tactique : '; + } + $cds = sha1('flotte'.$conso.'ß10'.time().'|HB;'.rand(10,99).$temps); + $sess->values['flcds'] = $cds; + $sess->put(); + $datas = array( + 'root' => array( + 'temps' => affTemp(floor($temps)), + 'deblok' => '', + 'conso' => separerNombres(ceil($conso*($_POST['vitesse']/100)*2)), + 'tactique' => $tactique + ) + ); + } + + $chapeau->deconnexion(); + header("X-JSON: ".$json->encode($datas)); +} +exit; + $json = new Services_JSON(); + + if (!isset($sess->values['fltime']) || $sess->values['fltime'] + 600 < time() || !isset($sess->values['flnbvais']) || !isset($sess->values['flvitesse']) || !isset($_POST['galaxie']) || !isset($_POST['ss']) || !isset($_POST['pos']) || !isset($_POST['vitesse']) || !is_numeric($_POST['galaxie']) || !is_numeric($_POST['ss']) || !is_numeric($_POST['pos']) || !is_numeric($_POST['vitesse'])) { + $datas = array( + 'root' => array( + 'temps' => '-', + 'deblok' => 'Complètez les champs ci-dessus', + 'conso' => '-', + 'tactique' => '' + ) + ); + } + elseif ($_POST['galaxie'] > 1 || $_POST['ss'] > 100 || $_POST['pos'] > 12 || $_POST['galaxie'] < 0 || $_POST['ss'] < 1 || $_POST['pos'] < 1 || ($_POST['galaxie'] < 1 && $auth_level < 6)) { + $datas = array( + 'root' => array( + 'temps' => 'Lieu inaccessible', + 'deblok' => 'Corrigez la destination !', + 'conso' => '-', + 'tactique' => '' + ) + ); + } + else { + $_POST['vitesse'] /= 100; + $temps = vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$_POST['galaxie'],$_POST['ss'],$_POST['pos'],$sess->values['flvitesse'],$_POST['vitesse'],$sess->values['flpreparation'],$sess->values['flchauffe']); + $conso = vais_conso($temps, $sess->values['FL_nbvais'])*($_POST['vitesse']*10); + + //On recherche si la flotte va faire un aller-retour ou un aller simple + if (isset($_POST['mission']) && is_numeric($_POST['mission']) && ($_POST['mission'] == '3')) $nbtrajet = 1; + else $nbtrajet = 2; + + if ($temps <= 0) $temps = 454; + if (preg_replace('@[^a-zA-Z0-9_ ]@i', '', $_POST['nom']) != $_POST['nom'] || empty($_POST['nom'])) + $datas = array( + 'root' => array( + 'temps' => affTemp(floor($temps)), + 'deblok' => 'Nom de la flotte incorrect !', + 'conso' => separerNombres(ceil($conso*($_POST['vitesse']/100)*$nbtrajet)), + 'tactique' => '' + ) + ); + /*elseif (empty($_POST['hyd']) || $_POST['hyd'] < $conso * 2) + $datas = array( + 'root' => array( + 'temps' => affTemp(floor($temps)), + 'deblok' => 'Vous n\'avez pas embarqué assez d\'hydrogène pour faire l\'aller-retour !', + 'conso' => separerNombres(floor($conso*($_POST['vitesse']/100)*$nbtrajet)) + ) + );*/ + else { + $tactique = ''; + $cds = sha1('flotte'.$conso.'ß10'.time().'|HB;'.rand(10,99).$temps); + $sess->values['flottecdsL'] = $cds; + if ($id == '46') setHistorique('Rapport Frederic PREP','Génération code : SESSION : '.$sess->values['flottecdsL'].' - cds : '.$cds); + if ($_POST['mission'] == '1') { + $tactique = ' :: utiliser la tactique : '; + } + $datas = array( + 'root' => array( + 'temps' => affTemp(floor($temps)), + 'deblok' => '', + 'conso' => separerNombres(ceil($conso*($_POST['vitesse']/100)*$nbtrajet)), + 'tactique' => $tactique + ) + ); + } + } + + $chapeau->deconnexion(); + header("X-JSON: ".$json->encode($datas)); +?> \ No newline at end of file diff --git a/b_index.php b/b_index.php deleted file mode 100644 index 1243fea..0000000 --- a/b_index.php +++ /dev/null @@ -1,37 +0,0 @@ -'; -elseif(!isset($_GET['v'])){ - if (isset($_SESSION['cdsconnect'])) { - $_SESSION['cdsconnect'] = null; - header('Location: index.php?erreur=6'); - exit; - } - $_SESSION['cdsconnect'] = rand(1234567890,9876543210)*rand(1234567890,98765432100)/rand(123567890,9876543210); - if ($_SESSION['race'] == 'humain' || $_SESSION['race'] == 'covenant') echo ''; - else echo ''; - echo ''; -} - -if(($_SESSION['race'] == 'humain' || $_SESSION['race'] == 'covenant') && ($_GET['v'] == sha1(time() + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 1 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 2 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 3 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 4 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 5 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 6 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 7 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 8 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 9 + $_SESSION['cdsconnect']) || $_GET['v'] == sha1(time() - 10 + $_SESSION['cdsconnect'])) && isset($_SESSION['charg']) && $_SESSION['charg'] == 1) { -$_SESSION['cdsconnect'] = null; -$_SESSION['authConnexion'] = true; -echo ' - - - - Halo-Battle - - - - - -'; -} -elseif(!isset($_SESSION['charg']) || $_SESSION['charg'] != 1) echo ''; -else echo ''; -?> \ No newline at end of file diff --git a/captcha/.htaccess b/captcha/.htaccess new file mode 100644 index 0000000..f2bc67f --- /dev/null +++ b/captcha/.htaccess @@ -0,0 +1,6 @@ +RewriteEngine on +RewriteRule ^accueil.html$ index.php [L] +php_flag register_globals Off +php_flag magic_quotes_gpc Off +php_flag magic_quotes_runtime Off +php_flag magic_quotes_sybase Off \ No newline at end of file diff --git a/ab/0.TTF b/captcha/0.TTF similarity index 100% rename from ab/0.TTF rename to captcha/0.TTF diff --git a/ab/1.TTF b/captcha/1.TTF similarity index 100% rename from ab/1.TTF rename to captcha/1.TTF diff --git a/ab/2.TTF b/captcha/2.TTF similarity index 100% rename from ab/2.TTF rename to captcha/2.TTF diff --git a/ab/fond_verif_img.gif b/captcha/fond_verif_img.gif similarity index 100% rename from ab/fond_verif_img.gif rename to captcha/fond_verif_img.gif diff --git a/ab/fond_verif_img.png b/captcha/fond_verif_img.png similarity index 100% rename from ab/fond_verif_img.png rename to captcha/fond_verif_img.png diff --git a/ab/ab.php b/captcha/image.php similarity index 91% rename from ab/ab.php rename to captcha/image.php index 51e8ded..bb0217f 100644 --- a/ab/ab.php +++ b/captcha/image.php @@ -1,6 +1,7 @@ values['aleatnbr'] = strtolower($nombre); +$sess->put(); + // On détruit les variables inutiles : unset($chiffre); unset($i); @@ -63,7 +67,7 @@ unset($chiffres); $fontfile = './2.TTF'; //imagestring($_img, 5, 18, 8, $nombre, $avant_plan); -if ($fontfile == '0.TTF') ImageTTFText($_img, 18, 2, 0, 23, $avant_plan, $fontfile, strtoupper($nombre)); +if ($fontfile == './0.TTF') ImageTTFText($_img, 18, 2, 0, 23, $avant_plan, $fontfile, strtoupper($nombre)); else ImageTTFText($_img, 18.5, 2, rand(0,6), 23, $avant_plan, $fontfile, $nombre); imagepng($_img); diff --git a/connectBDD.php b/connectBDD.php deleted file mode 100644 index bece8d0..0000000 --- a/connectBDD.php +++ /dev/null @@ -1,43 +0,0 @@ - \ No newline at end of file diff --git a/cron/classement.php b/cron/classement.php index db2e12e..7396e1b 100644 --- a/cron/classement.php +++ b/cron/classement.php @@ -1,17 +1,147 @@ connexion(); +$chapeau->db(); mysql_query("TRUNCATE TABLE `classement`"); -$req = mysql_query("SELECT id, pseudo, race FROM user"); $resultat = mysql_fetch_array($req); -while ($res = mysql_fetch_assoc($req)) { - $pts_rech = CalculPointRecherche($res['id']); - $pts_flotte = CalculPointflotte($res['id']); - $pts_bat = CalculPointBatiment($res['id']); - $pts_tt = $pts_rech + $pts_flotte + $pts_bat; +$sql_1 = mysql_query("SELECT `id`, `pseudo`, `race` FROM `user`"); +while($recup_id = mysql_fetch_array($sql_1)) { + + $id = $recup_id['id']; + $PSEUDO_USER = $recup_id['pseudo']; + $race = $recup_id['race']; + + $planete = mysql_query("SELECT `id`, `mine_m`, `mine_c`, `mine_h`, `centrale_s`, `centrale_f`, `radar`, `labo`, `chantier_terrestre`, `chantier_spatial`, `caserne`, `silo`, `centre_info`, `vaisseau_1`, `vaisseau_2`, `vaisseau_3`, `vaisseau_4`, `vaisseau_5`, `vaisseau_6`, `vaisseau_7`, `vaisseau_8`, `vaisseau_9`, `vaisseau_10`, `vaisseau_11`, `vaisseau_12`, `def_1`, `def_2`, `def_3`, `def_4`, `def_5` FROM `planete` WHERE `id_user` = " . $id)or die( mysql_error() ); + while ($donnees_planete = mysql_fetch_array($planete)) { + + // partie pts batiements ressources + $POINTS_BATIMENTS += batiment1($donnees_planete['mine_m'] ) + batiment2( $donnees_planete['mine_c'] ) + batiment3( $donnees_planete['mine_h'] ) + batiment4( $donnees_planete['centrale_s'] ) + batiment5( $donnees_planete['centrale_f'] ) + batiment6( $donnees_planete['radar'] ) + batiment7( $donnees_planete['labo'] ) + batiment8( $donnees_planete['chantier_terrestre'] ) + batiment9( $donnees_planete['chantier_spatial'] ) /* + batiment10( $donnees_planete['caserne'] )*/ + batiment11( $donnees_planete['silo'] ) + batiment11( $donnees_planete['centre_info'] ); + + // partie pts def ressources + + $metal_d += 500 * $donnees_planete['def_1']; + $cristal_d += 200 * $donnees_planete['def_1']; + + $metal_d += 4000 * $donnees_planete['def_2']; + $cristal_d += 2000 * $donnees_planete['def_2']; + + $metal_d += 4500 * $donnees_planete['def_3']; + $cristal_d += 800 * $donnees_planete['def_3']; + $hydrogene_d += 600 * $donnees_planete['def_3']; + + $metal_d += 12000 * $donnees_planete['def_4']; + $cristal_d += 10000 * $donnees_planete['def_4']; + $hydrogene_d += 1000 * $donnees_planete['def_4']; + + $metal_d += 15000 * $donnees_planete['def_5']; + $cristal_d += 9500 * $donnees_planete['def_5']; + $hydrogene_d += 1500 * $donnees_planete['def_5']; + + // partie pts vaiseaux + + $POINTS_VAISSEAUX += $donnees_planete['vaisseau_1'] + $donnees_planete['vaisseau_2'] + $donnees_planete['vaisseau_3'] + $donnees_planete['vaisseau_4'] + $donnees_planete['vaisseau_5'] + $donnees_planete['vaisseau_6'] + $donnees_planete['vaisseau_7'] + $donnees_planete['vaisseau_8'] + $donnees_planete['vaisseau_9'] + $donnees_planete['vaisseau_10'] + $donnees_planete['vaisseau_11']+ $donnees_planete['vaisseau_12']; + + // partie pts vaiseaux ressources + + // 'cargos de classe Parabola', 1 + $metal += ( $donnees_planete['vaisseau_1'] * 1000 ); + $cristal += ( $donnees_planete['vaisseau_1'] * 800 ); + + // 'cargos de classe Laden', 2 + $metal += ( $donnees_planete['vaisseau_2'] * 4000 ); + $cristal += ( $donnees_planete['vaisseau_2'] * 3000 ); + + // 'vaisseau(X) de colonisation de classe Odyssey', 3 + $metal += ( $donnees_planete['vaisseau_3'] * 9000 ); + $cristal += ( $donnees_planete['vaisseau_3'] * 9000 ); + $hydrogene += ( $donnees_planete['vaisseau_3'] * 1000 ); + + // 'drone(s) d\'espionnage de classe Clarion', 4 + $metal += ( $donnees_planete['vaisseau_4'] * 1000) ; + $cristal += ( $donnees_planete['vaisseau_4'] * 1200 ); + $hydrogene += ( $donnees_planete['vaisseau_4'] * 100 ); + + // 'recycleur(s) de classe Minotaur', 5 + $metal += ( $donnees_planete['vaisseau_5'] * 15000 ); + $cristal += ( $donnees_planete['vaisseau_5'] * 9000 ); + $hydrogene += ( $donnees_planete['vaisseau_5'] * 1000 ); + + // 'C709 Longsword Interceptor', 6 + $metal += ( $donnees_planete['vaisseau_6'] * 1700 ); + $cristal += ( $donnees_planete['vaisseau_6'] * 1220 ); + + // 'Frégates', 7 + $metal += ( $donnees_planete['vaisseau_7'] * 5800 ); + $cristal += ( $donnees_planete['vaisseau_7'] * 1400 ); + + // 'croiseur(s) de classe Halcyon', 8 + $metal += ( $donnees_planete['vaisseau_8'] * 20000 ); + $cristal += ( $donnees_planete['vaisseau_8'] * 16000 ); + $hydrogene += ( $donnees_planete['vaisseau_8'] * 1600 ); + + // 'croiseur(s) de classe Marathon', 9 + $metal += ( $donnees_planete['vaisseau_9'] * 26000 ); + $cristal += ( $donnees_planete['vaisseau_9'] * 16400 ); + $hydrogene += ( $donnees_planete['vaisseau_9'] * 1600 ); + + // 'porte vaisseaux', 10 + $metal += ( $donnees_planete['vaisseau_10'] * 60000 ); + $cristal += ( $donnees_planete['vaisseau_10'] * 40000 ); + $hydrogene += ( $nb_vaisseaux['vaisseau_10'] * 3000 ); + + $METAL_VAISSEAUX = $metal; + $CRISTAL_VAISSEAUX = $cristal; + $HYDROGENE_VAISSEAUX = $hydrogene; + $RESSOURCES_VAISSEAUX = $METAL_VAISSEAUX + $CRISTAL_VAISSEAUX + $HYDROGENE_VAISSEAUX; + + + } // boucle planetes --> + + // partie pts techno + $techno_db = mysql_query("SELECT `informatique`, `detection`, `armement`, `energie_t`, `reacteur`, `reacteur_f`, `reacteur_ff`, `medecine`, `tactique`, `spartan`, `blindage` FROM `user` WHERE `id` = ".$id)or die(mysql_error()); + while ($techno = mysql_fetch_array($techno_db)) { + + $POINTS_TECHNO = $techno['informatique'] + $techno['detection'] + $techno['armement'] + $techno['energie_t'] + $techno['reacteur'] + $techno['reacteur_f'] + $techno['reacteur_ff'] + $techno['medecine'] + $techno['tactique'] + $techno['spartan'] + $techno['blindage']; + + // partie pts techno ressources + $RESSOURCES_TECHNO = techno1( $techno['informatique'] ) + techno2( $techno['detection'] ) + techno3( $techno['armement'] ) + techno4( $techno['energie_t'] ) + techno5( $techno['reacteur'] ) + techno6( $techno['reacteur_f'] ) + techno7( $techno['reacteur_ff'] ) + techno8( $techno['medecine'] ) + techno9( $techno['tactique'] ) + techno10( $techno['spartan'] ) + techno11( $techno['blindage'] ); + } + + $PT_RESSOURCES = ( $RESSOURCES_VAISSEAUX + $RESSOURCES_TECHNO + $POINTS_BATIMENTS ) / 1000; + $POINTS_BATIMENTS = $POINTS_BATIMENTS / 1000; + + // points flottes terrestres recherches batiments + mysql_query("INSERT INTO `classement` VALUES (NULL, '$PSEUDO_USER', '$race', '$PT_RESSOURCES', '$POINTS_VAISSEAUX', '0', '$POINTS_TECHNO', '$POINTS_BATIMENTS')") or die (mysql_error()); + mysql_query("UPDATE `user` SET `flotte` = '" . $POINTS_VAISSEAUX . "', `recherches` = '" . $POINTS_TECHNO . "', `batiments` = '" . $POINTS_BATIMENTS . "', `points` = '" . $PT_RESSOURCES . "' WHERE `pseudo` = '" . $PSEUDO_USER . "'") or die (mysql_error()); + + $metal = 0; + $cristal = 0; + $hydrogene = 0; + $POINTS_VAISSEAUX = 0; + $POINTS_TECHNO = 0; + $PT_RESSOURCES = 0; + $METAL_VAISSEAUX = 0; + $CRISTAL_VAISSEAUX = 0; + $HYDROGENE_VAISSEAUX = 0; + $RESSOURCES_VAISSEAUX = 0; + $POINTS_BATIMENTS = 0; - mysql_query("INSERT INTO `classement` (`pseudo`,`race`,`points`,`flottes`,`recherches`,`batiments`) VALUES ('".$res['pseudo']."', '".$res['race']."', '$pts_tt', '$pts_flotte', '$pts_rech', '$pts_bat');"); } -mysql_close(); +$sql_2 = mysql_query("SELECT * FROM `classement` ORDER BY `classement`.`points` DESC") or die(mysql_error()); +$i=0; +while($resultat = mysql_fetch_array($sql_2)) { + $i++; + $nomuser = $resultat['pseudo']; + mysql_query("UPDATE `user` SET `place_points` = '$i' WHERE `pseudo` = '$nomuser'") or die (mysql_error()); +} + +$chapeau->deconnexion(); ?> \ No newline at end of file diff --git a/cron/optimize.php b/cron/optimize.php new file mode 100644 index 0000000..6244540 --- /dev/null +++ b/cron/optimize.php @@ -0,0 +1,22 @@ +connexion(); +$chapeau->db(); + +mysql_query("OPTIMIZE TABLE `flottes`; +OPTIMIZE TABLE `flottes`; +OPTIMIZE TABLE `flottes_combats`; +OPTIMIZE TABLE `mail`; +OPTIMIZE TABLE `planete`; +OPTIMIZE TABLE `sessions`; +TRUNCATE TABLE `registre_identification`; +TRUNCATE TABLE `securite_identification`; +"); + +$chapeau->deconnexion(); +?> \ No newline at end of file diff --git a/favicon.ico b/favicon.ico index 75dd35a69cef1b352e42e0b33a1fec8d4bef0811..da2fd6942a53ae37439d173fd71b71bf0993c906 100644 GIT binary patch literal 1150 zcmb7^Urbw79LG4AeBrCs;jHfp4>c5UvJ={ z!`cLOW)rS^*M#k-n&3j9=fR%b+_IXQ8k9^XGbppgW+V~`l#?UgM)v6rf7F*Us1%?) z^afY((hFSvi@Q0EyqG(#ehY^BgDH(h`pz?OFkj4C zj0SEr9D>HGN@z5j;ETx^(A5^sod%A{i?H;yy{z}F16-}GH$);!!YgH(vppzGZQLO-@N|Bz5je}mVZ;{Jnw(o9#4IambxI%syPMVGI zD6vA027oc7zu-|>IAORDB;JYMQVqQ zjSbk`+~h_3wEgtMGMI_SYJLaDB4IcpmDc2lCHqD$4*q62RtkX*C#F8irBkVYl_Gtb zqm6o~cQ`cgt5_^~)$Mkpa-H5DYO` z&M*vvR_@n{b_84TJtJtWuX9 zURzt`Ygi_i3j^K0yVH?D7;O0F9QR!IuOtKf19C&fsuH?gaFKN0M*XK$Ox1LVz>mcjQ@ui z1UVQ483dUb1sRwG8JPtc{~uvk4RjzQBhdA5z{1AP%mKCyE(BySGB7a<07HYB6G@bf zg%u>MV8AG7C?aYq$iT?Lz{I zx51Y^>xn#28t7^UMpmYfBf(ma3fpC#KHuvU+-~_=aQYg#g*U_7;{($^f>kkrR2>8} znL*6$(f1+ZOlFtwaKWleR*yx2<)#xcBz5xa*UxE50za z$8k65IpuJ$?w;1R%c3qO@L0~f6rZ$B>V8#9tA5+@9{kTx6aL1t?RV$Xn~;EDX0%sa zqr0xxB6s5&|CA+Cx4HPHAJbxYdpqZF-`qRiEe)U4_^sILUD_vKm_HZddytk*@kSq# z_titf1|+cjk-Ee~v5ohvlYwH0@E7=VtO%lt5vWRF&yCf`I6ofy&(M{5*30~C)zodP z*{2IiJ^q<xQZ>izcan#@22|yHvu&!1nB?( diff --git a/fonctions.php b/fonctions.php deleted file mode 100644 index fe92771..0000000 --- a/fonctions.php +++ /dev/null @@ -1,225 +0,0 @@ - $capacite) { - if ($capacite/3 > $metal && $capacite/3 > $cristal && $capacite/3 > $hydrogene) { - - } - } - else { - $ressources['metal'] = $metal; - $ressources['cristal'] = $cristal; - $ressources['hydrogene'] = $hydrogene; - } -} - -function txtmission($mission){ - if ($mission == 0) return 'Stationner'; - elseif ($mission == 1) return 'Attaquer'; - elseif ($mission == 2) return 'Transporter'; - elseif ($mission == 3) return 'Coloniser'; - elseif ($mission == 4) return 'Recycler'; - elseif ($mission == 5) return 'Espionner'; - else return 'Erreur'; -} - -function trouvNom($id_user){ - $req = mysql_query("SELECT pseudo FROM user WHERE `id` = '$id_user'"); - $resultat = mysql_fetch_array($req); - return $resultat['pseudo']; -} - -function trouvInfo($id_user, $info){ - $req = mysql_query("SELECT $info FROM user WHERE `id` = '$id_user'"); - $resultat = mysql_fetch_array($req); - return $resultat[$info]; -} - -function separerNombres($nombre) { - return number_format($nombre, 0, ',', ' '); -} - -function bbcode($text) { - $text = htmlentities($text); - - $text = nl2br($text); - - $text = str_replace("[b]", "", $text); - $text = str_replace("[/b]", "", $text); - - $text = str_replace("[u]", "", $text); - $text = str_replace("[/u]", "", $text); - - $text = str_replace("[i]", "", $text); - $text = str_replace("[/i]", "", $text); - - $text = str_replace("[center]", "

    ", $text); - $text = str_replace("[/center]", "
    ", $text); - - $text = str_replace(" ", "  ", $text); - - $patterns = array(); - $replacements = array(); - - $patterns[] = "#\[img\](.*?)\[/img\]#si"; - $replacements[] = ""; - - $patterns[] = "#\[quote=(.*?)\](.*?)\[/quote\]#si"; - $replacements[] = "
          \\1 à dit :
    \\2
    "; - - $patterns[] = "#\[color=(.*?)\](.*?)\[/color\]#si"; - $replacements[] = "\\2"; - - $patterns[] = "#\[quote\](.*?)\[/quote\]#si"; - $replacements[] = "
    \\1
    "; - - $patterns[] = "#\[url\]([a-z0-9]+?://){1}([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\[/url\]#is"; - $replacements[] = "
    \1\2"; - - $patterns[] = "#\[url\]((www|ftp)\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\[/url\]#si"; - $replacements[] = "\\1"; - - $patterns[] = "#\[url=([a-z0-9]+://)([\w\-]+\.([\w\-]+\.)*[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*?)?)\](.*?)\[/url\]#si"; - $replacements[] = "\\6"; - - $patterns[] = "#\[url=(([\w\-]+\.)*?[\w]+(:[0-9]+)?(/[^ \"\n\r\t<]*)?)\](.*?)\[/url\]#si"; - $replacements[] = "\\5"; - - $patterns[] = "#\[email\]([a-z0-9\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si"; - $replacements[] = "\\1"; - - return preg_replace($patterns, $replacements, $text); -} - - -function CalculPointBatiment($id){ - - $query = mysql_query("SELECT user.id ,pseudo, ceil( ( - (ceil(exp(0.4*(SUM( mine_m ) ))*190)+ceil(exp(0.4*(SUM( mine_m ) ))*90) ) + (ceil(exp(0.43*(SUM( mine_c ) ))*205)+ceil(exp(0.43*(SUM( mine_c ) ))*110)) + (ceil(exp(0.445*(SUM( mine_h ) ))*235)+ceil(exp(0.445*(SUM( mine_h ) ))*150) ) + (ceil(exp(0.442*(SUM( centrale_s ) ))*165)+ceil(exp(0.442*(SUM( centrale_s ) ))*99) ) + ( ceil(pow(1.8,(SUM( centrale_f ) ))*300)+ceil(pow(1.82,(SUM( centrale_f ) ))*230)) + (ceil(pow(2,(SUM( radar)))*750)+ceil(pow(2,(SUM( radar)))*500)+ceil(pow(2,(SUM( radar)))*50)) + (ceil(pow(2,(SUM( labo)))*200)+ceil(pow(2,(SUM( labo)))*150)) + (ceil(pow(2,(SUM(chantier_terrestre)))*520)+ceil(pow(2,(SUM(chantier_terrestre)))*380)) + (ceil(pow(2,(SUM(chantier_spatial)))*600)+ceil(pow(2,(SUM(chantier_spatial)))*450)) + (ceil(pow(2,(SUM(caserne)))*200)+ceil(pow(2,(SUM(caserne)))*100)) + (ceil(pow(2,(SUM(silo)))*400)+ceil(pow(2,(SUM(silo)))*260))+ (ceil(pow(1.7,(SUM(centre_info)))*600)+ceil(pow(1.7,(SUM(centre_info)))*420)+ceil(pow(1.7,(SUM(centre_info)))*100)) )/100000 - ) AS points_bui - FROM user,planete - WHERE id_user=$id - GROUP BY user.id - ORDER BY points_bui DESC"); - - $resultat = mysql_fetch_array($query); - return $resultat['points_bui']; -} - -function CalculPointRecherche($id){ - - $query = mysql_query("SELECT user.id ,pseudo, ( - SUM( informatique ) + SUM( detection ) + SUM( armement ) + SUM( energie_t ) + SUM( reacteur ) + SUM( reacteur_f ) + SUM( reacteur_ff ) + SUM( medecine ) + SUM( tactique ) + SUM( spartan ) + SUM( blindage ) - ) AS points_res - FROM user,planete - WHERE id_user=$id - GROUP BY user.id - ORDER BY points_res DESC"); - - $resultat = mysql_fetch_array($query); - return $resultat['points_res']; -} - -function CalculPointflotte($id){ - - $query = mysql_query("SELECT id_user ,user.pseudo, user.id, ( - SUM(soldat1 ) + SUM( soldat2 ) + SUM( soldat3 ) + SUM( soldat4 ) + SUM( sniper ) + SUM( spartam ) + SUM( medecin ) + SUM( ingenieur) + SUM( soldat_lourd ) + SUM( vaisseau_1 ) + SUM( vaisseau_2 ) + SUM( vaisseau_3 ) + SUM( vaisseau_4 ) + SUM(vaisseau_4 ) + SUM(vaisseau_6 ) + SUM( vaisseau_7 ) + SUM( vaisseau_8) + SUM( vaisseau_9 ) + SUM( vaisseau_10 ) + SUM( vaisseau_11 ) + SUM( vaisseau_12 ) + SUM(vais_0 ) + SUM(vais_1 ) + SUM( vais_2 ) + SUM( vais_3) + SUM( vcl_1 ) + SUM( vcl_2 ) + SUM( vcl_3 ) + SUM( vcl_4) - ) AS points_flt - FROM user,planete - WHERE id_user=$id - GROUP BY id_user - ORDER BY points_flt DESC"); - - $resultat = mysql_fetch_array($query); - return $resultat['points_flt']; -} - - -function CalculPointGene($id){ - -$query = mysql_query("SELECT user.id ,pseudo, ceil( ( - (ceil(exp(0.4*(SUM( mine_m ) ))*190)+ceil(exp(0.4*(SUM( mine_m ) ))*90) ) + (ceil(exp(0.43*(SUM( mine_c ) ))*205)+ceil(exp(0.43*(SUM( mine_c ) ))*110)) + (ceil(exp(0.445*(SUM( mine_h ) ))*235)+ceil(exp(0.445*(SUM( mine_h ) ))*150) ) + (ceil(exp(0.442*(SUM( centrale_s ) ))*165)+ceil(exp(0.442*(SUM( centrale_s ) ))*99) ) + ( ceil(pow(1.8,(SUM( centrale_f ) ))*300)+ceil(pow(1.82,(SUM( centrale_f ) ))*230)) + (ceil(pow(2,(SUM( radar)))*750)+ceil(pow(2,(SUM( radar)))*500)+ceil(pow(2,(SUM( radar)))*50)) + (ceil(pow(2,(SUM( labo)))*200)+ceil(pow(2,(SUM( labo)))*150)) + (ceil(pow(2,(SUM(chantier_terrestre)))*520)+ceil(pow(2,(SUM(chantier_terrestre)))*380)) + (ceil(pow(2,(SUM(chantier_spatial)))*600)+ceil(pow(2,(SUM(chantier_spatial)))*450)) + (ceil(pow(2,(SUM(caserne)))*200)+ceil(pow(2,(SUM(caserne)))*100)) + (ceil(pow(2,(SUM(silo)))*400)+ceil(pow(2,(SUM(silo)))*260))+ (ceil(pow(1.7,(SUM(centre_info)))*600)+ceil(pow(1.7,(SUM(centre_info)))*420)+ceil(pow(1.7,(SUM(centre_info)))*100)) )/100000 - ) + - (SUM(soldat1 ) + SUM( soldat2 ) + SUM( soldat3 ) + SUM( soldat4 ) + SUM( sniper ) + SUM( spartam ) + SUM( medecin ) + SUM( ingenieur) + SUM( soldat_lourd ) + SUM( vaisseau_1 ) + SUM( vaisseau_2 ) + SUM( vaisseau_3 ) + SUM( vaisseau_4 ) + SUM(vaisseau_4 ) + SUM(vaisseau_6 ) + SUM( vaisseau_7 ) + SUM( vaisseau_8) + SUM( vaisseau_9 ) + SUM( vaisseau_10 ) + SUM( vaisseau_11 ) + SUM( vaisseau_12 ) + SUM(vais_0 ) + SUM(vais_1 ) + SUM( vais_2 ) + SUM( vais_3) + SUM( vcl_1 ) + SUM( vcl_2 ) + SUM( vcl_3 ) + SUM( vcl_4) - ) + -( - SUM( informatique ) + SUM( detection ) + SUM( armement ) + SUM( energie_t ) + SUM( reacteur ) + SUM( reacteur_f ) + SUM( reacteur_ff ) + SUM( medecine ) + SUM( tactique ) + SUM( spartan ) + SUM( blindage ) -) AS points_pts - - FROM user,planete - WHERE id_user=user.id AND planete.id_user=$id - GROUP BY user.id - ORDER BY points_pts DESC"); - - $resultat = mysql_fetch_array($query); - return $resultat['points_pts']; -} - -function pillage($metal, $cristal, $hydrogene, $vfm){ - $Qm = $metal / $vfm; - $Qc = $cristal / $vfm; - $Qh = $hydrogene / $vfm; - - $somme = $Qm + $Qc + $Qh; - - if ($somme < 2) { - $Fm = $metal / 2; - $Fc = $cristal / 2; - $Fh = $hydrogene / 2; - } - else { - $Fm = $Qm / $somme * $vfm; - $Fc = $Qc / $somme * $vfm; - $Fh = $Qh / $somme * $vfm; - } - - return array(floor($Fm), floor($Fc), floor($Fh)); -} - -function affTemp($secondes){ - $heures = intval($secondes/3600); - $minutes = intval($secondes/60-($heures*60)); - if ($minutes < 10) $minutes = '0'.$minutes; - $seconde = $secondes-($heures*3600)-($minutes*60); - if ($seconde < 10) $seconde = '0'.$seconde; - - return $heures.':'.$minutes.':'.$seconde; -} - -function dateFR($date){ - $date = str_replace('Sun','Dim',$date); - $date = str_replace('Mon','Lun',$date); - $date = str_replace('Tue','Mar',$date); - $date = str_replace('Wed','Mer',$date); - $date = str_replace('Thu','Jeu',$date); - $date = str_replace('Fri','Ven',$date); - $date = str_replace('Sat','Sam',$date); - - return $date; -} -?> \ No newline at end of file diff --git a/game/accueil.php b/game/accueil.php new file mode 100644 index 0000000..4483981 --- /dev/null +++ b/game/accueil.php @@ -0,0 +1,36 @@ +unique_query("SELECT COUNT(*) AS nbre FROM `$table` WHERE `destinataire` = '$pseudo' AND `vu` = '1';"); +$template->assign('mail',$queryMail); + +$req = mysql_query("SELECT `galaxie`,`ss`,`position`,`nom_planete` FROM `planete` WHERE `id_user` = '$id_user'"); +$attaquesRadar = array(); +while ($resultat = mysql_fetch_array($req)) { + $end_galaxie = $resultat['galaxie']; + $end_ss = $resultat['ss']; + $end_position = $resultat['position']; + $reqf = mysql_query("SELECT * FROM flottes WHERE `mission` = '1' AND end_galaxie='$end_galaxie' AND end_ss='$end_ss' AND end_position='$end_position'"); + while ($resultatf = mysql_fetch_array($reqf)) { + $start_galaxie = $resultatf['start_galaxie']; + $start_ss = $resultatf['start_ss']; + $start_position = $resultatf['start_position']; + if ($resultatf['start_time'] + $resultatf['end_time'] < time() + $queryUser['detection']*1800) { + $reqp = mysql_query("SELECT nom_planete FROM planete WHERE galaxie='$start_galaxie' AND ss='$start_ss' AND position='$start_position'"); + $resultatp = mysql_fetch_array($reqp); + $attaquesRadar[] = array($resultatp['nom_planete'],affTemp($resultatf['start_time']+$resultatf['end_time']-time()),$resultatf['start_galaxie'],$resultatf['start_ss'],$resultatf['start_position'],$resultat['nom_planete'],$resultatf['end_galaxie'],$resultatf['end_ss'],$resultatf['end_position'],$resultatf['start_time']+$resultatf['end_time']-time()); + } + } +} + +$diametre = separerNombres($queryPlanete['cases'] * 92); +$Classpoints = separerNombres($queryUser['points']); + +$template->assign('attaques',$attaquesRadar); +$template->assign('diametre',$diametre); +$template->assign('points',$Classpoints); +?> \ No newline at end of file diff --git a/game/alliances.php b/game/alliances.php new file mode 100644 index 0000000..819cecc --- /dev/null +++ b/game/alliances.php @@ -0,0 +1,388 @@ +unique_query("SELECT * FROM `$table_alliances` WHERE `id` = '".$queryUser['id_alliance']."';"); + + //On détermine les accès du joueur + if ($alliance['fondateur'] == $queryUser['id']) + $access = array( + 'fondateur' => 1, + 'chat' => 1, + 'grades' => 1, + 'membre' => 1, + 'ecriture' => 1, + 'alliance' => 1 + ); + elseif ($queryUser['id_grade_alliance'] != 0) { + $grade = $chapeau->unique_query("SELECT * FROM `$table_alliances_grade` WHERE `id` = '".$queryUser['id_grade_alliance']."';"); + $access = array( + 'fondateur' => 0, + 'chat' => $grade['gest_chat'], + 'grades' => $grade['gest_rang'], + 'membre' => $grade['gest_membre'], + 'ecriture' => $grade['gest_ecriture'], + 'alliance' => $grade['gest_admin'] + ); + } + else + $access = array( + 'fondateur' => 0, + 'chat' => 0, + 'grades' => 0, + 'membre' => 0, + 'ecriture' => 0, + 'alliance' => 0 + ); + $template->assign('access', $access); + + //Visionnage des pages de l'alliance + if (!isset($_GET['q'])) $_GET['q'] = ''; + //Pages d'administration + if ($_GET['q'] == 'adm_chat' && $access['chat']) { + if (!empty($_GET['i'])) { + $i = floor($_GET['i']); + $chapeau->query("DELETE FROM `$table_alliances_chat` WHERE `id` = '$i' AND `id_alliance` = '".$alliance['id']."';"); + header('Location: ?p=alliances&q=adm_chat#chat'); + exit; + } + $page = 'alliance_adm_chat'; + $chat = $chapeau->query("SELECT * FROM `$table_alliances_chat` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `id` DESC LIMIT 50;"); + for($i = 0; $i < $chapeau->num_rows ; $i++){ + $chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']); + } + $template->assign('chat', $chat); + + } + elseif ($_GET['q'] == 'adm_grades' && $access['membre']) { + if (isset($_GET['a']) && $_GET['a'] = 'add') { + if (!empty($_POST['nom']) && isset($_POST['description'])) { + $nom = mysql_real_escape_string($_POST['nom']); + $description = mysql_real_escape_string($_POST['description']); + + @$chapeau->query("INSERT INTO `$table_alliances_grade` VALUES (NULL, '".$alliance['id']."', '$nom', '$description', '".ceil($_POST['gest_chat'])."', '".ceil($_POST['gest_rang'])."', '".ceil($_POST['gest_membre'])."', '".ceil($_POST['gest_ecriture'])."', '".ceil($_POST['gest_alliance'])."');"); + header('Location: ?p=alliances&q=adm_grades'); + exit; + } + $page = 'alliance_adm_grades_add'; + } + else { + $page = 'alliance_adm_grades'; + $grades = $chapeau->query("SELECT * FROM `$table_alliances_grade` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `nom` ASC;"); + $template->assign('grades', $grades); + } + } + elseif ($_GET['q'] == 'adm_ecrits' && $access['ecriture']) { + if (isset($_GET['t']) && $_GET['t'] == 'presentation') $mod = 'presentation'; + else $mod = 'interne'; + if (!empty($_POST['type']) && isset($_POST['textarea'])) { + $mod = mysql_real_escape_string($_POST['type']); + $chapeau->query("UPDATE `$table_alliances` SET `$mod` = '".mysql_real_escape_string($_POST['textarea'])."' WHERE `id` = '".$alliance['id']."'"); + header('Location: ?p=alliances&q=adm_ecrits&t='.$mod); + exit; + } + $page = 'alliance_adm_ecritures'; + $template->assign('alliance', $alliance); + $template->assign('mod', $mod); + } + elseif ($_GET['q'] == 'adm_alliance' && $access['alliance']) { + $recharg = false; + if (isset($_POST['defcon']) && isset($_POST['defcon_txt']) && isset($_POST['etat_inscription']) && isset($_POST['image']) && isset($_POST['url'])) { + $chapeau->query("UPDATE `$table_alliances` SET `defcon` = '".mysql_real_escape_string($_POST['defcon'])."', `defcon_txt` = '".mysql_real_escape_string($_POST['defcon_txt'])."', `etat_inscription` = '".mysql_real_escape_string($_POST['etat_inscription'])."', `image` = '".mysql_real_escape_string($_POST['image'])."', `url` = '".mysql_real_escape_string($_POST['url'])."' WHERE `id` = '".$alliance['id']."'"); + $recharg = true; + } + if (isset($_POST['fondateur']) && $alliance['fondateur'] == $id_user && isset($_POST['pswd_admin'])) { + if (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin']) && empty($sess->values['forcealli'])) { + $sess->values['forcealli'] = true; + $sess->put(); + $template->assign('message','Êtes-vous sûr de vouloir dissoudre cette alliance ?
    Pour confirmer la dissolution de l\'alliance, rechargez cette page.'); + $template->assign('couleur','orange'); + $template->display('game/erreur.tpl'); + exit; + } + elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] == sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin']) && isset($sess->values['forcealli']) && $sess->values['forcealli']) { + $chapeau->query("DELETE FROM `$table_alliances` WHERE `id` = '".$alliance['id']."';"); + $membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';"); + for($i = 0; $i < $chapeau->num_rows; $i++){ + $chapeau->query("UPDATE `$table_user` SET `id_alliance` = '0', `id_grade_alliance` = '0' WHERE `id` = '".$membres[$i]['id']."' AND `id_alliance` = '".$alliance['id']."';"); + } + $template->assign('message','L\'alliance a été dissoute avec succès.'); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } + elseif (!empty($_POST['pswd_admin']) && $queryUser['mdp'] != sha1(strtoupper($queryUser['pseudo']).':'.$_POST['pswd_admin'])) { + $template->assign('message','Impossible de dissoudre l\'alliance : mot de passe incorrect.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + $chapeau->query("UPDATE `$table_alliances` SET `fondateur` = '".mysql_real_escape_string($_POST['fondateur'])."' WHERE `id` = '".$alliance['id']."'"); + $recharg = true; + } + if ($recharg) { + header('Location: ?p=alliances&q=adm_alliance'); + exit; + } + $page = 'alliance_adm_admin'; + $niveaux = array('Niveau 1', 'Niveau 2', 'Niveau 3', 'Niveau 4', 'Niveau 5'); + $niveauxi = array('1', '2', '3', '4', '5'); + $template->assign('niveaux', $niveaux); + $template->assign('niveauxi', $niveauxi); + $etatinscript = array('Ouvertes', 'Fermées'); + $etatinscripti = array('1', '0'); + $template->assign('etatinscript', $etatinscript); + $template->assign('etatinscripti', $etatinscripti); + $membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';"); + $membre = array(); + $membrei = array(); + for($i = 0; $i < $chapeau->num_rows; $i++){ + $membre[] = $membres[$i]['pseudo']; + $membrei[] = $membres[$i]['id']; + } + $template->assign('membres', $membre); + $template->assign('membresi', $membrei); + $template->assign('alliance', $alliance); + } + elseif ($_GET['q'] == 'adm_membres' && $access['membre']) { + if (!empty($_POST['user']) && isset($_POST['grade'])) { + $user = floor($_POST['user']); + $grade = floor($_POST['grade']); + $chapeau->query("UPDATE `$table_user` SET `id_grade_alliance` = '".$grade."' WHERE `id` = '".$user."' AND `id_alliance` = '".$alliance['id']."';"); + } + elseif (!empty($_GET['u'])) { + $user = floor($_GET['u']); + $chapeau->query("UPDATE `$table_user` SET `id_grade_alliance` = '0', `id_alliance` = '0' WHERE `id` = '".$user."' AND `id_alliance` = '".$alliance['id']."';"); +//TODO Envoyer un message au joueur renvoyé + } + elseif (!empty($_GET['accept'])) { + $user = floor($_GET['accept']); + $verif = $chapeau->unique_query("SELECT * FROM `$table_alliances_attente` WHERE `id_alliance` = '".$alliance['id']."' AND `id_membre` = '$user';"); + if ($verif) { + $chapeau->query("UPDATE `$table_user` SET `id_grade_alliance` = '0', `id_alliance` = '".$alliance['id']."' WHERE `id` = '".$user."' AND `id_alliance` = '0';"); + $chapeau->query("DELETE FROM `$table_alliances_attente` WHERE `id_membre` = '$user';"); +//TODO Envoyer un message au joueur renvoyé + } + } + elseif (!empty($_GET['refus'])) { + $user = floor($_GET['refus']); + $chapeau->query("DELETE FROM `$table_alliances_attente` WHERE `id_membre` = '$user' AND `id_alliance` = '".$alliance['id']."';"); +//TODO Envoyer un message au joueur renvoyé + } + $page = 'alliance_adm_membres'; + $grades = $chapeau->query("SELECT * FROM `$table_alliances_grade` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `nom` ASC;"); + $grade = array(); $gradei = array(); + for($i = 0; $i < $chapeau->num_rows ; $i++){ + $grade[] = $grades[$i]['nom']; + $gradei[] = $grades[$i]['id']; + } + $template->assign('grades', $grade); + $template->assign('gradei', $gradei); + $membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';"); + $template->assign('membres', $membres); + $candidats = $chapeau->query("SELECT * FROM `$table_alliances_attente` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `timestamp` ASC;"); + $template->assign('candidats', $candidats); + $template->assign('alliance', $alliance); + } + elseif ($_GET['q'] == 'liste') { + $page = 'alliance_liste'; + $membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';"); + $template->assign('membres', $membres); + } + elseif ($_GET['q'] == 'chat') { + if (isset($_POST['msg'])) { + $message = mysql_real_escape_string($_POST['msg']); + if (!empty($message)) $chapeau->query("INSERT INTO `$table_alliances_chat` VALUES (NULL, '".$alliance['id']."', '$id_user', '".time()."', '$message')"); + header('Location: ?p=alliances&q=chat#chat'); + exit; + } + $page = 'alliance_chat'; + //Chat + $chat = $chapeau->query("SELECT * FROM `$table_alliances_chat` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `id` DESC LIMIT 30"); + for($i = 0; $i < $chapeau->num_rows ; $i++){ + $chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']); + } + $template->assign('chat', $chat); + } + else { + $page = 'alliance_accueil'; + $template->assign('alliance', $alliance); + $membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';"); + $template->assign('nbmembre', $chapeau->num_rows); + if (!isset($grade)) $template->assign('grade', 0); + else $template->assign('grade', $grade); + + //Chat + $chat = $chapeau->query("SELECT * FROM `$table_alliances_chat` WHERE `id_alliance` = '".$alliance['id']."' ORDER BY `id` DESC LIMIT 30"); + for($i = 0; $i < $chapeau->num_rows ; $i++){ + $chat[$i]['emetteur'] = trouvNom($chat[$i]['emetteur']); + } + $template->assign('chat', $chat); + } +} +//Si le joueur n'est membre d'aucune alliance +else { + if (!isset($_GET['q'])) $_GET['q'] = ''; + if ($_GET['q'] == 'search' && !empty($_POST['by']) && isset($_POST['search'])) { + $page = 'alliance_nm_search'; + + $by = mysql_real_escape_string($_POST['by']); + $search = mysql_real_escape_string($_POST['search']); + + $recherche = $chapeau->query("SELECT * FROM `$table_alliances` WHERE `$by` LIKE '%$search%' ORDER BY `nom` ASC"); + $template->assign('recherches', $recherche); + } + elseif ($_GET['q'] == 'liste' && !empty($_GET['i'])) { + $page = 'alliance_liste'; + $membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".floor($_GET['i'])."';"); + $template->assign('membres', $membres); + } + elseif ($_GET['q'] == 'view' && !empty($_GET['i'])) { + $id = mysql_real_escape_string($_GET['i']); + $alliance = $chapeau->unique_query("SELECT * FROM `$table_alliances` WHERE `id` = '$id';"); + if ($alliance) { + $page = 'alliance_nm_view'; + $template->assign('alliance', $alliance); + $membres = $chapeau->query("SELECT * FROM `$table_user` WHERE `id_alliance` = '".$alliance['id']."';"); + $template->assign('nbmembre', $chapeau->num_rows); + } + else { + $template->assign('message','Impossible de trouver cette alliance !'); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + } + elseif ($_GET['q'] == 'postuler' && !empty($_GET['i'])) { + $id = mysql_real_escape_string($_GET['i']); + $alliance = $chapeau->unique_query("SELECT * FROM `$table_alliances` WHERE `id` = '$id';"); + if (!empty($_POST['message'])) { + $chapeau->query("INSERT INTO `$table_alliances_attente` VALUES (NULL, '".$alliance['id']."', '".$id_user."', '".$queryUser['pseudo']."', '".time()."', '".mysql_real_escape_string($_POST['message'])."');"); + $template->assign('message','Votre candidature a été envoyée avec succès à l\'alliance : '.$alliance['nom']); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } + $template->assign('alliance', $alliance); + $page = 'alliance_nm_postuler'; + } + elseif ($_GET['q'] == 'signer' && !empty($_GET['i'])) { + $lien = mysql_real_escape_string($_GET['i']); + $alliance = $chapeau->unique_query("SELECT * FROM `$table_alliances_creation` WHERE `lien` = '$lien';"); + if ($alliance) { + $signataires = explode(';', $alliance['signatures']); + if ($alliance['fondateur'] == $id_user || in_array($id_user, $signataires)) { + $template->assign('message','Vous avez déjà signé pour cette alliance.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + //Si c'est la 4ème signature, on crée l'alliance + if (count($signataires) >= 3) { + $chapeau->query("INSERT INTO `$table_alliances` VALUES (NULL, '".$alliance['tag']."', '".$alliance['nom']."', '".$alliance['fondateur']."', 'A faire', 'A faire', '', '', 1, 1, '');"); + $chapeau->query("DELETE FROM `$table_alliances_creation` WHERE `lien` = '$lien';"); + + file_log("Création de l'alliance : ".$alliance['nom']." par ".$id_user." (fondateur : ".$alliance['fondateur'].") après validation de 4 signatures : ".implode(', ', $signataires).$id_user); + + //On envoie un message au fondateur de l'alliance + include_once('Class/class.rapport.php'); + $rapport = new Rapport(6, $alliance['fondateur'], 0, time()); + $rapport->send(); + + $nbsign = count($signataires); + for ($i=0 ; $i<$nbsign ; $i++) { + $chapeau->query("UPDATE `$table_user` SET `id_alliance` = '".$alliance['id']."' WHERE `id` = '".$signataires[$i]."'"); + } + $chapeau->query("UPDATE `$table_user` SET `id_alliance` = '".$alliance['id']."' WHERE `id` = '$id_user'"); + + $template->assign('message','Votre signature a bien été ajoutée à la déclaration de l\'alliance.
    L\'alliance a désormais désormais suffisament de signature pour être créée !'); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } + else { + $signataires[] = $id_user; + $signataires = implode(';', $signataires); + $chapeau->query("UPDATE `$table_alliances_creation` SET `signatures` = '$signataires' WHERE `lien` = '$lien'"); + $chapeau->query("UPDATE `$table_user` SET `id_alliance` = 'c".$alliance['id']."' WHERE `id` = '$id_user'"); + $template->assign('message','Votre signature a bien été ajoutée à la déclaration de l\'alliance.'); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } + } + } + else { + $template->assign('message','Impossible de trouver l\'alliance !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + } + elseif ($_GET['q'] == 'fonder') { + if (!empty($_POST['nom']) && !empty($_POST['tag'])) { + $nom = mysql_real_escape_string(htmlentities($_POST['nom'])); + $tag = mysql_real_escape_string(htmlentities($_POST['tag'])); + + if (strlen($nom) < 5) { + $template->assign('message','Le nom d\'alliance que vous avez choisit est trop court.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif (strlen($nom) > 25) { + $template->assign('message','Le nom d\'alliance que vous avez choisit est trop long.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif (strlen($tag) > 5) { + $template->assign('message','Le nom d\'alliance que vous avez choisit est trop long.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif (strlen($tag) < 3) { + $template->assign('message','Le nom d\'alliance que vous avez choisit est trop court.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + + $test = $chapeau->query("SELECT * FROM `alliances` WHERE `nom` = '$nom' AND `tag` = '$tag';"); + $test2 = $chapeau->query("SELECT * FROM `alliances_creation` WHERE `nom` = '$nom' AND `tag` = '$tag';"); + if ($test || $test2) { + $template->assign('message','Le nom ou le tag que vous avez choisit est déjà utilisé par une alliance.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + $lien = sha1($tag.'Hb$'.$nom.'☺Ø'.$id_user.rand()); + $chapeau->query("INSERT INTO `alliances_creation` VALUES(NULL, '$lien' ,'$tag', '$nom', '$id_user', '');"); + + $template->assign('message','Votre alliance a bien été créée.
    Il ne vous reste plus qu\'à trouver au moins 4 signatures pour finir la création de votre alliance.

    Le lien permettant à vos quatres personnes de signer est ?p=alliances&q=signer&i='.$lien.''); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } + } + $page = 'alliance_nm_fonder'; + } + else { + $page = 'alliance_nm_accueil'; + } +} +?> \ No newline at end of file diff --git a/game/arbre.php b/game/arbre.php new file mode 100644 index 0000000..8656a40 --- /dev/null +++ b/game/arbre.php @@ -0,0 +1,56 @@ +assign('defaut',$_GET['q']); + +$TEMP_batiments = array(); +$nb=count($batiment); +for ($id=0 ; $id<$nb ; $id++) { + if (!empty($batiment[$id])) $TEMP_batiments[] = array( + 'url' => 'id='.$id.'&type=batiment&lvl='.$queryPlanete[$batimentVAR[$id]], + 'nom' => $batiment[$id], + 'niveau' => $queryPlanete[$batimentVAR[$id]], + 'etat' => readDeblok($batimentTECH[$id], $queryPlanete, $queryUser) + ); +} +$template->assign('batiments',$TEMP_batiments); + +$TEMP_technologies = array(); +$nb=count($technolo); +for ($id=0 ; $id<$nb ; $id++) { + if (!empty($technolo[$id])) $TEMP_technologies[] = array( + 'url' => 'id='.$id.'&type=technologie&lvl='.$queryUser[$technoloVAR[$id]], + 'nom' => $technolo[$id], + 'niveau' => $queryUser[$technoloVAR[$id]], + 'etat' => readDeblok($technoloTECH[$id], $queryPlanete, $queryUser) + ); +} +$template->assign('technologies',$TEMP_technologies); + +$TEMP_terrestre = array(); +$nb=count($nomterrn); +for ($id=0 ; $id<$nb ; $id++) { + if (!empty($nomterrn[$id])) $TEMP_terrestre[] = array( + 'url' => 'id='.$id.'&type=unite&lvl='.$queryPlanete[$nomterrnVAR[$id]], + 'nom' => $nomterrn[$id], + 'niveau' => $queryPlanete[$nomterrnVAR[$id]], + 'etat' => readDeblok($nomterrnTECH[$id], $queryPlanete, $queryUser) + ); +} +$template->assign('unites',$TEMP_terrestre); + +$TEMP_vaisseaux = array(); +$nb=count($nomvaisn); +for ($id=0 ; $id<$nb ; $id++) { + if (!empty($nomvaisn[$id])) $TEMP_vaisseaux[] = array( + 'url' => 'id='.$id.'&type=unite&lvl='.$queryPlanete[$nomvaisnVAR[$id]], + 'nom' => $nomvaisn[$id], + 'niveau' => $queryPlanete[$nomvaisnVAR[$id]], + 'etat' => readDeblok($nomvaisnTECH[$id], $queryPlanete, $queryUser) + ); +} +$template->assign('vaisseaux',$TEMP_vaisseaux); +?> \ No newline at end of file diff --git a/game/batiments.php b/game/batiments.php new file mode 100644 index 0000000..76a6ae8 --- /dev/null +++ b/game/batiments.php @@ -0,0 +1,120 @@ +limite = $queryUser['prodfile']+2; + } + + //Lancement d'une nouvelle construction + if (isset($_GET['c']) && isset($batiment[$_GET['c']])) { + $i = $_GET['c']; + if(requestDeblok($batimentTECH[$i], $queryPlanete, $queryUser)) { + $n=($queryPlanete[$batimentVAR[$i]]+1); + eval($batimentCALC[$i][0]); $metal -= $a; + eval($batimentCALC[$i][1]); $cristal -= $b; + eval($batimentCALC[$i][2]); $hydrogene -= $c; + if ($caseRest <= 0) { + $template->assign('message','Vous n\'avez plus de place sur votre planète.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + if ($metal < 0 || $cristal < 0 || $hydrogene < 0) { + $template->assign('message','Vous n\'avez pas assez de ressources pour effectuer cette construction.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + eval($batimentCALC[$i][3]); + if ($file->addObjet($i, 1, ceil($sec))) { + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_bat` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';"); + } + else { + $template->assign('message','Vous ne pouvez pas mettre plus de batiments en file d\'attente.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + header('Location: ?p=batiments'); + exit; + } + } + //Annulation d'une nouvelle construction + if (isset($_GET['a']) && isset($batiment[$_GET['a']])) { + $i = $_GET['a']; + if($file->existe($i)) { + $n=($queryPlanete[$batimentVAR[$i]]+1); + eval($batimentCALC[$i][0]); $metal += $a; + eval($batimentCALC[$i][1]); $cristal += $b; + eval($batimentCALC[$i][2]); $hydrogene += $c; + $file->delobjet($i); + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_bat` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';"); + header('Location: ?p=batiments'); + exit; + } + } + //Règler la production à la châine +/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) { + if($_GET['r']) $file->chaine = false; + else $file->chaine = true; + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_bat` = '$export' WHERE `id` = '$idPlan';"); + header('Location: ?p=batiments'); + exit; + }*/ + + for ($i=0 ; $i<$nbstop ; $i++) { + $tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; $enFile = false; + $nom_bdd = $batimentVAR[$i]; + if ($queryPlanete[$nom_bdd] > 0) $niveau = $queryPlanete[$nom_bdd]; else $niveau = 0; + $n=($queryPlanete[$nom_bdd]+1); eval($batimentCALC[$i][0]); eval($batimentCALC[$i][1]); eval($batimentCALC[$i][2]); eval($batimentCALC[$i][3]); + if ($file->existe($i)) $enFile = true; + if (!empty($batiment[$i]) && requestDeblok($batimentTECH[$i], $queryPlanete, $queryUser)) $TEMP_batiments[] = + array( + 'image' => $batimeni[$i], + 'nom' => $batiment[$i], + 'niveau' => $niveau, + 'description' => $batimede[$i], + 'descriptione' => addslashes($batimede[$i]), + 'nec_metal' => $a, + 'nec_cristal' => $b, + 'nec_hydrogene' => $c, + 'nec_metalS' => separerNombres($a), + 'nec_cristalS' => separerNombres($b), + 'nec_hydrogeneS' => separerNombres($c), + 'temps' => sec($sec), + 'num' => $i, + 'enfile' => $enFile, + 'maq_metal' => ceil($a-$metal), + 'maq_cristal' => ceil($b-$cristal), + 'maq_hydrogene' => ceil($c-$hydrogene) + ); + } + $template->assign('batiments',$TEMP_batiments); + $template->assign('chaine',$file->chaine); + $fileBat = $file->file; + $nbfile = count($fileBat); + + if ($nbfile == 1) $template->assign('Pchaine',true); + else $template->assign('Pchaine',false); + if ($nbfile == 0) $template->assign('Vchaine',true); + else $template->assign('Vchaine',false); + + for ($i=0 ; $i<$nbfile ; $i++) { + $fileBat[$i][3] = $batiment[$fileBat[$i][0]]; + if ($i == 0) $fileBat[$i][2] -= time() - $file->timestamp; + } + $template->assign('file',$fileBat); +?> \ No newline at end of file diff --git a/game/bugs.php b/game/bugs.php new file mode 100644 index 0000000..b4e8c94 --- /dev/null +++ b/game/bugs.php @@ -0,0 +1,23 @@ +query("INSERT INTO `bug` VALUES(NULL, '".$queryUser['pseudo']."', '".time()."', '$pages', '$description');"); + header('Location: ?p=bugs'); +} +elseif (isset($_GET['a']) && $_GET['a'] == 'del' && isset($_GET['i']) && $sess->values['auth_level'] > 2) { + $chapeau->query("DELETE FROM `bug` WHERE `id` = '".$_GET['i']."' LIMIT 1"); + header('Location: ?p=bugs'); +} + +$result = mysql_query("SELECT * FROM `bug` ORDER BY `id` DESC"); +$TEMP_bugs = array(); +while ($data = mysql_fetch_array($result)) { + $TEMP_bugs[] = array(''.$data['pseudo'].'', date("d/m/y", $data['temps']), $data['page'], nl2br($data['description']),$data['id'] ); +} +$template->assign('bugs', $TEMP_bugs); +?> \ No newline at end of file diff --git a/game/carte.php b/game/carte.php new file mode 100644 index 0000000..4662dd6 --- /dev/null +++ b/game/carte.php @@ -0,0 +1,55 @@ + 15) $g = 1; + +if (isset($_GET['ss'])) $s = floor($_GET['ss']); else $s = $queryPlanete['ss']; +if ($s < 1) $s = 1; +if ($s > 300) $s = 300; + +if ($s == 1 && $g > 1) { + $Gmu = $g - 1; + $Smu = 300; +} +elseif ($s == 1) { + $Gmu = 15; + $Smu = 300; +} +else { + $Gmu = $g; + $Smu = $s - 1; +} +if ($s == 300) { + $Gpu = $g + 1; + $Spu = 1; +} +else { + $Gpu = $g; + $Spu = $s + 1; +} + +$TEMP_carte = array(); +for ($i=1; $i<=12; $i++) { + $resultat = mysql_query("SELECT * FROM planete WHERE galaxie='$g' AND ss='$s' AND position='$i'"); + if(mysql_num_rows($resultat)>=1) { + $x = mysql_query("SELECT * FROM planete WHERE galaxie='$g' AND ss='$s'AND position='$i'"); + $d = mysql_fetch_array($x); + + $id_user = $d['id_user']; + $y = mysql_query("SELECT race FROM user WHERE id='$id_user'"); + $e = mysql_fetch_array($y); + if ($e['race'] == 'covenant') $ra='(c)'; + elseif (md5($e['race'] && $auth_level >= 6) == '34c19b21bd4a3dda389e767d32fe9779') $ra='(f)'; + else $ra='(h)'; + + $TEMP_carte[] = array($i, $d['nom_planete'], $d['debris_met'], $d['debris_cri'], $ra, trouvNom($d['id_user']), 'Message'); + } + else $TEMP_carte[] = array($i); +} +$template->assign('carte',$TEMP_carte); +$template->assign('position',array($g, $s, $Gpu, $Spu, $Gmu, $Smu)); +?> \ No newline at end of file diff --git a/game/chantierspatial.php b/game/chantierspatial.php new file mode 100644 index 0000000..ce8e379 --- /dev/null +++ b/game/chantierspatial.php @@ -0,0 +1,129 @@ +limite = $queryUser['prodfile']+2; + } + + if ($queryPlanete['chantier_spatial'] == 0) { + $template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[8])); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + + //Lancement d'une nouvelle construction + if (isset($_GET['v']) && isset($nomvaisn[$_GET['v']]) && !empty($_POST['nombre'])) { + $i = $_GET['v']; + $nbv = floor($_POST['nombre']); + if(requestDeblok($nomvaisnTECH[$i], $queryPlanete, $queryUser) && $nbv > 0) { + $n=($queryPlanete[$nomvaisnVAR[$i]]+1); + $a = $nomvaisnCALC[$i][0]; $metal -= $a * $nbv; + $b = $nomvaisnCALC[$i][1]; $cristal -= $b * $nbv; + $c = $nomvaisnCALC[$i][2]; $hydrogene -= $c * $nbv; + if ($metal < 0 || $cristal < 0 || $hydrogene < 0) { + $template->assign('message','Vous n\'avez pas assez de ressources pour démarrer cette construction.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + eval($nomvaisnCALC[$i][3]); + if ($file->addObjet($i, $nbv, ceil($sec))) { + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_vais` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';"); + } + else { + $template->assign('message','Vous ne pouvez pas mettre plus de vaisseaux en file d\'attente.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + header('Location: ?p=chantierspatial'); + exit; + } + } + //Annulation d'une nouvelle construction + if (isset($_GET['a']) && isset($nomvaisn[$_GET['a']])) { + $i = $_GET['a']; + if (!isset($_GET['n'])) $nbv = 1; + else $nbv = $_GET['n']; + + if($file->existe($i)) { + $n=($queryPlanete[$nomvaisnVAR[$i]]+1); + $a = $nomvaisnCALC[$i][0]; + $b = $nomvaisnCALC[$i][1]; + $c = $nomvaisnCALC[$i][2]; + $nbvr = $file->delobjet($i, $nbv); + + $metal += $a*$nbvr; + $cristal += $b*$nbvr; + $hydrogene += $c*$nbvr; + + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_vais` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';"); + header('Location: ?p=chantierspatial'); + exit; + } + } + //Règler la production à la châine +/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) { + if($_GET['r']) $file->chaine = false; + else $file->chaine = true; + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_vais` = '$export' WHERE `id` = '$idPlan';"); + header('Location: ?p=chantierspatial'); + exit; + }*/ + + for ($i=0 ; $i<$nbstop ; $i++) { + $tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; + $nom_bdd = $nomvaisnVAR[$i]; $a = $nomvaisnCALC[$i][0]; $b = $nomvaisnCALC[$i][1]; $c = $nomvaisnCALC[$i][2]; eval($nomvaisnCALC[$i][3]); + if ($queryPlanete[$nom_bdd] > 0) $nombre = $queryPlanete[$nom_bdd]; else $nombre = 0; + $n=($queryPlanete[$nom_bdd]+1); + if (!empty($nomvaisn[$i]) && requestDeblok($nomvaisnTECH[$i], $queryPlanete, $queryUser)) $TEMP_vaisseaux[] = + array( + 'image' => $nomvaisi[$i], + 'nom' => $nomvaisn[$i], + 'nombre' => $nombre, + 'description' => $nomvaisd[$i], + 'descriptione' => addslashes($nomvaisd[$i]), + 'nec_metal' => $a, + 'nec_cristal' => $b, + 'nec_hydrogene' => $c, + 'nec_metalS' => separerNombres($a), + 'nec_cristalS' => separerNombres($b), + 'nec_hydrogeneS' => separerNombres($c), + 'temps' => sec($sec), + 'num' => $i + ); + } + $template->assign('vaisseaux',$TEMP_vaisseaux); + $template->assign('chaine',$file->chaine); + $fileBat = $file->file; + $nbfile = count($fileBat); + + if ($nbfile == 1) $template->assign('Pchaine',true); + else $template->assign('Pchaine',false); + if ($nbfile == 0) $template->assign('Vchaine',true); + else $template->assign('Vchaine',false); + + for ($i=0 ; $i<$nbfile ; $i++) { + $fileBat[$i][3] = $nomvaisn[$fileBat[$i][0]]; + $fileBat[$i][4] = $fileBat[$i][2]*$fileBat[$i][1]; + if ($i == 0) { + $fileBat[$i][2] -= time() - $file->timestamp; + $fileBat[$i][4] -= time() - $file->timestamp; + } + } + $template->assign('file',$fileBat); +?> \ No newline at end of file diff --git a/game/classement.php b/game/classement.php new file mode 100644 index 0000000..b492b94 --- /dev/null +++ b/game/classement.php @@ -0,0 +1,41 @@ + 0) $pageClassement = $_GET['q']; +else $pageClassement = 1; + if (isset($_GET['e'])) { + if ($_GET['e'] == 'batiment') $export = 'batiments'; + elseif ($_GET['e'] == 'flotte') $export = 'flottes'; + elseif ($_GET['e'] == 'recherches') $export = 'recherches'; + else $export = 'points'; + } + else $export = 'points'; + +$nbppage = 100; +$pageClassementN = ($pageClassement-1) * $nbppage; + +$result = mysql_query("SELECT * FROM `classement`"); +$nbpages = ceil(mysql_num_rows($result)/$nbppage); +if ($pageClassement > $nbpages) $pageClassement = $nbpages; +$TEMP_pages = ''; +$template->assign('q', $TEMP_pages); +$result = mysql_query("SELECT * FROM `classement` ORDER BY `classement`.`$export` DESC LIMIT $pageClassementN, $nbppage"); + +$TEMP_classement = array(); +$i = ($pageClassement-1)*$nbppage; + +$template->assign('export', $export); + +while ($data = mysql_fetch_array($result)) { + $i++; + $TEMP_classement[] = array($i, $data['pseudo'], $data['race'], separerNombres($data[$export])); +} +$template->assign('places', $TEMP_classement); +?> \ No newline at end of file diff --git a/game/conditions.php b/game/conditions.php new file mode 100644 index 0000000..fedec43 --- /dev/null +++ b/game/conditions.php @@ -0,0 +1,159 @@ +assign('contenu',' +

    Conditions générales pour le site Halo-Battle.s-fr.com

    +
    +
    +Halo, Bungie et Microsoft sont des marques et logos déposés par Microsoft Corporation.
    +Tous droits réservés Copyright © 2006-2007
    +halo-battle.s-fr.com Tous droits reservés.
    +
    +Le site d\'halo-battle.s-fr.com demande à tous les utilisateurs du jeu de lire et d\'accepter les Conditions Générales énoncées ci-dessous avant de s\'inscrire.
    +
    +
    +Ces Conditions Générales d\'Utilisation ont été publiées le 23/04/2008 et sont applicables à partir du 30/04/2008.
    +
    +
    +I. Services
    +II. Adhésion
    +III. Protections des données
    +IV. Responsabilité
    +V. Contenu / responsabilité envers le contenu
    +VI. Actions prohibées
    +VII. Restrictions
    +VIII. Droits de société concernant les comptes
    +IX. Modification des Conditions Générales
    +X. Loi applicable
    +
    +

    I. Services


    +

    1 - Conditions de participation


    + +Pour participer à Halo-Battle, l\'utilisateur doit accepter les Conditions Générales. Ces Conditions Générales sont principalement, mais non exclusivement, portées sur les services proposés par la présence en ligne de Halo-Battle.s-fr.com
    + +

    2 - Responsabilité


    + +Halo-Battle.s-fr.com est toujours attentif au bon fonctionnement de toutes les prestations qu\'il propose. Néanmoins, certaines desdites prestations peuvent ne pas être disponibles pour des circonstances indépendantes de notre volonté. Pour cette raison, l\'utilisateur ne peut avoir de halo-battle.s-fr.com ne peut être tenu pour responsable du mauvais fonctionnement du serveur ou pour un défaut de programmation. Les exemples précités ne sont pas exclusifs d\'autres possibilités.
    + +

    II. Adhésion


    + +

    1 - Conditions d\'adhésion


    +L\'adhésion commence à partir de l\'enregistrement d\'un compte sur le jeu ou le forum. L\'adresse e-mail utilisée pour cet enregistrement doit être valide. halo-battle.s-fr.com se réserve le droit de vérifier cette validité à n\'importe quel moment.
    +Les utilisateurs reconnaissent disposer d\'une expérience suffisante en matière d\'utilisation d\'Internet et des fonctionnalités de communication électronique qui y sont liées.
    +Les utilisateurs du site de halo-battle.s-fr.com sont tenus de s\'assurer de la compatibilité de leur logiciel de navigation avec le site de Halo-Battle.s-fr.com.
    + +

    2 - Résiliation par l\'utilisateur


    +L\'adhésion peut être résiliée par l\'utilisateur par le biais de l\'effacement du compte. Cet effacement peut être retardé pour des questions d\'ordre technique. La gestion des informations concernant les données personnelles du compte est relatif au chapitre 3 des conditions générales d\'utilisation.
    + +

    3 - Résiliation par Halo-Battle.s-fr.com


    +L\'utilisateur ne peut participer à la gestion des services proposés par Halo-Battle.s-fr.com. A ce titre, l\'équipe du jeu se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur, en cas de violation des Conditions Générales, sans que cela ne soit exclusif d\'autres possibilités.
    +L\'effacement du compte est décidé par l\'ensemble de l\'équipe. Les quelconques revendications concernant un effacement de compte peuvent être portées auprès de l\'équipe du jeu. Il ne peut y avoir de revendications légales concernant la clotûre du compte.
    + +

    III. Protections des données


    + +

    1 - Droit d\'accès aux données


    +Conformément à la loi du 7 janvier 1978, vous disposez d\'un droit d\'accès, de rectification, de vérification et de suppression relatif aux données vous concernant.
    +Il vous suffit pour ce faire d\'adresser une demande par e-mail à contact@halo-battle.s-fr.com, Halo-Battle.s-fr.com modifiera et mettra ses informations à jour en conséquent.
    + +

    2 - Stockage des données personnelles


    +Halo-Battle.s-fr.com se réserve le droit de stocker les données personnelles des utilisateurs dans le but de contrôler le respect des règles, des Conditions Générales et des dispositions législatives par lesdits utilisateurs. Les données personnelles concernées peuvent être les adresse IP par connexion, la méthode, l\'heure et les durées de connections, l\'adresse e-mail fournie lors de la création du compte ainsi que, le cas échéant, les données personnelles fournies volontairement par l\'utilisateur par le biais de son profil. Sur les forums, les données personnelles des profils des utilisateurs sont conservées.
    + +

    3 - Communication et utilisation des données


    +Halo-Battle.s-fr.com se réserve le droit, en conformité avec les dispositions du droit français concernant la protection des données personnelles et toutes dispositions législatives applicables, de divulguer les données personnelles aux autorités, qui les requièrent en vue de protéger les intérêts des sociétés ou les éventuels manquements aux dispositions légales concernant la protection des données. + +

    4 - Opposition


    +L\'utilisateur peut s\'opposer au stockage de ses données personnelles à tout moment. La participation aux jeux nécessitant le stockage de ces données personnelles, le(s) compte(s) de l\'utilisateur sera(ont) supprimé(s) le plus rapidement possible en fonction des contraintes techniques.
    + +

    IV. Responsabilité


    + +Halo-Battle.s-fr.com n\'est pas responsable pour les dommages, quelle qu\'en soit la gravité, causés par l\'utilisation du jeu Halo-Battle. halo-battle.s-fr.com rappelle aux joueurs que l\'utilisation excessive des jeux informatiques peut causer de sévères troubles physiques.
    + +

    V. Contenu / responsabilité envers le contenu


    + +

    1 - Utilisation de la plateforme des utilisateurs


    +Halo-Battle.s-fr.com fournit une plateforme qui permet à l\'utilisateur de communiquer avec chacun des autres utilisateurs. L\'utilisateur est responsable du contenu de ses propos : les propos pornographiques, xénophobes, insultants ou à contenu illégaux ne sont pas autorisés et relèvent de la responsabilité de leur auteur. En cas de violation, Halo-Battle.s-fr.com se réserve le droit d\'effacer ou de bloquer le compte de l\'utilisateur fautif et de l\'interdire d\'accès sur l\'ensemble des services proposés par l\'équipe. Ces sanctions ne sont pas exclusives d\'éventuelles poursuites judiciaires et/ou pénales.
    + +

    2 - Dommages internes au contenu


    +L\'utilisateur du site est conscient du fait qu\'Internet n\'est pas un média parfaitement protégé et qu\'une sécurité totale quant au respect de la vie privée ne peut être garantie. Par conséquent, halo-battle.s-fr.com ne sera en aucune manière responsable des dommages éventuels subis par l\'utilisateur du site à la suite de l\'introduction par ce dernier d\'informations confidentielles ou délicates.
    + +

    3 - Engagement de Halo-Battle.s-fr.com


    +halo-battle.s-fr.com s\'engage à mettre en oeuvre tous les moyens raisonnables à sa disposition en vue de permettre aux utilisateurs une utilisation optimale des services proposés. halo-battle.s-fr.com n\'est en conséquence tenue qu\'à une obligation de moyen, et en aucun cas à une obligation de résultat.
    + +halo-battle.s-fr.com ne peut être tenu pour responsable des conséquences de circonstances indépendantes de sa volonté telles que les grèves, lock-out, guerres, intempéries, etc., les défaillances des systèmes informatiques ou des moyens de communication, ou de tout autre événement constitutif d\'un cas de force majeure.
    + +

    4 - Mise à disposition des informations


    +halo-battle.s-fr.com assure la mise à disposition via ce site d\'informations correctes et actualisées et se réserve donc le droit de modifier à tout moment le contenu du site. Toutefois, halo-battle.s-fr.com n\'est en aucun cas responsable des dommages causés à la suite de données éventuellement incorrectes, non actualisées ou incomplètes communiquées via le site.
    + +Les utilisateurs du site de halo-battle.s-fr.com s\'engagent à avertir immédiatement l\'équipe de toute utilisation frauduleuse du site de halo-battle.s-fr.com et à ne pas chercher à nuire à l\'intégrité ou au fonctionnement du site.
    + +

    5 - Liens


    +halo-battle.s-fr.com n\'a aucun pouvoir de vérification et de contrôle quant à la création de liens vers des sites extérieurs et quant au contenu des dits sites, que ces sites soient marchands ou non.
    + +Les propriétaires des sites consultés à partir du site de Halo-Battle.s-fr.com sont, notamment, seuls responsables du respect de l\'ensemble des réglementations s\'appliquant dans le cadre des prestations offertes en ligne, et notamment, des lois et règlements relatifs à la vente à distance, la protection du consommateur, la publicité mensongère ou trompeuse, les prix, la conformité des produits, etc.
    + +Aussi, l\'utilisateur accepte que son choix d\'accéder à un autre site, par l\'intermédiaire d\'un lien hypertexte s\'effectue à ses risques et périls.
    + +En conséquence, tout préjudice direct ou indirect résultant de l\'accès à un site relié par un lien hypertexte ne peut engager la responsabilité de Halo-Battle.s-fr.com
    + +

    VI. Actions prohibées


    + +

    1 - Actions de manipulations


    +L\'utilisateur n\'a le droit d\'utiliser, un quelconque programme, mécanisme ou logiciel qui pourrait interférer avec les fonctions et/ou le développement du jeu. L\'utilisateur n\'a pas de le droit d\'effectuer une quelconque action qui causerait un ralentissement excessif des capacités techniques du site. L\'utilisateur n\'a pas le droit de bloquer, modifier ou reformuler le contenu créé par l\'équipe de dévellopement du projet.
    + +

    2 - Programmes prohibés


    +Il est interdit de visualiser une quelconque partie du jeu avec un autre programme que les navigateurs Internet prévus à cet effet. Sont visés, tous autres programmes, en particulier ceux connus sous la dénomination de bots (sans que cette appellation soit exclusive), ainsi que tous +outils permettant de simuler, remplacer ou de suppléer le navigateur +internet. De la même manière, sont visés les scripts et les programmes +partiellement ou totalement automatiques qui peuvent procurer un +avantage par rapport aux autres utilisateurs. Les fonctions de +rafraîchissement automatique ("auto-refresh") et autres mécanismes +intégrés dans les navigateurs Internet sont également visés en tant +qu\'actions automatiques. L\'intégralité de ces mécanismes, sans que cela +soit exclusif d\'autres possibilités, est interdit. Le fait de bloquer la +publicité soit intentionnellement soit par le biais d\'un bloqueur de +pop-up voire par le biais d\'un module intégré aux navigateurs Internet +est sans conséquence sur cette interdiction. Les seules exceptions +possibles nécessitent la permission expresse de l\'équipe de Halo-Battle.s-fr.com
    + +

    4 - Connexion directe


    +La connexion au compte de l\'utilisateur est uniquement permise par le +biais de la page d\'accueil du jeu. L\'ouverture automatique ou +automatisée, est interdite, que la page d\'accueil soit affichée ou non.
    + +

    VII. Restrictions


    + +

    1 - Nombre maximum de comptes


    +Chaque utilisateur n\'est autorisé qu\'à utiliser un compte par univers. +Sont dénommés "Multis" les utilisateurs qui n\'agissent pas en accord +avec cette règle. Les "Multis" sont susceptibles de voir leurs comptes +effacés ou bloqués sans avertissement préalable.
    + +

    2 - Règles


    +Les particularités sont visées par les règles du jeu. Tous les +utilisateurs sont soumis à ces dispositions.
    + +

    3 - Blocages


    +L\'utilisateur peut être bloqué de manière temporaire ou définitive. Le +blocage peut être valable sur une partie ou la totalité des services +proposés par Halo-Battle.s-fr.com
    + +

    VIII. Droits de société concernant les comptes


    + +

    1 - Généralités


    +L\'ensemble des comptes, incluant les ressources, unités, etc, sont des objets virtuels du jeu. L\'utilisateur n\'a pas la propriété ou tout autre type de droits sur le compte. L\'ensemble des droits sont de la propriété de Bungie et Microsoft Corporation. Aucun droit, en particulier ceux concernant l\'exploitation, ne peut être conféré à l\'utilisateur.
    + +

    2 - Interdiction d\'exploitation


    +Il est interdit de contracter avec une tierce partie un quelconque accord concernant le transfert, l\'utilisation ou le stockage des comptes ou des données personnelles. Il est particulièrement interdit de vendre les comptes ou les ressources, voire de faire un quelconque profit en quittant son compte ou ses ressources au profit d\'un tiers. Les mêmes interdictions sont valables pour les données personnelles et les droits d\'utilisation. La violation de ces règles ou de tout autre droit de Bungie et Microsoft Corporation, particulièrement celles concernant le copyright, sera transmise aux autorités et sanctionnée par des poursuites judiciaires et/ou pénales.
    + +

    3 - Exceptions


    +Il est permis de transférer les comptes de manière gratuite, ainsi que d\'échanger des ressources dans les limites permises par les règles du jeu.
    + +

    IX. Modification des Conditions Générales


    + +Halo-Battle.s-fr.com se réserve le droit de modifier ou d\'étendre les Conditions Générales et les autres dispositions à tout moment. Cette modification ou extension sera publiée au minimum deux semaines avant l\'effectivité des changements.
    + +

    X. Loi applicable


    +La législation française est appliquée en cas de recours légal.
    +
    '); +?> \ No newline at end of file diff --git a/game/defenses.php b/game/defenses.php new file mode 100644 index 0000000..e01afc8 --- /dev/null +++ b/game/defenses.php @@ -0,0 +1,130 @@ +limite = $queryUser['prodfile']+2; + } + + if ($queryPlanete['chantier_terrestre'] == 0) { + $template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[7])); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + + //Lancement d'une nouvelle construction + if (isset($_GET['v']) && isset($nomterrn[$_GET['v']]) && !empty($_POST['nombre'])) { + $i = $_GET['v']; + $nbv = floor($_POST['nombre']); + if(requestDeblok($nomterrnTECH[$i], $queryPlanete, $queryUser) && $nbv > 0) { + $n=($queryPlanete[$nomterrnVAR[$i]]+1); + $a = $nomterrnCALC[$i][0]; $metal -= $a * $nbv; + $b = $nomterrnCALC[$i][1]; $cristal -= $b * $nbv; + $c = $nomterrnCALC[$i][2]; $hydrogene -= $c * $nbv; + if ($metal < 0 || $cristal < 0 || $hydrogene < 0) { + $template->assign('message','Vous n\'avez pas assez de ressources pour démarrer cette construction.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + eval($nomterrnCALC[$i][3]); + if ($file->addObjet($i, $nbv, ceil($sec))) { + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_ter` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';"); + } + else { + $template->assign('message','Vous ne pouvez pas mettre plus de défenses en file d\'attente.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + header('Location: ?p=defenses'); + exit; + } + } + //Annulation d'une nouvelle construction + if (isset($_GET['a']) && isset($nomterrn[$_GET['a']])) { + $i = $_GET['a']; + if (!isset($_GET['n'])) $nbv = 1; + else $nbv = $_GET['n']; + + if($file->existe($i)) { + $n=($queryPlanete[$nomterrnVAR[$i]]+1); + $a = $nomterrnCALC[$i][0]; + $b = $nomterrnCALC[$i][1]; + $c = $nomterrnCALC[$i][2]; + $nbvr = $file->delobjet($i, $nbv); + + $metal += $a*$nbvr; + $cristal += $b*$nbvr; + $hydrogene += $c*$nbvr; + + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_ter` = '$export', `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id` = '$idPlan';"); + header('Location: ?p=defenses'); + exit; + } + } + //Règler la production à la châine +/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) { + if($_GET['r']) $file->chaine = false; + else $file->chaine = true; + $export = mysql_real_escape_string(serialize($file)); + mysql_query("UPDATE `planete` SET `file_ter` = '$export' WHERE `id` = '$idPlan';"); + header('Location: ?p=defenses'); + exit; + }*/ + + for ($i=8 ; $i<$nbstop ; $i++) { + $tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; + $nom_bdd = $nomterrnVAR[$i]; $a = $nomterrnCALC[$i][0]; $b = $nomterrnCALC[$i][1]; $c = $nomterrnCALC[$i][2]; eval($nomterrnCALC[$i][3]); + if ($queryPlanete[$nom_bdd] > 0) $nombre = $queryPlanete[$nom_bdd]; else $nombre = 0; + $n=($queryPlanete[$nom_bdd]+1); + if (!empty($nomterrn[$i]) && requestDeblok($nomterrnTECH[$i], $queryPlanete, $queryUser)) $TEMP_defenses[] = + array( + 'image' => $nomterri[$i], + 'nom' => $nomterrn[$i], + 'nombre' => $nombre, + 'description' => $nomterde[$i], + 'descriptione' => addslashes($nomterde[$i]), + 'nec_metal' => $a, + 'nec_cristal' => $b, + 'nec_hydrogene' => $c, + 'nec_metalS' => separerNombres($a), + 'nec_cristalS' => separerNombres($b), + 'nec_hydrogeneS' => separerNombres($c), + 'temps' => sec($sec), + 'num' => $i + ); + } + $template->assign('defenses',$TEMP_defenses); + $template->assign('chaine',$file->chaine); + $fileBat = $file->file; + $nbfile = count($fileBat); + + if ($nbfile == 1) $template->assign('Pchaine',true); + else $template->assign('Pchaine',false); + if ($nbfile == 0) $template->assign('Vchaine',true); + else $template->assign('Vchaine',false); + + for ($i=0 ; $i<$nbfile ; $i++) { + $fileBat[$i][3] = $nomterrn[$fileBat[$i][0]]; + $fileBat[$i][4] = $fileBat[$i][2]*$fileBat[$i][1]; + if ($i == 0) { + $fileBat[$i][2] -= time() - $file->timestamp; + $fileBat[$i][4] -= time() - $file->timestamp; + } + } + $template->assign('file',$fileBat); +?> \ No newline at end of file diff --git a/game/envoyer.php b/game/envoyer.php new file mode 100644 index 0000000..986aeca --- /dev/null +++ b/game/envoyer.php @@ -0,0 +1,29 @@ +unique_query("SELECT `pseudo` FROM `user` WHERE `pseudo` = '$util'")) { + $message = mysql_real_escape_string(htmlspecialchars($_POST['message'])); + $objet = mysql_real_escape_string(htmlspecialchars($_POST['objet'])); + mysql_query("INSERT INTO mail VALUES('', '1', '$util', '".$queryUser["pseudo"]."', '$objet', '$message', '".time()."')"); + + $template->assign('message','Votre message a été envoyé avec succès.'); + $template->assign('script',''); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } + else { + $template->assign('message','Impossible de trouver le destinataire du message.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } +} + +if (isset($_GET['d'])) $template->assign('destinataire',$_GET['d']); +?> \ No newline at end of file diff --git a/game/flotte.php b/game/flotte.php new file mode 100644 index 0000000..38a01aa --- /dev/null +++ b/game/flotte.php @@ -0,0 +1,393 @@ +query("SELECT * FROM `$table` WHERE `id_user` = '$id_user'"); + $nbr = $chapeau->num_rows; + + $end_galaxie = floor($_POST['amas']); + $end_ss = floor($_POST['ss']); + $end_pos = floor($_POST['pos']); + $mission = floor($_POST['mission']); + + //Vérification du code anti-bots + if ($_POST['cds'] != $sess->values['flcds']) { + $template->assign('message','Impossible d\'authentifier l\'envoie de la flotte.
    Si le problème perciste, contactez un administrateur.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //Si la mission est d'attaquer, on vérifie que les attaques ne soient pas désactivées + elseif ($_POST['mission'] == 1 && !ATTAQUES) { + $template->assign('message','Les attaques sont désactivées pour le moment. Pour plus d\'informations, consultez le forum.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //Vérification que la destination ne soit pas en dehors de la galaxie + elseif ($end_galaxie > MAX_AMAS || $end_ss > MAX_SYSTEME || $end_pos > MAX_PLANETE || $end_galaxie < 0 || $end_ss < 1 || $end_pos < 1 || ($end_galaxie < 1 && $sess->values['auth_level'] < 6)) { + $template->assign('message','La destination de la flotte n\'est pas correcte.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //Vérification que le nombre de slots ne soit pas dépassé + elseif ($nbr + 1 > $queryUser['informatique']) { + $template->assign('message','Vous n\'avez pas assez de slots disponibles.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //On vérifie la mission + elseif ($mission < 1 || $mission > 5) { + $template->assign('message','Mission incorrecte !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //Si la mission est d'attaquer, on vérifie la tactique + elseif ($mission == 1 && $_POST['tactique'] > $queryUser['tactique']) { + $template->assign('message','Vous ne connaissez pas cette tactique de combat !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //On vérifie la mission, si elle est d'espionner, il faut qu'il y ait des sondes + elseif ($mission == 5 && (!isset($sess->values['vais'][4]) || $sess->values['vais'][4] < 0)) { + $template->assign('message','Vous ne pouvez pas espionner sans sonde d\'espionnage !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //On vérifie la mission, si elle est de coloniser, il faut qu'il y ait des vaisseaux de colonisation + elseif ($mission == 3 && (!isset($sess->values['vais'][3]) || $sess->values['vais'][3] < 0)) { + $template->assign('message','Vous ne pouvez pas coloniser sans vaisseau de colonisation !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //On vérifie la mission, si elle est de recycler, il faut qu'il y ait des reclycleurs + elseif ($mission == 4 && (!isset($sess->values['vais'][5]) || $sess->values['vais'][5] < 0)) { + $template->assign('message','Vous ne pouvez pas coloniser sans vaisseau de colonisation !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //On vérifie que l'on possède assez de ressources + elseif ((!empty($_POST['metal']) && !$_POST['metal'] > $queryPlanete['metal']) || (!empty($_POST['cristal']) && !$_POST['cristal'] > $queryPlanete['cristal']) || (!empty($_POST['hydrogene']) && !$_POST['hydrogene'] > $queryPlanete['hydrogene'])) { + $template->assign('message','Vous ne pouvez pas envoyer plus de ressources que vous n\'en posséder.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + //On vérifie la vitesse du vaisseau + elseif (!is_numeric($_POST['vitesse']) || $_POST['vitesse'] < 0 || $_POST['vitesse'] > 100) { + $template->assign('message','La vitesse de votre flotte est incorrecte !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + $table = $config['db_prefix'].'planete'; + $resultat = $chapeau->unique_query("SELECT * FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_pos';"); + //Si la mission est d'attaquer, on vérifie que le joueur cible ne soit pas ne mode vacances + if ($mission == 1) { + //Récupération de l'ID du joueur cible + $rech_user = $resultat['id_user']; + $table = $config['db_prefix'].'user'; + $resultatu = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id` = '$rech_user';"); + if ($resultatu['mv'] != 0) { + $template->assign('message','Le joueur que vous tentez d\'attaquer est actuellement en mode vacances, vous ne pouvez donc pas l\'attaquer avant son retour de vacances.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif ($resultatu['time_inscription'] + 604800 > time()) { + $template->assign('message','Le joueur que vous tentez d\'attaquer s\'est inscrit récemment, laissez-lui le temps de se préparer au combat !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif (!$resultat) { + $template->assign('message','La planète que vous tentez d\'attaquer est inhabitée.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif ($resultat['id_user'] == $id_user) { + $template->assign('message','La planète que vous tentez d\'attaquer vous appartient.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + } + elseif ($mission == 2 && !$resultat) { + $template->assign('message','Impossible de transporter des ressources vers la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'] car elle est inhabitée.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif ($mission == 3 && $resultat) { + $template->assign('message','La planète que vous voulez coloniser est déjà habitée.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif ($mission == 4 && ($resultat['debris_met'] <= 0 || $resultat['debris_cri'] <= 0) && empty($sess->values['forceFlotte'])) { + $sess->values['forceFlotte'] = true; + $sess->put(); + $template->assign('message','Il n\'y a rien à recycler sur la planète ['.$end_galaxie.':'.$end_ss.':'.$end_pos.'].
    Vous pouvez forcer le lancement de la flotte en rechargeant cette page.'); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + + //Création de la flotte + $req = ''; + $reqb = ''; + $reqPlan = ''; + $nbVais = ''; + $nbI = count($nomvaisa); + for ($i=1 ; $i<=$nbI ; $i++) { + if (!empty($sess->values['vais'][$i])) { + if ($sess->values['vais'][$i] > $queryPlanete['vaisseau_'.$i]) { + $template->assign('message','Vous avez envoyé plus de vaisseaux que vous n\'en posséder sur cette planète.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + $req .= "'".$sess->values['vais'][$i]."', "; + $reqb .= "`vaisseau_$i`, "; + if (!empty($reqPlan)) $reqPlan .= ', '; + $reqPlan .= "`vaisseau_$i` = `vaisseau_$i` - '".$sess->values['vais'][$i]."'"; + $nbVais += $sess->values['vais'][$i]; + } + } + } + if ($nbVais <= 0) { + $template->assign('message','Vous devez envoyer au moins un vaisseau pour former une flotte !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + elseif ($sess->values['flnbvais'] != $nbVais) { + $template->assign('message','Une erreur est survenue lors de la création de la flotte :

    Calcul du nombre de vaisseaux incorrect !

    Si le problème perciste, contactez un administrateur.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + //Envoie de la flotte + $nom = mysql_real_escape_string(htmlentities($_POST['nomflotte'])); + + $start_time = time(); + $start_galaxie = $queryPlanete['galaxie']; + $start_ss = $queryPlanete['ss']; + $start_pos = $queryPlanete['position']; + + $vitesse = floor($_POST['vitesse'])/100; + + $end_time = vais_tempsDeplacement($start_galaxie, $start_ss, $start_pos, $end_galaxie, $end_ss, $end_pos, $sess->values['flvitesse'], $vitesse, $sess->values['flpreparation'], $sess->values['flchauffe']); + if ($end_time <= 0) { + $end_time = 454; + } + + //On vérifie qu'il y a assez de place dans les cales des vaisseaux avant l'envoie + $conso = vais_conso($end_time, $sess->values['flnbvais'])*$vitesse*10; + $contenu_metal = $_POST['metal']; $plan_metal = $queryPlanete['metal'] - $_POST['metal']; + $contenu_cristal = $_POST['cristal']; $plan_cristal = $queryPlanete['cristal'] - $_POST['cristal']; + $contenu_hydrogene = $_POST['hydrogene']; $plan_hydrogene = $queryPlanete['hydrogene'] - $_POST['hydrogene'] - $conso; + $contenu_max = $sess->values['flcontenu']; + if ($contenu_metal + $contenu_cristal + $contenu_hydrogene + $conso > $contenu_max && ($contenu_metal + $contenu_cristal + $contenu_hydrogene != 0 || $mission != 5)) { + $template->assign('message','Vous ne pouvez pas embarquer autant de ressources, les cales débordent.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + if ($mission == 1) { + $tactiqueAT = $_POST['tactique']; + $tactiqueEN = $resultatu['tactique']; + } + else { + $tactiqueAT = 0; + $tactiqueEN = 0; + } + + $table = $config['db_prefix'].'flottes'; + $chapeau->query("INSERT INTO `$table` (`id_user`, `mission`, `start_time`, `start_galaxie`, `start_ss`, `start_position`, `end_time`, `end_galaxie`, `end_ss`, `end_position`, `vitesse`, `contenu_metal`, `contenu_cristal`, `contenu_hydrogene`, `contenu_max`, `nb_vais`, $reqb`tactiqueAT`, `tactiqueEN`, `nom`) VALUES ('$id_user', '$mission', '$start_time', '$start_galaxie', '$start_ss', '$start_pos', '$end_time', '$end_galaxie', '$end_ss', '$end_pos', '$vitesse', '$contenu_metal', '$contenu_cristal', '$contenu_hydrogene', '$contenu_max', '$nbVais', $req'$tactiqueAT', '$tactiqueEN', '$nom');"); + $table = $config['db_prefix'].'planete'; + $chapeau->query("UPDATE `$table` SET $reqPlan, `metal` = '$plan_metal', `cristal` = '$plan_cristal', `hydrogene` = '$plan_hydrogene' WHERE `id` = '$idPlan' LIMIT 1 ;"); + + unset($sess->values['vais']); + $sess->put(); + + $template->assign('message','Votre flotte a été envoyée avec succès.'); + $template->assign('couleur','green'); + $template->assign('script',''); + $template->display('game/erreur.tpl'); + exit; + } + } + } +} +elseif (!empty($_POST['v1']) || !empty($_POST['v2']) || !empty($_POST['v3']) || !empty($_POST['v4']) || !empty($_POST['v5']) || !empty($_POST['v6']) || !empty($_POST['v7']) || !empty($_POST['v8']) || !empty($_POST['v9']) || !empty($_POST['v10']) || !empty($_POST['v11']) || !empty($_POST['v12'])) { + $nombreVaisseau = 0; + for ($i=1 ; $i<=12 ; $i++) { + if (!isset($_POST['v'.$i]) || !is_numeric($_POST['v'.$i]) || $_POST['v'.$i] != abs(floor($_POST['v'.$i]))) $_POST['v'.$i] = 0; + if ($_POST['v'.$i] >= 0 && $i != 11) { + $sess->values['vais'][$i] = $_POST['v'.$i]; + $nombreVaisseau += $_POST['v'.$i]; + //Si on indique un nombre de vaisseaux supérieur au nombre présent sur la planète + if ($_POST['v'.$i] > $queryPlanete['vaisseau_'.$i]) { + $template->assign('message','Il ne vous reste plus assez de vaisseaux !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + } + } + $sess->values['flnbvais'] = $nombreVaisseau; + $sess->values['forceFlotte'] = false; + + //On vérifie que l'utilisateur a bien envoyé plus d'un vaisseau + if ($nombreVaisseau <= 0) { + $template->assign('message','Vous devez envoyer au moins un vaisseau.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + + + //On ajoute des missions supplémentaire suivant les vaisseaux envoyés + $lvltactique = $queryUser['tactique']; + $actionsupp = ''; + if ($lvltactique >= 1) $actionsupp .= ''; + if ($_POST['v3'] >= 1) $actionsupp .= ''; + if ($_POST['v5'] >= 1) $actionsupp .= ''; + if ($_POST['v4'] >= 1) $actionsupp .= ''; + $template->assign('actionsupp', $actionsupp); + + // Définition des paramètres de la flotte + $AvaisType = array(); $AvaisVitesseC = array(); $AvaisVitesseL = array(); $AvaisPrepC = array(); $AvaisPrepL = array(); $AvaisChauffe = array(); $AvaisContenu = 0; + for ($i=1 ; $i<=12 ; $i++) { + $AvaisType[] = $i; + $AvaisVitesseC[] = $nomvais_dc[$i-1]; + $AvaisVitesseL[] = $nomvais_dl[$i-1]; + $AvaisContenu += $nomvais_rs[$i-1] * $_POST['v'.$i]; + $AvaisPrepC[] = $nomvais_pdc[$i-1].' '; + $AvaisPrepL[] = $nomvais_pdl[$i-1].' '; + $AvaisChauffe[] = $nomvais_cdl[$i-1].' '; + } + if(min($AvaisVitesseL) != 0) { + $sess->values['flvitesse'] = max($AvaisVitesseL); + $sess->values['flpreparation'] = max($AvaisPrepL); + $sess->values['flchauffe'] = max($AvaisChauffe); + } + else { + $sess->values['flvitesse'] = max($AvaisVitesseC); + $sess->values['flpreparation'] = max($AvaisPrepC); + $sess->values['flchauffe'] = 0; + } + $sess->values['fltime'] = time(); + $sess->values['flcontenu'] = $AvaisContenu; + + //On enregistre les modification de la session + $sess->put(); + + $page = 'flotte2'; + $template->assign('scripth', ''); + $template->assign('script', ''); + +} +elseif (!empty($_GET['n'])) { + $idN = mysql_real_escape_string(ceil($_GET['n'])); + $page = 'flotten'; + $table = $config['db_prefix'].'flottes'; + $resultat = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id_user` = '$id_user' AND `id` = '$idN'"); + if ($chapeau->num_rows <= 0) { + $template->assign('message','Impossible de trouver cette flotte !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + if (!empty($_POST['nomflotte'])) { + $nom = mysql_real_escape_string(htmlentities($_POST['nomflotte'])); + $chapeau->unique_query("UPDATE `$table` SET `nom` = '$nom' WHERE `id` = '$idN' LIMIT 1 ;"); + $resultat['nom'] = $nom; + } + $template->assign('flotte', $resultat); + $template->assign('nomvais', $nomvaisa); + $template->assign('n', $idN); + } +} +else { + $page = 'flotte1'; + $table = $config['db_prefix'].'flottes'; + $resultat = $chapeau->query("SELECT * FROM `$table` WHERE `id_user` = '$id_user'"); + $nbr = $chapeau->num_rows; + $TEMP_flottesEC = array(); + for ($i=0 ; $i<$nbr ; $i++) { + if ($resultat[$i]['mission'] != 1 && ($resultat[$i]['mission'] != 3 || $resultat[$i]['effectue'] == '1' || $resultat[$i]['nb_vais'] >= 1) && $resultat[$i]['mission'] != 0) { + $retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position']; + $Hretour = date('d/m H:i:s',$resultat[$i]['start_time']+2*$resultat[$i]['end_time']); + } + elseif ($resultat[$i]['mission'] == 1) { + $retour = $resultat[$i]['start_galaxie'].':'.$resultat[$i]['start_ss'].':'.$resultat[$i]['start_position']; + if (empty($resultat[$i]['ret_time'])) $Hretour = '-'; + else $Hretour = date('d/m H:i:s',$resultat[$i]['ret_time']+$resultat[$i]['end_time']); + } + else { + $retour = '-'; + $Hretour = '-'; + } + $TEMP_flottesEC[] = array($resultat[$i]['id'], $resultat[$i]['nom'], txtmission($resultat[$i]['mission']), $resultat[$i]['nb_vais'], $resultat[$i]['end_galaxie'].':'.$resultat[$i]['end_ss'].':'.$resultat[$i]['end_position'], date('d/m H:i:s',$resultat[$i]['start_time']+$resultat[$i]['end_time']), $retour, $Hretour); + } + $template->assign('flottesEC', $TEMP_flottesEC); + + $TEMP_vaisseaux = array(); + $j=0; + for ($i=1 ; $i<=12 ; $i++) { + if ($queryPlanete['vaisseau_'.$i] > 0 && $i != 11) { + $j++; + $TEMP_vaisseaux[] = array($nomvaisa[$i-1], separerNombres($queryPlanete['vaisseau_'.$i]), $queryPlanete['vaisseau_'.$i], $i); + } + } + $template->assign('vaisseaux', $TEMP_vaisseaux); + + $trez = $queryUser["informatique"] + 1; + if ($nbr < $trez) $template->assign('action', ''); + else $template->assign('action', 'Nombre de flottes maximum simultaniées atteint'); + + $template->assign('nbflotte', $nbr); + $template->assign('nbflottemax', $trez); +} +?> diff --git a/game/inscription.php b/game/inscription.php new file mode 100644 index 0000000..e419c9f --- /dev/null +++ b/game/inscription.php @@ -0,0 +1,142 @@ +connexion(); + $base->db(); + + $pseudo = mysql_real_escape_string(htmlentities($_POST['HB_pseudo'])); + $mdp = $_POST['HB_mdp']; + $mdpconf = $_POST['HB_conf']; + $mail = mysql_real_escape_string(htmlentities($_POST['HB_mail'])); + if (!isset($_POST['race'])) $_POST['race'] = ''; + $race = mysql_real_escape_string(htmlentities($_POST['race'])); + $server = mysql_real_escape_string(htmlentities($_POST['servers'])); + $captcha = mysql_real_escape_string(htmlentities($_POST['HB_captcha'])); + $placement = mysql_real_escape_string(htmlentities($_POST['HB_placement'])); + if (!isset($_POST['regles'])) $_POST['regles'] = ''; + $regles = htmlentities($_POST['regles']); + + //Vérification relative au pseudo : caractéres utilisés + disponibilité + if (addslashes(preg_replace('@[^a-zA-Z0-9_]@i', '', $pseudo)) != $pseudo || $pseudo == '') { + $inscriptOk = false; + $erreurs .= '

    Le pseudo contient des caractères incorrects.
    Les caractères autorisés sont les lettres minuscules ou majuscules de A à Z sans les accents, ainsi que les chiffres et les caractères . _


    '; + } + else { + $result = mysql_query("SELECT `pseudo` FROM `user_inscriptions` WHERE pseudo = '$pseudo'"); + if(mysql_num_rows($result) >= 1) { + $inscriptOk = false; + $erreurs .= '

    Le pseudo est déjà utilisé par un joueur.
    Vous devez choisir un autre pseudo.


    '; + } + } + + //Vérification du mot de passe : + if ($mdp == '' || $mdp != $mdpconf) { + $inscriptOk = false; + $erreurs .= '

    Mots de passe différents ou ne comportant pas assez de caractères
    Vous devez impérativement choisir un mot de passe pour sécuriser votre compte. Si vous avez spécifié un mot de passe, il se peut que vous n\'ayez pas indiqué le même mot de passe dans la case de confirmation.


    '; + } + + //Vérification relative au mail : caractéres utilisés + disponibilité + if (!preg_match('#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#i', $mail) || empty($mail)) { + $inscriptOk = false; + $erreurs .= '

    L\'adresse électronique n\'est pas valide.
    L\'adresse électronique que vous avez tappé est invalide ou contient des caractères interdits, recommencez.


    '; + } + else { + $result = mysql_query("SELECT mail FROM `user_inscriptions` WHERE mail='$mail'"); + if(mysql_num_rows($result) >= 1) { + $inscriptOk = false; + $erreurs .= '

    L\'adresse électronique que vous avez indiqué est déjà associée à un compte.
    Vous devez choisir une autre adresse électronique.


    '; + } + } + + //Vérification de la race choisie + if ($race != 'covenant' && $race != 'humain') { + $inscriptOk = false; + $erreurs .= '

    Aucune race choisie
    Vous devez choisir la race que vous désirez incarner dans le jeu.


    '; + } + + //Vérification du serveur + if (is_numeric($server) && $server > 1) { + $inscriptOk = false; + $erreurs .= '

    Galaxie incorrecte
    Vous devez choisir une galaxie (un serveur) dans la liste ci-dessous pour pouvoir jouer.


    '; + } + + //Vérification du partenaire + if (!empty($placement)) { + $result = mysql_query("SELECT `pseudo` FROM `user_inscriptions` WHERE pseudo = '$placement'"); + if(mysql_num_rows($result) == 0) { + $inscriptOk = false; + $erreurs .= '

    Impossible de trouver le joueur ami.
    Vous devez choisir un autre pseudo.


    '; + } + } + + //Vérification du captcha + if (empty($sess->values['aleatnbr']) && isset($_SESSION['aleat_nbr'])) { + $sess->values['aleatnbr'] = $_SESSION['aleat_nbr']; + } + if (empty($sess->values['aleatnbr']) || empty($captcha) || $sess->values['aleatnbr'] != strtolower($captcha)) { + $inscriptOk = false; + $erreurs .= '

    Code de vérification incorrect :
    Le texte que vous avez recopier ne correspondait pas au texte de l\'image, veuillez recommencer.


    '; + } + + //Vérification du captcha + if (empty($regles) || $regles != '1') { + $inscriptOk = false; + $erreurs .= '

    Vous devez accepter les conditions générales
    '; + } + + if ($inscriptOk) { + $time = time(); + $ip = $_SERVER["REMOTE_ADDR"]; + + // Activer la ligne suivante pour crypter les mots de passe dans la base de données + $mdp = sha1(strtoupper($pseudo).':'.$mdp); // Cryptage du mot de passe pour éviter le piratage de compte + + $id_activ = sha1('H'.rand().'/|\\'.rand().'B£'); + $Nmail = $mail; + + //On envoie le mail de confirmation + $mail = new PHPmailer(); + $mail->SetLanguage('fr', 'Class/'); + $mail->IsSMTP(); + $mail->IsHTML(true); + $mail->Host='s-fr.com'; + $mail->From='no-reply@halo-battle.s-fr.com'; + $mail->FromName='Halo-Battle'; + $mail->SMTPAuth=true; + $mail->Username='no-reply@halo-battle.s-fr.com'; + $mail->Password='hD3e2nXu'; + + $mail->AddAddress($Nmail); + $mail->AddReplyTo('no-reply@halo-battle.s-fr.com'); + $mail->Subject='Halo-Battle :: Activation de votre compte'; + //$mail->Subject='Halo-Battle :: Pre-Inscription'; + $mail->Body=htmlentities('Halo-Battle :: Activation de votre compte

    Bonjour '.$pseudo.',
    Vous recevez ce mail suite à votre demande d\'inscription sur le jeu Halo-Battle. Pour confirmer votre adresse mail et ainsi pouvoir accéder au jeu, cliquez sur le lien ci-après :
    http://halo-battle.s-fr.com/?p=validation&i='.$id_activ.'

    A bientôt dans Halo-Battle,
    Le staff

    '); + //$mail->Body='Halo-Battle :: Pré-Inscription

    Félicitations '.$pseudo.' !
    Votre compte vient d'être enregistré sur notre serveur. Un mail de confirmation vous sera envoyé lors de la sortie du jeu en ligne Halo-Battle. Si vous ne recevez pas l\'email de confirmation, contactez un administrateur.

    A très bientôt pour la sortie d'Halo-Battle !

    '; + + if(!$mail->Send()){ + $template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !

    '.$mail->ErrorInfo.'

    Si le problème perciste, contactez un administrateur.'); + $template->assign('couleur','red'); + $template->display('cms/erreur.tpl'); + exit; + } + else{ + mysql_query("INSERT INTO `user_inscriptions` (`id_activ`, `pseudo`, `race`, `mdp`, `mail`, `last_ip`, `placement`, `time_inscription`, `last_visite`) VALUES ('$id_activ', '$pseudo', '$race', '$mdp', '$Nmail', '$ip', '$placement', '$time', '$time')") or die ('MYSQLERREUR'.mysql_error()); + $template->assign('message','Félécitations, votre compte vient d\'être créé sur le serveur '.$server.' de Halo-Battle.

    Un courriel de confirmation vient d\'être envoyé à votre adresse électronique afin de valider votre inscription au jeu en ligne Halo-Battle.

    N\'attendez-plus, commencez le combat dès à présent !'); + $template->assign('couleur','green'); + $template->display('cms/erreur.tpl'); + exit; + } + $mail->SmtpClose(); + unset($mail); + } + $base->deconnexion(); +} +$template->assign('erreurs',$erreurs); +?> \ No newline at end of file diff --git a/game/laboratoire.php b/game/laboratoire.php new file mode 100644 index 0000000..d278a5b --- /dev/null +++ b/game/laboratoire.php @@ -0,0 +1,119 @@ +limite = $queryUser['prodfile']+2; + } + + if ($queryPlanete['labo'] == 0) { + $template->assign('message','Vous devez d\'abord construire un '.strtolower($batiment[6])); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + + //Lancement d'une nouvelle construction + if (isset($_GET['t']) && isset($technolo[$_GET['t']])) { + $i = $_GET['t']; + if(requestDeblok($technoloTECH[$i], $queryPlanete, $queryUser)) { + $n=($queryUser[$technoloVAR[$i]]+1); + eval($technoloCALC[$i][0]); $metal -= $a; + eval($technoloCALC[$i][1]); $cristal -= $b; + eval($technoloCALC[$i][2]); $hydrogene -= $c; + if ($metal < 0 || $cristal < 0 || $hydrogene < 0) { + $template->assign('message','Vous n\'avez pas assez de ressources pour effectuer cette recherche.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + eval($technoloCALC[$i][3]); + if ($fileT->addObjet($i, 1, ceil($sec))) { + $export = mysql_real_escape_string(serialize($fileT)); + mysql_query("UPDATE `planete` SET `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene', `file_tech` = '$export' WHERE `id` = '$idPlan';"); + } + else { + $template->assign('message','Vous ne pouvez pas mettre plus de recherche en file d\'attente.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + header('Location: ?p=laboratoire'); + exit; + } + } + //Annulation d'une nouvelle construction + if (isset($_GET['a']) && isset($technolo[$_GET['a']])) { + $i = $_GET['a']; + if($fileT->existe($i)) { + $n=($queryUser[$technoloVAR[$i]]+1); + eval($technoloCALC[$i][0]); $metal += $a; + eval($technoloCALC[$i][1]); $cristal += $b; + eval($technoloCALC[$i][2]); $hydrogene += $c; + $fileT->delobjet($i); + $export = mysql_real_escape_string(serialize($fileT)); + mysql_query("UPDATE `planete` SET `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene', `file_tech` = '$export' WHERE `id` = '$idPlan';"); + header('Location: ?p=laboratoire'); + exit; + } + } + //Règler la production à la châine +/* if (isset($_GET['r']) && ($_GET['r'] == 1 || $_GET['r'] == 0)) { + if($_GET['r']) $fileT->chaine = false; + else $fileT->chaine = true; + $export = mysql_real_escape_string(serialize($fileT)); + mysql_query("UPDATE `planete` SET `file_tech` = '$export' WHERE `id` = '$id_user';"); + header('Location: ?p=laboratoire'); + exit; + }*/ + + for ($i=0 ; $i<$nbstop ; $i++) { + $tr = 0; $a = 0; $b = 0; $c = 0; $sec = 0; + $nom_bdd = $technoloVAR[$i]; + if ($queryUser[$nom_bdd] > 0) $niveau = $queryUser[$nom_bdd]; else $niveau = 0; + $n=($queryUser[$nom_bdd]+1); eval($technoloCALC[$i][0]); eval($technoloCALC[$i][1]); eval($technoloCALC[$i][2]); eval($technoloCALC[$i][3]); + if (!empty($technolo[$i]) && requestDeblok($technoloTECH[$i], $queryPlanete, $queryUser)) $TEMP_recherches[] = + array( + 'image' => $technoli[$i], + 'nom' => $technolo[$i], + 'niveau' => $niveau, + 'description' => $technode[$i], + 'descriptione' => addslashes($technode[$i]), + 'nec_metal' => $a, + 'nec_cristal' => $b, + 'nec_hydrogene' => $c, + 'nec_metalS' => separerNombres($a), + 'nec_cristalS' => separerNombres($b), + 'nec_hydrogeneS' => separerNombres($c), + 'num' => $i, + 'temps' => sec($sec), + 'maq_metal' => ceil($a-$metal), + 'maq_cristal' => ceil($b-$cristal), + 'maq_hydrogene' => ceil($c-$hydrogene) + ); + } + $template->assign('recherches',$TEMP_recherches); + + $template->assign('chaine',$fileT->chaine); + $fileTech = $fileT->file; + $nbfile = count($fileTech); + + if ($nbfile == 1) $template->assign('Pchaine',true); + else $template->assign('Pchaine',false); + if ($nbfile == 0) $template->assign('Vchaine',true); + else $template->assign('Vchaine',false); + + for ($i=0 ; $i<$nbfile ; $i++) { + $fileTech[$i][3] = $technolo[$fileTech[$i][0]]; + if ($i == 0) $fileTech[$i][2] -= time() - $fileT->timestamp; + } + $template->assign('file',$fileTech); +?> \ No newline at end of file diff --git a/game/logout.php b/game/logout.php new file mode 100644 index 0000000..4123c01 --- /dev/null +++ b/game/logout.php @@ -0,0 +1,9 @@ +values['connected'] = FALSE; +$sess->put(); + +header('Location: ./'); +exit; +?> \ No newline at end of file diff --git a/game/messagerie.php b/game/messagerie.php new file mode 100644 index 0000000..e9f5d46 --- /dev/null +++ b/game/messagerie.php @@ -0,0 +1,54 @@ +assign('messages', $TEMP_messages); +$template->assign('IM', $i); + +$result = mysql_query("SELECT * FROM mail WHERE `destinataire` = '".$queryUser["pseudo"]."' AND `expediteur` = '' AND `vu` != 's' ORDER BY id DESC"); +$TEMP_rapport = array(); +$i=0; +while ($data = mysql_fetch_array($result)) { + $i++; + $TEMP_rapport[] = array($data['sujet'], date("d/m/y H:i:s", $data['temps']), 0, bbcode($data['contenu']), $i, $data['id']); +} +$template->assign('rapports', $TEMP_rapport); +$template->assign('IR', $i); +$template->assign('script', ''); + +mysql_query("UPDATE mail SET vu='0' WHERE `destinataire` = '".$queryUser["pseudo"]."' AND `vu` != 's'"); +?> \ No newline at end of file diff --git a/game/njoueur.php b/game/njoueur.php new file mode 100644 index 0000000..34bf242 --- /dev/null +++ b/game/njoueur.php @@ -0,0 +1,175 @@ +connexion(); + $base->db(); + + $pseudo = mysql_real_escape_string($_GET['nom']); + $mdp = mysql_real_escape_string($_GET['mdp']); + $race = mysql_real_escape_string($_GET['race']); + $mail = mysql_real_escape_string($_GET['mail']); + $ti = mysql_real_escape_string($_GET['ti']); + + $base->query("SELECT * FROM `user` WHERE `pseudo` = '$pseudo' ORDER BY `id` DESC;"); + if ($base->num_rows) { + $template->assign('message','Votre compte est déjà créé sur ce serveur !'); + $template->assign('couleur','red'); + $template->display('cms/erreur.tpl'); + exit; + } + + //Création de l'utilisateur + $base->query("INSERT INTO `user` (`pseudo`, `mdp`, `race`, `mail`, `last_ip`, `time_inscription`) VALUES ('$pseudo', '$mdp', '$race', '$mail', '".$_SERVER['REMOTE_ADDR']."', '".time()."');"); + + //Création des bases de la planète + $image = mt_rand(1,15); + $cases = mt_rand(150,250); + $queryUser = $base->query("SELECT * FROM `user` WHERE `pseudo` = '$pseudo' ORDER BY `id` DESC;"); + $id_user = $queryUser[0]['id']; + $time = time(); + + //Recherche d'une planète disponible + if (empty($_GET['placement'])) { + $planete_trouvee = false; + while (!$planete_trouvee) { + $galaxie = mt_rand(1, MAX_AMAS); + $ss = mt_rand(1, MAX_SYSTEME); + $pos = mt_rand(1, MAX_PLANETE); + + //Test pour savoir si la planète est déjà habitée + $base->query("SELECT id FROM `planete` WHERE galaxie='$galaxie' AND ss='$ss' AND position='$pos'"); + if($base->num_rows) $planete_trouvee = false; + else $planete_trouvee = true; + } + + $base->query("INSERT INTO `planete` (`id_user`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`) VALUES ('$id_user', 'Planète mère', '$galaxie', '$ss', '$pos', '$image', '$cases', '$time', '1000', '700')"); + } + else { + $placement_joueur = $base->unique_query("SELECT * FROM `user` WHERE `pseudo` = '".mysql_real_escape_string($_GET["placement"])."'"); + if (!$placement_joueur && !isset($sess->values['forceInscript'])) { + $sess->values['forceInscript'] = true; + $sess->put(); + $template->assign('message','Le joueur à côté duquel vous souhaitez être placé n\'est pas encore ou plus inscrit sur ce serveur.

    Si vous ne souhaitez plus être placé à ses côtés, rechargez la page.'); + $template->assign('couleur','red'); + $template->display('cms/erreur.tpl'); + exit; + } + if (!isset($sess->values['forceInscript'])) { + $placement_planetes = $base->query("SELECT * FROM `planete` WHERE `id_user` = '".$placement_joueur["id"]."'"); + $planete_trouvee = false; + $decale = 0; + while (!$planete_trouvee) { + for($i = 0; $i < $base->num_rows ; $i++){ + $galaxie = $placement_planetes[$i]['galaxie']; + $ss = $placement_planetes[$i]['ss'] + $decale; + if ($ss >= MAX_SYSTEME) break; + for ($j = 1; $j <= MAX_PLANETE ; $j++) { + $base->query("SELECT * FROM `planete` WHERE galaxie='$galaxie' AND ss='$ss' AND position='$j'"); + if(!$base->num_rows) { + $planete_trouvee = true; + $blk_galaxie = $galaxie; + $blk_ss = $ss; + $blk_pos = $j; + break; + } + } + if ($planete_trouvee) break; + } + $decale++; + if ($ss >= MAX_SYSTEME) break; + } + + if (!$planete_trouvee) $impplac = true; + } + + if (!$planete_trouvee || ($planete_trouvee && !empty($sess->values['forceInscript']))) { + while (!$planete_trouvee) { + $blk_galaxie = mt_rand(1, MAX_AMAS); + $blk_ss = mt_rand(1, MAX_SYSTEME); + $blk_pos = mt_rand(1, MAX_PLANETE); + + //Test pour savoir si la planète est déjà habitée + $base->query("SELECT id FROM `planete` WHERE galaxie='$blk_galaxie' AND ss='$blk_ss' AND position='$blk_pos'"); + if($base->num_rows) $planete_trouvee = false; + else $planete_trouvee = true; + } + } + $base->query("INSERT INTO `planete` (`id_user`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`) VALUES ('$id_user', 'Planète mère', '$blk_galaxie', '$blk_ss', '$blk_pos', '$image', '$cases', '$time', '1000', '700')"); + } + $base->deconnexion(); + + if (!empty($impplac)) { + $template->assign('message','Impossible de trouver une planète proche du joueur près duquel vous vouliez être placé.
    Vous avez été placé aléatoirement.'); + $template->assign('couleur','red'); + $template->display('cms/erreur.tpl'); + exit; + } + else { + $template->assign('message','Vous pouvez maintenant vous connectez sur ce serveur !'); + $template->assign('script',''); + $template->assign('couleur','green'); + $template->display('cms/erreur.tpl'); + exit; + } + } + else { + $template->assign('message','Impossible d\'authentifier votre inscription !

    Si le problème perciste, contactez un administrateur.'); + $template->assign('couleur','red'); + $template->display('cms/erreur.tpl'); + exit; + } + } + else { + $template->assign('message','Impossible de terminer votre inscription, il manque des données !

    Si le problème perciste, contactez un administrateur.'); + $template->assign('couleur','red'); + $template->display('cms/erreur.tpl'); + exit; + } +} +else header('Location: ./'); +exit; + $time = time(); + $ip = $_SERVER["REMOTE_ADDR"]; +// Activer la ligne suivante pour crypter les mots de passe dans la base de données + $mdp = sha1(strtoupper($pseudo).':'.$mdp); // Cryptage du mot de passe pour éviter le piratage de compte + + $planete_trouvee = false; + while ($planete_trouvee != true) { + $galaxie = 1; + //$galaxie = mt_rand(2,4); + $ss = mt_rand(1,100); + $pos = mt_rand(1,12); + + // Test pour savoir si la planète est déjà habitée + $result = mysql_query("SELECT id FROM planete WHERE galaxie='$galaxie' AND ss='$ss' AND position='$pos'"); + if(mysql_num_rows($result)>=1) $planete_trouvee = false; + else $planete_trouvee = true; + } + $image = mt_rand(1,15); + + mysql_query("INSERT INTO user (`pseudo`, `race`, `mdp`, `mail`, `last_ip`, `time_inscription`, `last_visite`) VALUES ('$pseudo', '$race', '$mdp', '$mail', '$ip', '$time', '$time')") or die ("erreur sql ".mysql_error()); + $req = mysql_query("SELECT id FROM user WHERE pseudo='$pseudo'"); + $resultat = mysql_fetch_array($req); + $id_user = $resultat['id']; + $cases = mt_rand(150,250); + mysql_query("INSERT INTO planete (`id_user`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`) VALUES ('$id_user', 'Planète mère', '$galaxie', '$ss', '$pos', '$image', '$cases', '$time', '1000', '700')") or die ("erreur sql ".mysql_error()); + + include('template.php'); + $template = new Template('./'); + $template->set_filenames(array('index' => 'templates/index.tpl')); +$login = '
    + + + + +
    :: Pseudo :: 
    :: Mot de Passe :: 

    +
    +
    '; +$texte = '


    Votre inscription a bien été prise en compte.

    Vous pouvez dès maintenant utiliser le formulaire de connexion ci-contre pour accèdez à la béta de Halo-Battle.

    Bon jeu !'; + $template->assign_vars(array('TITRE' => 'Inscription validée','TEXTE' => $texte,'LOGIN' => $login)); + $template->pparse('index'); +?> \ No newline at end of file diff --git a/game/options.php b/game/options.php new file mode 100644 index 0000000..445aec9 --- /dev/null +++ b/game/options.php @@ -0,0 +1,207 @@ +assign('page',$page); + $template->assign('titre',$titre); + +$pseudo = $queryUser['pseudo']; +$mailUtil = $queryUser['mail']; +$mdp = $queryUser['mdp']; + +if (isset($_GET['a']) && $_GET['a'] == 'mv' && isset($_GET['n']) && $_GET['n'] == $sess->values['idvac']) { + $impossible = false; + include_once('Class/class.gerefile.php'); + $nbPlan = count($queryPlanetes); + for ($i=0 ; $i<$nbPlan ; $i++) { + $file = unserialize($queryPlanetes[$i]['file_bat']); + if (!empty($queryPlanetes[$i]['file_bat']) && count($file->file)) $impossible = true; + + $file = unserialize($queryPlanetes[$i]['file_tech']); + if (!empty($queryPlanetes[$i]['file_tech']) && count($file->file)) $impossible = true; + + $file = unserialize($queryPlanetes[$i]['file_cas']); + if (!empty($queryPlanetes[$i]['file_cas']) && count($file->file)) $impossible = true; + + $file = unserialize($queryPlanetes[$i]['file_vais']); + if (!empty($queryPlanetes[$i]['file_vais']) && count($file->file)) $impossible = true; + + $file = unserialize($queryPlanetes[$i]['file_ter']); + if (!empty($queryPlanetes[$i]['file_ter']) && count($file->file)) $impossible = true; + } + + if ($impossible) { + $template->assign('message','Impossible d\'activer le mode vacances.
    Toutes les files d\'attentes sur vos différentes planètes ne sont pas vides.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + $chapeau->query("SELECT * FROM `flottes` WHERE `id_user` = '$id_user'"); + if ($chapeau->num_rows) { + $template->assign('message','Des flottes sont actuellement en mission, veuillez toutes les faire revenir à quai avant d\'activer le mode vacances.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + + $chapeau->query("UPDATE `user` SET `mv` = '1' WHERE `id` = '$id_user'"); + $sess->values['connected'] = FALSE; + $sess->put(); + + $template->assign('message','Le mode vacances est maintenant actif sur votre compte.

    Vous pourez vous reconnecter sur votre compte à partir de
    '.strftime("%A %d %B à %H:%M", $queryUser['last_visite']+259200).'

    Bonnes vacances !'); + $template->assign('script',''); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } +} +if (isset($_GET['chg']) && $_GET['chg'] == 'mdp') { + if (isset($_POST['mdp_anc']) && isset($_POST['mdp_nouv']) && isset($_POST['mdp_conf']) && !empty($_POST['mdp_anc']) && !empty($_POST['mdp_nouv']) && !empty($_POST['mdp_conf'])) { + if(sha1(strtoupper($pseudo).':'.$_POST['mdp_anc']) == $mdp) { + if ($_POST['mdp_nouv'] == $_POST['mdp_conf']) { + $password = htmlspecialchars(mysql_escape_string($_POST['mdp_nouv'])); + $password = sha1(strtoupper($pseudo).':'.$password); + $auth = sha1($password); + mysql_query("UPDATE `user` SET `mdpNOUV` = '$password' WHERE `id` = '$id_user'"); + + //On envoie le mail de confirmation + $mail = new PHPmailer(); + $mail->SetLanguage('fr', 'Class/'); + $mail->IsSMTP(); + $mail->IsHTML(true); + $mail->Host='s-fr.com'; + $mail->From='Halo-Battle '; + $mail->SMTPAuth=true; + $mail->Username='no-reply@halo-battle.s-fr.com'; + $mail->Password='hD3e2nXu'; + + $mail->AddAddress($mailUtil); + $mail->AddReplyTo('no-reply@halo-battle.s-fr.com'); + $mail->Subject='Halo-Battle :: Activation de votre nouveau mot de passe'; + $mail->Body='Halo-Battle :: Activation de votre nouveau mot de passe

    Bonjour '.trouvNom($id_user).',
    Vous recevez ce mail suite à votre demande de changement de mot de passe. Ce dernier entrera en vigueur une fois que vous aurez valider ce changement en cliquant via ce lien :
    http://battle.halo.fr/pages/options_validation.php?chg=activation&util='.$id_user.'&auth='.$auth.'
    Notez que pour que le mot de passe soit changé, il faut que vous soyer connecté sur votre compte.

    A bientôt dans Halo-Battle,
    Le staff

    '; + + if(!$mail->Send()){ //Teste si le return code est ok. + $template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !

    '.$mail->ErrorInfo.'

    Si le problème perciste, contactez un administrateur.'); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else{ + $template->assign('message','Un courriel vient d\'être envoyé à '.$mailUtil.'. Le mot de passe ne sera modifié qu\'après avoir cliqué sur le lien d\'activation contenu dans ce courriel.'); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } + $mail->SmtpClose(); + unset($mail); + } + else { + $template->assign('message','Le nouveau mot de passe que vous avez entré ne correspond pas à sa confirmation.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + } + else { + $template->assign('message','L\'ancien mot de passe que vous avez tapé n\'est pas correct.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + } + else { + $template->assign('message','Veuillez remplir tous les champs avant de valider le formulaire.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } +} +elseif (isset($_GET['chg']) && $_GET['chg'] == 'mail') { + if (isset($_POST['mail']) && !empty($_POST['mail'])) { + $Nmail = htmlspecialchars(mysql_escape_string($_POST['mail'])); + if (preg_match("#^[a-z0-9._-]+@[a-z0-9._-]{2,}\.[a-z]{2,4}$#", $Nmail)) { + $result = mysql_query("SELECT `mail` FROM `user` WHERE `mail` = '$Nmail'"); + if(mysql_num_rows($result) >= 1) { + header('Location: options.php?erreur=5'); + exit; + } + else { + $auth = sha1($Nmail); + mysql_query("UPDATE `user` SET `mailNOUV` = '$Nmail' WHERE `id` = '$id_user'"); + + //On envoie le mail de confirmation + $mail = new PHPmailer(); + $mail->SetLanguage('fr', 'Class/'); + $mail->IsSMTP(); + $mail->IsHTML(true); + $mail->Host='s-fr.com'; + $mail->From='Halo-Battle '; + $mail->SMTPAuth=true; + $mail->Username='no-reply@halo-battle.s-fr.com'; + $mail->Password='hD3e2nXu'; + + $mail->AddAddress($Nmail); + $mail->AddReplyTo('no-reply@halo-battle.s-fr.com'); + $mail->Subject='Halo-Battle :: Activation de votre nouvelle adresse électronique'; + $mail->Body='Halo-Battle :: Activation de votre nouvelle adresse électronique

    Bonjour,
    Vous recevez ce mail suite à votre demande de changement d\'adresse électronique. Cette dernière entrera en vigueur une fois que vous aurez valider ce changement en cliquant via ce lien :
    http://battle.halo.fr/pages/options_validation.php?chg=activation&util='.$id_user.'&auth='.$auth.'
    Notez que pour que l\'adresse soit changée, il faut que vous soyer connecté sur votre compte.

    A bientôt dans Halo-Battle,
    Le staff

    '; + + if(!$mail->Send()){ //Teste si le return code est ok. + $template->assign('message','Erreur lors de l\'envoie du courriel de confirmation !

    '.$mail->ErrorInfo.'

    Si le problème perciste, contactez un administrateur.'); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else{ + $template->assign('message','Un courriel vient d\'être envoyé à '.$Nmail.'. L\'adresse électronique ne sera modifié qu\'après avoir cliqué sur le lien d\'activation contenu dans ce courriel.'); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } + $mail->SmtpClose(); + unset($mail); + } + } + else { + $template->assign('message','L\'adresse électronique que vous avez tapée n\'est pas valide.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + } + else { + $template->assign('message','Veuillez remplir tous les champs avant de valider le formulaire.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } +} +elseif (isset($_GET['chg']) && $_GET['chg'] == 'activation' && isset($_GET['util']) && !empty($_GET['util']) && isset($_GET['auth']) && !empty($_GET['auth'])) { + if ($_GET['util'] == $id) { + if (!empty($donnees['mdpNOUV']) && sha1($donnees['mdpNOUV']) == $_GET['auth']) { + mysql_query("UPDATE `user` SET `mdp` = `mdpNOUV`, `mdpNOUV` = '', `mailNOUV` = '' WHERE ID='$id'"); + header('Location: options.php?erreur=8'); + exit; + } + elseif (!empty($donnees['mailNOUV']) && sha1($donnees['mailNOUV']) == $_GET['auth']) { + mysql_query("UPDATE `user` SET `mail` = `mailNOUV`, `mailNOUV` = '', `mdpNOUV` = '' WHERE ID='$id'"); + header('Location: options.php?erreur=9'); + exit; + } + } +} + +$sess->values['idvac'] = sha1(rand(123456789,9876543210).'ß‘}☻'.time()); +$sess->put(); + +$template->assign('mail',$queryUser['mail']); +$template->assign('idvac',$sess->values['idvac']); +?> \ No newline at end of file diff --git a/game/regles.php b/game/regles.php new file mode 100644 index 0000000..5246328 --- /dev/null +++ b/game/regles.php @@ -0,0 +1,123 @@ +assign('contenu','

    Règles de Halo-Battle

    +Préambule : tous les joueurs ayant créé un compte de jeu, et l'utilisant ou non, s'engagent à avoir lu et à respecter les règles de Halo-Battle dans leur intégralité. Si l'une des règles énoncées ci-dessous est transgressée, merci de vous référer au chapitre des infractions afin de connaître toutes les modalités relatives aux punitions encourues.
    +
    +Ce règlement peut être l'objet d'une modification, partielle ou totale, et il est du ressort du joueur de se tenir informé de toute modification quelle qu'elle soit. Toute modification sera publiée sur le forum avec sa date de mise en application, avant de se trouver effective au sein du jeu.
    +
    +Ces règles du jeu ont été publiées le 14/04/2008 et rentrent en vigueur à partir du 24/04/2008 +
    +
    Plan des règles : +
    +
    I. Comportement +
    II. Comptes +
    III. Commerce et ressources +
    IV. Mercenariat +
    V. Guerre +
    VI. Bash +
    VII. Alliances +
    VIII. Sanctions +


    +

    I. Comportement


    +

    1 - Comportement général


    + +- La convivialité et le respect des autres joueurs sont de rigueur. Par conséquent, les propos injurieux, racistes, xénophobes, pornographiques et antisémites sont prohibés. Tous les outils de communications utilisés pour et par Halo-Battle sont soumis à cette règle (jeu, forum et IRC).
    +- L'utilisation de pseudo et/ou nom de planète en rapport direct avec des propos racistes, xénophobes, pornographiques ou encore antisémites est totalement prohibé. Il en va de même pour toute revendication politique, religieuse ou ayant un rapport avec l'actualité (une certaine liberté peut être tolérée mais ceci reste à l'appréciation du staff).
    +- Les menaces sortant du cadre du jeu ne seront pas tolérées et lourdement sanctionnées par les opérateurs. Elles pourront de plus faire l'objet de poursuites judiciaires de la part de la personne concernée devant les juridictions compétentes.
    +- Utiliser le bouton Signaler pour signaler un message qui ne contient pas d'insultes ou qui n'enfreint pas les règles du jeu est interdit. Le signalement de message ne doit servir qu'à informer les opérateurs d'infractions aux règles du jeu et à rien d'autre.
    +- Le spam, les insultes et les messages à contenus offensants sont interdits, de même que tout contenu xénophobe, antisémite ou raciste.
    +- Toute manoeuvre visant à exploiter le règlement à son avantage, ou à le contourner sciemment, est interdite.
    + +

    2 - Bugusing


    + +- Tout bug trouvé doit être immédiatement signalé au staff de Halo-Battle.
    +- Il est totalement prohibé d'exploiter un bug à son avantage.
    +- Toute action visant à paralyser d'une quelconque manière le compte d'un autre joueur est absolument interdit.
    +- Ne pas signaler un bug découvert est passible de bannissement.
    + +

    II. Comptes


    + +

    1 - Les comptes de jeu


    + +- Les comptes restent la propriété de Halo-Battle ; par conséquent, ils ne peuvent faire l'objet d'une vente ou faire office de monnaie d'échange.
    +- Un compte ne peut être joué que par une seule et même personne physique dans une seule et même galaxie (sauf cas relatif à la surveillance de compte).
    +- La langue utilisée dans Halo-Battle est le français ; toutefois, seul l'anglais est toléré pour les personnes ne sachant pas ou peu le parler.
    + +

    2 - Multicomptes


    + +- Jouer plus d'un compte par galaxie est strictement interdit.
    +- Pour les joueurs jouant depuis un lieu commun (famille, collocation, écoles, lieux de travail...) il est impératif de prévenir l'opérateur de votre galaxie.
    +- Aucune interaction, directe ou non, entre comptes de joueurs se connectant régulièrement de lieux communs n'est autorisée.
    +- Pour les joueurs d'une même famille, faire partie d'une même alliance est toléré. Dans ce cas précit, merci d'en avertir l'opérateur de votre galaxie. Toute exploitation abusive de cette autorisation sera sévérement sanctionnée.
    +- La règle de la surveillance de compte et le partage de compte s'appliquent normalement : même connecté du même lieu, chaque joueur n'est autorisé à surveiller ou jouer que son propre compte.
    + +

    3 - Surveillance de compte


    + +- Toute surveillance de compte doit être obligatoirement signalée à l'opérateur de votre galaxie. Le propriétaire du-dit compte doit indiquer quel compte va être surveillé, donner la durée exacte de la surveillance, et donner le pseudonyme du surveillant. Il n'est pas nécessaire d'attendre une réponse de l'opérateur pour pouvoir commencer la surveillance du compte.
    +- Une seule et même personne ne peut surveiller qu'un seul compte à la fois. Aucun délais minimum n'est exigé entre la surveillance de deux comptes différents. Les surveillances de comptes ne peuvent faire l'objet d'aucune rémunération.
    +- Le surveillant ainsi que le joueur qui fait surveiller son compte sont responsables des actions faites via un compte durant une surveillance.
    +- Le surveillant peut effectuer n'importe quelle opération sur la ou les planètes du propriétaire durant la surveillance. Est néanmoins interdit le transfert de ressources vers des planètes appartenant à un joueur autre. L'activation du mode vacances est également autorisé.
    +- La surveillance du compte prend fin lorsque le propriétaire du compte se reconnecte à celui-ci, ou que le délai de surveillance a expiré. Dans ce cas précit, le surveillant est tenu de ne plus s'en occuper et de faire passer obligatoirement le compte en mode vacances.
    + +

    4 - Don de compte


    + +- Tout changement de compte doit être au préalable signalé à un opérateur. Tout changement sans l'intervention de l'opérateur sera sanctionné.
    +- Le propriétaire du mail permanent du compte est tenu d'envoyer un mail informatif aux opérateurs en précisant le pseudonyme du repreneur et le futur mail permanent du compte.
    +- L'opérateur modifiera lui-même le mail permanent du compte et informera le donneur et le repreneur que le compte est cédé.
    +- Le repreneur peut se connecter au compte dès qu'il en reçoit l'autorisation par l'opérateur, et peut alors changer l'adresse dynamique, le pseudonyme et le mot de passe du compte.
    +- Une fois que le repreneur s'est connecté sur le compte, il est strictement interdit au donneur de s'y reconnecter.
    +- La même règle s'applique dans le cas d'un échange de comptes entre deux joueurs d'une même galaxie.
    +- Aucun don de compte ne peut faire l'objet d'une transaction monétaire.
    + +

    III. Commerce et ressources


    + +- Les joueurs sont libres de commercer comme ils l'entendent, tant que leurs transactions ne se trouvent pas en infraction avec le réglement.
    +- Le commerce doit prendre la forme d'un arrangement entre les différents joueurs. Chaque joueur engage sa propre responsabilité lors de la transaction de ressources. Par conséquent, dans le cas de vols, d'arnaques ou de toute autre forme crapuleuse de négociation, il ne peut y avoir de recours auprès d'un opérateur.
    +- Il est interdit d'exercer une pression ou de s'acharner sur un joueur dans le but de lui soutirer ses ressources (sauf si les motifs sont valables, comme dans le cas d'une guerre déclarée).
    +- L'envoie de ressources à des joueurs plus haut classés que soi doit être motivé par des motifs valables. Si l'opérateur juge l'action outrancière, des réparations de dommages peuvent être demandées au joueur bénéficiaire des ressources.
    +- Les transactions de ressources ne peuvent faire l'objet d'une transaction monétaire réelle.
    + +

    IV. Mercenariat


    + +- Le mercenariat est autorisé. Ces contrats rétribuent un joueur ou une alliance en fonction de services rendus.
    +- Un contrat de mercenariat doit prendre la forme d'un arrangement entre les différents joueurs et ceux-ci y engagent leur responsabilité propre. Par conséquent, il ne peut y avoir de recours auprès d'un opérateur si, par exemple, le contrat n'est pas exécuté, ou n'est pas rémunéré.
    +- Toute mission de mercenariat est possible, tant qu'elle n'interfère pas avec le présent réglement.
    +- Un contrat de mercenariat ne peut être rémunéré par des unités monétaires réelles.
    + +

    V. Guerre


    + +- Une guerre ne peut être déclarée que contre une alliance ou un joueur sans alliance. Ainsi il est possible de déclarer la guerre à une alliance entière ou à joueur qui n'a pas d'alliance, mais pas à un seul joueur d'une alliance ou à quelques joueurs d'une alliance.
    +- Il n'est pas nécessaire de motiver la décision ou de prévenir l'alliance agressée pour déclarer une guerre.
    +- Il est obligatoire de déclarer officiellement une guerre sur le forum, dans la section appropriée, dans les 24 heures qui suivent l'agression. Les joueurs sont libres de formuler les objectifs et les conditions de fin de la guerre.
    +- Il est strictement interdit d'établir des objectifs portant atteinte aux libertés fondamentales dont disposent les joueurs, comme la suppression d'un compte, l'interdiction de jouer, suppression de colonies ou d'unités, etc...
    +- En cas de guerre, le bash n'est pas interdit.
    +- Les joueurs sont libres de mener leurs campagnes militaires comme ils l'entendent, pourvu que cela n'entre pas en conflit avec le règlement.
    +- Une guerre prend fin lorsque les belligérants trouvent un accord. Ils devront le signaler obligatoirement, comme pour la déclaration de guerre.
    + +

    VI. Bash


    + +- Le bash est relatif à l'attaque à outrance de planètes particulières. Attaquer une planète plus de quatre fois en 24 heures est par conséquent interdit.
    +- La règle du bash s'applique aux joueurs actifs et inactifs.
    +- En cas de guerre, le bash est autorisé.
    + +

    VII. Alliances


    + +- Toute alliance possède le privilège de se constituer comme elle l'entend.
    +- Toute alliance peut recruter autant de joueurs qu'elle le souhaite.
    +- Les alliances mixtes sont autorisées ; cependant, une race dominante doit y être représentée et les joueurs de la race opposée ne doivent pas s'y trouver en trop grand nombre sous peine de sanction.
    +- Toute alliance peut recruter autant de joueurs qu'elle le souhaite.
    +- Toute alliance peut signer autant de pactes qu'elle le souhaite.
    +- Toute alliance a le droit de se donner comme mission celle qu'elle entend.
    +- Il est strictement interdit de copier totalement ou en partie, les textes, images, etc, créés par les joueurs des différentes alliances déjà existantes. Les alliances fondées sur le principe du CSNU ou de l'Alliance ne sont pas concernées par la clause du plagiat de nom. Pour pouvoir recopier l'un des éléments se trouvant dans une alliance, il est nécessaire d'avoir une autorisation écrite de ou des auteurs vous autorisant à y procéder sous peine de sanctions.
    +- Tout recrutement dans les autres alliances déjà existantes est formellement interdit.
    + +

    VIII. Sanctions


    + +- En cas de non respect de ce règlement, les opérateurs du jeu infligeront un blocage pouvant aller de un jour, à un blocage définitif selon la gravité de la faute, ainsi qu'en cas de récidive.
    +- Chaque bannissement est mentionné dans le pilori du jeu. Par ailleurs, le staff de Halo-Battle se réserve le droit de prendre à l'encontre des joueurs toute autre sanction.
    +- En cas de réclamation, merci d'envoyer un mail à l'un des opérateurs en précisant votre pseudonyme ingame et votre galaxie.
    +- Toute manoeuvre visant à faire bloquer délibérément un adversaire est interdite et pourra être sanctionnée par l'opérateur.
    +
    '); +?> \ No newline at end of file diff --git a/game/rename.php b/game/rename.php new file mode 100644 index 0000000..dba2c2c --- /dev/null +++ b/game/rename.php @@ -0,0 +1,50 @@ +assign('message','Vous n\'avez indiqué aucun nom de planète.'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('game/erreur.tpl'); + exit; + } + else { + $table = $config['db_prefix'].'planete'; + $chapeau->unique_query("UPDATE `$table` SET `nom_planete` = '$nouvNom' WHERE `id_user` = '$id_user' AND `id` = '$id_plan'"); + $template->assign('message','Le nom de votre planète a été modifié avec succès.'); + $template->assign('script',''); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; + } +} +elseif(isset($_GET['a']) && $_GET['a'] == $sess->values['abandon']) { + $galaxie = $queryPlanete["galaxie"]; $ss = $queryPlanete["ss"]; $position = $queryPlanete["position"]; + mysql_query("DELETE FROM `planete` WHERE `id_user` = '$id_user' AND `id` = '$id_plan' LIMIT 1;"); + mysql_query("DELETE FROM `flottes` WHERE `id_user` = '$id_user' AND `start_galaxie` = '$galaxie' AND `start_ss` = '$ss' AND `start_position` = '$position';"); + + $table = $config['db_prefix'].'planete'; + $req = $chapeau->unique_query("SELECT * FROM `$table` WHERE `id_user` = '$id_user' LIMIT 1;"); + $sess->values['idPlan'] = $req['id']; + $sess->put(); + + $template->assign('message','Cette planète n\'est désormais plus sous votre contrôle.'); + $template->assign('script',''); + $template->assign('couleur','green'); + $template->display('game/erreur.tpl'); + exit; +} + +$table = $config['db_prefix'].'planete'; +$reqnb = $chapeau->query("SELECT * FROM `$table` WHERE `id_user` = '$id_user'"); + if (count($reqnb) > 1) $hashA = md5(rand(123456789,9876543210)); + else $hashA = false; +$sess->values['abandon'] = $hashA; +$sess->put(); +$template->assign('abandonH', $hashA); +?> \ No newline at end of file diff --git a/game/ressources.php b/game/ressources.php new file mode 100644 index 0000000..6305100 --- /dev/null +++ b/game/ressources.php @@ -0,0 +1,11 @@ +assign('nombat', $batiment); +$template->assign('ressources_prod', array(separerNombres(floor(ceil(pow(1.1,$mine_m)*35*$mine_m)*$coeff_mine_m)), separerNombres(floor(ceil(pow(1.1,$mine_c)*23*$mine_c)*$coeff_mine_c)), separerNombres(floor((ceil(pow(1.1,$mine_h)*14*($mine_h+0.7))) * $coeff_mine_h)), separerNombres(floor(ceil(exp(0.28*$centrale_s)*22)*$coeff_centrale_s)), separerNombres(floor(ceil(exp(0.297*$centrale_f)*25)*$coeff_centrale_f)))); +$template->assign('ressources_conso', array(separerNombres(ceil(exp(0.28*$mine_m)*10)*$coeff_mine_m), separerNombres(ceil(exp(0.28*$mine_c)*10)*$coeff_mine_c), separerNombres(ceil(exp(0.2849*$mine_h)*13)*$coeff_mine_h), floor(ceil(pow(1.34,($centrale_f-1))*9)*$coeff_centrale_f))); +$template->assign('ressources_toto', array(separerNombres(floor((ceil(pow(1.1,$mine_h)*14*($mine_h+0.7))) * $coeff_mine_h) - floor(ceil(pow(1.34,($centrale_f-1))*9)*$coeff_centrale_f))), $diffnrj); +$template->assign('ressources_coef', array(floor($coeff_mine_m*100), floor($coeff_mine_c*100), floor($coeff_mine_h*100), floor($coeff_centrale_s*100), floor($coeff_centrale_f*100))); +?> \ No newline at end of file diff --git a/game/templates.lnk b/game/templates.lnk new file mode 100644 index 0000000000000000000000000000000000000000..ebd6967796454a32fdd22af7a3a0d27004aa0ed6 GIT binary patch literal 989 zcmah{OKTHR6#n`UQgAUXQM8B#5wVIIMcQj{(N-E;NzGV%)H0&eBxD9=GD9-O)J4H= z6hy_183mzKtYUE0Wx;kOE?o*Dhzk)xMC=dnyEBv2N5DIrd(PZ@zVrC*$pC1Jw{r*9 zf*tAG)C%Qw*XHun(>HCM7Y9H6q)w~7H>D2Uh-(;;9%+wbm-;dLHt{uODvR%8IFL*} z-j2g3Q`%py^7k~31gH1J@w*DtiR`I~p*bEMMF%?Z{Z(b4r|ydr<8gYaD8oUKyAB%( zq+!BB0TteDLw^+Mj#w-wQPpkN#qMU5>(6|lW@VIWfOg^1jw2PJYU1It0>jHYIfmQQ z0%yQOp80b@zO6_`NMGDPOXPG3J0nz0_{;KCW-~C25_Jy-oBltxC@@PoYbIY{u6<3^ z5>dmdM480o*xL*MzklN%=g{8{4!G?E#connexion(); + $base->db(); + + $id = mysql_real_escape_string($_GET['i']); + + $res = $base->unique_query("SELECT * FROM `user_inscriptions` WHERE `id_activ` = '$id'"); + if ($res) { + switch($res['serveur']){ + case 0: + $url = "http://127.0.0.1/hbn/"; + break; + case 1: + $url = "http://battle.halo.fr/"; + break; + default: + $url = "http://battle.halo.fr/"; + } + + //On envoie la requête vers le serveur + $cds = sha1($res['pseudo'].'$'.$res['race'].'£'.$res['mdp'].'#'.$res['mail'].'ß'.$res['time_inscription'].'Ó'.$_SERVER['HTTP_USER_AGENT'].'♀☻'.$_SERVER['REMOTE_ADDR'].$res['placement']); + header('Location: '.$url.'?p=njoueur&nom='.$res['pseudo'].'&race='.$res['race'].'&mdp='.$res['mdp'].'&mail='.$res['mail'].'&ti='.$res['time_inscription'].'&placement='.$res['placement'].'&cds='.$cds); + exit; + } + else { + $template->assign('message','Le lien est expiré !'); + $template->assign('script',''); + $template->assign('couleur','red'); + $template->display('cms/erreur.tpl'); + exit; + } + + $base->deconnexion(); +} +else header('Location: ./'); +?> \ No newline at end of file diff --git a/game/version.php b/game/version.php new file mode 100644 index 0000000..1c31a77 --- /dev/null +++ b/game/version.php @@ -0,0 +1,13 @@ + $data['version'], 'date' => date("d/m/y", $data['temps']), 'description' => nl2br(str_replace('
    ', '', $data['contenu']))); +} +$template->assign('versions', $TEMP_versions); +?> \ No newline at end of file diff --git a/images/Thumbs.db b/images/Thumbs.db deleted file mode 100644 index 4099c59d7d12dac9fe426cbffd2e7cc688b3e7a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33280 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 W`%mQl6S@EV@4Np*+)401x%>~xMZg~b diff --git a/images/accueil/annonce.jpg b/images/accueil/annonce.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dbca89b63ead709c686fc36c4e389f6a7bf86ceb GIT binary patch literal 20166 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 literal 0 HcmV?d00001 diff --git a/pages/images/missilearcheriz2.jpg b/images/accueil/dossier.jpg similarity index 57% rename from pages/images/missilearcheriz2.jpg rename to images/accueil/dossier.jpg index 81b6392f8f95f8edfd152c871f2b000d5a66b34b..f269f4498459b5084ee25eddc58d614b4f0da2b4 100644 GIT binary patch delta 4547 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 diff --git a/images/accueil/news_img.jpg b/images/accueil/news_img.jpg new file mode 100644 index 0000000000000000000000000000000000000000..feec1b7892db75963dab9f55fda9e60055b8f4f1 GIT binary patch literal 17808 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%0D8&}c&Dju3wsf?%i2#FUy-&VCq=inn+_WRk` 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 z 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

    V@=X@%Qn@=~ ztY9Q#+%pvVtlReMilk+#>$BNfNlNKgMGWmLI!%GSsF31wVK)3c_w?|y<-?TfyTLO!yV%L&jhwOvU_2HDf) z>)5k?pPl1Rko5o6@4P&#FpB{IUI^*$*7Gw!8&CiqDbsf&YU!sUb56j?ugk(VQyrzT z{P$*NtAIy}d$DicEgi5zEB4|+(5Y*N{rwdikokg>F4PlkK)5A5|FvihFG6m=Je9#y z#~u^7#v0b0PIPlTFvLbirMIGO3Gv`nwNBB?zj&J=gU*@XlDkkmk#C8fR-b^Dj4bU>RECVfbrdK$;gAl8 zgzohpKAf*m!r7Un#*|I1atmU?1I8E+l-#?8pWbrJTAtxTQ%u4}Ye z&MOs5aob3=%)I*cM89M%-5u7L7+DXE6MV;I#&KkH5?|WY zV-J;+djhnS?Msn!s@F?x|0Q~P{M*T(v5YAc@MT;P{iXEhtF7k27WCP%UYA42%X;t! z&}Gc9=B7cL5_SY7Otqwc+KVOux<^yiBXUJ+nVw4F2AO0Fpr5G_9xnCjeLSjVkp&Dv z{<637s`GCxJjU4m^sntB0z9VOMm{3DG97sTckA6NkoSY@!m;WY;nz=X29nNSq^^}~ zLlaa|Uyk3g&Po5^Qlim|Yk!WcN)&x7ZXQUsVC>@KA}m4_)z(Cw)rMH#2)k`qCpvs? z-8%pQ*2zj85K}$~0vSDkTIdssuLW$h5U+gn(t4QGRArDxTNfwu{Ic+fB&G5qv0~&O zu^W~R6*o!|;B7L#1tdHmIxhC&*65DSnG!;I-_&OoE0_!EMrT)ykpSL@Ro#W~lwLnexwNzl(k z!sn}ESaDsoxjaL2D*mjuAvgSeh9q+oad*u0C zNu|{-qp{#8pisM|e~4&Gj+_WCylMXs2kxnmKc1?%-suLhd6>GX2}LY{hhvE#?6#F` z=#M6>W3)&R8zC$sQFc#ta5S@~IsItM)m9CItALa+Q>HWYB_V63@rTQv&=L69@ex6uCQxJM zzUl0owa$ZBwhIO6H1KzEO%tz*2lb*>R49+f=}hH)h~TdWChb2uhOHQZwrkQKACm0x zbrUq(5EKr*&TbYBxHa-Ttf$ykvPxjG*uidhg;g||8X}L(J7Q%^6R-+Y(g47F>?9Tz zw?O53g!z$l!Gh zh)XceHTAOj+=Dy|0`nk$>Z2sJU^eA$5JEdDn{&;l1p2;}Eh$w%Z#g*{ z>$6r_U;fUh!Dunilke5UMz`7w6?2aoz)P?8{&NFegz|nFGP}I&+`*HnCs5j1J*s#N zfEQN1TZzIz^L1BoEw<}+8+QD0QLke^Q8OuZ$=5kHXD0=&jUqr!3)NT8+Z`qW!jmT5 z-Jg!au%&Ul))g7fx7XqBsqJH3s8`u2(qG}H-?1h0A+Ym=ytb_-e?r)oqvYkl0rxXU zcqiTkUn(+^Q5q!xLWwEIxiJHHh=f+zg4^Ej{uxH;zWzu68ZzKf zcAYF_a2ns@W#khb|Lpv8oGi%e>}728JV#ztqrvL&-o)I9K4$1vZ@9{@YO(Ig3k@bk zd-dl{&X{8tyVWC+27ok4Nh|Kp*erj!oVkLMabA4lP|6>s7*4ev1DTcqE(}a(p;72} zkEZ0rQj@1abldBBa`MRfCbyg8Q29cOP*syc)RPyAGg(iR#SG44Vk(vSlJM^3D~G|J z7;pOMHt$!&)AHC8P@1b9|Buh4D}z`AD;Lnot3I#egNG3aN#V!xmgYEZBv_lPtZr6K zm+1HO*Cy#Dw3to1nDqL`zl=Ck!p}$lDWM7V#jx8;cJC0+tBY7XCb`%SM1ZuGn*=v( zW-UuxM5hjT=S>{Wcpc<~b=e8-)%~UL6p9C|1ax|s(-r-7WOlUMc{V#x=*_<0mUX~N z%&RZ=?e4W{z3{0D{m9_ek2}4^dP2g1-{xHV8Ab0fc6*aiX=aJuwxm`J{6U|`rxCZ= ze0YFig?GeQ2{1i~Y0yFO;4)U3S(}0JNUt=nO5I=Gs4jClG9IjTCLO&4Vy2|6E_K@*m3 zm$lWLblOIDh=TRem~ME{B9mNJE*vZdMuH zQ{mi-(`Vb?o7j7^#0Y|k>ZTX@XtYhQSgoPx<($5KHcp2YF+jD&N1zTjx&-MX9j<6? z7dy^^b0vt4KybB9X2_1Wcv#vKQ~E-Bw^!{3BGtey=lBB^VWEIK~Y(v3txM?E@@!)CLnOZ zX382q6;}DYBD-JTBK(#gr(6GLil0AF;w9ocYOdgV{y`QYv>{rmd7XI{ac60wD@>;6 zX4q8emio^-kLF5DUQBNW6=k-o)hh$e;y0UUW_e zXPBEfkKiG0n;!LzRyVhR3zCDa>dp;~@+g8G#ct;Xb>|jKoqcG#uB?ob;^q9C9|vC& zeKny_Qo*ZNo^bQi=m5BW(!wCsSP3ABKZ4=$5?f55a`qt>;ScCNCb{%iF+sE?ui{bxYpz zEy7=2mR2F@HKf-=ofYvUUd~z*;{py-&M%*<`rC=adiK?>cYjN5*lyT-~OZFr#Zr zR=&##`m~}~9yVFBF7!=2YsPQz4uV?kY$b#UgLG(hEe}koUX`khnMU_r&&;H%I=|8M z_0Jj~y)M%7v*~g@3T&*Zs~spAW+pnKjrWo_B!0d}Bkl zPoEW+Vbr2YR5>)%tw^Iu4hx?0iH8S&=1Gl!loSsgDqqxpS_4kx=07GC zYG0)r2WWO_q!B}5)Tp?;(Isx1ibFX|b(Gi#B(x6QLuf30`6$iWIj`UcF+vPEjBRn> z_R59$B{-*Bl@yf06nG0#1Dj3f#lhCVm(}+bYw`n-M~y?%8`IU8^%eeD=-$u2KlMlqgAJR<`V%*XGNey+}QdbeB~R{iN}X z%Sa-`QFW?dg4BrK_U%@rlumaYX)rySB7!H|7E-{&vH^$(2aOXsguH%8O`j&tAE%68L zzeQ^ca(h~0leF+_i&@sCUk+vboDpIOdrC8J4(F5|k9va1pWdUk9Qy&;@k?A#XhFm7 z49IRJGo>OFZ1-~a1gY6_JWigFn=wW+W@Sti%S`z@|2CBKi00YKd2>0?NbO_BU=!YD z9v!D|jF5!+z3;0G*-{!n06kC(erl_wfj>lBx|A=kuP+k(Inxn`&e7^4!fFU{_)$@2 zcDlew^)?shb^rw;o5Yq*w3t1ge3whTPO_*T8YVe$K@-H4C8EoluQDnh_mz)8O_Flv z|6N&1H#*{mI%*J0hBxlwhDqala@+?_EaoIYveQkOk=Oc8hvq_paU%7I47RwiC0PmD zL?8S`;St*}{Cl`O;#>HkB)HqP#2E3I(f(*jg!|*h}L}RK?s}y6U`(q7sq#VSpdTJOwR#W|~=($D&UT`>9^;5dw z=nzMOnDHBwta3wC2`M(({1$ezB~^@!fio2vfiP(!18f+UBV?^-_|l7`^)gfoglT;v zTlr?9D!;rZ*tL8)e>Jx`i2}!K|BRMNh*MEFD_?qI_3yz<%=`2e7}eqsmoZ9ZkD5V7UU zUT}5$zIk?MnDV;)3m=R{`_>?yshgc`<8ww=_57b1T;>PEgK_fvifk^pnOF=QdPqt~oV%Mx>E^+3@0<4t2UZnFo7HL>38>bNbAwTo zfy*R!kP%Q!ti4=zo-QWTnmeg-5S*RqEI95n?Y>158DUTV*hq&0$Gax1x(u`md9$?_ zQAq^f56fTo+bC`qUSfDbYb+Y)&NtyAyz;4(&JDf+HYfW>Q zGM{n7A_MX89uY_X!yrS%v9wF^d`Vw33h&nWek3!9$4iTU7t1 zY582uA6LFFKL$ba6oM64D|_3Pwl(K;j8X(n!VrPYgY9+zh@ZKnloQ5DiC4TP z-*b3^l!oof)W3dro|}1(RoicHl~S#LYPQSpGOUU*gLr6itur`4KQ@aRc4RilU9;;o;sHP;ywj6(x)R4567>B0hS>nLDIg4KCj1A^qz zUl0JKG}h+zi+}f_`SPRUEe3D%$2^$U3*P(pgsR-`I*>HeK=Zs<%o2jZ>`g?Da zlhb==i|d(%x9jC+-t`7`(Jg+Ik&!U|C`D{oPnhcc!y*9Zl)C(PsnlPl55lmngLYPr z^I-a}ld84nwfpX&%dUh^h(RA+yB*^ho9?NF-8I$&>&F?UcYpyceqB8GD9{pg zu8Sxsj|0oy$!TG!jdBwcNoT6t2r{3|K+ZlPn@`DTO7q{9_3gbwPtg*jcDYoy@p8e~ zJpc~dZkEd0ivlh7&O~^v`I!R0ZbfHhW%fo?3Ns3851EL(m2VTiW%?|w9eXDtLq6u% z14Ck!BFS@`7P9xIqy$qmQv6M?!U#uW^X$WO>Qt*NVibS1rk+nfq@FWFENiRG1ecJa_#v~@{?`+Xzqy%egIv=F|AinZ<{z5E0rLKy{ zH=JL7_B>BX{RJ&T)RJuQlLwo-Fh5^eo8yP-?nKOx^=oibg(FkeP78kg9D{HKXKRf!%v9V`2_sem`b36in-RusK3BxItfWR zcCou#9*ze#gmNwHT_=#-PGxJcA}yfJpj}TRVQJ5}X2L~316|#{BlkBPo2~;%=eMbm zho_ZP)`5(fFb{7nY1Ri@I{mJ{%bAuXkW2qeOCOTHmCpSo z@oT4L@a3+iDq-yN1;T`8P^TdVG+oSPDkIaQqM7Ti%&x-vpR;xH-?Q}qPkB*g^4<5Y zIBn~X!^+fEolJ4g46NO9><^#QQPXY6{%mFY*FTl>oNw4|!7D#w{Z^^E6m5Y+=2YX<3xCPy&E z86d?l?o2{P4BPYFOeCgXjE&qdl#C>XnZnv+TXH`+jq`8)9L;7_bbByic}BGyrKqH1 zJ%;I8*CRVeeK&`JKU2VemaD1}UL8?ehsjA0{<`aqnyKe$8o!Icz>p;?95Z=$i^TKo z!>2aW^O=sXU=6M>+0&od_3ESo_-n=};Sfl2a-|dCfHblc-r(Ugq^aS@mt>LnS>56J z7Vut;I5t)1UEjx80HGM1h|?FAIw+Oa<-T+Zr;k-z_iV|dELAg39*Bp$~B)%;CIu{jo=NE zRsjC0&3r$4V~yt~*?W{0H6T}w7Ku+#_biiV4=Z0iEyljxw&c|iN^zTSj6h9pQ7Vc4 zL&V-%V_tF=ntPSJ`|j z^>PTGo*^Y2xIPBRACYr$WxU$%Fky%aQ;ohoFOAW#r0Q7Wj4e)oLlCeUlqrP>W%R>X z6KfZv@~6g6mjtHNJQW}UvdGQtX>Qe%)bIJ)syD9j#Z2#*{=Rq_ga)Li91Z#3KK)En z3|@PA5JSM;ZF~O%KmvC6K$hZ&-b`8HMZLI++Zq#lYee-rx;kb13OBT!1Mo}%jjf4& zKNEQS5JKz)DxeK?!nd9O_H<+tixi&sf$rIL*bc-P1 zJDWdf%dYi@&MDUpFLt)#T>YfD3P-=+w{slg@P6oZ(X0@(|5x&nzG;y%HBp{DMHu}-O_^qx|a zlHx4dr*R>#MDTAU$p^X1zC#ufWc&{WMy?E3do_dtgmJaG^HmjdwI9}Wmx~Vy$TXK{ zkk553%{H`8q7xNaMbSdL4-eNh<%oqF9>2ebla5~72|qiSP@zqKn2_NS&EFyj7oQ(l zPPv(w3#-;2UOp z;(X|VT^2EOJ#W!6!96a1=Re_19rU$ESE`x-Zdw0np;Mc-1>{?HiX^4QeKwwnTSbRV z3aU<>zj&W1GFvE}ce?gB5}blU$IicC3Q_|0N~N|`2gEwA)SCa~6y*W}jVs1ng9GRnTqlA zXD27zZ$5tNtqAypiVn&yomp9<$Wi#7=bnrfw|u$AUuNZ30swz;_bsoE1if6)bnJQ9S2%AiF7AtZBw!8x@QCyth0{d?x7$c9*K=U<2H6?ei!r_13; zq2g38Xe-%{Ey|T9(!zA!@51vAE5HDASw11+UZFQ~CQS1bb;I=>L=iMwU}+Ib{CO@S z5(3#j;U^nH2m^%}92yFw;+e7Jmj=V7Myaj_a)8#^TAXh5oB?_(#64r>KxQtc))U35 zKDVkh_=f)Vz+A;$E@l;uMm7B5Rj{@|mNty%Sy~IxC*%BI;-P{nN0QMc^{%2;_%n?X zw6}PMun2!gcdosTFtLaw5&|tQai~yBwM)+*cRpfU9DuxGGUi%~<&icvizth@zg|(& zu3d{E#eaONdJ-%ssw|;PUI73?OVW z-47d~<~q(*>%qH!evIA9EI^hNDn47H9WRf39>4cGUhSz*yf#tGbz_|h+lhSJ38UJl z!`G*ELSeYv9xz@w|GZ3`qv~;T+&exh(~X#_BkeQ^fq`gGVRC4T->Z@XkCNB*s`4!_ z45M0X?zP}~M&TjG3HZV_SCC)z9f=y8#(YWYu{;j%XjFa*gXM62SBmGNBR7>p^}3fd zl{LaRU(`(Lsus+LigUDKLr~v&4xLzu?-3hC8chxi&)|;-3unM_cBz{r2}5{A2F~SH z7F=xhpWLzE-V-G_q5l%XPv3n-zE<~t`XP-`}Eh2Tcxf7 zGi-#g^4`qS-pf67_Q|G)vO55%xh$eh8!}B-y6qoU3n}lJDh1bG_iidb7X1cR)mPX} z{Ht3e_B8szTU1YNDVAYb)6s+nIGCDQmKEY&%aSQ=BnJWvA~hI?S)xXwu|n9d{ouWM z_ND^sHd$HWA_em+P^|jn4qCt&A<-Tenxn%ibT8S4NkpRjP^Px(a=XcVK-aCldd8Qt zxpyqqTV)6Ve;bWti2|P7|19_^nmn$^}~n# zsY%$>qEgk{LK{8Y{PT6Y`8pEYT!?q)GLpjeMzZv6)3tdPG?q9 zoWg|LJN7T|`SZUyKTCt+f)2jYJSZvoZ}wDvx%T)E$TTFZ6aaE{B@_c(GX!zdf?Gd# zLkyeMqHsJh7jWE}szSb4SaaczG?i}r?a+G4U^6F-tS^mx&^eKb6HpjKi>yc zDOJpp+gKex?8N99z*n%t3172K2zB@OC-Qr1NdV=qcKQb@c5-ZP4pRMo0TM~_fe5jg zInVX|D{$#rk&H#|=i7=Z6!Pj9Sd2w$=J|&z^{>|mR`}kv6Y0n`+0n;;xAy%4 zu-PkNGyCq#GxTy*nJ2>Z#qb#ZfSa-n_s|9{oGHnVVb~i?NG0Dyu}WAN*18$;M3#+> z@oXm;k2IzR#-1qeEf|1<(ni>U1`oZ)HegR45`M0!JOju(gUIxtv^x;WS7Hfv#X7Zd zsDwe5xAyK&^As&YjEz@ohG5R^r>TE658gY>z)#}|-$i-tXidq#hemxHU*7I}WL}Qf6hgK=m5<3Z zx8dxMI@@O}?*Rzd%o(?HepB*g2u|O568~!5rk)|S@=f#4ZOtZ20h<$lNV5d@djO>V z#C!OK@exsRZf~bk_gmCa{5nTeZ-H=l9kr-)#RU+$8k@*e8Cm+$bJ}K)rv#-O@cGG1 zcsE^z<~N$`@;WkUG5r+Tr#uI|ODK}bS3=p)!n4@4dB9AC5#V5ACh?nLN|A)~cBzbk z_9N;m=%|P5f$oznfB60DTOG8bW&5=Yi;)(iIjz^(wUGgTXbgr3{I72P#U%;aXGSpo-yGd~(-epc313vEAoS4BZO|a;BeZDSmel&Mi&uN;t7I{nO zs`W`vI6}@6%^LWCrT4CSPv5a8PgiWCVe#29XTxiamRL!gBWEp!z|%f?WY%HR7%Ywh zJ6kUyV-7>Q1PjUzIwYb+cXQaS%BHo$Jwwsrg8sJ~-Q;XNkwF2r;}hDe{o50GF3)=b zXTKGMVJ*PbkC{bUZXpW5qxSjS^VkPC6Mg)<20_q?^O`qf2)frA_aAZnKl@2ZqgAIf zPAC}qL~=A^eZN(ORDLX^?Tpq-v>d|+CjNZ31URNwi!2PVr#HSqcOZ$l;0+d+-8r(KPz#iq%x;T{k+LF z&pOC>JXqpT?kv0Il3SOZR62j!&lvor{2-9AeZU^zX%99(%p=$g{=2jKt^HUleBb)| zxfs%D4OgAhbe>%+>6JE{@o=q1nTgsmd&zd+We-NLd^pt!lxwskPs~Dtkfq;-bsqb- z6$eFXoP_AOD!yd$Tfk)LW5s5J;3UjOc+mvBO zfAbg(+x2}8<+G=<8yhdgsL7Jg&pyn1&8i2ra0)FzZDhjx2F~{-)(x{27=u&>R)amkRP=-2zl*kyDap7<)rbKXH-2lHb+bu!U2#;Uu#Gu_C^~;68G7fej@a-h$kq@-qW<^FDZUqZg9YOCl2V;s-*+Le+ zU5js-IH&ykK>xL){v}(6S&nS(6jIX^e6AgsXUDcI^euZc8qG`vG%_vaub3OGAxY;gs~h8qr+fK%Tnlz_|i z8017ltn&7L&voPKlY@Gjily8Ow3$AgJy78Ks|#gflHop~=_uQANVT>8!G53o^}W`_ zSuGbOK$rXb7vWz)VB`FaSe5sq)N@0q`>9-(ZdL__`ZJg|-Q(V}{a7`YsVj!;(O_8A zj?bey!cImg(f$Qz;50GI8-|ZDgJQp^bu_P*Up({b+E&pTu3+k`*xL5-cP>#H{snuw zwOLROJCh9;9U-)r0qEsHt>p-8LibW`Y;LF(=-{{Ir5hW%BP`wuxkuy8XuOm!8}lkZ zNTsndtMiU!z-Nql$B04QHzl^2nt8rk#)&~6P%pfVGoCbBt~`y!xeXLgy8X_QcY3(~ z%4V$-C!pxIT~k8Fpz&Pibn3@ilRF1-ar;yQV!-;(hLuCe3)+O-U!PZ~Nh@JL81HuV zvcRdxMvCXEKFE~kPazZL-yPdVUwK@&516c$T&U~>peXSMe6cZHvOJO^iFIaw#KFn8*O0K zEae3G47g8tc>i&qaj~}ipuYdMD3|)_+|+b#%+N@r;l9_kq2Kp!0h2cO@y~O!wvJiy z*Jh@iKi3`@Pf_e0G$r)^IE70$xq6%2zO+_BXvk|>W{yc<{(2qD9b4m8ye{5kOVRF^ zOH8W=wc)iIdOa7q;XUBE2inoLp03e=*TS7RoY;*m&qhI0h*|c9^2o7_AX8Qn}xBg#ucU}GNBg!{Q|l4 z!fm?r^AD;uAp-XUubL=Rb}!m?bLF{D-v4^n2GU)0WX8rBKg5p+4kKch-jZgkY&HN` zN=Mr9-u89>%iLabajoO}t$EF6aQ)LBFsU%}@u}(4;Q5aCaj@eJu{oTMp{(_>>h4V* zoi|5oi|`K2ZywJsb@%7}N+B7)ZMU`0Wt_u?Fso`k?h>}Z;}@&%6&m5=)J_zNiPxu% zc4m9h)y-!3PIvDU5Zm{T^WHEgxu(ndQ^FO{beZl!+Vt^$tM%+ZL{4=>(~QUJnH%p5 zvSR$I1*P{MX=ou&A6MY&S}wDMYA@pTea>ae1Q_->x58&-%%B^OIe4uH;q|25&!Msn zAAV|U{gxyKoLA+HHd1=S7#QB$VyZiWlaFns2ms;#=-w%Okh$&9y!dvpkY!uZ` z&_)*i>_oLXgRw5-TFu!7gfq;XqhaOpWrrRA5(ovZ%0!{3_s`%N0Ned0YixRr$93Nd z?5$zcTZ~YbobWz2GWJ2-YxD#5-cPte@xiYc8*hdWv()+`!8wW>As2o-uUfC6gsE=K z$43q?rwx8C{>?j2B4F?T55{pglE-m5$tum=t5?+d+E`iIPSL=nht9*E@A)?ezkwy4 zX>W_IpZ;cVeJPe2* z-)mD3MaZ3v!xZ)u{;q$Rd44%1e<^z+-JXn6{m@o}1I5NQc@6s4-R4Gqn4vpSx+|(J zMEmyd$r*?@@ zJ-Otj2ojGcAw_V&3CT=)RkV=ViD7wmqzew!$1r2Uj3Kug$JWN84Fs6(_NtI_h^T4S zzfs>S*P1V4CDs%@)Q?4NEwChM2o?M^1DB(i>;X%kU!31jSx#C4Xg`^GNZW)LgmhfD z!`netD4#ypPt5tw|e=lfUx@d|u#ChrfiO3b5&$+X;v z4zC`{r`^1G)VbnDgFI5n+i8k${fFpk$}Z`PTN5IQ889)*H7*?QPx)oF%NK z%Uh)7w`SemVZN**p%3T!*pJK7zXH1_UAu6DSA|-Zc?ESjDpYr9s^+6PI6!B5nhKt) zICVnnzShO;rlj3%VZ~7Cm-!@ozc(%@K4$ZF}y^u-|CO;Ou_2kLw z74qwlq`^CW2ZfYx$tb9iay_r|io7G~V`%<*yfU-GzuHn)7$96<#+tVNZewVn4v^1E zs!?rLXzmV}b^#VdKs@J(is$P$CvG@vPqUui-Cgly-%T0+6)Z|2tp@EWr&3m}uF*Ix z`UNtc$iwq4qR_|U_ZkR@u4-4#yRGTHl%Lnro&!Jexc1S$4f~0@m#pYi&;TkZ4RBk) z=|&+>e6F|ho8hqip8bC++KkwV^^3sc-)PZDxU8IN?Lji3K;lyGo(^b2^^hOY5KP*I zw?fkJ)b?Pl*+(BLVgC@p^GU;>nrr*%ggo9RCHhN^y^?OL81ei-oSApqPyNe)MUXzh zWJ!<;W8cQSHYG3I<|y_YCboaDeP~|(?v+7d>7$DGd+R9_8|=pZZH{E5S|iTH_tWLY z*b5i(g_7d9qDUM@g~`z}w`1q&7pb?LQSl>gKP>@RaGXqyde&^qK!>B?Z;P#J9Qu3L7%_ z=5NOw+wD#LNu!Q9tK0EqiBOd+yu+_JNstFcNfQh#jG>}5Q?yz6rBwZ9GjF+wE))iN z`+7Bh0%OPe~P0p>x;MNBSP{0=)g|BmLa67+J5ZZ43m%{w2fa# zCR+r5KlJmWD|MT`-iqcohTf0nZT02HYc;wp0|-Tj$zGHIEHw>cTu3H({$rw~2wlCr z-1qsNNxc0HN@2cibx_RQ8V(osz7Mda{^bB^AR!KaSubm|E@lrlLdFzjRxYf7iDo z>1PM^dDS2prfkXEc|5wp3BJ``)|G0YdyWQf;uNvwf8GVfMVC~|cx(29Eb*^&mW2$BA zA`!;6GX)Ber5G*9X1F`AmEmykZtX}EZ*^JF2K~f}Ba$A$G`hY-f;F zpX|8q&m(1(6?U175KjYsE~{O8{%65FVmotzZhXQpqnz$lAW%%towJ`n>a<=yS72Sc z0To}EGs-fubUEumA^jwgLPo)FEO!xLCgq^zv`}Je{R5oxE}THHa*n$(SozfGJy9u@ z3L5=vW3<@n7spdeT1iqaeV5u9A9Ite84fq8#8DV)T(+M+&NC7v?s*d>e06*3Jl_y1AY%*K$YDB)5FeWvDen|nq0qd7^aX?#o@ z?Wvw-fX1#`0h^N75cHkxzU;%=(Nb~ZmiX{5P_>5k(d73@1 zBz-p^F!JyZwpfj42Ds_Xuu%|b)l;Dq9jjPTmC!RcK0)z`=~FpdIZL(@E{Q_Ipf8ij&VleV??D_ zPtYswuXARNVOd=@mpe`Fr&bviR|9%P`Mf;>IZZRzh^A;8KR9=0;qodlM4_j(B* zJ8_(A#W3N~Y?vIHTl>+acGLWRe`S%v%ZC`)w;9~fMZ*#=I$0FuNi{-1;u0l(g3K3U>!fDu0G+m^yK)s?ptGlQRr6m{`H)Z$6@S*S2r(((Z<;!1WJ9PGmL zB@Cvj1gTj)-%Pn&{RoTHp94wS<%lpw;RK~o(jIAR?g^ znB&AUg;}d8pAIvfBDS`+Y&OsWFwCecAnT5c=STxlaHf;cy`+@=X~#He!W`fzcLXAi zMXh!tHD6yY{Q97Qa)N%U!B_bRVGO#GNnt~}_$LJ~qv&Vw?ipHlqq&Kc!iJ}lZqp{6 zK1scWlu*uvvSujYot@D0W<6OKv3>08rEH^?X{GWZyaGdlf05U+&2nioMcOMyMI^q9 zt^%~G%H2_6a@oQ}O2VXF7R)g_E6_N**%O$Nei7lmwa9p}>bO(rp3Mku(@be*kBkq7 zE9}w+HT8XV*xM!aZT9F7y$~qp6Pf5Mwi~Y6Q?5%Mc1wRytRBEELA5ip^TV(5*Zdv{PQNMTY>(nzNOQEDf(qu_u)x3U zENOAja7lPAKm=JZgoK>k`3K5$N)UhWID7||%iEhChE*RU-H~-toHo@YR|v4Xng4-H z)m<&bec#qzBm?3UTJUf>G$4RhMn^oQS96s342aAIffe79aI%v${z;vP$Y(#ckX>E3 z8q-gZU0{Bt)vsw1NT1AlCLy-PKo1p?L&%ptatApQXH(CAwfcd6b=v}0To(0NzlodJVRnF+ z&<|faWHU!!Qa6b?aWi>%*aEnp#&U{_nF=-em7FyF8CXST?W>)7N#DU!6isE znq92^ZMNgI-V!yJ)n!Y7lXnxMH8h>9 z6>>MbedOujd{=cm#``p2p>Tp;a1)b|KY0?*;=HB_PBvx4|H=&sQeu7sEzC^H9*;G$ z#5(^`);I>ocAjFB`45ojI>GXg8eZS$P>hb}MQAknc3C8_V$OGy6w6?(ZQ{^VCXeqXU2)VboY1wr%Y}u2h2l0m6pg}*|F33=?RJM_xqHE5(T|*So%nN zfgCmlht;8guPd95h?5gbUU9A8EPwtym>1}fWf@e9I!}g-zXbdCHuHQ_Ej)zuzosF* zEEJf6TfF};IWn$xzGAY7&PXe}I-}{;cqv&4VV+`ubi<7@VHDrjrEe{kcl9DQ%Tr_$ zMVZ@rfA?%(t-WgkR}qp}3-!744%o z)48`NUIXx_G7=yXBlkFtiu~MeF0R=mUqw6MwBL*LZ@Tr+x{y=L_cL=o4-qlXpB=)b93 zV*T|5YrYKC*H6bTF=^GkIGIvn8{A+gywH0T;H;skXiVhJcXoAaC*Y1*EI>MNMZ{s( z=}U>Gz2&Z2=jDqep*j=$#CT#Ci%LNxCa@OP0<)+(LKqpu3D2ZyO8t0JwD?5&<3}~+ zW`17Y!+A#q`mb6@QCk^BSg6Z&a0I}l}}aATatWHy)3r<#eK=nKMRrkSxMc(G%$GCHUO@jdIiDh zJyd)XUY=UxQFAjFsK_QsbNL?ZquU`DC1f z+sa573%L|FkM*0W6d70L9FG-nLfV>vlC~E%0i<4&Z?ff_2_s5{O_qJ|3*;`SWK$Vv zjBKi(wew~H6A@I4UqrkcZR5~o6!coG?vIXQ1)AjO^Ek@#;#H&qd3?sF9GPj+pRCPJ z)ga^QvfA|k2nlSJt~GvB6Ily?YH1yRteU+BUul92)IJ9)u@pi;)b#duaLv1(pDjB5sX1Yec=*e`2dr-+VLNYR{&~^xbJWr_?jymmokjacZ;U*j?^Y)k)LfcS+LXt0UMs*gAd)KZioP%C4BTD8yY z)nqeXH!#tr=&>!$v3jx$`S5Qm_w|!jh`TR9e~s(R^s@~4wAgo}>h;q`Nk+(+-lO&& znk%$kT1qcJsZJU&xa)4KdRvbEuA>s&22RRnyXGQ1(}dfe?*oheWd4mHwP;kX%+BV zP*JaZcJ9nI4_mG|G-FWKdYgyTuKs)89+{cIvafv=t_$I(5RhriYX6pmq6OTeAJTipy4(9p0qHM7jSLeq1h91`ndjQ4Ca^?9B;gLxHv zT3d#>D(=T@kwf*5Ydjg41ybGyce9A{@oU29U7y=fUa1-zDqAShOpUDQ;MyfeTZrC= zQx5l$hp(;>TgIAjox25NSyeyJ7N>f_=BkI&{etiAhJ%^XEw*Z|&@mEQ!1nVWVK(83 zR877(6BTDYZ`f021kd`i&Jpox7&wWTxXVa*1vSp>R<7mzXz&a1!tGxWFHl$b3-DuA z&^H{S<5$aVY_~&YJY8HL`oIppAPD)xJR)#n8FG79;)R7^Dbzo8oXni;g_I#(xKxs( zqlqRgc;9*=VBW{HVPvENDzp8XlT}MMsiNRa8Buu0jZh&p9V`-lETv3NSA#Z#JH~;p zVLP)d;fxz(?>_?7DzSQH0tsD4MmH4vqg@7Zc-lS|@4m6OvTMOO?l5S;A&!-jJgu+h zVl*6uZ2)x2 zp4B|m1V-q%Xg%DC&&qWf4Q-z&%=@;!1uPT^nBNW=;LHZHQx}&bRX85GCDSv3z06Mp zW5i}>N@VCi!!lD@9YacygsIEFx3xu0c5l^ENysSRhw$1c6f}v3HgV?u9+;5wgJ!tx z(J6b+_>i3ymNu~_HQ;nZ88kA0u%k-&5)#NCa{4xtre@sJ3Om~H=agWMWjq_6 z@(4GS+SKvZuzl&szeUCWq-JoMY{~F!RL_B(A26x%E^)YQf? z^PY@LLzAQuROa4=)dDkM?D0n7r)ONTbq8Ke41AMY0B?e~t@nN4_qwL$xQZ`xzzYQ3 zCO$*51`C6J4jEm4KK!c8Lng{75b-J!S21q=cT-}=CdPLR^k5XvwK?`y<^a&c;@V=hgfk!;;f9Uv(Egd+FYy3KX89?e$;0Uf7cuhnBS@l>U47# zoYdh|)$e6CX!OkvSxP>RuSMVzH6G=nD|G)oDaLSm-Qb5q*7s=Rcz~oWB`^X#EtTbY zu&baCguJz??qX}&23d;3?Y~3x6)P9EBR;?`4^S1GA`lBMTwKH^+qwP?qAqViotE&O z1v$Ihn)BudDq+ZXWaiT{g)5oXs8eq>@SoOxEmdMU!`*Bi$slURrzztnoTnJd3RNvH zic0@g9Pe=-y2)S3hOpB^l}kSj%Z^6~ZyR1NRVjFVR2y0#L$9ayit|Tvu^Uai9s5`6 zmDHL6Q6mcUe9IP$La_>L>3)k~yK@u_ShF2#h|M!7LLKqqVD$ii7mxghq+45gOH35R z`rHw#^YR?r+iGN~L;CL$(^Mt?cr_DdXyG(;+4@99O)%f8qx}xuc{$fkM#Zv)xObdl z$Tn%~6R&CyAued^6+-}XIn@0U)96q^_7c>|vt!FtqPZW%T-=3txkx$-q+(r^DR`Y! zTjmE*HW+q&*l{0c)J)UDI)$A=HJUi6^%*0~xqV4K9p>dzPW)o<;m_Kj6)ygHXN>_` zmCw*fv!XG`x`XGWotxiGNFH^$%X2sYPdqM7MvD16uZeq#R2Eid8zYXQnnPO4t%?d9 zKT{yy=TY!9H^p3O}m-Xh=u5Q)NV7dBS+kw9Dq?ASCcczD?%x~7&aMtE~mHx(u zW-?kF4yIIzLt_1g-)=zRl@gzdA^PohQ#LF5^RlaHEcLyWMJZcLc0b(%ntz=-BC#}} zGrER4duej2&K6w?zVRUGL|TB((B*Rx-3GoDDd0@?8xYh*Xe3FwT&MHo5}`^-&7PWj zw6+SoZ|j~d(qs>s7CMsTY`-|j)OzR1-2t)?EbJ223}F94MT^Z8UO|EuU-luAMaA33 z%SFS+{Lh}o{{`*-Guu_4A1^#Pw)GMn!ADzmyj3Mz7^1MFeWNoW~oW*hqWlA>K zS(m@Mw(y&>b!GQlOD!7R57@1WrbkOI++ohT7+vm8s^~OUbJ=J)?3L9VPs{Q>5@MeC z@YAA@lr|P6vgw)k6s?StA2{O~OJq$wfNa@wr9ma6f-~mf4D@5AM>o8fvU`=A^<0E) zz6NiyCEBJCm26|;kAV?;{5$HL5xZlA*m_4I#L0k7Hvh&@z9Uy?w$90#-;&sb;7VCv z?`g&Jp0kO=H>Bg!+WP$d@jIeZi@}I+v9`pZGH4fE&i*|Qht=Ry9hDB$%Q|~7FiL

    9UnWsRa=Wy|X>kGuvsFy6_ljD1_hUZEOJgRHSA7RQJMyvckKSLimE zm8Zrm(YAo$+uENmD9K&w#IVG$1{dIQO#Y@cEW{1MQ#+CTsHlIs=7Jq~w>$wH{P1GKgr8e9N#$S5?BdGJt!>MZ%vu3vh5uG9zD_|Fkrr zC9PMY`KdhV6gbemC5^>X@b0iE#Ex!fneekzD6~y1LqpI`m~g>BniA^HQmydj$e;81 z(-1=w9_BMCBZ|U_hkp($*L-GGHrX|UDLiv#hR;^Ne z$fw!JkYX^U>|em?p3t>20krjePo>AcKP{^2-sZcyG;-=Dc(Vo@R?F5|jx9Fw7wA-n zp7XyXEH?XuN|!JlrhYN9J+?%&v9$sv_G#5Qzfaqc|M0Le=X@e%QE`|6uWBB_`))ec zGZ{E@(guHTrT(@wM0!w_2j6U-{p+r!l$J`3vb?9S*i_^0M~MMHWAo1~2=0Cj=VB}k zzbd*Yl7$*4xFTnMQR!_#&@~0J)!=Yue`=$s3v$I=y7+|{Hn2X?QZ)6<7|KV5fnRPR zFkoZWPL-;w53N_kj5sH2O&|0s19?ZS z>x9`lZS7SC2hZe1XK*=&>ou_p+S<|_s&93g@R{{cm2%dCe=XE@iC)wXj9Zk7*kk|6 zOLMjtA&9fN;t5r5Ma7DgJ+a5t7|N6=5f#XjHM?MPGZDR3T~bHfVwzk#2G;p~#pTSu${RZ?kyRoF(^VYO8F* zJ>SW(qT%hyk9?L@jr$gmlZrn;ykCg*)E=4Xb?uFzHW*b6Nx%#;(>6Oe zuTd0P8axMCulB`X1S~B%!b-7TQl&3p!2^XOe8NeJUX7n!j}*UU5F^l*ju|!2@u(?3 zAEwc>Hz|bbeZx%+DK)C=XZ5QDtSVNT)-~>F5H-n(8O z!g{L?|KVsuTDiWs4Ox{`@pkDKzVnM|du_&K}2oKC}i&THI z8BkYrNinG|DO2F&HIwl=jnsS~Lrf+Q@p)gOc&kruIAf^F1jj?Am~q7`aLP07m?e`; zN!;AK3TUv;v;gHD0?p*{T9_`)iHJ8LCg$BgxRg%{ZMo7Xd1;k9pD5mbD=8UopIptC zO~LzZ7q&8X7c{di{so+Ia-M=J&Gw3vD9D;tQZqGd7Is3Nr``X_bJER2B+v9ik!l7L z`B~@n&bD-`Skdt;>FxpiS+w38GT~uE1B=KWzFCZ}u3z{EPav}(0WOW3e2S0u@+h)U z?=8=kEQVH3vBYW=Rj$&=&T^1x>A1{;-k!SIt=SI=f?8x*{A7oCwJ`swT}Dpr^Cv#; zI_yT92u;q-ruwW3{X7pJ_(=oyX@O5R}i^41uFEMLm=Ti4B?GcNe|ZGfR&`nbyIn{m!iGE$wbH z1Wr|7ie`@jPII~b0;;h~H1uSn=(z`h_!lI9NVTXjPil)_H(EW|HB+o!3z=kVuNCxj ztF;!;f4u|Qvr*C71W${yFO9NKkz;_BZf%b5vZ z8L7c(u}&&r;=~lL52YYjRo0@SbBnE0>Rp$1L~)boIcKIcYn4cNC4gvs3j63(n@~M^ zxZg!=XQowX`?Ez_vAUEf5a{Df19%V-PPOM0kg5#g^_%)o*X9Y6K1I^W)kO&>53?a` zFF>zV0-zdS(6)x77ewn|r?rkrzu~*q^BP!Uy}*xn+-K(ENe=}_WBwLqnty{ z&Dc>3&@{+lcedd*WS3;K+<;%*U6|_#gwKH9)=bXTl-m}C)Ja`_>aM>n-QH`l-fB{` zmpB#^TFJVMepAy-AA+{Xd7O}bA4SlKIW_JvltB`UC7T}*i@)BI3%cS2E2veDz}X8{ z!~+Vx1cQ=)|K_)4Nz=UJ89i+1^mRLVOZ|6mT3`lm+Ccg_#bF=rOtynfZOyddP^g${ z!@MbG>v=p6fvi1){CkN)<+arhVYtSJ!ts9jv&lC%n_ZbgYr0G*S^DaB3*h3L zihEe|MJFvh=nbK=e?nX+0JtfDX>^nvC)#1%SWIPOJsav^RBWL!1B8S=*jA;+dTmHv z5rc`VSLaPSFpYg@?en)|Wc?Oq=m!#04?S6y-H>yPXjbelZkpv5J&rA&b43=5aw#^l zl|i=|9Z^dRGKnvVJ~8@h#IEby1qhdjtAK=%xTsHOnvm0)S8jrkK~B5(p8^noB9|_XUEu zT^<0;O+$cs6-YiWe2a~i{J^|jEj?lBJV&PwT-Rur!F8s={v;Yk0A1+;vPY;&{jU3& zIUW#=Q}F7TPrND^`qWis@9Sg1x!7IImcM}3`H5edp4oo^xn}R5@1(8CWVRmV{sQhh zay-4sS%<=KJXxQu28<(je2NZl89#WtHi8uVlvw7FFN1x&j% z&0PdvpscveysV=}*f|$AAUcs*s4P9oyuCp7%q}Zl9mCJdp7NqN*>4oSF0B}JvSsU$ zK6*xGtPQglGeVpb{GF!<9X{WMm%oxeI!pPqPa;m&QE-M;Vm31mSY4VbN?&A1CElA| z#r_54ml_wuoAL1N`E zAZjp%YHj4&G7qeCCiUIv-Qy+7Q>fnt+sy{v9pe3p&VKucBaE|e^`kB#Q>06~CJ8%1 znY?uaz2yBO?9N8vfxwVJ)2%Ml7jO8N{_kD{|Av43|Ap87FL>L(;ZFYpjs<0J|2Mk} zlwD2XWGW`Ex{|Eja8vOr+7yNhd|G+~6&Hr!k|6xD>ckus{ z{Xb)e!vA6K`wL)q{ukbK>p#)|Yw)pt8&Lc|(f?=e{-OVGeA|Db|Igh0Z}|VF|7Yr< zga5Co|G&|5{MXd~XYla<9z4=NEB8Ox-ygC3KPy*|`Twv7zy0^%|Fd%cVgD!if9CFA z><0gv{r?^N@b`bsU98`~;DrCRa{q(9&GRqdWf}Um%@}_79{mg8c++|7U3@9~y9Pjp zfq{b&p~|gfGcEloC-z*;9aBGIE(hP9m8*NThPP6`*hd$|RZ4YO+?&Don`NW*;$39y z{vl783{JQD>|%K8ZG*_BWeoMVBLhFl4GUPqgLkml^?4h797lUWII}ljdVRC1WdQ|> zMVL!vJPf~|_r|}$K0c(eaa_cqWKbcOei{F*Q3C>~lmR4NUGl0!^UpRF_>r31@%^Le zS&?^rAFjeo-X&{|N)digo!SM<^JHsTi?3Jy*&nT<_f9wO3S4DriR{M+`PuR?;`im6 zLyWc;)XESo1)^y@XRXYNHVor}151d}oS553$f=z>egN{*Fz3_$PRi(8LZ|)HsD~rG zxa)6r!>a%BzW+ARbvc$OYN4ap=ix7aub0MLvy9yIRvaHyj?MrRR$~hKDZNHm^R2wDONY7Q~1+}hvZ%qbJ?O05wh(BQ$xDV z;w^DGe*~SFbWWgfQsnAXM`GQ=-U}O@+G@l2ZN6@6B2(;sH}1=h{}*i4u<_y54GrBE zzKDtdFC7BCHKCpIX8k93#f~7=)a1eFd@@Igg@L3`N$BtG(lqvO{~BcsY8EJ<=GUS8A_b2NIk^>n59 zxOM1w#gYS~md#G*CIQOQQe5a_1$`o!Ss8v0zS`e=v+x3Hv0a3u4((wS2Z*7y)eZCowS(c;F2AhE?`_ZWb{h?p;At2r4B&Ve;zn>zWj>)PgVm>^4msP(+0(Dtf@@ z?Gjz=DPSkB`f)Q)&ESVnHfU+}%V4Zgh>ixqYS ze7WOUavSInigSa^S0wqT$f+F;hk}%31d3Cl=FI3=QL{dBKKN@SBxXrcN6Ecwxbo{; zFKj$tk(Iwl_J>g*M$iR})56Fl#y0Gyi@PikCG|-H+*FN(*b!im{iPJ7Cop-V;FKmu zNog+vOh0v|@?A%S>L0U`fNh5PEGKi-)R8Ci9UNe3Vq-liveZ=YyJ@K51<6jVpH(ZP z`$Im8GCR`Bz*8NJOU%tDX1AdC195#-nV;zG5|UD~70QzN zeEq@ICmUhi=$k>)?l~hT%a@89kA3uO=P1Sem{3{4yXU;|!a5>*;Nc9T_sy4Tr8YKB z9IKk2BInmnFdNt&a(JKL(AhE3*u%_`N<#`I6iA_lb5*4e7b7N?kakHgC+IU&*rHp7 z)!l@fr~}Ggw#2rl#rn6~l#$hrRmJWNAo7Vg zPXH>DL5H~+gxAClQk5|*z5b;rI!db;+3&q2B#Q30>lHE!P7 z^nz}eZ83acymlnUKVc+x*jSiEJtZ>{`&e~r9)-JyYnHX6xLIoR3A?;VBNSpe-+o)t-G~Wyf+kCCwbEzGq zkc)z1tc&3pJOv;JZ3Zk?)|fIk$-9`5uqh5>7j3(V5=FY1x?Y`$cWcw=(P+|quvLm5 zMY%_i!FN=w`&<=XhqZ?h`GQ6j;!%QCxvAq^6b$p2mx2D+vWjS^^NqHsh4EqG@0i_5 zo-vwe+xSqMuvL}%#F3d3Zlx%AjTiGyPR4fnlH2IG3fIcNmz9n)1Bp`cC#`PY_h9xP z*vK+_Hw#q^cPLAT1ap}reQL)*;Zj_WdN(DF=HXbVgkw~7oD#+?2_qb`N zbGqSYUo!pKpHst?|6F0ZaPpK_J$yaDsrVJ>oxE~QLK#kebWMhCC4trux;bfRK4kc* zD&7@Mg}FGs?NZ$EmA$zMkID#(_W6wWg?s2kg}&v>(|fr`>xSRJc(0A;SI%UkC$`Uf z7FWqXV9vicECqet--IMR{+ zr`XNm(93S%?$q=52Tv&C?kZ7tn_gm<3^%RWKKaW;tu(GHy5lUrvz7iS^gGm86^9wI zs|D|2Oms>hGJfgS&Ywt8D*-=)4xJ5xfy;pNNfG9q-5o!^+)DD6IBQ^FrVCcE_I27qjh%3{SEiz3*FaSex@D5zE+`Hu zhQoTt+cbfkmOq8fKl;rK^tx$JBYG=b%rr)Y^=l=PURc1?myDP&*XM@Pb*woz=n~R- zRwpKFB>D`8HLGD`S5@H+9#fa0r5oT=Pj4UV*uzS=_v=llS)tre0tO>t7HKnVHdP#+ zrkGvk$UP7FP?xOw5v<$e(Lzn6wD?n!&$ww64TlNViO3`dz#r$-{~%cs4b#P%XI3&V zrK*7s5xcd4MluuLRejG!I+KQ43_YJ){9}z&1uUggL)NDW$xyN#>~nSA@mPE@?=O?q zlqhsC;Vx0E=VKSdSqFx5+Y2`^1if03vJi)4u>t z(EXlB;+U1Udgl?aFYvJlu_N;j&Xq4rKY0)T@XO6zFEQK=?sl*3+b!1DGWr)!=V%D~ z)7WbVt*qUO?FX=pQ1%!N4#gm&FvaVBE8F&E!puIwvvzyJ!o$Q<6llV^_p0EtNf3*B zw#v-=IH2q1-E;ewJZ>x&E9~b2V6ButsLf=F&^&4(76C7%v@h{6{JUbZ>^QyF;qk&b zDP9=+nS;*)o+SK?SwkxNycvyEL$YQz&M>3o$AE1cM$mX%*o17XW{w;2iBNf3L-Kx}U*@snW z`dC2lEPJmJJNoi-5}sTfUq{Q__9SJvE%L$#`w%}@9YPfm=r&Ce9 zKgLeQ6&`Cc_Abzc7C_k$Q|;I?7b2>0sT0^|68On*O4g3VcwG4D-70pvHCOO@=8MoQ zSgAa+4d1svtkFH501HQ2k<=7lQIW21xRGOLFfYj;;WR3k;u4$ij+Bl#4}FvfB{tBf zKp@w`+HfOmUGj&g?*nr4MN9k1&c`TNx1<jg7+eIhi`VzEY>& z+pd)iDVc-o`@0c+jz1gpw&$E_NY8r2RIQmcZN0=eu2Qcg?Uud(AL3x~aFfM5X4{_? zYV%W)I{ju=^U&rfwhuQimc=qHs92&#JW$V#bSTTmI0s0ewZD1SRd;m4}i~~&Se^YP*Al6`j;2Pl(R{fpu(~+}J zI$Lgv%?|=K;dKcuXq06-xivS^!I3m@{IzmKF*dh1k@Jmn(~Qxdq$LmRzKEWnAb-}| zAUW=;DKbD^s|Sa?#*n_j zFES<4B|>+h;BN#*pKgio2%%;$lxUXOq1kSx$yqyn#W}qA-)fM&9f^$63O&@T;!+8> zU{q6h={TbqVUm&!YS?4;C>h>^iSvmr!r#lLDwDoWu>7^n%>=6(5yc5sOO3lee~c~nW^08lTXdL6UmDFq;8^sHl3{RVM{JmezHJ|$9hQ$IcGc}C zS6XD+BPvW?)YzpDy`hX1juQ(Z_J)6WaL1pt5yrK;2QKn+Pm>|gMB|5n3734VI%O|v z%{~OH%YwMHN*ec-J^t^XEvVtcy}3zS*p@G%$7n7tw>rH?fQzRDt^PC_NN&7CN)1Hz zY@d28G^#AF^0wQJ=(`Tvi&bzAw>r0IeJ+4=Rs0V_u}!fFIvel3*F$h``fEw31KfiH zs@>gNICWkw3^#aki>N)XFyt$ae#SD+}8`9ee z#Lbf!@pQ~X6$1N-ry z$>zw5>jN@GZ)95&RL?eo_2e?0$We2cEm#}5Y0!B4@R8P0Ez=3ZQgA8t2(DcUNtcl6 z=e5jA7*TwfHL-Up5NN6FHGFLtYv(QZ0*Pqdh><_FR#6t4VsfF}E2!Xow!$0|!hRHy z8~UwjP7U(r-QDRl7rTkzxo$5lWY__6(Q)>P<>sEyAe1(Z-CDMj!>@@qiKZpt49h9R z{|s|daruC6R=t&Myrn;u%CCnySmJH9ji2~(aY0Qld^&C~_!<(-N9H}$y6oJZYtdpL zxQT(p7yLQj`?uF{U~*Ps!GmEzx;WnofVxkElW3 zFD#%#DUFR9Bbto~??4>Whh@Nut(#DRNLTkRw5{WfwrxJJI-|Ti`oHQ)N=-h0=t$zx zxeEM*^ZE?wsZ;1Bzv`V!_9uA?Vweds+0RH@wR=0mOIMhi@pccTbu)>aapU-mlyDb> z{;{X7{D>PbdU@IKFTkhYcJTL+>Aoq~-h~Ji7Bd7!E&?mJ3c=ZucGjE>r<}HsmKrG~ zERHjT%&f7}Dgb>Z=D}%IzCj|cl+ob{J{y~Wi-G@BK6UXs`kuE*nh_pveZ8fmuV`^3 zSIQ5S+ekUUmzm8^%7G^J#!vJIucIL0RsO&YZ>ZTwh!`&3A+DXnwxDG}QHW7dLnr2) zj{`j_88@{ci=!T46Fw48976*)#S`Ewq&AQF*fgthoJUUMHk#l-aGMyB?mF(8qHoa$ z8A)HYZQ)%*JF!&w(!O% zwm&#d#!6zpHDAK0@$@TpxJm2&Dm`cDq}qdH;E~TA*&C0fM@l zUC-}?_&gzqwJ+N`QhJA;C;HTzPal>|rhnbQ3m-?3j=X~L>=tQvQ^JQyH3qzcq)&`e zc^pWvDTnM29l16~xW&k(@-=P=R;?Ha1|Lpju??5r+%jK}sHxI{XNZBl$*1whjK{}0 zMrJ-g4E=?FBq{bI+(`6pZ#9&xOgmaCop|-4L%8T^f$tL22M*=NBqhF`F56nZnv%(U z!A8*zX(V<2Knn@6{!;#ph$<|K-UY<~H8{}fSFHu^ELc+kHPJGvGA1`n16i5~{c->^D?q(+k+BT5L+j9@P;>1VFZibkR>! z_Ad*`fY8<3D^%if7+eCRS=U5pVJ)wzC?}$^Iybl$Wf$HbdZEEB<;D^`=e7pz({0&* z@xFPO7Mc@zZ{x0*%ZL|1N|baR)4LJBfBSp;-ZOfs<%KV4Dt}{dxdECtyahoN14Sr4 z{rTJgAHkQR<`JTa{vy>eaYH`y-85iO!{GN}zsAtQf${enwVk(POrX-M@9Mi`4mX0u zk~|BRq9_42%nEAjo$*BMYlgHGl0s=#nAE=jmDZPC9sPQ%=i`|m#?2?r`kIt`3w-0X zAVIy{%dET6LCnwF*ME+-Nb=M#G_iB#zE1|;Jdq{0a9@nQx`9-#B7H4{w-~1jg2*Cf z1dqy$@4u;KIkEe`_{#UJ{-Wu}8TJ}KqG!dmAD@~&=nm^!9IutMK)cdf{b;fqY_(#H z$}Y*I5K0W@KwXRp$6gt$0c9eu+Geb}=<7V?(P!@c_L1_bv9HqiN<|o|OS;EYMp_nd z9;APA)svF_I>kX=&T#$um4Hj)Dw?peZfnjnNYZEeVL9P7l*Yfpv^oK>{Rsk0M z%bvK?&(cUOl7}tL_v1<*#}2MiXRNUGR(Fkw-zQ$?f(NYR#-nmqyuKDy;GzmYe*S5u zYdD?lI$-fIVH+QgrSJSjX<56snF>PNT zI8N8}v4)stvhJKf$;UO$8|%XdM@TocN)=;ybRp|`kKHTq#4TEEUy2`L@{PJieGd%T+reBfDRZu62KC^MB+}>| zj=f;v;V#9M>Ev0kP+=2azGE+*PG7;6%4czZt@HcsU>n%xr?YoMtZp;B;2zgepSQv7+ady)G}0k!joW9mPUmf=Ay*8b_*a(zj*w7D)->)JY=@wTTeS^652<8%fA z(FWp5@lcW?H*i`>ZVqvQ9lJDZnTT8s1$pfQe&5e7ZDkEw#adhBY^j@Y{CO@J7sQ<9 z1n%U(&-<^o7svQ>)OS7extb~v-_nY&eRrd|l9&D(qkKiLqe0N!*0?J_Ag`&u_J*(a z;zgOLOzhEh@$ivWdfc+GGm{{in_u=wN6ca$0qG**;_8?21Jpd3A}Tfxxe4~`bsoNa z&O4$F^Rk;GQ*^25@NgQ|Q99)>1MIc|d#E9&rhS4t;{OMkKxV%%A94$NhK4DS#5D1* z;I}7lH>X{z5K>2ky5jIa$uEXmLg3aC7P$ks^o^9;v%xS zLe@eM$$^A@zL-wlT=u>^c*_3DMwX%i54#y|cg!^xcMFW3_4&R@&-Yy!^y}zkN#^~& zxgck^x1Wzry6k!*IiOf2y8#eEHP3z9yK?>$ZzCD!~*8L=UgD13z) z1C1eJ!~2q<5R!BxOb;0zNZ`p68q`%8Vx+qezQ>jOvKcrHD9sKC9&aLY4`9%`*T*>` z&<5R(0>hnUm!cy^~VshXTVQ}QWn!`mL?;ev4i660Xi${RQ3dIh2FAd+RPC@$CrN}7=DNoT%SxJDkS?HM24^u7qDne?F1xI#Nvq$6Hj>{ zxT9rT3cfT=6{kxg_4L3c3rCo$K#;GTCZ2Zh=!c2TK3lpKLpl$xGSOYjA>4TxapC5u zeCj^<&G(Pvg6ceDs%Om)<*YpW%x?XOiJQqLsvBb9{jl~S$Gt~*emvpxG^;Oi2Cq~7 z!~-!RJKZ~F_Q;fo3ThWBNtcsOKy0gmZcRM69Hm(e3aNuvUsfk2L;CkXm&X`<6SJ6R zAx)^_XPi$r&k((??CMwmuLFkkiKhtqPj3f@Bd&eE{{VbUKF8IbD-DWTqmYi#4c0KF ztpHk$UH8;Q}Ir2W_0J7Bw`@;$Nf5j9usY{oy4@R8~V9ody~Q*;(LlC?WKR~%x# z>7#PJs&M2S1Sil6_pDe_^5zXjO$qj_WTmwLl@MIrYB5zwnGC?E4n=Po8lY{PvJ|88 zV!mn;HC(l1@2JCNd0)4}@h_dHpOWtULR=W4~ z`RmRItX%{fNr2puBZ<^uKATKbkgo;)%-0&8+U7re{v+c50BqbCgDH*VBi%d8HXSIU zp-?Y)Oep^V;2$<_NQtZ(LmZn%Z4589zA+gdUAW?B$5!;QD zC2CIJ@I8k)y! zBy)*?uF~MIz5*YAdNt$s@sro>#uI0A7hRcF?bjrvN9IcpA64N~+2iauj7mvp63^Az z_qoI-BBRHXUe%BF+vdMGJb09WqS~tvGLoSwF{{Sbq;-)fChhZiOC2J&S+aNp% zIXelG?c!bx6KG1NMZ1JV{A9-0&3H2W9lp68E#z0X(e38~#C3J$!~{pj8E#Xrd7AJ) zPtIwPk1X|BE}ZM%-x5Sqjm(c}H}(4C$3YKcA3G?(eDc^(^DVLP8O zuer!Pa0QUr4^1mO}JYNDrc-dC6Jl72*0`}e$>t!Vt5@Ze8_e`k(c$dK`&@g4Al zZkf47WyEj2eD+|Sje~NpugtKeJUgimA>Qen+3_+VV0J|h&7Ro~C~aQLWO8dIx*pFG zY_>+Bz;Az-Q@GzA>@y9_SyN#XLdw?QL{SeFO1Rl{ynw&10KctgL4tE_lof$ zOBKDnsNMJH1@p5}*jeHu^PKiSI^&)EWj?-hcYa)5YG^<4}nd@ z7xe%Js343x?SV!J0!Vfhc*c;_xQ-ww2shLLf8TcShCA|F;W&s2q)Q{oTDhsH76OJD zQl!um!*-6*SYqDAHk1HB)VC5)aKufZe;of!qSKCBADsho`vS#6G32+0si z$ox4Y0!na(iQ}Bqagf5p^cY}d^vG(E(J})15!!{h7EVxbSeEiGI{EP!ej4xD(U56d z_|$w4(8)Reycm$x@Z;O*jwIydsfNBBO8ZYRW5kCexxQx_h9{SA57$1$ad~0ue|`P4 z%eTch9vQ4l*5rQCo9lf}7arVKXU)zCBig(@-HFDH5=wWe7HVRnBQQ#KlNQoHCTi2D zY@6Hh(~wM(W1T_pB70>Ul!`LV-o?|~5iSn$`<_Gbn?qz5-jOH?p7=-M%fWEg2ioN& z&zMnz#sK$w{c4gF#}0dsYF1)`9{b(m&}gv8$1L0fzbK1>MY#=H?IQln?1*n~i8upH zZgGsGMIg5&n(?*$IGrh@R*K>(PrP;@BaC;oiJ(my9YeX7ci+yW<$Mol)+IbOA7VCf z=P0FDzt0S4?-^_B@mfA{^e~}rMWT?mEX86AA-3m8yd_5V^OZ{^HicEJ_*WQ|5^l`6 z8XHv{kc8%kB&2hs{BcnL5v7V*#C-9?cuWRf9_aXY$?qthq)bu2%7{yA*jy;V=b@chg`}=)8@l);gpPyf^(fn@(>%YA_`eSxu zmwz~5^{(@OIQN1L{c3w3dCnWJeI2}i7(*UmL!Aqkl7=b5bP8$Rlgl!{9J(eua(muH z{yWEq-y;3~>`eQ@Jh@KO=pmet`XExFcv6QN5+Gr%q2 z2M{zo@hPSRyBo$KIN*}voQDyva0wPFA!4B#kv!r4Pv4CAJ|4W~j-3*2Uz{y~#qcOe zBIHwGJ~GLYwQ^qQHW>J>{{SmE{r>=cKYW;#?!J(7tRdgHcaN&i?TYTDv5!`?Z#-g` zHibP<-IQ!q4tXgB&j7jil$2&Tnr+g(*9F~n_cD$b=EIL5LP&PjRBdE5c^lY6H8zl7 zCm#Ff{{T5W zy~sasFmL(G-AA(RAbErCV=QKg+7f?vuIdPq9d2TdDyB7(nUS6=5xqG%DuZK zaLy~4hR`w@*u~S{D|l`|qI;h2ahy{}v2{EF2gb9sLGU8<4VQ!yfkG+o1p=;+#WaPQ z#G`GE53@xQPaBAgpzE2fcRRrhNopnh@;-7UYrK@JQ_M%kN+nE9bMbuEDK^S0-ly9m zZ?>h(BKz^e#z=jPfj9?zWuY8O7_wP6lA8!0{ypjAz)bSW5RGH-m(9uNE7Jjq*`HXM& z?dP^QvG!-jxp=4f`Sx>fuhQH0eKAWWF|arS=`0xY@yBO7w{!3L@0B#JP+cBHTlb7T zND&XuV3l4NsK3T8N~kgl%#)LtiZWYNK$sYTw)jO+3n<95zW0kaV8^-Ii8<> zF{VzP_KD4Mz3=M|@|UmUTy!}TB@Azen{Oc$=UlC=R(XayHgCDxTEYNDQ?n4)0O7=BvL9n?$ZV{rx^ zW@0Y~y>~PvxD&c1t#nFMNy*DfDGh_>-QD}-H^Z5YR1+P0W%t~g--vznk_Q~>Hq8Cm z!XKmEsHz?_PZ}*9ra8$oxo$?BMZ!b&$s7w8n|z(zu?4pxCxsB7oSlN7buD)@;N!rR z4Yc?xv*RpzW3`$Q;tF`kKx#YB&fHf9SVk9|k~0)W!eOrTgGhk?0ELS{t2t9Z2C4 zNIlhs^2TjlLW2;2ZY_ORk_M!N%uA2}xWjFMq6;#GsWCeDDAblp$h@m6N`Zm-aN-d$ z6_JeC63cKURR&n_6Pwu3creL0Rg{#gDO1ec&Kg3Vy7Pd*K6`eIj;HV29^U*sn>Ca9 zA28T^p4h=t1arq|)K6N&W4ZNf$3L7EGtB$C-n3%hzejTN-8<322h%wAzpnd_zOYW_ zxgUcX`!DMpkZ^ALK5^~T_V0~D*q6J`zB^{m=j}KV&xd|vwtm+iH=}_(;&BZ})3kPS z>HB*g2>$?Z^Unl%w}a#3A#|Q~b@JjCvHw>nJk$*{N??%hIWX0AO>N4V_0(^bEe&&(#6c(31e+jteFKGnGXs~{vA@7&cw zV+06x?X?QHiq3A$r2cq}Yjz1M11X{-Sh7f$Hr;@X)SpkTFwt)J5PvnoQDrh|MSU<8{{8d!N7`~; zzufNQyw~~qRh#9gnvawwv8PsTk#~XGu#li2B2^~F;U7-g%L|bS3<&N|o#hz3ggf@# zRp1JB=TCNOd}9Cry+INewAf;AcH_>JZkhOuIo9rPw!Sj;J!!=2sL1#4*!ajf_KD{E z!;kNY*X`|(^XndXclY+j^P_bQcGgBD^N%mMagGFPPaKGq!*Q&bI|5jkV$voh%3tH@ z?Jic2=4cb;)hRyWoyt&AOr*#S2qYA&CjHClN|6RdFy%BeX%qxgQ~@c( zOOG$36oDfhfr0e!s9-MJ-$0QFE>5s?>t^X@qF)oeB}#PJH#@> z$9LZohw$U>SGF%@LEd|P57Q>~xHDDH*`Iv#dX#o|_pI$uRYYnac&f(H`&~vgt-Je? zJhAiVHjc~{!+P(8w)(l)m+_Zge?HPnE_gW_*zURBv$Nhho*W5|@e#yaULDPM8}DBp z{@CbyTg8*`MC9F=14Kc9as#qbz=PdO&7AVa-S`F+29*bOfa&eR?p54GS_8eKe# z+5+AT`-E|F#7G2>W7}>B@O+3j*iy<0fcFTMDq2o|yq8`64S3z)$$j-RBtYHR`_?JK z`;6=JBlCl|_w;?Tm37BFb?uWpeJW?Pcg-W{eR#;2+)bBDR~mfa#fdMyDsEZbVN>0j z@|O!0{NLpECUtK@!kJ zG-QN-82n*lQYsdVK|rb6hG@jb{<#U=5V}PBBuB;x1tXyVBAP6To$C?CSVB-lC8AQD z5Q$jQ>U?nCN?r&Iga-A#!~Mm6X4rP>5bcxLgIe9|CQxoWpqdM!xU2$0h&xlSzrF_A z+-~(hmo?P>ap~vV8uj0tdHQ{|opr@x_3!-Rc;oi{4n#{`YRreZHaaEk^ukMl@RO4@ z^xb`Mv+u4jPQJgk45#~FzH#k;Sf8VvYs`Mx-)~+y&K|h_vJWxaXK$P(aXk>t5hG(C zEp$#n!&=&;D&&ftm1fXnAWPU@B~leIF(yu_uS7Dm0IzS-T{`O^EoFd|O!oB4_FoOSg1 zXY=@&e~i+c6!2a9A6%gVP)@>>=3{;jj5$8P6An9PhMwVk*Wc}qd{=h8qp;j}4A+M) z+{`h@-wkVAe01$IpG8;Xli9%!UfcG`J-j-uZnc{C@Z9pxi07O<-AB=3lY7p^;C(c_ ze;6>&G?71EUeVj>n|srsh@XL`;P=43-tkRu-S2K(_V^B=i>*!^{;Ipawg$49jqj~Li;_Je$Q$>h7?vwv6bcz!wEPl?%$L&;P9 z?GD(nyF8ordtly82idK(O17q)(j?2BkRVmeX9D)!wmyzQ#?woKwA`5*a@PYhF&B(z z` zgW#Rzpkamm@*nCA#4V}kEb-f(aP4otJ?N3Gf(O8h?KrIx6ge!#NwziHB~bFAa)2=; zL2nz!^KTPvoIC*xL%pu7_(Pb)IS3p`!Dq0_k?u7;-zr!Fy8~`{ca9Qbu4X|2QrO`c zgPG7Om9b-KV_bN{0ysD|07`TzA>QG|NXK$)k{9qM3|EYtx)er4gKlU{G0e=!DRGL_ zEt7#t9zDEM*Jo{!!Bg#ga+zM%FNn;Joe5eg0G3L(D?6+ zPt5L?sPN)++DzYj+MIX59Lqi1Y>~f{Awp!YD+zWCAEf^Po^#?(-?l|{_C9l8Z@qDZ za3-c+dH9znC$GLM?)?k;{PEAjop!%I9e2KD&+PcE+L@T zdo$np<#9RV>(Mx#vbMlsxPb&xQU%MgQD-e*Y?Q@iO|->uFol`{nT9r7OhHV@yAeo`{@=7?nV)`bYy(S!Ei*xUPRce1!8F1XOVb`YRug z^KTJ4%^}93U?J6A&I~*KwKy(HpFOwErhb?;`};t%bDH;^x#Psv8guvT`v=YI6Hf&_ zp_@3TpL}sYh?AaoH}~_EKGoWF3GZJ_Xj88q^3?8lR(c&Rg=W{{Wkx_a^cAZq2;0i}m*AX>`}NT5kOB@y>U2^yjzN+s_%^ z`+h2SJIA;`8vZ%S{B)0uqwzMacjrRmIVBW(p{gnQtoi~CeEVTN)5H=F2<*#}L)ekH z)R#Q#ag1OD5N1ku2|!fAV|g7(w>T{_4G1A7Cmytyda9W6nZ%V9*)s7=`2PSHa*j9~ zpczDA2!w-}g%p^ic;{GlCrIoV?yEe{=Le6n!Y5GI-gmn@s!B>c2+XcDb2&rI49Yd-`Hmo6Z7BOH61_8i%u#&dmmgqzl?@Y$i{{h z{oikQB#)%~SGSy54!YwX?k9k&)fpb&kKa1#@Z4NnE=^foP6$!LPY&QrFrpYft!cM& zrW070BOzQ9Vq$0@o5&%CQ5FxG9ase@F#}WxWpU4{Co#?xZA=jb}W{vRaQSA@5g-6y88RqZ?*||4yvw5 z_`*z9iPSbD2l)8wjDzw#RHvUm7>H1$W1oGzXKU`~pV_&dZvabdPs?LFQOxHa@%K)e z^Meo9n(o;#{HP6k1UJ(-^A2+b-o;gh?@F%8>8EQbu!%*#QR+y zRfKMi{{Y!EE`N;Rgaa2glI@cg8U8PZX78Lw@<(0F_&d+evMerr{CzQ4kE{FcauG4f z_3gu=F)|SeiRJZ^rU5Z*h2L+z^P+Zd*>>qCdr3u!mapk=M~AK=n69OE6ngxXNt?(pZ`{NZ$ab?=_~)nDgzop=0Zw>tK|7V9_l z-C%Zgeb4gU9m zkbhnNxx@DR{Nu0U`a_K$Uf;hJpN@Jx^XGj`nCtD{mc0uEjWPJq>@}WhP)soe9L@lU z3`0;mM$?Mf%ob%*D7o*K-}k3@OS%Qq!^7sB8QCh;V_b-KViI@@G=$cojRhF8C42t> zI<)=V4o1AR#`P%UVg7qn{{UIIxHUh|$I~NE^7!q}J$J8&s?%78+POQA-mnk_albxZ z*`-+@j$Sc6qp5EE>oli$PSdnFTRSt}qIv7s<^RKmWVB)jH&i?>+cJHek=p$4< zKar2pJ_A$QBi_7XNcP*$dyU+8_QlonG8|fXq}bDuTCvkJ|{f> z{{X)k_xJnzV#N6_ekZ>0Y8CN+?ti8yNusJ<@IQ3#1nsYQJ1DPje0MYZsjqzd>+7K~ zeV76>^&TVa;43XJem?mW!RKXnYmz=Oe4X3)sSG7PA8_rzwmWQnduTbxw}0R7E-2=G zdEYavk7vg}8o>eG!Yj9c%PU=ul^n={_w$M-L8!J_>tAO*vhgbvxIzHS10+L&65Xx& zH!pqBI6+O_wLoDb0GO3^JY+6f!Ird&5REFz%!LPrRgqJH7$}5{vjiXt6JuvO;Hz8$ z_w3Wa}nBWR*9~GJ7ptggeyc z{?VG(iTXQ==gu70`@@_)Fzu3EPr`mO4!Wlq`8hY?nfK@{N$X+lh1w)AAI6<3Eug9bJXW{kqIG*n7u(U=MbAju*RO!2zkz4 zwr;BDz7_Kwc)|MhTpVP`BWC{q8V*cIcrdZg72n2vxMkztC2t6I$x!pZwtagWm>JUK z%TxS6xu0XyRAYK;TGah7sKP`y?X`Y!i&6@MnpHZTo-rbX8Hfo?xZn)a0@667{sctX?!E&X zs%#DPLIeuzu1u3jc2Cjg`TRlR0Xkv6Ib(n3b@%ay$H!l`dFx&0I_r$@oPWJ<^mOVo zzV>bJRS#9$2A->Rtlyt|`*XaWr03rx_kFy1{_!oJV~^O0$6h0^zID-`+pjKr$Di-# zBVWH&lk?xde|_X0IODPJoqw1TI{R;k_rr15j@b|Q;xkXb?aos}-n^XRyB?j?35Ji4 ze`>wwXSZTc;{KRdnDam>aJX1?*vWe0oqJ)3~nwtn>YlYhQ* z*W$mNojuc?{A9P(_va$Va(=Y(;A!pPvq!dgcRAOY%{(K=h^#by`QHBdw}~}d4{hYv zpT4i&V+&Km_O^Mfp?*2<8|N*qoj+WSouTbh?eU&9^rydRGRK{OYkJ%>^7F^vKR!+; zupEyb*t&adMad?g%L(IpzYX)DKioKL#rP({WY>I-KAiaaRvtQkD?7T?{j!xM-@AR~ z&Ryg*LnXKx6jpH4FwK0+eE2^b0Q3W=_Ts!xN2yrKTp@rLqCKNk~X-An+zqsF@CKQtqCT zHQYAGjuG4uubqqYZQr9lgzP#8YQnINh!}^s!ElctGA~5Fpio%$c*)#RqBU9)L3mI- z(con$XdkX20xkljNsxkNtle@!(Z62YKb&)}+1Fg-uiK+9uCFKG>oNTPj-5s%8}X?6 zp4j?c9~T)~*IoQ#$48%}=U47|#YFY?$*7Mz{lCn2{eL(=J!s!-zR@;p;*sXFv)_Ha zzS#c&21n1u^MNzh#Jc`7U3Jb!Pj9|g_H!Ig1-)~+t>R9rpSQL_3EPfmiq_oz@#E&Qg7PaR)dKM9c25duYeBdHUHMrv}Iauf{n1eKgEm zWTRbg9Pj3@N?e-CZ2qQ;-06_9!qt*j*oZMY>&72$$uKWM-Z2}g-|pR&)0-Z7w@%Jj zp8EOE*{{da-aj}&KY;A;8{Qw^-t%3)`u&q9-}e2Q#jou9UEUgxzPmXV-Tq&$ZS&V{ zrrO=Mg6doRoht*!IlaDWxx7jfwf$yIlYY zyRB=e6GCWFBd3{NJKf zynEGlD%OGY1?_<+q&@^QWFsZCt6bC8%bJ~BWs}`4Y+8ZV?1_#_Bn28V8I`Tj7%i-w zniYcbOaY?Ef!M6acy5_aMGXW?sS{4EabRFF zGBM1kgaK}3FGNKo5Zow+2#!8nwC+Egna(5$i)7^w6RbPNSQZrOFqBZJgK=qn4?TNlUwrNS zeX>H|pYOG1y04!3bzXnI*lXue%%pXBCw{*8cK&?*>o@zvalZI=ci+l$?||c~JmUwi zrU?%r8~Tx&=i=n=GqkgsH?JOkhVor;%tsL6_~(3S=MQJk9pzfq(K6cafHTxm8Mui ziD600qsq)kNAs7{2GjAY;#3J77E51mpou~i0Fs* zQfwKjje=y=6DStG_^#tyI)pct;6XB9WMFB{-Yp13K?EC4O-r!Ii)XtnXJWq3d>IJq z`NulEI_S^7H`n(+sPV4);dkF`ydQGCvF8u(Jbxcgw^5xruf7%k0Do-Ne>^yo$38wf zoa#LL`Nn=Plb;;qpIxf|0377C&mQ+&S(EgSwAVcu9&Y~tHO6-Ri~6d!8C(LvV{ZB% z4wWLnpU>tgiOv=z*14YVe0sC|!H&4&cZ(q&FUP$0#n)Sj{O1;(y}NN|UdMjdud3@c z^YBcYj`^e7CdwnX#wW4CWxmSyeuu_NP7fFau4lwBoZ@-ki91n-13&KJ!0Up;laC(WJz0ND)i@%;|T z`cAOD?g`X96YtgM&+PmU`oT8!EcMhC-cK@Tyfb*Dduy_u>p}L!>N{#@^Log2%*?Ma z9e0%XUTd@CiT*QM>5k5Ew#a+e&DG>o#ZjucftU>Z)AB~$*8679+m2Ye#W-pD@i69? zy?MW{Mn~d1U7j19=i9Y^5irJAR}{=8yxiV=0*07Jl-QixefT*5@MNyCOeMGLCR@@!6!p908;pyC(u+H8 zG)m+e8rg+nppg>5M#Q)=Z%YE~%R+l%9_o@DX*^Vvh1Eh7DI)DUVx2CGlyGx)eQ5-M z_b0c;MfZVVNcOZRjoQRpu|lK7PkM~LW`UR+#I?&EuBp^~YhEvmQHhoy?sz9eD~@ob z9y|QMOw;Gqdh49)uXiV}$LZG$lsRKMm?!ihGx%i8*VJ^9BAtdztkA0C4N^ z&1SETe?LrN`}^nf+hhIbKYjgH_{GEy!fj@)s+`ZKBgYgzpEQRxXKxMtL5fuUq9Ju9kp7L zA=-wa;|i`DIQH#>!@2zP8}kD&PF+(z-oUt?U}c{u+7e-19MN7c{fKKqVL zPJXrTZ)}Im=~o4Jp4{i#jUSV^ChI%>`#vuB^OVWu^Ut&k@rsH5sKt*+%3<(-o2ELv z>z>&Cysz%(2i~52h?m^Ne>E{pLTM>#q2G zb8To|eXF~IbMzXh9>Ugd#i^xH`wQb7>x}0Fhi{K)`fCpN%dKl65%Vm^6t5E*^7!`S z^Q@b$xu2#Ph~tm(=LsHuIr;O6VIMWFZ*kOTPuuyy3oZ|3n@$O#8!kPNNb5UpCJH>yTVfP=J{A0P|`s>>c z{{X+Y-yrz>YKYl5kIt?~p3^w}diceokMZw$(}|zoA?M;BiuU6jiS67q`|CZvelMKx z>V9{VYu~8%$(H{B-u6K=V`uXMx2K%v{(F?>C0aqfFQe~kOTpU!mW5eKg8BW3w zm6yQa^I+58>872Nl2{b0!bE+uRs$>Aoqlseo(Z*???m&FMO9O{9faum;t`6ycD-Q{ zKK}rmoR#$J`j1Na{UJd_D2Nj?pbaK#%PZphA4eT^@fi{AuGn=OoHWsD@YKW;Y2$oe z4Qr17093>y&xU;G*Z7~t^XISUI{f6<$cW|ecU=1K{QAyMJwIB=9c+}{@ay9fff(Aj1c?mqplzdAgUHUv`pAhSf_|F1iMO_66`Y^Yh ze$x-mJ$uJJuN;N6kqjQw-5g-%ex2^MQP(?r$Itop$<^x5ztzUaqloP|zTNx(03#lc zwRf``d5?{L9A`alC)*6aPj4Sb@0&b(mFI+Hy}`$g&yUML#Mfy1VR6KWa}a)5nzZBV z;%0NOnlm}x`wjX*>6zmhEX?m&F&AWU?p z?71@@4!)Rn?XJ9I*0-bh&4NU6uX-iU51srSrKR}8`uc0?^PRunk8JoO=eK-!)#lMe z)b+&Y-}bF}&)ogIc+cne#oz1H&hyx8&Ox%tj&3_YjD%nd60k)hZNzx^-gszq`Hiev zxjnqHTCnnP3-j%Q?4&ywQ#UAi;~m_k7$!&n9X04s%tfLSv4Jv@NQhGlA(OjFtIH1X zaMc)sLr8?6pqddndsWz|?!=r)kWU&=WG-E~MJ0f_5n4vFSnau-l)=DIJ)~<0N*5&< z8OZ=<>ol&N@6-q(RnRY@6diA&03&6*U=Tq20VPPcL>|uA6wBQ8+lhpBi&I814P<^Jj~;VPJnvtB z5sTZO9Y(T$u5cNQpfagsvMM?vXJ1>%!|nIDqkXF%+s`rQKh+Q5{qSV{{{Sc7A3u-g zb)8;X0PqSaQz8$`vIggysK+Ag3Lwb_?AyI-yZ*%`Z4aV~N5AGfiE zG3SomjGcZzjDKnPd5&|ZkMkaXzL>(sd$RbR>-oV&;6FFV&UQ7Y+6l^hA^F()xo^LZ z+pih1=g#|Iwc)?#zn(Xb&1-#+K0Y(E+hp^9);-5iGdCReT)8@!KY06P$o@ODjdsfe zx(}|s&JL%Fe%#YjiT&5#os8#}jx~`Oi9@@B5Ek{{Yh>dj2kR*{|le6^^0bi0Q~+m6<^E zAUX^D_QI1Tf&@@XOcAnp`zpGK(W9iTkQcAQ#0k1I?|sPqvX3GN%F2n&KTNUE+`z}TuL-_YvrOLX?Ecr zQz1PrHRgl?OtBF`+A@SYsocR}6J*T6UI1qam40PNae}fZW^(KoWW$qVi%9~a3m_nl z+|aqiQ7$SPQ>LTYjCV@_WeQ?D=1uPmq`K`M@nRQ*GJt7nS)Ii6oFWdQcxJ6!{?ps` z&R=Z)`ucv3zq9qKNkyf@9p}P(`(b~e{Iwa*oa7^O4tGuuomD4!%!5a!IKW{}o{{VWY@@C(2pTCSh*GFgGFyy`dbGP@OXOq1D02x6o`+P)s z&S_D~q}5jzXWG8rJ+oSP?4RZ_?)>Wb`HUbeJH5?rcdXib&*YKg4Nrcz-z@w80Dr!D zy82VTf2^)G*R$`Fe%14)JjdHSc=1(U-_CQbwPunL1viVC`3*nC{{R`W?c2B0pKdd> z9~C%KeZ0L-^OIL!c&B7+ZyIO#`oBYl`@`z)W_K989*!RHVf&&w8=MkIh?H{9+7CCz zO#HF?$AdrL^B&JL9v1$&v*LdoX`iNZ_tzfhA6##b@H=GOY`wDrhb)% zAf6#J?@Q(KtO^@kMa{*C`d;zd1qInC`LCS2T02p{ZZYC+uXWDc3eCJi$S=UCZ z{w9$BF#p%8sq=H=ie8z8k*}I`Q+)6rJ1bPajR^6kUlw(~tjG6iUtx z*T~)VsgQG62cbk#>2MQ?oVnUn$jyilW0eXKIp^GR4zX3r$T18{Gc#j{9pB%6|HAwI zcyF)gy;Ax4Hlw)CmJsOmIRIbF=M|q^4A~4h0D+ljEu7XNY_#OdQAqc2x!fJPS47I| zrlvJ|Z6&9WlI92VqomQlexso>ZGb#7DQMBi`}{w8zN{AvYkoGGJc)zah3SnC>TFB= zz(S`pWf<2!{Wyf#nBjB>4u>@KEw|G%gx$RQL14}dTsPo`93mLWfjBF>JjboEPD0x+=O|Mkkrvila|@iFPr zGe2-nVJDSkbf!+rjEY_PmKOR1WR+X&`ug&D-|%09=ZxOFziik$Y^(obPf$~_SJ=xI zX4)6ieq}3dWm5^MW8o_4BiRNYS}zavK|WsDr`z?SAVl84@PgRG)(?+LC)+O>t(N_3 zzAf+m$y)PTz%A4Mk1MV!rk%yZS{3T0UW?MZR$L`a8GAxt#^EcVT2vbL z;h_D%`rUGN*cDLNyBV)~iaCeJHLzHz#uQo7K6A+WJO3hiu_BV)@nla%&?ivn?`;-v zv5vv`PBBDL>s7|C(UC z{)<1ih-nW7J`qF;U0S@d?!hY2n*qGoGd;F50s{-3eCUtGFe~#s655r#>vvr(TYDct ze+bo9pjVmj$0CQ2)3<}mH7#nZ@2Ifgc4(7JhfUN{q}HCyDbyU_%VVC>jUys~t*Z}; z+)ift!NK|olU;%uxZ@5bniPvwC?^Fi@fJ(zfHDCcRNuo3z#`>HJhD{bbw$bGGcCY2 zQlz~2LJ$Gkc>dCdJhOrR=F1M%#n8?>=8J}`(97sXKe-3^Ljem#u70}`UKml;ZcMpo zXol+hpGaIS5z3}S-4KI@DP{yY$gDMA63^OwHFD|fz8`mzf4uc^e>~!2;$tb@qN8;3 z;m^HCGmC#*gk2n%+nau{YJ6k2yWj3U<>m1^Uyt>5^~yghwB6$-ef~T#xBzz`c>lX& zx0V`}yk14rj5KK2%Pb6B81|~xSxiIeI~_iyORs1=nRTVac3^xFu^ZC18Ot5ulH6&i z&icwqPpC1guLwsHidEY+KQ9TD|92_X<5SG!+!-{$Y&=!(HW$%}5UtFK_*HBw$qb|} zQdWG4DP*-}Di2SJD{tpfTsf4zmOEZwW~e<%nuk&mR8m*qyxEp<7mM9^4BB||I9E_v z?gR>}m>m3{m`Emz1hz~=c5 zQm?wd11;zmPG+uq$K0a;W_1f{Ja3f0h!TH(hiN2WNDkBH+8*}=DRMr92fGZqpoj5* z3U-bN4Y&7V@)+F(u&Ft(t|)&OoD(EK$oGb_hpAXDQbXV7S?;xlT#y+*gk;5_!(1Rq zn`gOYyv!7g|Ku7IZ5iH-l~}TiO-O`!G!3XTj1godz*{QyrG1~yfGzID$g${YRwU}P za4wV=6hich&Vl9OLRC2klIL2V%Tw8Hu;TB8VOwcAE9-)qVN?*kuSX!*gv7muR+9t2 z@FzYnhLPhgXjtDfPY4t^XZpvVRwsqS@XET(!P_<#efcf?goNmNf?Ag)`|Itv+T?gi z$h`&w&pPOe_A)B^^cHnaN9rme;MLFXH?xq>pT>)^m(4u~Jr%@;)FRiFUzKlGynZTQ z?!W6!Mt_mir{Fpz^RLb~t8)#`<-127_&Aby%TZR#Ogx*F+n_3ga#|~p@XvX@<{u!T zc;0!BNTyLn&e^`{PpMVT2i(1}`Y(&w(nw=ZNpOwRhX`+onI()V%D6B6fa)xE8E zJI^;B`FXj-N#fecg?_VB!_}r&ViexJaWHW>bLp|PG9&l9ll+DGxbxB6-tj`A+*_4S zvPSz5FUGp5uF_J_bvd%$CKFWcJ^BxLx#=DF6>8Y(H2yp>Utf^6B_8Ol84!P%$yw#=WJ)J<&LcS z@Z)czWi;f^2;5^}N`AJxngPE%0PsTIyI}pU30XqJRj%v{GCMA-&JtS}!}GhkO~vnp z`BMcxTZ^;gLe!W!gU&=}`|6+Q*zx=J+}2k&b|@_kA)RySSn}*y`iF!nwMe`O1CN^< zQfR`Uoh9B%YAV$xE?<@YHDZ==`hvl&iP4*v-$UPI$EXkq+|)xjdk7*7O=*2HagfhJ z(@Fts0ZG}xMr%rVSqCl75L{Lk{Dr;*JD=bQmT+tvlKJ1Y@XazdZ|Q$xO8@`yoZuf} zY3D?Ei%4sY?Oc7tOoW`qqj>>39sXQ?fYVFmrYM&PVZ_cpi$A_}Z;VHUt5l6nz?)P? zX`^-dqxkDPaXl6JGdF~JC0DI1WW z^KAW&=AN63e=|F!=ljg{lg9bhedl{6N#YmU^N*2j%z-;j}ck9p00r|nc9)my2v`TkX&!^3w%|h+%jvGw(1E-RUd)R z@MQu%GXz%_5f-1vHAabY0IxF*3!Y{0yKm6B*6So}%v z8WF&P;6YD*58~b0gCsY;uzu=&aH8vm13}ex8JY_DW=z z{W(L$l2tt8fZ@aM;1f<`Y?bz#N{^@=XIXbPn_2oBs$plo#*xigu=EE?{pWjRY*q3W5)n1Lm665a z2>1)ocSr!ztBY9kwWUU&qEz-)yAsq=ZG-6}GI)-q!H@xvpzU0=Gx)^{oB1 ztFdKrLDf)Be|)G~qQCu_#@Pp}CVga)G|Y`HfWK@tk=mTFwpm=+g&-;N4En;v+wg zeiHSL7_4sEWB10|`*q`TemooLwDEs7k?rLcSr3Bny4VwqUV@N#K9Atx!`|_pP`f(# zsymO}v-l8Guh={sWGn~RC`iioCVgJQGyveQ`J$b*-by%`gSUsqkbxaLPXY+zrWkM- z#8yvK4*c>R!ufppWM2)CY`I~|=|EtCp;KE#J zOgZb0^kFJLJTO|*AZNQhrG;LGn=;*ICg8k(L}ptAuk+u`Y>!@ys08rsrIGm*UXIa! zl-5OXc(}C)Kd={8Oc*FEcMDe!54;B5D52yCoJHgo$ZSuL^ngIw1wtCI&taF^$N%FD z((B?Va-$&2cnboFNw>#ahjP~fhKXvz_}&wc^4WT{iU6LX8F=kf7*3@gy@(mS&i^FL zE8k_l=K0|-+i>dicx1Y)-9eEcjz4fcL39z|j&PYzXzPe`Vm*V`%NpHxu{Zp~qzU6??!^aKw zxTlUQCw;%_sfkqw+yq{-y-*O~p*vFc`EA;%CT*~e&&WS|Y;XSp=RRLGr;25CnbM+KCt{ z0unS1Gw+OdR*1LA6A8Ncw9_43e!8^h+!jPxWBa)A*m3%?Nc|SrjAj!p`K3FPG1_j8 zflo2ZkI`v1JStuW0eiTq?*|A0eeA|Z*RcgbR{s$*f8g&UrdK{00f7+KI%~^}&w{cI zbAPD~nJHViQf=8rED15FDnf?3{|tYH)XiRg!kE@8yHSal zYg9_N>i+T@D=N;B${V*touSB)nKo0$HsLN14Feb6mT?n-y;2DTJAgFJLlcU#hw0%& zHH2oVrnw1moMc{Zd>vmdoU-mXosP$5N52Yeb5RZHkMNgK4>RF2rU4qjC?G41)8_#% zp;r+qLEhlMeZf2)n80{$D2#t?wP=gD1v9({>5bnh?)gCb<*$7dGw5~ZUcI^QeZ%Ts zAvu$53kdWK^1jJogrXp$e+F8tvg&Kib7?UQWx+rgx8Of^4fomnxs{{l?fr6 zn57TJew&h){lZ-lwTvJam`t8CqyPp-RW{Ja*P6LK%ndd!@orvzp zPGQYmP>NXJcSCkfy{-BxMoPaw&lY5UPV2eDi|agOP^!bMnVmb~(KhK91iWY@QI$*y)WJ4(y@`oG{sPk$W6clbhm)vk zu&MVOY~G2bdh#kfo#)RX5?KRsUi@go)O!NXR}|e#Kt8_lOSqlcdK!beOW53Weg`8! z3gD<#6Cy1)3K&Z=qez($vn*#pB|IPM6rXKA#CP2$`2!72ezJ!B7SVVs2ytAk4x4J> zGEG|pA*%!5^XdXuOL#>Bg}Y|-?Q&t1%=SG_edzd1Mt!O*ki)a))?RwM&^{~BX>Cm6 zl@rFL6GA9hf45T0fA$(yu>XlAbg`6}l;))k4k{JZWHt^_1us&u#}_f2d)C6=>@0=T zXgIv?bYJOeJa@PV^J>g()S?~8w89I}LvHio{y5^1usQSPzGmDyC$m=euW15IrLCuJ z4Tm^r=i^n)_NNJaUg~%{^@v;WgrVHahll`k#&?8)cj&9?^4Ye)PnD+Nk&}`2L1PnP z!no=hPyhPxo(?<&?%k6s8H1y3<4gZ1<~w+=x>XAjcJjYQJ)`V6NZ^+k=7-@;qH_#+ z{kDe8Dkjo}cCV@X@`;ll51zeuP*KC_{j=}QFXEd`jlr|iBp=wMM>#wooklwTsaP!H z0A832nLpL5t6=Z^46teqtDQD6#IlGj#sb#CJ3OwlT@E?Q;*r2RoSp@?pgj z=fP%5T?aAab?pQDw|NP)a;uQ?c)SQj9Abt=rS34RdMPXDXi(_5L48dHaQhF$-=89a z1I7e20jt4LFnTyRwptQ4Hz-Sz#qQIRA@-AkPzCe<6FUQ|mwx$<_vs{AOny2$rvgCm z>Y-&O&0#>07&HzhU?&)Ti(uT+yA_>lS!bp+jmv^{+U)W&(At~|Qsq(e1(g$He_ ztNxMd`IxY1*##dYSBP0vE9a*4J1G6~y(6aDXkYlqMn(4Yo;6l6rZPVGF;v2a0n943 zvo2{q>bi&Zqwrs0rTCe+cTU-l)(;=`aZvu2gF#ssxP5C2Sg9uiD>st z%pPMJE!B%l z6@!{y-Sw7R1Z8>^9iK&VhI8G^(3+a-Fw5I!cZj^3 zu&H%MoloeZ0Vs8`?SEp?2so89oX@1}5J+zq`xMTi`mJ*&o%VrQYo&E_XBVt7NpY%? z;q990xH$2BP@wlOEhOBsX2+h4(ZjeXm@Ogsn)TDB2>+VjzCn~`_Qn`*rH{xY{9xv^ zC)&^1JNH62>EU6Ej&40wS^I5#==sCf*9pW2xLMFqo`hE6gpfN8dq-lN8lk$O(V9dZG>;qUgpyQT~a!0J}sD?hq+b*i+{f# zz9bswab8~ea$3v&$;_`e@BYSpo{+C{-cKnil+o2kx1EVvr%R{i5|lhsAvcq<(|7qi zR67@m_-xr=utjBZ@z#0-1l^K14=ZRcL|T%3oQKzn6ZT!ZbmI8^{wIwpbH7pIdHis5 zoV_QroH?9_Rq1l_jD$;){Jo`T}8&;4D zc@;Gf!_0I+7is`cfc@OPk4#aH5CGUV9obcOF%vq}12+^LB1uLZfW~NsV=i4c)iuw0 z%$^%+_hRdJQWh}E^$!tv+q!m|63$RPZfHMjG^WoE?XRKi#1m`R$$+PhA}df?;Nx zXhh5bTWDKmHsdAH3zsjJGfru33yT(UDT6VT!>~(UJ+Ccb9!H*w&p57;m%qAJ&3uML zMBdq*o=wZy8e587Yy&&2;Iwp_HqzS)FK8ll74{x;`uzCnpylpUrQ-Re0UCy(%NfVh z54%&24ye7jQtSubzDpK3yuA^qoAvsFnruMmDZWo~Zd?{L1{nw0X6EEha9cL!H-4^W zk0gUX#sp%br)=c#yOSMnne!NlTD6KJuitbz44%uq^yzigopI#u!Nt1;7n5=rkq52; zk7x!dq7V=i_0G1op)N$o_TY(STtkRO+z{It(m0>(RwW_30Yg=O8ZpI+@4=0uTOzaF4bV2uXDi8!tEvQ%i9>-%abcHo zHh6MPt=9a?6-shDNe~O0B2Q1ZKw(@u+@BC5tB=%%3%C-W4#_nzKR8n*V0>x$p_%zeDxN z7Y~gmI%frVrxZh8@gEzLv{K7X=Sw(bEvd`JG>FwV>nShg9(p(31d~WYq2HicK zCjQExVdt7(V4AA3WQ>&BUS`0>_loHnMwf0Z_)9lBWLVDFHtbQpge2VfXuRUZT#SI7YHZ;YItEUl2v=<3uokb=ycYc_{lJ6|@HM3w+ zogSO9T|A*O?{@4exHQbWRYo9(q8@Ph&9@*D2_N$b-k9SgUKv!hM-W{EhPn z@tvILA}Xi+q@MW0xEtEwCG^Vp$QVPZ6cCT^pqNd2I>!N#krYzB1?cP5D&8t;l7pT` zYKbD%qT2;kZT8{^W4o=ZvT1@>Nzz@Yua~gu55P2R&6gfUgzBJ+$+R+hDN7WjCzIb1 z>#mYVRhf1dIf6~gnV*b~xig;BifJo`{o^Tmk!IXCrH%Hnm_dN1A11034p;IjdqUxs zg9w_4k1_mp8B)0*uK$JO{$r1&vnwpmEhSag@l3Xp$O?`7T?5|F&+jbNgeDJ}FW7s` zf7S4FxRst(L&Z4kJ(}p;&$}}hzw50^i$M^|a5J#^6juYc!8;iXg6z=4*i;-%0Zwl_{KRvysP zveeb0oVQXr^;12gvcoQ{E$bMvQTpQKg|DA}Y&w=cHV~_F$jz8|n0B;C`p3T4c8r&u zZ=@q(F87VjXUeFU**)J}tm!R^k-&)45ljlf$*G=_2r7sWRhAk;~ z&nC)C-%0Kb&g+F~D~_34I;)q=u!TlXX2KiR=Z9?ksjWcv7;&7?km@Cz5-eS5;oC2b zoUDg9P&xE$o$1Ox0mb_fu0ChOOM%`mfJG03u5wnIpfS^u^_qh)265U3Z%L7&w#Ep^ zc5y5GcEayA{t_Uj>o@}wN5lgnmwr*!W~of&w})sf1SXi>#HQ&5d4{kC!|N)6aYAe; zmc&JJsjQ(=CebD`(2~bnMqqn!KO=xHbW-HB9FydwXbg?5WMnkki(FD!XaHZ7AcMtB zY$m||cy*>b*Ec<@5e#n8KxF7d9l zv9Er0N&Whru>P)I!}oIm&#wFrdEe$*8vDR+LiTc3fw(V?;;L^?How|!5U6$HhB4YI z8LDlT=WX4|2HK#|@Q+dzC*<$b#)L+(!;J04S4Z?y|cnUJjPC% zm*Nt1He&R_Lkmle+Ik9GJsyUb-K+ggc}~{PsOhc)n`Q;$98^u0oVFzke|Q$M!jMek ziu7J)Tt5qzaxTNZ8Qr%Sb?ZX87SGo2rIuV+*KN%t)4EJ7hRErgK7M7bX2fC9JJioe zCB2lR`+Dr7BkM@XL{wJZkq41&Qk=1=$8qwl&oMKLpd>bNHl;M~PXaeZYZO<6hWOFv ze$xRAUrRRErnrYO34=b}*&)_@M*pKLq9&S>1m)ZeIaWN8|3)$i8n33se=`WD zbA~dWW|#q*%AfLsJT(jr>Rb1Pqlv98Wx}9txUwk-gl=}0V~dPc6W-QvOGcK-B8NT@ zlw^4Z6JE)W=2GvTjbX%OiNlN2Y-F$(BpIl%PB7G?JV!8=5Cj4dU|d%sY6{=pzaM5< zX_~@GeDGsed(^=UaoMlo7jy8KseL>qU6c+FBjK5$aVu7!dt*^CQ?$EsIj~ZMQke}5 z9Pqcii{c&L8sq!Atu5aGQqG5F(SOq|sDr#^7tM7i+&CXNVQW}T9GHM(M}xFGIWKva z%xPPk8hWa?e|t~CTyyHrqHo$zKA|hN{~uNfd!$^Ahz(bgg(4bMu}B695wf^>7y}f) zF_H8K>~pJs`kkG=U0$TTh)_Nt2-3Imn0*zzIKUQP{2@~u{63}8bkqCy1?_8QY7m73 z)9fNih+}0FNbR4@8;rKflW)dq=yAO_f0mLbmh=1jZgfS;q_N0@$L>SN;$wlA_hI)- zfM3peuRmdsobr4=NxOYFUE`>FJ77otHIgjzI>{4CA!UzY_guD%E(Eh>pk zg90kQgs*(@5ev6R|Bg6aK_R(WNakSm0(a=$*oLG5x-dG)NiIb+G-s~keV=WyfPwdtHZw&Azrlsgxd=wWEUd#{Ju3$wL3N6{Ryt&F3a&u1t9LELm8)KSl0%l!} z(2Qw?9x$%`VP++lT0+^g67(rLO<1wGS_b)_*qyzWR`w93dZv2;-*R(B7*Z2iuPN7M zZ?X4(VnJALCZZ+EeG1VmGJ_%Aad65?1C<@6M`82u8#)3(Ta?gP1iv*%D~{q#^~L-L zAr(BQ9eb}oxPJm-tFvH^7S0~qw&d-IvZw6)^#4qMSsAoS&e}dJNj8B=jVpLS4AeM7 z9kI8U;(IWV5DLW-(D?!%OvCkRH=)jqjdI7Z^(zfCqSHO@jI#?oY$cXO!FgJ|Axu|D zPOtVqssMuKEbq3TutHKi?b#?|SS0kM*PTUo3DjdbsI}18jXeF8?|u)*v!RlKph12M z9O54f@SF*#eg}*5BC-c~LO4?TX$9@oakIx4`~P;!#cQ?!8xE0+8dgSg|5K$;{`${- zd_SaiddT+veUS#=86&fDt1u(rZA$#ulJ3yO(?R}l8?UHf_lNB@9|KH(E$uycumA4; z2Tu!2M&jTHXN;9R$deIP%%_9N25WJyYBUwvp)HMs+Cvt*5hhxCU}^$g*X@rU5IiSr zb3U}iWS&b9il&WWMKYT_s7z}3Y3y*%YW)}RgNd>bHR}#~F7phWfKef=v&fQa`5#5` z$4v><>Bj1sVFgVbpc9b=yuRP{UyS{$JMCpNS~{$|zM+kp=t^&l)85t@2+NHn@$ z1bzOJu?_n}-b1guhxpi3ht6BIv8>x6^7nk~rmki-c~8d7Ys;tDh;-C2pbxCKFuzZFsZxZQyM()3;WuJ@fj42H^)9vE$R z_T|zq1G0W?&p!EIXG11-0dIlZRnznZn~ys&(jC{@5Ywh>b?q1bPI{|o4p++x6`e_; zi~F9)E!h}fvw6c_2irzIHz;PX>O8b?-l{sQtidtwGe4|9)*p4i+6ozwT}c?8ty;?QTF49d8FH2S zQU;h*1jY3OHh*hIN0NYVKIq$kEZ!8KwTfm%+Jy(XDEu)jci3?%=Zzq-Sc34a=5(K=>?C3K21!$rZ%efs1XK02@6wX^YgzWhZy;>r|?O3;% zdlVh2;AzZwSqwdiNLePV38|PEqH@gEPvb)+K|H|*mB%b0GBrafm*pPEQnQ3MAq{g@ z6do7f!R@W&|J(c4BjpWlB(*Km5@vn#_}%I!r2PD&c& z0?BO}uWl*mJ$qk4Fq<%OWPwsmP^eBTONf$f{5sygS3pO!o}2Pwsm$}|x1j$q?w5Bi zT~%$^yy!|rx{bVy4P&z@9OqL3&%1V+Ctt#JILXB|&q z+@RUTEz*d?;lh#NGI%_R?~O*XnDcw zX$)!y*$7CPbo1C9*j1eUEO`h_S4E}Gn7BnBVHBK!pUHN%_jY-Y2=#-+k|$#X7Hl-1 z&ZDG4qvDLS@j??AILI>r-xbd#0Q9lSu}siC&dCE%kj*hD^>_q1i#}TrcIUr5t!$swl$1MY^GXJpVsd1Vy5tLQ2wd~X^n)QC6rfMQqgaJ{lGjHGOii? zfjHNlG?)>pS3W(vdjx%J|9lQo-Ynzy$Fhduygdixh4$}&enpYi=;13s9OzNn?cw~V zDH(9z(%GQ{Uf&hW)O~$Y<`=|Y`6z#{__OKok`Z-JOlOzAETf9-cAzMAmqbk5$l*Wl z-!xs0QMX4H6?3)6zdCuNr+e>qLjM`8oE<*B{)BMgx~$Tkn{Tn!(+`AAF)sHxqRT>R zR_C!g7nF51vrdkF9g5-4QavlWLKN zepuFCX?k{R;IlOt^8)K}=m>=!mmvM_<#mK%%6v^T-Gh0@L*jy>-+r~qMU%`w;)ACi zi5ALUR$arzB%JhEcB+QzR31fvg~UKLNuFR)t&z)`;mvn_7GX9viPw-hy#RvjEo9Q# z2g?5^=JE3h#GS4jcmKnmfFu|t3nCbcR>;E|JO*KeQ_Fk-JD!apnIV$+bmO!cHqHxg>fQs|=CQ9%g+2{pn(>ui-xLoCsXpJo5>~RX{f@9gthG zE{7{Ok;6M-y(V~T`-vQE=n>E8au^IfZOPuEkm$EGCd;7A`$8T#K*-p%|7jFnH#LDl zsSufAF#?JeT)+IXS*i!KMCd9?m3oHDHGOP*I%g&zjWO6;Pj_6REn>L6;i9a3ly9uC z&wxN`HT#jzAbu+(5P+TQ31m=h4AJBa(UR}-*e@z(%k1U%zWR5D^Ld%ET-f$0U%G0s zTv@u~V#GJR9^jpYm`^)%FX5JQ1Veq9(gR|^=qf6iwz>EKhDctQy3+()KF~!WU zLel!(+ia7QcA^M^g1M;u?k7xCS8SJh*oKq*JYn7UxP3pzQqUOCYjvoNwa|NDzy)Ls zwTH-5l0BH61QnZE;dUMH!9N%*#0@Xj%(L+e(k}Jfq(`=WRdo9d#%z?ZhHmYu65-_B5n*yID-lyR`rQ-_(=GFM+ho|Eo9Jp+J^tkS|SX4Q9L27aNIoVxud8O>8nND-#7@7#2xgGbjMG@lK`4j^dT2 zgNzE=ibPZYWe2WgTVy(wHlQ zP&{ydm~~wg&)C|v?ddElQO@22vM87SZ}jw7*8Q!>`dX%tZqBJ|8I%KrbB7lyxCjx# zjii9dL9!a@P&P_5u;E0k{((c25aStW5+dpk{n;&kCMF?%tQ2^8?uYIxW?KH}MhMmL6MMiQomsl3 zNWDL@R=fB<@$G3NTgJW0>9W;fP;DJ0l$p!dmqSMs%U7D+)I0Y@a-j$Kv8|{Ra}R}V zful-3xq#`p4=dM7KKUQ`)PmW(z-D+X#Ix1}9kqIg*PpkZ(78@%4R&)io-?qmzt?-m z&P&+R&Ox<$3;{>@^sB5P+e3Q{RXd7RJWRX_W(%H?5f+Vw1l*rP+!38V`@DmV?pUVX z=hj08SW9NYX{BOMdh5eSw!tQIHI+7up646q{i9uanYK};`Vf0GP{nHb5XQz<-YYaV zIZHq67#XLKQvNGf=1!sweb6OkK<4cGFV_KgLkt&3mns>+={ot}`zCUA}GI$`PAe%t(=?TJR+{FM@vC5i7D zP5%9cZQB8Eso^oY{$WGR;Jf<6#QW#NpK9j>4f9vZ=q>izVFs=6vRDGCKJ4sM24nEa zwri?4ygZt(RIeODpSHoGtQKB!K1bRFr83gV*^!#`-~FlHQp9odr%T*4d>34!JBE=? zY;^&^MD}}^Y`QtMF8XTIZ)Uo;8=ZjHB(Q17Etf@#mfwNDn>!D(V`nsFnqC_2KPC7$ zwzL!+`tiHcK$pOytRQiUBk^MM^?>=Z{JXbDJu!?b{Nh(%c1SMp+Q5TkyM!Cyg7b}X zC&yCa8%!$)wM>Vx$GX!Eky;7g)w{-Aoa2qwE`^)nqL0Fp3WN)*=L}7b=^@w65F}U7HH7Gw<0$r-}k5H@AI&_3TF>AIs;ar}87Sr(u(92P&)1e?9U{>qEgfHvwBEpW%xdgK^?{_&Qq zwmr8OB98Yk?@yXV@*!V z`DUDE6wSKkwDhnK zgA)OGM`haGcJf2;idd@ zEEk2cn5{uCL%kHM2bGhZt7J*fZC8ezHxWf7-ru&YCqSrmbI(~q(4rMTdOBslVHfDv z=MgHJ<1hN}9PJ}2Zxd53R~b2KTwFbco&tcYjsWjt*&st0lSbOR*lth^`))rj@#f64 zKkS`&L8DZ5HZ&gS`0^jLn_-O#voP^Gt5|?SQS|>k<;`zz^>p7vWo068H-oGq=i#9U zXa~w_Qn|FlUp`0=7Y__g)oZQmR^B;XG1 z1XtI-Z+`fI?!)v}O0#u$;|C{G*LTe>IkR8L(x+^VZ~Pe%#|_NuWt==&XCr=SX&fgketE>#Yl{yrm(lY-*e6kYO*g!19RO6~-HW9pRjLt-CL;ATTN1SUT5?Y^)yJL}v}{I@NLaqkKc}x$~oC8-zHup}HTt zD_WG+%A-yll)oxZ+vE{U`Dsl;BX+|1L15aSpe&A2qUtWs zoME@Rz(5W^|LW82EC|B0pZNOKtD-oJr$8_}d;P(Q^p9!LIp;wi&C zrnbBzZHr151i3}G<;2}3qQismCR}Tdd84rxDO>O#z9UP0`$s-vTJo{b4>ouj3>1y2 z24xX_f&X3mt>`;c({G(#wJh|J>A8jN&J{*2+8>kv2!?i+@~x3k7cP`=h8O>vJVbhS zA^)hhbQRcl8tDL4EpKL>k@y%rX)vJZckZKzZIIF)1_w!YUWHs&4K)68@N#yn?k?*Y zM7xLOdFFxWT2t5AC!a6rg&R!6Tr`bAp|2N)ZTe;n%?l^3OTu)XJ~Gd~xsuj#Y0p}y z3p{jQ$wbL*ih|3^#vGKek&mR`J--i_egBUf=|AZTLidvG?l=;ELh;Dsd%Up;ZrV`Y z@1Y%Udg5$hUv=kN2;9r#d*OL*njV|K_-*kB+h$U3Yv;>fneNFx?WEvrMgOq&K`H5$ z7Im3QYKr1biW70~3%VHL_pX&kDKggW#{!Q1^444n`21|%w-a~|eEIR%twM~6S5NlH zg)fd(8MXVI$NDng?gYrXoa0?dB?78i4!pBrk3Sntb&y$h`^Bv5WSkpk(M@GnR|iS- z{l|ca4*#qoF%zk#`3SO(o$TIhwc9W#T}(ewdsn0#~ei0zk|4qwRzSJ#5O6p*M-Z7xm8=uJYFH0^3D12FD z8~KDy3S7bnZOaWdn8y*gIVN z2+F1)NuLZnvF_d!1XqL_svIMq{tE95wZxzl`xBxdTzbi0YM{D1bGn7DUV?|ZOv^$s z+K(Z!j5FSz{}XFt(TEiCITDwfT0Y$qZ2aet#&wPH5_u#I@a6-C6WzU`ZSmpy*@aFU z@h0BcpE}d)@@IDppXl8CST`#w6b|TDpk;$a}re0*j z5PJT9=!mPN(Ah=0oeg2yg`4}4WI!}PEDUagNK3YF1q@>7mCq3qX$8l9U{>>hmBEj& zbKtg!a@CKOk4GPf8P;iB51y+*nZJ|o`Z$@?J4{2|ypwC{@mzOmAH5?_J8vkjBr(dv zmf5eERCaL%9P_#<{PDYVDMO{>+r1F`D_LO3hia0@ss|FKuK0cVj>#=N z@DJ>zcrI>FaP_@;X^+*{%G(9&jZ}B~&lFEDP9?@?zupLcGn7TxWOSHeov(muOQK z^L10<(O(M~(EqV~>EK`P!4I1;i&7{@?W5FD5wRvd6vOF%VYbwTCe(XszO$fm#{72d z2_IlNnEbMsX@D9xfC<1Nu-6vtjn{ZrAL*M_^GF{AtG)2KX@LnboNCE~o4+EGd(ytM z|M^4?4z+b}G-|_<354-Wr9tgO+~c9eX)n@j{2DEFhHl)6xxYFH7EHo^Jy~}DIp;-c zI<}v%?-}W!ciq{JbGD^&r%)bR^Zu`QE7_2dwkF4nWGjYztT*-ZCOa%LXDKa$KZW)$ zi-%1q1)4GbQ$tdPg|%@3nwlQSz6E^Sn;?S^n}yM2NQf?NZpx8NbGwanm5WjeCM+fN{%aOf9eE{b;b&HLxcXe~vo4A6632?O zHFn~%9B$qXm_^QF3{)cQQqEmDuf@JLpJ?d%Ja?a{K>QkDneyP>eIn-IvquRJ#*HmJ z=APUo{aq`MbJUD`PBAd8wMRr}eihsO@OOHN zqQ}B6`Gc*AeJoHy+T_>q`Ls%OXle3X&v9_+dG7G8>QqSyNEcMb>{`^`%W3N^qUWX> zaKd9M>ZWR2?E{g*)%?C({Mg!mBMKdPVsZ}y9G(w-I6bJGh4}dSk>jl7F{@0czlaNR zv9|;xdl*eN1B+TuMR|`RLwf2_e4Y`9g|A)Ysf3(X!Me&O$a!MN_0x*14!l)bF0b*B za6Ec@4_oA<=TS)0!sGRvJB$7V5`E{^#oO&`KfrM1z>Ut?^B%f#P1(^U*a2iLOigW1uPE)#;pZ=raV&ZNgJv6_d63ePME%C`9DB}XB z2mauHV#m-pX8Eo~fq>`N%~_9qaifHAw5U3+|KP;c8P1uo14|O`fc^VKLkEnD4L47i zh%??dxl+RgNml}n0p z9ZB@ueMj|IjHP8x$_09)#L{OCuSj?_9Uea1{bS`?8#X=*vU!eGdklTfm zK|xG+TbB#y)A)Ot4v%Kr(hYTYl5RoYokV_Dlu48QJ>xA|B-JRki&5hf;(~NkexyHc zBoWtBo7v2}t7?yKJ@fUrl-)=u7Nd4-T47erqUTJDwB)&m{RQ5EdZ4p7vf9Jm_pvb~ zUay~5y!Z#oJr*N5Bfj8%{IhGK=^r_<#EZ>lyYvTxe0S%EUg_+VxVhG>BYpT?UM50z zWO004B6Zj9uYc9$eL7{A3h;GKdkv)Bt8nwaYza%{$XFj12UYikN;WT=qRk)!uSTgF znMd>jmKDR5qIRS7sGXK(bnP5iWWV6B0LQzgnz%;L-4vrIve7~cBc*5K*B?x zb^Rhp90gkV;}>`+0ZZ3f?$f6X1D|KHKScRH17dw)o+?3Sihw0s(;cNJ5Ea9*(I~Bt#sERD<2w49m;8QM%}kP=$OBDH6eL@+_{&%k%u=M8sd&`}!iQh~y$b3-i@sOSt>1B{ zi-bm79MpWv&P1X+?7_h!bcFj<$@i^iahQTZCw~iVg2A7{;^;M8mz4}=rNwRhoOdriu__~ zr~|%0iL@IpwXR?P)-i4ODG9f|L=4Qj>#v4Xy^Td*m>lseK2-B}h$hiwsxPuYu^)sHzfbrw zA4?om2(SK;Dpr*5?mvUL`>c);COx76iU%>8`;3qY>$Sl-69b>`$^OoB+b?pJyVDD8 zT=Nss)y+MI10{YoRai3`EmuCZ{>ur1E*4Q`7M{_4YKK?TAQPd6?M?1x0M8)%5)N^$4z*vGM=|)TN0p?TbU~WqLC_lp6|t#&R37icMTX z+0H)g>7|a{MFG*DL&h!&xqn9eL{ba_)iuyVJt+mjdR`bZmpJ=c;@&2+dXXO4~`)>RQmcBoV8M>+TX1OmV%TGPR zN(o}yq`}KVb-UxrF@~)v?t-NW1M`uGYy9Jz+wXOd{aQ8zc;wDGiRhxQ^*iApl9U@= zwt2AYejJtNjU7K%`^o1FAsAq5<~j1#Ubnc*O*;$H(tO4U>`{N#Rr6)9`Kv$MYF*H_ z1cRN+_Acwq^!Iky$>`}AOHDIrW{{Au#4EK2XfR|n+aAU{SX+_i}>5dl> zo1sNi{W2ub-LpMc~ezSa8%DRX|YbMeVnL`_)aBP7;7|nb>=>pO95z~gG zg)5ke&>W5BIpDBWkGp|_Rb!J=WMi0Sy_r&k`yze9_1{`2(vR=$KNd`NFU@LA@RP9B zTCB~`Ph8~|2a6QK;)(%>J^_Si72@&KsxO-re>&X+?MlAR!EWK5ol0^$NLNkbc9@Mh zilDp|yO{FiM^o6qF;P*BVCy2|_@&mC=!!uuXcfmY`8Vi@%;GnWIv{$O@AX^m#E)CG zCtoj#U`dUP{`k(3&{_h3vwrz%ZO<$Sk5biN=KQ*bt&;V-@feFduv_Yqy>9fZ{vUat zO>}HrGAJ$ltx)ZcEQg})Kj#x4h9}($5fdfoadfGqywz%~F3p>005+=UocRk}RZ(8k zf(<CN?-kNi$jTGvh@SzyI_KGsLvRnqLUsZT+5M_@K_|lHyLr_MqQW zV0T4wxi}FQH_Kpox9brjUs5`IeFC0GsfA{np&830zKgVY0|rz+iz4A-3FrH`GQd2u zLw2b7d&5qz?|%Qp3qVDs2RK-j4Lf>hYBaIJjHpy!{qJSQSES4hHwO)+>kF~LHACLOY37;C5d<zvGO*i3`{_5_vLqGCA%0IA)N$x1RO4`C*uz#Jwz)-7HAG zN2G)RJ)0RP4m-N2w5pP2Mmj7yhzx?O;@#F&#ZN8Q;n$wFjR=XjE7aHTu@WmV@xUK` zqigU|$QUb*Oi3N4{Km4g7Bu6idLvtA-mb_lGe?c3)D`33om(%fC#o+WX3JoHuwtB15LQy} zdvHI{o!MV&uL&yJer!q8{X?+K@Xh8DzVbq-ue$i!3z=VHOVRH5k0%9D9)^&GW3C%wx|tAkw?bLZR<#r6I^=Pze*haB;%0bg>BtJABo{lEuhzFCKT42sAUtj zHp-(FOnXU16xn1cbqYQ6=VOvRP7bt?VEF`W3hv1N0HhrsmCY}s7w?@>68SWtST2WR z^&tE!Rp>lUz1^b@S+D&F`c?F=9t=n^+@N32b>sP!hd|ZDVA;2ldaY@lUEf5;Z==-; zdtq9Is4Q$xez|iXL#&_rd1_>>5{xEEZ?R&{8K=@Cr;2qpC3n<|HX#he9xR);lrO^R z@7g!j#`0N8wEH)B77>ssYlF*C(X*6*X6P1P2i2Ih0#WqMCuomW2_wr{ft`l2sB8+U zRMvwnv&Gg?-h326XdAm^5sPsIKuJCb_v1VXn%H*X0(m9Yww%lOXm_I6xV%pOOC?=WI~!kG!6q zxzuesPR!LWTK2B8XDCFnD|M!FAr1%_1q3Fod^|<#u!0i?~fA+ zI?BGjKMU8@n7oPi&XqNTf4&|I=YD302T3G@%L(z1I0}q)j3C_akFygF|OGW4%&1v+yy=l^YYOUwt?@0G8V@wZmR+x0($@7Qd)R%l%m4zrk zJyaS`^Q&=+rULR2^wo?_1fh-1)|1Vo!s0=*;Nk$qb`fxUpVX^Otnb7CCDxlcPs9yA z_3K&tGP6HZaWw1tU}b{&<>6u0tm##JE#kUoB{OzgDiU3#O8XLO-Wu!7E^>HlHX=@D zKvpp2j81K0h8RT+5nIUFly4Uk<-u=heE+e)KLrPnA~%T?9)k7S+_Nwi5yp{Dl|01X zvBJ~cGQ^{i~BG^lzr|6bbn3g5AN5s{IBWAOb< z?tq<<1Klym7W1-sb#6jR9W7$fo=kPwje!3*Bj3y!9#8jP0S=_qF$JHOcOCD{DPLc2Q)%So_!bjfOB%L@Wva z*5Jbhs0&&c&$>SvP?P1DH2*HECw*g=pkUdE;v%DJ z$i#ae4tC(I>$1vt)VzuDJxNe}{G%<?VOl&&NUGu6eUqBOTSO0m%A*T_HgkEHCACagMG9_ zReT|)POT|aF%t*oUe0N8dfwaM^j3*P>HCT}NT|C*X$lm9)4j`?jsC9I&~YFa6P1Y<0Pn=0XpMljP#o4#V2z*l}Bh z7oL3AOS%7Og2QeYL?H}*`LX+IU->dOz!-mFvB-JHu4)5WLU*TDWbz|g9O-N zzGCF8$FsP#3W+zwdeENF+2$vqp0+JmNoR49Q1gqi^tN=5SsLIiC5gdL+ngk)>mj@M z7R4twK{l-l&02Lni~<%49$is8K2UJAriwdE!s_E$D``~Zcj>gFiIcRSx!C(6+JU>gBvrLJ7jv78R|PG4*K9n2Z^@LeelFn zE{WF{8i`%M+zHNY(7^OE`Z;UH#mqOWh#%EtEjN$~Fy_x$Wg(0s# zm76DdYVVLX#it(g*>a>9fu|2f%@QzWg41bc-an@Y8`czxPdzg;=5nq({;XQscEeLt zt`<0FuSez#B__f7nU^DNgQ;*_bUDHcF1s1;A8=0@fs8b2b*~+b?vs!2+1w-S3X32} zPsP^5*%9rt5Lfs;)LhL63I)xA;g=!ZdTwV_N1LGiL#eaGzyLPO@1wU*0P@FQ-V6s^ zY+(g)fH;Y;w;ddRSjL}C%lws!u`@u`-8=47<9^Ed;b=;x5r1ZwjE|{8def43lK$GK zaCUyhs*%;2nY2w%d`2UrOfL3~aHe^o(hT)5a_r=tnN_|zoirW&m!Xo$1~UWBORJBj~!rA7`{ugiDydefldzrH)xS z9VjEvgw^_@#>gT@n&UIN?(aB}LDf%W$%KzN6L?9_JZ1|Y;C&KqldG48>Dp2*@w(qv ziYD8HSWx$vSo<)c!}F4<4C zY-i;#R=2#9uN4}_T}@pz_*Dk=DNN`SBwR11m-@5cUu)X284W7+Q)&~nYY6U=Hyyqg z`!`@L==8Jd-}zt)ONkYs%d3f;9j^`cQT}=P-yVL#^^{osKgE`NgAc_<>a)C&o=<=X z@5|m}B5KM>t|;yG(GRI=E2Gnn&WVng4HR~?C$_^>(+iDz$UTkzJ(e3}kKh|GyQD(t z5obG}np6dh>CliE%RTwCT5*s|;1CI?8zXgdT`4PU8K?-oPHu->D<8aYE2e`K_(&AS z9f92D8P7@3z2@k(xiizs?)vZ)HF3fe6DVb8lqxaM1pn^6s<6Jyh%a2NGQwyc`Q)mw z7O#p`)R`FH>BmD(Ht!1*_tO16sV-0Davb#&jmrV@%ZBpB)Pwp;O_?xmMvyssMfM+5+Ys(wB9%Y$=DADsodQ>ksPV zr-*GVRw911ug4>>u^|?bQBUo19X}?Gs3Rp7X|#A(jU(QaB-8JQCC`jjh1e!ySW=>V zNz)CT6VNlI9ABeS>=EjbWh}~+#0L?zR4hqfV(sb8v`L+`flWXgf^;qT%stDSpuB<* zw-M(Z3r*oQkZq3ftVV#g*`e(S|Hp2E9-vk*C z+8cjK9)h*puiwLJ67debA8`8gG9LoJV59UxE}DLqG$XAnNYXhSMKHt`#YmW4vwqA;9A(Fm}%u zAYf$)DvKErc^?=w_F@~ceUiN)8O?^5FIKw_ZRFK!36{OPKVm#W_YgbkeF#vm^?3}b z>y^Juso`w%r4XMf#p_f#!#w|`7{?N!$AorDSoS8F%lIW**qCCL?ZgVYnqQD;cPb>r zGed$fIP(Kl#$%^ z4N%JT(z6eh?fe{QfVc{zRrVTj*eFWacr@}^uIcX44CY6w5VhUUfk#ILsoFa7&T5IU zlX#Lt1^vi5+mz@PzxXgEvuGP}-q!&-{99T}?0`k1cbS-RNo{20Ig&A?=w#$u-y5sq zmW5fAJ`y{Bh&BGD8n!PPF<(maOT_A{XdRa{hmEaA^@>qOScCzAN?9a%r$B?o%Xfm6 zo9y?_y%s`jh1xfr-6tp8lgIbH`Npi#2cm!b^y7B*7EQ+`qDX5$1Rl2~p(Xsf{bO;R zn-7>GkTb&lytFe-tcBzvXiwBP&5yx-Q|0x^Kw0`41be9-#eCea1$Iwe2^J>lQAU4@ z%HI>OeYLCY=fimamQ&3tFOqvoS z=U#`!3|P!bD43lmttpRS${#m zj|?5K`*6eW(bHN=5US=oc$e)}VC!n4((BD-P4)O)r3snA2(&r}XB+P|iDjD7ESs>` zvyEXi!a}t492P=!7TZc?r2-H2EabzPl1r1bv%)EuTN4Poa7j&)2Xjbc{k_bNv#nJR zLvUk1<{v3Ci}{*wZ*PVdU6HrqV6k7fME&hUN>z$ql3D1G?g@^J6e~71z`fTC8KPs~ zzQISaNENZOa|U;BW=5&_+kg$^y=M7+nwY=xqk5V7gCbQl>x7nd2zZq61$!fL9ulK) zNtG{WA~)<}DMYA3CRnUU1Bj?mm~ps=8D_Oj?__Wj)hH`h1l|6av|Xuob>&{UlM!u{ zU^|)a6W~;v+dw!FjZ}#{izF=bI6<6KZHS04Mua0yI=Wz7;@*xu%R}wma}isg6Q`?M zJ0sNwURcd*-OMsXEa3iYTL-45RyuB&7+nT^r45c6S537LMb9eb^XF|RC3vr+DD&b}awr|pG3Dp>ostBW@y(JpoGPZ5f)m0}1 zw~)BD%PGH+5MecO%FczDoMpaN^+IgttB8yX0sU9yzz%?H_VVB`b?Qb!$DKS?1mxAf zn9Sq&OZXVM(szTLJC~CX0q(RN63$Hw`dR$tPBI!}l3H&L%sm|647h1@GgERzCsouR*>0UHk|MSkU6ZP*Rth<+dN1QxG2{hEUzI0U`tgRf94&MC{=TOG@>x`7e-pCQIH_U+s2WOL=fAEIX0q$EF+rEm% zO3|IoY5cyrZ#Z^Tv0I*7Nzi%zKtm;<4RJJ$#B&M2g+e?v>=Ue0o2IjgY|8*mVG_Og zBR{(;og4R9-&qLOP%)#Qsa2Zj%1MN>ZIzz{bmn4gtp;P?)9K}aJzB!ij7~wZ$gfAF zNyP+veay*anxXyaOvogNZ=CekLNxuP-_#vuTdne=pit?{tk{fXRxp$rox}bkyMm3U zA=|gjvfCsAZ2F2TJfkCaRT|AY0yQp5JGl8ic%WoYJ5XgQVEGz9|D*HJevny6X=KwXE5<(+CP8!^ zB`ewFQnwvu6r_&q<**77D;h4Rjn}XAk}vl*cq{&xcww=u6MPtWvL{YB{%7HfT!09? z$Q~_2*4g?ZRwN>M`SeL~pI{rKT#=MocoWc@kHsfu_7`O7Io#W!Fz zX#P4_VAt=v#>(%EBQ@5Xx8L}>V_>NX;!W5Vyjh?bB?2vNnBqDhaCKV2L!5GCkKZ11 zN~N`7b3tl7PDt9gtwH>P8qWiR6{DoO_tJ>xU994X2Rle2h0%JUgo)pwzvktiFBt#c zO4s^@vGTJ}OTpzOs6^Ttq*W%(otY_8qQ8rA#qE5*i|ge2XDiY*7jq&Q60d;%S#1S; zp8PK*D#1w&*V*%tpv^X5`SEql=D#MwA~F~w{Q`@X<_{GI$oflU*UI}z&+WF-T!|Eo`!9hRf9@YYO2|Z4#uZgsh?|?k&C&mrQ zx}@Y>;LpC*!@?`N>K=4b1XfAsT<7L}Zrxt74NRo{C17z&#Y88O?_5=MZ~l_VdFh@u z#~&}q$-rJnzEdgWUGCY0;jwqgA*+_$fRY@fRA(WHr@d2|pQp zgIY5#Fe9VP{nRWMX#8J_KHBt`4fe3il02eN&d=HAvJ7SJ{3b7FW6w;O>RY|UC=><9 zW1WFOmmEzpz8xg09E6_fN6cA_jb5D(2sl@I4}|=pJ>C0?HOJ!HgBa-s;F?0LY(~*E zS+tyR0Sc*Io=hg$y!eo4agn*3^_x`dqM)y?%#WQDK;S&wwsW%>aqbS6YzksG#O-CI#_@mS!Tc!ZK^ zt#>&JDe$RZ$cbgNl6MLJxD(jOID(dj#45M;jhmnp9?<8xi5q!a07pE7QgKW=>23)p zP8ix&yiJ`=Tr;*9DL9Z5GKHvhZge32!5F=RZ6lc}IO;Xev~9MDnBcO_q1b+s$sU=J zhPTlA9%Jd_8{|bgI)~nxc8c#9%jaDi5!7msvNQH;BT55o;LsShO zm>b=DM4O3UZn?30BgeL6e@CYNNSiZpctdCXNu~UUBKjl(`ka<1+C0?l&mAT^jJ_=! zem9O2f~A{RC`x~sq$6)0&Uh-|PcpVL8`Vp5KY~eIh0|BidL2>|^RL8vked-$_vVG1 zUWY$I>h2g9Y==D8cv&p&J=)91d79RJ*&Y1e0u=q}xq|ql?aI>4uuMChN;>{|gQaur zPCt7(ir1_SiUpK&wq;amG8&c=-O6PwloRrf2^SAfV9fubX(}BZnUf4F^0yYVVc^>BLaLw;=@G8*TOtT+kE}=P$=zWC4EXtTi1QZY zvDG{(_%^v7bb`ChAcocjG?btL{-R|9~ z$=}8kt14rDyqK`?&IvyS1M@?et$5janSh1^y_{&EF~_)uY^(&&nCBE4eA5$!lGMUA7SJ|4Pq)L)KQ$0DbF`=sKj5 zEu>zQ{_3WWgL~}<{04(7NV9wLO9o@yKsg!z^N^1x_0+RJ^u+a?1s5er(CsG@tbzIA z=$REmDvj`5gc64&jwO)DZSN*p4SRUi2ln8=^kQQ-C3aaNS!ZMP#c5w3C6m!Is*GJd zSMb>P#N%d*U13RFU9D3NKJm$u@Mqxb*|XSSd8XpP5HO#>*kSq`akD8Oj5OAfnWc-I zU(>DKQs07*#HTzDdLvQQ{y#;wTl=V`mDji8s(h%N_Lg4Br}`WLrbZ}Ddd8BWB_ zf>i1%qx2d?`MpOMF==qn>Gb5%?n#`2jPwRmh=D@ebUBKhJ?ZTB3m!T61WHhAw_-~YBPro&1Abu*!VST@-j``(}A?6#jic-g1rQg5FhmagW zBPyR&ZnJ!_IoEl?SHtMynY-#^#1$C2y7OV5%Q4eK!3kJ6{S2fPu7ZxAD(;f3mfkcx z7(g3;65N8QIF_n%<)&_i#ZNEcH$pgR8_o!5D?)h%!qQN;hOj$G-CKnoQ8jWt#|>ZK zcUU6{2Dg75CR7Dy-^{LF(cot%Nf#GYMY!X(Hs&UbU^YZ(RCZiOjTNL3$aZcYIZw{i zwF1p}XnaC+b|pLJL=4{lHBQF`T^ec?cZ_wN_XbE%?-1bbt?z;MYfY z1LB>BJ%SFiFgU2fQm)$<*1M32Lsg=tWT0-w7x=eHn9WaPbhg4gD4;`$vAHb65s^Yw&;B9{895P7~neln0Ig&DWo zzV$FG^N;);P7toU<%g(uINWd7*ba7^Xf*~RGRqFv=JP+S1?H;AT++Es?R}-40pbnC zB=Wd$d5kF}NNwpVGnr^TqFoIy=?1t=^^Bew0YWoU$Dn z{CSLq%PM68Y$e8bR@{H% z%Q&38U8_YoJEK}vxg;Y`xGS+h%8(jdx!9Ms%`+G@TLol$SGySn>FZ3-KXU%;Pvj}Z zA=Ro4Tqe_w>kCQ?egdeap7b{b0t)`-e&iw%v$K}USK`GRt0Z|(QkhZE$U@iRMofLJ zAJ>?|!*f;f4RA>Q-R8siYdS0dmFWwyFFX%jPFwj@r^2iYUnU~3p0fZj(!wNCc)rLA**+8H=91f;+PD`gLgyR!_&pZ+Twuz`KmRULk0#}u*4{;J~0si<08xZ-b5}B zQYFhT8~>$1lDII-eRCvK1+FlQG7nmQ9>jV)~eF7uy;ZA+HQ&Y%tN;O!mjl@rmoxV zJyOt=<>H;(k*nwiLY(t5lBr3!!&CA2BwqcLv7h?S-U_cD@149R<5j>>;whQ7rJ!>1 z(Gfi6n(^}kQU==M1Df$cG1TG6hPEL;b>Ckjz3w9g?3k#1F^}IBecr~3%69*(sKn{k zqEpvt^GRnz+7T8dagiadK{#Z?hkphW53eKqn`TbqW~nQzuf~kAQ7AM#{kdwZ(YV(1 zqBn3v`Pp2QFI!iu7&p!yi?JCspdX`>!hD3F2aoiJ>ZDLiI)rsji#Usk)l%c8&JM>R z<5BH0TOke`5*07VH>pc;%Y1TXNI;#aQ27T74|ca!{Fxn+onD7!ktqBD?b@7bZs;qv zYb$Ay_IElFS^JO7xCjg7p<)a#9E^#E@X~ggID?QxZa=MH1s)sevn92k;2SR4vep^d7 z8`9ppOM?^x^J&9ODW|`A$p@|C=t=F*7{&Ci7Otf6XC-;mIN12oN{{XieU5YR6eorR z1xFq;3GinJ+Qb&>mw%I+g)lt<^q|i&yg?`B7uWTz>yNq}H&^-jBo*Xm2S~dIALwGe zBueS`36NgDPQqR1`v&Y%RA1*cTTBaELeUXCqIBO9QD;S=Zdykt1-@R0M^4VmTj(az z+z0xHWn{x(h$&`<{X=PR+zHle_*HZLI_IChV;Co_;O8fGOja3!?a$35xJr3q6}7cqf<(iZU9d{~1<*mQ<7ta;jl(i2FjXJRaY?X{ zJ36?-bmrSFXqZva>1`6rlws)l)tTU}UYXf;6W2^*Pml;s%jcKngCjT-q$%&UD!-Af zE+*DKC)9~-kWb`MN@^$k%ga2TEtr!3ciW0zu#kH#2TN40-?>>VD>7;g1zyNpfr1OL zSHzf02WXOI8y3o`lu3Vj8u)r>lD#Jx`-U( zItJkl{66tZ`8J`sQX2STrO*1u>ogxX?^m~DrZ`ltuj5WFrfr3|PuY0wE;c06DqOJl z-d!+{Hshyay362x^QTi#oM&WyOCFc`JQB4`7D3xgYGbz{A|cRD(u*AtVPmQkc>l@! z1WO?OwjF)F<(;++1j{!1m{tP#K>gmh2x6(X2tu)WBT)PFB8y(|e0@ldjWB$?uJp3N z<1Fa@`esMwFN)>ZG5h*ZR?2I=o}q}|Z=mr&<~8Uf%fR9WkC?TqVADVDA0q;P$Ro?rQdbyB!qDHRpo-x`h!=;O~qS z*@z4hHn7^9+i9fFBwf&sDMExGD7XnLwn=e|0Qrg*?F4&o!_alJPK$%t z7JkpcyMA^%uKP%xzKUN29z(GDBU_O+hfjc74$JQ|XFu~5m6~d*H@~#Yl|Z1a@PfF~ z!hU8)v=ln+(R7E%_DJHh@`8RMe_bvhn`~FQF_FXmP0?U#9){uH;D_v)4$rouvwP0R z7z<}m>0({tQ7zOwa96%m@2DcQL_QyM{@_&;f(&s7LKr%iQQRGW9L$jZV}(60jeLq^ z{ZU*VZn_=NKOmH>X~g)^5iq@KQ1LTkqQ+5HJb&w_;f!sUo0z!EVIXLM&>8|>=cEoK zyT$*E$939(wq76f)m?>pFOH)aKb0Dfem;tAy9%?AdP1!4?azbvOR$+H$+a{r&D*{VEan|Lj*3Uy)R$W8vV;3Q0=V5Qn(e%Lt@&2CBMb`T?-3BP+%SBN zzNFrOfwX=t-KnscV}`|)6tma#)>NPA7Y|hQFO*iC3|F9CV;Lf3IG$X%3M!NI*$X6G zVjnVzaZHJi-X1u|MO42c9LJ3VmO=5Hxl6b3K6L4t>cFK7gP;xMLu0E_%P-BZEwzgb z>@P_8L$T}Y6g~^a!XcdXw~NrlJ9(A1@oQ825;AsXA#j=SS|gnImyY z|82f@qS(x^WWuD9%6oSXHmG|p>HI2-MygTdd+c!xyW{Wkrd@hvxx*@0Jb0qhLm|fTNok86QTuZrO{j2SKA)9dI6HI&3`ZQ zPG|m%tVGf=m+<$+Pjd|#B7HdY2jEdEoC7cXF*H(`xo`k_Z#|4~9mjel`tX^aH`$Am zL>uX7kJ8Ic(ZN}V1T<~>d`Y-}CN@?@*FwoU~ho-;9Ud|)omu3#%=Qj1rgdtCAoMEnUUwO~DC`}xD-r&uiQ*?@SbcL_Kp5^^R&?&fvb0nw0LG&V*BV{0M2@J?YO_c z{&WA|O(E>wN$Myhl0G=NLJC0*(tBWC?f|3YWr*s*8xT%}yd?PO@_MFP>R{sN4tOi~ z2ucNoLgnPnuhf{FLIT}`Wig9?c%^zZc7c{R^X{`}6SICrN_fz-E7_y=9^!EdQ5$%a znC~*8KG_+vWZ`NmE}ANOgVZ8cNhL7wk;+NvpD9*#Bl}BvDoE?*mgXWrP}=f;N5sN_ zCVVoo*dN}m@q>QA(iRMM(zd?z-v%yAA4QUMC$rfqz!Eyo?RK)m`1Diq;+M>P^&~hd zA!9OA*1}5QiKva5vwzC_X*A1th5xc~R~0R_X?!xKB;G4%y|m1s53|)U$rzpOk;8U0 zYa~%~D1^)Mh}-E%$DBZ40G?~JuEhKPxx+CblKI`GJt|S%bS%zvBX921q*5Q??No_} zhA;L?Q9=1#TH0^nsr?-T6|p4L$@7uu^d{fX7_pvvY$vW@0(HlxH z7A%b5(9MD@^d8GS0T?abBq1>Of@$mIQL|Ey?2FmKxm(Q}BzD}#!6(4e8UP0k9Rp3C z`3W#nq&a?-Uv%fN?CI$l%*pwJ^J+#{SC=tpeF+hu_XN=PeFBUrc6k7)FMPJW_j>JdZM0kvV8PYee^N9ZjPVjcgTp%?@fyEj@p zD_e6i@+!r{7`Ji!Dj0jV1ns9h+~EP`Y2_23qc+$dDjx0?X2%F)I-~ewBh{5{4X&|| zF`@}QKqX2dYkcFjXUxK!A0r4PS{e(3@xNK2>me?m0Oe`9vsmXy@HM{mJ#L`n6JSn$ zyXgLqtZIYu1d>2q9U5r-# zazq;GfDHa;JfaDfmfnl@^rUZ+ZTy)3P?$S2;Gwp2@eUt@bN@GL184ikDxc^(m#)Uu z=4GMRTK)x+aoN9T<)B^u8XFlagdgLQK@tnBArbm~E0?upa>Cy(pBn_~n?K3fz z8S!tTfnOeO`eBeq9GiHC(i z7W)jKYl)f?zm6Z|23XoqaDj&Xo;n8})m0EE-s?R^bfW}Hi_G2XU3-J((?_)LiymMH zlETfLy=BAKAd~4m7%EpD(i!l9AsOY;KHcqTk5|#C#a3v&F015a-gUkxs+W$s^lEUb zy*Wv-84jSm^3r<@AGtJAQ)5a+<%UB&?ui~_z$_?VPV(=@3N8ZVQDbD^`4!50hy;?; zRiIa01a;w+6hstQc5(Kczru15HS|UtQCyupaUke6*Lp zcf8KeFESF6zmFaJkD*{=Qtcp)qAwlF$MbaP$uA zADw!2LbAt@TKef|+fRT!PR<2XNOB;0Om0FMk-2QWh#c8UmLrk#jAZ&HY7KYy+$O4+@Tbw|;WFLs7ZY4iu4jYXhio zIDVQa7?$Ui@DfEgGe@D>CAU~8Yc+Pthi0?{$5Fcv=nzT1N< z*}Jr!0QIb$oU14{%$71cKF#um`AbAVI)?|j-1kZW%tku7>N0E0{(`Tg`>I%;A3&y~ z4am?MbVbyL-dN67w2L=Yu>v)E1i?oSp&%-|E%Tsj_$(Hwq?*f)K7xeb+5s z@L(UYtk@5pGi3mG957F!H1R&|1n5C{)JV>qyZiaf98#Qi-5Nb5X) zy@)3AANRC;SWz$fBYT@>g+eohKLLoh-?kq?NoxY0(GIu^U@Ce@)vSyz&ROT{H#~$0 z;_8)RmQA<#O{D^DJjT}-?Z*v_bbj0IzZbJU8SBIzLG>vp{)Z<3rrif**oUG8(h;1X zknAY%VXV$$87|T3Fpl5dQ43nI6cW}#0_t%L-mnEeKzgK+Dqbl8s(Q${5(xcruhR2j zve|><%lq<}YJIPQo)xTamPR|D!u>J*m))Y~kTZGsM(B|IZ7;SE1<5F9k4!2e#LGnQ zPUPdTDcUuHO3A}w39&mg?IYoP;V5`6_1Lvbf|FQ zh))02IJvFZ>L8>?&C)U`4t*6pUS1MPZr)3cEj>93LiE5fE2X^lGe$a&5|!Te-g8Lz z&+g-<-ebFA`h|kYm(lVaz!-xW-FAdiR@NFe(ZT!yjYfGxupX*2`TKCmR=j0GLrzY% z@%wvDD$gy~4kYXeFtFY{o#u5nECwy2K&_w}OBcZ`_4Ahp9G9k7`ON9^+)sd9dAPI1 z3W>!x22YeoaW7EEne+(&hw!GRg69cU?$tTeOJ9#ADx4YP!tN~}orDi0LGQlJGzpw# zI4?LgQ5)vken$0;nY^oF(D&D%%d}T@osXbISXRx>1=Y|bD&{Nuo#D%z&5zoJNF9M+ z83oYkvfFk}REveeA-xs7#UPVe+DRGV5Twr^)LEg0N3sV5q%IzC1bswBo;1iplhpp0 z_hZM+5CnBTC<&kR>FIzlFFQ+s7^!jo4^Q76m-P4j{{mkiC>kItm>M7;&JfKs8-S?b z%301r#oVQ4rcFRp92Me7%L->&X0A+|YHF^^Y&jZc+Ph`L_Ikg6e7=AD?w_v*uNU{+ zbMEt;d(J)QT+vgNz8v}wSaMU&KV;6oZ9Z@07QQQU)uZs;qs*w8^A2hm6PJEP9o3C2 z`+4&};KYUWls5+eRN&eA8W&PbT&hd2IcIjrVKA1KqUSm)>5}UCe!ymofTE)78;!#nTOc-v3y^TK=~AvT*pyJnDGyhvM*E zk2?1_wG#64$JZ{=@zqqT4PlkJ-=-f3^o7d8bwWPaVHBEhMX(42%n{AbVS zUn=uj^^x)FD9X<-%^Uc<^WhtQF1GLf(_F4nsh6XhawnL3Z%q{X=kG6(26*}Ln+4LXKb8zW%@vn=&-1H9q3Q|eK7ukP6&flmns$+xAiY4b? z|5LFiujH;IjE)Yau6S_p5BK1hDtOl6u3!REDLL;s%eed<`|_V#+n$d~W` z0nbezGM91pn2?@&ytzSA#L)OB2{h;N9J4_+%9p0(!;~FgU0I$s{{dW;bXi}GGMQl7 z^gC+1)&7zX5BEgxvAB!RA`US(gwUDo|4dx>%=yTjp_kqxn+zM69-NVHIia%4_pkW7 zL1k1{w-HwO9b_9WL=b|57NTRGsLYwL95;-7NVq5eg^J~CHoUr1JOBSj_lBjLXAX2M zWoo;UhWaA^13v!qud1}v9l{Hf{~P~e%=VCmQVnydZ`eh7O#Jg#1l8-zlH|Wm)F&X5$~@2>BQ16`Wv4YmZ-uQQcC;tX%paJ@77=cTObBT z{-vLZdVk}tN?F3@|M#Xzr^omW`!CLh_=9uWlZ`5urs|8TvGO5FHqZD{E@V37esO-4 zrDpih@%$Fs;Om?v+svk2l`4D9t#QT2E!+j+Gtn_(_#=&#>=TdFJn%hrdd#={7yhc{LeXncjRVvt|3;fKD;N>WL=e9vufHOk2F zI*akI`;C7R)N2JPvLS)CGv-xp^@_S^`G3I84L@7ou4q;ncU$s?RYqoNvOnb4*89Jb zUd^x1ZT_qE^5kJdx3j7~%JaWA|9yJ!wQ4UF|8@MoiS*nYH$mOn-Tr+y-)-sCo>5_(v!dpdn}b8mxGU^wpsd%1;Bce#=J^%%6(%W@wGp)c-{3EJF{=rXIhrI zZrNH_VZFseF}xosY|C89z5X0=a^oB1P3w209NGI{H=kFk=Ps>if3)wkZfU1Vef<3J zb~n>DKSi+zD=1Rz*)frv{PH|za7nihP8i(8oyF(4LWWZ0kxW#MGwDsba8L2DN=X8Q z0~^+qV5 zesgKy)UTBPfQ!rC8vRrw;Ri%Ld*@UB8m;tHNfTARgY+Lzx1ssqS57KpWaCE5s0l;L zLR{G|FX5-Wg1hn=XzLA>w`bh?qGwoxFU;t{)|jn-;?`d%%DQf$HJ@|t_RjaiHx?zr zrz`J`JFJ%9P*>L<|2S}YVE9hr(fo_7~dBXrG|`P!3;lY&7s zTkUfrB%#}>0_^DHfya~X%PAEhm9=~K7<_u$qbk8AItcU7gUDInQ3k349)HumQ^c=l z2$p^k>-VZNVj%_e19k2I++msp$-dX(ND*N?-H}AVsAcRY9Lpkl7c1@Weux2|dKqUn zn+pKT^cF<%*>9K7tPKzrCuRI7<}6 z0W6yWz3x2Cr{^Oo>>_)BWe>S;gMwErH{<85Em@0~P*8$jlXXsa&2^mS8I z^}7`P-cJ|5Z59Sym$O62K}#pcZ+a0fDAP)yC_5G+g8Lr7CXv4lqq=3H3qZcx9bgZC z0-#&#UjQHdtj53C)=NMo9#r3}MLKJA)A#IURkj{n*|>Pt{qW=O3P2_g2BE;38^Qm) zae?=eC^wwrx6dG9m)_9$zvg__XB7TVIq=Kbj;$5Ea-lG#h>;Cd3C|=EW+dEV3}c-!T2_bI@Gx25|P6lX@?% zXA+PgNw2?zT{&lyDzFRHB8Gr;{Go&Jj|=*0syu^fU7_-L}*ircotbDW!iuj(ca$^4FTnR3Y(XsBj^Bxb__KNK5b{HkT`$dlC1G5XHUPq<>#ExxXy7R z8VR70IeasmA0Mhd4awZO70azqa0jRJ$4MV(*o{dd2D^TwJ#ET#1ir->GO}4tr5B2To^R59!r?>jjHeK%zHn z_}LcGvsAybCcKSt{2demqFG?E84*oAwsG_Cy;4!p#oOO}fwxDerhjbQ%$(FuUwdl1 z8Tl@NW~r7@iDXmInYwDbFaGYLtw#px zH$O?cnx@NcbM7~&bUij$;UYl-01JIX0A}q-yO)UF|6|>e1d6<1dR_2$Xb9q6RL@*3 z`R6L3Gy+7c##C#`n;KKm$n+3y2;T2GSqcU>P84WQY;|Mmc% z_#!cTpY}6mkXDugC4p>(rS^^+*%lAo61eCetkNorprBa*nyA{dC;O64E&HSnN0KP{ z0ZSX4s033fC0Wr2%M(88WLv2)P67b{2zslTUY~s->OX)8_4V2>H4A?%)Bn1O6B*HS z;NhP$3Cvay%Lbr4VqSFhaI~K5G{qhRDarZW_WSmuAPYkPpoyTTc1+NMlT_Rju_+4g z0LTwCUxN;MB!QeQ(U*UJID;&HlYjPt?5_O#Vh;}*M1-o84;!{V<{~_PmN611A0|Q$ zt30qzGlgn{E0#RfhiSp-kLD+mphyY;5YeA5G9lpFyA=67EiCf#2iqrqI#!=BUDW}D zIj;Nu+3o@8sdF0tXc_ zihJo&41y`A5;>{}p7r-*mv>gX9mHs_9%>lBm9lSnURo{-q@e(;Uw=YmFn5*`v>>{X4hq{sx-d?Ik`xXMWhT+j3HJ32+~ z6dK&WJTiR_KVymJQJ{*1PFY;eOp^QtMH(JN+HZEVxqw|Q^S2G9gKjFZR<5Y?a0%)GYYVts6Y>7^6 zy^-B${l&tD=r;LNz}Bh*@p9(+Q=!_{wsFf29g)*aEKNexI~H40v-AcHJ3U~_E-z(MVYe)U~oOX0bxntvwD|%|) zEvgF8<;dhe#`%PQ7E#H00VK?#6a)LRjhS+)idhmox&Wx7*6X2T#lDHzQ zV<{TA-*D)g!{y$%C)?5WBK+onVX(LZZu{PSs$J6=dTl8FgP)(}kqwGpC#TU_EIpnqeTZ0Mz-x0xfJDPik(L@!3m5A7 zH`8oZGP(3^DS6diiwaO72brOk_Mwnkacpy*SF2DY^#I!fK3o3$R&C3R!J|=RvgjNc{sJ>x!GX%j+HZU8)g#lv85hX$AXC>h^UsJ zWXkyV!)t-wB%|Ej9z>tc6*|vgTX%kcn6wUPfe>3=T=Ko>egFXdoY5nKwV_t8=33F9?UhTGHMR)8Vox?qz2o2GaPXP*rA`@4}4_DUS;E5(FietgFdXrn%z&~;{{{*=W znZ9KBxXr*z{=%wbZhP22Q`JKN&~bTq{u=Y-`}@C=Ge@0HzG;4VOsF5C^7OH+$|k8~ z{&sQa!`pKdIn-=Z7^-IIN+<&I5wY>WkTrhvW@o^u`tw4WA4TDzlyi3e{Hn@pNAeV` z0tC-{Pb|{w#|)ur>0AM6syBgF_%@gYtOwr~ZC+!Kt$(rSbdDY#*J;jr%L` zHX{%>vJlK7al1gN;7WM#{(mnn?!U*ZVLhxc6K%}j-Twx3`n>&kRH$K%dEK>xA39n* zSRxOK9_N_*!lP#$s1mqE4#r07_FlFXr~K*)A89SLhYp1mXLu4jd03rx`v1%7Em0W{{i1r z5U^@NbORS?UweXUCnhRFE$cP(Uz`5k|L^bDp-pmRt>m}a-#o}AVCc@3_S$2xuXUHx z0KlG)pxvd*Y2UUsJ>2o{_cfC-8>aW=`e>YJ?^s4Vbw)-U94WDf!eEh6)J?Ku-xm!4$M0i#rV=@|7O(Z%;lS5knUQ>nKfz{9U?fAcF z3Pcr6L8nyUR73z#mUcX*P0yEgosqgFWO*%vbVsw3B6a`||%q&W?)_N`JpmVrYlU ziuKKYZU+s?+yWyx+qB%xPV^5V9dnK?pB4MLp=#?gc5i|Pa+(rMJ)kLe-SUdV!)c}5 z=SC_psTHB=&S!d%0@&?JpX{{+*SbLmF$6M${_Zl8q9I7^D%y>PN~-fQK^-B5O!@r| z#S_CyCrWj3D(+kOnQR^6xMh2OZH0q?x`x>AqR@br_wKScVaSUxxx}`-)nq#D!g@*x z?S~I7iq3GMN6IN6OEAZA!|VdI(pw=x9wUNH2=vgoq)>}&1L1X^$7I<} ztueFGkA>A`dMZ@P3~)p0{i=GQqu z4H(T47pwz}$mU5%`p`(A_G&>ucE^3TBdTz(JfPyuhspSl-CE@a@{d@Fh-V7h#5QZ$ zhL6b8KlH?mj>51u-iIdV$DDD2#sx^g*s(!tfgv_5z-L-gB#K`p@D6#1GK%fLF+|ZF zM?hmsp)aNEBACW$4i{!%49cQEn?8UIFzQk@iACIvpd3?)EfH_zD!w4gs8+q7Oyn|6 zy3clom3d}98Kgh&oI*~%o29f|kRlJGOi)ozJBr}15Yqul2>)k``_FP6=i1kjP8pKZ zL~hYIeOQ5hW5M!-H_kbDU+EtgTp+dGV`)0n@5|kCzYJSeNHw(#OMre`9PjDRkuqOp zBKz&%bHnkR$CjVg$ZHc&*3Z2kXpWz2dA@n#UhLOj? zTlNGx&U>6a_`~E4yr_{RHRIJZ5qsfOQsgG05F=DT?34vhQ78`#*iadrZ5|mejO@#U z3MffMc~N5p15MOTRhBs#&joHgC==Q&l$?(|<0 zCmtd>k&VUlshPPJO5-f^S7$|b8=Gt>|2!@9OvF$jv}M`!Txk{x>~`for0@wIHX0DL znI)G72*^kh+xPQO&Hmfa9KW+*Uv>p{wXa*&u||Y@PP%0+_sM*TRM96u6A_7a;$@am zAgUH8=a9>MJML8i6zF|9E2<4~&e`ZikOK{pl%wGO992?*p!*tp*C9%`1d9>In)3K- zOZ~**t%}ROGFl`JC=qIWlTuMkTz-L8c)rNZz-O;mPeDXsHy%hvU|1Y4B`0qRF<`TN zFv1LEDdatc^yhS8{bm2DvV^Z3B+2@Q5VO|!eyf}!j#FV=mCre+TRv$#4-GP>V`b-Q zh-Nk-h-3doK$F2uQ$70{CgttVRw!)u=#>@xc#-;DpQddB^ficd`NZb&WW#vDt-gT2 zg|mcUEhKfJ%+9?r_?|#$!ex(E%a6(UU=uJsFamHv+jO_?8 zcRID-p(-&04av71*+h+bRgv6t*%t}lf4(as2V0g4;Qg4B+;!vf!Fp~mfFmri#P0k} zRXym&CpTo~5_g1oZ!!JaLX)T-%GJTZq!RA8Nm8I$nG)91niQEvSpHPF+OEA$!@Yd! ziZqYIaUl=K4j~2k45>%44>UmJAF|AHO<63`&_v0X1bX{a=;2ssVie~|)WGckX)n=} zipQACxFI``atADLtXS7?bL_(KVkJ(_?Q7r^Y%du&OEtlW*CrspG^QGvwcR5@x0 zi~Y&&0bF`m18023g2?qB(H1&-!A5^56%e7KdL;CianT6(TPvca##Z`X#65|y%uyz7 z+-G>@c#UY<-erA3e1{=aex56yEH|Vmp09g#lqiSg6Jd@uCn(ewtc6ZYNQgeMCx@L4 zex{PG`%UQEC3toOAXp2Li)JT5P2hfXR};t5e@^ zTCU(;#H`chsPcb^;M!Xk4d7Tjl7BcDpp^fC21f zL>g*+S_Tc{5jv1`P~4)X*D6dZAFq?NC_wCzB@&$RS_MO)gt3y9&h!+-o1$JPvPiTj znu?SbaU~z!C2Oj=sg+gH8n6opJgtADvfm{J{i=2XfH;B>L|E6`8@k8Zyzj!#V2XUW z(enUD#H!#m2H%R)1hzGDV>j^y=NjBVpJFShNAOFcR9@nvPY)tlfY4*ny)r+OtC5|z zz02J-tgsr`fx4H>y)P%;`6AyTft!iV+Y#joKCN}~By%TU3Hps7yYtXUX zM#iX=z$`Gw-Ck^Lf}_9d$cX%E@wFFgYke;PI`VKCjkjVO8?|0D)_T6M?;oZWR7z}wS?-hj@+OchIb*uOHN=-C)K4!@LF;meAPb>q5~aO7 zZz|2d)1C~LOLkEsQM%ar`_n!>{FwF0Ze>C7*oWESf4ogVpc^*0Nr>>jagCj4cS+jL zL%Z}h*CRx&ktabMaEq8LxB^jmt&Q^Ux(C;hW1c)&B2u#9I1%{wlN5PH>ihUd5!NVW zvcuOzTjEG1y6@qZpVNeBn#$V~CFpU_Wa{$VSR_<7PDk$XQL}bgE7p@+0)i9S+^Qx< z#*LX=WpqVu@?C0T@`0kv)nmnK+T+t#pSIn(`uO>uWh*cAyJ#w}F{kpkycWx5)* zBYgA-1^gzvw@XJFqLEESyoQ|J+eHAa=MdD*HnHT9tNCZioGA*J^W3C-wcN#X2;Fpu zUG+J_fZ@>PICGQ@vZzO9^U2O@INPZ_9XfYhbE+?tKH~hYvQdxaL~iy$Fp-EFL?9KV z)=&XWbLKa+!@486z2@Ny5IX)P6j`RjISe!sMUUwLa)fW8`D_~kh{clIwRwqTn{G1) zU5}{@XhV@H(qpop*_!u-e+b*cBm77Tckb8ANxXsB?#5n@7QOcb8_JXv#)4(}!+XQx zO_8zZx`-$0YDl9}r6sJe@b2TVeAFQL^zZzjjTV9_vK*pkXF&LLCUz8wb2)~bPMssC z@lZl2j9)bj#__JPp)$?@1(sJX3D7H&S9F^xa7D(qp?IEb~p9+Si z-w+Yn;H*KCKua2E3D9Da3w_Hb=_Q}!A_}_PPw438;s!?9^Xeu@(B<2tSh{yh1o1d_ zWLqx|qUWH+(eyFAo46+?r3B}S#3UyIE<|UJG#{ET4ECT^fg=Ebm<_ z4dWCJfq`|Et zn%j1KC<+uT`)NCRp*@4UZ1VDD_1zP3rMS~*ng6Ek+%WI#Q>j`jc2Y)>_|*|8;&4kc z98PMehVH2_ag-sHKlZg5<%rd;f%%?8#clr>#u8@#rV>5WT=xQ$5^1!~J2GuGnafTS z?T+v%aYo|~qpFgVHA)1@=*|FMMLH(2RQpe04hasFF6UWRDWAy9{^7B~@|06WXJm~I z$2W^M`#vCRoYw5Nk9$poLCjD7YrXJ6bR}Mik@{u@sLg~JvSdj31jt^68F3d`Z+i&q zyrE-KA3rfh$=B<|FO9dgyI#C-j^<9tY1nkFTbRvdp(O#sj2oZ7<(^7;q^g?1!!$%| zWW=qe*O8>lv96keoCnNcPpD}Jsob~LK$v8Cf5=b(VKJYhw760yu8`BaT&NsX*t3)s zPnRWtj;5`{sv8fftyn!HC?(S~rQw7tQz)4XXkLv7UcJH5oYRhJM^Buke0W-|v?}4M z64vB1N4nz>@L08i#|~bWBlc?=htSQZ^>Y5{ zZFhqwsHIWq1-=Mkn@iW zSM(!JXTs|<+{$4CrsuuOBs8}3VYfSE)m%?bKBO_Y4wC==u=vW>^}^A8={|1Yb8Y?9 zDwgw}a=?x+btlwb|TR1qvi+s5{=B-U!=*h6&;NrdWXi?bc+&-CkwOSQ>s^Y)8=ORn@@VbD2O zK)pnlk5_Xk6-7!%qtS_a*FZIvCM;gL**C#LTsy`nwC7$uQyHpO?o$XHt}*DL=IapG)2JC8FzSSLe>kRB9!Nn%mB*$Eb%O_xK{5l&hzK3ZGQgIM zSB1IjY$Uh+`j;A4ba+aD3ktMW!ANUcBrMz6h0H?GEycyy7!N%_caF9;$p7&g^Sp(s zDgCy9pv5Xu3JFQIvzxn3FJs60X>1xSM{@FQHyOHja$I0?iF?_E#!XE?u8h+VS+h%q z^Z7^Nm8NSV>v5iXSx`t6RQ%p)%DpigMYIHC0e^rcj@1w_Y9X?nW>92-N$BG%jtu;d zVi~2x>@44N(!zfDVtX+y8*U$JHZ~G=PU@F=W$oYuHjgL3%f0la0xKQz zvW(?!F}lgDfL2F?_T@}P-oyq<=h;vAW?{w|i zt{xb4*f&2Z)Z9m{mZFu{P&4M*$Lwy~Rb#U>r&1QgvM%(b{pUg=(TAqAt07&Q+Z$=C z7H9z8i6G3F_K&D*V1tl+P2oSP4E5zHLrX=GSV-CL)7!kv$zDs=d6I#2_mR6CdfdBW z&2{f>OL!UOx?NNk?3JXT6afhc<0SQcZ&#;UI|Pudda&6%BENq_LNi` zSX#XN6o+?;ZI{xFYIVXEuyjMRNPJ@pf-BP>(sLB#g&o(GP>=-a~<{iGijozq+Mm{fO*VZB)M}nl8U|Tl1gVzVW7$! z%Wn)vOywZGd|z^`GKCNGg{2A&F3d#t?QZLRI2@9dv-68Lu4sAa2|*60DiUGu*U)64 zD~y~L^zOPIcyn`pC>lIOeEvB58M^r$?#QC3I!yXO_D)xb3n*uPEV&Xrk3oRF)fhPD z|{yWDNpC-r?8S7NY$qNAD0COP%gl_uv)wPY9z; zr4OtL9)gAscHRo!&<%IjHce)2ebmaK&Muu;7r1&W){us1#I9u>@*E2rrq1cjtGxTX0dfL7MKtWEdWxWpURsmIpNeMa*gru#uFS zlI#uy@JbT%bdrwsQPxtt6-Y|E^{a}Jm)<23A0Ca(?Tfc*>Ov3!nIAi^G_9V~%5}cn z2g>1;6Z}$8b&Wymf!UK#CW%Bi%OFZw?YB$Y@bO~Ydac_5rc`d8fuXr!2@VSY5QD78#Y=N?$nO2*p3 zz0I7*^4z-{OCt?FPaS@RbOFv!Y#037**b7z+gezjdoZ3SYMDksJ>Q~*Ga+(XhA^Od z{PqKHoS8jT{Nr5}W(e}!g|X1vV+laPx-5gaI;v?;4%9|@nu#|EfjUoC3C~}Rps?Wm zc6RM!x7^4qcp?36z?5IzV7U+x-SSL53W>xFYOzqFkA%Fqch7Vz^v0-*KtH1Z@6i1Z zb+7USSywS`ck9or3F$yj&*=u&e>(7s?^K3N^Rbw}6_gt3A$F#z2aa49+GN(Hoi3DB6SZD=l9Tu&R z<+<-wJl+}|#7)}2G{i#b+gg$WUUc4yd{AUgK2$?7f5RT1V_oXtgpasBFiCw}PRG{z zmimGrCYK(zdHjO~fLA&+9%b*sJb=m)VuF_6lmFsDQdahKyrI~;7@~?tNBf_kadnY(b+F+v9t<@_0vkX0x5lW~ATQ?1cgf?Rc@ZKO}6yQa9+*;sL5Y}GvXCp%MT>>rnD?v&aEx)Gv z(&QDWOCQGE=L7`IBxDD=6VV)(azUNvaD3Bfa}Pv_TFfTL2Pcs)H4CBIuPAY`rLqU+ zS|AVU$SE}T5{tb4axu#IhJHWp7(RL!2%#uS{Vxm~O)^M&+b~dtfh;B)ATnxmXG=~F zyX|zaQfi37wlQ2Je%=JbW)Wf`?w$yUo}fQAF}Z3Zl}>h7*U8Is2Xct?mGY6~3Qbcs z8fn2IgUnr%@{*3?Z6GH2!F>m@u9MPosEeAuDoqu^fmk2dn=Pf-y@sA?ENKWG1n(-7 z`d`ZV%0|CfTG_Fbo9(rJri|Lxf*8;c?%o3*4^Q8~(*VxQsP4WhRWltfw)clC^@{~qwBJru3qIeMnu$_`mT4x3T>TNj+0+6KzL8hi9L4ak zO>@4UNsMRK+CCCZv_SygomSqim4~4DdkvhyZ}SuOs-dU>M1UIJNRjSB%O~?n5XO8x z&s%dMc}4FTzaF)|p>TTOFt5cKo4)Cej$>r7uQ4md8~sbgE6{@7(}@{q4pOhRL+qioBD zyxco44}9qK1g}hSI0KZM<@fI3RCbhIYNFm&C97J&IC&G)R{wfOM>JePK0=lA__F0cVr z6`IiTcl!Q%uR+5m@Hk|XdrzF6GKa_^*IZuAQu2E(OEg+pxZ)r%9?tbxV~R9q+3PsxKfQ7EcoSSBtSyUMz z5u`{Xl4JeQx9)6?J3J?S_XETUQ3DGH-C#HvhL%i-8_GP8Cw^4QBj{RW5{v>L3VE#U zq7|OTgYVN0a1A!Zq4NnQtY5GlUv_uNuxvha6MT8pG{#O|lFhNV zbj#K5mrhf1VUoQ3Q#K`7fJMX+Zy_#DM^Q>jiq=Y5Mc8)J^0k#?P`7A=;>Cf9iM;GZ zq&-KMvOUuKn+Q6Vh=h8oiubB39_RD@7S{(BdfiN?4zbP9)d;yymB8nLfHhFY6JGv_ zj0PEnU0gLNmfcq6S?KK-z=|NNX-yY+0x+TNYEN^%++E{BKH8&KNawRBJzwQX^MofA zVu1s@2;oYwv9f8Zw$$k0MVqjk0J?-bSYiexoAN3&y_{q@O0=2`FZ7L-bfjOdL=y|c z>gsm`=!7o2O^d}X$*%kz9M0cLj38Ki8!}2?vn)y5JSWCa7bc2*N_S z_P#4`NBgnp=v5F6wD~3}PS-7{11CLZbT2H22eDie&9@hWsz%`{2q_HB;iUBxV{?l} zs(orb#nyR=XSh3y-;E3lBYI&@R7$SlL)=^&S2$!2!@z=qVV!p7Spm)9v6l?5(#Pu* zJe(fZG@gW-`%!LbfD@r^++vu6mRakMxk^r56MrzLwdn!1( z+#`J+1}T;ultP7M^9lR1d}lyP&aLs+kZSvY*s`YvUH2`IQ8NOw%W$u&SrXClXv)^$ zvf5cY?~Pn*zutVbbiK8q>GHocG^N}(NHizRN1fc=e6MW>sz)%GZC4V}?pSNOT$Ve= zMuhm-Sjx72NY*x&qd;j}O0|TdIb>kNJsY2O21NVYY&*^>DZ-EkvsLi?wKtdZk~V83 zik&z{?4Cl*Yi|=zq0bNi3QFbV9^-sZv@w@{pN+Y!2N7<6u&NviRG!RFFIZKB*3sGW ztK3LcX+R510>eK$CcTPD4HD#M$XM}9R;*Cw)>f-29d*dCai0SP1`%C)QCXOGs4z#O zrhhnLhUOACT|JLp{B-T%ZO?nr*A*UHPdTnTvToJqfBKyJ?YEpl`Z6BxKlCVJ3@3k~+fn?l%5@ z4Es4umwDpQB9K-=_IP)~IKoA8BtBeZ8e-1LfxR^RXl^0IAY>$T1bArP!>O+R@&6vJ>0!Vel1L=|NdRn z^MXl`at;J{x$Y#itj=6{hira6W&r_1g{iD@4--@MF9B8(_a36wlA~ilOyI;0#!0!7L{&rJY7EU~ zYu%ity4N_Eq(%UP%}6fDSoc`WEQL>_AjKj~W^G~Y?_}oV+AB}a^pdiFxC&sRG_*w@ z2t%Ae;7u`eEe*Z8H<{VvUqV)4BP;+-@Nq}sX*~cTU4vYzNs4tX!}$$S z$@>0zy+u@-Um>wgkcR zaK`d5+*lW%yiPmUHEk%RO&;o}id}@+?44@C78(-R zE_0ZdRKe|~Q$_*P<&lB*WSG*RkYYgqEE7ne6zXz+uhK>h;$ZuZu?YXJ_4%--ZtMMk zGXU>fR;%Q0QM|y)H7%>;*we5kEj64N-wI9r#x`@)vurfql7;xuD@Fo|D))MZ3XE^N z)QYOddp6xGNjyqH*j%bPr;8E|`EU=Di@NBWOKp1uaJHRNp%^f%#?HTT^47&+Oo*mV z>O5YA`|cyJKX*J5SouY>W}Nfg47Bpknw?0lCmG3lcWW2<<`!TP-SPDlGV8I&6MI)-UCIVAj6XvqT&a}v`#DBcN=I_8yyj~X@5kc$Ko=&u@TVMv^pOVtI9hGCQu(p z7Y@5r92!u%=fTz012Zp8UCtAc4G6mwyAzwto?O-JF=w|uf7XHUTyhfSUbK~oMHZ8^ zQL5YD%OCL{43?eQI(GZr_jOmD5?(!I_*N*GcA`3vfYl$bBgY1>R3qYrL#HFEN9@4V zy1baaW9v`SGjpL%j>A*F3mUFR0h9O}AHCM!JW1xF{akUXT=>3p_e0cu$7YfBRVcKH z&Ni>Va66f(S~ulFPixc#4u*U=F^pJ*CPI`QiJ4;jaMqS88$ooWCi<`)R=ke0L)Zi= z1mE3#&>Hn+gp)DkMvHVmEE79BQ<%{>kGhReocw35WvuE3ypHGdcG9IRN)GlIXwcBCubS zSZbX-WnN6-$Sc);sbMQDk8gXl0~%X%tH7Me98l|(XVM+^&$X=0)%GeIchPM+g10IJqkrrJkBi*3OJh4g~-!tOSO8q=|o*AeHb|5!nl?G=}WH< zcj&bl-n-oONJgcFl&TO2uTWkWo{G|7JIG-r2H)`*bQ)P!q_!5BaNWX}kVewfVgwh{ zF5X_V90PFCtw5HdAOclb9e^X>FJt0lI|rRjp#o)(D3=_mG0&!#<_n4p#TWr%d{iq~ zD)tjLrm!P}nZk&@*wYw=@bY+zb|f}Y{4^*ajuB*jH_)|cO_gl=I}+j$KA?bW_35o_ zu~}y3$MIb&Mf>pzn^zHQMd2D8g-159w!yl!A&aN7Z~yjOalb@~=C`J8unKtXsr_8j ztTT2o-NCTh(}VRFiR6bTfS(N%4ZN&jqpCt&2S?wiOrLL*Qh)skCuX%_T!Fw#B zF%PiiIU9Y{eBA#XK#Rym1QG*4M^h}?|z9Ml4od_>O zgXr4W>GWo|4qeDesJo>*U+#ss129-p6;C%3P(mRZJ+9?wReNd~Q?`<-An3BUjb$4T zsm0$qF>ps3UH?y|-3Y?xOkt6#k5axvQv#%m10YiKh*@)Aii9}iHc>Bm><4|&nYgbF zXGtO76DcVXM_Hr@svBK?cv9C5sV0|e8gc_i4agV?=NM4P<`ekc|+$f$bwafD9ftaUoJ7&Mj-^MM3L0;NBgA=Fh&20Bp@+BEw+#&+x`-pk%a zEv|aX{Lc=Mjlpw;+#;QBDZY~@B?nZjev)6lTQKErE|VPD-45t!^ib;V{_s1?dj#!S zDem>O0V69#4avl0ZMW0dt84_p9uZ=p)^94@kwPr1rlZMbDRRIVEv5C}z!TX-KM?!` z`mpdIecUC=JKVBFIZ7c18f>p0$UBA&6dhkXuF8#&da}Po#fB|VM4k}pj%m-B@Tw>) zEAr8;{+Y~op;!Vht?z-+r_zm9x;mgfedB@e=Hq!KE8Wi^*1oAuwK4O{v*2TIPk(+! zs|Mo^N7HVWfASPwo&NlCls5eRQNicY-~9%m%L0C^l&C7h_7&5qPjZO}f#SAd7X{Dd zYpiT{Hk9H;8^;d*^Gk_A9=*9@*-v0y*lv0RMHJAdWl@FGeEgs#rk9w#Yvowp_tsVG zCM}HbOWX{we1^cq@;PwKCR}f3V77s0F4K4p-BnlA;1Y#PIU3pa(K_I%4{*s3Pb`II zK`zNkAY_I`!MgG4xA(ZB5}TzUCX2WI!7>QmfK!>iU>p#Z51;-vw6iRFB8nJ!=Wb3W z?_tANul%=qVv}=L4l9d*9XFll{Wu8xL0Dg3Xpu42bvTSIJmx2%rt|w zI;vLr?yNo0CBw53F-?)v8IRXu2JUZ6FYobPbXXZo-mejPJ*D<>1bQ|{fKYlM_Dko7 zuYs=wIWhvlTxb%boFw~zmOa8@Qns}t(F#U$-M%9MxrXIB`+O7I25FI>R%@?SlbYER z`wnJep?NIr*&WSPswU2|{LnhwgtTS=e}bLW!+>V<7$7xR^S_cmLJ z*dk*vn6^6P6tFWZB2GMc{IUNlfh~pOkYLH(z#GR%HUeHx*f5yymz$K5;MlM(ZeFu7VBZ9g39ZFTUhO!%!HB1xDzmPj zE_Go<$z(x~3Cv87R0L7);()4SK|N=N7q;a1l=vN2m4(RDnYzNMID-~=_E%wR!tS$+ zvqvMN0XH_1PQtZgIIWN0p#2c?^nyaIu|Dq943iTn_ZI{Ouu?&hV5rS5=y^Q_HjUCWODFuuI#KBs{syrckXFs77?MV|oJGZ<;R|V6 z6Bm?ndxi;AGwKzl1q)@#9l=XdPd{`W_6|u{;H$UW%7J*4#jc85Cd%mZ2vdY(aWkpM zzpGhVBpw$9G9WS8Cx7I#$Rc``{E&6@XHhRDP?qn%ys&yuXFyScsx`4kQ8JRbGWw}B z5$<8d+JP7Go)H40F;<;GTjGh3Py+i2ptGtHj@tiY=uF&_%HK8)2ndJA-E2nvXX zxRhxPAR6EjuBn-Wh^D4x)~HQ21BeE00iwC*o|=_gX4y3E;Z|l=E@f7>+dfk>)6DOE z{R_^yu5+&QJQX^jrSf;>^%1;QPQhY#uCopj!C@6O@UU}}PhgC6b3p=N< z6j19**NT3LIc-o<)FJtZhL*^;AqBpb)x5W zAItAS^pDdqe9q%sVjd{AtQ;{_5;Q(IuP`ZxK*C;lpQr8FD@$!C|(=6i?bZ?zik z-_WLI^cjWA{V%r6|81#&UFV}2DmtY!A{IG;Ri zR%72JQFN{&Um8t|{^&tb-|ncFH#U&jc#2Xz{|~J5Zo+^6SS{pvmwE#=a8To&A^Vs$ z!9ae?{jFml=HsxR&xY9ewJV+f#C^VG)d@^a?57mFpo?AKSVznJeb5_r;>HY=k_4$G=LN5`I?&D0 zFPm0J;(oqz1yJiJ@&VM5-5@sgd0OycU5CZM_Ve8d{>~75!7Do4`|5Rk1U9jgG#J@M ztMDe)zw08skTw~uMn0Xz_WX^k<3$+Hu4==Tjx)sZGZ`m{48ami-{}~6+2RpXfkGiS zv5L~93_aAw6wVbO7XW?oPwtk$=4J3yU7MW6b;lvcE*^1P67Z0P4X?}zN3OVbP2&c6 zwMV-stOc=;TTY3b=MQ#F4EPo>MwH@MOf?psd-!Tu^)q@`no3yo0KN44NZ3)0}l0!U}-BO9};K+diHMrs*@#FDbsO{-&SfSHiU1<7ijZTu5l#JOXISOhEN zDKM(li=U3#C&66j1=@auT;<~K=oBWeFgB46A?r4upz__GgBSC%e)#bO#ZyAr1dNCF z6(1iH)k=fXo%-DXceWMy%cvv4`RwVvz95nS+5rYttDHCr9=NpOgX>YNLFa?qUgCfp zE#c3}UrjPY>T&no^3c9A$>92$>@yfz1E_j5xN89mx+frD>c3TT|NZ=vru&)w|Hdwurzhd#r&0Y5M(i&bpldmM5DtNC?Crj z!u8UMkf`2fpC24wZ1{EAwr>~n`nbf8!!}b32Ihs}#iO7cy8^xCcIPX!uPIVE57R~Y z43P@^&DmV3`UbyOvKi265}IKlM>dF1Bbbz^BWnh(A|l{#NNN57cf?h1KW+|U(bB}| zaZzG^cVk(&)Didnlgzlxu#&wi*8Cezp|XPq$Ks*OfdmBmAS^Qte{Xtgp%0o)03+ur zvfR+PH~bFinV(7Siud-D8n+a)g^i7dJ+c4&8Z`YfW@B;7e_b0k+x~hpM3WkO5q_Z- z1AM)HN~Epb>id-2@OJH|A=r^P48wnl&@*srtbU`IFaS1B4)B|3ndw z$LDtA7Z~!}jPI?%R+of4(x?IMQ%vU2D_kf8C=D5-4BB^1OZ2>s$!`HhFii1nQA2(} zTtUe`s$;C*|3C}KA-fp*CzE0(5ANXRoo`BNYX&l=+wr@HLtR0{YIT`HXo*2n(^dbr z$H)&JW4=uPPqCL0m|Nu8Nf?}~zs_+LDCPIUr|@qP2D`cmpt_nXr#}0-Q2;w*zELRV zgfDPX*Rxuyi&EAwxPHOvsTEAluD#(36hV`wxGXJhF7ZbXkdzKeaL0h_FGDAX8FIOg zrXCf(O<7QrD#)J~H~~gJ6db@*f;ruF_gGWwJ0y5KgL`9J8(p~R`8bXPo z7S?sZF8{k#E2YPXaI4VHkS9eV6huvW2Oufr#50K_GU6I<9KOooDgS0dSVC*Ub5$AP zV?48`a)9c7y5|)XP!^jUesQcXm$>` zsgW~dXYiZ}^QYViXd#t{hi`}@u!tz*)PzG;DOVZCyGfAGxu zAceAKtAm0sRMJu-qIjvKL`OqW>SZ+-UI~yH;K|&fdPW&fPo`=2!ZEcwUK-i=!=#PU zBAAZ@7`u##;E}j!#xPK91>)TkwpqkX6}aJ#;wnHaHXVyBK!rklFC-9!NJX?D2Zm7b z#!IBUVOD*X6J$|DcZz zlBf_J89JlT4!2%$S8J2ZeBs8mU&7C+8Cuy$#@sy^r@oQmchrBEP5qkJCHz@bu{R;{ z?p2hRV3q7>5y4?xRo_foFSpO+kn%Cw2+OlTuwZ~uNRsi`+A@Lm2twHqyqU=>oPNC>qj~HeIkpaga9KHvH2@+ z?RsSdD1?UzLZQ1OJ2(1Se(w{&w%f zvCGE8OY&tF=n-&?zx4F(@9#t)P~g}Ai66WBo|L%$*iB3D@Jl0@wpTU8nYSF;#RJ!K z16L}>#SfdbjL?_Gs6cw zwJ^MYYdr)M?%KVHn?CcxP>tFyFbTfEnCLs!=TEhqHe>9#(4g)Ct5J~WE@%ifB>vRz zDZ3#k-%@WMzRBMs_|E6X7z2FK6Up5oKi7vF_A5nbw&$fdSCSLAh0aGrM+DwNk>mt1 zEH<|hica)WF1?Fna2JlccX?-Y9Ivrijnb@tm4f(DE+3?SB$n$p)W|+tZ3+ENtv*Uv znS@EOD$IH^1nMChOL$C{ubg*O)I{!|u+!EK=KEJ9o8iPfIj8 zJ^JipyW`J{qoUKm%rv$H|YM?B8 zcxMpLe4cs?!rpPKvrj2cpupL}tcBm^BS%y}MUpW5{8ocvTyvd8qO21%@+!~=royXo zIpN+#`wxrXi6iHDI7FVD)Vu5bMIHE+&abPIOWMRw7jX^a^N8R~7@V{zf$!3@A1EzpptPVX&cT4(0xa94)qW!pmQnx|Z8(qnC*bBT zC>X>cap1E)T}E0I*P04NddEXSW2h$EYp9las~P%6H7E8-Ur6#KYyt>F!ZCt#60bfr z6qbz%o_(61@nez#r0lsC4%%dQJfV;H@+5IWsaiNJMR8BL;vQlf{p?GLodDE%nNhTP z&|Yo5Z8isRGR(H4P@eGnjH)vjnW8$EPm35Q5Ep~E1!aFukq@S*aiUR>Z8oC!+0NZI zU;h2^{N23~x60(gZF+?d1yeW=&3&D$I1t^{b5nF7^Zx*8F@Y!6`Lf^sczfXq0Zj!B zi8blr0c^m4{Q2I-6yNfkab@K;aI8}BKH19?4xuwZaf)c zm^M>@gb4GRLeoyAg=&MfR7$e2+deqVHmKX_Vd5(Y~<%1MKL0VOI}2 zUL3bJ_5Bvix@^T5a7MP}lS2EyeiMDViq#YI=biN0SIf01GI~jbFPf zGdiTX07_1?nestj3ZGAErmL>1d--D)!Kar}{%jIFYwo$9`bXf)&E;6`kA2?b5t~h; z^Z&#!qc|n;kIT+(3#)W-eox^GscNT}WEf(Y_sW(C#kDhaaodW%25IGlUO{ z-s_(k$$;Gf#2WKN$bgae{1FCe*GC8axe%){B6!4HA`i}9et;wH8>ks-u-Wp<>!IV* z*zL3S?m1RhIt!#jew+;e_H$l+c4u$TPOGSO8%loJ?{UgqCIAP;d^PMpEWy`0ZD;hr zP|7r~{QJLwz*CH1M#IR~D>dpBc5J?Xo51kzW>l{2vCezcH;`#{_koySZ${pYF>%N| z($Qxgwt7mQILjBwauM`1Rb|>cY#f7W6qe5PAH$C-GIBTkK8?&a`$V?XE5 z?#lHN4|&tADLkw7tzX{^eQILIh=|0Y{971m0Yhf`#Um5FurUUUB-1Adat)781z<5{1QZF|S?1mciGc+U;8(XqO zNNU%3Vm1g6#qGd{N#G7jKpqoW+sa$1o=@eG7ah#)iuB@bO&1-4S*hM~-5S>&?a0H| zs-sZKkDw7uGsn(P!J=TWSW^_s7B({A6;y5Q1Uew*m$Ze8KMTuw%cC!lU;U2Uq9HK8 zipUCp*HM4=>1tVB3dmm`cd}@HJ{Z=bgyWw}E0V)tc~?6CZeYywU#=iojPWh_RB%lI z4`l)-cl!|~aM;NOone(2SMWS*$>iRN0B#gqUT=PftzsqxhuOo5{M@eyE<5>-4jeMr zAF!6o@CD6%lg^;A)`K-OK`-|V_$&LD3(AfNd(4+m@$BtYhBgW&<3>3g%kW2d1 z2|b_&6iu&&zgOsiMFV1giXFu*H}bA{FCk#^C0?B^a?f>oTl3$GT!bUMJj?f0+Eu2T z6D9>Q`Dm~A0V9v7--{rNmPT&}Bo$UcplKLqL*n=s5T?x-5u30qy0~DwJyZu)C8Wr= zhi?bBNt;H}oOj#)D4D_cTr~@JwJF}*=hB-n+v1l*`FxcTIzPa3Nb=m#cu(@`$0VIy z#j^kMfD?6Z&ZgMUH-E2tzM+xBiBtWvPf~P8AhgR-=YI2WY(E%QjzK^@T|Q}v`tBnj zOHr=4nh%$QN&R=M>T*z~39o@j&E}I!)-TLI9NQPnU%zOF$(pE}CB?`9!TT(p;rDr? zcly+?LxJIN`Omu{YALZa^y3U%&Mm?DM=CYP4_SY4qO@qsKSs7*yYSi0>whhTY_j`} zwbMOjY<8)RW3Vx@q63V-|0WPHGIZDa_-S}x-ba)QN4wN~$*pF?K-7KFV0)tj zx5wF#z2mhND%TXRp$~#c|Gu=3_3lYLTxGE~gN7xkq>>u)P_T%WrY&EE?YHAfb|~&w zyd4S>mBc<9+U9?(Z=^AVSrtbMG^&>tlu$?^RF`*NSEg3f-nlUJLsKKLmHK{UHn&Vx z4+-6UZrFw6Oev#+8=#gyT-ScQ222|SlwjI0=Uf}7HW8$}OCj8hb;Ap)k~6^a_|YYVCY3i) zd5$HCd&XB>7!;riw4vt55dCQ#LK1-Z&V!XqIK{ODlcGl3o`$C!bn^CziB{8Ec1#Uk zcIutFJI#f`fOr8?FNnP)7cUa0K}nWoTCCWH9U*h4+{(+#2a$Ai>nxiN5D zZIP-pg-bC2Qk+{xj|eCzI7x#oKWcZz8Q8O?HwQq+V~smVEHMcCqqnvEXs631Q=Iw^ z$iSt`KiAX+mB@Q11M>JOMXwpUd*=O-j8I#_Hc^so6gNTVUB?D91t$j99#NDzS0w<0473ErsklH=XjKaFo$}7TH2%in}Wbf zj$rSMr2Sc(gx~~y$!tTwPNlLoW-sAo-WQ!IWU2l}6GLdhAI)$sY&>Kgz;Zga!j)&&95BRL0t0CnG;*+?${Lx z2(T}qC4~}Mew!_dfKmOZkP1ugSI=)R{xjG&0R8yYHqKdZ?bjBtjo-Wg#^P3k8 z)7ajQT%MpP8PJ^_+c5vaRyyf6<)5YqMn{jcdR=QOpTY|oTpd7wI# zMpI-iWpyA%TvgEvc|p$g2!Lq@KL83VttV*7jzDKe6^A*skpLz1bsj_9TciOZji1UG zax0P)a;aq9p_MR4hT5fyA29%S?}YPCN^5-NKm)te07NlEio9xjv>8ke)z;4VDsh|% zg2i`P!kwz(67z7~>H6d6gDx&aC{g)F2|~_Fm@YY9`$wW$YeuoVcXF!^lw$H)nyV8= ze!UsJVj!jpbx)KH$(}7W5;no z(7_--V@uxat=bs-0C2nJ4-pNu6%Hr9PK8n&wmmV^en5dp9eY3f&Yjv{o5o{!ZBqa6o(hHRt)jq!`njqCN78!hX8M7M|1ArK_y^v^|$g4!hPc(brAjH6RCmq0GD z02vMBckNjDBc|A$o9A;j=sJ1IreO5oldQ~37m4F3?{@}QvQ1t79Btt@+u`aRN?~VH z#bzVd{3Fu9qk-3J%ztY*g1U=W`d&7xpjMmGWJ>P;ij{l)%!aD#FJA|3xw%P%ojY{9 z4W*s&rXnv;h$}mb&~*9CiLZ129Vi>1aCPupsgHW(<$(YnF!?B%S1^SEMf!4>>8%%5)+C7-E6zUxt?cbW> z%|^+=J_To$#N1FjTos0MJ}KT!*LwgIcFp-8)L3^xv*EMgdERaWGqLywRc_AeHWOkP z>g|#B{v^RQ(Ule_v!RqsInISFaTeU-K$X&3@bc~LQN+I>$C;f)mogcQi+qft=6uwxCpwEExv&PxXtNG!EV6TKDh&CNd# z;3~?i?wdj~g;-{u8G4R~_q)3=K=uVYC-I7dUid6N$rjELa0o0>(IOVX1P>DPW>L8) ztcGz$le`{n{Xu0|6%Jf zA%JEEX*-@8!_B~wE|x{KxW!oNNmp`mY(g*3XW?+7xicUXJNDr&@xAAlQ9IU6n)J%& zPDEPS_EUNsF9)M$@Io~>OTiGAlv}+uLvGGd@`lD+ELGU6G;2<80QOdK6cB~cB0TP6 zHzIt!>%3WJ#%ZxNSi5|Mf%!s*gzDw*+1lB!hgk}zt1g5bv_zO$4YE#|efbw)4v27T zGk)01#J~YOpfV6{aQQdQd*7!cna(3)QBN7BO|eh?p|#$KX9=j=X8Sk%@t=*&9M)+B3yp?nAwp? z-dyI)vzomhiU_M)Q06<+WB~uMU7opxXHUd=MWNHOf7l?t;b7j~l8}kWvrjqxtD7>k z=b*((&B^Qge|`J<+n<2^y?RUr>+TQikqaTaG|1wG--mBZD>d`kv73wjl++|lShMP< zR8cM8%KU>}`~)KxuhQ?ogryubMLU)96tmw3)N6Ih;3s8`^n1Sj2~VBm$+Pa6q7GNd->6#?JMYT6=*#+;WZTVh_`ozvz=l_4Q zw*0jvy^g)$LhngS+!!k&{lgp#yRPvoR6Cx{5sx!=1B^AKQQ#l}mXXb3B_9Ory)Fa74F?LiCS^da zDmWPKn{sxW2?u3XWm@dh7FFyrS=(+Rug9QJb?&Y2{~J@$c~83e#>2RQmteR79t%HD z)qQfWZwDqT!~1H9-8Qv$qpL$Cu)G4b&LHi?{Fx*)7Izf;*o+sL`j>-e!s4^-?l+^O z4K%&#Sp4~IMZ073)WgZaEDTYAmdKmI^>}raHXmLoaP+T}VdSMU^PzHt&-{EB$IHZy zKEpwY6xdO)**qITVWCzV$G}Ri$w&);ZiH!m!}tjkaD96|ukROQbQ28d2S%9IZ~D^^ z2VourknTYD%Rk6J0&@^($NDw!$?`99S&LP8Ng2UKOB9q1;k_}GTmT%9tlVsA3(`1_ z)JaQSyZ;(7({b~ON>)SK+>v7m@$!CBp75cdA1$VUcx4S>Kti63K4C|Z#kRWFsqI-U zAT#re0I6yo+XlTSwvtqaKclXT2fQ`U81p=cGP*Lh_1U2ZAm})SvZpkG`r9v|#kypa zUB#B8ABxFn3To4G?6Ey3C9|@krzl|JL!To@j+8{0quQCZn%EY9-~Zl!BtSJz0-UQ0 z_=*v?ZT}+vpR&ua^v?+rTvhwLw)C+_qFG-WU?rS^EI9yU{S1JV@BQzx21~`;YX+SsbPI88s)FPDZb$>5_;NSeY_DE5|;o=bb%*%7-nP&7WAYFp9$8 zbu@5x{W=0iEEqsng>^)`*h5(V=+wev{1*K$w@-q%6AJg=zT(B}IsN6v!XF<7zdoop zE+A^8+_JZD`(M6qRqt|aqlvEj1a#_4xy2n7mn4<02V(OyCjhtvdGNd$a6RWAp|b5Z z1&wfTEVifqVnsF$Ny;oM1}iXlz(Yyr9`-Nd`gVZaF@AkQg;&o$0SX~PdJW=H;ET6J z{`@{nQ(pOT>+*NGJ`fh%l_sFU4sV(uDv24q31^JGFL3|fAk*YlP(Yf~6Ijggm{-oh$vB5nT)4k*zq`a&IG(>>4 z1m-|Y!Ty+sk6hqrPqnDAFtNqO)W?hq1;P{tgIOxe%Yv2xv6cBx(^o9Bf?x*;lYFsP zJ*`7Lqm=T{x>)9|-JmVvPtZCaZ+8?aPdnA{1aq;;6)>V`E|hJI zB`7pPaILz``l4+WoEX>$?gaH_bR-n0(IDj>W<}!Q{KPQKLkX|#AOfR<{|>D)hY7Zd z0N*W%Yd{hFs0-B-zZ$|*XoYozJ&7PueLa>MP?HXR*iE%g00klWIeHvLiZv_I@!@qG z+JsQ4h3|s{%F?WG+udadtsO2CX_{Ck9Hc0)0X8U2Hdlvt?BjNEQsdg?dPFvXku2ZE zJOttq;dcA3MT#n$H`4}`Ltb)#*t<55))|qJaaWR|0>xdqYib!wg#T;~rFwuhnB}j@>{q1L2T^mFhx?9RAheo$jB1PJ$DiNc5B?zr%_a3ISp=^ z>Vf@HEBScH_inOW-I2|`zvB+ez0URMy;BmRL$;*}5xix)9W3##ke)+-9Tc$a-2rNb z+W43WuFT-4djnEx7D_Vmgu%K;->QPH`mQT~!&}LpZ{81uQ-k?x2N}QcMy_5_V`P*+*?bFM*X^Q7vNt#eWtsnW6j*6M=mZM7{9twaI~>JQ z_HV*52ZK=|DJYSYOxC?HEyGZO*S%6P_Kko}X)b9JSJ9QMATV{%eRrKsNXXkA6Y!4v zmCla8A1wbR2>4~w4!w)1V$VZps0iQDj$hYv_LeoAYeOnQfDDT+a+3;iw0Wc{kTNXvw^#RYFy)ESWlc} zAg4_=9se-jvpjJ``Yl(}ACpZlhnK*<`q_kX5EB{PIp?;EiTpCUz?-T{RDwa$ z=JnDqXBy!VNk~Q~lijBLInpKPtK{HwGQs=!x|Y^h7kotN_uU9FB9ujN6LBkTxK zeNq(4j>{+2Yg2xMm>J*~?62b8*Y(n(`7SM22jl{wJ0HMkfR=DV-*|@&=#KQ33Mvza zm}77K@h%5KY^n8ba3-g89Y6`-xKk__fJ{9@7|tdl+f2$lXlZvyQ+rVY(8M_Gb8RUr z>gk8zZtgoodk*X}W$2QvLW;oXZQ&Svlg!KiWtCnpfLf~WhO)=-$~+{F6VaqLBPMF9 zxbS_l=LUEYPGtsz=;bdW27wdDcRUK1fQ6~q5SFz@^>Oz2-bHwNW197H;3LvhhW=D$AwR9rVd;}J%v zM10|=W8D=943ox=WsUi@BvG zoID#@S_2uz;KH2GgA$7^>Apm`$Z^9k<0DWq-N>4M=DzV>C3C+8sjSmh*-7?S4WDdo z5KHcGOr+!T?eTa%(3|BqA!Pmn{NgA3Dr|1ZdiG>5n{sJ9*2UwZNZm?-s9>BQW#*6Qn537lni_zCtBbVCVmmhkvjgZHzFrp()69oA zSG#9DBbKKgb^ShYqQQK^Oc!ay6e`~d^-g>Sbx3_T)+)QAU`APqi%iWE7z?ir=axFn z<&(^RJo!*U(>{Q0yo^28*8aC=XyLAo!aYCmb#fZlV&Ccc-#%=-bzSh^y@am*vwQAF z%xJ@ap>RR?wK`+kgr4NPTpaCFzd5cK9rY{({+YbxK-*BB=6zTC@{ry2HK9Xq6I5p zaI8UfOUK*Q6)ZFebH^bi=JJHPpK5&ICz}2IU*S)^^6+RNwd-r1wuCind% zyZzzix&`1`&)N-Uh?T^NCTc~h3Q6A*auvFkkiv|K;<>fH^}45LZP9%0t1<0+9jJ*(XPrQDqJiG+c$=pZfy-i=`Kq zsw+^6$C%{9KCW%3h2Yi!(gZAp{Q?2a2P}kf&m)-!8$1IDz;2_F>j<8fEszX2+D!td z4|h2W^&4AyWWP99gw!AXh=j?vJ-e!fqiHGg*&G2mjhk>QNif3{`kwBEhIN3Po66EJ zPA~hrxR(QdiIm&DIh2J!;W5Y9wb>(QJxC;uRPS3tzGSqD;#mSZHL6+jNs!SqOaQ}w zDDV}fdfZKJD3t(ebu;=<535kc=3HvZl5|hhwb;g1Zc;E@w!*YH`Z)^3Y!gxoWHfAY43zpM&ZV zwuR~%hx~D0a}v)#M}hsixpe?Cv{L7-*M$b`-RA5-3DoD9p#%$yNA{k4^qh93%QJjU zkKxaRlfrkI?RI)$Pl4&i*8-mz!!07@15N5MHrnmrVnNUgZ63{Revc!14U{pfn5m!d zc;gYihh7&SJTW>i1Y$?a$E}TuIL8^kwJoB)k#IlT2Z%$H>20Tfhx2$oIP-V9gCf7Er*eV&L~Ov*zBL;y_w5a_3k*xj;OvVVr{l^3@KHs z?gyv{lT6a&e05F66VxVfraabWvWG4B)JU8XaM>=0m&ixB1%Ud4K;L(VT|j2#x!*>> z9PrveiWasm#1QgWuDs{^q^y|PnKnDsI;PKNaJl1`j*c_r8~}+HEl8eV>zbCFj)ZW} zJL4{(xX<(@sD?Z#;12Ab_(VuHvb)e(YjCt$1P#Zo&*^CD z+Bdo1z~cvG>rDWzBgfnM;yX#GyT!$kRbGT|E|WG}T03V{53atV(|_LA=rZB$J~if* z3qM$qdA?`F`E=^=?qB0}ejg3rdoueY@Zaz~`&UIqvstpQ2DTv+PVxZwp|YGBP|tyD zUQx_y8UFm`AX@Nl7pEr|uJ{(||TjN}DbT`c~L%rvB&jKnHsB6+NY6rVoCC^CA ziE_Bamsj}9?i*?Vi;asU@ET)%XWHRHvlNt^3*Js2{P|K6h`?)Pk?@<{o<+Rl z`vpWruyU?XumY2@Mmk;#k5xWiXBN?i88!+_ta7avB45Bq9|L| zhFcM_-U;f0J@zG@ZtiqVaW?X&!7=cxJL(h(fX5umJV0!|$c^tX@Z!5bHkNn#wC97t zEkRdA-mPE8c;-i)H%g_XY3^hKLk?Yi7ttYoEB}l~dTNg%k?+6ReQb^2t8oPZ08KBC z9OMh|Ko}lh?`RWqkFmbCpsZ8!J~ohQBpO&JKsj@uXk$z5VG!4bt<9#BafWsB`I7qs-KgRh~l<-Us*z|n)^RhKHn|9XzsK5E1g1f{w(AasR z#@~Mgr|{yKQ|Ad>?(3gC2dS~JvDFaGvs1Zgc}DFBnoN4ZhnR-iE1$$*`)0fR2iO1)5DK^TZy$+djhTfD;xeIUq;&BdXS9(5fRUc;wsnZ;v;q~5DIz8vzG4hU+8bxE`yG%IfC9f= zOi&>GDj-r>6pYZ+RNXrj)awU8No8g8KNK1(ccaO?yi?*J&*vK}Ma=Q62AR_31wrn- zeF0BvC`XyLgCdW9RXsPDpnNp(m#|1H7-Mp_nn4tU!L^gIm)mar2mW=@HkeCn#Tmu! zCwM9+A7sIqyYfOD1we|eao%l!L>X)4xs?1BDYzuPK zcf2gdMSE>^Tmnw~!s$+(^|ac%<1ucj_DaZ<(;r!%zPx_$vUkrvufP8_DLn_X)2cM9 zYX`rfi`_g`>6}{6|Cq7!WjYQ$kM5oJzr!Vw(X)N@h=XrmjXnVNpmgR2BfE{`Mi(8p z#?w$q`Hl}bKDnGyUikx2Z*?8Db}paDptr}k?RQZ#ogNlUP1%@5yE0hZM)DH$+kt2K znR)8_6(Br@<(awj)mz z&wmj-;+rC&JQy8q#feYY2d?ZHLb+|;`0%*_CoI&(Z_v8$+mKoXDHmozhzSjef%kWU zsXSGNMbh)Zp3yoyq!Obm*&gpPUXA8=5@+ezLD#Y&buO{Z*r6SerOZ;Y7z#4%L_jWGS$-i`MbCS_N4IS@3UxMa6CpA%n=c7Hhq8f_{9d+DVZk1fX zS4hS^XBKyEjTdj4tD>OZb^GVG_ocQHY!snMKtPvdX37Qn*Y${v%20%F4P-?3HcOTj z()0w7p)78iu(D6lNLu05_ujQst`XtLGn#m?w zz5DZtIl{_S0;TBO72HsagxZxDd#v*C`83(j#5nEPgt37eKQvxC23rp1ha|(gMe+INe9%ve%PY_!a+*uBG}xIFAUV% zbQ&G*}x z>U74{6I0n!FV8#g~nAMm2<#_^H`NUv^V4947skBKTzmU@lW+hB9{V)PmHtUn7bxtNW4v1HZR)?;^VoFW1 zGlOhEV@D9j<7hoV(g#Xk2ggL*_wmQtU@u0wR1Nl|c+)L$lDhYLlus6@Bq7s0I%Ujf0hT!^hBT(Y_^qJX`4$y{ zos5c$*H$V|e)QI|OR2Tzk;r+w^@Pyu6}lmOkXLjkgP%t~bHtMp9GSFf{clmtRznM5 z@LdFxD7+M%N}8BGjFuSCSC6rQBoG$`v;@wl{MMEbPK36LeDBeoK*gWTSnXPdfCLIp z*!32^-taaLo8n9S?2Q7c0E8G^T4#UC_3rYlN3Snv+T48ZffFB{J9injf-(eWNLc0c zzT;HT9j*ohFcGy~i9{_SOy}c3O#u2RGrw)WfEJj_~>rItQ_`>Zw-S z5k2h9G{#6URXlfrNa}Zfb^Iv?ls6vID?fCDba|xc6)2k2pKT1=+huN5<|889n0@-< z!&II>)%XbrhOr5LK@@@f>G?zJJtfLD+9ueYbO1oVUXr!uSZB*1dIF3%dHwH~DYwpb zT(neQ8 z>6FAF&e!9orZkjSGl^S>b(ZCsRgH~wPVzhKhosxgCoN1jPKC%XcGJMe#xTnKYQ~0) z`s0|pkwzG35*wd9vc)kaXo}Sd1~E`}*S0Prc_bD|!~&qU&rL^nmG%u&=GvF$@86oq zk05MDmiwG3Fe3;$ zUSTD_@2Z8t`Y@5GrTS0LAQ5Vn1P@v&yGsVH%4$}{%CY~$D zGD#M3LhlE-U=T5)gS6gp*uQ6M#&!YbfjFhybGJvTv5dj($nYl+)>e$pa0-tB3+UQg zA$vnD5$&;rAfisQGm8j^t$+j@8zH`)Q$3#vBqi%I8?r~;FFWI&7%lx>{_yAQ2!@34 zTkMh+jE~)V=sQI7k9X_Z&HcYep2oAGNB*CobN^?$|NrAFbjx>TR8>-v8E3-9+2 zuiNwaygwdy>4^#=Q3rjS#Q69FuxNe-L-xQhNTw-N?Ru0Ss_SyiF6&$4Vsx^f1L~S} zU4<;??HOpOJVR2L~9w?eD+jj-A5a3ZWJAF?>!e&`?1?E z&<3|L-;OX?dU!AV{f}>_V%`sbzgbMYwg0z2D<$%Pj*{t`R*d9J4=gYMr!_&jW z&3b>lfO3Kt^2^=&HfUtEhXlXM*aRC4xlFf0_?f;36S;twLW4(P82sZCON<(4PDEEz zmzyuxQYH{OFc8QKzCbZ{jmEO)uO^!>cMeVAjT}>i$PxM|$+bf8xjGNIGC_={L=6wk zVboDHGdyb)`q&*!weHVgmXAv$L<;wy;j0`G1XfzuX(vayD)qN>Jwt>l zK`A=P@~*xiR$HvWZS?+Y+~3hQ5p@Kf$Om|Y22 zk|h3p7Mj(E|8yn=7nmCsz$f}aKPsS9g^y;aM@3Yf3&P@{3DJF653ZH39Pt)P_?*RCrv!s#b3p&2PMODHyGzbbVDRBlzipop_0b%^Qp6!hRhDmD7}s z(46t0`L$*ug}qOdI#!!%rIv+~40JzSkp9(Q*PK3yPA|+Tz%bWKumhQzvCNn*GpnkczJyw-Ty5 z-kZ|FwhpYNp0`hr}vpwq;cW% z_a|yhe-?XS#2B#;8tXr`_qM^a^O-QENQs?1HX4bMSZ-OsoHBiXH@~3>r;B!)CH`g8 z{Kueo_hYqJ$9c~LbdGjiNhx|lf9g+q%xy5C$mQnn@0wf1PE3(u$9(v}j2z@s3eeHg zEx-{&7u_V1gXk)GOKBh}7j_iKV&XjsIA%{>ij3-7OfL{*q4hH}n-Q7JLfS}%gWdZQ zQ_Rf8#vhW+vE{lfx5+4ZWzBm^UmPTZXc)R z8MH4L_9A#q^E&g>P7V)$ylYkbZwit<#~C&f4HdpiNP#Js7ow6P4xV}Uo9`iqzVef4 zFM{8%ZCPp;{5%`@Z;3@hS=F=6)q^XueLreG&a>xeBP>yp=(iaGay2iBI1)<>_3 z&MFVTYJtp3Z*g|CbN2n{D4r2uWwONo{S%QKKTrvblG=CU$NXVO;}59M9hh-Xa@v17 z`jvCh3**G~{OFUL{oOO%7{ZMynR;bd9ry5-7L+?_B>tAwxPy#TEX;sgScaQa_&e2K zIEsLbh@=&U5n7iY?bZ+!;jM_%xfF`K^SfgJIF3eu_6Ke`b@tVJs)MX2-&d~AR3pVW z@^5!aqi}?6=D89x{is)IXUHvz2uB^Iay+N{UNPz%%eh3%6u&IM7ONB57@JhZIlSU? zrsmz_ie^qh1zgd9Q-uK4a1z4DrvHKA9$=*?$Y^i*xNi0!&nTP_#sf0K0Ef=nhgovo zp17z(jAftw9|L#eb4s;23CtN%g`h`89M=>EfwK6G7^-Hp%SoxeMRS!FRNBNqtq*z~ zFksEshisj74;h4eHiM1y^JYRdewMs0z~0!6DGS>63C+W`LosM~N zU7KY8k+UgAcZ`V$PE$k4uzJ`_Q3zMvm^AqGB)BuXK(`PI3R*SsmsSlaqDxWWJl}Tj zRMv?eW-AiTF71d-eM@3X6yzyagcQ+zf*b(7ksT>iD$-uY4+mgbFk{wssoIV|w;PQj zcl7oGZNtZR%#jUj(c@~s)Wh56;_{KF%$+_qm!$8^FM^wqQ_QA6SB5wDYzVFgsmG5b zO{*j;3s|&PK)C(em!<8^4ys6O3~>J8;}8f*{Njurq`zKglf34TYshXp*l@H}zdM&H zqg6j9@urpjzo8~wXT=qA4%zX}!EpC}Jv`5ZOtf@(7`Ge&-Xc&nrxM6F%w;-icnl@% z0*LKC_)-D{BNS5;Knv-D0?*?Vg{o(*kT^w*yW+_b0F5ny2g`KUBzuPdSg3|%Yb5$D zj=(kF+fU{CZF^WeD9x=hK-37)avRi_B`lsK;o<>(j}QMF^mjzy2-x_JSL{=t3Y%x! zppLxAi_Im>A@@aX3-4Q^MT-FZITa#=?l3t2eJinwu}C_s@8~`Xo9LL1pc;G3&Hctn zpl{kZcL-CzKk8i(D#l4Ul|1+PM+XI#N3ohbwJpWRL{1}TlU|D#tdcT57B*?DP+!po_wp|Mkam^gqa?tb(5?F)@K-edm(Jf%oVA!bBna=$y z(j(;d#>2Pz#0zSG3QQ`Kch`OEZ@ooigz#dXG&F)f?k& zyZC#;Z;l`6`Zokjw-0y>F!Wg(K7Cu;5%v!IlwpdbT&jW#Mqe~ z(^+bm{UPDle>ThZWW}8-6xQptn>UVWSr=T+%*$w-sl4O5#^@14P*f(-cAH)$^j3w` z)3bH&=+V|$b=hHx;Ml>-i#6{BAFz<`Cv&>4oiabJ<%53lcm5AUzbCN^Qo83uf?y|St*Owyg80ea1;$)awltE(7kS98~!m1~Q z^M;;?WeZnuq^FCQHUIcAk{3MuhOUquWtajN|O>!aD`Ad)IoC-jCL|fjpJg{$?WV`h;29z4w zHPI;DAygE%mLkXnr*7?Q&Asd&o+4d&cvDdlCM2_XQ!Ok-G;iw zp%8{$`oBJCD=cXwX4l-Q0YCF&0_F_9{!(#WPc2Z#A!JsDQRu|o2j%a?_XfS$UYf^t zIlSAB1|OuEq(8cEkOHqP4D#VNS`*hne)QqE>FaEJX^gH8P6G%jOhUl8^5Tun#DuVJ zCk!sze>*KQsl77c(=ttB*KC5^$fF>0e9PstYbo_9vg*0I%xzzh3Gk=HkYfMM6n@hjClWOQ4zy3ql7N* zliA18dXn5{K_FL)f^V93;yBmaU3dlwURqYE$N?&<)eSu=gZNkXeaI(sMe7IxHxoTn zI6vJRqbK8Wub!<~&%ch@oH;l9aB6;PcNOX}deyk1#qg4>B~X*Y4DnntT_-{QoS1tG zG?d38dd#&q3S>BNMSDmEsia+r13PmWUnaJQVfM`qTjwQAp`mF#n6d7$fEFumNGRC2 z)m7RuQ>3j4ugH;BlN8TXwFX@w`Q`ole9vTe(++xday5f zv-~I@tK%Qf#ISVzuY=m&H{UpMtL1QVhXn@Y!k@CyIQ4LJr9$e#9mVT@dssURYI7m_ zOipNnt|#O5*u??cZ7HvsQ58vb8f3-Rhlf5lDK530;P}I@GN>c=1?{;J%ZWQxsKwI* z!P&tn|5QwTAk`5Q!RAbVJ!gzZQ(HLsIIvrz{!(a9($s!}>Eytez&X=1;2hF?PmILO z?=%;}8moU&REJKW7>zdf#AG-31aGedl$LZ?^Tu9|_s8a9s2x%@7JQ^_tiA$Wscvd^az1m@dbf?GS}Of(&{-a zpv2fPHyR%>M^ShLN!z1G8KONB$Cre%^C1T_I&{1&c%l_6Uaj?KLF?#woqm#Tl%eHD zY@(b%RDDG;zqkta#QtNh@@D=L$zuS#sdi?G>d4eF$VT~olBZUxr*5qK8-?ftdLY)b#=E51ujNjpv zW-olnR!$yJmlFInDbvibgz^%o%l~{#&x%`BEuLgVd3)q{4D z;>qFsUJMgDR24ZOEdkSrJ~zcTM>jLZRhGG5)WcQw8{j=h&!L& z6}DRNNY(t7sOhqpoJ}VeCJ5r8GUHiqcL!@iRA^TSOmF@&jFZB2#(U&KM8L1Rwt~oj zUbN;PTv>Tn*)5-(8gL$Mj%Mk*Ez*rat8{72O52;|EDkX|t_0|~#Xr&*x=4PkYlZGB z+qz!<^)P`y65q?=9Er(C9Iu8HkFlnZfoHw$(Hwd97`WEFvM zBdq$j9+(nF2B8dlkSSuf%Y+WJUs4@ zrgH8*%6i(K-J_m!U@I5j*5i!D)2E9n$05t@i(-tMxwQ5vgbCK9-1JEAsJ9Nb%+_p9b2o=zfm2S0(9GsL6 zhL|0=m!jqm=^SW%LbBFc@y~=PTB6qc#hnxTcTR9eM@hvN+t``#=*b>ERE$?e5PWrh z_kKyPG`Gh)sz2N0N3W56RA8uZ60RoR&PQk^I#qnB44Yn7p#01=J&03|IBq2l%XA-{ zT&1O}aRW20B<5Sl1?Vy7gcI!&HC`m};&-L)TnnQfk?`}QeZ<4v&A4KMZFWYzz{#Ne zV#mVKv)}$6dUx-Uwa@BrJI*Zai!SL{Oi{l6E$z{Nb)lu_M8C()NY|U(%$y(I*z@i5 z{A-~5p9B4sM{wAOfj`e)-*NZHU*^cl9Wu~l$-PXS8ZyhDTFmB;AKAa7{|XITAXj7o zIWneDX6hzvm_EZ<&gw!hC2t?t)d7YOvlf(b{+2sK2FYZ!%J2@6B(~3cX<8!=^pvo| zNWx38MyIVD9RB+Hrz>{%saFpDE?N#}{E+a8AtXNE(DUq%dI?S)+tgj4{QPV9rfH~z zW8W6FRo7o9va-Z^igbJ%LUdyURJ*5Gi(0&We8wD3$7tK-rVf+MEJ?tr$-cw~JD*2R z>pO#a^qLV1s*}PWHYDXaUbNQ4d+R4jdVZgHpx?7=|N zoRQUOu}Jju+cShn7UTCDmL79^ASczvOu2BTv(OAEV(TC*ep~6pmh!8l4uB>2n+RhF zS5u=3r=z2<+)t)5v&}|n3kG=xbIY3Qaw2ISV`AiZt^GeCHMgMpwr5*H>TPzk=HC7q z{O8vYrJ0BD#!jT^d#JiiDPPz+;&dqQapZhrH{zf`c)o3q8|VDgY-4YuPI`|eezJv@ z#qn*;tY#c3a(=dl!s<7|J*;OcL8~v{>)tK_|Gt5jXn}fa)jP{ z^oD|WzUbycm=1iiK3#R}_D(|^AhSL_hxB;dzv&0;BL?%Yy5<>FPoINYbW@xJK zfIzBit$P0qK;I5Cc10NGYbMpdNAsfWZ^M(lf)+84GqHxG`Jr?1zyV98t=O*q;n^ED zb}B{Ta(6zORh^mh`n{Gjo}&aVK`+hhD)S@dwFWX`5NoeSEaEbvPuiO(?zbg`)T>J z&YBtBC;wVY>N{Om+f44XZP3v^>}iKERJ*nsLX{~$jK=E`R;J2p0&pXu>|D+B%gCB7 zdXR1Vn;FKPufj_k7s$0~&XP;0ye!KVS7*WMr+_}NM)c8HEy|-bW5-OGZ<&euX*E8+ z?}P_%B#D*4`KeO__mkgK@n*JqyQV}`Skg=e-LwWhJbgKUG9fRE#hizDNxovx6#wxk z6A4R)Spv$oQZPLp8Qv@Pxr}a)9jWbC^7mi2F-S@w;?UPw40|Wnl z{l4wgB>|g$^4wn0{^BnQTlcR2`_AP2z@x#G3tx?HKKNj#ZieqEA!N=C7i)5JTJjR^ zP{jW{V-B_`{{q`-g7lXmxY?agXOmyAT|BOa`4w}hQu9{Q zow-pyP>JYj6t=sQ;(@wt^?&zbi5V4>hdql^*ZfD&{1NrIEO>`j*1i(3(eDwOEAyUj zs}aY|?sz#Cegl~l)O#gg>}XW+bM{OU(dZ7st>{LD#YYsZ2SY?;c~bT~2?NeUmbo(J z5yi;d3RKHT5)!kPG-hv;uDwY>kz@6k?=TJsr=P>Kdk4qfN_`%GW1skK><}A$OKqCV z$=vbZgyMT1hT7=m3NM7V+iGIFbr;VRWR(h0=&G;HRdFl9x!=~P2s&Z;ZXSux{jeL? z+~meMk30O)+VYp+Gb1{X-@Xk35J1tZexikq*M=pf7m(pb zy_%)vs(&Dm9SN0w&lxS7+ZsQQ}C8P#1 zO>Tia>S6YIQb`^n{^RH*9Ll#XR|E!KfekmNpbPxBz?}>HZ9Z4iJYo3O62eju;gL|n zBM#BPv}(|z?dL(Bnz_29%I8>n=>@tvY1J5OWewIUJSvWQnf|2^ZShLour0@Ty444Q z&66iYrd_1uXt;RWI0k{>sVaQh_X+J)&TUd|HsAzRVpq!_UF|On1Sxzj($wjmjsqjQ<;rUdr zE|tI4D{uA=qF&sw2<^j!T{h{&KfHZNgH&~0z_doKIeP^ zCVWAzp|e3Gch-M<*n5O+!WbO4!32hz*RS?$GDZ-N#$Pywz5hNo&{Ht7GOK2!rnX}7 z#jB>;Dt>s22lL$?iAu$2hzwMR?M0!oDNbeqWQ9AwAKz1yB>-h6Yu%ur+z*Zlal)&t z4!oxPeToX|b15)PTY##9w-F8RFG+<%O_g}k3Y!e_u8I)!y1B7uq0BE0X^CX~nbvOq z`$kLnWodnM!-rMQ^Gi{qT?ze(eT_HE3_-Ld`34M7b)!cumB#)OBp+_jb(lJn2?Mf6o zTB#mN?L&<_^USIic!H_Yi!V*dnrOZ^j|+Zt?o+^`4j?O=P|*Xq^|z6jF3vK@>?Uh7mfD$>{T_3!pL%vzoju=8jo3A0)c0j#~&f;cB0_zT8}IYnA}onS4mf=+=^~Xt+2=& z{8L(2hgU%TMbe|LpTf00s;dhs=qvRx@81N)bttMZRQM;OqVyp$SfFbLOY%6^s$4t| zh53pODGD6^I7o^F5)L3hJ%!5DR~EUOOtl5gQP*w3?8Cz5NV`Lt=`$pcTnAB*t?b@|?%X?DH=E z0{J@N6zb*rUOgN(>F@k}=W2_&cPIzXkS;3j|F4Yev-g=6zOuWjY3Us2Ml~m@j_j4s z$kQ~5unzc4Ot7}cmFZW2)B5Q|GTiIrp><{jXws6dLFKi1o--lS;3q7mXcpD~d>g=@ zdSVfK2NP^9{{h*FA5sIKbl*ie`7W#k0l%Y7x;AD7$8p=Oy?S+G4A)(jvm;h|Zhy1P zY`On&POHV}>)u*n039sVq`{r;xOup$l_(%Pv0tYXAQHl^FjdG? z3$>(Z2^DDq`$e<|PDa;|&ZctcLsKj&_K^~gQbhSzo-y5h{vcq~usz3H7$K~-wAv@< z;of+LHmLc0u2|rcWJe3H5H@UY4{kT^)WSv?0Oi_L)ZEHNikRUUUdh5%0pyzzsdUV z>(;2~&Q!}P8 zBkq08i6#oO`tFq{?cQx0V*!ZJNSEDp?>ZgHnI@cY&Pq+`jqjCSzz56RdbR1)hgy9o zi(P2m$iYW?X0{eFFNatM(tf#b%ZP8-To7ea+JDzen`-Qzj*OEOpHxQZ$ZC18w}pR~ zKOV8uLz;%YcpTh+Ye&mCdSs%DIpUOcucM3A%oWHqEv?gDe@ccd4&MN})wWG0hr(B4 zJOUN>bc1Y%ov@QThOxc1Vb?PE^v#>K4lrl*pWL$T4XPn-Oo}^r5qq0=G=O2lt(?4@ z_T7*wY?LNq>M>yK{nxPjNE~Ib;+HoEb6X%R?B@C4XyPsWhpO;+@Q%B&dh8o@ z6FVfkD^}dKG?RB^K4wVCd7h00A8BO8MYQ`6vX`mkkS?Vc1Pn`rm>!vpu{fJ+IBNU} zXpLdhj|plEhVbo9F)|}61*+xxRZ1rM>?T3g7#A4{ErOi_8px#jyhEc> zh#0<8AAwz9VoTjEtP-c^XV(W^4&?DcY>p&CC+tSoHbLZ*0A|YN{x`WC)Fi14)1Sg~ zDyo@#BC)(j3mHS*sc0m7O@{ADEXE9b)@M__Z0M7MMyvEeB3>lYY`hy09K_G66Z7mc zZ6AY>W%UkBd$Z?eCCF3<*vRtP4jZ>*=l1C+$g|H7B|G4*wb+A@mPh>X-K| z(RG^4vHk4VgVpb0W7>DC{q&a%zBHbSI5D@j^T~FH14n{SUwINccIRvP$(Iy|q`z-g zoo)U7HH(s=Myx2a)y zR=yb;%qV`pg^;|at!K&!ozscfr<<^jfFF$njkxwu!D{YT>A_zeWYj3|UAt6rnnuHP zp!GUVLwe;OTwtfgDnbx@cj%AV#g=boZrAed1u8_;CdZrXq z7evJKup*}v%wZ0umZ z=7wo1Sz`HLzXaQ_r4Avm*4`6pg|%@BAK@S5Ej>{O3`y5Q7fH7^JF6?IJNgM%%>eul z!m8^Yp8#fXA0evbVt)_48h;)g5C`~tNnR3UVJ=cYrOiDbLs}FtVFR_Z#FVobdr$6G zYFBTzEu*ib12!DdCLv@p{o~JIF(Np5ms;qi((&(&e4MZa$s;$6>jKeq%>a^Drk3!NeDN1665oWTG*Y3lHZLS}+xxg8}KE!l~(h|*KvE~L9 zZ3q~_M}RIqmK;{aGg@iZ%KebC;gembPCFA}qiSAl4fZ>qF(^TC@3^=YR+{5VgEOU1 z;e2+O4d3s$D7ggK7P)?s-WJ>6*LWf!{1`@=K9t`lp zm~Ac%ncN;h0ZF9QqQ7{vzrlw{K8c|>_3blzVf7&%a_i9+`(CdXMjlCR)HhplV4*u5 z{}2(_N1E1$m>7`O@x>k;W?~5v9)<#mKGMvDz$hD-mGmE92J5cp3lZT=g67f0v3^9U&lX( zW_z_}!94L!S}c3+&_!D(JV6(WGlQtzd48F!^c28@@Pa7`{M{G(#PHR z{-K#v`!VfGNR5)e%bY6PGm#lFX7c#yTbCq0_o7Bk=kDX~|pHjNTRqA1<3l3e- z90W*1W|9yxkt@mousjx8nrC)A#K7sIJG}E6yt+eH%*Isz)@fB3k_W1cK{Orne+0FQ zFN#1Y)=vNIXV$9*veeymlOj329UPi-Q<(Eo($6$4b-f_qn|=Abo)d`A0wtz)ruE0_ zHVE^A`Sjnf_}D|2#Z*40oe`frbnY6Zbvbl=eBF+&iID9ldMERRF7XT;-cbx&HBO zq8Eq^Cvi3HsyD)E2sb%vG6a40v*3(O0S+@&e|N8<`m?B;hjckcmG?JaBBg-={asf~ zHE<24d3pPSiWbUJ&fm-Q^yC%lFA1EnpyuXi5Z5sAXb>h9!jBWN5Evd}Z|k4DmrTC= zQOd5tL}Wi&Q0zs7@=Ifq)T&`rq)NTEc4wq9#iWotmj=OI3 zH>%oJlA8^Jzt!q_+{eXN=;SKdigV->H-_>fNiLe&A%Eu3n(@Iq=)+Mnt*)+xRZ4QJ zQk3p+UMp)J>+P5n|MFKj7Evy4IYSU)V7SU_-jY@?@b$wYX#uRB`j zIMFzYDmksi!lC~eF&ZdkX{hTL;%cs>zg{v}9|C9jn^>j3ZBGFnyOB>~IeTpV6>$3h6f zqY)>vy7p$1b(&9FjTSMtO0$Of*o80nF?fN8H;MVATO;@Cj6HqV6>i?0L-SN077tpx`EF5x?vD?B0obfsKag`ajC~x1 z3)7D@I!%5qiT0M$r>D8t&btoxjCpoiAN|H}=|5!GBlSbF;rr8Z1;cm0_PwHrG2{&M z1hF_Tx<1&K$Aq(c+vIVGGfPE!uWtKlm7kOU#G6*}_W8LrTz!C3oZ>+Uo#z&BJO#Ty zV_st&x9<2qP#U*tVecQy_pWIAV<-5S!+utdw69Vx`lUNe*9r8mpBy;<($h4oSVbl4 z=zEu>^lwXPKi*4cH$WG*zvp~iuYZyA=ePUc|K0bXd(asU-Vb*Xq;ARnJ~DvffNPP0 z%{;vQl7+Yd7DEtoF6!GPvn@#^o9{$o6tqWJP*qU3kY(~Sudt+kpwi4vsT)!3>HhU4 zai?y#lMGDIc_A{=s6!@Dwg&LJq>|M=fSiIs%G@`vW4f<~&4H>2jnT1z(G2!# zp2EbSjn$ngX4U{vC5|a`@i|j-%oghRCbwa_6Ws}Yk&H0CHhR*n2*bh zMATxi|J{FGJ@vce0X<)CzSn=>;X90)brY6Zhc4ryx-k4A&xvC(H`7Bk|sxw zBqy^^y}N-aQo(JODc1()S)w2@UOz5hIDSe5%2cEQr+%qCuBitmiOsUncRV#BMmbf) z`JTSZlCz7-l&0Qhqe75HI5r<WEc==S0$AQ#MBanZK+&)O`^4CbClPQeN|HC$$j3VXt9t!tz zxL&Lnx7>Y+6y6%r?Oil2R&@-ux3;( zwqNsjd_j*L&kF?|)QUan84cG(S955?Kn-E4a)doY^xc{z@lh+Z0 z+jnQ|&RN5aWspxDKa(2)VDoEO(M`i!+fyS=WX9pEQFDRqz@ zHSd9C>WChM*X*Jsa{YkfcN$wg@<`VpucK$mvLgL?#+I0Vjo=VmmAa)dzc8`%ve6qW zu;VpC^>CM?=Z?QC?l1u3C?Ed9t&f=%d=wLMoIi=jNA3>P*jnWCa_+#*mpEZml)^68 zJMPI0xrv+8Q&$RAn=W;37Id}BH$QukRqEn8_5O)C%1@E*!zc(-a@RS#q9LeZY8f)! zRnMdsW}NcuYlR|Vo>Uh#AQGuiZnXd>q)R|Pi50OOu-6OK;-k)oC-yc!7Clu960m(9 z+e%19(i`$2m^Uit46+z+!xlQJqw!8{gU}!)i=FQz5s}^DA%TZ@8Hw`Y|8R(Qg~^<2 zD{qKrdDvsoJ7MqxH8C#RoDkK+adC5=IB4#nmJ3`~c`GPD)~FXy=P1Tk@U`e$U}@?d z%~a~7Pj`gb^BfKfrH<1-<6X<(@8Zs6G|Lnh`RZB-YNp{rSFVSTUul*sc z_QC^)jMF50ou2@?B^l%HXULc=NxH?LIVr!EJI#&oR=TlYo^1IX4 zR%5)d*o>pNee=m0(&~3md4$~-hz#^1$@Y}3N-$AN72LF^dbU=4|K7ayxv$*(0~H6; zZlsv@isi0m%EoW!KH~r`h7cb~M(EODaL4NivTA^|`3vtOA%~Eqnh0k|0ok`bjyvl$ zT71^9fbC;xB}D~2>42hHaxc~bi?q{-Ryn&({T)d3oI57j`oRO95uwjOWvWpj7Xc-S z(w^&fY(V4lt?;KgcgpRN#Cp0l;f=QONO=jdbkEtu=d+UA)LIwAm#e~-D9k2-N@VL$x~hg*~d%jZfU@ z2e%3e^)&@){~Nq!C^qx=cD)0-|KEuU-Ui7ZXziWa$9oR0lMoeLFJ)}>pkuP>{HGKg zrRH{7@?ACUFHJKbAmMX-2--%qNkY`DFITc4o755!p>t%6t@Zd?|7SmL`lpkn52)gI z#Qp<@;ur%KX=sBaJ`Q9DSe=LMrB*$|`WFp`%pFTXgjKh=FgiIO!}hl7BadX9G!->p ze^D&T(t29z{^-j6E}(2TT3NECWpU(rtdB`QW2yO!C5n?J2&?-x|L#+TuYnNX8mcg@PGflRm(+CN$SWrk+Xc9MoNZ2H#bJ~9hC z_t-08_O^`Y_TspcR?oJBZ=bgo0!Jk_BXyu`_H6g}ch$wubm(WspTL+-exeZ1s!M6f zH&9H8t*N4c9v=8(aMLi!G6)Z;t}nTjMUsk8jOk9a-L4LgM|>|9D@bvkO46Ku=rxMvbChB{E5z)t)LW+Aut`G*F<7aZI74%)o9X2W#B`@vR_Fo5W;0MqQr$*R@E>*P~y7>m%Oq6 zEXaei?vQ^LQkaQ}Ng5&+4y!^7FI>upzhbjUp2}&i$k0gueeRY)$vW%f#QiKwd)oNY zmAhHPQ~bnLx$X)7(*YL{8kcqxce@ikL+~~yaqnKQ4UJ5+K{32$s{ETGgaNm<7XZL@ zyapH(|5|h*3EwtsE5KSH0l;jpH-E0 zX3V70605X&oPpXqc;D=)cIjL-nmeDCm!Ezo8@dbT7v!%iT}q%Txasnkk`ZTaw zSs}to{6W>%ty;{<7gRXI-#I#C)YeYSU{4i65$LL)ud#V6xs~+uj<3Xz&;iX!Ca z$-Jt+#F5;;cQUH6{ux#^gvgs`n-4qj=)!ozY4cnGjrV1bGHwcdrXdf0W1yaAeHcPH zHTKyROd{n}5Mv;9^Q(nnd)vBs)G8AG{=_-Ks7V7p(=6%%v>=BHw8f_1>o{=oG8xzUsFdk}wh28!M$~ez3`)Qw<8)-oOLD zth;Om&p%OE%^zz#68+jL&~vO@%W1B#Zn#~TatT|YSn~xIy>Kh zWI=&dUz_F)Po-7>-P&f>rQyDzekMm-jUZ&c0elEnBb z*gxPddexS(WWe`{!B zYrl+#LiuEi|_ z=T|myV7su4w`g&YcAY~tw9{j@z;pwi%A>q1xG8Gz-9_SNB8)M1-LY)L-s$q`84s~fx&Pm>Sb z>3$qLOXFyOBRl?^#lHXT89&_n`!7uGs635I6CLR3F_2F4I7=%<>243lo8GSlu`|$H z?0hA|T=pjGz0sd1GBdyjN@6rGer_~e_U&rbem8Xa{~0>>f2RNcjc>Ef#%P;4AKGS{ z(+D{g)i$HeshLA_sOC%|r_h^vZ!>I8%^Y$_A%r65D3!wqA*4c*PC7Ysc)vTmtIzlA zFL?d(xV>)I^LAa={X($heU+bL4VQOs3>J+felTMT3;b{t5vJXSCIo-=X5o>U)tRR{$i~ssj=}J2{HW&3 z(|gdJ&jsdIV@Bowvm`sZKzW(X>6U-mYO1jmBSv%AgG+=U_-CT*5HWgcMt1a$e%UV% zG`AQ$Hkld+azl$lpJvn~)u^NznOJzq;j=!wu<;k@{vHXiX$lS06)9py%XO-I_yh%FfRov3;hluavbcMJQ z!l8>BtEJ~oDn`qrcAd9hdF!fL;anMk73~wE0%qsBFyW1oqYL})QPgfAAw_LZ zTbwP8Ctg--fgQCr_cl!%W5+lpvEV-ZKVxakhN|0==AWoU+~E8u=C%nQsy zBH>o>fYUN7<^}^MQ>AcW+L2b-93!)aohzYXOpzM= z3_UJ=1#(+$QI!Bj2T-L~K*daqQ!apy7dKvT^ph4lEg`{eWTns)z^Cc8L3*BBXP%0p zH^cbDi0fUuB~N!rzE=_78yBYH`y#=dOijf941ZA;b{G%y+^o5hb4>@b2zio{5TN4k z{OO2MQe$gfpRE9t#B^vU1jqk*ru%lMvk+>LX0@G-hM(GLgj>P&a2JJ~NkMNF2Y zVq=Hg-Eb=-C!X18wtbZP-iO7OZs#Q%s#RlH#ORiLL2y5tZ%fwN!7gtBDxl^8k&zb5 zZA<#ub@;F6?Lbrd&b_1U`n_c^7UaAI2WvV+^`4`P%t3oFb0Ge{n++1J#U}yjDy5}sWsB!C^^PWx zoGOG8236gh9)R*6sVi}e=H+H)?nFKzP*^oJAj^!Pl*MvQnLUfT42;|cSPPkrfyot) zn)@=bm>VeCSHZ9W!C%t_QD}3?Zj_={vfcKQG-c_(q?9#;TA~eeJu((9ekso4HqqP! z+4L`@p&I;4WX^FXs`OHb-HVAUB?z-AU45C%9ePjB3T;x>xa{nzdBjUc^>`Syww)2w zAV8A_U(dKIYCK6AaDxHx7A~D5M@i5Ep&T{z^7m!GyzqsJvAmtZ3Yw3Hg|BNt>4l$bz-vt3+DjV~t1F3W7vI7XWE#VkB+Z)N_t#X5eYgr)G40clq7 zrFCnV0o-#QMwSBHwMZZ=9s%@^RZ$o=mMc!#Pib<{=KbDH<<9B(G3y1|TBmhxKiG3y z(F!cFn*$y`+&G|7EDpJM$@oQ6Y&_EZGY;gJOU_Lzx`5;}AkTIqs6H0U-wDUz5RghJ zpv3Zato9}TLON3VO5TG6BO zI9AsHngz60uMFsqCBZAPS75qji%3Gx$bLs^1bE64!6~VFijBAFPS={g6$+kgy)L?} zWwxMF6m0soFYzCb>kp^CeN636=5qEcqLkgo$v;kUV;>*WY-ijwzU+<)O#Ndqkgo4! z#4mNL89U_}W`(`OL;GNK?V?4<1xE;<+T(k+r98bBPT$7NPG1F5Z9`P)o%@&ncPe9$ zYk?rxBCf_i&0lptK3>EYHs#+b8~siCmwe*+M}9S9Zb#8C8Cj_FG35Z1#t>tEe7|Dt zo`ODbL;cLb&bJ2^pD$9sOD z7FcIy1QOuNmF^+5i?zhi;~QzN&IlSSE|tL{lumj-a*4SDjL)9W! zzAbyECAnW8Vq}xS1go7(`IraR*TQ?>p?&}Ttxk#yCMniv0*(h8yy#(t{owmkZaTql z<|z<^9WWA?OAa?jn;Nw1K~x(mf$#C1a|%eB6;Y%FxrVbO%OD?|SGSb?lJUEb()B>l zPLeIwD)|~IlKohOSi*(lr*!Bq)b*A8tZF;=96OsJvI`MRr@>k|Dddn;1k9??z6&}b zz6Pcfg-Sz6`H^w3M#c)3RByR%?yh717R^82s$D}cw7hTqTx*UU$od4NEzCctRCGrg zc1&*himT=m-XQ=eq*HmpkwBFrGYk2_!YFUZq1}DNApv zL{K?5;*sA~jY-O%@1;$t3^~CTjgUapPefO?#8ie?wKh8KGfoM^o~O|2R1NhEOIdt< zuj9Xp50TinbOI^frMEb6v}4+{7j*s-K%o)URPcK6++v4@m$PhgvQ>F}oAfH}6e zvQBxx*5|uYq)Dg>7$+1NgniT-C8XJS8U@R!hZ?LrLBT;C)dsz>DI3NID7`%zrQooa zm09L^CLsZq4V5)%`ww8y9NcAwIcA_I911?yhC+|=jM*@=t`Ha8?fg7E3l8R(BmPb z2&%S+CVvZGzwbLCpws9>_cVAbe$JcAp%w0#b*@S$ksP-6B!TS7>W}gYa#v|@02g8gha{e=T>-YOqH`e|!_~zfl7z^>TAH_{&Dr z;h(lGxpRe=>~O!mfo0*($HqV6^ZIOcV zZf`>|O>z4zO7_0N|AaJqfbUs!y2|%`+VgEho3MKO`=Oxk@e?;xZx4PucmFh=WFM<> zivIg{TMoRa;@KH&VEOZjW!Xr)Pt}>k#t&!qzMuG&7WilE_gjxE;DO4TMSQseQdBqQ z!prX&V4Nk`hXoJRqb!k6ohj1kHd++X{r+{lBE6_rAH=~IF<)4pxbx+sfpM*Ww0;F+cy|pK~_9f{(JX zSfxpivFL*lX8Pr&{#A7%0oY1oEvzu?P^=@jRDG)njj#Y8iu~@lRghy09?f%2-W|H* zD_%H}0kqtExxnC?1v=~iK(JJ9fBF|F+TU#uBfR}0@b@&nBe*gbM6ITE*?QTSlg6_J;(A$`Zfcd5q=o~ zO(h2vXa^m#RKRg=cTXifRnBd^wHvaRU~BCCQKe>~YGj?1FSRkWb$j~1mYn7B;=raOVFyc7`nXTg~X)?savP2H2{L$@K zkax9f<_@3)b1?G6lt2Hq{)uh5B%h6~wf63!4@0?{5A_D~_nP5fmg#e?85db^9_7;8 zCT1F7&VR(CllUA@I%tgTY5DD}&3E952~B9)e+{MnQE2arbf&K& zSZysjfr6L?(6!)X#>g)Z^Q+FYSg2PUh~WDXT2sk5pCZRN7WsWeozNkZ4J$0zuQNYq z?vu*O(U({6?h5Wm0mJyUb2kP1JGGjPsR=AYGB)GfT3p5PZo0lFWJfz{+TnaTH~%81 zC9!XqQHjRTC>jA)FCIQMtZOtyV8fM1!{0*x4-k~@;X_i}(=ADw0Qn+?8D&KTX3(Iy z{t+PgTOU1txygNdV8DyHz3+`^jDSo$T*qyHNp4?D<=Bw|#Z|APZnzA&b-^;f&{vG} z>d?t$@9tnqIC)cm>@+*~i_@UG-uspa)h>`+rZQ9|Bkr9iZ~{E3yX$)1v*5-_9K136 zLAoH^xxuGtT09@D4eI;sf69Iras8(b@$$d4^^q?%>5VKxw5TMCD!^Na&zgi@+UM1r z3QoMo`-h{j4n4p38fzTw9ZxnUtTut*#am9O^^h|r!9YIqz`$T#2H3qtdQaW z#Tt$ED*g`;+L-nV zKEIprRi+{&k`+hF}c%c3KZ1~34zzC1a zd)BebSVS8OLu&e*iNzUnkJ5|RTfoVqd|Q?$mQKD!^lII01<dfepx3hjWHBgwY1xDR;J99iGT`8&V5X5mdm)ZvJ=+Bm~& z&jp3nXH(v$4(ns{Hi8Pl`!4@iv}4~ayYO zEi)$1H;N8Vw$WxSb`(_}YIS?Yz)r!w%CnOCJiBAc3)$X;e633j=x5bg{sp?j zZ00Nw@!qO<{ptw4^yP7^+Q7!%+SH*#p(NdhAn06ZoL~<*2Vjun}ox=(F9beBS$uk!Ca6fC1$~-MZJfD zK{xCs2;_SqWqizs2QbgWruV@f! zy%@VT>x^g0uH5pmn`0)CDn&2EY$rK}H+E)#6uJ?V2_{OUYYOwJs3ngg)q|WbzCln8rodC**6@T11`&FsXM8 zwH%DrZ#!7oi3pjkywE+_8_AbALA77!dbTd4PN|*LHbg_|$oc-foS@#Had0gOr2pBoQVJL)2D+SjCZWN>9q#O<#)%98jO-==Ov9(wj)u%Skp zto~VBpz{@jmVlKf=lXSdL~Vpf)Ck4oh@9mV%{&IbcB0*9t;ASJ@X9pOH*&(x;I zfoDpdk@%kmgNai4@QFS~WHW4@Yv}}xN5cjv?xf4xgA;|LYvBY|$DQp*p5WZYa&X`$ zqi`6=-ggd3d-S_E`~{4~z#wGU^SZwp0B~G~?!eKBqi4GF7vbD57K(@~$Fg<%786mj zCJWckpG8smt`2o~jxw|2js@k*IrFpqcdP4^+@{#it-&U81jI*aNh;UkjPl5E41rO2> z?i0np++5J_t!2UTU4}I?+{`M9k?Nvn2UdzmR$REXat1Jkd7!9o#SX#SKab~&ua=x| zADmW%!)Kmer71PNxgJ$n5M<5big6&QIEtX zXQ{-`+vLlu3;>{-choEJvbza+)1vz?qzXWK9Ec156)bjagxit_voshj*KI^fgOrfIjR0PCt!Pn z8WB^ri1r&JL8j)Bx2z7HfB1%uWw5|aVoO!Hm)L~+hV5qpriL49Ujd%tsG{LJQh5xs z3;DE02^-|2Z}z!0F39?=qXZ_5)qD06iIodxG*T+rM`RoQ<(U+oYoAIZio$G=h{{+L zG~K3xaZ}yW8NmY?u8wCd`QjX9L%uLTsob4+wDm`=W=v@b5oCTmiEr3atM?;Z6` zc{@LR5Eu{IW`76qq&_ds&Ns}6Rq;GS#DGXNHObV@8Z6dqfA-iqQrv7vjxER4mhXYy zKW?&{Y^>cK{!1p38Z$l*Z*x+L_f1a^y^CFwWTyTY(*_gFk}yor(sBWS!ovq7C@El& zSG3$@gdj=-?WaxN$hc5V0f*MBlH>@AV}dcr3}i! zYMx)()r&x~VMYXH7c1#+4e9ImfG{=0W~jQSd8i^-{saI`&j89zGwqE~06fw^Xea^^ z3HLTN!1}?jWM9Zac)MnP-|iLsWx!w;xbjF`H}UP=Z})(s;3z*qUHaC7i>A7$$4#d$jwcZ-f&ke8qF=Dm}0!{^x}F;nTI**J}IT?zl2}cPu;a*M@i#`K=##a`RqD zmEEF2;BeSNyy@E*;n$56^*rySCzHvtEvr9_Bp=(^eJO7*AGl-Qf>$V=RpHPaOAVV6 zQe0{|#Aam8jL&w7$I9yrTpk+XT=K(v{n{oH|mfk z4FCfWodua>*$KVUh8G60k7f?Zhk7{$1+mZ#E-SLETI2-t>nVzR4s@s7mtg%DwUa2-X617rtIy+#pC#K0~>` z!)B4=Eq(2*M-Oo-%E~=E+m2XNjN3R%!?S=~Z3&S-aUxnj|%1iH?^ zQ3ckdFTSu!CJilFqDbQQ^ee#H6eJ)9g&kH|E@)Llbl~Le zS778@$7i@2xPq@1l86oC_B2w^rn@v;JPW%Nifir5{grA&U7|zW;#nitt1gn4l4zXM zKhiHb8BkAi{0ag?Kquao;5p!Cx|5o71f2;!90HgENYKu8wTOA59N0t>qYSPwwDxKt zEWtX*~$Hw7-$XyKY0{2$--P!>o`VhUEji}tYcVt(d z2@cc7KK_qK*`S~WTxcUz*ip7=S9`)N=YlDP?mkLk(PdeebE{epKvii+mFtVDbx&jp zqN%G56U7Ab;T?C=tD-Q1^)Zf~=K3@f4s}A!Ml)&`4^O_bgYrogDPE*oU-GT4elpT9 zSFw=&zMm}hwgEE~btYkP%3AVf-sCyq=D$3O`vBhxo`~wzx;~!F#~(sc{53!np|DHxxXLT9bDx&HsfZA;wKpdKI4i zcWHaGXBa($3(=1JpSz$Mz8f-+a zT%J5N{^wL{r4)tsC-N`+Y!uA zBe~T6e9AZM5L5$!NVlLZaDY*8bg&;Uayu=3Joaj;U1LrgEJz><+dO}*CniR$74V&H z%b}Hed+NI?HH!Z^mJZc?UFJ4yo|)b6&K(DtQA9#SO)kmhfF^zx7nN)@UAPc}Ea!A8 zG(&GVoc}c_%z<-*p5k!H7v-L-z$U!Ckev#S_Y4CyoLCJag~&NqeXoEOMdL>x>H5Qo zUaQ2yC`1t=V7IyJncu&IxN>9Lxssy9=E8XNhlV+#C>e-%e5&Ac|2(}aj@&zf_CSm^ zMqXCaGuOS>ser*3G3ckPLRGl_Hlp?gfbe9&Q$I)h-u`M&vlq^@L0#1Fl|c3s%8D1Z4W@$0(nzRSEcr&9 zVb+nV%P6)8)xA*NXlM6hK!HxBUxk(M+~Vabo`-sqV7a-6F4<*JTs4tCa9z={%F`jw z-3%S^-lw|KL!zC!x~}22i_q=|b>1f6@Nu(%Rh{gQMDzPrY}VFy@ZcEMP@ zFhi7+Yl&fdU&LI;x~gT!8#=X_uO9RrWPmM1S8Ez4DR^Kx)u}L82=R(KWaR}ZP-bY< zezC-rc1K#o(%RJhWIVX7A93WHPw+N{Xn+b%4)QA^#8)lqR!biznr6-@-lI5d#f zHf1K7MGqeU>U4J-B7n+_IdiC#!9>q-Z8SP46Mi?la&|{^IVSx!*ZZ4#bO>N<#<<>i zQqT7nZw>fp3_}hu*v6{u3bCTQTgvM3x>vpz)m449^x9olIC;8H=Gs?FD#gA#k^Ph~ z5tiNmBpINf{rR*FEP4c|Vxtx{(P+Ib9>>iBm8!;TYg92BZUg%CQ#zruIfAl~U+zIs_#J4OYAW?Hgkfwx_9s zN%C5FU?LI~s?mUx*A6ml{?DzyX zf*Ev7Gp(*J+Go$0FQrc<{HIgSliZPoYLyO4>?HmYs;M5&0hErA(8y5F_@0w{K&530 znSz2N{8_kR2Z1=JQ7@nc+lp^{MSoTtI{_p)Mm@f(@~FsS_Inu)35 zef(P-0ecXFF&EAebYQhy(I$KSjgl4@OO2Z~Z>hl;C zh#OyK>hR+h3+R*Ez~?}~;U!AJ+}X02d7`CE`@Gui*?VMuzz zGn#8Io*)v=09O9}XIzMHh^!X-82WVcnz2*+28>Mc&+_zqEpkXe5q?zngy;P055Z37 z6Kn0BIB*N?Gc6BIV5wg>iipzO0>FCSQ3h-*b1#|1_3ijE`q&zZWVWwKg~d@V;ZwC*O5Mo6TvhO=yH z${oNL;(ZW(QgQe}HVm052P$si%`mHd73+hPZ@Xv&`-a)tI_pR7n;HXAU|bNlz6`*- zqQdJWGj=T~QN#p8jhyx>)bhlXdQdyMt}a7OcUA(odHCOx0xG zDjtPXY@@)#9lBh+3llC{ zQVs?=-IF=_J-p#h&^|9teM?;JT#l>|cz55^=rsb<+2EAD6ng)vPA$WnMx&xf0A7YA zk_xa(ox+aLXG(2^$6v&BYL?T1MH!zi`ZR~)&oxZ+U)1u3Z!?9DTbrJQk@TD@Y}BAV zBNr+b0uU@&o996&)1|~Iu3lu*h}U*(oz^$f)Ydfqj?WuWO9T|5E*2hxG)^U2zAwf8*`%>Q$xOeWe9aai>g( z+yjppMkrl11eF4LGvC!dSIU>(Cz0DqM<E1unA267By-7EH;|-=+u`saJfqme|1B zLp{oXZVB`tu!N^!2r$1|tG(V#1hL!10gRlE@m;E%K@@l%9bOGXrPZNSJRTkScHX$T zd3`IFV(fVF>FX+kGp|SrGC&r9hE9cO*A@V&6(F_8x=Zyd@aSC7xbC?BC49tS0qqU1 z`=osM+@_A=WtJraAQx**9wlfW!E}aCPksn*liE*Mei4~b!4D$DOSja)PY0N35wh1e z7J+@fFgeHkM~_ye8=j>zOA8IjTch$poC*fE9B%REpR)0xikH0*#FJAi=Q&^6gQ?q@ zSBhov)n}tbi9#hoR9$MS4!&oOl@^1ROoRE-8>HHp`!<;UG-M+8xKnQtMosn!S*S1} zS1jpoFL=F~E&Fh0Rd4_Bsp`w!lPHYsFJ}l{=$MJVaIgPZbV{Fg%c8a@=D^r=%y;Q2 z2Js`L!0sYCID&qu)kS>&RpKdpX=oDEjbQ9J^*w54=hW)wE`c}vOp{SytK0S1&#VcX zA-~q08n7&*f=?UR(xw}0D4tVsn?4OmSPa+_>CGN_eFrmh{=ZRG(c)EQ)gxveEA-4= zN!QL#zIGAF0Vy?dUG-ag`{y>)wPKVZfjyU^y^jn$<-t1@2GT#`Y3?dWaL2AwD%yt{ z3>FSg_=PPSpD+}kD=RNobNf&DHNTE4KP{vol?pXK&uD&$cAW=zmpC!>0(WROJJ5rdlY(apZ!Y^u zW;2!jc`s3~Bm?MswB)w3qT?IW?m4Rz@=XLIe8K$p-L zrmiZ7?0Y_~gvT2CKMFG6b*TZVG#8~-eYah$ca`8=P?y~^a5)H?#)ueGF(jlQioR7k zg7B~mV-6wmVbZAOHl+_8ry$y~YyUzG(*m6dvW$VHKM7F_j{KArO5|bA_O@=O$fxF? z;B9=nSNRTTfhfcoecmH;_xm-gWVH3~_}8yr_l>_PxOH&u>fVhu+cNaG;3)z$@5GzN=Cchy%_ z=1tH*7>4O@8}B)7ekIy80uCe-%BtTcsJ6I9g4FJhyd!T(2Wr|C1`%1+N*@xxOfI%{ z%cezq;nuJwfcQ{wd`$*-r9V(6NayB1+!ELCyJ6;b?ek6T-A-&+^7`ju%W@E-4C3NS z5O9lE*fb{EeTZd)tX%Q`l4k^K%onEZ4No|(hq|0u7)}i>b^a0+nq4BFY{@+tzoqdt zBt1WJUZ`}&+_|qfCRRQX56cZ%iB57a=5&=fdLhl6XA89Gtm&4iwLNPr>ac_&v&!0Tw zlEWhtD7<5dvQUFSw>w}hciB!2VVIRz1uttZxjPwzh1Ye=4%No|*Wb5&H=ShmK;0sy zaL5CbwbbUdK+|qa(^+&gkvHUiJo(rbDfl_*$cil{q-`cffr>*Z?ls{ysCRCsv1xPvbj#%xm1g+$SAL}7l z9Zv?uY8E@*x@K_n`QbzHUkkX>m;Oi`U91o4MJxKzbr1k+ zfFabdP0$4TaYeDJXqVt{o=HNejjY027hP%8?|mFgRfQpe#*vT8G^>EA(KAXD%|;^g zE|HcY2~XP%d2fDFzL*36V!mP28PC;?nBY!6;7E{>5*VJLU=x_gH!jDg(z3$_K4N+&~hb{#(OaD&E#IZQ__ zN{Tgt0N(Ufw!PO1ppq(UO`p-#ycQ~QzUxoV9ANKIG= zJGBTrF81(tMTP%&so>){28I}mc99j`NHxOv2{Z-WEOF|u6)jgf&@lmt@0O*#$QhI#=1e0(5f!AuI!}x~v zWRcmQPp=eoi7!gLcaI#U>Af6|9s8dB`mEm+yu0M5xzub~^V4A*L98(T-jbABlXdGVcVDiw-6mK9ZznWsliZ)5?4oGmjm7f0Ev;D}JK%w^SN&UC`XTFuuh!0Y4 z6>$)W$_q~i=*`)bwX9lktPDs)e>*MX7#TODnU$%z!*t*HSxs~apdinmfjV~{o+rT$eh#px#vKm_fK zvwsD8Y2(hO%qDDe{xl{FYSf`0f+6^SUoER6W1rO(>m0bG;g)F8l?*zn=+`S-DCp=``| zbyyhaR?Jx~NU`H|$3p>Pyhcn}T$w;Qay3{g+Cc0z951i)Q@TBjpL8L+)#fwa!=b&^8N&?FHq*gX4yKhj^QfLp%hiadf-{YQEfb>>8`sEb4~CfjGFCkb3}n+B!#S$Q~GvTL&$LPFalHSOEhbYpERD< zfay6FXNYmbYXR0Tq)dgNQ;55(U$_+)jd^kgF#YC{Bi9Vn8-~%Ybp9A)j!Tl$pHzh4 zEdcgGEJU8{(XyNn&=A_hKzbsKM197K+h&Rwd#m8ZA`7N;>pDe^4pTIPkHH8^Wpzrt zb$tw$3q%Zpg|X@@Pc-)s4+YH(NIfR5r!RC|G!0lD!fG8iQ1IbWWtfFV^*Dg7B?*i+kH3~Wfk@rpWC8#UEa=dF|eR9t! z<2z6OX_P5wmD(LD*!A?OCh_^cGTyJhPCa>Y;O@PxoHnT)8^ZI(j#lsc%mB#<1D>da zvM`|{@%7z>{~gHA6Z(@fGo=Kg#Wu1|d|}J!P%Uwf?e(B+sbpLT7JYQGnO`v9qL24= z&}^Jr$8Ar4MUijv7aH)V|Kzz7gx%vI!od4<72oY&BGXK5T)L^VSxz-u@MI&&#)h0e z(FU*2+s5iH!E9?-6`HkZ&ns7BMbB)0e#7aecy0QOxC>OJxyCdg4$ewWIle8#!kujb zbNQ#no1RA#5Qv*?jRnZI72d^7a51N-$PMM_loxf6k|%MQDYqwZs?x$3f>`G=!kp6K zJD*Oq=@vhl+-$jb|LrE)z%8ANTH(@NqrT`Ii)KQ$j3;G|i%2DU_#<)ob71r}YWM6p zyi@L9rS$5c&+$c8A{&2d5Xxcain;JKFsB^p3{8oPU#^HkboNF8nqqe}yiUUolBNXe z_oj_!%i2EE=$;R|PpGQ#fLb}n{{`6gv~Hy9j*z|gTuNBoPTM9!$#U{P3yO+Fz4+Rb zM>;(f{2a9ObGI+$C5%@Vq|&iT`*`R%(gLzfkWgQW_A{bh%^lMh=BjUYNR!U?>JZ+yfpg!2?JzOe2ECsLb~T zs0lOZ!o((0hzU{}W}R810m5Fn(4W@8EEhqqk;a>^IvXVV^x`O<2X8;n$Q!k0936(M zJtAr(T~+MO1W`jE_|`0qPV<`)<8z%lwS>WVY>sPR5eZ~AOCfTuBxtJJ?Qd(KNVnexN;(pKqTUfVi*@f1i9=(9 zTWh^DC(8b*izTISGh{?kRU`2dh}lztt^lli7v!CW8ozo z7S0UwB7HfuHjx6pk&k?5umVRdRrP9<`gwO271w^|VZa6aj;@Z|zgBHxbcbygz2Lb` z<3Pt4z=)!;kAWMPRp=uK=<_A!hGLCgKe@9*yk!)Da{QFQxcJwv*xi4>{G9&aSCNCo z6Y~|tcC+e(T~j~Cljt`B)|Cv?ehhb=NSu2&74QF>xm#=K`+~{p_k(Y>I%IQlpXi=z zY4rUEw;TpO8oc=L@JYFE_dGwhRH}FI=U@H#_WX8T*tV_x^|hcsDP6Vc#qR z_b`MkUmf&xR!E+@>JYZ|B_NuE?eg`3M1N}JWVrhHGW|+mypVH5G{mIvGVG@JS^%Jw zc6ndRCb!PVbyM`Hcx&`9Z20dohG)dv_t{bQwx2xS+X}FoCSrVjnL+p$qg1C#2Jb#V zZz4I4Y3ktTfGzG`A6a9Tmj!Dp^@{A4-GV`7SIb~bCdu}nGg%Po*s!803h~VDea0#& zre*&a_*#g5n24IY;F9`~_s+jM^TH>{QCPgl=`S$@nXlRrbUidu7Yb+Vw+Y;aHqfa_({vhXbiQDPgE?x~0yf5qt7*A*Y8W6>6zojp zRU>s?$6WPSQ0YV9QomT&A4n2%e9|#ZhN?!{G$v_9{bNBfZliOyfmPb8MMT@dB9ukhAR{YVOM! zJ`pAPx|b)7r>eNwMez;Ap&FruXiTmhILG(?zaX~;nk6|e6gLYD0x4p#9R&dJc2KeU zYSq;KxL{Qm@-?_4&3&w@jpyDFPIWZ5$1^G{i12HV+SWm8@4v&lzDzQUoXf@1TdROU z?2uHgn5Pn5DK@Zq=~L{J;HiJm^J;$sx5cQm@iZ_I)f0LZt9~0ud_)vDu>;2E-enT2 z1WxqAH2pl15aN!nSGeD$t#K>t z(a7jF;T{~<3=x*hitH}T4vR;-I;g0YIM|9*~ne;G=l7hdHVzv{6~}f zW4b-J=j{IYA6w%pBagzE9{;vJx>o+*4YfR-m47#1U;KM1HcI30LY2Y!qVEsxow@g5 zsg`n`+U%=XI(w&pp_hU7#_ReW>K^$lHRI6pQPBGmgb> zUWKil-FKMXr1QD9rE%Z>Ko4ARn^sP=oZxg(ue>y`xIj739j2f|W7#G=A!!}tD+PpP zP)I^YFwoNE-uV!Mo4IV4rDGZa{_-kE9$`uO7-~F!-S5+S+=;(Z?E4=r>D0fA5<`~1 zBwnb_h#&Hn%h75qm^Qo<)ZB1>n z`+$5QM4dp8>sA#oD!q&>A%sA&TM6{~|5J1>{!I4&AKzwUo6$}fQQK_VM9rK}wasXo zL(VzYFmg(WsMI|(+MMof4mp-nLX;#?DukSpq(YJ+I@0-YcliGN{)X#%yszu?dB0xI zr;Z5>m9@|=r^>-w*$^)p8{cB|CO(^zN3_DwGi{GAqPODb^tobHv&;l-I7L#(;7A>9 zocA))4MG4XD=*$ldoGZgtyU=cKKhGjXj}yfIS%o2y5~|T-z1fw@KVDeyAY5+v=gAX z%sH5JxpRPw$=H7|H8-CvUjAB3XkH=-kF; zs2@Kj3#BClS1ssl+L9?6+xnsh!H`i^k}EHe8@c#AolWmU2qrn|zSKN0hn0T8(kdJ1 zu3ZDymAZ@b!MQ*=vVIRAn3RS{#6khN*D`C-pd-*eLkS7kv1Qv04V^8D1{)HRiPxEd z?+-B2p2lbO_JDNh@Ue1UkFW2LzMomM(GUq8P%7#@G@y9G7a%faSyfKtzOvT<(qvDp z;^9niZlWr5n;$eDw&~#*Vpv*4ZuJ1syfIyEkrk<#`BY4B_Q>_@=}FdYeP|K`;$H)x z9Fo2wb*5viJ+dB`ke}E)fUAho`zTnJXBDt#C?`sklo9#df@(C&Y1#Y_DL{VG!~l-8 z)ysZw;qHhgFe4usA`7>Ul{6>@KUTt(5ESWY9E=fB#&=b+KPhf5m0FSd%qnvmN3DHE zcw857syRQ(Dm8amz-ilfYCE1be4?=8LaA6_%zJEI<1J#-TTBhl`$IDF>Y(OMAPsLRk{`%hmU-`S;BRPE|z|X|TrFy_h@m(qG>f3U>JXTfVLM z^}h!z3N`5*#G~seM72ZOv)RiBS1NzMJf1(wNIQ}EMN#)I+uJxH;>IPPQy16PUeR`( zFuQx_YX4F2ops*+1NmcJ-2t}~_B+lv=_jZ{!gv~{lHW!B(@YWfJM1~)T&GSSbo z_Eb{Gc1x?ExdSP%Lv|i1vf`{}z6b=9>hCQXipOsbptJMcsUl z-)eu(@pIz_+K(@JBJW{d>Hqbg@Bs9GnsW&0qn4Jv}pk*{M!`nTQTk~bqG~LjaO2dzt0ln!D zDJWUCCqe>+=hZ41UnhO>;r*R9wCZ0_)o7w5#qQZ}KZ7KpA$YV6o^=u^=JO+S0o4e7m+hMw98)$RgQNo3h(`*I ze&{p0ce!d|4;sr+0(1G9?C2m>m%Q}pNp?16H2AxbReRY3cP7Enj%kU77;eP^3_}O} zz++AfiW4#ubPV6kTk9l){Azgj&!WTIZmV8qgonnFf4)6diIYc} zfDxeQw{GnSnR3_3S`Lwg8QgVMee)v2wUFWoXy_?Nv37T|j0y7(d#k~H*`w=n>0b7S z$Z+cv-zwr+u)<;BuQIcB7u2z(T%feZYTJRfyNn$8mx>-+A5J8Hi``Lf zN`wO=w8|^$uO+LF2mp$g?av2{SuEqfgpDu>qV{ z$;dGC(0xwvqFu4$;c9aoFJC=q11(m2K3l@s+zk8SoFkkSQJ{d}YAyYp(S#mh27Zh? zC6Sx<@t^vE&k^-a0EuvOQZIU&&9j!y!d*!w+$f@gF@*-(FLpl}LIG%C5;;B8;)&je zB}G>9fcMS)YsG39s5G^qOs8!ZTa>62T`Njbn&};!3CMBzHf3z_xaR&Nxpx#*?L+&q zMi;10%FDhzI_2L^<&l4-g?XZ8vSMfK>wk{!j~$(V{_Sr16}zZik@^#V#;-4ZKYjey z-^6`qV=f(8voCpePmyqV$fZGp{wf-E!`kj^z-a#GAC&)`Vj{lM?i{_T+qifpG__#A zSK-^)bEAfeOVjq}Hh+Bntyy(t@gI!OTJAbcH&E&qdh6cB;24#>N#B#X@ztfKH6hsbuXbS&)Erp#K~ z60R*<>F)}IpuJ3Z&X+RT=bk)4)s-f>!go&Vmkv=e?t9-zzEJ|t4|`T;9aLPOI$jZ8 zFm%_JXkK^fYH70D+KmFYJ1%3p&g4F@^WTJfcKYeF`l#E$LTV+aZp7*O^AfImtDwq| zIr9%3>D>XE9OimiJ^3H)n1~Do`Ewo&cCt1R48L~iFVZGn^;soT;9)JO|oA3Sz z>C8|~zh(vK3^n(2zo(*2ncqp+nBtMHgNFuql1fQ|s#by;x`PM;q?tiM*`*jSa>Tnr zjmCmB_BLilJb1pJxFLbqow2pkSL|X$EN1VwKPy*v55GYv@a}nwXs&rB4Su@13l#EV z9hCOUv-M!mh=yR&fM|V5|H3o9g}w1q7#jjEjt+@9r_-|q07lw6ZR6kfOfX}VDM3*O z&qXLWY!pKUyGk7N4?W^5E)wBCf#A`8OSn6Vp~GM)47@bGQQ0rCpG5|1^c@M*l+`di zVD#rb)*ODwBM|APlg|)Z)k#O5#XZS|gAAj_HSb+`?Uf*I>PZ(e$0cSD%9E&6(1a1b zsWF4@&8=tQ@aK)i&encXkETa<`I-7{Q9e_%_6?EYB~U_xj0^!4iiw~i0w2xdWG&nT z3MJ*~rq|Tk<7M-l>wddHVwW0q-x|xzH=qh}MpJ%ygtp5DQC%c8Yoa9JArBmSdO)_D z7kGd5y?wp!fFp;+530UB>u*q7brvc_lT2K_84vpLt(<1L4((5!QRV;v-&K47c9+Ys zjewU_)$}jPk5Gbjs?f2do@q16A%qGB3&p9Pwc=@N_bo<>X73NxX3_U-BKW3dv0Q2{ z4VGe6?i(TYkiTR6$E~o$Y5FidGs7)JIcP`;J2&LWKZIIzTkUN6DA{`0LwKpq{=&_N ziWF1U6d-Lj=Vl6>;#1q1;W6s_E!id1*ZnX+s%E1?2JF`ze(Az+Q#TjAL016*5n|t+ zmf{Cr(!N)2sL1ZM7@saZsinSq2wt1>?fS&c89p))|I>QE0ch`d@Zpz#)~wzxjrS-%b5w zfqDDk?oPDp8SIZud%#2J{Ow+#9nW&pMlG)vRn9#p6dT_7aYj3+d)4Z9$&VPDw{J7J z7|PvoiB;CYp|laYWuNykr;~Ytx{_DQHF!dHG|ut$!1oh@Df6GAiC|T;|NrEbY$M%O zGN@GKFyp;$&a~~1J^fu2fNDf>A@s(4!BiwIYD1`30PD3smrn~G7nL|M8@y~2YuR8<5O?Fp%3rsy;wkkfMZ z7WY0SncPTU6NDEVN>J4(f3imdaCdMN)TwP5X?r-huF(7e-tYUJmvIL7MO@&?0IK@Z z9xSW69Y_J6EA0~XXSQZhgmkbp_`EvYfQ$#VV1*z65(J{^&3T8=hXIil$oNZ)D$6fJ zS}(PAF0)cvrCa5h`OA0$y9TK5ASecs~hLEC9>}?QU5OXce4o4|J-C(-cDu;?F&;0i}rQ{kGju(tg2tPheD8fQ`gpi)?&u z!vLUI2E*f(u^lp>c8TZxi3tX~X!@=CZTJJIDu^%?P}KM)1FlK&RK2zwC8fU;Uee4K zF@DfWyxTmd@E%|d0?Qf$X(eMVa@d6ja)IE9L*N86iban~w}Xl47BG?D%KnBSslw=9 zuJ*r6Xk>N=#zS!WNB>!6HbSBdk!0-drkI8!{9AOzuBs<~Olyh{ug*;(!)p|D0lkC5 za|QX=I6XujW*y}lI$IDB!Dy^wdSo@g9lXCZ%Am$xOn}yIFl0gkQ`l~xUaQeq%+})vJDw%bye!v@c~?zxzG?j zi9oYK4jT_v0Mv$hV_NGWBJ?@vpY*0Ga=>eT=|ELTd#Qw~C+yuC&H-xNMM!YVVBuvp zLrGXu?HA(y^enqN+8E~4&rUa#p(-lu!dntiPLiH=jn~QGKSrW6hTqU){7m0-in{8l zQ;qWCcTq_)z{L5_WkWa*?`Ze{2D9TY@mTF0E{m01-SqF3B%$gTiJF|yZgP%XnL&TP z(I{_prEKtQP$WU*j57W8j(MFJQUIM&r2RRy?^)sIthY->Ov4o`GfwR2Q{S24WOGxU zEz>nOr%7nEcm$@!dfaiTo^+Caa+djT?%Ur(7tcMoaqQS1)AQn=XLdiax%h1A>E@Dm z+rC;^!{}qVsdFFh+;si=

      #LzbO?t>-tquvsfutX%@-oFMq9X!jeaS?+@Fk$^>9j&#p_A$%{Mle&2ifg+$8iVYPc=Kf=Xj!*g2W>9Y>kjO{d) zma+qlwQ4UPJ64aPIEPB9Fx%q?A+L?k>!7 zngWOUp3}LmMsnGD9#WLxzyliquaGo{P!w$`{@q|qjzF^yKt)DBoVT-RE!v<7wiqLU z^C(4{{`{1~{yQCS9v!kqOlEk@oLC@i-w05bG$0R4Utmz>nB_QE$+ng?UXiNBN#i=8 zpziV^0*39V6dPPlD=7$jnuT}rWh#XiLd`ww7D~1zIrI8GnzMST%F3J6Xv$ka2gJ5T z1t3_}1s#y`at^Tn@w3nz3QrX}99hfBrfXoLlq^rm!D}!m&AMSO@MP>@3g8g0WW6NR z3ax@VL0F}%5p80eAD-((+ z>uzAB1)nwu{hcpxxG)e})Zi4s;IrIEWa+6pKxQS^6_l3*w%P1?_%OqU6zMR$iTSYs zpv5p5c@J{1w5 zj#s>h|A~$k1(U010LlU!-qoRP;RO}ESQ4M7z(OMXNS8tXyzML|%ISAqA$EtW9ChcV zK}#fpA!(KbmX(xcs0n>_IqzR7aEwa2<}tYgNnxB$MwzAtUAU{k-oheFbYML?35oGy z{HaqZk-5ry#SkC$+pRaI@nVTT-XF4AFxT01NnfF@U63W}86{7U@!6&3`jPZMvX_xf z`(VWn6S?|IrtKV#+>|DTh6NFo_^0@mM<2a}!O?Un$btk5bb+brlnQ!(=r_3-OFnNB!j~EG^yWjio_1FDAx!}6d z&V=FJwsLcz6@p^Q;ahP$9l^>4Nh^)}vHnz!r^%fJHI=OkTBP)DVqI>7FbNR4%9g$_ z^p=+#=nNTQ^?Bz0Bog)sPiSQBqko9q9{Th|g4Kt}R7i?^oDbZYGTV73*FThOYkZq6x`PN)-V0!PS&%66r+;J-yh;o2 zM^b|B&Ob@q`oZp0?O?R+gQMTrUB60-ydh5=KdWd@%zeIiWO(i9+@H?NHvcUhdQ_iW z{=RnQ^`gzhdJkIO#&+8hCa z^Kr`{luKb*?_J7dZ$xeb^UAkKZWYSn@m#fujxAcBU-4CzICjcQ$njxr;-~byhKD*60wuo{7>{+QHR_77Iw^NrsrgUZW z6~7pw6<%L`De^jsegS7Uu|GI*NIy6E0$Q9wk(XkxC_B3bRpsIzj&!t*P*PIRE$yyg zW-?6Zf^-Myqyg33t~!K!Hdu1Q1dHMd>#VE?7YGa>Gs+4W&ynp46_3=_SmFYlK+<>t zAAxX=zn$k-4HUBWz~mX1bk7)0Ose;dAtufv2*d{F{*tlbz!#pZQix0=c+e@`QG3lM zks<428h^w;?sK8YYF-{%Dp2T^Co z1{eu|a)o`N;F1xSg^3q>1l*jy!D((LaS#ofwmqo~@E9MDQpNN}kREcepMtUiBAfLQ z2<31oQj}bZp+sc8a^6H%ijosqmqeOlJN7k+< zPpIO$UW-fBXrGv2%97pk^iTHrmoiZ_Lo;M!Zyl$IwaiF(Z`pMBkV9=1#CCkn05>G!#|L zXGhNV-)73$NEY@icn%(9r~Q@!AfCFU{=o|0A|#fX2SZ9rSap0X!=qSPa{_21j}2#< zU)FzOrQmVY_7!moEx2Fz4pnVKxdGTOMp8+xG*7=1459?jCgEFqqBsjp5C!iq2yHXy z*>VJHhLzmd;FghjdvX$ zA9TBAI~-o_?|-GM`0)K3pU0CQU0%HKQ{}|`nMK24ZDG0^Wu_1}p+wFD`%ad!`1R+B zkHl=_HL97Yhq>-{b3vb-cFugh*n!F(R=lM2@OI^~)B(~2rm`AkZ1g-weO!Z7e9h`Z zgI4V()2Ny!fxX6CX+J;9YS{P*5EfdHPJ7)GDase?`dY_XGvRedd3}j<{n#k-XPHA} zX)1DX5-|H>Zj|Zk4%i4iKnhKb%JBiX((r)#SSglrfwU2G2!ReQfRu8 zGQdsU@VXy)# z!L#3~b-iJ^TS?7O4{W@H70PiB#<^>NG&3)V#GsyaGz*k}$o?aHA>3FR!MWW}pEDIU zdu{-V(#4-<6{TdU3K~H1g`qlLjd#+niVft!E{2HXun6{q(pgY1m26e16QWkE>!!GIU zko5xM5$RGH4{|vWQJBdC;RyX7SfZ**sCYu`o$+pAoT!fHVFYCN)kPyHNY!X#z{zZQ zZ*e3)vQ%(xWu3}OP5sX_R6)~>?! z=ao;wy~6q8w@UT1bWa{UxM{HWC9dbF6=^>OCk`lzM`vP&TP(d^LMtL3mR;`EQb~#MQ^a6hXt-5X>!ki$|L1cDN~M$8x`Ml(#%I3IH7f32 zLflcBw=IyqYnvS&3wj$kers&yclO7I@mm+Ko(oRZU0gfA^Wwg>mXF_uzQ4cFb?D`v zUn*L9ZJyd<;YYpV(a{rw%O~EvT~E-j1aGQLe*gCI&$o{^$8mrACO@uN4dR?byO_NA z+x7TX!IS}vV5aH5+c1>QBGh?MI#_Rl8~{Rn@YS+=ojwrJ765QNphMw6+I zX(dzn6HGqA&rCo?h9HaaPK3y$%ZdI|grQ>ZxSj^36MBvl28l8*!x%dX-QLc&dQtI~ z)X!^jIqY&)+GA*FpvWJ5lSw)v?tkqG_4GA-Vo94C^pFg3@Wg6(VX|jR1_fLf>%u!S zDW(;0y2v5uxqC&rW7l!V@sd69AkQv-L1lJQ?+yJ525wH|7n>_<>B(-IChn*{g%Rmvp z<7YoCrfT|t*sc#7=ARZqN~k3c?tU;VLMz!&C-S~E+x!3|S+tNv?m@mPQZr2I1RPe zK%w(U%lo6Hy|9?+-Y9f#XGUfP!vMm9dCx2K~T6CnTiQC!4B;Oz=%1gv1eCe9d!O8 zCZ-JEA2YX34q0;SEh>q^kNt38nxUdwNG_ltZ{i}gj!6*?@ms|5)p2W87fAh9cH}mO z(m=Sd$z_g}+n{kXSkZvI*2F~sEQhg`M@34ZLhYu|YC@02ekf|;hxM^Gl= zx0+R^FZzY1oqT-pX7b&?F*et}t(`vl*Pf+Xa-P-#!va|RMzfFS`{G!4`J5cq06u^# zdbB(4cFwtL&8jdyhYe*r5wy%e>1afDxK|KYM9_f8^0_E#M@`hF17!TSJcIt(*h}F$ z?NxEtWHpAQQ#suN5}POmfnF%bk_^$Bd|8BrC&=l#XFpB2t{?(8xo8;pv&Z*wij!N5 zj)4#X{j3;=kZJ>eKZB^c51m9;nWv^Ex`b}(Y&d3G2J>*k-M10Ylwdl2-gZQzTDw7G zvrA?^y!BMam3f4@2`#KfR;x1l1lc^C4M~p>6t;y)4P%=4oKvf?Xg)z(Y3@w-exn7K>1| zs=n-rGYj)_VgyOZ=joGHqlf!-O;|FEOf|D2Ix=k4yNuO5a=HDSGVyfjP}TFN^nxod z`CL3Qi-gjx+1B%}6dKyF88DR|F_AJG3*Ma*3=}eh+33`NbVPY%C5LxV$eEaqO(7{7&7wvHRLIM={L1@Ki z^bd`1=0JwiZQdz>fbNPJ53`GwZi=fT&Sv@ApTL6Y5=+9@?rbW8cc@0$kH06=nc`P0 z<4GaGG7VC+ldHj5%VA8e*#(HY`pzv4Q)N znjb&=Zm`R%a{T)Z)6x10M4F?^uMI zW5(vIcY;5+{0~t2=h3wU0M2My<$Yc1BhaHor|;M}voF)B45M20rA}sFxbx^oRqj zSq8{Kv$^S^p&x_U?u^;=hNRg*f#VOam-jO|T)^lmJX8kZ6cQVYdky{e;C_NVBw5=0 zGVDv*Wx7XFh$qli;nRYvpE+05?u_;6k)gNk1y=~k$^>$IlX1jQDXhSQ!WGY2PBrH< z6Ja*#SGtM{(Y>187WsO@O2g}9Z#rn26X8ic;!1SaAG5DY{bClVneD$|r6lU%1B92$ zKwPIHg92PlBY0TAO{cfLJ+@uF-t3VRDbo#Z^h$Ui63y?^bjRi0=OXFFFH(Z)$0Aq7 z$wuB9I0kCDzwV!t+Wrb72s*r7E?C_g%n{-3kVcAW@q(sL8?UKE^^yCxD+{UEg75;N zG@|i90UY`*i0m#UzSQ=uDlsn)00Tm;F+_x>mGej-jEMGBswy`$QVz}JBq)x_Z?Ltm z*wC|!^mR6QD<&9>SDi4}a4Y+8S)89|9=uT1@qC_5#XBsF3}}On4Or@O3du^O@HvU> zqGhVxJqM*6J`_S4MZfW@*-vJrOG)p~wFMoXiQ$u|3>STap9%K81tcEJ0Ldj)0I_jJ z&`U>H#0Vs#!Cpf_P@YCDi^CcV;Z?;O+1H%iwi{%Cv^8SkKZt!MnauQf0OH+fk+gYJ z$@oWl&wW6+zsaRd8Rt`@K$FbuOC$?F@#H9;Zr|r>@+GC$c*$0AKw*;jEyJ0~O zlsvhn2>YdhP`wYFSVAtNuF8;=NFbMs5+fYVX$Bc-H|RTvz*z-Sr?^puU8x<_8cC7(Da);?vaq zD*Q^x{%+)IsBIcQbDLh<`gSp#qENV$0Sc^Hf(2!lyT=s3NDvPv^JECeY6Yn60*qCG z4>6qI{(K>un2j~4H;Y;sJ^~JM8EuEV_BcPQu=aZAPjtidX6^qh1*OACKw+(sVzYMe z>hao@z#n&R9j}O;th=||%0pvV1vh*ST&&1bE;bN6*M@LEN+N>-;pam$;$|Q8?>vrp z+s3IZ6+cRtIx>FkQR>eZc0V2^U%Z%4|GH`GGtYxNTmC6=86KQu?7FdU5rBVuZ!UYk z&D#pbOx)*&V@?(q_gY-RQNuPQmRp((Eqz^i`-=Qt%jUCbmnh+P^27gPe!czY-@RSq z*VZZ%ejhDK_=#{DoxBYXh@S-+GtG8)XPLut9aY%_%DEA}7DZY}KedAbTp24X-1H`o zsgJIlbg}T}Q?JFNgCjOpL*Y%{Oz_DK1b3NPa7{Wk3u1C6iO>zi=aAajVly7N3030S ze^TJ40Yg@UNkDWD+WW-=wh^k-E3$V8Trt`M7@CA)s4jU{M##_~Os+iIv9iSILH?Xv zvkyZ*{K~%z)?+nN8$JPO+$=W>N_Ny!)PU7NM+lRC-CLgPhDH1sZB4(DR(c zVJaWWGK+V*XKoV7&HNo~&*O|zYN|cD);${FEn(A{TTbr5k|jnat8hgiM@0s$~da;vtMUBLCB0)Xc_67*?kPNi$E73?4v zdmb3gNWc;RW(ZEm0@EwPEh`lYy@61^fYmUxO;tvqdjdVxI4pX;Ig z;#XDV)4Yc=FqurV)P^gjxiAeAeUQsuH4k(BT08=<)c3Pq4PX3#vN;7Fg?7@!358X| zXy=ToMJAx`=1ZupFh;Edx&# zB2)>YWZiyx(g`h(uVPgrf!pK1r5NI3QItZRtp>LZ^fEk%ISe~-WT%D(r&X6mrjGU8al;)%a;zg}>8YY%6N z-|U_HeI(|=#TA>saev5WUyiNpTdVkXe*EUG@e|2;hJ7C<@=Iiw^jmT8WO9NWxZIcEsaP8y7N5T(=! zE8)TCyVZM)rGVU#71=aXp$);PYHaVHGtMNt<;Q`%J3W9B7 zoY~`;ec{tnBuYzzpzqZdA%A2CPA}HRzjHE*Mi|Osy$`w;ZO!-o1gLqWRwFSI5@dvH z>6jY#rDDw*`fE23U{9t7#uk;mVZtaz349o;oeI^{HvYbT`eVcn2PsdC)%8K~AT35A z#Bo_t7eeY_ngEHw7fEbfnB$dx4H6dM-oz30m+GHw)Z6NL|2|JCX}CXB$ibTNAPu=J zDzg7oIjiS3EXLXt;ma0jBqtG5(MTtl13kD7T5`q7xmst%mlki@Scju1hpU`OmIU8d z>sbp?Qoj%4$(7wlO`zKFSK4J3S!WxxOmj;|kmL;VulLiUM-^E(7fd@4F9jg{0G529 zgIL#cvus*(3w*57y>$}=I;n2-dHIQ$_9V(z#fJeaA*o$xuOugQni&rpZPhEmPeqB)!BLTs65G%$|4#9-kF_eOgN+;-lCWxyf z1~Roa#`9|tG;@kUKk@_V!vc3r0uB#TUyU!6J*G=x#D*>EUaI3`1tOlOdtbE+J~2~# z7VIb4Ht;H1nse;)h_=`^wp6ugv6b9uXk3{8Gb<|>Z4c8I);%u9sqnT+6nt(C>&Mw5zO2C^Q6vy5 zLf#!RY%b+|7azRx0#FTfXIuevG#s_F3qJaa}DNZPt`Cvu zgRUPtax3la(GLgutk2|rTReE;;o^>Yn_|<~KR%Y7ytmuhJ?_8q{}M9y1)3E-u4ugi z*`oL$*>NxG&fO@3mJj;>{!{OF|4>hcDJr18`TMZ2An8B@?_=eeGpUchIgy`qUA=l_ zDbcpo{{-yM2XM~4D+xv^`L%>L^PB&;(4Ng>We<(t{qow}xMhQg{-P5m1lB$`^Ar(y zrQ0SQ6rbp^_fb-#=qLOapg?Pxe<%k-Z8|p2C=s)j0{H!BuL8oS6bx4-am}ck%k%Z^ z2Nql6#|XV^a+p{K`jIYSZ**+kT|zQ3V+n>f(>D>a)Hg(K?UkpRDOOxSAVy`bHISZ%Me9`DL-h6X@=7r*8YPyUy zK>%4Ed>J=7Q^ zH62!Ut~-@2t$P4!WKOSW2A)4;@}coeS5C*ZtbpT>BF|h*+y8H61$WWy#(9AI#l*Bv zPvQuKZPZ4&pW5+#7kG6KM%lJ0W#1oB9HMz1CrkbZNC0k}C}8#LqTc5+h6{z*(72Gl z{1jyKyAr&1h=bC{=Cay38&{VB_5T4T{3S%7U#qD0*p5!WPs52=FcZnd@T(7ZPjTpK zQgF#ae}BC)<2#y}5kZ{r!LvQg?rp{!6&q3C!KieOv+>r`MoQWSnHc~RLj*;T`G6{G z1`s{Eq@+yE7s{MWqcL=z?l^86*qLRN$yAe1&jQOC0>|>p=z)?)Tz^8ekfiLP#4F@H zSGV(&z$sN8hF*}-KoVY!y6`0A^nM&Krl&c3SCa0wW=>69h!?Rw+5S?v=VgoQM~cmV z_R9Tc+MJ%rl$wUsYDZKz`E~#Jv@xo<1@L$rXy|+TWu>e!yI(3rzArkQwlzp_&2ner_86WYdp;Jkn7>-Ey*qR*<*PxF@tKazuHU~u ztl0OpuxFD++8kkDOuq+95t&lTzWU_!YV6!Gmk;|g@7!7bC(O`UbiD6=!R=$?yJU zk`2*Kyt-m_q5d0XOpql$KDhjC=S|B5OxiQV{=LVqKC?Mn9Rn(J1FhN^Z8K8Q&@xkdsENoVGTiC>(L9v%g63=srwBeH}g zTYJwF++lgG+l(g4u$x9caiPUJ$t>+5W84HW0N1m0&J$L4X=S% z6x9Kd2EFnZaTX?fWOFeW)m$KK#(@Mk&=zl@z)(_i-yw;n00PbVaj>hts)q`>V)0`d zWpxzC_4hz;6!3T3|A<$DQYHmlsw|ycwz6rrs-CMN31x#T=`O2FUoWI~*g+mAz3pKb zp#ZtkbdrE0@DVDiWLuK(MO)Ni{baPhCW_5IN7D9daZ%M1>eIZNC33*{8;A3tzOD4M z2O4-gH#s@i%zL&3o?bXxI8qg5#H1!X^RYbp3lX^Dhf5Cwfo$GS4+~jD3iM&ck2D`m#a^_ zB z!IuX&7VX78I@!jBy_if%;kzUx7$-tNcy^j9*h_BL7nl4>k zICOF6zp)SRojJVYd+_BSJ2JKH_ncfBe|Tb_*+-<_$6%h=`#bFBz3lZr-sR*wKhMP7 zihY*y>F=RGcd@s@cTQ~aDsMS{Vd48B5mdE+=a>!o6{>6c_w1^9_QyGuQVjcq3Gc?w z6tx!GZ)W+*K`Q!ZfJz(?DS6-2K?sR?Li~2{#N79OYmJ3RlAO$wdkP+JF5NeNpyXM~ z_r_bXZeG%s8%-N)ZyncuapnER#kEskcU-l;x9^5P{|w2DmKU2Jv$7-YUgh7!ozri6 zZ_bzf0UOuN2F6@j+8iF0+$9@o60H_0Cz;deM?VUD_XXJmlnwtjwEU5(uI8tHUrEJxC4Dv zN0q3hmjYE}ndi0s&14}+VqS;nt|d@f(3K~m2!Fpm4!i_m5Vb@Y$oP4StFB`(j;LW|@5bzS;=X*ht% zywBC7EheYOQ-AV1#=u5A=c66rLf8KQT~?*IQ&PE-TW80o!5!wZKE++0i83!1Qc^+2 z8Ln05Izd4WS<*H%RNR~|MyYyu7CQ7FF>(<`L?CdiD5Bv|Ce^Piv9fuO;r^vAEPhqf z$!`kIXjIh?nVrY;8dXFy-V%sAnOEUv5WRfhBeSp&-KyLy%(+qn38d>sZMn~QuJ(xE z&LxC7Lg(nrGEA+i z{STw__lRC#88Nmd_uE#De>d9T{1nYwXy z=+F?)0DVZD9 z%K0O#@0%b_T#FjT=)N(CR(6DMML79yYUN@N!|k+Qx#YS1SUiP5VtAx2GJ{94Q~b~u ztX@f|wqe13GZTYHbL{w`cV|7K-W6s4b9eUI+dh8!Yj5)BJ)bN8J_~w#Vdn9_-AAFdi3c7- z#!u~({HOi->*oSBzjvWcHO^oA?7m&>x_ugd5JJkW>B)%(Zshver4?xq69x z;qrx@=#_o@+-yGY^#5wbkU^jmMV|e=Fk+}~VW84bI)T>T#rMvANGjwO8DZ1?rtrf( zznNiDEI~g6CY*NicA~&!I0V$Sv>7{{y{!Z-k})0huweF(b+Jc#wv@(iH>)*)myV&l z1U1!?759D*BOV$m(T_LBnD4Z;g!lWpW;&-6!RX_+w~=7)aEIAWs8R`rd0mC-F20@% z_jY>BFzAwO!qg=CisGpvoO6g^HJw}4FxQ~U?gQ;M3b1TYUt)4aE>(_#*>^VNa2h^& z@%C;+U^)buj#DM%-Iu91e-H{=uPdAzj&V$?y1RtgC9$$lK7PTd450i24S1Y(EsNWr z-D;+HKQt3Z1}CK;m*hwW`xN#D3#Sj@!-xoZRn4FlG*S|`P5 zT=+X|WA@MH1!ZngF)Z9qFZR~m++ea<(y0Q$XW_-0#o|*O_{SgB>&3>Yp8S>kEvMf| zQcD#Pcuu72#uA*+F14B)GOhLWUve1Ipc0TFB5e$UE;YAY=<|Ub0cD+6mcf0n&bFjX zj(ZS?05w|br5&4ln`%uibYe(EK4!KpxoA;ok51Hq+a^Y1d!dCQQOK9$Z|c3aS^0x! zTkr&L&@j|}jN!Hjb(FWKePh>vWeJ>~ZHVexIe-1YOJspi2ajBG#ONO&QiJmrq7(*J z=r~O)fs30tFNBG5X`=7CL+es!Hxu`;XylAv4mYn}*)o@Z3>UxZa5^r@;*81X+@ENw-Q4RV-Q~G`u;s)H9 zP_y+Wx6OiUPbT?*i_XiayN4g!<&7_Pq@}K!Yu?zMVwd`>&|~AXXFINctW9*#8y%?s z`OV|O=d~PTHEr0_L*nBZ=2l?Cm{H3`3*&h6Y?dULR?9@9amupXIUwc{mJUbZEsrJ}t z?d^Z3e!Q`Jft)+dNufY?G#|b?VSA)z_QSEo&J$njzoFs`_O^0>{|e5>ot{4Q1H037 z`=Y_|tJ8U|z>Aycwm)Hu{SGLreb;@?|9kk8d0?n|8p^L{{DQ`5rwtzlww1S#{pUF! zweJqkp8c&@{_kBtKl8_(#TPq4;t~& zMp4R<{-6B5nhYNTJewa4cn`3W&aNWF%RStu#1J#06-`tIh^gB<*&Cfr_k%aJxHB4W zDADdlEW>l1lu;&O9$RAFNsePmT71pwEyujuN%Bi_Wcs;|?flO_>#CQ)pNJla zICMxNY#Z~z^TQ?rl1t8K#+DF=iVhU|tW!6=Z8?1``Q>5dCPHNOvL`^Tk8PXO0{uS# ztw2)0NfyN<$WoaZ7>Sc&<*U$9<1(Qk2!MxxX+v<{Jx~G~qc(#M@v>7b1jvbk_I6e& zB?*io(#}hF&?IZ$O0nk&SR|d5u$HH)riZp@2}nX*0WwfDscRgH2nQ8akq}L}B`B#q zv|uTvGXzDjnDhcf00ISK1tQoal>n&>I}Up41p);@G$kycA_O67qEMK`(o={i2+r(7 z5+HAMB}qU4L4gd~ZHu==;T(u#3Ya01XB{lT9zg@tFBBFyLPdXdZDibV`D&8$x z0NW@Al(txaFhorz<6=WRqOv22L|bDQ2$Io=2zWpYn7rpMtf2&?C{3n@lIwI(7_c3` zZbY(WBH(~XBr7Pmik&V7!LN~0REa&vdrm+xl%!A0J8HFfz$q|jfQ(c`Hg;=SVk?$Q zd{1i4VJIBkNPR#I@E&jjpv5u>iI|L`D8MgCNz4E(W@e6(kYAa0Sxw%z4nRG#x=5%= zM1st;2Ej3-j77sl-~fC?NdUZ9GJC9fvxMh^86Zn?rnNkN+xNv*)p=D{nU>cC9Zz$= zj^zF^P5pfLeU|gCzMh{)-tFh@>(^fxXm5SHT>KgH?N|UrnIpVXK{NXf+RnV{{8kao z__Oil@t=OarU=I}-1FHY1?Lq@-X*Z+>Qc|HBLH!5B;jC!N&E4LSRCwdo$5R_lz(A! zaRf|GyWmR-8nuJ5%IU`#Bm{(tYOY12m&evnawhn90wu%ttdHxPsP=z)$*%m|ME7Fd z{CUdWsRv4y#kUMPxX+4)EN<_F!|jagj?oF;wqAQa^IuP|8OG~jaW(ghEB6`r6BLo} z@>f3}Y2In`bspj~#4+t&)i*Id1&J=AeC7Vv?5pjY)X$HZqX_5c>Ggc%ujTU2->;#v zQ|D3H5%vg2D-m=oz)#i9c3fbNRqq|(+)td72q2U#Tu3HG^ZZ~)R0t3SVp9?%_umtQ zgcPNTW<+R2#`oL4GQ%dp0FAD-B-4<}4a&l#mrPiA9!$720)oViWm6>SC*KrGlo7Ew zn{2Hr z6Ep~P6Ogl0wOA{nEz$9*UHSo~Or?Q>4y znu1kxktdwiY@npTrr?tZj}9nSLS!lOvrv~vBOz*w1hGwcq)Q7SR0Jzx>r~9SITRpk z039gmU`$~XNd%iDWDGWlVaV)&h*4m(k#UeQ{3sclcfe79~Yd|6pAwqGgeoTZ1 zRR~fNQugpdCIPHbh>A!cj3_cCSP2g~s}PEyN)_0KHt{8y?odK0AC?s`aAcz~1VB*( z5E>ic6anI57z%}ih3+^YWSo?gZ9V2Ufj~hbg&|9*KzDb@BOy&P#2^Y`q?UGIQ^44i zL{dYY6ADvk#t3nt0RVI>3$|NY2nAQE4caZzf!qN}LU|;Mz{qbNUvS4~2vi9a06~UQ zyS4uSbKmLn%i6x*PP_a_Pt!T?cQ^Iq{&Cp@D?E{NOsOYqUJB!4B6AfUwnQxyw4aUwK=QbYn4f*jCr zK|(@dC}gU`D5axQ%bxPdH&ZbcDt&XU8t?vR-aJ5r&cUqu{{Wr*kKZp=`1^hg>$ZQN z9y?`5ud3dkRsr3;fMjT=q^HSA$f$z2n*?^Q@>nj2^$44JBgshik%4n)37kZaAw}vr9|yS*3s3) zF&2_6iCfi&Nf3z96~vyw`QT=dU7Q4w69$2iXo`3=BNqmg7nXz=E`S6b!5tt-S$l;{ zX}Ye4&Fx|uaK)Dhn~f)c?)V#>hvf+-Y(Nis^JI;2{Yq^Vp)nQ}#8gqMY^laUmp zv11aFP`Jv_8Wti52AF~;2m@t6QK}<^G~hVyBM?PFWD`832qb4Cf65V~jF)(s(myqLZZ;!xuIJ)b1{u^Y_lbAI2T4Q0S3Dj#*-g$5@?E zs+nq@K72UoSdhX65(mWnvXKL@B2+9ix)+R)JW&7^qaw@`0L)erK6|Zz zL8$^x?(hJDL^4S1fR8pxyUCt;qk?r!N6uGu_X(qQA&)se55HVze?Q5eKaVGWf2KWu zm#qH&y!_T8QeX5Z=PG!Q64!f&@tuBgKP}GquNme$eaf#UyXVRBSL5@8Kq+@zeDRRb z_lRih%E0_aLd$;b#Lo8)N7?RoA+-8Vbp5!WAAAmqM89VIOHbPtRYK#9KFb;>kESAt zBSAKnue@ALbG+l{@@@rKV>@rh)}jiB>7IDtjvYhU-<&)7NqdC48;!`<(-1sH?5k;X zXRiMMM}EUMK?xT+{r>i4Niy@{Lm-u>i=K&aUU zNJ4zN?}Cz5?ly=^Wk=H~x+ZlII&=_oR=nkOUcM%M^N}0xu`|s5S@+L9QSam1>78}s z(mEz9;29)00<;tXP?{|FNkj`_t~8o6IC44^DM=^|q=?ufG;|wLwFnv#AgBPE`7p+z zGH!)2+qOvx)UO2qp$$}5Y*PGMM3CD=U0uV8EUG;CWR0|>UwoQnSvF!=Y+4I3u4@){ zE2v_7a4RJFaCVllGhLG4W%{xm9RP`{SiwU#=3j)wcNKuC=oQMolN<~nqn6!joJk^;p1Rx};NMTk=)qzAr zf`~?-WZ(vAQ5Kkt<_cIR1cX^C5`tC%1R_^WF2Y5CiavxZGikt$pjt^F9Mpp&D3Eu} ztSJWERF%0wQ!P5i2%!{60%Tic0E)=ABe_9WakP@+1ksN|WY-s(2?JAM2Lz}Fq9%$$ z5ab*XB(SusvQ>zJfe!dUp*%z+i3liJH*QLgYC_gw7J!ZX7fHZ|AQhrntE0~~!xJE? z#1S=gM8$C&;8`q86Wg=&Z?=Dbe~H&ooqeJ9aAB73zWVc#kVH>VJp5}q@6~5N$JfrB zZ=U_)V80XmdIjBk;R%p?nWqLxk(i0CID#`^ROYNJI`=h%heMEE>o6n)7zdGa0pv|; zlwcU54xd05gG9z@2vN=#)Q}TUHMS+p;FfC{ip1<+YA94L5lRAuk{P-2oPeIe@7=r@ z;!5MmsO68b*w3fi$x+`v{dpPAXTA4+xOVOD9QOCby9x8ZWRd4tF|YUEz6Y>&66W{AA$0PQnA;nQi^C93KT|nPI{NN_`SF;%g;;1s>7ne)vT# z0}^O>5KZ^VVg@9ULk7DJeLjn49?X3*d2XtP!KQd8tH_$<hn65YP zp3A6|gT~vUW9^k5$xyBcf}t?f6%sV-Q6=wGXbVa0It^r&cr0n;kpuyC05w_idiC8b^hSeZoKf=_I)u8Rhe6EV+*u+ySM zZLm!uneSW_CRVIku|WG<3g zkr-%63QY+h5eO9bMh$NUKnCVE2$=3Sj4SUx5o)X@@!m-Z$ONFI)@>i{fgPJLUS%K< z+Kj>2Tp>Y)RR9WUqA|UBlN}_R2=^fo56@@~7DXXtq6mX3P0X8<1R*+sB%qNr7h5nf z?3PI&VFOUnIU)ds4`3c&ZTK=w3bUw@-3cB}GkUHrq-Jp70x<(F>8U}G2qRKNmx&`G zAlC3ovnVVTMn!oYFbK4CRM0JGCcs_+sY<6Pp;01^R2;UaYzY7(VC2D77!#l-a}=i7 zX~_`Wm;*u`61C+LF<`RD7LSlqYyzhrvxC9 zq^6}pZIDpxF)Sp-4J<@qvywIvCJ8W-SxG_E7JoovS{8+*1t6hq*doO2R0XNr!HTc~ zWdIhSc1`H{#yNO-TG>|_RMD+1DH`07k~SxLNIposVT(;~zmEI&azc8JjO**0fVqec z@KAE`i3~`fGN*UN&+Pfdg^Y@##jhyQ$^vpZvRfr?Z%Dc=`(Z=C43TCYz?+UwoCy_Z zXjl|5Lhd%la|XgHY*;u5?kV=hhzfWZ7vZc{_4;p|;tlh3$9bR) zy}V>B+JeIoCg#=@wBz4y-jD3gN93IRPrl{%)=|6hKW4Z1$FR@g<4;DixA6Vnjb!|B z-c9p92m6xp&%f3uW#?^F?xS!dQg?$XjTB7yfz{w}_2i^+3mJ828T=!c3eXhE=yB;+DIg&bwMn>R#)=3DL{TDQwQfp~ zmE;CNWnc>`7>P(Es74JC($Fz!yCS~AtKpbbNfSbxBG5yW$uJ@XlA>%ez@rWYfS5rf zkQyPvUo_Uzg^HmKvBrr|0u>C1B{-xus#%z4B^klmQcMyhWF@nsB21}W)CnO1DKu{f zcLZcoB7%f;5TP*`6&5-H7eFf#oE2!ngh@N3g41oGQ%-4SDTsqWYQzu#U|EF_5tRl; zq6i-5M`KBlYPgVfc9u(f(}Hy%Q)dvIg zS8xkr+^e}D$(&HJ6DWi#93fzU$7>O=5M&B73$<<~ek=gc3n<|XOqCKiJAmMd1eA5a zkijetwD^nwC`Gv}jDfcc0trwH;GCwQv_pl65h}XSDKZrsi%CH9A}Jzl%!c7vAht3< zB_)6cSPF9m)xsjvOQQ*!5P#k%LwSh%t zgECNH!P3zo59FVAY3kIs5I*cME5Ge}7Bz%iXOdJZM_uhMT_KtFh znz8o&GW*}(CV)UoA!txda_+og%>_YUV*24^j50y03Q0DHLLp(6VC%5JIJtyS)j2}X za43^;hJ=PZdd3=h&NPDh5miE%6>O8F)@EiS%SMEdbyls8<>njRAc9 zv3pU)2i5{|K5i?k&!^VDv#f_n4`z{tu_|J{`(y}Ngs4o<62uQ2;*y9sp4X5_A0Iy^ zxXU#meS5!mjO&a_pYzAm&$qMv&MOf3-u!l-oNvL`E_Z*!obg&F867aMZ*-I7ln|+} zbF<7%#-{Q{&{4CxR*5+L@V0hV^?XbZKTH;Td4rt4n!a|}{`uS9Jn_Y9bKAzB97KNK zT5*}Jj!T_c zNV#4M(-VE(N88h`z5NZsq?XGeU`3#V;{^G<{9H#TR}u^H@IcbctmoIajwI)tZ|NTq z5%Od6RCYRsUm!+P3yoG+sH+r#0gMK1s^J}!Q{6gVKy^q);Ygrh@1WZZ z@bbV=ETD~|1WW>qKq*-E5+!}fP@BsQGT0!<017m`r4U}(u7FaM0~U#m4Ae>l1|=av zT-y+!!%(+^@G^1QMnhr|#9bg>#!*B>P)M-QVihQ1GXx-#nQQNgq-I5+P%%cLk|HM^ z#7o;kWScs8AAFOSrIsuOBqHFB){g-r5Kx^Ap)K$eoq?o+iBtvxMc)r>Ock9Fl4e3U zIv~F}K@e$}4VnlxcgeQC@`Tb_gT9IQ-}#h4Xc4=8r!weehyu1d6bvf>ru>K!d|-GPWKL(Cu$c1qwyviG*2K zD}s}Z5bYQRv`zcBB$@$9*dWE3`tiykMTHR%B^|b_Ev`!<1S4cbz>DOFAd?-L;yp>Z zC|$@38^|jPNnTzC0MyZJ;@oZxB*bALnKeGq6;HTrp@5m&Jm3*BO#ws*p;|O&5ya2W z&bsmF@Cv2?nS;i^7=kebR8_Ewgk2aJsFWF(aViNY43&L$kkc?BDguu$txy<0MhHPP z^{&~3gD2!fgyoXC1AROdf;|)j*<*T>=)UIzk~Vz-Pyi-zTe=C#+i9)~}Ua(d_M zygz;Ze%ViX`@SZ2`JarTFPjsJ+Z@l@bBL+tW>HX_OlY6I)KlMov`K%Qs!rGMGM|sO zEBt$C-`mm0;z=)2hP))H7;CNy9vAEp@;a-F(-m!>CJPW%${Lq>GKY}Pr>u&LDu_c=HGf*FU7yM zSbd{s1J8~~$lxbo7d%KyubBE}(j^L+kcLoLkZLdLO<|Q=Dy|;|#8!8n-fUg!5hf;T za#s17k_XuCw(*vcD`%eJ6XEy5Jbn@`rTTfs=aye{HiqTwqn{cLcfHKp8vg(?xa;oM zs>*+E-4g=q!grk|^~|lq`g0C{G6AiwR*dNdY!3 zQzr3z;3lAifKdrX)oNTEEg@r{U?GYPz?FjsQ^4ZQu~|bC5-UL}Mi_Y=TVhg@B<9s{ zCB!RbCd$%6VBAE=NkpBj1dt395jFuPvMB_zkt%}oV*@l75dxr;ETpi6*#bji!bq8C zNK_qmjBvyOCCTN8R*2;wO%NnODgYMD)FudcaW2Ghz_27BN*&x(Gs}XIb|4Y}vthuR z;1OsgiSU4V0L5qQGQ`D_l-aoU1k_!LZSz?T%2i-PfmIj^Qes6ZAY7z8Y!iS04#JU0 zU4qIMJNk``TYHrPF-yuDP?=kjySHj`CUl%Y z2PgzJC6xyVEW$!U!b4KRQOMaG#>%M7n}WbhP~k9OfR&=k5fCK^7qT(>WRjBbN&*$g zsS$!IMnIOq42WExBsn|^QvlK>lw>5^+D98nAZFAAf+V1BJJ3j>ff_Xhc!h&83Sc_X z&$IZ~0W1kEBC&&H zNWnI0US-oyz7-H)Ln{uTt7LHX9~CfCl^KaFT|f`h_yia^4pCLG2p;)XWFg0_C?2Iu z2d?$xVUHbR?mlntl{8mnNgnab)n~NvUVIy7Lyf`Nm^g1w@nw%(0QRt}NrDay zbm86ZEvI#)GDi&V!yX+D{3B#ZqyXR|vV$F}mPp>;7mFjpTcqPd2OuNl50I)MO-xuVpVOcCj-M2QxUb63bGuqlVR^HT-70 z@9@B0-_Ag9OqCNPUaR(*xxnyQ%Tc0R0=|=twfKg|i@3{dG(>)Yt&GBMA-x?-W)#yfGM*u zDi`?`69lQ;LIjz7{hXQ;eruEt)gpE-JmAExhp`B#MEm3&wM1*43cK-;6oK7|I9RB4 zc;Pr@NfwdHSIrKq6?iBFDRmT+R!5AhM(BlcRTznF`{IgQGo)nzt^D?qGE4;~AvzMY z2u(rGFA>ToZL20_mv45~v==%Et%W&ovy(w1VibYQTJ5i#mWt_;R-VGNxWAjpLy=@@ zO(=(uh;@mL*eIwL8wMuJG~oI`N#K#3qrY$3qZ$QDhA3l6Xf4#PSosi(3E zBXw5H1VICHE|y{5KxrJ9Vnv+Dq@-Ppvk+7vq^|8q=ngW*N}H12l>u1|iu`4=)Nh%?FW6F9@MxGu(j!)rGL*vus@k=en{H3gJHpjl-J zAKcuy>)+1zaS;u7W^VAek9C0ikYCp|vyMANdk5Ia-(ER?ob4SfUFu^x{8Y~o>aWqn zdrUke853#5kfAi9^wkF>1`wElGARbZL5oqxQVOFDBN>IaRVs`HuNjq&4%PO<(;1Ho{tFR=9m1-t3 zT0v4FQc5U2#DS7%#@3M}TA%`9Rpb~pwnk7UAX;kRs@kbz!ATTrRpe8N8<~=cvSSqw zxgkx8GZHLhN&(`kLn4uQAnZ1h$f`skgW2q-N(Bb(Fh-LFLIa*4VMYLqz+5H`y2}ti zs22ntV^B{rNsW|5dK0m@6`bmlfw~%lXUm#v31wnR6c%{_#wPDfC~0K^@)|%mni8Zc zn=P#bJ_=cy5C{NTi8jMR;#mX`6#?bZ7RWHh6~Z73B?%6}5h0OVW&s5fQkc@BRH&F% z0EP$wTte3}#^S-b#Kt01M=a0-CnZiOs=Sm^lsh=>U<`$-NG_m(TR=|O$>E821XDl| zNX<6k$_zcJBdyYyp(1pu1kwX2M?wjMvAA7iB^pw)+e$E+qXaO8NSH=9Y995m$yf^_ zjDQdjExdQYWOczDf}wOkiXxdpYd}O&W$i4I#VwOB3`cYvLKRVu$2h$4w9&L~A#a?E zGExZ-WpMLGJ9+)){Vl%4OX9-uSAXAq{Q4hUVZ9#`-(jQEuiw+odsN*}av!s{KW*vv z(>=W988;ggt#RkZ`|^aU8)P=H#4`kaJ~AGUcu0n3c(1l6ZgwChBE&+*@vSo83c2oL ztJ<}Vvs-q|-@_NVZAlz3`6)f;hD=@-}M)2=^%PQPhuG{XJt-GVCZJ|G@&m0xZaE0n1nep;quH>;;=FmrX zwPJ7lB&d!P_QQ_*O_c667nk2&VtYIr&3$#I_2d>WVsPXFMu8=_G(w-BXx0l+VyR}} zfo=jKL%uQv5GsiTb=*oaRlz2jh6-eEP-&SRy@&4{C=1l?7&9;__rg@(#v;L_8AOIZ zyoA#=Ct}Ey@xOxVRp$Y1qbj7bhV3Kr(vJ%~yNAXcM}B4|6s@p$pRPs!00Z-^`J@sR%0^3uV!jlMIky|O=kxbKtV45A+alwJD#vB=k&SM=V%TP0UKoH!n1uGpcQ)^1 z@2HQQmEFP0-rY`zdOmj*E6E@cHa4F!UpSU9;sTID2nb-gZ$cpQJQ2h^C`501CEets znF47c2V__g{1~Z)>O7Sa9i>CYySt<$D`H~Wa6*6=D?nq+FeC<6K+AxT8(9z-6!!yj z16>6&0W4g=q2U4~gwwRcgLb~Cgoc0`p(aM$G&v&^U|>iPD&nF*mUCHK2xK8hng)S} zYDWkNx(SE`AS{wF&mt0LrlJRfa!?d4Fz7O749z6gcFp-Qf`ug@z1$zChW&vO29Y9H zBL++|$c8XcAeoBu5MbM);LHHr9I_Z(5^PgD2x)56QV`e=s_i`zkRnMSHkBC&nYywO zEGP<)I5|5`Yi*VzK;UNuPUqQ@Ct)OwCuw34Ylss}W~oGk%0P%MWX~|l zLug4i+pvftA$iIe0?QDn5r0=&lC3az46szCdA~DB>H-#Z>yh*^y~V`>+AgG_3`>8>(2Yc;xwf? z_#?NkU$%4CT<2YU=UsbeS|gu2uTJ~D@g*?#u=H8qUj5gXI{ove%X}>Y^@SAQ5Vf!fV zeY4~Eu73I3jYpG9Qbzu+L_uU!bJ{M1J@teQfS%H_jMO_3c*}GeLQ?rzn)bp4jCFW^~=u)KvT8i3AUHMhZ&8!`r|(6|Io> zc+pAyMnyF{Ng}rT6yn8>wg*TY1DAnwj7Hd^SI}3awHpr z%+NrJRth0N?k8Mn`}V~!O9f?l z*lpb7jP6A-a4?yXB(2s*;Dm@$I06cC6N*IK8evstK%^&TF&|0LD=f-(ZhsJx6eO+N zieOQTCJbJt1AIUxY5;Q?8xRRP78H`FZuP8~6H-kgPz}Ee8L?1A-7OFXN`m{~5M&Yp z2y|+D+cQ1l>Q)5KKupdHN!0M1o@NcMq6Q)w1tLW; z7u*O$OamY+61+2xA`JEDjHS&C#1+L(uw5EsI3=@0MJXc%-r38H9{7fUVMJ0?0*NqW zNdkd~2o0OE1d@gu60~5`9+Gl85h4Vupc99aazsD`8fiulEZz?@CeRFl$gq{)5fFfa z*g|MtFy#%YICWMH;b;~S5DPK7Z{-j|5f+d!Wht^yw3``9r;jT!_* z#S(3q@$-rb6{+_G6SyGhS?9gDiiN=HQfe95N zCnJl>l}Rk3!?m{^Jbn54PoPh4p7;!dK?++pEu&t1PAbIH5etw4030NOPUJ)YPf8_tNA#^RrP9S9(${ny*{6RugvE)JL>#mkT^68@6BFy*S2-n z)6#h3KhNLeAl}N0=d}Uj>EAzpzkP2#{=VFEIsNfodscPV&!^$vTaLGp*S=hJeZCL2 zb*zf6?RW*7)zWVWeD9y8T+ce4-L1N-oFXCxsaXP}*;anvNhkX3AQw9G{pkE#Gh8Q= z-{v!Yy|-T!BeiOmY@b0zCZWK&c5c*<(pjJjuQ{pHH{jRV{y+*Bz$%ykeqS z_DkoypG;sGn{~@T%VcU8!1L@iF4kb5L%Rg^)rru*pTidib*rT(4=5hmdVr*LM#i206mO}zQUDl4leuv zw@f6EQREZdjUZI3p)iXA#)Sl1#-0sJixeUtnISfUF7PH3S%!qJCU8lV^K+WEK_dv5 zERbA~735UJ5Il^JLU4exiLp|lq)p?eX?0XB1Q&8-423ipWQ0wQLTGYLp+-i6FA~y1 zUS}HClWyL}LbbL?;!#NHfhaHu3^lmryhWDGBSUcEWj@%t@yu}|T(>=NZRX+@-UEqb z@re>hF(;KL5`dPWRq$)W!c{WZIM+YxJi<11O|Jv5@HyuB%0FW1SAxkb{I!&?4>e`5)m!3 z%*lk;3>8Y35Co6~6a#d*c~*S@ED|EX*78Y2r-{-M*E-0TSwyA{-~y$1FC)n`6pSF0 zNEE1-+rP^{Z0oK5uD?0sudcI1_x6+CH88})?^*Bg_P@lR5m~=~1W$iw&T;#-M1@R2 z^~js{`_$@*@qZZ}e#jg*?_ZpSm_s^RFM0ty>*&G;m28g#X{HqzL55+l4WPiAW#o9U z_KJq|`QM)v%y4zbU3t$CamR0X&yL@L^RuoqaKCQcr(0t#nbwY~@qLcny|%%G8Y$aT zN_;A9n3EitEB&~gq4ocojhW*r=ia&hZ%ja>TuAa)HR& zK~xz{x0FQ?7zc_%jbuGQ1i&CLTPNatQLYp$14I~2R>6%H(43DnV7vsXdxi@l1SUXI z+K`k1MK7R2$95ua2wbwQ-Ww&JBmLDOm9Yqd)keq@YWGfWLzA!KJ;t;zwoH!@4)hMM zy7|aU3e@nZh$6bQckLK_X=XcIp~39?XKA1{@7gD4nEK&xU&KgmVgmxZBfbys?J4t9 zzU5Z(X$2>8?j6y>P9k42eL8Mbv#&qTZ`;0oJbXnG6TBjhbkWLiCAF382C@k7^2P4X z#m3t{GmWu6br8C@U8Bs@_qJz`Gk*U0A5U-0OlHZIYUuAV$_~WtGk1Nv!%R^U)J~ed z5eURdHKYKvjToeS;>xc!$PCD^F*3coE$o!Zgc79x1Vp@ z1`v2fH&RVCE)p@V$mwAr)NUscyPeEM>_$>XeoXo-YHe9I1=oAyc~{44_-3w8Y?2`c zm}<8jwye(Q64i&p1E__LMNW;tL^9ys+N! zs3?Oew-Zt`=qsqrJ|%MiaA4UPrxRVfwy&_ z8L6mvmyY=9s{~k^0#!icarDEPK{Duz5IoD2{j#e^U|Pa1NlMkp4&$$X=M5oB8Rj`4 zDnblP4w`ufm?|PFHdF0IUupI^hP9f$RY?6u+&tBIl7{Kpzts_?gdZVGbJ7p(f5H`vzlck$yr zn*QJM^*0ute)`EYbK{f5!-j!xQ&J&7?WBmP#FUg6m?kvnC+E;z9e+Om07EpfA3AdK ze7k4P^PbE6zg~8C({CPE>MY;(J{XPjvCNxo2-fS4{{TxH?xSN;@@?%~pPbRYc=%(#50miE@A}RXKz9QYkw{27=*bjTsew}x$pmqo3+?pf9%tB# zk}5}>hi+Yd`k_DB=Gyc0^qLB&Rj;TIad zn>lv`)OYXdoRUQM5MX&CqvXVKihJ{=ot}4_Vkl6hB!Sqz-Y>Ik%eH&48Bz~?qu-d_ zOYYXAHgk{N$e*%)NEdc*k9J z=QV=|j3PYX{c?D6Ozy!a&s~1`@|=4zdCPHKb^hbnWZzwO$$oKp&#ZN+zp=U36#N*Hh60AorYKu2RE{hisD#zplExo1+$TWalSjGd*+XJUZ+8?~u;q z>yEs6tG;on0I7(keZ0QkXuuAkDLJkYxjv&_G2aufulMYCoSrIY^ZfYp+A~5pXPz?4 z8vbH>_SQ{enK?cB>*FRePn?{d*uAoHjDGn!KU^Fy5;OCgZ?3-fd*h2?84B+1i} z&Tm)OU!0lFZw|Wawm27l`nr#uZ|0<9j>pz5`EE35tc;JRU!P6odysY4#O3;aJuf%y z=vH6HufL>yGkNdpTmJx`W(*#c#k6|*esSRG_sMwsC9y0N3R>fMC&qfyS#C z0yE`|;7W0q1+H=wIn9?B*Pp%_f;jXqcO-1qA8fvJoH5PgCVORP9*2&)>shJI*`JS2 zcZB@sj=JlN-@Z3o{)z3Z*0Sd&GJ5N&%jbA@$@OjY{O8g!)@wJc=JC|w=Xg0jzH-co z_P{=Knc(ZMzdxx}_19a+?T_2ivwoZO=hJyUpNw;yuSX;PA!Wu;5bp2k{Ngti^N9p& z?8VqI*T>%Rb~^Z+7qQovzz7rP`f%k*$56ws867Xb5S2bZ+%~1|GqN3g<6Ez`MDtir zf365-vBUzL+z|7uLKQxb&wqUO*XX~T)^*qShubGO>#n{t@so~m<29PYUNd+SXI*vn z!+FMQ)6PTjjLt`#{AK4|b^K=@Jvqa+b=OWVb69KB^Nbk>9~rK?>&{+`yw(`x)@V=h z{_A@Q{X}GQ-#;0@U&an|mAsFxbDVnqeL2o&KOgX@66-q)(vE)_LniyS{{UDkqV?am zwBq-Uy0Ja7!q>}ySQGyM7MwpBBLzL5=Qeq37f_pqa3upKaSqm z1ib6_^oaCcJvBa(=Z-xtBPYLn^Tul@^XWP7ys3#wFy zwr|@e3^Gk)-v<0<{jjfpPI7zZx107ec+5BaO-&{zb*Ab#if`S;3uveI0XOA&|EgTGv4 z?DsRrq(--&k4SwX*QEE}c+bvMR(ti=UN2d`y82{&bK5=f&Februj3o_{Q6!x^Xata zyWsZ8=PMaEmB**P8uRJzte*a#wgzt^<0uE~**$gFyUs-8m8_iI=i}4cD?b=#K8{K2 zKdsjRyhT8k!PkrycJ}`O(LGrx4X5sT@892KYOxbop}cq=BkVnKl#*EI<2?HK&u>T1 zrQshr&NCh}@j2IBbAy!U-zW2)**=DA54Kiy*I%5jy6Ur!T{o0<(d)Mg-g{)%oR>A6 zdC$gi*I(vV8MSxozA0a*hj|E^4!Yh$o7Q_cU+DMEViwh`tJ@uBJk)Ga$6@#8KZ!A4%%E#03`W;7Ie|Z&H_19mF z=hwlIdO5s|DseZ6CAw!a4WycK$nO9sd9iXUXcV-}G3}32{)sXlnj@aQE{WQ->n(ief>_2{MGW z=l1>aE*%|y{qX~267=66)M9pFNz11-UMB^R5vbqCr=Bt=J^d%s&VDm__|H9mp0(-4 zdTY1osKKtf>T*7wo-ov8WoEK+@xYvkvw41VoAuQgPn?KN>-he9pVVX~@Tu4P*0J4Z z9=&}YIEW!?a-VD_FYJGK z{qa&*etw+cgy?nGI965I{qYG3Fn;gOcnt7ozIn<04}a0+$9;9zj1R6(duFp)d48Pv z>#b(;Gv6XJPP2a5+ctV@3hS=E?yJ*m@sl_^WA?@L*Ijk@@soKxEJ$Q}t z=i>#_u8dCj^_=^9bI<6U-t%6JZ_)n%h`3~y2q5}Hfii>cxQ9-IjePUzcBH0rQjA5l z^wjyrlu(E@`Teq1()iBZ1VX9wUqpgBellPq>-S~I!7R?wel>>grx)MdFMBk z*Ij(&`cFAn`X2c)gX-R}2HME$WOe>=uOxkYJk#&{zs@I7saP?Es8m8?*`Xp*;@yc9 zRuR3U9QKyOPMxXN=8%N7RVp21p&Z8&HX~aoOOs*Cti_sbcCgLw_4)q%wTHvQYxl1E zx}Mkb`Mj^Y?@Y$vi8*wj;4%CO*wo_oE@Nho9`|%_i5ttJzujyEzsLJa5cKw}8wwq) zhP?9WWi?Uo{NYRT0m8@eQB0bWlI)$~QvFF~8kf+3PVAZ-4wU$d5Hg=VTRy*2wAEm;Q2jJ=8ZgZ*`;#IjjoX2=))WcScER&hDtB~O>~ijFuc;OfI^H+Z;eLGE7GpUk);u9WJgqo& z>QItPzw9$|{BB-w1U@p44~-S}VeMV4lzm_r9)fs{X0D&|-$I?g&TTgG%fkPvzs(bA zUYb@kCRzJi)3A-usm}6fg`?U`+O`) zguj}Xzon-eaf$J57d|9NUA}prTe{T-cTwT>G+_1{f4VJb?Jb<_=`U2VLUIU1*GExc z*1}!@4u;u=M^O*-`K5P(92F_tQetvYJ=ywbdHr-O+1i@?PqUB|i3NUDE(wD$<4PlD zOh!C~G@CT8^|_45y)jZ{n%g8^a%iW0#nFGJSYxFT zMIcPID_zGW^uZ*t3uc(lQ#?xH$tZ3Ho8g@NvD0uuH!mWt2R}44#RZ9>(Xo(mDvL%Y z=}`AL2k;EC_o74V%#<@Gr^IVpat7-EtFU>)-{5%oX9MFxEGfO^pvYB?qz}8Vn_Q*m z^4EV3Ch-?sTXFWDM*YX~j{D?wmj}@=G(!8X9NlDXm>er|pg-1d)q|edws3Ar{(Wjv~ zy#P?^+gnN9TZPjMrtsoD$ig+9%E7f(oIKpqcT3XsB zny(X=l0~C-n0>96VA9oMU`oW`RdR;R*^3sy_yQE)|K=2(1vhYyh9`RA z?iUL%r;E*6uUwHO0AnsW;K;wy-wQbVfYQQB+4%I0c(#9uc>Zi#cf|ZHH;LBR^y%mo z&)oYMn0vF3jQ6%p%a)y2CUp%5pA;4~06OO4)8_MMB_8^VNU$>2dH! zD*3$Euo)AYK%PCJ(m|q~*?$XWmkJ4iMCOLwZWbrORJ!8XJYj;TUN}YiJE} z)E_hA3S{JdIWGbPWqocuw2EJzceam*6yix2q)R? zLWWe&g|zC>(cEWZg0Q!^vk!%PFg@%lY5XN4)5soqAjTn7n0Qe~oL3npw#nczcA0~< zw^-NC<%EU7Z+R9CqCl)CcH=yijJBWa7<`FAzbogRq7M|`)2mXZ+h~~lW9`b#wai!{ zP1=*ls(GxqF)Wc4PzLj6OyWYv#1VLqwiA{rSgL7NmhyX0I2vXTN=^|xts-M$DM>P+ zr=$ivNEys8R*B84(HTjRIYmmj1ebZK9=ITqzZt932V!&ylAOq-L6@y5yifugo}tID z@C!CS%oA7LQ1D>?4FMpE@hp#0Go8@Oba^GQMIIwm35;UKvtz1pa`Z1qYrV?o#>F2@ zd?W^=n8Cn-7QT~ndA%Mjh9iO*5h?VCQ(U076G-Jr64_niVO^9LH9$%AF>k^pFZj~6 zj#5wi?KXR~De1O5Qg&3F>vnkK{efVrH6GNeKY%{CoK^Gl{bbwasfO{l59$^ves~T> z{+Y0P-GB8b?_1oPC}<6jTpEF_*;ctZap3G%8*HgT{b{$fyc9^=wvV~YAmpcdZ5AZ&TF0WxdYAZJTyUIcwy)H%c_Ve=rWf zK;fkFbPn*?@Cr$pK8l!TILUsk(#OJG$C*Libn0HY)2S}qQ60BwR~wgu9COF@)AhR5 zn%1qSk-*+E7>1WvWtECkj2#1_juM&HyJ^_+M}gz=X~xAhPwrWkWmmyG`)VHzZw{u^ z_mwB^?kIPjNa)%dU&%C+Z!qjqSY(8(|2HC4%|IY`|N7MOMdgN#GIm>w$+2E4RC&E& zvJypb=SP;(Kw`39mnOCj6!Tb+bfI(490*wqEbTZsB*8<6ts*ES<2o<74tOh|n3`hO zvL#X^OFZIxXVaM(6Z=;AOSeVDMerq~jU(PtpZ6^j!S|j|gAYXwoLSY1#^yc^pdavu zHU1KZv+jN!{Wxz!-H1$x+m`hyTZ*TUs^0+uFpoMhIl4>g*W_{A^lVOsF%g@lgdsrO zQZSXO`zAR|N#sH>KmiB6LTJ5=qec$tKv%|590iMj#HG^}5=^Yn z(fnk`AQ&Yt;+2BknW4{6#eIe)g0dJXLCuXv2%)iJXP`X^1(1gq#XCh!+Ouko^3BvZ zL$PzAe_G#bnJDiRlk6bZe;&B5EW27dMLFyJE%nc_bGiHbiE$r=17vQHN!1;BBYu zH=J>Rwa(9)C^G4`JAC*qv3`8o^SgBNV*P7&|8NtI*B_~0S9kgl3upBHVr>o6-g}0p z5S$x$Nb6s%QwZBPq(i!-8IuG-Z=q67aZ4i5vs5E)Kwy_be}PyfI{RL}it-_oj1&AF zMBT&PcK0Wc7Xh%@utM|@X2gV2ai$NmDKrgrTl?)_JY>{A*$xFXE@Q%H>g*xrz9;wZ z>)bNe+HDxz9-3>uVA<#N?lTLQ?gsM}!5?^D*YCp)1rPlBx6SV?iTa|17QbcnZHe@U z&xr=T(UwiMAiz0habFa-3<$^x>3TOHN%Wz07aC!W z&c=nh=yU(J>vWMJ>D-IIlCBY^lvmuBTf!O}@Q;ROvq9i4pC+INH6FQq%m5#=rnzJG z-$-i0lW^G2=T<4+p1;-G$XavM$u2mP80|kcfH^df@Y7hnXguC0x5K- zIoTMTjD4pxZr_7_H)GNYJ3#+eDHxmT0+61hl|sRqQX`WS)^PE`UJw^hNiV@H*?A|v zRV;)}qIK?G$81tqB~)Vl)Kr%U`E-B5Lh8a!nP%`sBy{H$|Xlmab#MfZa z78XM%aA_x7ECx&!aE`^#^}+D7l> z&2O@*UAWPLz8}||8Ud!FSkrzgO08Qd_^>bPKt5I_oSKqfTiEW6gFyE%X)6GFwp*<0 z+wZ{M{rB|njLCIbS!N$1WYR`RF_L4&R&BuHI&wMcc8d}TRP=F4*J%_0Ic#E^(tyC! zaUm?Sx{VPpXGR(}V={J}^TA%$keGX-7*%x4^c;Bjx{VfZarn6?o65@4^cvcWyRRSa zD8Wsuzwz!JkDh(RcWPufZQ$qH9i!d%V5J|}s`BBSEn8D;!BA|}0|Wwzuet#dDK(a`Ezy?p)zCP0ic&Y1j* zHs#2Vowz$4?#r1DJofNIA-W@^j+c*q-yD5$S0?eP^?9Q28Ux3P&;0i|57~SJ4O?vv zdIg9DEhnO9O!)36kWU^Y;QuZs#1aVcTt~D};87;ehtSLLBZN8yuy#vP6jwQwFk%2H zq0(MXTzUOq9I`}FwlqAn1_o(`@{kSk{?>cD)1(5VozK;c2dTE=$bjr7T#8cbcvrEk zo55|cz{m5U4F!Cf05Xb5c)MT;`sIbyV}qp{d+pQI`)V+J;54?^kkTXCu&d>0JW^JK z|2SjvUHs)X2NA~bi`=AmHbV#Zi+>3 z;bp#5WP{A07@Jgi_WbJ0w-0FLJs;a~+iG>oU+VKXe_vjxfp043rhUzs%|%8svMTMC zrj?h}fVb~uAD6$YQcI}aTtn83$&G2S2VAx1`w|;s`C=tG| zK(#mMZyyLd#EvJMgbv&6N6{p#^>23-lQn)3|1S4d|qy|g` z0|M=>AT*ActS(|1&0v^}Xvvk!CjkZ3tc9QX2iomgmI6Y-x=$ssZ@jm2$T zO8rRXS_3dn3+`4{`?qSEu9ugteuAvAxvc*0ogej$CI((CyFuXf%J~|amv4IWcsYQs zljj`$eN^o2j?^f~(LY7uu^tpR6e*yC%X%gzQ*|gN&Rt+Fgw>1<#^G|9zOjtwBCIPx zY{g1*3MP=hW#sG9s9_tV<+WUxm|@)3sNmZ&O2%|a571&pi4Fm0P!G+Rboc>8rl0Th z83>qsMrYAW3UYJqW_GG-c*yGzIV=SXRA}S1dVncjspAIK>j3x#oW%R_^<3MTvP+do zTucwaQ`&$7y2k(rYeO*sC*j@RMttXnNv@4VtOLkN=e;sa4`Vn@r;R+*hnHB5{)Xt z#`7uD25U_V>uF)zIc7Su3TMoXHa=``Wmd*i$*&iG#JcoVrYo(cq_k>VHA!zZo>ff(U;`wLb(*4c`Aq=aa+l-eQIf zQ<4xgX9i?01I0uz4;iPpKEP)O=oGj3LljKxum6}Q8LWSkaGfwbQRPP7EYxrE7Z zHS*l(`sQS$Hf_eF3($OoWE#~U2lJ3L_R~1Ls70}VT13M z)`9@!%k=Yq3NHkK=I^=k(X9!8m@s1^M#qB6-U1?lJV*8@#SopSivwt4XtbP!p=ia> zj0*#DX_+F2Wj^*69FWB}DZ{^8(qg(M8jAnDzaa;`pw`$Ph6P$m-8yl2+u zbivPBq<-ia13+0i)zHB16Kpr^GVbMrf^r5uf&B32P+Huq_KzgPL!ehB^>BBoMu4{f zvVGc!hj`V&D$iCXC&xM=;F)Ao|DL1#)!SSjDE#K1B44N9<^=Xmi!?2DCyve%^M(s% zOzz?z(=-S$nfDAwjTd`TezdEow9@JXuMQ2D6X&H=cXIGZ@Pp_&SWN-nWdjx@v`TOQ zyIuZxQn-eUj{T= zT}XLutRgc(>`bQAPm9FWC<(*~G@h56+Q}NMoc^U|Z*3}UjfQ8n>9~?@R~Ee~T=#R? z=bZmc2W@zB@52>wpt>|JLodru0Apj9EeWqJJ7BDR~qJtY}l z=mMzAD=Mt>vPXbdid?r~KXcHb)0O)kZu|&gbf4IC)d|=q%(ySfIIVa+7k(>=i2kJ) z3wd%~0tL1i29UX&>%vAOyp9gOAA+LOK}V~K+r12{B(4Qx2~NEN zJ40X-DoZ&C;g(k8u&^3Z!m0N5WRSF+ezx*(u7T>~4R47QL;2a1zx3(;5LTS_Qw1IPQLm5P5$qA68pKNb8SQao3@_YIAGbXc>RK;x7 zqIP>{rA8SgwuvT&r*oV^ce$JZ))QN=1SRi2Mf&8j zgUJh472J^$?#C_#xzCjD;Z3tTlBCa0T@pMPowT-5b21@YC0{FL^HUgg+lf`asK%i8*rwb8~@v$`J zAR-LO6)V?bFp|rf=Ty(Kp;L*8> zB)!*+Ny#cIDHu*AQ-i@dIYfn`fDz1k#vK!Tkd1{pk-;r0%p)&9&#P4^=t+(cad2+- z-O6wZ!|HhS!EAk$t5wEz@|+oy%lN<uTw{ya1_(P)QQd3=|e?0Mf5P89_mTotz&YrTW@_I$C>l>kJFcO29M8JzW z4fDe&?xDO0v^=cJ3rIM?wC>5|WK@`2Ur>-uV``C-K+bb?c3`vFVkalZ$v8{sXnx); zCnef=eT|dJKnyVY^aDt!^xGq`ne-NUi|r}(Ql<|uYYo^fm`r<#RP4~KJi)Q&B=DW2 z5@rahxWoDX>=BSKaqppw>1dJ8LF^z@aRPF!Z0!5-b7bS&GFRM8v%*Zg2^x|9J7e

      zU}&Udw^Ds98H>Qh`)88a(nSZrC&0R-Ai_WJwH2Mjr`JiaM!Oa{#ftWeJ>E`Y0#3MWO;--6eSrY+WoV%&fMEmLC1IAD+ zNSN+?`cN;;vZ?FQ=hFc<{{Z)EJ=kQm^TekvySVA6+b*cw6Y+e!w6*uPC0Uo0!DWU< zq-e^B{I00}K7YV`WBwFmnhA2x&(FW#w1MCyL? zuN7$lwN4V^?7R2l+V(e!e3RSvuRh^*s_qpO2_qcsK-dn3&B+u@k4_&4Dm@q9HaxyR^0kCZhZz20QYTMG9&(a|-WXeGT zS=8iyQ0aBce~yj;OEJdCNWRMf?Z^3u_Kn)nYa+X{UhQxnXIrgIDvMo7{*1gxKY?{w zd7x~aNInuD02V3?xk}) znnttweDHc%IF9geJArObE)BD26uV|8%t}77RdjYe$ay?l+rFu}7@~*gpJ}$Z(Vo{%ny;E_fbH zC>UGbt~(8EEXP@WmC62mBLVkNNiy7p+0TYKtvNo7=7NU0-q@2tAJ5)zi|tk}Wv(XF zk_!kR*T8e-ZnLg??ft1^&6uoB-*WbEre^$0R|KG~Sw&Esqb8sjUNDJ&o4lel&nG_7w zp#fM#!#LlS>N|M0feGn|Ln&$kU@$K`` zXJitPh-9}TGo&xsbxd<&gLsi}M+Q7Y*A)Q6xz4>>2<6o3FU68~daSb8eqR9BbrL^k zU3dKx9D%yMiW`Ba+->+zHs&Pcu0rxc3^lozUrEaoPnFYy{Q_A?hI~z5s*f>MArRhS z!%+aFh$yXzNYJ(YOqos_*8m`2F#lcL`dwuV%J6Rq zX!9TUq>F&2=6mpv)k}kIQdI5had?yQ2&SoGVU8iJAPdyeaWhUK+oxt#NFePAudR`ZpNheWcc@4 zJi?sAQ${>!^NdNV{5A?xPF36p*t8Wirp0Z8g z%Wj(j-7BmP*Z&lw`YLkfavAS!($s>n)3JCILFh1Do9AN*kU>=+?S+~`)xW}RkTa#rLSRI(6|Ft%1Sx(c3I|V1e z%z0r1h2dRh`s~#S8&ioLgll1Dj!`xK{Kcz@^}?-iCwUeDIMG=0iwm&v*AccaJG)YN zk^R^z(m`y!(d}qDD*^=7O~+;edd@X>O_z$N%~7&xATE*{>3M51WMB#1tWPz4jwonh zUFSZasZ4V`ZKDk3m;GMU0`a-DX_wfmY>uaF3>s~4M?&~tIss8CVI83liI}vXhX=)U zR?uh&tHoD^4(KV=&1b+Az)J|Lv*vs)vF;-ZVas&6uffMaV=*co2C@ik%Q;lazqJmI z?7qe}kGfI@SL@GoIM&iBYg;$dRurdjRv)bL7>+uJK#D$zGl$^_k}fbBBJ|9I(}MvV z?}7nR7f(&Gn*_Ki-H8;QmRJe^4A*2kU0(vEss8tNc@cdO_+JVM7qDk;;e^_x@Ctzq z+O&QZu>1Uo^=kG|-@#2{g(1(7pt9Paa-U}OdD!z#GLe@k4a2FK7r5o6tMZns<88_rFJju$p4K>lOZLMb;9qOvs?0+fIdrw!$^x|6E?Ii<8`0 zR)%k@AjR5^nT@)v$Cdt}VnE9+9T~J3>s;~(Dazqt;m5cIFagXU-)JkS(bG8zXqH+z zf?XVlTBU*&fq$rGKL4f1V=o$f4@qsf7QAWPgaVg|8B81Qsv9S3+dY`@9J3Jg zsKF5ldMj4wnon6eEmbF?6B`9D=DsuwzlEbkphw(*fZUt*V&x4ND563$)lOt4-*UZu zEp|QDv!+J&)vyG{)yQ~?2T_1rG1ZRpgXim@x*)U|K=KJ53SMLspr+W20*23sl<`dd zqJGLQsg?^#-@eqAim1`*Mk1cbcwPSQqP9>nq+wIaR7DP1hjR}@fan;YVU z&3W1aTy690_Zz0M10g$h;J>cCP-Gwxx!@mxpCOL3^XcjVTAaT?0R%r{R8h>eeViAD ze?nF(r}|dC&6qus3L9qe|xH|qW`jR0x;bj$V+GJemV z3izkkzqXil0a%8W%uJN5IQe$D`jho6s;Tc+$c)l~pstRYpuclxU*0+30 z-SyT}>OK$FtRD`X?`1O1<1cL4`E=#I8xv@`Zr$hF)I0KK|vtC zU9wL4c61VkZS?Ajr6itf^I&=cRP}~6)UVsw_dBqHpr#LZvG|HdDSaOb^7uVy-7bJ6 z0XTo>Fy}Hr33kQN{QA4= z19-yzn`lws&8|r9?qh2|E&?tSkeRK^`a6M$Kn!955?Zf?w1e=`6REI6XgvPuM~9D! zE5|N7#C^DsE)Q?IZHtYw-*nSOnqR%x>4&04#(F>0Bh70OOzAGSZCqH?@AuQ6E>CH) zJorQ&nZ8vGEWSy4x0S-~m+?6zbw}N6V z&%q56tK?&vb~vh;s0ig-Q^EPVsC6fx;v7}dh12RJ=Z&+8VKQdG@Ei?}H~!n?ul-bd z%Yye7AVaKg%&iFp5o9%DjGO2(9Ne{U)+_KVqQ9dtpHq8x}+xAUfRW7q7722N0z5 z9~ZpmR;Y}sg2j8+5bI^+*d}>tPiTwZ|nH#aMVfYZ@}kdO&&l{JaUN#J0)pe(t4^=@v$j zeDH9){T?Kky#KP$)XZf*@q$rC_-E0rYweReY#tLeiw>-P;JM*OyJzqU=GqS5!~Z_N z2);(Nw?zc0gce4s4LFnQ3{XDYdV!v z)P#z>RmFOykN^i33}VYGr=&Dml;dCGV{$lN;-B|NSA+tKg#)78cvJ~SP;FBJFhY<@M>7#~5djep>B2Ot}T)x=)@a}Ly zNRZ`y(0Qrmp{BNNli-bY1~ImrhHP5c9f`1nUGmH?52_atT@U2uhtGeh-NIw%g=sqo zBtkjrgoev4aST86KNW5jiA?$$vbj)zKhNCyjInp~_t2*0kF6t{Vhas!>5Rb*a{{!f07+{!)eANmIK@NCj(Y)C z;v z)K%Saaj!Gg-Xr*?WHJj$mhc{J7_6Q2HHkKAqkJRtJ>)WDfPd8qqh` zo9po8pD{BgfjY~^)63J5HYo-jc}V3zeBkHe*W zn`%v5G3le%)d1_Q28}@k&? z+*-Z&_Nr?kPOga)EVD&c8#mkEHaaaTD_F(lt#~4uF{#$DGdat1ih%B^L;9Kv#0!PY z1(r%A3JOlxLogy}dkqTmUlmVI`I%xktCnin&07*ymM&lKVMx*E=SJNff6s#@w+bT; zt`(@n(ow6W7J^Yb!R@^9gPR7X6wTd1uiQTH>Kdot4F*4Ojrjou{8kUrb%mI)Z@*P+ z0o7|u8seV}VTT1#<|+7^wD~i=v?p9n!P=Z&4hQJCogWM7zJF#+{xSUBAM*5x)_Tc7 zxGkMZ03UVW!HlDucigyN2O=$~K+JVbuYMAKA24}}dT%^2f0P2T+P7}kI9|pek+jNDFa%Q9yQ?5fnlrUzhjCxFlcmDZh{lg zbuxYP$ecJQCj!_edSF-_2EOHjjSgyro^c1tBz8mhHJE_HK%@m2y^3V7^2XWoEKGr< z2upH*^aki5pdv}(F3rz4HX%gSXG|;ah7V+QNX zUUH&#q<<^}g*BXWRYl9^?>U>|Y76OaLLL5+l4=rHoPm^jC)e7}dv`eAe0Y z?sUut3B6nFvMt#@Ez-eabd%gut|2d6yI7|&q7Qu?o@b3V!u7WQ%FVi%`N8&KL`KYn0SL~oqkn3G+JI6;^0#<_Bmy{ zum9u0#pjOYi8B;t4bjU0l+yjjcXq`seELbANc8tjXI z+l#7xU{XhiZvQ8mW36ftXx`cFU5ZW}iPH)X5}s8CpBWErZTU3umc812Tpx~3TbP)= z*-)$17%D;q5lx&%VO zY@L5;Q&lGgAOO;qr$cq2#-K)+LLt!_Ty@q6fWnMK`2AH-3H|V^+)~f6SQz#%t}rcb zzRp-N|Kb_JXBBh5`x2EtoQ^C^EcTg;;$u?apX}ImLoTN#yVs6vc5s?VMIU#riyl33 zdM?s3Htnaz+Z}S*$6j!h(P-&SE5ssZN+jta# z>_Q1{4}ca1wx;gy{*hLVPg*wjA7PZ?1BRPtb?3X8BiF_9&&eB`e%O}Z(ALVl2N(Y9 z^38tm?zRj3+3yO z4QRvrV;v3~Np}P%i9LJS@m%@H!K_~|8%1+&*)AK?7G`0KpWIr)u+6xKef#lo4v#bn zm9A0mO7=^@lWG{#nHBU)I^Ys+`lzY5g4l$@4Q7rd321WONdx@HjL9c`Mo*%N1*6{Lwf4i=NqYWiMaL|7OIe87TD)zT;>k(DmLk zB(Dbyst%S#7ZN+W=|XEvY%0xGiy(D#&;YGL(E#cRy})SU(3YGWWl#PVjU@C{7Im^e zZ5@`%Y~lBw=P#{L8>3y&odeI)w56ByuUcb9K3`7h9(LI85Va!ff-*2*7v=X3{m`l# zx#y!;Cd_jC&&%!}j#(OL46_)lCET35+hbHUoqWHjXj%LVE`81vB`WQCc)ftSJVN4W z;dL+HbNbMNo<^RD>kH81XS+xOmNH?P^^vcsxSvmJ@A)JU7@*cV7NuUoVt|seW8Ro) zp~h#b-WiijI$=sR`hhY?CH3I6Y335_PF)&8xJYT1)=UE|cHLuAp+;Gbzl3|D(haZi zTytkLWcPgf@A4IMdx}GxFAOxiada|yo_qSrk(z(yqr-k~@59>r8cOl*oq-}xEaz7h z+=bgxUiT0A*hQ6~^Y+K4g>dqojMBoD&Fithy}2<{pKMA_NX)K(?-qA`@I1KjIeGn} z9Y$M0LPhqn#fEA_^QEka6dCZW<;kVC`we)KhT1#S zxuqqE#J6)7Kr=p_{$pVET->v_kCb}1h9U~uUFm4OX;}a4dEWg!i-vu^2kzPG4}E8M zM>w8()a7c}Zs6{?%_o+&{*Akr2{zr$y9b7;o+r=?m#ww^Z_z{^KW^TI6()IY|Fou! zS~%}?4=nUKtf@Hn&A0O?VQzlK6dY&@3crrmeJr;~SZk|R_=T_CGrrOI=7(F-w-iH$ z3-5pJmLdpQ^kt}bxjNTUmPo4dhmY(F|wYjEH=jtov}|>*rn#Wlvmnml;pc? zCACzd(Cx*>0#1D~C(xsq%M6)Q%)L}^gjwI6yT&M?cn+7{Ni6!0OW#ws8BhZvyoio| z0jIlX7p*4vX6J8uWQ+}MIny_bGq8_kIXCs>5$~f1ccsgEn;QsL3*Sr}cGt>SDf!E; zenu|MzB};4Y+&8i-TBAQybAICT0iPyVQH!ob|O6_R;jLc{F9~|yvF~8TGe3xo}W%_sd30-fb2}HeP$Cf%cw?kq;TLbI z2Q3&<_K-d)HHSpfquu1e^6sX=yoYw7{NN$REmQpNpnKfAIA+1X2JkcO^#3<4T-_z0__-s4^28Q$>YvBQCc&6#2ve<^UT?)%gt#`%Y&3oeIOQr4^WRMem{a_`s9zZCNo-=jwU4`@Q@Z2y8?*dk;VTwc{bx#1i9UZ!vqJ z+T`Z;li(qLitVHRRqv~q;I7Cl^;*Dv0nnK>V^bYKRwg+9j3HxP(wS+@ zDggq1Ghs7!!?La5`sp)=h9A$jae!SrQ&d7c(PpwRNx5qE$e6^S07cFu~jU5eE0vT*k+xO*a^0@NN$TC58 zz{Yi+rn2_jORu48uG#Hb&^zT3{_nRD?t)i;z8zWQwaATpCHrs0;GK!2ELVq9w?}4= z+II$HHkCtpE)lc~8G-T1>mSo6`nZ?IdCi?`%6A!E8Mu0h(mTp;O_$i?UZ_=-q=pA9 ze4U3boIJ%Em$)+m#MS_rQQN8#_t---klZo7@v$z33eGGg!<-hnqJ-vaRqC$ohu!4~ z-%}%7MPm-PMYQiS?clui>%a&U<;@oB#ypzs9lG5f-+18I+)&u9cOmOqmPtn)>7ExO z&mX&7Ftjvnvt7e5(>L|NABuYYix|_Rj_uuQgY5UbjjiwoqCVVp<(^ireDBMh!>=eu za~))hjt)2RN4pGZ16IV6(uhjWrza*43h+G6@yPn$02kNfswhgX>pF9HXPk4`IF)(= zFLSj?G2$|pCBhRN!LOl12wayQ(lJ5WQ&E zZ?_}oBkT1tYYSmYdAH>zTo?1-#r(q&G$|%j zZJ0ZNyl6)Z=}JfJ8rm1@(a%#XXcPzuh+ccEm|no?MnW>AdEIEnupZ9wnALcYPycEw zEt*@FSpWLf$RHvy`(vtRlA7Q=-(=Y%hYg*7rg$+U>&_l}(;q=kPB_>A-!y47xT>FQ zTl5oua_Z>utj_tx@Uu-Zo9eQAUDl7QG+*647Wc2byBxTP`O`MR>g_B>|8yf-hnCJ> z{@9TD8lFQ${!hY0#f!ay;W^rlZov8>Xvj;Vo@j9qL(lHh?GYM3@3|G%8<}?lpf<@u z9-Fx8tr&xaRRU=M@fa}TS_zelrj)VYI8Jsc5|Ak_s~x~Kye6+D(NjX}x=p>RaoBir z#5LR_Oyj$M5D5dg4`RO+7wxZ^VY$_fymf&n+7IWGn@`mj##G?GaXY6b-GXKne$`}& z#~%x;tsjJH#7Fr>Si&bq=TKG!7@gL9nD99h4m`V1+0cdm82T!cOcruW%EU0hFe-ME=4BGdeOAL_ z+|6IZc{?`fa5E+$4YE~!_1e}Glt(EpUhNYjaBn8#mFg9t+MyZ<%DVrb0gDZn_~!6t}dm5}yONL!cH;{>&4N+8QZo-%7t$8L@)ClD^~ zmnI;?Z)8IewbJoBj)dbSHfTL=^pLid{YJ0S4|N;{Isq!4u_}v7rPRabE);~a!p}C# zuR+q`6nAnM%ocpbt5>371MX^f9W@AcLYRJ1xPuuA_?8TI72^duf9sUoI!hp(cS!*~ zw8<4v@o|}Jy3kRQlO8x{ozMgzc~43bGm$(PuI*5o zrK|XY#p)JWju$mhQFJ5`K;j0vYOuo5o<@ot6Cta3)hl|iGbSY2Xw{*3N~5mKqC9#1 zcBbhU0U@)z0r^1$Bj*kiHTJV8jLb37NQkg{x7VXfnlW~qZBts;uYF=KUiBsU9KmY* zF(4N3x}3aQdQq}2DaRCdN2MRmFvQ@nJ6UA|#&-qQ^nM}WV*yMNiD;eF+FJpbj29KR z0QIqHjg%&JvWHLs15%Y!)w+FH^TtDH9&gM3gVt!3zWGWJ;GjA=^zb*G`_H*civY!J zvv6@#L=rF-`v;YK+&0SU`vPHk_37msWHf2;#p{*9Bsf&Y|9+++iZ2>hz`NhxI;jx! z>(+;#UT|*$ac;ldyysovC86{#dFX6jvARXgNjxaDRx2|JzI4DOAuzs-B?uvecuMl$ zv%vE9g^ys}Nqre6u@oW&@a7puD9}-1v2d@6yX1>x0)6Fe`vFDvAP%7F=wY<=vOYg=Y96 zORFmw7{w1{&+S_3bX7y6J#EApEGi}#U#+)8Y3rRlfHLE59 zfW`&#E2ETTdx1-Ny|#^n!4bmqR=b4@9pH720S!{IljCD0KRd|ddNZ-{XpLcGd#%_S zIO`)wmla_lY$2F~j#Dbq|JQn|N&(0Tpc``t-YZJo3D|?cH{!N-#e&9*+tZbEuI5==!uHLkYUJw%;U)vrbg}<01zlzG?LsL6LAzNboDzNr8YzZUCjf>F(x*5p2 zAYI$el4aNCL}s%}<@b@Lwv(pl3~zQPHjW_lQckJF%q=?D-%=~8?NdWc2?Ft$v^!jX zP818IV0fvZ&s{E=7FYZBc`y!aCnm~ZDcxjVgr6@o7G=LZ!tX$5BsTu~dJV^ZLG@(d zxjse1)=qZvQ9h_Wc`}^h&Ph*(MPyh>AqMc8R(C1yR9m`IKV#C_1UQ5W#$;TY=e=n$ z#45uhD2xsm%;}pIOn3za;V-l&sFTBgtx;lhadsu1GQiB9uz&pal~XMb{Jkc2NoCnU zTpi601dv4Yd__q)1D(qHdB=A_L<%#Y8JqIWJh^f$V5Ue8Wd=M-(Vq_4Ap}8Dxl5x( z!EY$A|5wqKhb5VH@hsDtv@%;{a>u1I7cfUK(ae%c(=2 z;>HRzy`D7-=rtexlX8?%8NN02!Af+jss(EY^fs11w`?<31!O^n0Y46ab@Z=U&|?wk zXU_`B_-KG>H$q(AyF|x+Yh!@P&0Hg40wVYRWd4LS&Z@E>v>vg%^d2z5eVGW__puZe zY_ftqr*`&XqGt&DUGE91!kx14@CdX=M@YTJ`cqboYG&a5;=al954yH#{kS(?R;f2j zAEova78D981Er6pl}K`m+mOH-)2qc^laR?hK*H|*MUUP3xrM8NDyA(#yCw|VWn6wOsgyU-x62eq zUHCA{<@o>xL_KO%Y2!cOX6VV1Xj_0vkdYNn>B{^0AC=l69~Ck zU(#<2rW)&0fdxUAh=q~mm(k0`*xHC^II6lF__v(PK-|D1oA{Q?^X_{0=}U?g0`L;E zi5o4YIFwVTT|{r3%{xFA`*#_2MK4Hbt?g1-2Po3x@e6>@ocrklRL{AEqu4#O+7N-u zo*j1TkHW<^0d_80>l$dws}BVYdwq&H z?VThQlhE!^1ItqQf9QZ&ej&^l@MNSbJP?hx;Iy)c;^P4n220_yl!fk2Qsx3yiMGI; zh=$ovh8qfj$KgSS=Pbs9V32Na`SwmuK~fwZ`xg)%y7msxRWZdyvwqOrR6zmeO49#a zx%@f5-9X!#e#Q(#>CM^L`L;Jsyzj(z>HNZ{K@0^yvZj&}r;5w@@eze8dWI)ufjM}? zpM2=EZoc~%-hHAn79(3!S`-<|29m8beRH57J!ObDey>x!?(5Ns7ljIwBG2hj_O?%4FZe@H_oD3`VG=l2fwcMqO41Sw#)L0!|knCnwEj;x@Y%m{t zF-Y!|s6u7oF7&3tK-D4WFpKsVm9&MdQ*&7@Fz5*_#W}V;jhn4@+=uK4=00`@XHZ$9 zF(haT>0~01SP5z)U7mqhO!u_R^6Ku0BkHOY(=9{M18LC?6(}(_HL)H4n$ z26Zfw3_nemHKD*$b`wAb{a^AJ(W(xC5>SQ>>-gAj{H%7{uilbWKEPA4K4|KAmR_ZL zTVo5#Fh2w6T{^PDCz?RC1!HZqeF}$aFj1gt!|#R6>DUmbUCDni3eg`rUxWw0Sh2Zo zTfGNZX@4Hg5OsF7Vxo&Se!?~lY3i|+Tv62#$Jxt4Bmt=!_&MwgR~h^+3tmDvsc<95}TJupCV? z=(~1{fsx?vo_3#sG~(|-JNp4PQi{6>ybo?ET?tx_e~HF7tf*IOuIFd{yNvizvOJ5+ z|KqN&bT&UOF0gZI7FG+@%Qrs;(sS{<$-6&IS?}4?cRTU1*fUzy(kQILBm_pZMAY%8 z(p*hlw{{Fla1@O`qpqJzRAcglJ`B!!H3mwpBqUMlX+&PihSkh1rGVza1>fXf%q$GW8Wx!}TZdgVDimyg&S4|Z*Rs&K>Y zc5xbi1s6fUkPH`+TZ7BPKfVqcZG~f4SFc=YeSlx5PljK>w z9wZ4m5E)0TLL+cF@fngFS#}msP2(*pgC}}xqJ?^3zf%4d_Q<9yhsRlIPOQ~JArcN_ z0QW7G+dYO`4(YD6zU9{0O0d^#?x30Knn-R3ic@{P511Kriye))q%tiA{%lPa#I0{T zZYsdAc}wUrg_k+T4~lkq%k3CY$o#(OuRrSk6R_HvUmv{o2o9^O!)2~?@O=EG$rxTY zIfHPiAYz)vr~E&}pu-!eiI$OUG$<-Jk2)~wSRH#E$tw-UE@|t{W^~mx@6~$y6smv} zVi4#YGA()jDE)kpp+7)0$#XWQ;b6!NO0bk6Fy;D0) zdKVo|*!oS)E=Re6yqgMfA9$ZCKj~?GsUFq~Ac8x={2G=qTh9;q4rsJ7_ftTZ^s|cF zg2wn1c_k#Y1KCFck)NGJ5JX5Vtlg=7Wn>u@y?%s2U-e31IpI%YG6Q5xrcMN;I_b6x zVq(pp9sYSA8J-Q8fp}kLFR+z)kR0$AUeU-%IJ~84iQG(Yn-h~4;#G8hx}-J))4uAp zNRoP#=+s$g1Ok4db;z=D$FSdN@J_h{ol~1K{;)5dTELfXabzi_=xqN_n0{ox_u>=?H{5iDc5Mlo1{&76d(6|?|J!T8$+Tr?LC2Zao zMa(yrfh#rSpO4*V>&(9-1&~c~7w#NYxr+Uu$L>E9uvDA*bHJ;d--0%N?+0lrTf4U) zb=rXfkyV>-oC~ZW``Xc+EuC>-~Iz+$p;ecb*rh}W3W3UH4-dx|b z>|#gV&TRRuHw0M<#<0zh)p0PaRjAF|UzI1g2kJKFRIM4kNXx~*ThizNX5yyY-cn)& z`?6K7G2IP+CIm5Za#B`fn(oDi>)9Z0+%)=zRPH_Mb`S7{T?9?pP3~$G`t`9Wkob8x zlHV6daWn)m1~%<=wHy}KSY!1%dwiG4o|ApRaKj>xeC=-MeMVT^&!x;r+}y7BWkGX` zMr-|+{OGrV{i?U8msz5MBhl7??WYwCcRLlA3-D-;3~W=5j|!0G=Cq6u*YD%oWdAOU z;M3A2KzwKINcdi~oBFOUSgL_G`O`W)014ap&fEaIQ9kG`_jC{=$#`UJlyk`p=cde@ zqke@Sv2i8A)-o)hw#zLZy(&sGdN$j$wNK>g!zo>O&7wOdvfQ-ZpQ!__4sCZkYjQI1 zH;0{ww$~7n-}GVQHK_2Ws*?Z}og zA-{KpFZXHr>+EINzx?0Kf1p)Zd8MrajHGfO1DRwPu7HJu!xtLf{9 z5B((nrlDM%abxPwC>#a7HanpkLm7U%v-`JjqudK)=aYFtPmq{Z$0#{d=$-wF7xG$j zHJ69jrLgzTgjs`S_(vrI6^L~D0r&2hlOi=M5j@mQAoz47-%IVb@gvA1E*f`FU!`h* zJ3N{)G+T-g9}9^RoVX(_L?f60TKOv!c5`6&b6AUt5*i~fRL35f7l{%0ys;D0EM@%h zknQ02SrlpPsbuP_&8SxsLPqL!O*y7%t*J)=$X<8!f*Vo6Iy>^f7yzP4=4>I}V2h)S z8a-e>7VPdlB|yDY(E~ZgsoT%hARcC1*t5cNFG{`6rK!4|c8ETv1qYn6R+wxlZ_b8)4nzO_5(kK@R2Lt0dS6(D8 zr$Q5%4PSr~MHa_70!OhXSl@zAOBZH>KxH6&??Q4DMXG|=S(f;es8E^$T@P!f3+^EN z+v|dFAS)Sevv=V?@c%yD-egHP+HkI{6TQjSC~Hf+H8UT zKo)-IIK3)()KMJ`Q@l~P3R_VepT_4(fx>1}Nm2HvMl1ZuK2q+51lQ;lN%0;{CVFVL zXJZ^Lw^gu~?Cl-BzK{#*yd9`DAeO;&&5~T8F`gsEVdXc&dC+Z^!xY4Q;`rwYQpuUu zLYAy?Sr@qGFwyf($KcwCyurADM>RF?Q4v-%iD>F12dlD=ZFZ2ki%(7#lgb1C)`rCg<^KHF8hB*+1K_>j*Hh}BL-Co(KiljJ-BS7(V z`_pIQU_LeawRWV06dvkqu&hu%hdY-fRLjEen^*}sYqH0=q6+?Bl-bTIRJUm_j<(ov zBe`4%fY4O;7S55ifecARYH}hl$*O1fbc2Fzo;H-lsU%Oj2~cy-5g!hbb)X_g>lLH+ zcY1C7mXPLt!^doz4w8%g^pv@t{mP$`t9wYGQb`qTRI+PWEY_zcxKFG0W^DY6@Z;;? z+~N+Br^u*+I#i0K%oNcm#KVpJC$CE2e?5qxGr1(EN z3u8Rrvg(Q4j*L^g(ztCjBdA`Z z!2b0gxF2H*Vy8a5-a=0qUQ|p-BgNZiN_mFDU2{u*bB?6k)Rxv)A$|}v^UFg`QE-W0 zw@-CUnWh{}`b;5L35ALwy8~Wqp3~X9^<3TD}D#iN;k6ng30ME@t z+`+H2@V#zI#AOdVZUNI;nTVum>1=@(s#mYR1Hdq=oc+hi4?-R&fvrYhD5EXg1u4$j zdR7Mza<|}EwgSbgSM>KsmX)sAvFDHNV`-L_l~;m(8QM@}6(7Ghgk=w-oGmx|Po?8> z<;CHhdcmG73o#AjD($sx>P||t648Nj8Y+?VRvZPxrm}8}^oki4i;Q&c?OnXfLV=~2 zI(xAj%mQ`LKOr3esU6S&B5%=MaTKed)!tIM<%Y=o8_-VX`thA1;clp4f2xh(5P3HO zGqMgXN{)Hv{Ik&K9^ez_tO+fd#@~(^U>5n5WPe;mpQO(yGs>#FTdkfD9yBUQXEK>_%o+ITr~=9KjQf{(t?FpetJ_?=(2YkAMD+<{h<5VW8SU2{2h}f?E>G2-aEIdMp~1;-s>Q_Ci<>qB2VQy!$w_vN)@n zu)XOaXnzIAH?!C70Vt1mM+|M}T(|F|&!n9>w8WleP5CBna%wR5aa8Xj}4KPD&s9?Ge_ zH&uCJ01h8^^<|xEO`r4V2>fAupXq9g9rm4Hk2o&tzZMnbe3!Yh(&${(kD6V7x}L6b zupX&v%WwE;_nu#V58b@oiC$qH`gBr*RjmD!aNE#iqXHx?&|e%Brwz?%(_C_=ZWn$p zq>%&6fXvm2>1&OsJ`wG_Q0z}go~D&=?NZZe`4@D(AuByM2t%9>DMs2>ifA{Ciqkw_ z9cZ(-E@YtK@?GKvcMpp+>T1gvJJeUw#eXt~;h1NIR2=2)<$HJ|i&8@!x8}kAC*!AY z5*BsC4VILf0*jZx|Gv!Z&5b`Pi^%i{l_Wlnj_S@e*&pSaeJS}ymvoKWy3dN8< zwu{@**J(c^uEB-xKp}Cg!kpXor0_J8m!suYCBna@xC?|`QVeDO)#}mp51NkMQw(q_ zOy^$icC&oTeevb6bprG&=xDAm!uWme6S8?yJFBbL8rV-S`zwD*qu1x5%H^@D&mP;Hx7qKwsF9zTc53u`T}T6`wBqm z7-$$33+qw+^RIz#!Pp})!Jh8~Xss-!^dC@yq$sSB0qjco#w1aC-tP(hcR)}~b76Yx$RF2lF;S=_^7_i zOfs{`r3{wcR6XumR|sbM043N4g$1l!!{CnqnKoxwNOk$ON-k(6bi$anXu$!+igr*g z?2be05EY6||C=(gQTmA#HSg}V=aBSC3f%&&ChxuaOSoyRIHe#Afd&W+r_Z4`fHaD1~^XRLY@XqSat7)Fis~oMs88PxWKNXKRQ0Axh zg2>(>JKhS^I)2;D>TBFddbsyAC=1il=g zdxW&E3c8x0hg=!qx$w6V+hz!yB7>(wizhL)o%-Z@H*@)uX(sJ1@)>h8QDwH34qC1X zdl9{jHj?!+Aa@nXaFTOhn-7_&jS|;2L0qq_kUb6{6epnS)olLUPZ+<&v0@opu966AkvsRv(1=V=!C~3=y&X7;JPg#`QA9b0`x|;WCN<^sQ2C1VoXL&%^^?!Br$A2 zDS7s2MAt@Mx@{L$N6Yukyzk&!UhdFkQi-%3@iEzDo=|JY=FNx>PF|^4ND$I}z9Q06CIO#{px1g7+qeo(#jcVZdu%lSy4y#4TyTmAGrKZi04@i&*AfHVrl zwjX9*Wy*2cijaf0{CgQaJG*tGdVLbxOA0zfxykLeb5B(+=M#s>Ksgpxf$|&P+)dQn zE1l!Sh8T&P(5Qpoox1WE#Il}($nr}*^2LF`UlYgECKcjCb#ZnzjMNPmK)Bqaw(wuH zcCc$%|4Z-Xp1&9E6w?JBw9=q`z0E2CPtA@PTnc!uRg4(K9jkV{9qIeeQmOS`#NUR7 zF>hOmCV#e`bznopwSXmxl~+N4M05FvxRw;(dC~O&YI=DMA zvrAxGeydD>2i)2c1M3C3ASMrd<<%_4b h&^*MC-m((edt~o)!kG`{Vt2KR$oH&-=X3Ij`qA$xjTm=&!R~2LOOxM_b+GYLCBK2{hza-)TAL z)~k)yPunsO0B$h-e~|%&2vz{NZseh+_T-7XZ;)@GyRRR&j+z>`Ux2Tx#|sw#2wN&P zbu%;Fx%~*Ya;&NckIm8ZHDRXVHc?HDy_Lx?$U_U#h4Z{!WH#;tYiLm39V&xUq^HNG zF&hifrCeX2-sCAyfB6oc@&msf`Oa&u6SqA^{5-FO{(voRnxO8bq07~lG?tE~t5M|y zue}@`_`bd=q7rwV*AD>EG&%DG67G=!XE9LdLr5=mH$WCPeS-$*H7M#8V^1P6?y448 zlf@>G^#*0i>CwdA0#qW>RVx7%O|sbHe121)j1sUPadO-Mo(Kc>_hH-9Ky2|@K_nUQ zJcoywtSl4YW^#e61MZ5zhl!^t8o)C#;Fhc2fIP4u42bDixM~9*TY=tj(2Yibh7J%j zhQAU3C?f&;p?mkjfP@0zmgbQK^zdOl2rYPJse(pm8?U@Z+;bXXe`*U05zYtWIxG)w z$vBWZ6sm}P4KKJO5humCh8+cfvP|Zy(_#r>;|%rV<1*q*G5K_&p_GEk_Fc9|F+S1`?_s$acgsP zL3cp)xx){OXrkL!yIu>zi}M)hCGKRc`!{c#giV|l<=NWT(PRAz_K7Uo1jk?78CsXE zH%ONp(~toj$F^sJw>FG#`lqWGreP&2Ajzs(0^j(4lAM393gIb~R;7WDo=RkqnZngJ zP86ql_d(BsdVk{p;Hbm5Z{`6FMXdYF^@>Mwy^h#s|c@>SXx?fUP>Oh}n-Ov^iEA`|G(-1Ut*u&? zEkU#V#-wwQcwxrvvZBd=X0}IZGH=n7weE~d8A@t{V!eM@sU-(qh>3jfSN$X>M4Rn2 z@(J>RuJ$|I$EP1CI+9PECO(By-i*`erIn!!RpoZze60OU|C!-}b~QIUuM~KRR+g3` z!T9TaNOrYeGk-hye1O$aLOki2w$Qz~n;A@^ph&pdfGqFLWHpKVZLi67KD{^ldGn{{ zPal(eJ3=)@Qrc|yvWJ(Py&9?IbA-4b4!zne-t6C$+`PNVbM*Xrv7?Ir`!mzu4@`b| z>fYG`ZAooWx#UYcHh))WvRwVv3@n{trCRs4#iYSFshUYDxKMuV%Pg^JjuBf>F$wKd!&geZ&9euArz{4YCrsg1ljlH6Jm{sIfJTuGch| zG~KA7oyn~=M;1TXGreo-R-;&*gmkO+HB){cV@XJ+vh3IIH&T0VT=vOsqw_oW4W~Oz zVM07!^tFk>anb|)pT-uWLIgYV2^<}%kB~KQ<<%s0B`umvusN>E)EoK!XNVv}TJ(de zJZwzL$}Nn*Z-Kj&Qu=M;F4kVi+`Qapwc54DwOV^!GWGja#g$ze9hUewhR1`t_pR@1 zxn+!BD@L0xnl4veuexpUNa3Vj1nE_A_icxIXpc|TL4HZMZET6YZ`De87y5!dT9jZ$ z@V=-z(V}}s)kMcjg`yj0g?^Lv_l0tZ4x$c?)ol7z)G8d_IOMG-WVTH~-_2_Nr^%S+ z@!fiZcfrdIq}&2ZbgEZIuF*iu#KBgJYv(Xt7qI*prFm6iuBoj$LuZ{{%ANu>cjt7U%AI}{3V0iT;=Fi+DwZpbUYJUvf{Z~n^EE1K|{ov2oro{84 zL#KYJ1+J=JsOPG$6uF5T$u|h=N((9>MLeNPvh7ms%HKs?Ek|dc6+hE?p~o&SB3Liu z^P+q8avz)YyZHBwjYyV!(IFeZ@VDb%k6%^Yt`WH@q>!tk4>y#{`S%zkSbaNSB|f45YZ`_Dfoh#wIHYAk+z^gMAqNTPU&#oZ;};4TWtyVYhHKi)9Wu6DU{qU z4B_^cc%;xJ{xU1`wZAHo#~{1KZP#tvHDu(2%d1A>H=op2QO-Bi!(L6VKU}jEzTTo* z`Nz!a!Mq@KqnnF`YtLBn5Bc2Ml80maqfI|huVoRKQqum-uQ%7TS}GFtEQC3pZFha} zly8Lkhoi1}4c^h-*Mp!cj%?Y>1`eM}dBgn?I_ZQqahzRzS{dpFFlZ@r4% z`!&CBWAseaa`m&rMPl(?CFbOm`dcWLJZ9L!gI{4=cawa7^c4KcX|AaqXmg%${pq^1 zy&_!loFNyPx1Gn}L%+DxOuzcHdH>{810|X__5juKvPG@!T@Un2r%ToF_?V)y*?Y5N zvkNnsgP+Tv9p=w`rVj2#cAiT8okczG#1WK+yHVz3<_5E_vo3fYd=pN&J{h@lmW%hc zsWbHU-yfv-NkO2#$Ivq0HZ#ld^O2cJ#@xd_Ervm^ZelSeRG40d-uyqr_uu#Y)WbJ- zaI~v9PI`r(tX+AslWTqMoXSM}?Y2riJ+Dj?deTMwO=Kc2^=UwNPA)2q~y# zxGvUg*kfrYemdLjXduOL$oVgORC!Az+G%{%lhGH`4hmZTsX-Zm?;q548g<$otL#5sR9jA(RenzVwSf5r^Xv^R z!%qFu!co0?IYG=k$zW8wmQj!~l1QJpS0bk*FaKLPfUt8}r8eO_!C%5cEGLfCv)mSq zIh);^AD_yfdYgBYm)+wXRYBP8-MiC(`u_DhXZLWJq`2+zQ~Z8k=&w)?%)3=aqs=I8 z*aMRL`KJ@p$tryIo$PE9B}G2=(n(SnbyaUtx;-{{3;>_fqwvPrSO45j+9n175Wxok zu`dDOoOHGC06?%90PNZWfI>b1u=r-#ebWSh5M>?p$7W$mQ3S2LisxAz@B+EtOcrgC zL-&s=sy`srY0aK8Io4_J*^Yhw67k)xSDthy3E}_s4p5$~`R*=Y48e9q2___U*qzh_ zrWg48)kms7mA+v39X`-OOnx`|0@dPu1|#$kR;Pe500ahlXW+>+Ylo$98W1=Wpm`1d zj|L2$8ePj~gg_{`%h*`Cfd^tuNC*T>u1XLF8w;PbipVlaOG=uWOKMz%;UXGFPQYYk zG1v_Qa6wy46VbBg9TH-KNe2Y2U^l>IV`VGgQMy~88ruXKdge?sGN2FC3mO%Nu!_AT z1B-*n9{|A2-Pyr^D-^Ntd}o1cqjUh-YYqtf7KOO9B+@sQh9P#8ZvU`v_X`j|Yy828 zF45jTkEes~MvMZJ>(eBFrWa6o+g(xshbmR`M6+`PwM=$BDpbLpe-GPA=N=Q@j^BoO za&Qh@5F+}j*7+gjBe6=4P+LEcNGmR8(CgPj@>&qj>X2}E>1(`Vrs@*Wh@C;^cW_rv zS0kfm^8+pnh#TW%<=oc+vf1aUaGN;=@-iN7aw`s5Ki8Bec5KSsl4WEw>mNvUxDURt z0@PqIPOdV8>zZ2cpcl7wCDOJt2J0{E)%6J(Ur_ysAPSLsSyd3zJ~e$%qdcD+eu0Z% ziM*`do$f>;ceYAPM3CQZY0ScDlJ~|^1tDSpxRwnf{s{^FPYx=QRrUGE-*j%aGGZ}L z-=50vO45Xd_q40l*;4lP^4!dy#X##gDDZOBc{=1DIw(P0n0lnqy`w|5;7if@v!FB} z4NmvBF`Is`Vow9KOZgf(vq>#5nJ4hUv zx*khIX@y2(Fo_pAR+a@8R$o zW`Sy8wFnPFbWd-dUK*3tI>ZNB-yh27FhZ5mhj9}vwH2wYl^mzoN0-j_HHyAv8? zbq)Dr^kgzjp^%Q#TmMnaVoeRwibJ&X#jS)9{tq}aQ?pkiSo5wbqy!}m^ngXLM3qgh3(M4gbtvO1ueFD zqITuPB)Q3ce!Gr@WEGH?6;uoIKo&QC_XxS*83z*^pi6s<557h$ZhaEBRMQ6 zzigZd=_zn+W-Wkf-fnJCO@9oa1*+?N6c+P5>H~d&N)`LUOq$msA$^?moPaH~b_Dt< z5O9vAqM=DCbEkq-RNtoL```xj-A}p&d}&t}O}&2pPM$kVLcO$vV3l_>9~s>olQGB; z6_BpX_9D9ZB9ABH@EFxg-I~+DPQXiWXqw~E7*P<`tax&6=odkOp2E>W3-qEu57uASFY7>!sRymm3n7M*7G zXQzRImVOs}8R_#ezg+1Ga8U6(s;a)P;-kn=@{s;_<_z1r-JA-RlA7=*PZ>Zi{0u(i=RJ%P1{yK6P}MO6MO)g!LCjDYP7Rw zta%Q_Cd3+{&jx8b6AS@LeU&pEIm^110;R>)s%YnbQz&Vb{*fB%`76xwz$|Z1f<0p; z<57fwYcQws;W!tXD4rXI$Xb0qL*<(BoD!g`xqwqXv6$4lo0yoOtv>{}-p6DYM@Af6 zxTh;asDlR(fi(7><<|hmw9z~O^m49}Dpt9?9muJwWVaL#WB94!9o z2Gl+!uMf%pa<@TQX^d$u#B$q+v2IpLnWO!<#{Z1>NAn0u*;}&{;m$(0F3{boRW)X| zM($m14HA4g2=4jv+@u5{Reoco@+q=4B_UQ*e^lB8q{1B^`@){aOt;3={U7b$YAd_T z-|mkrX({mdj&&wI_tFdHj17j2Ifj{_l3ccwJVg4SslXjD?Gy0m=HP20qW@Uhi_93$N7`<0Io|&}{Vg^mZh| zN^Q{Q65xldk~|Pe@o;nLhm~96U#KL^Ot~dgDSEZOjDCRBd#Y6KBD9_W8juk6lFrZ- z#q#$57G9@al^<*mXDyJ116nNBIUwe1TsG9yq?(BhgtCGvvo4Yq%<#xIlGP?u|)qQ~XwQESY@L0M!%S6ZW)xRT};LqvH+Ysp99#{gR%j;NWNq_MB&& zaf%w0l{X$x2Y1b7Q^6NT^}&zhM2yZh6MD7oV;foEF{0b#{~&x-0f#xGAeG*kG!8{a zR~boTaNEGX(HiPq!^vU1k;6ib37&{5>M26-~4WuMLLvB{JJz zpSl||KT#6uy-{%5iV4gF69vW%*Nt^U zx28K57t^uA%8g$*et4y+Ekx1@7-ig`%4m#e(&4cv9G=G9(a=Wk=vEFNiq#(&pMB%w zDo}9miP>yC&88q#|M+>K6rT4+InspV!4n=x(~X0Iz!+84;y_P9D;3eH3s{6~uPN(O z3l=&wR19f6?*QCSy!I4axy5$>Z9xGm=(p2p?br8t@AS-4v<2^s!eiSm!kEw6 z^*zS}&I{56U%X^NYiJ018jIU%B4v6u>D+;ULn6_%qi>W(khAO>8J$vRIIh1HHXR{W zkak&VCr!AxSgakJ{qHS>y*bS%$ssy6YxqjiAE)E>h@wD`!rMTui$I#lnaHscWhE%8 z3H4QsPEXhV4~OVTkP=rYYS~Rx>3MDeEARr52vY5^>d@Qmecj8M84@-Ma6>YgB{h8Q z>3+DgR4wJeRkm*8D0sf4+@Cq?IS9K(p?Zz`jbmX292p0ONtsLAX#(!?i6MRT^fW_F zV8HRIa5?uY0Q5{Hjq{VYsaZ66@SgYu?Bm_P@#A{uM3gTEvl2NME?1Ap@a|b!=?ptr zlC8^+t9i@wHKHq5qO2ycWbqpaThUecQ!U<}A`hEuLz>i7 zgu^WZnC^jV1maAmceQQpm)$~{)8*~m?WR&tlV$M6 z$xh=ynl9i>wL*gv;K1{de!1CsEc&CjK_-Y*ZU?;uMf)l z+IB@qiwb<7!&f6sQf?%8B9GRW89fyA?~hPOVxeL;k-rb9WI7%KXSJ)BW9NP(H`qnh zwAAwIs;q&U`rog6qTRQc9%!nJrm5#e|6|ogdbC6>I-KS(nY}EetULegNqY+!N%-@& zAipNwQp5Nb-59dUl!x+?*Z1UB@fQ*WOuAyL6^55};e@IdR(1bJ@Qe<|dPWnh<7P#w z3*w%BEW>n6C(m4mpsj(S4v+^36biqr=={5LO>^O+gF%4^S~MhJR9d(`ZM`8yd`*SvZ!$D@>8H&{oB|Ix7@3>Nhzqh!#ZmM5sz_4A5P zi)_H6H&tnGHFHM#CoWh4do2pOelAxKG|D<88ONeiQrgzA@M$*l{UIcET=(sD8>bm{x|2rO~7Tbf1LE zgW{F?OrJ2WUmua=e$;3U`UAF)2r3){Q?NaCt~5c9zFtr&pJ36N=^G@gBh9mVmyG+u z&Yq4)q}^i*sWoq1>Wm_^*;I0n3>}+)E+I0gwDl`g1S)PB&$?JDX)tQMS9m#Ut^1e~ zVzHhezqkI8G-5|A#}pwhTr3gT`T2Q1bW;Bz0Uz36+jXo||5Py~PTm|PqS5QMisMPh zkuaYh_+~wD?h+a-Y*Js}Fuw6cDD^(~K#uh5OaX426-&B1pkDQL4-e(aHkvPAKe3o` z28^kICYjQ`GTIDcoauNVa~@$*K*AHS+S!*7(abNkksIVc$X}9Kov(-5iJ~be+;wbv z4)C*B7Q3ueKwHJN`aw@=o2n#lh|+gxG8_~ah%kXbFrrgXu#L4o06fe>1P)Lp4jk-p z!OqSnU@ID-p^>N%8~X4{4~eFecIDD>TqsV|wv*c_=sj1zu|1kz{7t$28%}}ikejM1 zA${lmh8vw?;7C{X8s{5Ql+mLq?mAybpJkE*(fVd8!BQvSch}yfI{B|FuHR?Bagoqw zicL;r(eE&kAf*$cQ$WS*_i8ItGd+D{&K#gzFE>2oLThEde_1|oY`s0nW;UO*bnlc- zg(fd2G3y4Enn9_kz_%1;&?}JHo8pHfCVdf*h_pnNS%#{YH^xedJEbvUxPIa~@qidp zQi(XKwYa*6D0#!_|GSJwq2VAlq-(fvZzck>C?8@yM#1JW9*h+aM4j+xs_V-uve3O4 z-!1N+d{JLour61^nAE=$6h$JQ1}P9O=6hlYyMbX5;*_rn<;}Ru6bj)CgjJ&pCBwvM zw*I~Q+G2~Cw>=rO(>JpFz_-LGu~(O5h{Fw{o>R+>IlVx2+cdOH%*)yV3Y1M+xS?Ji zGVl!dOsuCaU+tSLjT=l9;G`#g1wWj5%K7edQHW9S2)x|s)Yq#-;n%r{i(K1>%{C1^ z#4%seh88?%)2b0^9NZ+oNJ#-3VVs65TAAl}h+z_Sb~GBBym zf+%=AwQ%NQdF$ho&i3#f1Zf?=N|?1Hnd`)JC-p~LZIgEF*p(wsB3c)NZ7e3=4>`?H z?VUt?Ua`*C%g|O-Jm^>ffkvAso~TAZ?}I>(w=!91R5Esy2dC{2)#y@2GwXZyQ24*ja-65N z#BZs2sM^}G5IiM%ooQz~+aoOP?kErUJ+PxyWw_i;OWlHGnzmKzz!!g2ckn}+V;)3e zhcBXdWe?GpbSWA`5O{Z*Odw@G*hUnzxyRpnm>DXEXy!%x zTj`=-;@;YLH(z|ufbvW0$w%XsG5RJ2)Qwvas7Q=CPt^-5r2)t{eYDH4d}M?mTiKZF zbhB_iPi8?lm#cqvyWQnw?Q}n*tc69wMwf6i4{e!FlkoMEL30hD<>M?V4^_EUNe8e;Vnfp+Q%S9sLgprr^%$oaxv?)cWpr`Qm5Cuz8-k>L$8>pN1wKU!3pR zMV;{FCUtb6WzWYY=D`R z=83>$Rk~Qt(81-T2(EWk139Y{-Wf1OkHcqb1go8>!=#K)MaVxoDVCz@BhPoGnfkAF zR(}+Uc~3dRn@i5!4vjh6^CgAk-^_HvEVd!u`?DANLH9{Lq~D}5_0psJdIDJJt3S5g zVe6_0NYyT3+r=)^|HoJGJA}rh0F7 zB#uY#rkX3=%IwP$`CDMsQSoXdW8W1uveNY%=Lz_4a+kFnTKKUr)0Lb`Qo_&MUQ41F zGyE+i`17dVu-@wD@pS?oHNEqvlW}Dt9GP5^BMBk<(1{b^Lr0}O%NT6O=oVbbL$f!@ zolY1UuvsHp1ef){F0?<}YIHvAXqM$l3CvIU)?dZZS2y~h2#%kvIL7zwo_K#t%46ag zP}sNWIc?{Cfwc}ufh)3VW1NWDs1si{oO1Se5*KcmNpFz zX|$>f7}x$l#UoWTR-e^+XGTc^yp{Red|9}2h73>`?EY^oq>23cHG7@pUPPeaH^t5+ zZ#wRTwZMPlk(fb$q4Ek%9mup48Hh*CWlwBo#>+589Sg;kTvPsydpI({$Ho^{)F=vof@KCDc3W@bY}U2-EvyU>yA^S>*d^ zRFq$Opom6u&d(2X(H#PO%lnK|^3tA5vwJZw2b8;`dzO7JL}EzmiUED#Oh*t_oNu%-FwbKYN z6o`a;Aofae`Y3ne{q+3_OJ5?xm!q*LU!RboqKC3{S2Tpr8Mm>_(a^$hs4=gM$dD+p zT<_l}__Rio*45l2)Lg0FKn?W9k3>mZJppm^d%>s>1Jp4=Pb-o`8DAE4_Pg8zcyZT{}oZopAzQO-;=Zj z_v(F@G%LhZr<^H=))wB-IV!#Wq75G%9}`GoEf{9X&8eb&dqZ7nV)~`fUz-<&NgYYp zLpAp$A8cXaL*tGf!fD59G~R+XhQJ6rX)5gz6r?)qz`%sobiq0|1{o^vm>Z&}YbScj zCY9NZ90%x>KHjo4Da=mC?MPDw)ZJ)SPE)@XujPudAocVR_ZwnP7~98+`oq=BCvi?c zuvyGc%rs^=@7$ct09?_key&O>Xj)OX5N?kU2CBeDk;Y68f7p6*2{jcw#N zcAoovfra@oaIi{NdrtkVo7+aM5)V4KRy*<3Js0n~y(Tt3hSU;v^l#zt{V`{)>c^)c zrFw?^qX!3mt^t*a+HJgGr&CHz_Z4w*9wr`co?9Mj|I(AmAwu%t_?nw{;sEit4|74u z91=~Ihv`#z@-@`lt7?_J7q7rpTNbvuOrF1KXv}AqS60LogJ{_Ih)A>aFX1w`9%P|| zVp=*pTP)nmN7!3Yd-J8qeVy;?0xe2O*Nys**5gozS5Jbli7ib>pW6{fU6!={@YM$`$=Esu>Nf1&H$HqzI=&iCLC`j>6~DW!^xR6CA0u`-*Q6;(PE zrjJN`9($TwqlAV|eA*vAXAxD_^JrH_IQ|=v>JG>A-w0cUm}Wur1S+_}pVTCo0>^D= zMgZ|Sru_1EA{Re`dHEkMnoTD3o(}dm3O#6CJ{^%F|Kqx>cs!kdYUkJ#qHUCpeY$ENhUN(?yk5tRzx^73FFHYEYT}Blo zw)jpeBUPii^Y4B?*Fdcsd=xVeq0;h~0W@*!wxWJK!%3&eVcb7oh z{<}{nN|Z^zfZkl}`u-Kt&e|K&1?#73a51R6haLbaupOo@c0s;{B~=_`;(B4<%G{%0pnNb>7Er(97~SJ^pMsUABKJQ++HWN+L2~wTkf;a ztC*YUSiYw!MW*OqGsydp8XIRUOysVGJ{OlzEH#>z5+|25qpRhW-le#wl@|y$7AUxr z>L`AT3}VNWuB0B|V{0-@n_L_?orUma{_d0_X@YK#P2$hSfz~j5DCXp!_El!)~byaGhFDi0OHYzD1Y_3ly4}i`GKO* zUyT{U#YD_(OC7Si-SQm7ezc#|QM36XDFnrto;tsE?(-QD^3+exaQZb=>&f#<7d93Q zd9_X)-} zsQ1cKDlR_o@k%Eg{*ZDHPSRKdk z>j|!W8}&yoIT(^A&s2OktGK#J>nCoai;~ZDJg%4c);C~qgZwhC5{L{DbxJifoL6Q_ zJ~v0@)|C8eNHnJHeU7exIR$T?kO|_QiOIk8#f&P`o@FQ<#mibcQKoB}esaQrH(km! zfMTuBvAe~eZVV8K`_Cm)#bpdkV^5^gH{5&s@Rc5&IQSQ#5$JyvIoR_~s}pag_Ik_D zq8jRXcZz#@@RQ%mAmkcXBRACOg|`d+)S+Fr!M-a^8G)He{c&B2r5P5eu@fIJ*J)_o ze68C=N%9bM!e-uk?k@Eup@?g#C30c4!=q#zjTK9qD0zg+81XM?FmqZZ1+>QCPsfsQ ztHj@o#Ir$JOucWt?TZeN!Ky1zx!W{hAyx7s0>8XUybvW_#$j7Ft}r=)TA6Ug@@ah# z^k%3^2eyuSr!lM_Ff5c>Wu{KcOmj6%udCyIS3g%^%cX$%v6+eP=-;k~d}M`hgfu?q zT#5N*rC*9wH1I-pIE4e{Yz|t07BR6DTq~oQw#o7F9-4-h>-@F0_R|wPYj?*q@j2*P zd7%lids;4iBdUG%<-1+4>_SS6uCN+4AQ@01=W0&=d-Am}al3U@s7-96^m3PxUP?HS zOYKEr#pX#nSCvDDt%W}B%5NBwf_sR&_w7oOHeB&3BvH~b%wK`Ab~d7QxihAlzQkvh z@X_WZju6sBmf*ow-?9fE56I<<4#S_`zp9vaE+`?3pm?hv6I(=VT&5@-7w4D{HsKIGtK6}qfWh_C0@`i2 z#w^VY45sW$5<&55V5ZQih%YoBh2-xGI4_-Y$bUD}A5))3IMR8Vm}M?xQe6Lh`-wSC z?@^XpjtI1)4RZP)*0-A^Zm@Hn>SljNT;69Xg)z8J`1ovhrcFadJ-Tcs^mO$OQ1xCG ze8QL0R}47MP1d5XNiDTcG2VQ249kuZ6YY;!?&%@?>+tPC+1SYc&N2BB4h{>9lr_BqeX&drQs)!Aezy zTh7(SFh7a|XyT|`nWISu#co=$NlA}*WO?GJMMb7;=WYh&Igy@cXtFyo9oFlb?hJfpz}Nt5>NKbRUL?}_7s<~bk=bx$s@$T zpq%HhOAN_!HCX9OWim~OLUFFk?KhzqUl=j9)L^;|6Nw?uRD}Kw?O49zmKMubwPeh& zr?x(?eDuj|Ui9kCALo8t?7Fs-KYW%6m$jlX=S>YN*#3SZF-(<(li|KJ@o&=v_~hVp zuKC5>qj-a9IX7c-$f$heAW*w*1G) z7`h?V{B}&h#>TFz1C?XVMOyY(7PaV`jm+1#cfM8)3t{U;nHjS01LG4<3UW zMgOYa^$Hm=`%KMO}s!MTne+VyBlLzGY@cs@^AbR%CM7^Wb^CD z`u3Cl_2Xs6Rl=p4UENZyb;EbG|7{Ka(+@OA*J(t?VBok5XVMsQ#N)9#GudRfZ|4=H zG|?5P;@6Zk1y9kr;u!HbE>5MtMytesr(uXhhwaH2(&?$3{&eT)^aJ@V$l!DVZF}Xl z01W1Up~|6Yh54bzHJYLp8(&#_m4u{z9^qkec~yRAP18FQTB<6sCrBsNYZ{c&8dAU8 z=_s#8%M9K*C9(dhpp>P=bY0zl#aEGSp*HOwE+x})!sRk!HO|82<&E!i0)`#S6%0qj z3^fMCk3yQ{Gw!j9^@*iHSW#bAu5vvVl|-26zG%e7eBK3}r;5g0jNz0!BXOta+lyld z7iWHO)H1#!az4QUMntW~OcM?#hQIEd^`={RuTm)+CbeyvZ5omKxS|QmcQxERuDINT z*Y|_?Qjeoy3c2PlF1kx|E84d)zE=jjAt#T%>W5c){B>&D;kefYNBN5gVz~ z_;}LyF^^#ZGI79HwrD@X#Zf+QasY?H1Y`=XZQU`yrd>J{3xB2&F#cJ$ng6D)fB>JP zU>kRP%Rc+M7$S4owIlTtvkC)!gtR)Q^ZhRwdTt*X3zMTpeR;HtrHSrfqZkuwvkg7~ z*SLu=iP+=`7!L@))ddn&ceczGq~+B$S<8ALXvNF)IIWLo4Qi0qsgFHr@|xNZ6G3DD zT`o3pt@ezR4`RmrxKy+(ouMeN{}i1WpKo$qfBpmQP1Jh4h5|3{71_ z_RP^;ZV8nh2*y!px|0En%yGU&Kosp#VgOH;coSZdKIqRr_M&N#8_%|@rGlo&ugGys z3oglZ{@WR9OC~7kUV{o-qBSvZD=&DTt-xqBuhG;cU)@r&K=c{eL?jpd9OPU zvH@iRu@V0fz2`%xB6U1wgU1i0jEeRv_m`5A2(Dc=y2hE^n97RIjxLVG>84taYW7oV z)7!7w-jDfoplo30O?E3#*dxS*MaP(1gKdz3pLQYkaGmFkwK^hjHVnQXCaSWcc(kI( zp#GR1?IAABW#cy~8`Fv+Qv`CdkQ;xBzF7JG?0nz6_Ack0)0}lVqrnSLLUtht50Nmy zLOFE{dsA{Lt%8R6#&RW6K+ned?VkBu57*)T9=kXDUBy&aI`okN7Lnp<{;2)TULLJ? zQl+b_q05FQAgCxT-heN!A@)KKFB_I6v`s|2W6<)M2y6cJ}&#H|6NW(K>~uKyH>dhS!MS= zlaG%4?eZ7Ew76e8{WrUVTsj)mLk?m1e5qyPVf6o9sN9OL5fSi1sHC> zHI&N--@U&yr=g56iW7)nQIne($@(eAP%$K7B(Mdt;x9E3F&UCa|M6^fbfqY%T>O-6 z=J;afZ;(O-V!>Z`%S2F>HR@Pt#vJL|wi%IVcf4r!@FQ3?Xr*bxT9?3YQulr6YC5Bs zr?Oc}{AOHWy>|WA+LiNZIRm}=#_*@!j^hwdU|imuSwLW-jn~*dpf=d<;q7yym_ud= zeob$f5&!ZIoK+FFpxha8ae)i&bx5olXV(~7Bq`qPz~yf!*HG^#EQ6p_gUIsF@*X*QUa0lxnQ{ez~}Jb=`? z3%s#6oP7&{K!h8At-}7`|HB!;>*q8QK<7R93DU5f!G=`5tQVwkTYYo%BW+xMVGI6n ztSF|7b9`gn?^&IN0NTUyeRVa@CmfNGgfqBX<)PZU7JYZw^KDTD;o3@2QGkDZngJ7279I8Lxd7$Xr<6QIaR*LPzLoJmqMo zfqB7xyIIKodwTT0&q83j@eQf*G;8=vgz1ovj> zbcf4Yb_*Q}@nb$PxqYrv(GV};ZMn3o-u8_Z@%%uZhwUoB>A^mpv6ZV6>%Dpv4H`!) zoW+Vv6^uq+tM>)(w|nCe*hXH+m!%Mk+RBVy(*CodS@&m6cmvmROkUk#7~Bv`hcm1N zTsJ3d75X*|sW0CiO-tx&W7DvJ*UVAO7(AKCcCp;mYn$OeL4 zvdMH7^v-s3g%0RU9bXsY9CS$g@@+J7wPg%yP&DhwrZvb4ZS@Wf4h)1c4iSkCq~GUFS=jTSrGvS(5AFdx zh{QYUvc;k4+hzxxr_)*6A8b(d7p`5qrsJl$D8kOERFqtC5?^XuXw2tsnU@~Wmv5FU zVT34DsBlwlyeE1ms9pKBBPzt)(77-#iIDj^n$8;qzwM~+Q83t60+mOv>9~+F@jFYY z-7@7;6}DF47k9zDPR{4RBd<}!R?HC~39M$kl!MlLes}tw@KOz?sZWO5usHoUi(;*p z-5+6*y%JX?RKO=lpFf?Fuq26*w58nD)nzVeEYF$Yy=rG;Gsyb0QGfbxmsWZIy4b{Y zL{qZ3#P6LjXUO0t;(3FG!7*xooDLLTf}ReS_>A58h1-|<4|TG;y*LZa(Er=zG&i)6 z7)zz6i@aUr)4E)^^S_GD#h>Z-f8%o~hs1=Eh|Qtqlf#_nlo&b7oQ0ej4LL95kZdF& zISwUrn2?-u=Iaz@%5q#zIgFgD#d7}b_aAud;eFq)`?{Xj^(u%EB`x#2hjhgX4%QW2 zpKr5SsBMev*e^d1CqJg8Hdz*su+)dzll7Gcr zrLhUsK{vf3a?{2cAvAagZk###c!EB<5xH`9SbX}}Av=&E>Q7Wnk=xa%y1$SP?(76< zeO-2N@YydhFp3;%wyed|8`MZ~-feQGyy1Q8KN~KbRI?ixD5}doq98Ctj8wxtIh@Ez zvkVR>xdHs|8P~mMz#N!Ni29ajz(SYmo2I~{&X$(>0J{$UbFZY5_6Th=d-46A8D5?r z&_)H@P5EEkgfX-hto6o8(`LrW$?1nu&p7ZU5Aooyj~vS?O9*gJX`+1?IG9w2+`Ni- zIzQZ5SqBB&q9OPa;7X~znq%y?!D*mU+`uDi8@SNmBO?x8%%eZrD^BiwRxYMC*6$66 z@mUIK9@*~Fgw=ylGo$3QnX`?t=@uM~(j550S7=}^;6G$ud1bPhY|HKug7af>S!FU5 zC`01{^n~y+^PLx6IQdtz*@{q5`cm^yxYehPLtE)#1;c zcSlQWQFgRYl2hWeb7V7^pe{F}nFbx89cXerjqnU#inlu*v}$8&x5huZI4s=aXn8MU zKtw9Rix$tw&6PLCJ6b6SIM^T`I%UEpT^g{!(C4Qb9|U`w!+g% zNdLUIx3`U<%mozWc+D~79&?x+q#SpB|EPB<5peJk`~h{}DhxiN8K8Q9_j}Ow*|I$H zmgd-qDO_4-rHQf^vG63O(V^?{?_27{2k6J{TT`YId%^5seyw)w!OTb%TCM$L zsV(;8_L&AWw8($0u<$?T-cO$K(}DSd`DHT?CyDDKFR1l2;c1j=j5*^e$!kU4GouVl zi!Ex7!AzVNd*#0oYRi%hSE5-Z+@*dD`&rv4ib=&-M_MWB5>g28ipKqm-O!`ODy3!u zuZBR!mx@LN;lgc>+=5Db>8pUsaj{wN33}T4#PgivKL<6tZR=Y3jnFdmZ`mS}mF0f~ zvS#Im--Mm>zMJ6T-l1Eppar#aGZ)x{C~7Wv(&n<7^*KtBT|2kuK=XTNRBR*V!v%&- zf3i2RcIZ9AJqUrecomgB;+_|Mi2(!KMnhX;KgBA(?2Wkn{hI39hi!GyW$y_6q{JU?L{L*Fd*SsC)!lDaW_UxLr}niJ-VyR-A(ip@0xgDng7&@z(|_xn zF=cv#AeH&M)TcC%&rtr1M&0aw+&3N5biX5}${`rI=C_y_C^H^*Wq@X_Xj$gx{`KzI z^>1I~jVceo0wWF$x%@H?`Aw^vVX2@7=vtP|M&$KC(R~au1r$l0tePM^;2rmC3@9)# zhQMyOwOqyA(f<@&&ih5|-y3i8#|jYmV(+g5YVphEf6Ej)Wz)xOO6&XW_UK2wtlEh* zBwT{m=BuP6XNHsf8*p}t%I4_*%as8U6x82&>s)NIrd8JYHQJSV)%k)xYxY;X# z>{}_fQv9+w0p}!gXo%{P3MSW!7jO|J<4SeN*`{s6rI+~`%V0ljNlDJTKB8EneX!L3 zYEa+bsYj%KB^GH#m6cg2r=zav|53YGV&8}56%ou&;Fmcz&VQrm0{%NL!R=5M4AC^Aa1jp3F|n7c7uU!LEEytnhPJ zku&o$>2ASdN+2Ka)VW#=KoRp@FmeLpXrhCdBqpbR9(239`k;Q7))H(`~n{V zn^&0h?t7I~qx2 zaEr;bbXr{XO}Lm5zBEf;ApL`%y?BF}1YGeV$hxY2Ccy95vKmXDze``+Zp%Vg+T7I7 zjK6GD!hoFe_n*sY>m`y8l*XP{%J(qvpntS08qD`=Z5f0k-1_zL@!9~WWZ1hS8b$VGC0#6-KOnb}H9p<9=)9Ptx><&d z-Ji(GC#$^}`Iwc}ym|3WcBXDB#ETkD{wK)78#$=0whvFFeav#FY=?I^7LJuqD}nyu zj2$m4q9~IZ=Vj&(%23zSj$orxZO-QU!JOQoBzy(HyAJm!YrNrB51YUvQqMVSfR%Wn zbtbHQ<+FatbHfk@&4^MJ#U5H3`Xbm8Jn4IZ|6ky3c$4}2cmK~HPp{FPEke}Xfx z`Q0a$ZRPSOx~Lq3VF6TpRvN>0r^TmZJswKA}b(*q+BMhdDY}2H*JbT z)QiUow$~yxZPWKOaoJf6zC*y(J{yDaNaZb!-ao9T@bKJjkFnUAEV!7<7|eMX!b@@o zTfY!leRtqdq6q=6U&^l>#5rI0l7#o-5I$@Q0gy5hDresgcP19&CcaspuWXIarct4ZQU&#j{wgu zWk4gXM=>K$cH~ElQoSGxA1H%YPTzcxtW;ixf`@QvvrghnCC>-ETfTif<3nz5KlnX3 z>UR!6I(Q^#!V4IIMK~9SNP&4rVHn``wkWqD$ayv~Gs^qPYb-QSJNl^XL1V$_AtT5E z4{LP1w%*p4WovqY_nF}1UG;d}pC4BRUz?6=GW$Z!AfreUtkzcK zExzFv@^t7*aX}vTQk_RIoT$c4oeS`ne)BU|xSrlg&`^9DBKWU_gmP8B@wG2|2EBVv zB006?7KE?cZ(>y`EaQPTMT=5ByEqvW71Q{e>)5C3cnB9f)#zx<6+dG}``%D}b=4Z~ zcciXU>KNrj!RHDo)`{=J2G;fXCx9N1XB@RP;SAjWm=b%`1+`i@M1%@vLoeiMEuh>N z(w0Bm-)jrILD1js#k5sz3w#up3J+*>d_lHW<|afM7+(M?qZU{vHMg2Jm!iSnYQl;} zL23;(FXW1Ex6SWWyefZsJd$;=r4Pssdgvc0(q%GkxZY#vlY2hdy_l=tE$@ca>&jqLl1-BCUa(IORCfR zQeGq4LjY25`ZPyPw)eh8R5K}|Fe__N-j-26t6+v`HWyBg-T&i2{^ur~;A{#Oi>RX(FEm&Xr@vn<$4an76R;Ke6w*@LIsnxwr1?INz+O( zlyKAnD9(^cQR<;MThm7L&i%mri9hY8ecUgMhcgp(dOW*g(-G!Dzv58da~$p`OaHF-B@#&bDY* zHQ5;-m&V8;nTg%`MDvV2dM>h4dRu*M&I2* ze9bbJ{eh!t6DmCJ_W52GVcQ*j&+&U^Z$kRK3`Bk3RE*Ovnz!klli!o-TO$v>Noa76 z2~!*yZNDZ-wchYy3|yKZJ_Kn9y$~kC+l=z@V?1%y3jHs{BM=jX!6eu|j4Gt7PDPlL z4uD`q#?f_G7TB>hnV!r=tT+*dUDFD%x%w| z9v*sk#ZHT27H44G+${BU7vud-w=v0_CKQ9-%(H}AzI(33eIR9O;@1{%TO_;<<#%7% zA^R$DXfXC9@HFSjSdA9n+ko2e9yCPPwphxhI&9C_q*%V#kpAGu z=}cK|0D{G=8(YhePa|lWslC5L)kn$y6Sf|CJYnRBa0JAOsNGeaY7_j#@21Op=LZd8 zZk2aIsP1`ZGAX_^XX^efxdK`Lk7Ov6iMLF0CJiA@-^fW}b9epplOA58cO+6DWyQ!32l!hx!uu zuSdYcFyDMh8M4A#DDy$tjfD!xeGVuIvTbn`J~4eyWm6yy?EA|FUWR`Y$lpP8(U;bd zDFKg^Kx7~)FKAE9hin?Pz1QAI$~b^Ebc6=J0$L|Q3}+mcqrl~XwImut^u2K2=L$lGVZ3g9C$xg9%_^C= zn#0T8>FfKwg%{p(hIAbTMRd$%wO3r#_=|0O!eA`?+AkCxWXkRn*|Q~0AnMdieQS5F zIA8)>6LP2*E%wUCuAuWp#Z@!Bry~D5vOMoODzoBMLjEnru~I3O-uQWRVz2l2uORJ= zch<%kC1pvUu%-|Thz$M%-9&mM6SK4;LXUY6%niB}wX2zd{vVJK1_FEDg-|i%$XHx< zDNU^(*by?Kq&_g}-B0SDP9cbIm2BQ$IJck-O8vW5^~$F%+Y{p0j-=pvII;v-edA+l z`SJ|N#Tligp9I|t9<0J&eAiPOeNsl|JD19CAr-M z4=!hj?8TgI&5SNZ=3*FkLWErLgTeK~Cwoi#y?%|e4^?1{w9ETL9*os0Fo7|}M06c_ zw>gTY-BA4guqGE$e#>UfxsSMpCc(tX>J8e7xRC}TNrS3&>H5p^Bc2FJnc|KoGZ746 z5>fMcmO1izdDe5#hj%z{@nM+F9l)Sd#V@6n=x%z5K z+`ND0-ZX#$pMCT^-K%|~UA~GDjSV8o72Uo@y*ktpd&ZQfn;O9r@i~zdou7l`N*npe zI%pQ!li@QPF!`FPfvBih0FF~1L{YRgHLWj}H{2?M$Su=0=QiAm%kWr^-#*2$^GelN zBJ%QU+{i}g>@I!eBfo&2ubv(wBCvZ~Gu29#nTFWe<;g&H_}Rsfn`46J8IyMgTCkkf zz^|wrx`p*MYVi{lcZWCxGxY^@JfWXLW= zXRna%iPE)ty*Q`OoqZKBt~vMcsMbZxU-ZYTa27Z_E%p{`jdG_tq2Ap;r!}{I za#HW3di!9;Vs~dJyF-n-kLd{6IoWOl>Sid7zBAm2xz=tsv>CS9aYL6kue{DssvD^G zPS~8at6ihzTWUwef|9<-1-khBXQiu3HwA)Y2qWZhbf?tN$| zA#IXxLb9FzB@V9V|d8ctXS}Zx>b56huHH{L~9Ld*1*Olw8%hFdM)Mmfl>>y zh!Htf1*n&^+Em0FHn7hs;er1nF#dfq5(ohCC@_Y*Frr4fEyY-#%k14SonDSPdDOgP zhL~zR>a9$&FDDxbnD%@NmW}<3i8Xxdw$k~aG7r4MOibOPhVnxSI`hVSg6;t3JG({= zQe*|7fHC{4H|8I0TYfA(P~-Oa2oaFjb^Z*qpp_8ZrAus>=j-nO3Ehj{Tk6F)o?p^? zU*VMc)s7>g7uVm`ZK|{Qh4+#|iJmAf3pXq*WRA{ab|w?iQvboOoJ%zoKFP{y>pgiq zVNM%wGIQbj_Qf^-hUG@9Y-0CTFr?&H*D2-f6F+xn7&+6#s042u-;AO($td#Wc7@u? zD~b$p5UpE~d#oAY5?r=X$m!A`BmU|n*HZeP3K76#dOytXl%ds&2Ob>v z$i?`sIek+Ad^?SwZ$sk7s8)QRD!8b6%O#MK5HoVd{~qNcj3pqUF;ih}bJC-|nijCv z7!0OVjpWYheF*m~rd}lmlUD3)c&J*6&jbgNge_NA?ED}Q_$5j-Va=)ih6KN&frNpS zwX!$0pxZO`bNY6sK5586K;WKbF55=_0DD)=QFycSy9*iYaMRHGpQEWA8inRI@4KVq zICl1_w41I!Qz`^2Y+@X5;fV~{*X$STFNv*kcC)Dxp=|0s&ApUi-Dx z-qQdlg+W^z9WQdT83SZa0w$5&Os$5_@%Gs3+gt?vcYPU0o6kW2TwT^46I(2^=gtv z5UgeByle)!^L$?9A?`q)t7^|rfTA!uZ$%zhbegbz4}MO2Lj@&)Sg_1IEJ^?pqAxR%XAjwJ{USwPkmosQo03s>+ox5wSH6D z`1QEEpBW!ZVyLP9xW_BI8kbsZTu(dE=vjNn{7bTu>8qDT&ZySo-+b*p)KPgV;^W`C z4i{87sySt8m4R$B>~Ax!>835gRB>LQ$CQ#uz6IGy;Cu+Lt}Uyi>ho@;1f8IO;ff_bGyHD@N0W}k#^$!kaNu4ML0FWx9aRaaBu4_VbLYRH1 zr-7(HJRZ)T9{_@>+$xI8iOIw2cOED~0MmX?@Ye?PolfOpE4 zw7C&H)Q?_BG)&aVng0$wufxJJ*lpTpDhuR=wyayD>K&_FNs0{hvTDrb*#ac4eZp4 zyIOJcBV{L?DC|K*-f8IEm6N}$L+)!r>9G@Uk$Azm>&$OA9Ut0+36~2>CY7bwO!|&V zT&|E=TdUEiGRhL`>+uICi|pcl$* zW_S@;TT|ob@KbXXY@FDb|2prehB0$CJ62Cl*)`(Bp7nLmUoVBI38$pfqr*D9#&O>F zehGi%glQIGPUKf_Iq2|z^u1y~{wL+hJB>;^;@N#kJyClxPbu>kS_3k3 zzUg(8*^ac~I82+4*J_(h1g2M%2CH9hmFnv*2h-{+Rl^4#nk~z4m$ra&!f3b@le7t~Ak|M$-`@0flJG;Yw zmK611^Oj$#6(ts*m0uR~`&jBR2^qe1&7#EBpoRFnqAt+MW7(-e?CV4Tg)PK$L^H=J zT}K~b43i8QZ7)sLex62V$C9F`(=cjug@RHeBJnf!iw+mD-k+tpr@ySJWQ;5*^Vgjybj~hKj92Xm zF?u!pai_rA*YTs!_g$X1Na%lngyjG5)=)-0XlaFeStj2lrXQK(?YB^=^GCF$ptGgk zy*-<$YM{{s5W;HrS}#PlF{1P;u>K`evN35MrW>4=yspVLxXcR(2&gHLYN)>Zl#A5> z`U%WzSnd`*ExN|c-Ll`bM^fz>bd|gz&*%n$`#N$FG5?m-xX67OYiKB7_fv@~)WG1b zQ`?$g$$<{x2acZBCOCz1Qtkns#XUWjyR3$ zzLCTuLLJv`;Ws zpMFlsJ#bVGEiPsUzJlM;zfjvvOE?eR z`)eDTTf8yYlerTYMo#c3u9S?E#`i}V!^UWMje9cB3bNlbZY^*NFo9l!^7vK5p>41$ zYzLMWPXx9PuE*e=J}_9%A>u!_+h>0COWftq!!IhG{G8dUX7+=Oyq#fzU>?JJvf?W+ z_ArB7T%N9Vq&gWnJWqEpu0#oWpNCt-1A-x&PrMp$>o}53U|bl`eHowHf0_5Q&lTPX z*M}zA2P1Ug!y{lqPdy}(O**B5rlheZsK@SBKa)H2JCf@+!q)Wl@D7ce>R7SPMnC@4rKr2R5h-lDDNc}j-SXxRMM-jXodK@)*o5DDcZafn5X$zaeS3oK!2Oej0$JW@*9Xc8!gi!>^|2POW_>u2aSs3ZW&I`Ncj?OC(bob3o zPEMU`$8o{Gjh9>!xpba;u$PgN_<%XWut}vrD-0RI|5pr^*)MM(50VSI1WiN>krg7K ztb?SZrbjS2J)vwg37MDkEKd)+c&u4Pvm9Mh;`_r;JwLNah`(Zvo4?!0YJETKJ|uX0 zSIZ6i!oz7VW}R6`KnX+G1E z5|1R3bR&Z~@npwgL8VGcJ<-c(MfhF8xKf&jkxA-Xq!4u(hqz2uXf#tbaY+)+OSk|= zWcRl_n$MWRvn9Po%^n74GphcG4gUFM$@6VZ+x#y+zo3GAQ0|)$`Oo1U$anv(q&g^x zi$Tqh49&dsAJB06kys+qaaKyrKnEei`WX&RVJE?$%FH@q;f*iu%kWkAr!)JOffu!8 z^ha=WYU0yMqvyehdmwypZaEE&c=-HtW-tT>{)D@H<=Sqc?H+r(j>l^Q3s=+WFp>J? zpK59NEVM)G-Yl&7r=vjSoL7z)vdvp?jPN6-0;OFWSTkuiCFUn>YaA9RyI~L~_%1}a zz?L5uLRR2=MGvsN^X7Qk&;s7R>$ejmn1sxa15tz3FT%=e{N0y3d~}(=OzQ9Uj?~t) z$`WP{lyGC1rjX}&{Y(790~vYEl>5;x8z&vuHJg)Q*vq6DoPZkb4}^7ZG)IGt-Abp;*KAssp(Af`b(J4?g>s&aSdl% z#dsp=xbCM0)X!8O$(FYy7a5uvQ~o@r>6*UuxFln`La{gIO%!yRQt3-gG@~%^azYy9 ze9js=@3K{o$%2mUx!stsu{cK4LLq@6m?Sn;3h>~wGEIV9;9RAKh>Wa1YBDgN!5UAq zA3LH0WO?PnHYH)2xs8+T%o;NP3YfdI+WQ9eq4&r~1{<7agO|lH!oj7>evJyHC#P?d zmzGXfVz@xeafVXosn_J!kDhe6?229&7FU+}c%jbi2A)4-a5lOj3xP#J@WGxPAr8jI z4lBBR1WviVG1`IC&>_Jw)}=biTXsfMb*#9{Wv}2%_YtEZy|;zX;mIJU=Gk`Jmj|91 zKOK;i^C|-MmHF%W;(F0}I?C_uz+OfdUJWiX>Q8D`-!e)(Hgj7peU8~QH6tduRp|EG z%tl_l;(jv$@bMPou7Th)b#^hqnxlaM7RySEnbA(}fp(J`l#1iCtf1n1^Do*#2%opC z<7fCXc|Y)c4(OQ8{ogi*$FH9^C5xsOI%jP52j?E@P*!svO)aNEWiCY4$|8EVzPA$z zA8%a%Ll3f~0NTRlW>d-RSH*xJsJB7EFmnp>Jj7!%fP{wV=bU3o@#Xpsr$$>5RX2Ag zM#Csd?%5yrPW+0}(wy@{rmPu@Xjnk{q8VQ-D@WhzGB~m3pSDB>1tEA>A(yJ(|DFJ< zgth?R`QGVkxYa26zUr7sW?i@d-|(+NO$t!h=V|^%GLp@aYeRFB5~FU0zD-5DobP@6 zSz(O9`MR^C_)PaI3s{+5zI`zL2D=Pm(IGQFF!JSU!wFdk;b zPIOeEWT!FKS&T5x-))}2C#U3Eez8QA$Fj(k?#)h6SxTrGc}rvu^&D&BNC*$(^Pni1 z@g>mUVtBDP5k=|2m-&VqbVW-&8I91p9r-qYST0StQ^M*Uy)nu?{^!Nw%Fa{WF2zaw zTH6nb!mW9p)3I@W$Ys8AtR}at_Ip%0_ZK7dg+EU^nr;BAr+Jt|WEhSmlz^>FTI6Uz z<+n?)xDM*4VGNl_c@oS8U;p1hyP%qm3xXRI?i}deGbs4!b7@oL zuAg4z;!{5XH3*8`new=7WIDNTQNMHr5u5>jT`U+Qrdy@_)*I1h>W?YK@qxloCfGDV z-jtN9DHXY|OG3tb(NAJ=^V(d4m7aKab{)f&Jk`yxheF_~hBrV}-U^wfV=Ii%>Po?kKttQ(}eg)-YAZ8A!)9C`QXYg6PJzS$= zi30}%*18YZkip8kZ=|+x9^9ay*Nl}Gq1qa(aL*r$Cz@ju5eTchxd@>oUas^>{966ql28*}R;VLe}`isYS2@XdKPsB^Gi{{Gi zVlPvmA^UG;L-sC!ML?z5eQ$YJ__f)cmL%dZv4CF0$7p6!{`DbHAUdHcij+JZRlWD1 ztN2X|t3r_ImKv`Qm^Fw^+3K!A8Ia5hx`$;d;B57)_F$@SYJCp2WFtbE&u?cd8u?fI z4e_bVGbk4rm9|-rmFEvlg=pMmxfG>z%_CPg*WFaQX}1a;*ukw}joLdM)mqBZHTC4{ zSLs*f*`K5|L#H2iMw*&8m~L#4J#tPy)V?ay|p@6iuktT3$g4soU@<4b`g zC+DZ_x$;j31n1d9uTCu5PEQttz~KSlGn4N5nJ&HR7f&ob8d^_v^Ud|8C9ort_nJPt7Fx zz14-wF|)q4lGMh@DLS=QE5pe#Y?`?2uATs3PJ^%rzt3$ShmN3CC&xw-Q~c2ECKuHh)tFQMfz5 z-_aOu&+Y1B3=`(2G+j*3uWXcx6Jp+TftAwdV{>kT{5BccGL*$pZ8730 z+ffrTv{vN)U1O_JqhGLhZ{pA41WV+)2zKxESZKqzq3iLA2eT~Z&CyI zJ5(%HSv7nfDs<-(R=C zt+-7&muSK%+B}5x$mQd;?=B11U$Ry4NGY>gW2%Q*_r3D6d+Rzo|BF`x=yTw>$-j?3 z%(>(s!K!TU`Fb>czBZQrHVvZ#&c{!iZMszN0hur5uPd0DzN}Q>-R=OntpwYzjkHP; zVLnnRk{}RBIH$5HTU@-XW45)~1jXY&S1`G6|B(69zKZQHcKH$vfC*Hu`0-8Z{&B8l z&HXvT&Rn{?Aqur9sn?k_JzXsvRyeRnqr=-J^%aoSg&$(Jb$}K_7%Z zEtijVed<&PFHS729sU#)6cz##(Eko!b!UOO!Ys_uyUg>B{*df>RdY6Q%~6q+y&TnW zDM-z5*Nv+lfH&cSmbX_2(bvot)xPh6zWn}>*v&}5S9idenN!t^S-ge^dxN`FqJ78n zpSGps5g;HoVF#dYBEX*60v1?MAbqLt^BNFKMRq=*Oy2r7Ijs4v-1Zs^tFF}@R^-L+ z>>Nzi_XV`Bmovbfwl=$tX3HHJEb1@UPwurEKoZ0hDnLXo_@iW45$D`L5)!wPpypBJ zHrkW0Fug>yexcm?hq1Iy=fdT z!t~WjkX>&qSr?lVHsYnCe23D(Stnz5=%F;FODB!$B>mio$ zTY(kzJtOoLL+&>>?#oV&iU9a}M~UILinsi&?3#tYK;hoZhR{|P5aY{Ih)iquSB2hS zrpLie?J$zf*B$5dB`q#=yT1SXb^n?-v#Wceu*urJP5a7F8xfTsj53a>v0i(TSb*}QUQ?`syOj+|APorhg zjt^I<&E@2~qU{=E>~LE!M&9uPqf7N_3q0%v1blHhp(WW^6)uS@|G3+Bqd3?yV^RZ@ z4WZB988sDMU}k5pslH%oJOt+u=4c4h*+g9IX7aB}eUg9SszIxE;DmMVn*vtOfB?U! zDYpX_Hp$SSG^TI)f4_c*voSv?BL+H;5!B(VFCQJmun21SI@}*2woJ=xL1bG_qoBS{;SR56UzrdAg(qg0tE9M~Qwv)X54- z0kNhGE+dEg`yK~E&a)aqn;bEV?YqhfM*gs8Z*k(RHvS#rman)0_fc`5*I}$uFBc)t zGM90%xJ&ljdMID-dA#^rEz*8GR@n7;-@u8pn_cr$Ui=QFNtm0s5>RcEvC|FE&Y~Z6 z)}Mb~DoxBngvKT+r5O4b<{3;QL&15zRpK*7&?HMus&!vO)BenJ)symKT+K^E>owSb z{rwBV^q6zE#SSMn8g{mKPOtMK7V#?)HQvE&fA}kt-=;jRawtNiA}N%}Xgzkq9B;lF z`Ag^EvRjdrrmSM?4cU=kF2gX2hv~b*s-)01&|bjl6ZZ8d!)ZtSc>9 zMQIHvn{Q)H3OGLuItSJ*Rax)Q@scKItwLFVMAl^MJvB2*fgO&q%}I4!a`k^io%hZm z5J+kD^R{;Mr`)UD{1Sf~cPs*5LaBBSOu0Tyv6Lm zHK4CSSovTg3|)Vq@3l3&Ux#U;kbSf}HGSrB$ld0pm@s!00V$O|CbT#>1ar1~7g*+H zJ25EvkPDRhiMN#B#yVdi104bIoZXZ)H1rIJXTC(j9DKSJR$Cp$dog*CNz9qoRY}v` zGy_eEP}V4{fx^$Z`1?CghKWqgD7?P37#XHz+PK-eCWv51|J9f%b7EXcai%Z}EUONC zsdVbRSvfil)(;d{%q?eVjWGU<9YPlKCEj-llTH4qoH~X&3c=b>gVg0D@q)}|Ztk4r z%dcCL|5mOv2CUEPv%LB{?>Dzu;~mCof_cON$hbQqCLddwt?Vr&!4^{A{T{&nMgRJO zCE=ywn~XZ_5-(oy@m)q`;F~ZC@qL7cuHteQO9%wbr5;3BzCXcpQQh9Sw&;FKN%0S@_! zRqr*w#=v*WTCWof@mU8S`m%^wfX${ctE;UVy6dn`gNYfCex4~zEbd1c5>GJKtNIOx1UFy&y6=H+`hS}r7-06;4gRo6hRd^piBUz z3|WyS=!~*-8!!QzDw&#&5E>~hlbSP#4DNfVUm9TqS+j1aZOOuo|I?_Gh$twVan{3{ z_6aj_F$upn38CYB019!FZF#F%f0X71wsxvtY88KmCRLh}mCW!T#AnKjkH?)6h9TS# zJi<5?G_WLwxnmTxfz8#sX=M)0gFzMDYuiE@8n_X0Tu8p0|M9Ljfzyc@UKGqY zlvZ%vh2klOQwCTPdO_I(_)kBnaGjX(wii;_w@u zYu3U3)uvtz3locDr^m6U>x0Fzb{15HM?dU?w+s6Qa9Qm8C`tJsgeo`Fm*Ut{bdD6j z%!~=%FH%+s0EuPeWSDhO)i8kK)ap6f#6Ke8nWXHKU5lsrevzVNiFjr!3^ z<>a9Jfo5#j+2NC@gF~kRx$-=5m;DiRS8>|!c5SD5+zp2I?U;>(U8iMz@q)zn=)m`1 zI|Z1p{*=n$&=pf%NiQ_&u_8fPU-5S1b4?sBTfHQXWTp*nMBcm~7<la=S{QP;*Narb8=efcG#&WlG_PZY*w@2l|QXl=V$%ajA;H|75N>$0q z2y|{OUPF;lX>NKhE+8P_OM8Un*IDU*;zb{_jJ~JE*n?x9Cuf1T zqaF+BN^u&lgHiR9cq6+Fa@LfYa48Xrzts(vwy8Q8iQ2ead^`4S%aL^0gKyu$vDB}_AQK_5f6Q=Hk+}a zmL(^PyS$2Kdw-MSQqI_=BZ*fsrcZjJF7guNAZn2!QH-sAK*)+*H3y|hWOxP8cto=c zJRR*ip+CU=*LN`SoOXrVji8qt)tll)f=Amr-a`%JXeTa z=H+NZZeA4geeJk6zWuWEtT=pVT}$U=^uZZ7DF3Z^&}YgMqt%j~n3Af%@`}h_&wc3D0|1qXPBDjIfO7N$%a_+R02>6Kb$`e7_J@DqLF=XpUhp z343bi-BalFz@`}g>g-Ip9Fw`JURK=lb*B@+(7V? zAv4eShq5%KZZWdbi|O%B`s_sr;a`)g@-Iuk?Eo{y7&P5#0xuEvZ|iy6?c<1rqaUO5 zFPcUUN%2qU5l>F4YdiK159Vs4H|Ji)ZeQy+!D_78tE?v>cwX(}O zn%*e9X=6=Cgaob}zw-A`GJ3P4w(Df_MM0d3LQ*GZc(5b?wTZTu2b>QGSpFh--xj*o4GU7cg+V*Ar}j+G@xroE6u(`@ zNSen3f4Bq1^9FDwIxDY5hQ$m+)Au&3HhwC#IIttzx#^B`+xyVnX9{y-x*0_sVu$J$(B?YG0-w0#whloyB&?ve~6i(f@Spp3$Wj-!u;% zwC&zLV(U87i2d{6w95MIUvFULU&BZF#_U7ZW&)`$^Mz+qFN^6%r(fAb&sHs-%=9fh zp(a1xM9`g^w%?a*mOWV0Y4h79*ev$X^_F3+wNJMCmqJ+^d)pHQtNs;?gvZ#=qmQ;_ z#~rt&pSEZ|wm9xlEq?LTofzK9^+ElTxT`UY+Fo7dup2f8DO0FqQ6#Kuj#&f*TBU|9 z7@K!A;t-!71!}D}Wa<9ow#~kDX}8+SGu0Y@P3;`KVR>WSSNM}ZTdAf1n_wTOVg#!W zbLs4au*jRn>sGQM5HDS@h=|Y1{QbZeqHZgCoHI5yqq6=dLl&{5)UvR=^4#SIrz?Ym z)B9b&H(_yqRdQg1@7GFX^ubN!jh}3>hqs^X|DmzX!3Hg!oDQ8GES+f=a>Kdb07%06 z-2=XS4gM@}%cCDVrxSBCB0M8ZyuoRh-sAN?u6DbHD$SOd&5dpH$idsaLM&bb@Efz+ zb&XM7Ok$NqYXFM@x+++$;OyV{9<7AaZlFM zsyQcTykL~SDR+hY^LEwURAuRMq(VtKUdWSI|YMjx} zMmX>1OUiKuVqq1-qZ3G-cD6LV)Ndy{JJ*vt_o@Ri-Hgb9w@%+3o4eP)^WXfX_9=t} z(Fa&(ETMFP-cKSU*}XWi&?J7ov@=^)r#UB6U@9cXzV$gDj4i~TQEETOyjR^7eL8#b zi+iGz|7I|(SXHOk802k<>Ntl%E%@&ezl!*8vVQOXCLxas(_8$?^$!uY74|^kT@Qsj@>{0A#z3A!4?PJDi zaKGzMRP5#yU}`xc;LFXARJG*4G%x4o?e=g^rlI>bA^df%lul*EYnCYZ@m9UX1I@4LhoUYY(uhu>}7Ka~oEnD2THy26BWUQS980nkCYjj-`{txSx BR-FI< literal 0 HcmV?d00001 diff --git a/images/batiments/mine_m.jpg b/images/batiments/mine_m.jpg new file mode 100644 index 0000000000000000000000000000000000000000..28da3ba7538e7e481506d4ef790bfe69266612fe GIT binary patch literal 39347 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

      SF!(1dhJFwAWAtTLnQvND&cV94~ssCp@uya{Co? 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 Qt&nb$oR(_V$-rO@0AZ~_>i_@% literal 0 HcmV?d00001 diff --git a/images/smiles/confused.gif b/images/smiles/confused.gif new file mode 100644 index 0000000000000000000000000000000000000000..0c49e06983f1fff4bc0834b4d86ce39b8a36a914 GIT binary patch literal 171 zcmZ?wbhEHbZXiyV-#U P9L#x)b-Z(h7#XYqI2k)k literal 0 HcmV?d00001 diff --git a/images/smiles/cool.gif b/images/smiles/cool.gif new file mode 100644 index 0000000000000000000000000000000000000000..cead0306c0e38e57bdb0cc85a407b995dcbdc656 GIT binary patch literal 172 zcmZ?wbhEHb+|z`)C(1LA_rU|@;d;3=6kcSq>7bCTj>1sqIsoCSRx)8`fJ$~w+{ zJX`yX^?~=R4m2(o_)+HS{ItMiUIk0)fwE>-?dDgxjscmQ{AM&TEaGA7z8`VSO88#> SHjRW8(oK@nQq4LU7_0%kd_$xF literal 0 HcmV?d00001 diff --git a/images/smiles/eek.gif b/images/smiles/eek.gif new file mode 100644 index 0000000000000000000000000000000000000000..5d3978106a2da37441ed17c9d05383b367570d46 GIT binary patch literal 170 zcmZ?wbhEHbd`4m;$l6XN^_D8SRJJ2FugV_ z;@-1W`~Ak%x7W!T7_8VEVD?C1V$(vmHm-x7t|ENQXTMbHG-$9e9m-TqP;V|s+-sI@ SDB66dp*Gz_Y_|#%gEasOPe3vN literal 0 HcmV?d00001 diff --git a/images/smiles/evil.gif b/images/smiles/evil.gif new file mode 100644 index 0000000000000000000000000000000000000000..ab1aa8e123fe263608d06126ce08c560ad419f97 GIT binary patch literal 236 zcmZ?wbhEHbgxLc6$23bKgaO@B*VYC4FCTM|KGy!A1Lx~^8f$G|7kJ& z%VnN6ZQB2*4FCVX1}P;4DE?$&WMB|r&;e-z*~!3~slec{BxBNqoiq9;sWfXDwJwx! zTfpypu*1~B&zgxLc6$23b2ZD19|4%af-@@>3F2n!7!vFtG{{R2@|NpQ5 zKLsg(0LA~@ey$E)D;vwK1$ZJE z)->GK{b0hvv^Z;7;HB1zIS=v}c`BF7qB`mkh55UYFL448CX~YJS?+%vC0^DXyTAT=mC2Y$ux)_YXI57TebiI literal 0 HcmV?d00001 diff --git a/images/smiles/mad.gif b/images/smiles/mad.gif new file mode 100644 index 0000000000000000000000000000000000000000..1f6c3c2fb401596ec44f4a1189bde2cbc45364aa GIT binary patch literal 174 zcmZ?wbhEHb3F2nzSlmGt}{tp7j|Nnpe z|0z%&3KV~`FfuUkGU$N#ATtaoaG8jR+sH5 z;LGade6U~GQPko`gGJNAq7#;kr@G#2#;~znnVhs^*T0km#>C~4JR&=FdsEeR+|3R= Q;9xFbtmB<4#K>R`0GZ1@LjV8( literal 0 HcmV?d00001 diff --git a/images/smiles/razz.gif b/images/smiles/razz.gif new file mode 100644 index 0000000000000000000000000000000000000000..29da2a2fccc79981bc54db7513ca6d2374592f9d GIT binary patch literal 176 zcmZ?wbhEHb^3h|5y0`zsdjqAOHXV zwXw1B|EEADAfWh@g^_`Qk3k2-0hz(T5_`c@GHdRQt4o8V#Kj6YnC2W7^l?<@Q2(%O z^|TpzE=L6K%vq%4Qv0AgI88 ZPHWn(3w4)`M4Rs!oY|mbDlEug4FCb$KH>lX literal 0 HcmV?d00001 diff --git a/images/smiles/redface.gif b/images/smiles/redface.gif new file mode 100644 index 0000000000000000000000000000000000000000..ad7628320c3d15756c84794c8c0523f1072da640 GIT binary patch literal 650 zcmZ?wbhEHb&Qw$Gs7{2#K|NnmWcSgp)ZKdDmF#NyN{%1+%|LxoV z&6x4L*vr+`_5YJ6|9^e`f9A~pR}4QI8vg%z`Rh8vzsC$emo5AMNBH0A=KudDKaP*T z>0!pe!0`X+%wGqqfegj}+zPv3R$%UgcxPlMx(u7qxxxfZd?$&YQ;PGndxWo3ZY ziH`8-T?`B&DNk$k=JGRs=w-6FQO@h2ko&aap$ji#VOF!1O><{wyHRCMkfx2Ai?Slv zYA%q~j0}tnyg^Qv|J?fJ`y}Jo`B}5IcZU0i%+^)m>vp{!Bqu6#)+xQyYu&8=mRY(7 z)}5aCNL5gG*%{+AHF>K87ridk_T^KXg3qiu^$yZP~SpxtUz5smy literal 0 HcmV?d00001 diff --git a/images/smiles/rolleyes.gif b/images/smiles/rolleyes.gif new file mode 100644 index 0000000000000000000000000000000000000000..d7f5f2f4b18f8a141c7a5dd1e09ff106a2f9fa1e GIT binary patch literal 485 zcmZ?wbhEHbgxLc6$23bKgaO@B*Xvz|NqTp_`ikW|G&xq{~!PVSNQ)^ zpx|qe3NTRo&+X?L671|4;A*62z|05~RQ$=p%EiFTpaW6>GM0fQZi6Rh*4!PT(*&f% z*$TRZ<}@?I^CYG*?eW$Pd$isBan+(fO1gn0b6dW=x%w~q}~tKE&`I~ zWZ+_80zw8BmJOU2m9Ux1yJ3o3D&v+$ZG#t4ZLVMy3?Qu_ZQMY+8CYaDcq&S-H42Fh z{c)CE%Sn@EnS+n-#i)qLlhWcv5Vs)dU<2w9+u*4hy}}}Vq4ah~j;>ScENX^v3nduQ d4TmZP8gAjeGaoDCD!-THXQ zaD}Q`!Ef~@t%4VS^H`jpHe@qRnmW&T1rN_M_11z^Th4v=m-`t@{9)jl*%hj`3F2nzSlmGt}{tp7jjg5`} z|9}1eDNqRrDE?$&WMJT9&;fBkW-zcsU+|R7ntLO3**QsZu>uaJIn9DTj_MrhAC|2y zn^DM@#l<(@zDcWq`B+oyDaGR~0+SdoFXD`_(PqAxy<2o0Q>0^(jhH~$tb+>(~Mkip?iSJVUgxLc6$23bKgaNIF2n!7!vD80{0DM@;NRr`CxMLP|FjsU zO`B$HZ2T{m`TzgdAk{j*8D$QDUE*nK$ z7w|KG>@aokb7%R&!0WI`LE+V`jZbtHGVEq^HDzd8gshBhJhWk{9N&@6Gj#R{?N7d_ u@Ss3Q_U6Qmr`{j;vSH$AZf0`Va5JoNi_%bKV4KJmrQFw{HdRBB!5RP#AxjVd literal 0 HcmV?d00001 diff --git a/images/smiles/wink.gif b/images/smiles/wink.gif new file mode 100644 index 0000000000000000000000000000000000000000..d1482880421dde677d3302940aa875ff22a11b06 GIT binary patch literal 170 zcmZ?wbhEHba9D@n#Zhbsv zutHU>;J1F0R>6zE2`tV}8xE^#?@bGklrZsUYAp!;dbG*vY{CM88Jk-qvwbqQUtQFY Pm?x1IA$CiJiNP8Goi0B( literal 0 HcmV?d00001 diff --git a/pages/images/technologies/IA4.jpg b/images/technologies/IA4.jpg similarity index 100% rename from pages/images/technologies/IA4.jpg rename to images/technologies/IA4.jpg diff --git a/pages/images/technologies/Mjolnir.jpg b/images/technologies/Mjolnir.jpg similarity index 100% rename from pages/images/technologies/Mjolnir.jpg rename to images/technologies/Mjolnir.jpg diff --git a/pages/images/technologies/arme.jpg b/images/technologies/arme.jpg similarity index 100% rename from pages/images/technologies/arme.jpg rename to images/technologies/arme.jpg diff --git a/images/technologies/arme.png b/images/technologies/arme.png new file mode 100644 index 0000000000000000000000000000000000000000..89e076229b8d0954ed0a0ff08040e14462d765d5 GIT binary patch literal 40693 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 literal 0 HcmV?d00001 diff --git a/pages/images/technologies/armement.jpg b/images/technologies/armement.jpg similarity index 100% rename from pages/images/technologies/armement.jpg rename to images/technologies/armement.jpg diff --git a/pages/images/technologies/armuremc8ij.jpg b/images/technologies/armuremc8ij.jpg similarity index 100% rename from pages/images/technologies/armuremc8ij.jpg rename to images/technologies/armuremc8ij.jpg diff --git a/images/technologies/blindage.jpg b/images/technologies/blindage.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0dc1d6dcabb64a6c599afd7adbaeea3fba9b0ba8 GIT binary patch literal 49960 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 R{{XA~+rRx@oqIih|Jk1(C0+mk literal 0 HcmV?d00001 diff --git a/pages/images/terrestre/ghostic1.jpg b/images/terrestre/ghostic1.jpg similarity index 100% rename from pages/images/terrestre/ghostic1.jpg rename to images/terrestre/ghostic1.jpg diff --git a/pages/images/terrestre/lanceur_torpilles.jpg b/images/terrestre/lanceur_torpilles.jpg similarity index 100% rename from pages/images/terrestre/lanceur_torpilles.jpg rename to images/terrestre/lanceur_torpilles.jpg diff --git a/pages/images/terrestre/pelican.jpg b/images/terrestre/pelican.jpg similarity index 100% rename from pages/images/terrestre/pelican.jpg rename to images/terrestre/pelican.jpg diff --git a/pages/images/terrestre/pelican_armed.jpg b/images/terrestre/pelican_armed.jpg similarity index 100% rename from pages/images/terrestre/pelican_armed.jpg rename to images/terrestre/pelican_armed.jpg diff --git a/pages/images/terrestre/phantomfu2.jpg b/images/terrestre/phantomfu2.jpg similarity index 100% rename from pages/images/terrestre/phantomfu2.jpg rename to images/terrestre/phantomfu2.jpg diff --git a/pages/images/terrestre/scorpion.jpg b/images/terrestre/scorpion.jpg similarity index 100% rename from pages/images/terrestre/scorpion.jpg rename to images/terrestre/scorpion.jpg diff --git a/pages/images/terrestre/scorpionN.jpg b/images/terrestre/scorpionN.jpg similarity index 100% rename from pages/images/terrestre/scorpionN.jpg rename to images/terrestre/scorpionN.jpg diff --git a/pages/images/terrestre/shade.jpg b/images/terrestre/shade.jpg similarity index 100% rename from pages/images/terrestre/shade.jpg rename to images/terrestre/shade.jpg diff --git a/pages/images/terrestre/shadow.jpg b/images/terrestre/shadow.jpg similarity index 100% rename from pages/images/terrestre/shadow.jpg rename to images/terrestre/shadow.jpg diff --git a/pages/images/terrestre/spectre1.jpg b/images/terrestre/spectre1.jpg similarity index 100% rename from pages/images/terrestre/spectre1.jpg rename to images/terrestre/spectre1.jpg diff --git a/pages/images/terrestre/spirit1.jpg b/images/terrestre/spirit1.jpg similarity index 100% rename from pages/images/terrestre/spirit1.jpg rename to images/terrestre/spirit1.jpg diff --git a/pages/images/terrestre/stationdedefensent8.jpg b/images/terrestre/stationdedefensent8.jpg similarity index 100% rename from pages/images/terrestre/stationdedefensent8.jpg rename to images/terrestre/stationdedefensent8.jpg diff --git a/pages/images/terrestre/strongshade.jpg b/images/terrestre/strongshade.jpg similarity index 100% rename from pages/images/terrestre/strongshade.jpg rename to images/terrestre/strongshade.jpg diff --git a/pages/images/terrestre/tourelle.jpg b/images/terrestre/tourelle.jpg similarity index 100% rename from pages/images/terrestre/tourelle.jpg rename to images/terrestre/tourelle.jpg diff --git a/pages/diz/forerunner/images/tourelle_fixe.jpg b/images/terrestre/tourelle_fixe.jpg similarity index 100% rename from pages/diz/forerunner/images/tourelle_fixe.jpg rename to images/terrestre/tourelle_fixe.jpg diff --git a/pages/images/terrestre/tourelle_gauss.jpg b/images/terrestre/tourelle_gauss.jpg similarity index 100% rename from pages/images/terrestre/tourelle_gauss.jpg rename to images/terrestre/tourelle_gauss.jpg diff --git a/pages/images/terrestre/tourelle_plasma.jpg b/images/terrestre/tourelle_plasma.jpg similarity index 100% rename from pages/images/terrestre/tourelle_plasma.jpg rename to images/terrestre/tourelle_plasma.jpg diff --git a/pages/images/terrestre/tourellebarreau.jpg b/images/terrestre/tourellebarreau.jpg similarity index 100% rename from pages/images/terrestre/tourellebarreau.jpg rename to images/terrestre/tourellebarreau.jpg diff --git a/pages/images/terrestre/tourioniquegr6.jpg b/images/terrestre/tourioniquegr6.jpg similarity index 100% rename from pages/images/terrestre/tourioniquegr6.jpg rename to images/terrestre/tourioniquegr6.jpg diff --git a/pages/images/terrestre/tourplasmasl4.jpg b/images/terrestre/tourplasmasl4.jpg similarity index 100% rename from pages/images/terrestre/tourplasmasl4.jpg rename to images/terrestre/tourplasmasl4.jpg diff --git a/pages/images/terrestre/warthog-vrl.jpg b/images/terrestre/warthog-vrl.jpg similarity index 100% rename from pages/images/terrestre/warthog-vrl.jpg rename to images/terrestre/warthog-vrl.jpg diff --git a/pages/images/terrestre/wraith.jpg b/images/terrestre/wraith.jpg similarity index 100% rename from pages/images/terrestre/wraith.jpg rename to images/terrestre/wraith.jpg diff --git a/pages/images/vaisseaux/cargosladen.jpg b/images/vaisseaux/cargosladen.jpg similarity index 100% rename from pages/images/vaisseaux/cargosladen.jpg rename to images/vaisseaux/cargosladen.jpg diff --git a/pages/images/vaisseaux/cargosparabola.jpg b/images/vaisseaux/cargosparabola.jpg similarity index 100% rename from pages/images/vaisseaux/cargosparabola.jpg rename to images/vaisseaux/cargosparabola.jpg diff --git a/pages/images/vaisseaux/charognard.jpg b/images/vaisseaux/charognard.jpg similarity index 100% rename from pages/images/vaisseaux/charognard.jpg rename to images/vaisseaux/charognard.jpg diff --git a/pages/images/vaisseaux/chasseurlourd7id.jpg b/images/vaisseaux/chasseurlourd7id.jpg similarity index 100% rename from pages/images/vaisseaux/chasseurlourd7id.jpg rename to images/vaisseaux/chasseurlourd7id.jpg diff --git a/pages/images/vaisseaux/chasseurlourdfk8.jpg b/images/vaisseaux/chasseurlourdfk8.jpg similarity index 100% rename from pages/images/vaisseaux/chasseurlourdfk8.jpg rename to images/vaisseaux/chasseurlourdfk8.jpg diff --git a/pages/images/vaisseaux/citecovenant.jpg b/images/vaisseaux/citecovenant.jpg similarity index 100% rename from pages/images/vaisseaux/citecovenant.jpg rename to images/vaisseaux/citecovenant.jpg diff --git a/pages/images/vaisseaux/colonisation.jpg b/images/vaisseaux/colonisation.jpg similarity index 100% rename from pages/images/vaisseaux/colonisation.jpg rename to images/vaisseaux/colonisation.jpg diff --git a/pages/images/vaisseaux/coviecolobv3.jpg b/images/vaisseaux/coviecolobv3.jpg similarity index 100% rename from pages/images/vaisseaux/coviecolobv3.jpg rename to images/vaisseaux/coviecolobv3.jpg diff --git a/pages/images/vaisseaux/croiseur.jpg b/images/vaisseaux/croiseur.jpg similarity index 100% rename from pages/images/vaisseaux/croiseur.jpg rename to images/vaisseaux/croiseur.jpg diff --git a/pages/images/vaisseaux/croiseur8er.jpg b/images/vaisseaux/croiseur8er.jpg similarity index 100% rename from pages/images/vaisseaux/croiseur8er.jpg rename to images/vaisseaux/croiseur8er.jpg diff --git a/pages/images/vaisseaux/croiseurclassealcyon130om6.jpg b/images/vaisseaux/croiseurclassealcyon130om6.jpg similarity index 100% rename from pages/images/vaisseaux/croiseurclassealcyon130om6.jpg rename to images/vaisseaux/croiseurclassealcyon130om6.jpg diff --git a/pages/images/vaisseaux/croiseurclassemarathon1oc0.jpg b/images/vaisseaux/croiseurclassemarathon1oc0.jpg similarity index 100% rename from pages/images/vaisseaux/croiseurclassemarathon1oc0.jpg rename to images/vaisseaux/croiseurclassemarathon1oc0.jpg diff --git a/pages/images/vaisseaux/croiseurforrunerns4.jpg b/images/vaisseaux/croiseurforrunerns4.jpg similarity index 100% rename from pages/images/vaisseaux/croiseurforrunerns4.jpg rename to images/vaisseaux/croiseurforrunerns4.jpg diff --git a/pages/images/vaisseaux/croiseurmarathonke3.jpg b/images/vaisseaux/croiseurmarathonke3.jpg similarity index 100% rename from pages/images/vaisseaux/croiseurmarathonke3.jpg rename to images/vaisseaux/croiseurmarathonke3.jpg diff --git a/pages/images/vaisseaux/csnucargoladen2al8.jpg b/images/vaisseaux/csnucargoladen2al8.jpg similarity index 100% rename from pages/images/vaisseaux/csnucargoladen2al8.jpg rename to images/vaisseaux/csnucargoladen2al8.jpg diff --git a/pages/images/vaisseaux/csnucargoparabola2mc9.jpg b/images/vaisseaux/csnucargoparabola2mc9.jpg similarity index 100% rename from pages/images/vaisseaux/csnucargoparabola2mc9.jpg rename to images/vaisseaux/csnucargoparabola2mc9.jpg diff --git a/pages/images/vaisseaux/csnufregatedk7.jpg b/images/vaisseaux/csnufregatedk7.jpg similarity index 100% rename from pages/images/vaisseaux/csnufregatedk7.jpg rename to images/vaisseaux/csnufregatedk7.jpg diff --git a/pages/images/vaisseaux/csnuportevaisseauxgy3.jpg b/images/vaisseaux/csnuportevaisseauxgy3.jpg similarity index 100% rename from pages/images/vaisseaux/csnuportevaisseauxgy3.jpg rename to images/vaisseaux/csnuportevaisseauxgy3.jpg diff --git a/images/vaisseaux/csnusuperportevaisseauxrw4.jpg b/images/vaisseaux/csnusuperportevaisseauxrw4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..9f85ae5daa32ed664be513e76379f863e0239344 GIT binary patch literal 29407 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 L`LzE4+2jA&oxFgR literal 0 HcmV?d00001 diff --git a/pages/images/vaisseaux/superdestroyerwa6.jpg b/images/vaisseaux/superdestroyerwa6.jpg similarity index 100% rename from pages/images/vaisseaux/superdestroyerwa6.jpg rename to images/vaisseaux/superdestroyerwa6.jpg diff --git a/pages/images/vaisseaux/vaisseau.jpg b/images/vaisseaux/vaisseau.jpg similarity index 100% rename from pages/images/vaisseaux/vaisseau.jpg rename to images/vaisseaux/vaisseau.jpg diff --git a/pages/images/vaisseaux/vaisseaucolonisationmm4.jpg b/images/vaisseaux/vaisseaucolonisationmm4.jpg similarity index 100% rename from pages/images/vaisseaux/vaisseaucolonisationmm4.jpg rename to images/vaisseaux/vaisseaucolonisationmm4.jpg diff --git a/pages/images/vaisseaux/vaisseaudebataille9na.jpg b/images/vaisseaux/vaisseaudebataille9na.jpg similarity index 100% rename from pages/images/vaisseaux/vaisseaudebataille9na.jpg rename to images/vaisseaux/vaisseaudebataille9na.jpg diff --git a/includes/classement/conf.php b/includes/classement/conf.php new file mode 100644 index 0000000..5432ecc --- /dev/null +++ b/includes/classement/conf.php @@ -0,0 +1,6 @@ + diff --git a/includes/classement/fonctions.php b/includes/classement/fonctions.php new file mode 100644 index 0000000..6cce2b7 --- /dev/null +++ b/includes/classement/fonctions.php @@ -0,0 +1,284 @@ + \ No newline at end of file diff --git a/includes/classement/footer.php b/includes/classement/footer.php new file mode 100644 index 0000000..11a09ca --- /dev/null +++ b/includes/classement/footer.php @@ -0,0 +1,3 @@ + + + diff --git a/includes/classement/header.php b/includes/classement/header.php new file mode 100644 index 0000000..3649767 --- /dev/null +++ b/includes/classement/header.php @@ -0,0 +1,8 @@ + + + + + Document sans titre + + + \ No newline at end of file diff --git a/includes/common.php b/includes/common.php new file mode 100644 index 0000000..aa9daa2 --- /dev/null +++ b/includes/common.php @@ -0,0 +1,60 @@ +load(); + +//On prépare le gestionnaire de templates +$template = new Smarty(); + +$template->template_dir = _FCORE.'templates/templates/'; +$template->compile_dir = _FCORE.'templates/templates_c/'; +$template->config_dir = _FCORE.'templates/configs/'; +$template->cache_dir = _FCORE.'templates/cache/'; + +$template->assign('date',strftime("%A %d %B %Y %H:%M")); +$template->assign('datehb',str_replace('.','',strftime("/%a %d %b %Y/%H%M %S"))); + +$link2 = array_map(create_function('$var','return(url($var,TRUE));'),$config['link']); +$link_menu = array_map(create_function('$var','return(url($var,TRUE));'),$config['menu']); +$link_menua = array_map(create_function('$var','return(url($var,TRUE));'),$config['menuadmin']); +$link['lastNewsn'] = "csnu"; +$link = array_map('url',$link); +$all_link = array_merge($link,$link2); + +$template->assign('link',$all_link); +$template->assign('menu',$link_menu); +$template->assign('menua',$link_menua); + +//$HEADER = '
      Attention : Mise à jour en cours, certaines pages risquent d\'être inactives ou buggées quelques temps
      '; +$HEADER = ''; + +$nanite = 0; + +$PUB = ' +
      '; +?> diff --git a/includes/constructions.php b/includes/constructions.php new file mode 100644 index 0000000..33a2d08 --- /dev/null +++ b/includes/constructions.php @@ -0,0 +1,83 @@ +pret(); + $nbc = count($cons); + $out = ""; + for($i=0 ; $i<$nbc ; $i++) { + $var = $batimentVAR[$cons[$i][0]]; + $nb = $queryPlanete[$var] + $cons[$i][1]; + if ($i != 0) $out .= ", "; + $out .= "`$var` = '$nb'"; + } + $export = mysql_real_escape_string(serialize($file)); + if (!empty($out)) { + $out .= ','; + mysql_query("UPDATE `planete` SET $out `file_bat` = '$export' WHERE `id` = '$idPlan';"); + } + + +//Technologies + if (empty($queryPlanete['file_tech'])) $file = new gererFile($queryUser['prodfile']+2); + else $file = unserialize($queryPlanete['file_tech']); + + $cons = $file->pret(); + $nbc = count($cons); + $out = ""; + for($i=0 ; $i<$nbc ; $i++) { + $var = $technoloVAR[$cons[$i][0]]; + $nb = $queryUser[$var] + $cons[$i][1]; + if ($i != 0) $out .= ", "; + $out .= "`$var` = '$nb'"; + } + $export = mysql_real_escape_string(serialize($file)); + if (!empty($out)) { + mysql_query("UPDATE `user` SET $out WHERE `id` = '$id_user';"); + mysql_query("UPDATE `planete` SET `file_tech` = '$export' WHERE `id` = '$idPlan';"); + } + + +//Vaisseaux + if (empty($queryPlanete['file_vais'])) $file = new gererFile($queryUser['prodfile']+2); + else $file = unserialize($queryPlanete['file_vais']); + + $cons = $file->pret(); + $nbc = count($cons); + $out = ""; + for($i=0 ; $i<$nbc ; $i++) { + $var = $nomvaisnVAR[$cons[$i][0]]; + $nb = $cons[$i][1]; + if ($i != 0) $out .= ", "; + $out .= "`$var` = `$var` + '$nb'"; + } + $export = mysql_real_escape_string(serialize($file)); + if (!empty($out)) { + $out .= ','; + mysql_query("UPDATE `planete` SET $out `file_vais` = '$export' WHERE `id` = '$idPlan';"); + } + + +//Terrestre & défenses + if (empty($queryPlanete['file_ter'])) $file = new gererFile($queryUser['prodfile']+2); + else $file = unserialize($queryPlanete['file_ter']); + + $cons = $file->pret(); + $nbc = count($cons); + $out = ""; + for($i=0 ; $i<$nbc ; $i++) { + $var = $nomterrnVAR[$cons[$i][0]]; + $nb = $cons[$i][1]; + if ($i != 0) $out .= ", "; + $out .= "`$var` = `$var` + '$nb'"; + } + $export = mysql_real_escape_string(serialize($file)); + if (!empty($out)) { + $out .= ','; + mysql_query("UPDATE `planete` SET $out `file_ter` = '$export' WHERE `id` = '$idPlan';"); + } +?> \ No newline at end of file diff --git a/fermerServeur.php b/includes/fermerServeur.php similarity index 92% rename from fermerServeur.php rename to includes/fermerServeur.php index 10c735d..90cee64 100644 --- a/fermerServeur.php +++ b/includes/fermerServeur.php @@ -58,4 +58,6 @@ if ($fermerServeur_timeE < time() && !empty($fermerServeur_timeE)) $fermerServeu if (!empty($durer)) $durer = '

      Durée de la phase de maintenance : '.$durer; $fermerServeur_Contenu = 'Une phase de maintenance du serveur va être effectuée exceptionnellement '.$ouvr.'.

      Pour plus d\'information sur les corrections et nouveautés apportés, nous vous conseillons de lire les
      annonces officielles sur le forum du jeu.'.$durer.'

      Merci de votre compréhension'; } + + $HEADER .= '
      Serveur en maintenance : Le serveur est actuellement dans une phase de mise à jour. Certaines pages risquent d\'être inactives ou buggées quelques temps Réouverture dans '.($fermerServeur_timeE-time()).' secondes
      '; ?> \ No newline at end of file diff --git a/includes/flottes.php b/includes/flottes.php new file mode 100644 index 0000000..f6d5432 --- /dev/null +++ b/includes/flottes.php @@ -0,0 +1,300 @@ +query("SELECT * FROM `$table` WHERE `id_user` = '$id_user' OR (`end_galaxie` = '$Hgalaxie' AND `end_ss` = '$Hss' AND `end_position` = '$Hposition')"); +for ($i=0 ; $i<$chapeau->num_rows ; $i++) { + $resultat = $req[$i]; + $id_flotte = $resultat['id']; + $mission = $resultat['mission']; + $end_galaxie = $resultat['end_galaxie']; + $end_ss = $resultat['end_ss']; + $end_position = $resultat['end_position']; + $temps = $resultat['start_time'] + $resultat['end_time']; + if ($resultat['effectue'] != 1 && time() >= $resultat['start_time'] + $resultat['end_time'] && !empty($resultat['end_time'])) { + + //Mission attaquer + if ($mission == 1) { + require_once('Class/class.combat.php'); + $table = $config['db_prefix'].'planete'; + $resultatT = $chapeau->unique_query("SELECT `debris_met`, `debris_cri` FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + + if ($resultat['effectue'] == 2) { + $table = $config['db_prefix'].'flottes_combats'; + $resultatC = $chapeau->unique_query("SELECT * FROM `$table` WHERE `refflotte` = '$id_flotte'"); + if (!$resultatC) die('Erreur dans le script de combat, contactez d\'urgence un administrateur !'); + if (time() >= $resultatC['timestamp']) { + //On récupère le combat + $combat = unserialize($resultatC['serialize']); + + //Mise à jour des tactiques + if (!empty($resultatC['tactiqueAT'])) $combat->changerTactiqueAT($resultatC['tactiqueAT']); + if (!empty($resultatC['tactiqueEN'])) $combat->changerTactiqueEN($resultatC['tactiqueEN']); + + while($combat->timestamp <= time()) { + //On passe le tour + $combat->Ntour++; + + //Détermine qui est le tour : attaquant ou défenseur + if (floor($combat->Ntour/2) == $combat->Ntour/2) { //Le tour est paire : tour attaquant + $arraytactique = tactique($combat->ATtactique); + if (@$combat->attaquerVais($combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], true, !$arraytactique[3]), true), true) == 0) { //Attaquant vainceur + mysql_query("DELETE FROM `flottes_combats` WHERE `refflotte` = '$id_flotte'"); + mysql_query("UPDATE `flottes` SET ".$combat->exportAT(true).", `effectue` = '1', `ret_time` = ".$combat->timestamp." WHERE `id` = '$id_flotte'"); + mysql_query("UPDATE `planete` SET ".$combat->exportEN()." WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + $send = $combat->genRapport(true, true); + } + else $send = $combat->genRapport(false); + } + else { //Le tour est impaire : tour défenseur + $arraytactique = tactique($combat->ENtactique); + if (@$combat->attaquerVais($combat->calcAttaque($arraytactique[2] + $combat->regenereBC($arraytactique[1], false, !$arraytactique[3]), false), false) == 0) { //Défenseur vainceur + mysql_query("DELETE FROM `flottes_combats` WHERE `refflotte` = '$id_flotte'"); + mysql_query("DELETE FROM `flottes` WHERE `id` = '$id_flotte'"); + mysql_query("UPDATE `planete` SET ".$combat->exportEN()." WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + $send = $combat->genRapport(true, false); + } + else $send = $combat->genRapport(false); + } + + //On envoie les rapports aux joueurs concernés + $temps = $combat->timestamp; + mysql_query("INSERT INTO `mail` VALUES(NULL, '1', '".trouvNom($send[2])."', '', 'Combat', '".$send[0]."', '$temps')") or die ("erreur sql ".mysql_error()); + mysql_query("INSERT INTO `mail` VALUES(NULL, '1', '".trouvNom($send[3])."', '', 'Combat', '".$send[1]."', '$temps')") or die ("erreur sql ".mysql_error()); + + //Prévision du prochain tour + $combat->timestamp += 300; + } + $timestamp_suite = $combat->timestamp; + + $debriM = $combat->debriM + $resultatT['debris_met']; + $debriC = $combat->debriC + $resultatT['debris_cri']; + + $combat->debriM = 0; + $combat->debriC = 0; + + //On sérialise la classe pour l'exporter + $serialise = serialize($combat); + + //On enregistre le combat dans la base de données + mysql_query("UPDATE `flottes_combats` SET `serialize` = '$serialise', `tactiqueAT` = '0', `tactiqueEN` = '0', `timestamp` = '$timestamp_suite' WHERE `refflotte` = '$id_flotte'"); + mysql_query("UPDATE `planete` SET `debris_met` = '$debriM', `debris_cri` = '$debriC' WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + } + } + else { + //On place la flotte en attente + $table = $config['db_prefix'].'flottes'; + $chapeau->query("UPDATE `$table` SET `effectue` = '2' WHERE `id` = '$id_flotte'"); + + //On trouve les variables nécessaire pour le combat : vaisseaux, défenses, ... + $table = $config['db_prefix'].'planete'; + $resultatDef = $chapeau->unique_query("SELECT * FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + + //On déclare le combat + $combat = new Combat($resultat, $resultatDef, $resultatDef); + + //Définition des tactiques par défaut pour les deux combatants + $table = $config['db_prefix'].'user'; + + $resultatU = $chapeau->unique_query("SELECT `combatAT_tactique` FROM `$table` WHERE `id` = '".$resultat['id_user']."'"); + if (empty($resultat['tactiqueAT'])) $combat->changerTactiqueAT($resultatU['combatAT_tactique']); + else $combat->changerTactiqueAT($resultat['tactiqueAT']); + + $resultatU = mysql_query("SELECT combatDE_tactique FROM `$table` WHERE `id` = '".$resultatDef['id_user']."'"); + if (empty($resultat['tactiqueEN'])) $combat->changerTactiqueEN($resultatU['combatDE_tactique']); + else $combat->changerTactiqueEN($resultat['tactiqueEN']); + + //Lancement de l'attaque + if (@$combat->attaquerVais($combat->calcAttaque(100,true),true) == 0) { //Attaquant vainceur + mysql_query("DELETE FROM `flottes_combats` WHERE `refflotte` = '$id_flotte'"); + mysql_query("UPDATE `flottes` SET ".$combat->exportAT(true).", `effectue` = '1', `ret_time` = ".$combat->timestamp." WHERE `id` = '$id_flotte'"); + mysql_query("UPDATE `planete` SET ".$combat->exportEN()." WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + $send = $combat->genRapport(true, true); + } + else $send = $combat->genRapport(false); + + //On envoie les rapports aux joueurs concernés + $temps = $combat->timestamp; + mysql_query("INSERT INTO `mail` VALUES(NULL, '1', '".trouvNom($send[2])."', '', 'Combat', '".$send[0]."', '$temps')"); + mysql_query("INSERT INTO `mail` VALUES(NULL, '1', '".trouvNom($send[3])."', '', 'Combat', '".$send[1]."', '$temps')"); + + + //Prévision du prochain tour + $combat->timestamp += 300; + $timestamp_suite = $combat->timestamp; + + $debriM = $combat->debriM + $resultatT['debris_met']; + $debriC = $combat->debriC + $resultatT['debris_cri']; + + $combat->debriM = 0; + $combat->debriC = 0; + + //On sérialise la classe pour l'exporter + $serialise = serialize($combat); + + //On enregistre le combat dans la base de données + mysql_query("INSERT INTO `flottes_combats` VALUES(NULL, '".$resultat['id']."', '$timestamp_suite', '$serialise', '0', '0')"); + mysql_query("UPDATE `planete` SET `debris_met` = '$debriM', `debris_cri` = '$debriC' WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + } + } + //Mission Transporter + elseif ($mission == 2) { + $table = $config['db_prefix'].'planete'; + $resultatT = $chapeau->unique_query("SELECT `metal`, `cristal`, `hydrogene` FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + $Cmetal = $resultat['contenu_metal'] + $resultatT['metal']; + $Ccristal = $resultat['contenu_cristal'] + $resultatT['cristal']; + $Chydrogene = $resultat['contenu_hydrogene'] + $resultatT['hydrogene']; + $table = $config['db_prefix'].'planete'; + $chapeau->query("UPDATE `$table` SET `metal` = '$Cmetal', `cristal` = '$Ccristal', `hydrogene` = '$Chydrogene' WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + $table = $config['db_prefix'].'flottes'; + $chapeau->query("UPDATE `$table` SET `effectue` = '1', `contenu_metal` = '0', `contenu_cristal` = '0', `contenu_hydrogene` = '0' WHERE `id` = '$id_flotte'"); + + $message = mysql_real_escape_string('Vos vaisseaux ont déposés '.$resultat['contenu_metal'].' de métal, '.$resultat['contenu_cristal'].' de cristal et '.$resultat['contenu_hydrogene'].' d\'hydrogène aux coordonnées '.$end_galaxie.':'.$end_ss.':'.$end_position); + $chapeau->query("INSERT INTO mail VALUES('', '1', '".trouvNom($id_user)."', '', 'Transport', '$message', '$temps')"); + } + //Mission Coloniser + elseif ($mission == 3) { + $table = $config['db_prefix'].'planete'; + $chapeau->query("SELECT * FROM `$table` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + if (!$chapeau->num_rows > 0) { + $time = time(); + $cases = mt_rand(125,222); + $image = mt_rand(1,15); + $Cmetal = $resultat['contenu_metal'] + 1000; + $Ccristal = $resultat['contenu_cristal'] + 700; + $Chydrogene = $resultat['contenu_hydrogene']; + + //Calcul de l'isolement + $nbPlan = count($queryPlanetes); + switch($nbPlan){ + case 11: $tps = 2; break; + case 12: $tps = 4; break; + case 13: $tps = 6; break; + case 14: $tps = 8; break; + case 15: $tps = 12; break; + case 16: $tps = 16; break; + case 17: $tps = 20; break; + default: $tps = 24; + } + $debut = mktime(rand(0, 24-$tps), 0, 0, date('n'), date('j'), date('Y')); + $fin = $debut + $tps * 3600; + + $chapeau->query("INSERT INTO planete (`id_user`, `isolement`, `nom_planete`, `galaxie`, `ss`, `position`, `image`, `cases`, `timestamp`, `metal`, `cristal`, `hydrogene`) VALUES ('$id_user', '$debut $fin', 'Planète colonisée', '$end_galaxie', '$end_ss', '$end_position', '$image', '$cases', '$time', '$Cmetal', '$Ccristal', '$Chydrogene')"); + + if ($resultat['nb_vais'] == 1) { + $resultat['nb_vais'] = -1; + $chapeau->query("DELETE FROM `flottes` WHERE `id` = '$id_flotte'"); + } + else $chapeau->query("UPDATE `flottes` SET `effectue` = '1', `vaisseau_3` = `vaisseau_3` - 1, `nb_vais` = `nb_vais` - 1, `contenu_metal` = '0', `contenu_cristal` = '0', `contenu_hydrogene` = '0' WHERE `id` = '$id_flotte'"); + + $message = 'Votre vaisseau a atteint la planète ['.$end_galaxie.':'.$end_ss.':'.$end_position.'] et commence la colonisation'; + $chapeau->query("INSERT INTO `mail` VALUES('', '1', '".trouvNom($resultat['id_user'])."', '', 'Colonisation', '$message', '$temps')"); + } + else $chapeau->query("INSERT INTO `mail` VALUES('', '1', '".trouvNom($resultat['id_user'])."', '', 'Colonisation', 'Nous n''avons pas pu coloniser la planète [$end_galaxie:$end_ss:$end_position] car lorsque nous sommes arrivé sur place, elle était déjà colonisée.', '$temps')"); + } + //Mission Recycler + elseif ($mission == 4) { + $resultatT = $chapeau->unique_query("SELECT * FROM `planete` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + if ($resultatT) { + $resultat['contenu_max'] -= (vais_conso($resultat['end_time'], count($resultat['nb_vais']))*$resultat['vitesse']*5) + $resultat['contenu_metal'] + $resultat['contenu_cristal'] + $resultat['contenu_hydrogene']; + + $debris_met = $resultatT['debris_met']; + $debris_cri = $resultatT['debris_cri']; + $capacite = $resultat['contenu_max']; + if ($debris_met+$debris_cri > $capacite) { + $a = floor($capacite/2); + $b = floor($capacite/2); + if ($a > $debris_met && $b > $debris_cri) { + $a = $debris_met; + $b = $debris_cri; + } + else if ($a > $debris_met) { + $a = $debris_met; + $b = ($capacite - $a); + if ($b > $debris_cri) $b = $debris_cri; + } + else if ($b > $debris_cri) { + $b = $debris_cri; + $a = ($capacite - $b); + if ($a > $debris_met) $a = $debris_met; + } + } + else { + $a = $debris_met; + $b = $debris_cri; + } + $Cmetal = $a + $resultat['contenu_metal']; + $Ccristal = $b + $resultat['contenu_cristal']; + $debris_met -= $a; + $debris_cri -= $b; + + $chapeau->query("UPDATE `flottes` SET `effectue` = '1', `contenu_metal` = '$Cmetal', `contenu_cristal` = '$Ccristal' WHERE `id` = '$id_flotte'"); + $chapeau->query("UPDATE `planete` SET `debris_met` = '$debris_met', `debris_cri` = '$debris_cri' WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + + $message = 'Vos vaisseaux récoltent '.$a.' de métal et '.$b.' de cristal aux coordonnées '.$end_galaxie.':'.$end_ss.':'.$end_position; + $chapeau->query("INSERT INTO mail VALUES('', '1', '".trouvNom($resultat['id_user'])."', '', 'Recyclage', '$message', '$temps')"); + } + } + elseif ($mission == 5) { + $nbsondes = $resultat['vaisseau_3']; + $resultatT = $chapeau->unique_query("SELECT * FROM `planete` WHERE `galaxie` = '$end_galaxie' AND `ss` = '$end_ss' AND `position` = '$end_position'"); + $id_user = $resultatT['id_user']; + $id_att = $resultat['id_user']; + $resultatUD = $chapeau->unique_query("SELECT * FROM `user` WHERE `id` = '$id_user';"); + $resultatUA = $chapeau->unique_query("SELECT * FROM `user` WHERE `id` = '$id_att';"); + + $diffNiveau = $resultatUA['detection'] - $resultatUD['detection'] + floor($nbsondes/2); + $rapport = new Rapport($mission, $id_att, $id_user, $resultat['start_time'] + $resultat['end_time']); + if ($diffNiveau < 0) { + $rapport->addInfo($resultatT, 0); + $rapport->addInfo(false, 1); + } + if ($diffNiveau >= 0) $rapport->addInfo($resultatT, 0); + if ($diffNiveau >= 1) $rapport->addInfo(true, 1); + if ($diffNiveau >= 2) $rapport->addInfo(true, 2); + if ($diffNiveau >= 3) $rapport->addInfo(true, 3); + if ($diffNiveau >= 4) $rapport->addInfo($resultatUD, 4); + if ($diffNiveau >= 5) $rapport->addInfo(true, 5); + + $chapeau->query("UPDATE `flottes` SET `effectue` = '1' WHERE `id` = '$id_flotte'"); + $rapport->send(); + } + } + if ($resultat['nb_vais'] >= 0 && time() >= $resultat['start_time'] + $resultat['end_time'] * 2 && !empty($resultat['end_time']) && $resultat['mission'] != 0 && ($resultat['mission'] != 1 || (!empty($resultat['ret_time']) && time() >= $resultat['ret_time'] + $resultat['end_time']))) { + $start_galaxie = $resultat['start_galaxie']; + $start_ss = $resultat['start_ss']; + $start_position = $resultat['start_position']; + $id_flotte = $resultat['id']; + $reqP = mysql_query("SELECT * FROM planete WHERE `id_user` = '$id_user' AND `galaxie` = '$start_galaxie' AND `ss` = '$start_ss' AND `position` = '$start_position'") or die ("erreur sql ".mysql_error()); + $resultatP = mysql_fetch_array($reqP); + $metal = $resultat['contenu_metal'] + $resultatP['metal']; + $cristal = $resultat['contenu_cristal'] + $resultatP['cristal']; + $hydrogene = $resultat['contenu_hydrogene'] + $resultatP['hydrogene']; + for($i = 1; $i <= 12; $i++) { + ${'Pvaisseaux_'.$i} = $resultatP['vaisseau_'.$i] + $resultat['vaisseau_'.$i]; + mysql_query("UPDATE `planete` SET `vaisseau_$i` = '${'Pvaisseaux_'.$i}' WHERE `id_user` = '$id_user' AND `galaxie` = '$start_galaxie' AND `ss` = '$start_ss' AND `position` = '$start_position'"); + } + mysql_query("UPDATE `planete` SET `metal` = '$metal', `cristal` = '$cristal', `hydrogene` = '$hydrogene' WHERE `id_user` = '$id_user' AND `galaxie` = '$start_galaxie' AND `ss` = '$start_ss' AND `position` = '$start_position'"); + mysql_query("DELETE FROM `flottes` WHERE `id_user` = '$id_user' AND `id` = '$id_flotte'"); + } +} +?> \ No newline at end of file diff --git a/includes/function.php b/includes/function.php new file mode 100644 index 0000000..c931492 --- /dev/null +++ b/includes/function.php @@ -0,0 +1,180 @@ + '86400', 'heure' => '3600', 'minute' => '60', 'seconde' => '1'); + foreach ($tab as $key => $value) { + $compteur = 0; + while ($time > ($value-1)) { + $time = $time - $value; + $compteur++; + } + if ($compteur != 0) { + $output .= $compteur.' '.$key; + if ($compteur > 1) $output .= 's'; + if ($value != 1) $output .= ' '; + } + } + return $output; +} + +function readDeblok($tableau, $queryPlanete, $queryUser){ + if ($tableau == '0') return 'Débloqué'; + else { + $nbDeblok = count($tableau); + $return = ''; + for ($i=0 ; $i<$nbDeblok ; $i++) { + if (isset($queryPlanete[$tableau[$i][1]])) $return .= techno($tableau[$i][0], $queryPlanete[$tableau[$i][1]], $tableau[$i][2]).'
      '; + else $return .= techno($tableau[$i][0], $queryUser[$tableau[$i][1]], $tableau[$i][2]).'
      '; + } + return $return; + } +} + +function requestDeblok($tableau, $queryPlanete, $queryUser){ + if ($tableau == '0') return true; + else { + $nbDeblok = count($tableau); + $return = true; + for ($i=0 ; $i<$nbDeblok ; $i++) { + if (isset($queryPlanete[$tableau[$i][1]]) && $queryPlanete[$tableau[$i][1]] < $tableau[$i][2]) $return = false; + elseif (isset($queryUser[$tableau[$i][1]]) && $queryUser[$tableau[$i][1]] < $tableau[$i][2]) $return = false; + } + return $return; + } +} + +function techno($nom, $niveau, $niveau_ress) { + if (empty($niveau)) $niveau = 0; + if ($niveau < $niveau_ress) return ''.$nom.' '.$niveau_ress.' ('.$niveau.')'; + else return ''.$nom.' '.$niveau_ress.' ('.$niveau.')'; +} + +function txtmission($mission){ + if ($mission == 0) return 'Stationner'; + elseif ($mission == 1) return 'Attaquer'; + elseif ($mission == 2) return 'Transporter'; + elseif ($mission == 3) return 'Coloniser'; + elseif ($mission == 4) return 'Recycler'; + elseif ($mission == 5) return 'Espionner'; + else return 'Erreur'; +} + +function txtTactique($tactique){ + switch($tactique){ + case 1: return '1'; break; + case 2: return '2'; break; + case 3: return '3'; break; + case 4: return '4'; break; + case 5: return '5'; break; + case 6: return '6'; break; + case 7: return '7'; break; + case 8: return '8'; break; + case 9: return '9'; break; + case 10: return '10'; break; + case 11: return '11'; break; + case 12: return '12'; break; + case 13: return '13'; break; + case 14: return '14'; break; + case 15: return '15'; break; + case 16: return '16'; break; + case 17: return '17'; break; + case 18: return '18'; break; + case 19: return '19'; break; + case 20: return '20'; break; + case 21: return '21'; break; + default: return 'autre'; break; + } +} + +function tactique($tactique){ + switch($tactique){ + case 1: return array(1,0,100,false); break; + case 2: return array(2,88,12,false); break; + case 3: return array(3,75,25,false); break; + case 4: return array(4,63,37,false); break; + case 5: return array(5,50,50,false); break; + case 6: return array(6,37,63,false); break; + case 7: return array(7,25,75,false); break; + case 8: return array(8,12,88,false); break; + case 9: return array(9,12,88,true); break; + case 10: return array(10,25,75,true); break; + case 11: return array(11,37,63,true); break; + case 12: return array(12,50,50,true); break; + case 13: return array(13,63,37,true); break; + case 14: return array(14,75,25,true); break; + case 15: return array(15,75,26,true); break; + case 16: return array(16,75,27,true); break; + case 17: return array(17,75,28,true); break; + case 18: return array(18,75,29,true); break; + case 19: return array(19,75,30,true); break; + case 20: return array(20,75,31,true); break; + case 21: return array(21,75,32,true); break; + default: return array(1,0,100,false); break; + } +} + +function pillage($metal, $cristal, $hydrogene, $vfm){ + $Qm = $metal / $vfm; + $Qc = $cristal / $vfm; + $Qh = $hydrogene / $vfm; + + $somme = $Qm + $Qc + $Qh; + + if ($somme < 2) { + $Fm = $metal / 2; + $Fc = $cristal / 2; + $Fh = $hydrogene / 2; + } + else { + $Fm = $Qm / $somme * $vfm; + $Fc = $Qc / $somme * $vfm; + $Fh = $Qh / $somme * $vfm; + } + + return array(floor($Fm), floor($Fc), floor($Fh)); +} + +function vais_tempsDeplacement($start_galaxie,$start_ss,$start_position,$end_galaxie,$end_ss,$end_position,$vitesse,$coefvitesse = 1,$preparation = 0,$chauffe = 0) { + if ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $end_position-$start_position == 0) $temps = 0; + elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0 && $chauffe == 0) $temps = $preparation+abs($end_position-$start_position)*$vitesse/12; + elseif ($end_galaxie-$start_galaxie == 0 && $chauffe == 0) $temps = $preparation+abs($end_ss-$start_ss)*$vitesse; + elseif ($chauffe == 0) $temps = $preparation+abs($end_galaxie-$start_galaxie)*$vitesse*300; + elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss == 0) $temps = $preparation+abs($end_position-$start_position)*($vitesse*2)/12+$preparation; + /*elseif ($end_galaxie-$start_galaxie == 0 && $end_ss-$start_ss <= $chauffe) $temps = abs($end_ss-$start_ss)*(($vitesse/$chauffe)*($chauffe-abs($end_ss-$start_ss))+$vitesse)+$preparation; + elseif ($end_galaxie-$start_galaxie == 0) $temps = $vitesse*abs($end_ss-$start_ss)+$vitesse*10+$preparation;*/ + elseif ($end_galaxie-$start_galaxie == 0) $temps = (abs($end_ss-$start_ss)*(($vitesse/$chauffe)*((abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)+$vitesse))+(20-(abs($chauffe-abs($end_ss-$start_ss))+($chauffe-abs($end_ss-$start_ss)))/2)*54+$preparation; + else $temps = (($vitesse/$chauffe)*($chauffe-abs($end_galaxie-$start_galaxie))+$vitesse)*300+108+$preparation; + + return $temps/$coefvitesse; +} + +function vais_conso($tempsDeplacement,$nbvais = 1){ + return intval($tempsDeplacement*$nbvais/20); +} +?> \ No newline at end of file diff --git a/pages/includes/noms.php b/includes/noms.php similarity index 62% rename from pages/includes/noms.php rename to includes/noms.php index 7bab568..9dbf63c 100644 --- a/pages/includes/noms.php +++ b/includes/noms.php @@ -1,82 +1,81 @@ values['auth_level']; if ($race == 'covenant') { $ressourc = array('Métal','Cristal','Ions','Energie'); $casernen = array('Grunt','Jackal','Drone','Elite','Sniper','Hunter','Médecin','Ingénieur','Brute'); $casernde = array( 'Formant l\'unité d\'infanterie de base des Covenants, les Grunt se révèlent dangereux en groupe, mais ne représentent individuellement qu\'une faible menace. Petits, trapus et relativement lents, ils paniquent souvent lorsqu\'ils affrontent des ennemis qui leurs sont supérieurs ; cependant, s\'ils sont menés par un Sangheili, ils se battront jusqu\'au bout.', 'Tireurs efficaces, les jackals sont généralement employés comme mercenaires, on les trouve souvent en positions défensives, se battant protégés par les boucliers à énergie qui les caractérisent. Un bouclier bien utilisé fait d\'un Jackal une cible difficile à atteindre, mais celui-ci doit l\'écarter pour faire feu, ce qui lui confère un point faible exploitable.', - 'Tout comme les Brutes, les Drones semblent avoir été intégrés depuis peu aux forces d\'assaut covenantes et sont déployés en masse. Apparemment d\'origine insectoïde, ce sont les gardes des vaisseaux covenants. Ils ont également la capacité - limitée - de voler et font d\'excellents tireurs, très intelligents.', + 'Tout comme les Brutes, les Drones semblent avoir été intégrés depuis peu aux forces d\'assaut covenantes et sont déployés en masse. Apparemment d\'origine insectoïde, ce sont les gardes des vaisseaux covenants. Ils ont également la capacité - limitée - de voler et font d\'excellents tireurs, très intelligents.', 'Les Elites constituent l\'ossature des armées covenantes. Excellents soldats, tacticiens émérites et disciplinés, combattants agressifs, ils représentent la principale force des covenants. Plus rapides, plus forts et plus résistants que les humains, ils combattent en groupes restreints et dirigent souvent des escouades de Grunts. La couleur de leur armure indique leur rang.', 'Le sniper est une classe des jackals. Excellents tireurs de nature, les Jackals qui se sont spécialisés dans ce domaine bénéficient d\'un rang plus élevé que leurs congénères. Ils sont très destructeurs de loin mais assez peu de près. Ils ne possèdent cependant pas de bouclier de protection comme leurs frères.', 'Les Hunters sont des ennemis incroyablement dangereux qui sont déployés plus comme du matériel que comme des soldats. Ils sont utilisés pour des tâches de démolitions ou de défense lourde et se battent toujours par deux. Ces créatures massives portent une armure quasiment impénétrable et une arme à combustible redoutable au combat.', - 'Les médecins sont sur le champ de bataille pour aider les soldats blessés par des tirs lors des affrontements. Ils peuvent réduire le nombre de morts lorsqu\'ils sont bien utilisés, et donc peuvent peut être changer l’issue de la bataille.', + 'Les médecins sont sur le champ de bataille pour aider les soldats blessés par des tirs lors des affrontements. Ils peuvent réduire le nombre de morts lorsqu\'ils sont bien utilisés, et donc peuvent peut être changer l’issue de la bataille.', 'Les ingénieurs, appelés Huragok en langage covenant, forment la seule unité non-combattante connue des forces covenantes. Celle-ci répare vos unités et véhicules sur le champ de bataille ; plus vous en recrutez, plus vos unités et véhicules au sol auront une chance de survivre.', - 'Moins bien connus que les Elites, les Brutes combattent en groupes et sont physiquement plus forts que leurs congénères. Les Brutes démontrent les mêmes aptitudes au combat que les Elites et leur nombre s\'est considérablement accru depuis le début du conflit. Ils portent une arme balistique explosive à laquelle est fixée une baïonnette.'); + 'Moins bien connus que les Elites, les Brutes combattent en groupes et sont physiquement plus forts que leurs congénères. Les Brutes démontrent les mêmes aptitudes au combat que les Elites et leur nombre s\'est considérablement accru depuis le début du conflit. Ils portent une arme balistique explosive à laquelle est fixée une baïonnette.'); $casernea = array('grunt(s)','jackal(s)','drone(s)','élite(s)','sniper(s)','hunter(s)','médecin(s)','ingénieur(s)','brute(s)'); $casernei = array('grunt1.jpg','jackal.jpg','drone.jpg','elite.jpg','jackalsniper.jpg','hunter1.jpg','medecin_c.jpg','ingenieur_c.jpg','brute.jpg'); $batimend = array('purificateur_m','purificateur_c','ionisateur','centrale_s','centrale_fusion','oeil','recherches','chantier_terrestre','???','caserne','silo','centre_info'); $batimeni = array('purificateurdemtalhb3.jpg','cristaloo3.png','ioniseurdn4.jpg','solaire.jpg','sanstitrevi7.jpg','oeilduprophetewj6.jpg','covielabocn5.jpg','chantierterrestrehg1.jpg','sanstitretruecolor09zn6.jpg','caserncov0ry.jpg','stockagebasement1cs10bl.jpg','ordianteur_hologramme.jpg'); - $batiment = array('Purificateur de métal','Purificateur de cristal','Ionisateur','Centrale solaire','Centrale de fusion','Oeil des prophètes','Centre de recherches','Chantier terrestre','Chantier spatial','Caserne','Entrepôt','Centrale informatique'); + $batiment = array('Purificateur de métal','Purificateur de cristal','Ionisateur','Centrale solaire','Centrale de fusion','Oeil des prophètes','Centre de recherches','Chantier terrestre','Chantier spatial',0/*'Caserne'*/,'Entrepôt','Centrale informatique'); $batimede = array( 'Le purificateur de métal vous fournie les matières premières pour la construction de vos infrastructures et de vos unités. Plus vous développerez vos purificateurs, plus ils produiront de ressources. Les purificateurs les plus développés ont aussi besoin de plus d\'énergie.', - 'Le purificateur de cristal vous fournie les ressources pour vos installations électroniques et pour les alliages. Le purificateur de cristal consomme deux fois plus d\'énergie que celui de métal. Tous les vaisseaux et bâtiments ont besoin de cristal pour leur bouclier ou encore leurs composants électroniques. La production augmente avec le développement de l’usine.', + 'Le purificateur de cristal vous fournie les ressources pour vos installations électroniques et pour les alliages. Le purificateur de cristal consomme deux fois plus d\'énergie que celui de métal. Tous les vaisseaux et bâtiments ont besoin de cristal pour leur bouclier ou encore leurs composants électroniques. La production augmente avec le développement de l’usine.', 'L\'ionisateur utilise des ions négatifs et positifs d\'hydrogène pour créer une source conventionnelle de courant stable, servant à alimenter les bâtiments covenants qui nécessitent une arrivée massive de cette "ressource" pour actionner les divers éléments matériels des contrôles. La centrale de fusion à besoin de beaucoup d\'hydrogène pour fonctionner.', - 'Pour assurer l\'approvisionnement des purificateurs, des centrales solaires sont nécessaires. Plus ces installations sont développées, plus vous obtiendrez d’énergie pour vos purificateurs. Les centrales solaires sont la base de l\'approvisionnement pour votre planète en énergie. Elles sont composées d’un recueilleur sur le haut de sa structure qui capte en grandes quantités l’énergie solaire.', - 'La centrale à fusion vous permet de créer l’énergie nécessaire à vos purificateurs. Elles est constitué d’un réacteur à fusion qui en tournant produit de l’énergie. Sa production reste nettement inférieure à celle d’une centrale solaire.', - 'Les grands prophètes ont partagé leur savoir pour construire ces structures qui permettent de repérer les éléments s’approchants de votre planète. Le système est constitué de deux grands arcs qui envoient des signaux électriques dans l’espace et captent ceux qui reviennent présageant ainsi l’arrivée d’un vaisseau.', - 'Le centre de recherches, l\'un des bâtiments les plus importants de votre colonie, vous permet de vous accaparer des technologies aliens aujourd’hui disparues ou des technologies en cours de développement dans d’autres factions. Le niveau du centre détermine la vitesse de la recherche. Chaque planète que vous coloniserez devra être équipée d’un centre d\'étude des artefacts et des technologies.', - 'Le centre de recherches, l\'un des bâtiments les plus importants de votre colonie, vous permet de vous accaparer des technologies aliens aujourd’hui disparues ou des technologies en cours de développement dans d’autres factions. Le niveau du centre détermine la vitesse de la recherche. Chaque planète que vous coloniserez devra être équipée d’un centre d\'étude des artefacts et des technologies.', - 'Le chantier terrestre vous permet de construire tous les véhicules atmosphériques du type ghosts, spectres ou autres. Il permet ainsi à vos armées d’accéder plus rapidement à un endroit et d’avoir un avantage avec l’armement de ces véhicules.', - 'Ce bâtiment permet la création de toutes vos unités spatiales ou volantes. La force des covenants a souvent été due à ses grandes avancées technologiques en matière d’aéronautique. Un grand chantier spatial permet de créer des unités de plus en plus fortes et de surcroît de les créer de plus en plus rapidement.', - 'Le Temple de la Guerre vous permet de créer l’élite des forces d’infanterie. Des soldats y sont fanatisés puis entraînés au maniement des armes et à la stratégie militaire. Plus vous développez le temple, plus la vitesse de production sera rapide.', - 'Les ressources qui ne sont pas encore traitées sont mises en stock dans ces entrepôts géants. Un entrepôt plus grand permet le stockage d\'une plus grande quantité de ressources. Lorsque l’entrepôt est plein, l\'extraction est stoppée. Il est grandement conseillé de développer ce genre d’infrastructure.', + 'Pour assurer l\'approvisionnement des purificateurs, des centrales solaires sont nécessaires. Plus ces installations sont développées, plus vous obtiendrez d’énergie pour vos purificateurs. Les centrales solaires sont la base de l\'approvisionnement pour votre planète en énergie. Elles sont composées d’un recueilleur sur le haut de sa structure qui capte en grandes quantités l’énergie solaire.', + 'La centrale à fusion vous permet de créer l’énergie nécessaire à vos purificateurs. Elles est constitué d’un réacteur à fusion qui en tournant produit de l’énergie. Sa production reste nettement inférieure à celle d’une centrale solaire.', + 'Les grands prophètes ont partagé leur savoir pour construire ces structures qui permettent de repérer les éléments s’approchants de votre planète. Le système est constitué de deux grands arcs qui envoient des signaux électriques dans l’espace et captent ceux qui reviennent présageant ainsi l’arrivée d’un vaisseau.', + 'Le centre de recherches, l\'un des bâtiments les plus importants de votre colonie, vous permet de vous accaparer des technologies aliens aujourd’hui disparues ou des technologies en cours de développement dans d’autres factions. Le niveau du centre détermine la vitesse de la recherche. Chaque planète que vous coloniserez devra être équipée d’un centre d\'étude des artefacts et des technologies.', + 'Le chantier terrestre vous permet de construire tous les véhicules atmosphériques du type ghosts, spectres ou autres. Il permet ainsi à vos armées d’accéder plus rapidement à un endroit et d’avoir un avantage avec l’armement de ces véhicules.', + 'Ce bâtiment permet la création de toutes vos unités spatiales ou volantes. La force des covenants a souvent été due à ses grandes avancées technologiques en matière d’aéronautique. Un grand chantier spatial permet de créer des unités de plus en plus fortes et de surcroît de les créer de plus en plus rapidement.', + 'Le Temple de la Guerre vous permet de créer l’élite des forces d’infanterie. Des soldats y sont fanatisés puis entraînés au maniement des armes et à la stratégie militaire. Plus vous développez le temple, plus la vitesse de production sera rapide.', + 'Les ressources qui ne sont pas encore traitées sont mises en stock dans ces entrepôts géants. Un entrepôt plus grand permet le stockage d\'une plus grande quantité de ressources. Lorsque l’entrepôt est plein, l\'extraction est stoppée. Il est grandement conseillé de développer ce genre d’infrastructure.', 'La centrale informatique est le coeur de votre planète, le cerveau de votre territoire, analysant chaque particule détectée avec grand soin. Plus votre centrale est améliorée, plus rapidement et aisément les données seront traitées.'); $technolo = array('Informatique','Detection','Armement','Bouclier','Maitrise de l\'énergie','Réacteur à antigravité','Réacteur à fusion','Réacteur à fusion Forerunner','Médecine','Commandement militaire',0); - $technode = array( 'L’informatique vous permet de traiter les informations de façon très rapide réduisant ainsi les temps de réactions qui dans les combats peuvent s’avérer fatales.', - 'La détection est cruciale pour préserver sa flotte et ses planètes. Développer cette technologie vous permet de construire une base « œil des prophètes » qui repèrera les vaisseaux s’approchant de votre planète.', + $technode = array( 'L’informatique vous permet de traiter les informations de façon très rapide réduisant ainsi les temps de réactions qui dans les combats peuvent s’avérer fatales.', + 'La détection est cruciale pour préserver sa flotte et ses planètes. Développer cette technologie vous permet de construire une base « Å“il des prophètes » qui repèrera les vaisseaux s’approchant de votre planète.', 'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat démuni face aux assauts féroces adverses ? Cette technologie vous permettra de rechercher de nouveaux systèmes d\'armements afin de rendre vos outils de guerre plus précis et mortels.', - 'Le bouclier est un champ de force qui entoure vos vaisseaux et les protège. Ainsi il permet à vos vaisseaux de tenir plus longtemps face aux missiles adverses, ceci s\'avérant peut être décisif dans l’issue de la bataille.', - 'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et vaisseaux ; vos chercheurs vous permettront également d\'accéder à de nouveaux types d\'énergies, beaucoup plus intéressants.', + 'Le bouclier est un champ de force qui entoure vos vaisseaux et les protège. Ainsi il permet à vos vaisseaux de tenir plus longtemps face aux missiles adverses, ceci s\'avérant peut être décisif dans l’issue de la bataille.', + 'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et vaisseaux ; vos chercheurs vous permettront également d\'accéder à de nouveaux types d\'énergies, beaucoup plus intéressants.', 'Les réacteurs à antigravité sont les moteurs basiques covenant. Ils utilisent une technologie complexe projetant des particules quantiques créant un champ gravitationnel inverse annulant ainsi la gravité présente. Le principe fonctionne également dans l\'espace puisque l\'absence de gravité dans l\'espace, sans compter les étoiles et les autres anomalies spatiales, permet une projection plus puissante du champ.', - 'Après la combustion, voici la fusion. Ce type de réacteur est beaucoup plus puissant que la combustion utilisée depuis déjà des centaines d\'années. Il génère une énergie cinétique de grande envergure. Aucun dirigeant politique désirant voyager dans le cosmos ne pourrait s’en passer.', - 'Les covenants ont découvert d’anciens réacteurs à fusion utilisant la technologie d’hyperpropulsion Forerunner. Cette technologie, beaucoup plus puissante que le réacteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra précis. Ce type de réacteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.', - 'La médecine vous permet d’avoir moins de pertes au combat et ainsi d’avoir une force de frappe qui résiste plus longtemps. Au lieu de laisser mourir les soldats blessés, le médecin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.', + 'Après la combustion, voici la fusion. Ce type de réacteur est beaucoup plus puissant que la combustion utilisée depuis déjà des centaines d\'années. Il génère une énergie cinétique de grande envergure. Aucun dirigeant politique désirant voyager dans le cosmos ne pourrait s’en passer.', + 'Les covenants ont découvert d’anciens réacteurs à fusion utilisant la technologie d’hyperpropulsion Forerunner. Cette technologie, beaucoup plus puissante que le réacteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra précis. Ce type de réacteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.', + 'La médecine vous permet d’avoir moins de pertes au combat et ainsi d’avoir une force de frappe qui résiste plus longtemps. Au lieu de laisser mourir les soldats blessés, le médecin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.', 'En tant que général, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en matière de stratégie, vous montrer toujours plus rusé que votre impitoyable adversaire, aussi feriez-vous bien d\'étudier de nouvelles tactiques de combat pour vous assurer une franche victoire.'); $technoli = array('informatique1.jpg','detection.jpg','sanstitretruecolor04no6.jpg','boucliervaiseaucovenantey4.jpg','energie.jpg','reacteurantigravyd1.jpg','reacteur_f.jpg','reacteurfusionforerunnewu0.jpg','medecine.JPG','commandement.jpg'); $nomvaisa = array('cargos de classe Inquisitor','grand(s) transporteur(s)','vaisseau(x) de colonisation','sonde(s)','recycleur(s)','séraphin(s)','frégate(s)','croiseur(s) de classe CCS','croiseur(s) de classe Reverence','porte-vaisseaux','station(s) orbitale','super(s) porte-vaisseaux'); - $nomvaisi = array('cargosparabola.jpg','cargosladen.jpg','coviecolobv3.jpg','sonde_despionnage1.jpg','charognard.jpg','chasseurlourd7id.jpg','croiseur8er.jpg','fregate2ky.jpg','croiseur.jpg','pv.jpg','citecovenant.jpg','.jpg'); + $nomvaisi = array('cargosparabola.jpg','cargosladen.jpg','coviecolobv3.jpg','sonde_despionnage1.jpg','charognard.jpg','chasseurlourd7id.jpg','croiseur8er.jpg','fregate2ky.jpg','vaisseaudebataille9na.jpg','pv.jpg','station1.jpg','citecovenant.jpg'); $nomvaisn = array('Cargos de classe Inquisitor','Cargos de classe Interdictor','Vaisseau de colonisation de classe Returning','Sonde de reconnaissance de classe Perception','Charognard','Séraphin','Frégate','Croiseur de classe CCS','Croiseur de classe Reverence','Porte vaisseaux','Station orbitale covenant','Super porte vaisseaux'); $nomvaisd = array( 'Les cargos Inquisitor sont la base du transport de troupes et de ressources covenantes, capables de transporter un grand nombre de ressources sur une grande distance. Pratiquement sans armement, le cargo est sans défense et nécessite une défense rapprochée pour les trajets de grande distance.', - 'Les cargos Interdictor sont une évolution du transport de classe Inquisitor. Ayant une capacité de transport nettement supérieure à sa version précédente. Ce transport, quoique plus récent et disposant d\'un plus grand fret, dispose du même genre de défense que le modèle antérieur, une escorte est donc fortement recommandée lors de l\'utilisation de celui-ci.', - 'Tout comme les humains, les covenants ont besoins d\'espace pour étendre leur empire et c\'est pourquoi ces vaisseaux ont été pensés et conçus. Capable de transformer la nature même d\'une planète en très peu de temps, ce vaisseau est essentiel au développement de la société covenante.', + 'Les cargos Interdictor sont une évolution du transport de classe Inquisitor. Ayant une capacité de transport nettement supérieure à sa version précédente. Ce transport, quoique plus récent et disposant d\'un plus grand fret, dispose du même genre de défense que le modèle antérieur, une escorte est donc fortement recommandée lors de l\'utilisation de celui-ci.', + 'Tout comme les humains, les covenants ont besoins d\'espace pour étendre leur empire et c\'est pourquoi ces vaisseaux ont été pensés et conçus. Capable de transformer la nature même d\'une planète en très peu de temps, ce vaisseau est essentiel au développement de la société covenante.', 'Cette sonde de reconnaissance covenante est largement utilisée lorsqu\'il est trop dangereux d\'envoyer un vaisseau. Sa fonction consiste à rassembler des données sur les vaisseaux ou encore sur une planète dans un système planétaire.', - 'Chaque bataille amène des pertes des 2 côtés, et ce vaisseau est conçu pour en tirer tous les bénéfices. Le Charognard, en retrait de la flotte principale, ramasse ce qu\'il reste des vaisseaux détruits et les ramène à sa planète d\'origine où ces "déchets" pourront être utilisés pour produire des matières premières.', - 'Le plus puissant et probablement le plus craint de tous les vaisseaux Covenants. Le Séraphin est le principal vaisseau offensif dans l’espace et peut être employé comme bombardier aérien. Le Séraphin est d\'environ trois fois la taille d\'un Banshee, il possède plusieurs canons de plasma qu\'il utilise lors des engagements aériens pour éliminer des opposants de type LongsWord et Pélican.', - 'La frégate covenante est un vaisseau de tonnage moyen composant majoritairement les flottes habituelles. Équipée de lasers à impulsion et de lanceurs de torpilles au plasma latéraux, elle possède ainsi une puissance de feu raisonnable. Sa coque est aussi protégée par un bouclier énergétique la rendant beaucoup plus difficile à détruire.', + 'Chaque bataille amène des pertes des 2 côtés, et ce vaisseau est conçu pour en tirer tous les bénéfices. Le Charognard, en retrait de la flotte principale, ramasse ce qu\'il reste des vaisseaux détruits et les ramène à sa planète d\'origine où ces "déchets" pourront être utilisés pour produire des matières premières.', + 'Le plus puissant et probablement le plus craint de tous les vaisseaux Covenants. Le Séraphin est le principal vaisseau offensif dans l’espace et peut être employé comme bombardier aérien. Le Séraphin est d\'environ trois fois la taille d\'un Banshee, il possède plusieurs canons de plasma qu\'il utilise lors des engagements aériens pour éliminer des opposants de type LongsWord et Pélican.', + 'La frégate covenante est un vaisseau de tonnage moyen composant majoritairement les flottes habituelles. Équipée de lasers à impulsion et de lanceurs de torpilles au plasma latéraux, elle possède ainsi une puissance de feu raisonnable. Sa coque est aussi protégée par un bouclier énergétique la rendant beaucoup plus difficile à détruire.', 'Ce vaisseau redoutable et titanesque sème sans le moindre doute la terreur chez l\'ennemi. Armé d\'un bout à l\'autre de lasers à impulsion, de torpilles au plasma et de bien d\'autres armes, ce croiseur est une arme extraordinaire à ne jamais sous estimer.', - 'Un des plus grands vaisseaux de combat covenant, mesurant 3000 mètres. Équipé de deux canons à projection énergétique et de sept lanceurs de torpilles, il est d\'une puissance extraordinaire. Le seul problème résidant dans le fait que son équipement demande une capacité d\'énergie phénoménale.', + 'Un des plus grands vaisseaux de combat covenant, mesurant 3000 mètres. Équipé de deux canons à projection énergétique et de sept lanceurs de torpilles, il est d\'une puissance extraordinaire. Le seul problème résidant dans le fait que son équipement demande une capacité d\'énergie phénoménale.', 'Comme son nom l\'indique, son principal rôle est de transporter des chasseurs Seraphins, des Spirits ou d\'autres vaisseaux de taille similaire. Armé de quelques lasers à impulsion, le porte vaisseau reste un vaisseau de support plutôt qu\'un vaisseau de confrontation directe. Hypothétiquement parlant, sa capacité de tir est légèrement supérieure à celui d\'une corvette.', - 'La station spatiale covenante, construite a même un astéroide, possède un canon plasma d\'une centaine de mettre de long projetant une sphère de plasma atteignant une chaleur proche de celle du coeur d\'un soleil. Également équipé de tourelle automatique pour les chasseurs d\'efficacité moyenne, se poste orbital covenant est une arme défensive terrifiante pour toute adversaire de haut niveau ou non.', + 'La station spatiale covenante, construite a même un astéroide, possède un canon plasma d\'une centaine de mettre de long projetant une sphère de plasma atteignant une chaleur proche de celle du coeur d\'un soleil. Également équipé de tourelle automatique pour les chasseurs d\'efficacité moyenne, se poste orbital covenant est une arme défensive terrifiante pour toute adversaire de haut niveau ou non.', 'Le vaisseau ultime de la flotte covenante, long de plus de 5400 mètres. Ce vaisseau est capable de transporter des quantités de chasseurs hors du commun. Armé de projecteurs énergétique et de laser à impulsion, ce vaisseau est le plus puissant après la station spatiale.'); $nomterra = array('banshee(s)','spirit(s)','phantom','boarding craft','ghost(s)','shadow','spectre(s)','appartition(s)','shade','strong shade','tourelle(s) à barreau de combustible','canon(s) à plasma','lanceur(s) de torpilles plasma'); $nomterrn = array('Banshees', 'Spirit', 'Phantom', 'Boarding craft', 'Ghost', 'Shadow', 'Spectre', 'Appartition', 'Shade', 'Strong shade', 'Tourelle à barreau de combustible', 'Canon à plasma', 'Lanceur de torpilles plasma'); $nomterri = array('bansheeqp0.jpg', 'spirit1.jpg', 'phantomfu2.jpg', 'boardingcraft.jpg', 'ghostic1.jpg', 'shadow.jpg', 'spectre.jpg', 'wraith.jpg', 'shade.jpg', 'strongshade.jpg', 'tourellebarreau.jpg', 'tourelle.jpg', 'lanceur_torpilles.jpg'); $nomterde = array( 'Rapide et maniable, le Banshee est un formidable véhicule d\'assaut aérien, efficacement blindé contre les armes à feu légères mais ne résistant cependant pas aux armes plus lourdes. Le canon à combustible dont il est équipé en fait un bombardier dangereux tout autant qu\'un chasseur rapide. Le Banshee a la possibilité de faire des tonneaux et des vrilles, ce qui serait impossible pour des véhicules à l\'aérodynamique conventionnelle.', - 'Le spirit est une navette de transport de troupes terrestre. De capacité moyenne, il peut transporter un petit contingent armé dans les zones les plus repoussées des planètes. Le spirit est équipé d\'une tourelle de type shade de puissance moyenne, qui permet de maintenir les troupes ennemis à distance jusqu\'à ce que le largage des troupes soit effectué.
      Malheureusement, un manque d\'espace empêche l\'installation de générateur énergétique plus puissant qui pourrait supporter des boucliers standards ou même de faible intensité.', - 'Le Phantom est un vaisseau beaucoup plus fiable que le vaisseau de débarquement « Spirit ». Il possède trois tourelles plasma particulièrement puissantes et peut laisser tomber ses occupants à terre via un ascenseur gravitationnel sans devoir se poser. Le Phantom a un blindage beaucoup plus résistant que son prédécesseur, une puissance de feu accrue et peut transporter tout type d’équipage comme des hunters.
      Le Phantom est assez nouveau dans l\'arsenal Covenant mais est rapidement devenu une crainte car son bombardement de plasma peut éliminer un bon nombre de marines.', + 'Le spirit est une navette de transport de troupes terrestre. De capacité moyenne, il peut transporter un petit contingent armé dans les zones les plus repoussées des planètes. Le spirit est équipé d\'une tourelle de type shade de puissance moyenne, qui permet de maintenir les troupes ennemis à distance jusqu\'à ce que le largage des troupes soit effectué.
      Malheureusement, un manque d\'espace empêche l\'installation de générateur énergétique plus puissant qui pourrait supporter des boucliers standards ou même de faible intensité.', + 'Le Phantom est un vaisseau beaucoup plus fiable que le vaisseau de débarquement « Spirit ». Il possède trois tourelles plasma particulièrement puissantes et peut laisser tomber ses occupants à terre via un ascenseur gravitationnel sans devoir se poser. Le Phantom a un blindage beaucoup plus résistant que son prédécesseur, une puissance de feu accrue et peut transporter tout type d’équipage comme des hunters.
      Le Phantom est assez nouveau dans l\'arsenal Covenant mais est rapidement devenu une crainte car son bombardement de plasma peut éliminer un bon nombre de marines.', '~#DESCRIPTION MANQUANTE#~ Boarding craft', 'Le ghost est un véhicule de reconnaissance et d\'attaque rapide déployée par les Covenants dans tout combat terrestre. Cet engin, très souvent piloté par les Elites, est très maniable. Il est capable de tirer des doubles décharges de plasma surchauffées d\'une puissance de 100-250 kW. Le ghost peut également effectuer des pointes de vitesse soutenues.', 'Le Shadow est le principal moyen de transport terrestre des troupes covenantes. Ce véhicule peut accueillir un pilote, un artilleur et jusqu\'à huit passagers en fonction du type de Covenants qui monte à bord. Il est en outre équipé pour transporter des Elites, des Brutes, des Grunts ou des Jackals. Si le Shadow est équipé d\'un canon à plasma, sa vocation reste le déploiement de troupes.', - 'Le Spectre est un transport multi troupes blindé de petite taille. Quoique relativement lent, il est tout à fait maniable et se meut avec aisance dans les espaces confinés. Ses principales faiblesses étant son manque de vitesse et d\'accélération, ses occupants demeurent tout de même relativement exposés. Le canon à plasma monté à l\'arrière représente un grand danger pour l\'ennemi et le véhicule offre par ailleurs diverses positions de tir.', + 'Le Spectre est un transport multi troupes blindé de petite taille. Quoique relativement lent, il est tout à fait maniable et se meut avec aisance dans les espaces confinés. Ses principales faiblesses étant son manque de vitesse et d\'accélération, ses occupants demeurent tout de même relativement exposés. Le canon à plasma monté à l\'arrière représente un grand danger pour l\'ennemi et le véhicule offre par ailleurs diverses positions de tir.', 'Lent, massif et constituant une cible de taille, ce véhicule n\'en demeure pas moins le blindé covenant le plus destructeur. Ce géant de métal est bien protégé. Le tir de couverture qu\'il peut effectuer grâce à ses mortiers à plasma redoutables en fait un ennemi incroyablement dangereux. Le fait qu\'il soit piloté par une seule personne qui contrôle le véhicule et le système d\'armement limite quelque peu son champ de manoeuvre.', - 'Les tourelles shades sont des canons stationnaires énergétiques covenant composés de deux parties, la première étant une base stable à trois pieds pour la stabilité de l’appareil, la deuxième, un siège où le canon est fixé retenu par un champ gravitationnel artificiel. Ce canon lorsqu’il tire, envoie 3 « éclairs » relativement lents et d’efficacité moyenne.', - 'Cette tourelle est une version améliorée de la shade standard. Dans les modifications de la tourelle, le système d’accélération magnétique a été révisé pour le rendre plus performant, aboutissant à des rayons plus rapides. Également, un bouclier a été ajouté à l’avant, protégeant ainsi l’utilisateur des attaques aux armes à projectiles de petit et moyen calibre pendant une période de quelques secondes lors de feux nourris.', + 'Les tourelles shades sont des canons stationnaires énergétiques covenant composés de deux parties, la première étant une base stable à trois pieds pour la stabilité de l’appareil, la deuxième, un siège où le canon est fixé retenu par un champ gravitationnel artificiel. Ce canon lorsqu’il tire, envoie 3 « éclairs » relativement lents et d’efficacité moyenne.', + 'Cette tourelle est une version améliorée de la shade standard. Dans les modifications de la tourelle, le système d’accélération magnétique a été révisé pour le rendre plus performant, aboutissant à des rayons plus rapides. Également, un bouclier a été ajouté à l’avant, protégeant ainsi l’utilisateur des attaques aux armes à projectiles de petit et moyen calibre pendant une période de quelques secondes lors de feux nourris.', 'La tourelle à barreau de combustible est une version fixe de ceux des hunters avec un système de visé amélioré et de condensateur ionique permettent de tirer trois rafales à la suite sans surcharger les relais du générateur. De puissance moyenne, elle est capable de détruire facilement des warthogs et autres véhicules légers avec une facilité hors norme.', - 'Le canon à plasma n’a pas besoin de canonnier pour tirer puisque équipé d’un système de visée automatisé, il utilise une technologie d’intelligence artificielle rudimentaire pour ensuite envoyer un projectile de plasma surchauffé à haute vitesse carbonisant tout sur son passage.', + 'Le canon à plasma n’a pas besoin de canonnier pour tirer puisque équipé d’un système de visée automatisé, il utilise une technologie d’intelligence artificielle rudimentaire pour ensuite envoyer un projectile de plasma surchauffé à haute vitesse carbonisant tout sur son passage.', 'Utilisant un principe similaire de la tourelle à plasma, le lanceur de torpilles plasma utilise un condensateur de matière pour condenser le flux de plasma surchauffé en une masse de destruction pure. Ce système est le système de défense terrestre le plus évolué jamais construit. Son défaut majeur reste sa cadence de tire lente, limitant sa défense face à de multiples adversaires.'); } - elseif (md5($race) == '34c19b21bd4a3dda389e767d32fe9779' && $auth_level >= 6) { + elseif ($auth_level >= 6 && md5($race) == '34c19b21bd4a3dda389e767d32fe9779') { $ressourc = array('Métal','Cristal','Hydrogène','Energie'); $casernen = array('Constructor','Sentinelle Légère','Sentinelle Lourde','Enforcer Léger','Enforcer Lourd','Monitor','~#PAS DE NOM#~ Médecin','~#PAS DE NOM#~ Ingénieur','~#PAS DE NOM#~ Brute'); $casernde = array( 'Les Constructors sont des minis sentinelles capable d\'effectuer certaine reparation mineur, ils peuvent réparés les sentinelles endommager ainsi que les chasseurs légers.', @@ -96,25 +95,25 @@ if (!isset($auth_level)) $auth_level = $_SESSION['auth_level']; $batimede = array( 'Le générateur de métal vous fournie les matières premières pour la construction de vos infrastructures et de vos unités. Plus vous développerez vos générateurs, plus uls vous rapportera. Les générateurs plus développés ont aussi besoin de plus d\'énergie.', 'Le générateur de cristal vous fourni les ressources pour vos installations électroniques et pour les alliages. Le générateur consomme deux fois plus d\'énergie que celui du métal. Tous les vaisseaux et bâtiments ont besoin de cristal pour leur bouclier ou encore leur composant électronique. La production augmente avec le développement du générateur ainsi que sa consommation.', 'L\'hydrogène n\'est pas directement disponible dans la nature. On doit le produire : par electrolyse de l\'eau ce qui consiste à faire passer un courant électrique dans de l\'eau pour que les molécules se séparent et forme du dihydrogène. Mais cette technique utilise de trop grande quantitée d\'énergie.', - 'Pour assurer l\'approvisionnement des générateurs, des générateurs énergie géantes sont nécessaires. Plus ces installations sont développées, plus vous obtiendrez d’énergie pour vos générateurs. Les générateurs d\'énergies sont la base de l\'approvisionnement pour votre planète en énergie.', + 'Pour assurer l\'approvisionnement des générateurs, des générateurs énergie géantes sont nécessaires. Plus ces installations sont développées, plus vous obtiendrez d’énergie pour vos générateurs. Les générateurs d\'énergies sont la base de l\'approvisionnement pour votre planète en énergie.', 0, 0, - 'Le centre de recherche est nécessaire pour développer de nouvelles technologies. Le niveau du centre détermine la vitesse de la recherche. Chaque planète que vous coloniserez devra être équipée d’un centre de recherche.', + 'Le centre de recherche est nécessaire pour développer de nouvelles technologies. Le niveau du centre détermine la vitesse de la recherche. Chaque planète que vous coloniserez devra être équipée d’un centre de recherche.', '~#DESCRIPTION MANQUANTE#~ Chantier terrestre', - 'Le chantier spatial vous permet de construire des vaisseaux, de l’infanterie et vos installations de défense. Plus le chantier est grand, plus la construction de vaisseaux, le recrutement de l’infanterie et la création d’installations de défense est rapide.', + 'Le chantier spatial vous permet de construire des vaisseaux, de l’infanterie et vos installations de défense. Plus le chantier est grand, plus la construction de vaisseaux, le recrutement de l’infanterie et la création d’installations de défense est rapide.', 0, - 'Les ressources qui ne sont pas encore traitées sont mises en stock dans ces entrepôts géants. Un entrepôt plus grand permet le stockage d\'une plus grande quantité de ressources. Lorsque l’entrepôt est plein, l\'extraction est stoppée. Il est grandement conseillé de développer ce genre d’infrastructure.', + 'Les ressources qui ne sont pas encore traitées sont mises en stock dans ces entrepôts géants. Un entrepôt plus grand permet le stockage d\'une plus grande quantité de ressources. Lorsque l’entrepôt est plein, l\'extraction est stoppée. Il est grandement conseillé de développer ce genre d’infrastructure.', 0); $technolo = array('Informatique','Detection','Armement','Bouclier','Maitrise de l\'énergie','Réacteur à antigravité','Réacteur à fusion','Réacteur à fusion Forruner','Médecine','Commandement militaire',0); - $technode = array( 'L’informatique vous permet de traiter les informations de façon très rapide réduisant ainsi les temps de réactions qui dans les combats peuvent s’avérer fatales.', - 'La détection est cruciale pour préserver sa flotte et ses planètes. Développer cette technologie vous permet de construire une base « œil des prophètes » qui repèrera les vaisseaux s’approchant de votre planète.', + $technode = array( 'L’informatique vous permet de traiter les informations de façon très rapide réduisant ainsi les temps de réactions qui dans les combats peuvent s’avérer fatales.', + 'La détection est cruciale pour préserver sa flotte et ses planètes. Développer cette technologie vous permet de construire une base « Å“il des prophètes » qui repèrera les vaisseaux s’approchant de votre planète.', 'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat démuni face aux assauts féroces adverses ? Cette technologie vous permettra de rechercher de nouveaux systèmes d\'armements afin de rendre vos outils de guerre plus précis et mortels.', - 'Le bouclier est un champ de force qui entoure vos vaisseaux et les protège. Ainsi il permet à vos vaisseaux de tenir plus longtemps face aux missiles adverses, ceci s\'avérant peut être décisif dans l’issue de la bataille.', - 'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et vaisseaux ; vos chercheurs vous permettront également d\'accéder à de nouveaux types d\'énergies, beaucoup plus intéressants.', + 'Le bouclier est un champ de force qui entoure vos vaisseaux et les protège. Ainsi il permet à vos vaisseaux de tenir plus longtemps face aux missiles adverses, ceci s\'avérant peut être décisif dans l’issue de la bataille.', + 'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et vaisseaux ; vos chercheurs vous permettront également d\'accéder à de nouveaux types d\'énergies, beaucoup plus intéressants.', 'Les réacteurs à antigravité sont les moteurs basiques covenant. Ils utilisent une technologie complexe projetant des particules quantiques créant un champ gravitationnel inverse annulant ainsi la gravité présente. Le principe fonctionne également dans l\'espace puisque l\'absence de gravité dans l\'espace, sans compter les étoiles et les autres anomalies spatiales, permet une projection plus puissante du champ.', - 'Après la combustion, voici la fusion. Ce type de réacteur est beaucoup plus puissant que la combustion utilisée depuis déjà des centaines d\'années. Il génère une énergie cinétique de grande envergure. Aucun dirigeant politique désirant voyager dans le cosmos ne pourrait s’en passer.', - 'Les covenants ont découvert d’anciens réacteurs à fusion utilisant la technologie d’hyperpropulsion Forruner. Cette technologie, beaucoup plus puissante que le réacteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra précis. Ce type de réacteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.', - 'La médecine vous permet d’avoir moins de pertes au combat et ainsi d’avoir une force de frappe qui résiste plus longtemps. Au lieu de laisser mourir les soldats blessés, le médecin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.', + 'Après la combustion, voici la fusion. Ce type de réacteur est beaucoup plus puissant que la combustion utilisée depuis déjà des centaines d\'années. Il génère une énergie cinétique de grande envergure. Aucun dirigeant politique désirant voyager dans le cosmos ne pourrait s’en passer.', + 'Les covenants ont découvert d’anciens réacteurs à fusion utilisant la technologie d’hyperpropulsion Forruner. Cette technologie, beaucoup plus puissante que le réacteur conventionnel au Plasma, autorise des sauts dans le sous-espace ultra précis. Ce type de réacteur est le plus cher mais aussi le plus rapide et puissant de toute la flotte covenante.', + 'La médecine vous permet d’avoir moins de pertes au combat et ainsi d’avoir une force de frappe qui résiste plus longtemps. Au lieu de laisser mourir les soldats blessés, le médecin les soigne pour les remettre sur pied et les rendre de nouveau aptes au combat.', 'En tant que général, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en matière de stratégie, vous montrer toujours plus rusé que votre impitoyable adversaire, aussi feriez-vous bien d\'étudier de nouvelles tactiques de combat pour vous assurer une franche victoire.'); $technoli = array('informatique1.jpg','detection.jpg','sanstitretruecolor04no6.jpg','boucliervaiseaucovenantey4.jpg','energie.jpg','reacteurantigravyd1.jpg','reacteur_f.jpg','reacteurfusionforerunnewu0.jpg','medecine.JPG','commandement.jpg'); $nomvaisa = array('cargos de classe Inquisitor','grand(s) transporteur(s)','vaisseau(x) de colonisation','sonde(s)','recycleur(s)','séraphin(s)','frégate(s)','croiseur(s) de classe CCS','croiseur(s) de classe Reverence','porte-vaisseaux','station(s) orbitale','super(s) porte-vaisseaux'); @@ -155,72 +154,72 @@ if (!isset($auth_level)) $auth_level = $_SESSION['auth_level']; $casernde = array( 'Les marines constituent l\'infanterie de base de vos forces militaires. De faible puissance et de résistance plutôt médiocre, ils rivalisent avec les unités covenants standard. Ils sont équipés d\'une armure de kevlar renforcée et d\'un MA5B.', 'Les fusillers sont équipés de fusils d\'assaut avec zoom intégré. Plus puissants que les marines standards, ils peuvent rivaliser avec des escouades entières de grunts dirigées par des élites hauts gradés.', 'Les grenadiers sont les spécialistes en explosifs du CSNU sur le terrain. Ils peuvent détruire les véhicules légers grâce à leurs grenades et leurs lances missiles.', - 'Les TCAO sont des soldats d\'assauts largués depuis l\'espace directement sur les champs de batailles grâce à des modules spéciaux. Ces soldats sont surentraînés et très chevronnés, risquant leur vie à chaque instant en raison des sauts orbitaux qui font atteindre une chaleur extrême dans le module.', + 'Les TCAO sont des soldats d\'assauts largués depuis l\'espace directement sur les champs de batailles grâce à des modules spéciaux. Ces soldats sont surentraînés et très chevronnés, risquant leur vie à chaque instant en raison des sauts orbitaux qui font atteindre une chaleur extrême dans le module.', 'Les snipers sont dotés de fusils de précision SA 2M capable de descendre un covenant à plusieurs centaines de mètres grâce à son zoom maximum de 10x. Grande portée de tir mais à courte portée, ils sont inutiles.', - 'Les spartans sont les unités d\'infanterie militaires les plus évoluées militairement du CSNU mais également des Covenants. Ils sont équipés d\'une armure de type Mjolnir améliorant leurs capacités de combat, déjà exceptionnelles grâce à leur entraînement militaire depuis leur plus jeune âge, ainsi qu\'à leurs implants cybernétiques, les rendants d\'une grande efficacité inégalée au sein de l\'infanterie.', - 'Les médecins sont sur le champ de bataille pour aider les soldats blessés par des tirs lors des affrontements. Ils peuvent réduire le nombre de morts lorsqu\'ils sont bien utilisés et ainsi peut être changer l’issue de la bataille.', + 'Les spartans sont les unités d\'infanterie militaires les plus évoluées militairement du CSNU mais également des Covenants. Ils sont équipés d\'une armure de type Mjolnir améliorant leurs capacités de combat, déjà exceptionnelles grâce à leur entraînement militaire depuis leur plus jeune âge, ainsi qu\'à leurs implants cybernétiques, les rendants d\'une grande efficacité inégalée au sein de l\'infanterie.', + 'Les médecins sont sur le champ de bataille pour aider les soldats blessés par des tirs lors des affrontements. Ils peuvent réduire le nombre de morts lorsqu\'ils sont bien utilisés et ainsi peut être changer l’issue de la bataille.', 'Les ingénieurs sont là pour réparer vos véhicules endommagés lors des affrontements. Ils peuvent réduire le nombre de vos pertes de véhicules lorsqu\'ils sont bien utilisés.', 'Les soldats exo squelettiques possèdent des armures de combat très résistantes et d\'une puissance énorme mais contre balancée par une faible autonomie d\'énergie, une mobilité faible et d\'une discrétion auditive aussi silencieuse qu\'un char d\'assaut dans un champs de mines lotus.'); $casernea = array('marine(s)','fusiller(s)','grenadier(s)','T.C.A.O.','sniper(s)','spartan(s)','médecin(s)','ingénieur(s)','soldat(s) exo squellette'); $casernei = array('marines.jpg','marinehf0.jpg','grenadier.jpg','TCAO2.jpg','sniper.jpg','spartan.jpg','medecin.jpg','ingenieurs.jpg','img_na_ig.jpg'); - $batiment = array('Usine de métallurgie','Usine de cristal','Synchronisateur d\'hydrogène','Centrale solaire','Centrale énergétique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial','Ecole militaire','Silo de stockage','Centrale informatique'); + $batiment = array('Usine de métallurgie','Usine de cristal','Synchronisateur d\'hydrogène','Centrale solaire','Centrale énergétique','Base radar','Centre de recherches','Chantier terrestre','Chantier spatial',0/*'Ecole militaire'*/,'Silo de stockage','Centrale informatique'); $batimede = array( 'Cette usine traite tous les métaux recueillis afin de produire du titanium-A ou différents types d\'alliages de qualité pour vos différentes constructions planétaires ou spatiales. Chaque niveau augmente la production de métal.', - 'L\'usine de cristal filtre les déchets récoltés avec les cristaux. Une fois séparés du reste ils sont classés par qualité par une quantité d\'appareils de haute technologie. Plus les cristaux sont purs plus ceux-ci peuvent être transformés en unités de stockage de données ou en conducteurs énergétiques de haute qualité. Plus ce bâtiment sera développé, plus vous pourrez traiter de cristaux rapidement.', - 'Ce bâtiment use de l\'eau pour la décomposer et en extraire l\'hydrogène, la base de toutes vos productions énergétiques, pour ensuite l\'acheminer dans des condensateurs ioniques afin de le rendre plus dense et par le fait même plus efficace. Chaque niveau augmente la production du synchronisateur.', - 'La centrale solaire produit l’énergie nécessaire au fonctionnement de vos usines. Elle fonctionne à partir d’une technologie Forruner qui consiste à envoyer un rayon à la verticale pour capter tous les rayons du soleil qui le croise.', - 'La centrale énergétique fonctionne avec un principe assez dépassé. En effet, l’énergie est produite par un réacteur à fusion qui en tournant produit de l’énergie comme le ferait une dynamo. Bien que ce principe fût révolutionnaire à l’époque, il fût rapidement dépassé par la centrale solaire qui permet de produire d’avantage d’énergie.', - 'Base radar', + 'L\'usine de cristal filtre les déchets récoltés avec les cristaux. Une fois séparés du reste ils sont classés par qualité par une quantité d\'appareils de haute technologie. Plus les cristaux sont purs plus ceux-ci peuvent être transformés en unités de stockage de données ou en conducteurs énergétiques de haute qualité. Plus ce bâtiment sera développé, plus vous pourrez traiter de cristaux rapidement.', + 'Ce bâtiment use de l\'eau pour la décomposer et en extraire l\'hydrogène, la base de toutes vos productions énergétiques, pour ensuite l\'acheminer dans des condensateurs ioniques afin de le rendre plus dense et par le fait même plus efficace. Chaque niveau augmente la production du synchronisateur.', + 'La centrale solaire produit l’énergie nécessaire au fonctionnement de vos usines. Elle fonctionne à partir d’une technologie Forruner qui consiste à envoyer un rayon à la verticale pour capter tous les rayons du soleil qui le croise.', + 'La centrale énergétique fonctionne avec un principe assez dépassé. En effet, l’énergie est produite par un réacteur à fusion qui en tournant produit de l’énergie comme le ferait une dynamo. Bien que ce principe fût révolutionnaire à l’époque, il fût rapidement dépassé par la centrale solaire qui permet de produire d’avantage d’énergie.', + 'Le centre de communication est un gigantesque relai de transmission envoyant des ondes entre les différents mondes connus et répertoriés de l\'univers. Grâce à lui, vous pourrez communiquer avec d\'autres administrateurs coloniaux afin de planifier ensemble des programmes d\'actions communs. Equipé d\'un radar, il vous permet de repérer les mouvements des flottes ennemies.', 'Le centre de recherches est certainement l\'une des bâtisses les plus importantes que vous puissiez construire dans votre colonie. Vos chercheurs travailleront sans relâche aucun afin de mettre au point de nouvelles technologies vous assurant suprématie et victoire sur les champs de bataille. Chaque niveau dévellopé augmente la vitesse de recherche de vos technologies.', - 'Le chantier terrestre vous permet de construire tous les véhicules atmosphérique du type warthog ou scorpion. Il permet ainsi à vos troupes d’accéder plus rapidement à un endroit et d’avoir un avantage avec l’armement de ces véhicules.', - 'Le chantier spatial permet de construire vôtre flotte de vaisseaux spatiaux. Généralement à la limite de l’atmosphère d’une planète il ne peut cependant se déplacer et doit impérativement rester en orbite. Le chantier spatial, bien que ressemblant à une station spatial, ne peut être détruit grâce à sa position qui lui confère un camouflage total.', - 'L\'académie militaire forme les meilleurs officiers et sous-officiers de la galaxie. Ces hommes expérimentés vous aideront à choisir de meilleures stratégies défensives ou offensives ou encore même économiques face aux différentes situations qui vous seront imposées. Plus vous augmenterez le niveau de cette structure plus vos officiers seront rapides et efficaces dans leurs tâches.', - 'Comme toutes choses, vos ressources ont besoin d\'espace pour être stockées ; c\'est pourquoi ces énormes silos vous seront d\'une aide précieuse afin d\'y renfermer une grande quantité de matières premières pour toutes vos productions. Plus le niveau du silo est haut, plus il pourra contenir de ressources supplémentaires.', + 'Le chantier terrestre vous permet de construire tous les véhicules atmosphérique du type warthog ou scorpion. Il permet ainsi à vos troupes d’accéder plus rapidement à un endroit et d’avoir un avantage avec l’armement de ces véhicules.', + 'Le chantier spatial permet de construire vôtre flotte de vaisseaux spatiaux. Généralement à la limite de l’atmosphère d’une planète il ne peut cependant se déplacer et doit impérativement rester en orbite. Le chantier spatial, bien que ressemblant à une station spatial, ne peut être détruit grâce à sa position qui lui confère un camouflage total.', + 'L\'académie militaire forme les meilleurs officiers et sous-officiers de la galaxie. Ces hommes expérimentés vous aideront à choisir de meilleures stratégies défensives ou offensives ou encore même économiques face aux différentes situations qui vous seront imposées. Plus vous augmenterez le niveau de cette structure plus vos officiers seront rapides et efficaces dans leurs tâches.', + 'Comme toutes choses, vos ressources ont besoin d\'espace pour être stockées ; c\'est pourquoi ces énormes silos vous seront d\'une aide précieuse afin d\'y renfermer une grande quantité de matières premières pour toutes vos productions. Plus le niveau du silo est haut, plus il pourra contenir de ressources supplémentaires.', 'La centrale informatique est le coeur de votre planète, le cerveau de votre territoire, analysant chaque particule détectée avec grand soin. Plus votre centrale est améliorée, plus rapidement et aisément les données seront traitées.'); $batimend = array('mine_m','mine_c','!!','centrale_s','centrale_f','radar','recherches','chantier_terrestre','???','ecole_militaire','silo','centre_info'); - $batimeni = array('mine_m.png','mine_c.png','synchroniseur.jpg','centrale solaire.jpg','centrale electrique.jpg','baseradardl3.jpg','recherches.jpg','chantierterrestrecopybj8.jpg','chantier spatial.jpg','ecole militaire.jpg','stockage.jpg','search0yp.jpg'); + $batimeni = array('mine_m.jpg','mine_c.png','synchroniseur.jpg','centrale solaire.jpg','centrale electrique.jpg','baseradardl3.jpg','recherches.jpg','chantierterrestrecopybj8.jpg','chantier spatial.jpg','ecole militaire.jpg','stockage.jpg','search0yp.jpg'); $technolo = array('IA','Radar','Armement','Blindage','Maitrise de l\'énergie','Réacteur à combustion','Réacteur à fusion','Réacteur à fusion de type II','Médecine','Tactiques de combats','Spartan'); $technode = array( 'Le résultat absolu de l\'informatique. L\'IA ou Intelligence Artificielle est le résultat d\'années de travail acharné pour pouvoir en arriver à cette grande performance technique. Les IA sont des entités non biologiques dotées du pouvoir de la pensée. Développer cette technologie vous permettra non seulement de disposer d\'Intelligences Artificielles, mais de les rendre de plus en plus complexes, créatives et réactives.', 'Ce système très ancien et usé par bien des militaires est utilisé pour la détection et l\'imagerie d\'objets faisant appel à des impulsions d\'ondes électromagnétiques à haute fréquence et sert à déterminer la position et la distance des vaisseaux. Pour chaque niveau, vous augmenterez la puissance de cette technologie et sa précision.', 'Un soldat n\'est rien sans son arme, et qu\'est-ce qu\'un soldat démuni face aux assauts féroces adverses ? Cette technologie vous permettra de rechercher de nouveaux systèmes d\'armements afin de rendre vos outils de guerre plus précis et mortels.', - 'La résistance de la coque de vos vaisseaux est plus que primordiale si vous tenez à remporter vos batailles, et encore plus avec les armes Covenantes capables de réduire en miettes même les plus résistants des vaisseaux spatiaux. C\'est la raison pour laquelle vos scientifiques, si vous leur en donnez l\'ordre, travailleront avec application à l\'élaboration de nouvelles formules pour créer des alliages métalliques les plus résistants.', - 'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations tout simplement. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et les propulseurs de vos vaisseaux.', - 'Le plus simple de tout les réacteurs, aussi vieux que le monde lui-même ! Equipés sur presque tout vos vaisseaux de base, cette technologie, certes basique, vous aidera à explorer l\'univers mais aussi, se trouvant être bien évidemment la base de la propulsion, vous permettra de découvrir de nouvelles techniques de propulsion irrémédiablement toujours plus puissantes et efficaces.', - 'Bien plus efficaces que de simples réacteurs à combustion, la fusion nucléaire est un processus où deux noyaux atomiques s\'assemblent pour former un noyau plus lourd. La fusion de noyaux légers dégage d\'énormes quantités d\'énergie provenant de l\'attraction entre les nucléons due à une forte interaction. Personne ne pourrait se passer de ce type d\'énergie lors de ses voyages dans le cosmos.', + 'La résistance de la coque de vos vaisseaux est plus que primordiale si vous tenez à remporter vos batailles, et encore plus avec les armes Covenantes capables de réduire en miettes même les plus résistants des vaisseaux spatiaux. C\'est la raison pour laquelle vos scientifiques, si vous leur en donnez l\'ordre, travailleront avec application à l\'élaboration de nouvelles formules pour créer des alliages métalliques les plus résistants.', + 'L\'énergie est la base de tout. Sans énergie, pas de voyages stellaires ni même de quoi faire marcher vos installations tout simplement. C\'est pourquoi l\'étude de nouvelles façons de produire de l\'énergie est vitale pour vos planètes et les propulseurs de vos vaisseaux.', + 'Le plus simple de tout les réacteurs, aussi vieux que le monde lui-même ! Equipés sur presque tout vos vaisseaux de base, cette technologie, certes basique, vous aidera à explorer l\'univers mais aussi, se trouvant être bien évidemment la base de la propulsion, vous permettra de découvrir de nouvelles techniques de propulsion irrémédiablement toujours plus puissantes et efficaces.', + 'Bien plus efficaces que de simples réacteurs à combustion, la fusion nucléaire est un processus où deux noyaux atomiques s\'assemblent pour former un noyau plus lourd. La fusion de noyaux légers dégage d\'énormes quantités d\'énergie provenant de l\'attraction entre les nucléons due à une forte interaction. Personne ne pourrait se passer de ce type d\'énergie lors de ses voyages dans le cosmos.', 'Cette technologie basée sur les réacteurs Covenants utilise la force électromagnétique résultant de l\'interaction entre un courant électrique et un champ magnétique pour accélérer un gaz ionisé appelé plasma. Bien plus efficace que tous les moyens de propulsions possibles, cette technologie révolutionnaire, très coûteuse, est un moyen efficace de parcourir de grandes distances en peu de temps.', - 'Depuis l\'aube des temps, chaque être vivant et pensant n\'a jamais cessé de chercher de nouvelles solutions en dévellopant les sciences médicales pour tenter d\'échapper à la mort et aux épidémies qui s\'abbatent sur lui. Seulement, aujourd\'hui, ce ne sont plus les maladies qui importent, mais plutot les blessures de guerre. Plus votre médecine sera éclatante, plus vos hommes de soins connaîtront de choses pour soigner vos blessés.', + 'Depuis l\'aube des temps, chaque être vivant et pensant n\'a jamais cessé de chercher de nouvelles solutions en dévellopant les sciences médicales pour tenter d\'échapper à la mort et aux épidémies qui s\'abbatent sur lui. Seulement, aujourd\'hui, ce ne sont plus les maladies qui importent, mais plutot les blessures de guerre. Plus votre médecine sera éclatante, plus vos hommes de soins connaîtront de choses pour soigner vos blessés.', 'En tant que général, vous devez avoir un esprit fin pour gagner vos batailles terrestres aussi bien que les affrontements spatiaux. C\'est pourquoi il vous faudra toujours innover en matière de stratégie, vous montrer toujours plus rusé que votre impitoyable adversaire, aussi feriez-vous bien d\'étudier de nouvelles tactiques de combat pour vous assurer une franche victoire.', - 'Ces formidables combattants constituent l\'élite de vos forces terrestres. Entraînés au maniement des armes, aux tactiques militaires et au combat de groupe depuis la naissance, ils sont pratiquement invincibles sur les champs de bataille face aux troupes covenantes. Les Spartans ont également subis plusieurs séries de modifications biologiques afin d\'améliorer leurs capacités physiques.'); - $technoli = array('IA4.jpg','radar7zr.jpg','techarmes1jk1.jpg','blindage.jpg','plasma4yl.jpg','reacteuracombustion.jpg','reacteurfusiontype1al5.jpg','reacteurfusiontype2nn6.jpg','medecin1.jpg','tactique.jpg','armuremc8ij.jpg'); - $nomvaisn = array('Cargos de classe Parabola','Cargos de classe Laden','Vaisseaux de colonisation de classe Odyssey','Drones d’espionnage de classe Clarion','Recycleurs de classe Minotaur','C709 Longsword Interceptor','Frégate','Croiseurs de classe Halcyon','Croiseurs de classe Marathon','Porte vaisseaux','Station orbitale','Super porte-vaisseaux'); - $nomvaisd = array( 'Ces cargos de taille conséquente peuvent transporter assez de ressources et de nourriture pour nourrir une petite ville. Ils sont rapides, très manœuvrables mais peu résistants, ce qui est en fait des proies faciles pour les chasseurs ennemis.', - 'Ces cargos de taille massive permettent le transport d’une énorme quantité de ressources. Ils sont plus résistants que leurs homologues de classe Parabola, mais sont néanmoins les cibles prioritaires des chasseurs ennemis visant à faire le plus de pertes dans le camp adverse.', - 'Les vaisseaux de colonisation sont de vraies minis villes volantes ; ils contiennent la majeure partie des corps d’états de votre planète mère afin d’être le plus autonome lorsque que vous colonisez de nouvelles planètes.', - 'Drones extrêmement rapides et manœuvrables permettant la surveillance et l’espionnage des planètes alentours avec un risque moins élevé de repérage qu’avec un vaisseau furtif standard. Ils sont utilisés lors de l’espionnage de planètes ennemies et sont très fragiles, si bien que lorsqu’ils traversent un champ de débris, ils sont réduits en de vulgaires morceaux de métal.', + 'Ces formidables combattants constituent l\'élite de vos forces terrestres. Entraînés au maniement des armes, aux tactiques militaires et au combat de groupe depuis la naissance, ils sont pratiquement invincibles sur les champs de bataille face aux troupes covenantes. Les Spartans ont également subis plusieurs séries de modifications biologiques afin d\'améliorer leurs capacités physiques.'); + $technoli = array('IA4.jpg','radar7zr.jpg','arme.png','blindage.jpg','plasma4yl.jpg','reacteuracombustion.jpg','reacteurfusiontype1al5.jpg','reacteurfusiontype2nn6.jpg','medecin1.jpg','tactique.jpg','armuremc8ij.jpg'); + $nomvaisn = array('Cargos de classe Parabola','Cargos de classe Laden','Vaisseaux de colonisation de classe Odyssey','Drones d’espionnage de classe Clarion','Recycleurs de classe Minotaur','C709 Longsword Interceptor','Frégate','Croiseurs de classe Halcyon','Croiseurs de classe Marathon','Porte vaisseaux','Station orbitale','Super porte-vaisseaux'); + $nomvaisd = array( 'Ces cargos de taille conséquente peuvent transporter assez de ressources et de nourriture pour nourrir une petite ville. Ils sont rapides, très manÅ“uvrables mais peu résistants, ce qui est en fait des proies faciles pour les chasseurs ennemis.', + 'Ces cargos de taille massive permettent le transport d’une énorme quantité de ressources. Ils sont plus résistants que leurs homologues de classe Parabola, mais sont néanmoins les cibles prioritaires des chasseurs ennemis visant à faire le plus de pertes dans le camp adverse.', + 'Les vaisseaux de colonisation sont de vraies minis villes volantes ; ils contiennent la majeure partie des corps d’états de votre planète mère afin d’être le plus autonome lorsque que vous colonisez de nouvelles planètes.', + 'Drones extrêmement rapides et manÅ“uvrables permettant la surveillance et l’espionnage des planètes alentours avec un risque moins élevé de repérage qu’avec un vaisseau furtif standard. Ils sont utilisés lors de l’espionnage de planètes ennemies et sont très fragiles, si bien que lorsqu’ils traversent un champ de débris, ils sont réduits en de vulgaires morceaux de métal.', 'Les guerres sont de plus en plus nombreuses et les pertes de plus en plus grandes laissant à chaque fois des champs de débris immenses limitant les routes des voies commerciales. Des recycleurs ont donc été créés afin de déblayer ces zones et de vous faire profiter de ces ressources gratuites. Lors du voyage de retour, le recycleur transforme les débris pour vous les redonner sous forme de ressources primaires.', 'Vaisseau orbital et atmosphérique lourd, apte au combat spatial, atmosphérique, et au bombardement lourd sur des positions stratégiques. Ces vaisseaux sont capable de bombarder une vaste position adverse, grâce à leurs bombes au Napalm, mais sont aussi capables de cibler précisément leurs cibles et de les détruire grâce à leurs nombreux missiles air-air air-sol.', - 'Cette classe de vaisseau est la plus répandue dans le CSNU. Ces vaisseaux sont très manœuvrables du fait de leur petite taille, mais sont aussi très faibles, à cause de leur blindage et de leur armement moindre. Ces vaisseaux sont peu coûteux mais également peu efficaces et sont surtout utilisés pour des patrouilles. Ils forment les éléments principaux des différentes flottes du CSNU. ', - 'Ces croiseurs sont des vaisseaux d’attaque, dépassés technologiquement, très peu répandus, très coûteux mais résistants : leur architecture interne leur permet de résister à de nombreux tirs de plasma. Cette architecture complexe à produire et à maintenir en état, en font des vaisseaux extrêmement rares et chers. Ils ont été très récemment remis à neuf et améliorés, avec un tout nouvel armement.', - 'Ces grands vaisseaux (2 fois et demie la longueur d’une frégate), sont des descendants de la lignée des croiseurs Halcyon. Ces vaisseaux ont une très grande puissance de feu (1 CAM lourd), un fort blindage (5 mètres 50 de Titane-A), et sont très rapides. Ils sont assez peu communs, mais restent des vaisseaux d’attaque très redoutables : ils peuvent encaisser de nombreux tirs de plasma avant de succomber.', - 'Ces immenses vaisseaux sont capables de transporter bon nombre de Longswords, d’Albatross, et tout autres types d’unités. Ces vaisseaux leurs permettent de se défendre contre une éventuelle attaque de chasseurs ennemis, mais sont également très lourdement armés. Ils sont usités lors d’attaques massives de planètes nécessitant un fort appui aérien et une très grosse puissance de feu. ', - 'Les station orbitales humaines sont basées sur un même modèle : de multiples DCA légères et lourdes pour les chasseurs, des missiles ARCHERS et un CAM standard capable de pénétrer la plupart des boucliers stellaires. Cette base orbitale est très bien équipée et est considérée comme la défense principale des planètes du CSNU.', - 'Ces vaisseaux sont sont beaucoup plus chers du fait de leur meilleur armement, blindage et importante capacité de transport. Ces vaisseaux sont très peu vus sur le terrain, leur rôle principal est de déployer des Longswords afin de fournir aux vaisseaux alliés un appui orbital. Ils font partis des plus puissants vaisseaux du CSNU. Ils sont capables de transporter bon nombre d’unités terrestres et aériennes.'); + 'Cette classe de vaisseau est la plus répandue dans le CSNU. Ces vaisseaux sont très manÅ“uvrables du fait de leur petite taille, mais sont aussi très faibles, à cause de leur blindage et de leur armement moindre. Ces vaisseaux sont peu coûteux mais également peu efficaces et sont surtout utilisés pour des patrouilles. Ils forment les éléments principaux des différentes flottes du CSNU. ', + 'Ces croiseurs sont des vaisseaux d’attaque, dépassés technologiquement, très peu répandus, très coûteux mais résistants : leur architecture interne leur permet de résister à de nombreux tirs de plasma. Cette architecture complexe à produire et à maintenir en état, en font des vaisseaux extrêmement rares et chers. Ils ont été très récemment remis à neuf et améliorés, avec un tout nouvel armement.', + 'Ces grands vaisseaux (2 fois et demie la longueur d’une frégate), sont des descendants de la lignée des croiseurs Halcyon. Ces vaisseaux ont une très grande puissance de feu (1 CAM lourd), un fort blindage (5 mètres 50 de Titane-A), et sont très rapides. Ils sont assez peu communs, mais restent des vaisseaux d’attaque très redoutables : ils peuvent encaisser de nombreux tirs de plasma avant de succomber.', + 'Ces immenses vaisseaux sont capables de transporter bon nombre de Longswords, d’Albatross, et tout autres types d’unités. Ces vaisseaux leurs permettent de se défendre contre une éventuelle attaque de chasseurs ennemis, mais sont également très lourdement armés. Ils sont usités lors d’attaques massives de planètes nécessitant un fort appui aérien et une très grosse puissance de feu. ', + 'Les station orbitales humaines sont basées sur un même modèle : de multiples DCA légères et lourdes pour les chasseurs, des missiles ARCHERS et un CAM standard capable de pénétrer la plupart des boucliers stellaires. Cette base orbitale est très bien équipée et est considérée comme la défense principale des planètes du CSNU.', + 'Ces vaisseaux sont sont beaucoup plus chers du fait de leur meilleur armement, blindage et importante capacité de transport. Ces vaisseaux sont très peu vus sur le terrain, leur rôle principal est de déployer des Longswords afin de fournir aux vaisseaux alliés un appui orbital. Ils font partis des plus puissants vaisseaux du CSNU. Ils sont capables de transporter bon nombre d’unités terrestres et aériennes.'); $nomvaisa = array('cargos de classe Parabola','cargos de classe Laden','vaisseau(x) de colonisation de classe Odyssey','drone(s) d\'espionnage de classe Clarion','recycleur(s) de classe Minotaur','C709 Longsword Interceptor','Frégates','croiseur(s) de classe Halcyon','croiseur(s) de classe Marathon','porte vaisseaux','station(s) orbitale','super(s) porte-vaisseaux'); - $nomvaisi = array('csnucargoparabola2mc9.jpg','csnucargoladen2al8.jpg','vaisseaucolonisationmm4.jpg','drone_clarion.jpg','img_na_ig.jpg','longsword.jpg','fregatewz5.jpg','croiseurclassealcyon130om6.jpg','croiseurmarathonke3.jpg','csnuportevaisseauxgy3.jpg','station.jpg','.jpg'); + $nomvaisi = array('csnucargoparabola2mc9.jpg','csnucargoladen2al8.jpg','colonisation.jpg','drone_clarion.jpg','img_na_ig.jpg','longsword.jpg','fregatewz5.jpg','croiseurclassealcyon130om6.jpg','croiseurmarathonke3.jpg','csnuportevaisseauxgy3.jpg','station.jpg','csnusuperportevaisseauxrw4.jpg'); $nomterra = array('sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT','mitrailleuse(s) automatique M247 GP','DCA légère(s)','DCA lourde(s)','canon(s) Gauss','lanceur(s) de missiles'); $nomterrn = array('Sparrowhawk','077-TC Pelican','C703 Shortsword Bomber','SHD Albatros','M12 LRV Warthogs','M12G1 LAAV Warthogs','M12A1 LAAV Warthogs','M808B Scorpions MBT','Mitrailleuse automatique M247 GP','DCA légère','DCA lourde','Canon Gauss','Lanceur de missiles'); - $nomterde = array( 'Véhicule à propulsion verticale permettant des attaques extrêmement rapides et destructrices grâce à ses six tubes lance-missiles, ses deux mitrailleuses légères, et sa mitrailleuse lourde frontale. Ces vaisseaux d’assaut rapide sont de véritables broyeurs de tôle grâce à leurs 6 tubes lance-missiles et sont capables de détruire des véhicules et des positions fortement blindées.', - 'Véhicule aérien de transport léger permettant le transport rapide de troupes à des endroits stratégiques tel un warthog ou un scorpion. Ils sont la base des renforts terrestres et permettent l’acheminement de troupes et de munitions rapidement.', - 'Vaisseau suborbital très rapide apte tant au combat aérien rapproché qu’au bombardement ciblé. Ces bombardiers ont un pointeur laser qui leur permet de viser au mieux les cibles ennemies, qu\'elles soient au sol ou aériennes. Ils sont néanmoins capables de combattre en combat aérien rapproché grâce à leurs missiles thermo guidés et sont utilisés lors de bombardements de cibles mineures.', - 'Véhicule aérien de transport lourd permettant le transport en masse de troupes ou de véhicules tels que des warthogs ou bien une paire de scorpions vers des zones de largage. Ces véhicules de soutien aérien lourd sont surtout utilisés lors d’offensives nécessitant un déploiement en masse d’unités blindées et de munitions au plus près des lignes adverses.', - 'Véhicule d’attaque léger permettant des assauts rapides et efficaces, ainsi que le transport léger de troupes. Ces véhicules sont la base des véhicules terrestres du CSNU.', - 'Véhicule léger équipé d’un canon à accélération magnétique (CAM), très efficace contre du personnel, des véhicules moyennement blindés, ou bien contre des véhicules aériens légers. Les Warthog M12G1 sont très répandus et surtout utilisés lors d\'offensives sur des cibles disposant d’un appui aérien ou terrestre léger.', - 'Véhicule léger, armé d’un lance-missiles anti-véhicule permettant des assauts rapides contre des véhicules blindés ou contre des positions fortifiées. Ils sont surtout utilisés en cas d’attaques de postes avancés.', - 'Tank blindé anti-véhicules. Permet l’attaque de cibles fortifiées grâce à ses balles perforantes de gros calibre. Ces tanks sont utilisés lors d’assauts massifs sur des bases fortifiées et vitales à l’ennemi.', + $nomterde = array( 'Véhicule à propulsion verticale permettant des attaques extrêmement rapides et destructrices grâce à ses six tubes lance-missiles, ses deux mitrailleuses légères, et sa mitrailleuse lourde frontale. Ces vaisseaux d’assaut rapide sont de véritables broyeurs de tôle grâce à leurs 6 tubes lance-missiles et sont capables de détruire des véhicules et des positions fortement blindées.', + 'Véhicule aérien de transport léger permettant le transport rapide de troupes à des endroits stratégiques tel un warthog ou un scorpion. Ils sont la base des renforts terrestres et permettent l’acheminement de troupes et de munitions rapidement.', + 'Vaisseau suborbital très rapide apte tant au combat aérien rapproché qu’au bombardement ciblé. Ces bombardiers ont un pointeur laser qui leur permet de viser au mieux les cibles ennemies, qu\'elles soient au sol ou aériennes. Ils sont néanmoins capables de combattre en combat aérien rapproché grâce à leurs missiles thermo guidés et sont utilisés lors de bombardements de cibles mineures.', + 'Véhicule aérien de transport lourd permettant le transport en masse de troupes ou de véhicules tels que des warthogs ou bien une paire de scorpions vers des zones de largage. Ces véhicules de soutien aérien lourd sont surtout utilisés lors d’offensives nécessitant un déploiement en masse d’unités blindées et de munitions au plus près des lignes adverses.', + 'Véhicule d’attaque léger permettant des assauts rapides et efficaces, ainsi que le transport léger de troupes. Ces véhicules sont la base des véhicules terrestres du CSNU.', + 'Véhicule léger équipé d’un canon à accélération magnétique (CAM), très efficace contre du personnel, des véhicules moyennement blindés, ou bien contre des véhicules aériens légers. Les Warthog M12G1 sont très répandus et surtout utilisés lors d\'offensives sur des cibles disposant d’un appui aérien ou terrestre léger.', + 'Véhicule léger, armé d’un lance-missiles anti-véhicule permettant des assauts rapides contre des véhicules blindés ou contre des positions fortifiées. Ils sont surtout utilisés en cas d’attaques de postes avancés.', + 'Tank blindé anti-véhicules. Permet l’attaque de cibles fortifiées grâce à ses balles perforantes de gros calibre. Ces tanks sont utilisés lors d’assauts massifs sur des bases fortifiées et vitales à l’ennemi.', 'La mitrailleuse M247 est une arme de calibre moyen envoyant des balles de calibre 30 à une cadence de tir de 6 balles par seconde. Généralement positionnée dans des endroits fixes, cette tourelle, efficace contre l\'infanterie et les véhicules légers de petite taille est de précision moyenne suffisante pour éliminer une menace de quelques soldats covenants.', - 'Les DCA légères sont des canons anti-aérien de puissance moyenne mais de cadence de tir et de calibre de munitions à tête explosive élevée permettant de détruire la plupart des chasseurs légers avec aisance. Ce modèle est équipé d\'un emplacement spécial lui permettant de tirer également sur des cibles au sol.', - 'Les DCA lourdes sont quasi-similaires aux légères mais possèdent tout de même une différence au niveau du calibre des balles qui, plus élevé avec une tête explosif supérieure est comparable à une explosion de mine lotus. Il a en contre partie une capacité de tir plus limitée question cadence et une quantité de munitions moindre dans chaque chargeur.', + 'Les DCA légères sont des canons anti-aérien de puissance moyenne mais de cadence de tir et de calibre de munitions à tête explosive élevée permettant de détruire la plupart des chasseurs légers avec aisance. Ce modèle est équipé d\'un emplacement spécial lui permettant de tirer également sur des cibles au sol.', + 'Les DCA lourdes sont quasi-similaires aux légères mais possèdent tout de même une différence au niveau du calibre des balles qui, plus élevé avec une tête explosif supérieure est comparable à une explosion de mine lotus. Il a en contre partie une capacité de tir plus limitée question cadence et une quantité de munitions moindre dans chaque chargeur.', 'Le canon gauss est l\'équivalent du Super CAM mais en version miniature tirant des projectiles à haute densité et à grande vitesse sur ses cibles. Il est capable, en outre, de détruire des véhicules à blindage lourd tel des wraith\'s covenants, véritables chars d\'assaut à longue portée. Malheureusement, il est moins efficace contre l\'infanterie dû à sa cadence de tir plutôt faible et sa précision moindre.', - 'Les lance-missiles du CSNU sont équipés de missiles balistiques hautement explosifs capables de réduire aisément en miettes les chars covenants ou les chasseurs Séraphins. Ce lance-missiles, une fois ses salves tirées, nécessite plusieures minutes de réarmement pour être de nouveau opérationnel.'); + 'Les lance-missiles du CSNU sont équipés de missiles balistiques hautement explosifs capables de réduire aisément en miettes les chars covenants ou les chasseurs Séraphins. Ce lance-missiles, une fois ses salves tirées, nécessite plusieures minutes de réarmement pour être de nouveau opérationnel.'); $nomterri = array('csnusparrowhawkkp4.jpg','pelican.jpg','csnushortswordad3.jpg','albatross.jpg','warthog-vrl.jpg','M12G1_LAAV_Warthog.jpg','M12A1_LAAV_Warthog.jpg','scorpionN.jpg','tourelle_fixe.jpg','dca_legere.jpg','dca_lourde.jpg','tourelle_gauss.jpg','csnulancemissileol5.jpg'); } ?> \ No newline at end of file diff --git a/includes/onyx/access.php b/includes/onyx/access.php new file mode 100644 index 0000000..f0225a3 --- /dev/null +++ b/includes/onyx/access.php @@ -0,0 +1,12 @@ + diff --git a/includes/onyx/ban.xlist b/includes/onyx/ban.xlist new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/includes/onyx/ban.xlist @@ -0,0 +1 @@ + diff --git a/includes/onyx/bdd.class.php b/includes/onyx/bdd.class.php new file mode 100644 index 0000000..da851c4 --- /dev/null +++ b/includes/onyx/bdd.class.php @@ -0,0 +1,292 @@ +session) + { + $this->deconnexion(); + } + + global $var___mysql, $config; + + $u = empty($u)?$var___mysql['login']:$u; + + $p = empty($p)?$var___mysql['password']:$p; + + $h = empty($h)?$config['db_host']:$h; + + @$this->session = mysql_connect($h,$u,$p) or require('secours.php'); + + if (!$this->session) + { + die('Connexion a la base de donnée impossible.'); + } + + mysql_query('SET CHARACTER SET "utf8"',$this->session); + + if(!empty($db)) + { + $var = mysql_select_db($db,$this->session); + if($var) $this->database = $db; + } + } + + function deconnexion() + { + if($this->session) + { + @$var = mysql_close($this->session); + $this->session = FALSE; + return $var; + } + else return FALSE; + } + + function erreur($flag=TRUE) + { + if($this->session) + { + $var = mysql_error($this->session); + if($flag) echo $var; + return $var; + } + else return FALSE; + } + function db($db=NULL) + { + if($this->session) + { + global $config; + $db = empty($db)?$config['db_name']:$db; + + $var = mysql_select_db($db,$this->session); + if($var) $this->database = $db; + return $var; + } + else return FALSE; + } + + function escape(&$var) + { + if($this->session) + { + $var = mysql_real_escape_string($var,$this->session); + return $var; + } + else return FALSE; + } + + function query($q) + { + if($this->session) + { + $this->reponse = mysql_query($q,$this->session); + + if(!$this->reponse) + { + echo("Requete à la base de donnée invalide".mysql_error()); + return FALSE; + } + + $this->num_rows = @mysql_num_rows($this->reponse); + + if($this->num_rows == 0) + { + return NULL; + } + + elseif($this->num_rows >= 1) + { + for($i=0; $var = mysql_fetch_assoc($this->reponse); $i++) + { + $sortie[$i] = $var; + } + return $sortie; + } + + else return FALSE; + } + else return FALSE; + } + + function unique_query($q) + { + if($this->session) + { + $this->reponse = mysql_query($q,$this->session); + + if(!$this->reponse) + { + echo("Requete à la base de donnée invalide"); + return FALSE; + } + + $this->num_rows = @mysql_num_rows($this->reponse); + + if($this->num_rows == 0 || $this->num_rows > 1) + { + return NULL; + } + + elseif($this->num_rows == 1) + { + return mysql_fetch_assoc($this->reponse); + } + + else return FALSE; + } + else return FALSE; + } + + function affected() + { + if($this->session) + { + $affected = mysql_affected_rows($this->session); + if($affected == 0) + { + return NULL; + } + elseif($affected >= 1) + { + return $affected; + } + else return FALSE; + } + else return FALSE; + } + + function check($table,$cond) + { + if($this->session && !empty($this->database)) + { + $hashcheck = $this->unique_query("SELECT hash FROM $table WHERE $cond"); + + if($this->num_rows != 1) return FALSE; + + $hashcheck = $hashcheck['hash']; + + $columns = $this->query("SHOW COLUMNS FROM $table"); + + $i = 0; + $j = 0; + + foreach($columns as $key => $value) + { + if($value['Field'] == 'hash' || $value['Field'] == 'active') + { + $i++; + } + else + { + $array[$j] = $value['Field']; + $j++; + } + } + if($i != 2) return FALSE; + + $array = implode(",", $array); + + $var = $this->unique_query("SELECT $array FROM $table WHERE $cond"); + + if($this->num_rows == 1) + { + + $var = implode('',$var); + + $hash = hash_var($var); + + if($hashcheck === $hash) + { + return TRUE; + } + else; + { + $this->query("UPDATE $table SET active='0' WHERE $cond"); + return FALSE; + } + } + else return FALSE; + } + else return FALSE; + } + + function hash($table,$cond) + { + if($this->session && !empty($this->database)) + { + $columns = $this->query("SHOW COLUMNS FROM $table"); + + $i = 0; + $j = 0; + + foreach($columns as $key => $value) + { + if($value['Field'] == 'hash' || $value['Field'] == 'active') + { + $i++; + } + else + { + $array[$j] = $value['Field']; + $j++; + } + } + if($i != 2) return FALSE; + + $array = implode(",", $array); + + $var = $this->unique_query("SELECT $array FROM $table WHERE $cond"); + + if($this->num_rows == 1) + { + + $var = implode('',$var); + + $hash = hash_var($var); + + $r = $this->query("UPDATE $table SET active='1', hash='$hash' WHERE $cond"); + + return $this->affected(); + } + else return FALSE; + } + else return FALSE; + } + function control($table) + { + if($this->session && !empty($this->database)) + { + $xid = $this->query("SELECT xid FROM $table"); + if($this->num_rows != 0) + { + foreach($xid as $key => $value) + { + $vxid = $value['xid']; + $var = $this->check($table,"xid = '$vxid'"); + if(!$var) return FALSE; + } + return TRUE; + } + else return FALSE; + } + else return FALSE; + } + } +?> \ No newline at end of file diff --git a/includes/onyx/config.xconf b/includes/onyx/config.xconf new file mode 100644 index 0000000..e6218ac --- /dev/null +++ b/includes/onyx/config.xconf @@ -0,0 +1,75 @@ +actif: "1" +titre: "Halo-Battle" +bddactif: "1" +domaine: "localhost" +url_rewriting : "0" +url_masque[localhost_hbn] : "#^((m([1-9]|1[0-2])|csnu|covenants)?(-\d{1,4})?|\d{1,4})?$#" +url_replace[localhost_hbn] : "blog.php?e=$1" +chemin: "/var/www/virtual/halo-battle.s-fr.com/htdocs/" +session: "1" +session_time: "3600" +session_name: "hbservj1" +fuseau_horaire: "2" +locales: "fr_FR" +lang: "FRA" +db_host: "localhost" +db_name: "halo_battle" +db_prefix: "" +smiley_dir: "images/smiles/" +smiley[wink]: ":wink:" +smiley[biggrin]: ":D" +smiley[smile]: ":-)" +smiley[razz]: ":P" +smiley[eek]: ":shock:" +smiley[cool]: "8-)" +smiley[twisted]: ":twisted:" +smiley[evil]: ":evil:" +smiley[mad]: ":-x" +smiley[confused]: ":-?" +smiley[sad]: ":-(" +smiley[surprised]: ":-O" +smiley[neutral]: ":-|" +smiley[redface]: ":oops:" +smiley[rolleyes]: ":roll:" +smiley[lol]: ":lol:" +link[forum]: "/forum/index.php" +link[jeu]: "http://battle.halo.fr" +link[blog]: "ark/" +link[accueil]: "/accueil.html" +link[contact]: "/contact.html" +link[self]: "./" +link[inscription]: "?p=inscription" +menu[accueil]: "?p=accueil" +menu[batiments]: "?p=batiments" +menu[caserne]: "?p=prochainement" +menu[chantierspatial]: "?p=chantierspatial" +menu[chantierterrestre]: "?p=prochainement" +menu[defenses]: "?p=defenses" +menu[laboratoire]: "?p=laboratoire" +menu[arbre]: "?p=arbre" +menu[ressources]: "?p=ressources" +menu[gestion]: "?p=prochainement" +menu[flotte]: "?p=flotte" +menu[armee]: "?p=prochainement" +menu[carte]: "?p=carte" +menu[options]: "?p=options" +menu[messages]: "?p=messagerie" +menu[envoie]: "?p=envoyer" +menu[alliance]: "?p=alliances" +menu[classement]: "?p=classement" +menu[forums]: "http://halo-battle.s-fr.com/forum/" +menu[bugs]: "?p=bugs" +menu[faq]: "?p=prochainement" +menu[deconnexion]: "?p=deconnexion" +menuadmin[accueil]: "?p=accueil" +menuadmin[vip]: "?p=vip" +menuadmin[vflottes]: "?p=vflotte" +menuadmin[vplanetes]: "?p=vplanetes" +menuadmin[vjoueurs]: "?p=vjoueurs" +menuadmin[valliances]: "?p=valliances" +menuadmin[laboratoire]: "?p=laboratoire" +menuadmin[arbre]: "?p=arbre" +menuadmin[ressources]: "?p=ressources" +menuadmin[gestion]: "?p=prochainement" +menuadmin[flotte]: "?p=flotte" +menuadmin[deconnexion]: "?p=deconnexion" diff --git a/includes/onyx/kernel.php b/includes/onyx/kernel.php new file mode 100644 index 0000000..e52b4f0 --- /dev/null +++ b/includes/onyx/kernel.php @@ -0,0 +1,252 @@ +$2'; + + $pattern[] = '#\\[color=(aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|purple|red|silver|teal|white|yellow)\\](.+?)\\[/color\\]#u'; + $replace[] = '$2'; + + $pattern[] = '#\\[img\\]http://([a-zA-Z0-9_/.%*+~,\\#-]+)\\[/img\\]#u'; + $replace[] = '$1'; + + default: + case 0: + $pattern[] = '#\\[url=(?:http://)?([a-zA-Z0-9_/.%*+~,\\#-]+)\\](.+?)\\[/url\\]#u'; + $replace[] = '$2'; + + $pattern[] = '#\\[url\\](?:http://)?([a-zA-Z0-9_/.%*+~,\\#-]+)\\[/url\\]#u'; + $replace[] = '$1'; + + $pattern[] = '#\\[cite\\](.+?)\\[/cite\\]#u'; + $replace[] = '$1'; + + $pattern[] = '#\\[u\\](.+?)\\[/u\\]#u'; + $replace[] = '$1'; + + $pattern[] = '#\\[i\\](.+?)\\[/i\\]#u'; + $replace[] = '$1'; + + $pattern[] = '#\\[b\\](.+?)\\[/b\\]#u'; + $replace[] = '$1'; + + foreach($config['smiley'] as $keys => $values) + { + $pattern[] = '#'.preg_quote($values).'#u'; + $replace[] = ''.$keys.''; + } + } + + $pattern = array_reverse($pattern); + $replace = array_reverse($replace); + + $var = preg_replace($pattern,$replace,$var); + return $var; + } + + +define('SMARTY_DIR',_FCORE.'templates/libs/'); + +require_once(_FCORE."access.php"); + +require_once(SMARTY_DIR."Smarty.class.php"); + +require_once(_FCORE."bdd.class.php"); + +require_once(_FCORE."session.class.php"); + +header("Content-Type: text/html;charset=utf-8"); + +?> diff --git a/includes/onyx/logs/16-05-2008.log b/includes/onyx/logs/16-05-2008.log new file mode 100644 index 0000000..d6575ce --- /dev/null +++ b/includes/onyx/logs/16-05-2008.log @@ -0,0 +1 @@ +[00:25:38] MESSAGE : Création de l'alliance : les nouveaux poms par 8 (fondateur : 1) après validation de 4 signatures : 3, 5, 7 , [127.0.0.1] [GET] [/hbn/?p=alliances&q=signer&i=c9b76e336f77b1e724c0809d0fb366ed0084b85c] [Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5] [] diff --git a/includes/onyx/logs/16-05-2008.xlog b/includes/onyx/logs/16-05-2008.xlog new file mode 100644 index 0000000..b49480d --- /dev/null +++ b/includes/onyx/logs/16-05-2008.xlog @@ -0,0 +1 @@ +[23:15:22] MESSAGE : Création de l'alliance : les nouveaux poms par 8 (fondateur : 1) après validation de 4 signatures : 3, 2, 48 , [127.0.0.1] [GET] [/hbn/?p=alliances&q=signer&i=c9eb7a4fbfac8062bf83bf530d55024647484aae] [Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9b5) Gecko/2008032620 Firefox/3.0b5] [http://127.0.0.1/hbn/?p=alliances&q=fonder] diff --git a/includes/onyx/logs/php.log b/includes/onyx/logs/php.log new file mode 100644 index 0000000..e69de29 diff --git a/includes/onyx/phpbb_functions.php b/includes/onyx/phpbb_functions.php new file mode 100644 index 0000000..0ae45a2 --- /dev/null +++ b/includes/onyx/phpbb_functions.php @@ -0,0 +1,111 @@ + 30) + { + return $output; + } + + $count = 1 << $count_log2; + $salt = substr($setting, 4, 8); + + if (strlen($salt) != 8) + { + return $output; + } + + /** + * We're kind of forced to use MD5 here since it's the only + * cryptographic primitive available in all versions of PHP + * currently in use. To implement our own low-level crypto + * in PHP would result in much worse performance and + * consequently in lower iteration counts and hashes that are + * quicker to crack (by non-PHP code). + */ + if (PHP_VERSION >= 5) + { + $hash = md5($salt . $password, true); + do + { + $hash = md5($hash . $password, true); + } + while (--$count); + } + else + { + $hash = pack('H*', md5($salt . $password)); + do + { + $hash = pack('H*', md5($hash . $password)); + } + while (--$count); + } + + $output = substr($setting, 0, 12); + $output .= _hash_encode64($hash, 16, $itoa64); + + return $output; + } + function _hash_encode64($input, $count, &$itoa64) + { + $output = ''; + $i = 0; + + do + { + $value = ord($input[$i++]); + $output .= $itoa64[$value & 0x3f]; + + if ($i < $count) + { + $value |= ord($input[$i]) << 8; + } + + $output .= $itoa64[($value >> 6) & 0x3f]; + + if ($i++ >= $count) + { + break; + } + + if ($i < $count) + { + $value |= ord($input[$i]) << 16; + } + + $output .= $itoa64[($value >> 12) & 0x3f]; + + if ($i++ >= $count) + { + break; + } + + $output .= $itoa64[($value >> 18) & 0x3f]; + } + while ($i < $count); + + return $output; + } + +?> \ No newline at end of file diff --git a/includes/onyx/session.class.php b/includes/onyx/session.class.php new file mode 100644 index 0000000..1a26b54 --- /dev/null +++ b/includes/onyx/session.class.php @@ -0,0 +1,122 @@ +connexion(); + $db->db(); + $db->control($config['db_prefix']."sessions"); + + $time = time()-$config['session_time']; + $table = $config['db_prefix']."sessions"; + $db->query("DELETE FROM $table WHERE time < $time AND active = '1'"); + + $db->deconnexion(); + } + } + + function new_cookie() + { + global $config; + + if($config['session']=='1') + { + $db = new bdd(); + $db->connexion(); + $db->db(); + + $time = time(); + $xid = random(); + $sess_cookie = random(); + $ip = encode_ip(); + $table = $config['db_prefix']."sessions"; + $db->query("INSERT INTO $table(xid,session,time,ip,var_session,level,hash,active) VALUES('$xid','$sess_cookie','$time','$ip','','1','','0') "); + $db->hash($table,"xid = '$xid'"); + + $this->xid = $xid; + + cookie($config['session_name'],$sess_cookie); + + $db->deconnexion(); + } + } + + function load() + { + $this->clean(); + + global $config; + + if($config['session']=='1') + { + + if($cookie = gpc($config['session_name'],'cookie')) + { + $db = new bdd(); + $db->connexion(); + $db->db(); + + $db->escape($cookie); + + $table = $config['db_prefix']."sessions"; + $query = $db->unique_query("SELECT * FROM $table WHERE session='$cookie' AND active='1'"); + + if($db->num_rows == 1 && $query['ip'] == encode_ip()) + { + $time = time(); + $xid = $query['xid']; + $db->query("UPDATE $table SET time='$time' WHERE xid='$xid'"); + + $this->xid = $xid; + $this->level = $query['level']; + $this->values = unserialize($query['var_session']); + + cookie($config['session_name'],gpc($config['session_name'],'cookie')); + } + else $this->new_cookie(); + + $db->deconnexion(); + } + else $this->new_cookie(); + } + } + + function put() + { + global $config; + + if($config['session']=='1') + { + $db = new bdd(); + $db->connexion(); + $db->db(); + + $time = time(); + + $var_session = serialize($this->values); + + $db->escape($var_session); + + $xid = $this->xid; + + $table = $config['db_prefix']."sessions"; + $db->query("UPDATE $table SET time='$time', var_session='$var_session' WHERE xid='$xid'"); + $db->hash($table,"xid = '$xid'"); + + $db->deconnexion(); + } + } +} +?> \ No newline at end of file diff --git a/includes/onyx/templates/libs/Config_File.class.php b/includes/onyx/templates/libs/Config_File.class.php new file mode 100644 index 0000000..e3c3ca2 --- /dev/null +++ b/includes/onyx/templates/libs/Config_File.class.php @@ -0,0 +1,389 @@ + + * @access public + * @package Smarty + */ + +/* $Id: Config_File.class.php 2702 2007-03-08 19:11:22Z mohrt $ */ + +/** + * Config file reading class + * @package Smarty + */ +class Config_File { + /**#@+ + * Options + * @var boolean + */ + /** + * Controls whether variables with the same name overwrite each other. + */ + var $overwrite = true; + + /** + * Controls whether config values of on/true/yes and off/false/no get + * converted to boolean values automatically. + */ + var $booleanize = true; + + /** + * Controls whether hidden config sections/vars are read from the file. + */ + var $read_hidden = true; + + /** + * Controls whether or not to fix mac or dos formatted newlines. + * If set to true, \r or \r\n will be changed to \n. + */ + var $fix_newlines = true; + /**#@-*/ + + /** @access private */ + var $_config_path = ""; + var $_config_data = array(); + /**#@-*/ + + /** + * Constructs a new config file class. + * + * @param string $config_path (optional) path to the config files + */ + function Config_File($config_path = NULL) + { + if (isset($config_path)) + $this->set_path($config_path); + } + + + /** + * Set the path where configuration files can be found. + * + * @param string $config_path path to the config files + */ + function set_path($config_path) + { + if (!empty($config_path)) { + if (!is_string($config_path) || !file_exists($config_path) || !is_dir($config_path)) { + $this->_trigger_error_msg("Bad config file path '$config_path'"); + return; + } + if(substr($config_path, -1) != DIRECTORY_SEPARATOR) { + $config_path .= DIRECTORY_SEPARATOR; + } + + $this->_config_path = $config_path; + } + } + + + /** + * Retrieves config info based on the file, section, and variable name. + * + * @param string $file_name config file to get info for + * @param string $section_name (optional) section to get info for + * @param string $var_name (optional) variable to get info for + * @return string|array a value or array of values + */ + function get($file_name, $section_name = NULL, $var_name = NULL) + { + if (empty($file_name)) { + $this->_trigger_error_msg('Empty config file name'); + return; + } else { + $file_name = $this->_config_path . $file_name; + if (!isset($this->_config_data[$file_name])) + $this->load_file($file_name, false); + } + + if (!empty($var_name)) { + if (empty($section_name)) { + return $this->_config_data[$file_name]["vars"][$var_name]; + } else { + if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name])) + return $this->_config_data[$file_name]["sections"][$section_name]["vars"][$var_name]; + else + return array(); + } + } else { + if (empty($section_name)) { + return (array)$this->_config_data[$file_name]["vars"]; + } else { + if(isset($this->_config_data[$file_name]["sections"][$section_name]["vars"])) + return (array)$this->_config_data[$file_name]["sections"][$section_name]["vars"]; + else + return array(); + } + } + } + + + /** + * Retrieves config info based on the key. + * + * @param $file_name string config key (filename/section/var) + * @return string|array same as get() + * @uses get() retrieves information from config file and returns it + */ + function &get_key($config_key) + { + list($file_name, $section_name, $var_name) = explode('/', $config_key, 3); + $result = &$this->get($file_name, $section_name, $var_name); + return $result; + } + + /** + * Get all loaded config file names. + * + * @return array an array of loaded config file names + */ + function get_file_names() + { + return array_keys($this->_config_data); + } + + + /** + * Get all section names from a loaded file. + * + * @param string $file_name config file to get section names from + * @return array an array of section names from the specified file + */ + function get_section_names($file_name) + { + $file_name = $this->_config_path . $file_name; + if (!isset($this->_config_data[$file_name])) { + $this->_trigger_error_msg("Unknown config file '$file_name'"); + return; + } + + return array_keys($this->_config_data[$file_name]["sections"]); + } + + + /** + * Get all global or section variable names. + * + * @param string $file_name config file to get info for + * @param string $section_name (optional) section to get info for + * @return array an array of variables names from the specified file/section + */ + function get_var_names($file_name, $section = NULL) + { + if (empty($file_name)) { + $this->_trigger_error_msg('Empty config file name'); + return; + } else if (!isset($this->_config_data[$file_name])) { + $this->_trigger_error_msg("Unknown config file '$file_name'"); + return; + } + + if (empty($section)) + return array_keys($this->_config_data[$file_name]["vars"]); + else + return array_keys($this->_config_data[$file_name]["sections"][$section]["vars"]); + } + + + /** + * Clear loaded config data for a certain file or all files. + * + * @param string $file_name file to clear config data for + */ + function clear($file_name = NULL) + { + if ($file_name === NULL) + $this->_config_data = array(); + else if (isset($this->_config_data[$file_name])) + $this->_config_data[$file_name] = array(); + } + + + /** + * Load a configuration file manually. + * + * @param string $file_name file name to load + * @param boolean $prepend_path whether current config path should be + * prepended to the filename + */ + function load_file($file_name, $prepend_path = true) + { + if ($prepend_path && $this->_config_path != "") + $config_file = $this->_config_path . $file_name; + else + $config_file = $file_name; + + ini_set('track_errors', true); + $fp = @fopen($config_file, "r"); + if (!is_resource($fp)) { + $this->_trigger_error_msg("Could not open config file '$config_file'"); + return false; + } + + $contents = ($size = filesize($config_file)) ? fread($fp, $size) : ''; + fclose($fp); + + $this->_config_data[$config_file] = $this->parse_contents($contents); + return true; + } + + /** + * Store the contents of a file manually. + * + * @param string $config_file file name of the related contents + * @param string $contents the file-contents to parse + */ + function set_file_contents($config_file, $contents) + { + $this->_config_data[$config_file] = $this->parse_contents($contents); + return true; + } + + /** + * parse the source of a configuration file manually. + * + * @param string $contents the file-contents to parse + */ + function parse_contents($contents) + { + if($this->fix_newlines) { + // fix mac/dos formatted newlines + $contents = preg_replace('!\r\n?!', "\n", $contents); + } + + $config_data = array(); + $config_data['sections'] = array(); + $config_data['vars'] = array(); + + /* reference to fill with data */ + $vars =& $config_data['vars']; + + /* parse file line by line */ + preg_match_all('!^.*\r?\n?!m', $contents, $match); + $lines = $match[0]; + for ($i=0, $count=count($lines); $i<$count; $i++) { + $line = $lines[$i]; + if (empty($line)) continue; + + if ( substr($line, 0, 1) == '[' && preg_match('!^\[(.*?)\]!', $line, $match) ) { + /* section found */ + if (substr($match[1], 0, 1) == '.') { + /* hidden section */ + if ($this->read_hidden) { + $section_name = substr($match[1], 1); + } else { + /* break reference to $vars to ignore hidden section */ + unset($vars); + $vars = array(); + continue; + } + } else { + $section_name = $match[1]; + } + if (!isset($config_data['sections'][$section_name])) + $config_data['sections'][$section_name] = array('vars' => array()); + $vars =& $config_data['sections'][$section_name]['vars']; + continue; + } + + if (preg_match('/^\s*(\.?\w+)\s*=\s*(.*)/s', $line, $match)) { + /* variable found */ + $var_name = rtrim($match[1]); + if (strpos($match[2], '"""') === 0) { + /* handle multiline-value */ + $lines[$i] = substr($match[2], 3); + $var_value = ''; + while ($i<$count) { + if (($pos = strpos($lines[$i], '"""')) === false) { + $var_value .= $lines[$i++]; + } else { + /* end of multiline-value */ + $var_value .= substr($lines[$i], 0, $pos); + break; + } + } + $booleanize = false; + + } else { + /* handle simple value */ + $var_value = preg_replace('/^([\'"])(.*)\1$/', '\2', rtrim($match[2])); + $booleanize = $this->booleanize; + + } + $this->_set_config_var($vars, $var_name, $var_value, $booleanize); + } + /* else unparsable line / means it is a comment / means ignore it */ + } + return $config_data; + } + + /**#@+ @access private */ + /** + * @param array &$container + * @param string $var_name + * @param mixed $var_value + * @param boolean $booleanize determines whether $var_value is converted to + * to true/false + */ + function _set_config_var(&$container, $var_name, $var_value, $booleanize) + { + if (substr($var_name, 0, 1) == '.') { + if (!$this->read_hidden) + return; + else + $var_name = substr($var_name, 1); + } + + if (!preg_match("/^[a-zA-Z_]\w*$/", $var_name)) { + $this->_trigger_error_msg("Bad variable name '$var_name'"); + return; + } + + if ($booleanize) { + if (preg_match("/^(on|true|yes)$/i", $var_value)) + $var_value = true; + else if (preg_match("/^(off|false|no)$/i", $var_value)) + $var_value = false; + } + + if (!isset($container[$var_name]) || $this->overwrite) + $container[$var_name] = $var_value; + else { + settype($container[$var_name], 'array'); + $container[$var_name][] = $var_value; + } + } + + /** + * @uses trigger_error() creates a PHP warning/error + * @param string $error_msg + * @param integer $error_type one of + */ + function _trigger_error_msg($error_msg, $error_type = E_USER_WARNING) + { + trigger_error("Config_File error: $error_msg", $error_type); + } + /**#@-*/ +} + +?> diff --git a/includes/onyx/templates/libs/Smarty.class.php b/includes/onyx/templates/libs/Smarty.class.php new file mode 100644 index 0000000..5eda787 --- /dev/null +++ b/includes/onyx/templates/libs/Smarty.class.php @@ -0,0 +1,1960 @@ + + * @author Andrei Zmievski + * @package Smarty + * @version 2.6.19 + */ + +/* $Id: Smarty.class.php 2722 2007-06-18 14:29:00Z danilo $ */ + +/** + * DIR_SEP isn't used anymore, but third party apps might + */ +if(!defined('DIR_SEP')) { + define('DIR_SEP', DIRECTORY_SEPARATOR); +} + +/** + * set SMARTY_DIR to absolute path to Smarty library files. + * if not defined, include_path will be used. Sets SMARTY_DIR only if user + * application has not already defined it. + */ + +if (!defined('SMARTY_DIR')) { + define('SMARTY_DIR', dirname(__FILE__) . DIRECTORY_SEPARATOR); +} + +if (!defined('SMARTY_CORE_DIR')) { + define('SMARTY_CORE_DIR', SMARTY_DIR . 'internals' . DIRECTORY_SEPARATOR); +} + +define('SMARTY_PHP_PASSTHRU', 0); +define('SMARTY_PHP_QUOTE', 1); +define('SMARTY_PHP_REMOVE', 2); +define('SMARTY_PHP_ALLOW', 3); + +/** + * @package Smarty + */ +class Smarty +{ + /**#@+ + * Smarty Configuration Section + */ + + /** + * The name of the directory where templates are located. + * + * @var string + */ + var $template_dir = 'templates'; + + /** + * The directory where compiled templates are located. + * + * @var string + */ + var $compile_dir = 'templates_c'; + + /** + * The directory where config files are located. + * + * @var string + */ + var $config_dir = 'configs'; + + /** + * An array of directories searched for plugins. + * + * @var array + */ + var $plugins_dir = array('plugins'); + + /** + * If debugging is enabled, a debug console window will display + * when the page loads (make sure your browser allows unrequested + * popup windows) + * + * @var boolean + */ + var $debugging = false; + + /** + * When set, smarty does uses this value as error_reporting-level. + * + * @var boolean + */ + var $error_reporting = null; + + /** + * This is the path to the debug console template. If not set, + * the default one will be used. + * + * @var string + */ + var $debug_tpl = ''; + + /** + * This determines if debugging is enable-able from the browser. + *
        + *
      • NONE => no debugging control allowed
      • + *
      • URL => enable debugging when SMARTY_DEBUG is found in the URL.
      • + *
      + * @link http://www.foo.dom/index.php?SMARTY_DEBUG + * @var string + */ + var $debugging_ctrl = 'NONE'; + + /** + * This tells Smarty whether to check for recompiling or not. Recompiling + * does not need to happen unless a template or config file is changed. + * Typically you enable this during development, and disable for + * production. + * + * @var boolean + */ + var $compile_check = true; + + /** + * This forces templates to compile every time. Useful for development + * or debugging. + * + * @var boolean + */ + var $force_compile = false; + + /** + * This enables template caching. + *
        + *
      • 0 = no caching
      • + *
      • 1 = use class cache_lifetime value
      • + *
      • 2 = use cache_lifetime in cache file
      • + *
      + * @var integer + */ + var $caching = 0; + + /** + * The name of the directory for cache files. + * + * @var string + */ + var $cache_dir = 'cache'; + + /** + * This is the number of seconds cached content will persist. + *
        + *
      • 0 = always regenerate cache
      • + *
      • -1 = never expires
      • + *
      + * + * @var integer + */ + var $cache_lifetime = 3600; + + /** + * Only used when $caching is enabled. If true, then If-Modified-Since headers + * are respected with cached content, and appropriate HTTP headers are sent. + * This way repeated hits to a cached page do not send the entire page to the + * client every time. + * + * @var boolean + */ + var $cache_modified_check = false; + + /** + * This determines how Smarty handles "" tags in templates. + * possible values: + *
        + *
      • SMARTY_PHP_PASSTHRU -> print tags as plain text
      • + *
      • SMARTY_PHP_QUOTE -> escape tags as entities
      • + *
      • SMARTY_PHP_REMOVE -> remove php tags
      • + *
      • SMARTY_PHP_ALLOW -> execute php tags
      • + *
      + * + * @var integer + */ + var $php_handling = SMARTY_PHP_PASSTHRU; + + /** + * This enables template security. When enabled, many things are restricted + * in the templates that normally would go unchecked. This is useful when + * untrusted parties are editing templates and you want a reasonable level + * of security. (no direct execution of PHP in templates for example) + * + * @var boolean + */ + var $security = false; + + /** + * This is the list of template directories that are considered secure. This + * is used only if {@link $security} is enabled. One directory per array + * element. {@link $template_dir} is in this list implicitly. + * + * @var array + */ + var $secure_dir = array(); + + /** + * These are the security settings for Smarty. They are used only when + * {@link $security} is enabled. + * + * @var array + */ + var $security_settings = array( + 'PHP_HANDLING' => false, + 'IF_FUNCS' => array('array', 'list', + 'isset', 'empty', + 'count', 'sizeof', + 'in_array', 'is_array', + 'true', 'false', 'null'), + 'INCLUDE_ANY' => false, + 'PHP_TAGS' => false, + 'MODIFIER_FUNCS' => array('count'), + 'ALLOW_CONSTANTS' => false + ); + + /** + * This is an array of directories where trusted php scripts reside. + * {@link $security} is disabled during their inclusion/execution. + * + * @var array + */ + var $trusted_dir = array(); + + /** + * The left delimiter used for the template tags. + * + * @var string + */ + var $left_delimiter = '{'; + + /** + * The right delimiter used for the template tags. + * + * @var string + */ + var $right_delimiter = '}'; + + /** + * The order in which request variables are registered, similar to + * variables_order in php.ini E = Environment, G = GET, P = POST, + * C = Cookies, S = Server + * + * @var string + */ + var $request_vars_order = 'EGPCS'; + + /** + * Indicates wether $HTTP_*_VARS[] (request_use_auto_globals=false) + * are uses as request-vars or $_*[]-vars. note: if + * request_use_auto_globals is true, then $request_vars_order has + * no effect, but the php-ini-value "gpc_order" + * + * @var boolean + */ + var $request_use_auto_globals = true; + + /** + * Set this if you want different sets of compiled files for the same + * templates. This is useful for things like different languages. + * Instead of creating separate sets of templates per language, you + * set different compile_ids like 'en' and 'de'. + * + * @var string + */ + var $compile_id = null; + + /** + * This tells Smarty whether or not to use sub dirs in the cache/ and + * templates_c/ directories. sub directories better organized, but + * may not work well with PHP safe mode enabled. + * + * @var boolean + * + */ + var $use_sub_dirs = false; + + /** + * This is a list of the modifiers to apply to all template variables. + * Put each modifier in a separate array element in the order you want + * them applied. example: array('escape:"htmlall"'); + * + * @var array + */ + var $default_modifiers = array(); + + /** + * This is the resource type to be used when not specified + * at the beginning of the resource path. examples: + * $smarty->display('file:index.tpl'); + * $smarty->display('db:index.tpl'); + * $smarty->display('index.tpl'); // will use default resource type + * {include file="file:index.tpl"} + * {include file="db:index.tpl"} + * {include file="index.tpl"} {* will use default resource type *} + * + * @var array + */ + var $default_resource_type = 'file'; + + /** + * The function used for cache file handling. If not set, built-in caching is used. + * + * @var null|string function name + */ + var $cache_handler_func = null; + + /** + * This indicates which filters are automatically loaded into Smarty. + * + * @var array array of filter names + */ + var $autoload_filters = array(); + + /**#@+ + * @var boolean + */ + /** + * This tells if config file vars of the same name overwrite each other or not. + * if disabled, same name variables are accumulated in an array. + */ + var $config_overwrite = true; + + /** + * This tells whether or not to automatically booleanize config file variables. + * If enabled, then the strings "on", "true", and "yes" are treated as boolean + * true, and "off", "false" and "no" are treated as boolean false. + */ + var $config_booleanize = true; + + /** + * This tells whether hidden sections [.foobar] are readable from the + * tempalates or not. Normally you would never allow this since that is + * the point behind hidden sections: the application can access them, but + * the templates cannot. + */ + var $config_read_hidden = false; + + /** + * This tells whether or not automatically fix newlines in config files. + * It basically converts \r (mac) or \r\n (dos) to \n + */ + var $config_fix_newlines = true; + /**#@-*/ + + /** + * If a template cannot be found, this PHP function will be executed. + * Useful for creating templates on-the-fly or other special action. + * + * @var string function name + */ + var $default_template_handler_func = ''; + + /** + * The file that contains the compiler class. This can a full + * pathname, or relative to the php_include path. + * + * @var string + */ + var $compiler_file = 'Smarty_Compiler.class.php'; + + /** + * The class used for compiling templates. + * + * @var string + */ + var $compiler_class = 'Smarty_Compiler'; + + /** + * The class used to load config vars. + * + * @var string + */ + var $config_class = 'Config_File'; + +/**#@+ + * END Smarty Configuration Section + * There should be no need to touch anything below this line. + * @access private + */ + /** + * where assigned template vars are kept + * + * @var array + */ + var $_tpl_vars = array(); + + /** + * stores run-time $smarty.* vars + * + * @var null|array + */ + var $_smarty_vars = null; + + /** + * keeps track of sections + * + * @var array + */ + var $_sections = array(); + + /** + * keeps track of foreach blocks + * + * @var array + */ + var $_foreach = array(); + + /** + * keeps track of tag hierarchy + * + * @var array + */ + var $_tag_stack = array(); + + /** + * configuration object + * + * @var Config_file + */ + var $_conf_obj = null; + + /** + * loaded configuration settings + * + * @var array + */ + var $_config = array(array('vars' => array(), 'files' => array())); + + /** + * md5 checksum of the string 'Smarty' + * + * @var string + */ + var $_smarty_md5 = 'f8d698aea36fcbead2b9d5359ffca76f'; + + /** + * Smarty version number + * + * @var string + */ + var $_version = '2.6.19'; + + /** + * current template inclusion depth + * + * @var integer + */ + var $_inclusion_depth = 0; + + /** + * for different compiled templates + * + * @var string + */ + var $_compile_id = null; + + /** + * text in URL to enable debug mode + * + * @var string + */ + var $_smarty_debug_id = 'SMARTY_DEBUG'; + + /** + * debugging information for debug console + * + * @var array + */ + var $_smarty_debug_info = array(); + + /** + * info that makes up a cache file + * + * @var array + */ + var $_cache_info = array(); + + /** + * default file permissions + * + * @var integer + */ + var $_file_perms = 0644; + + /** + * default dir permissions + * + * @var integer + */ + var $_dir_perms = 0771; + + /** + * registered objects + * + * @var array + */ + var $_reg_objects = array(); + + /** + * table keeping track of plugins + * + * @var array + */ + var $_plugins = array( + 'modifier' => array(), + 'function' => array(), + 'block' => array(), + 'compiler' => array(), + 'prefilter' => array(), + 'postfilter' => array(), + 'outputfilter' => array(), + 'resource' => array(), + 'insert' => array()); + + + /** + * cache serials + * + * @var array + */ + var $_cache_serials = array(); + + /** + * name of optional cache include file + * + * @var string + */ + var $_cache_include = null; + + /** + * indicate if the current code is used in a compiled + * include + * + * @var string + */ + var $_cache_including = false; + + /**#@-*/ + /** + * The class constructor. + */ + function Smarty() + { + $this->assign('SCRIPT_NAME', isset($_SERVER['SCRIPT_NAME']) ? $_SERVER['SCRIPT_NAME'] + : @$GLOBALS['HTTP_SERVER_VARS']['SCRIPT_NAME']); + } + + /** + * assigns values to template variables + * + * @param array|string $tpl_var the template variable name(s) + * @param mixed $value the value to assign + */ + function assign($tpl_var, $value = null) + { + if (is_array($tpl_var)){ + foreach ($tpl_var as $key => $val) { + if ($key != '') { + $this->_tpl_vars[$key] = $val; + } + } + } else { + if ($tpl_var != '') + $this->_tpl_vars[$tpl_var] = $value; + } + } + + /** + * assigns values to template variables by reference + * + * @param string $tpl_var the template variable name + * @param mixed $value the referenced value to assign + */ + function assign_by_ref($tpl_var, &$value) + { + if ($tpl_var != '') + $this->_tpl_vars[$tpl_var] = &$value; + } + + /** + * appends values to template variables + * + * @param array|string $tpl_var the template variable name(s) + * @param mixed $value the value to append + */ + function append($tpl_var, $value=null, $merge=false) + { + if (is_array($tpl_var)) { + // $tpl_var is an array, ignore $value + foreach ($tpl_var as $_key => $_val) { + if ($_key != '') { + if(!@is_array($this->_tpl_vars[$_key])) { + settype($this->_tpl_vars[$_key],'array'); + } + if($merge && is_array($_val)) { + foreach($_val as $_mkey => $_mval) { + $this->_tpl_vars[$_key][$_mkey] = $_mval; + } + } else { + $this->_tpl_vars[$_key][] = $_val; + } + } + } + } else { + if ($tpl_var != '' && isset($value)) { + if(!@is_array($this->_tpl_vars[$tpl_var])) { + settype($this->_tpl_vars[$tpl_var],'array'); + } + if($merge && is_array($value)) { + foreach($value as $_mkey => $_mval) { + $this->_tpl_vars[$tpl_var][$_mkey] = $_mval; + } + } else { + $this->_tpl_vars[$tpl_var][] = $value; + } + } + } + } + + /** + * appends values to template variables by reference + * + * @param string $tpl_var the template variable name + * @param mixed $value the referenced value to append + */ + function append_by_ref($tpl_var, &$value, $merge=false) + { + if ($tpl_var != '' && isset($value)) { + if(!@is_array($this->_tpl_vars[$tpl_var])) { + settype($this->_tpl_vars[$tpl_var],'array'); + } + if ($merge && is_array($value)) { + foreach($value as $_key => $_val) { + $this->_tpl_vars[$tpl_var][$_key] = &$value[$_key]; + } + } else { + $this->_tpl_vars[$tpl_var][] = &$value; + } + } + } + + + /** + * clear the given assigned template variable. + * + * @param string $tpl_var the template variable to clear + */ + function clear_assign($tpl_var) + { + if (is_array($tpl_var)) + foreach ($tpl_var as $curr_var) + unset($this->_tpl_vars[$curr_var]); + else + unset($this->_tpl_vars[$tpl_var]); + } + + + /** + * Registers custom function to be used in templates + * + * @param string $function the name of the template function + * @param string $function_impl the name of the PHP function to register + */ + function register_function($function, $function_impl, $cacheable=true, $cache_attrs=null) + { + $this->_plugins['function'][$function] = + array($function_impl, null, null, false, $cacheable, $cache_attrs); + + } + + /** + * Unregisters custom function + * + * @param string $function name of template function + */ + function unregister_function($function) + { + unset($this->_plugins['function'][$function]); + } + + /** + * Registers object to be used in templates + * + * @param string $object name of template object + * @param object &$object_impl the referenced PHP object to register + * @param null|array $allowed list of allowed methods (empty = all) + * @param boolean $smarty_args smarty argument format, else traditional + * @param null|array $block_functs list of methods that are block format + */ + function register_object($object, &$object_impl, $allowed = array(), $smarty_args = true, $block_methods = array()) + { + settype($allowed, 'array'); + settype($smarty_args, 'boolean'); + $this->_reg_objects[$object] = + array(&$object_impl, $allowed, $smarty_args, $block_methods); + } + + /** + * Unregisters object + * + * @param string $object name of template object + */ + function unregister_object($object) + { + unset($this->_reg_objects[$object]); + } + + + /** + * Registers block function to be used in templates + * + * @param string $block name of template block + * @param string $block_impl PHP function to register + */ + function register_block($block, $block_impl, $cacheable=true, $cache_attrs=null) + { + $this->_plugins['block'][$block] = + array($block_impl, null, null, false, $cacheable, $cache_attrs); + } + + /** + * Unregisters block function + * + * @param string $block name of template function + */ + function unregister_block($block) + { + unset($this->_plugins['block'][$block]); + } + + /** + * Registers compiler function + * + * @param string $function name of template function + * @param string $function_impl name of PHP function to register + */ + function register_compiler_function($function, $function_impl, $cacheable=true) + { + $this->_plugins['compiler'][$function] = + array($function_impl, null, null, false, $cacheable); + } + + /** + * Unregisters compiler function + * + * @param string $function name of template function + */ + function unregister_compiler_function($function) + { + unset($this->_plugins['compiler'][$function]); + } + + /** + * Registers modifier to be used in templates + * + * @param string $modifier name of template modifier + * @param string $modifier_impl name of PHP function to register + */ + function register_modifier($modifier, $modifier_impl) + { + $this->_plugins['modifier'][$modifier] = + array($modifier_impl, null, null, false); + } + + /** + * Unregisters modifier + * + * @param string $modifier name of template modifier + */ + function unregister_modifier($modifier) + { + unset($this->_plugins['modifier'][$modifier]); + } + + /** + * Registers a resource to fetch a template + * + * @param string $type name of resource + * @param array $functions array of functions to handle resource + */ + function register_resource($type, $functions) + { + if (count($functions)==4) { + $this->_plugins['resource'][$type] = + array($functions, false); + + } elseif (count($functions)==5) { + $this->_plugins['resource'][$type] = + array(array(array(&$functions[0], $functions[1]) + ,array(&$functions[0], $functions[2]) + ,array(&$functions[0], $functions[3]) + ,array(&$functions[0], $functions[4])) + ,false); + + } else { + $this->trigger_error("malformed function-list for '$type' in register_resource"); + + } + } + + /** + * Unregisters a resource + * + * @param string $type name of resource + */ + function unregister_resource($type) + { + unset($this->_plugins['resource'][$type]); + } + + /** + * Registers a prefilter function to apply + * to a template before compiling + * + * @param callback $function + */ + function register_prefilter($function) + { + $this->_plugins['prefilter'][$this->_get_filter_name($function)] + = array($function, null, null, false); + } + + /** + * Unregisters a prefilter function + * + * @param callback $function + */ + function unregister_prefilter($function) + { + unset($this->_plugins['prefilter'][$this->_get_filter_name($function)]); + } + + /** + * Registers a postfilter function to apply + * to a compiled template after compilation + * + * @param callback $function + */ + function register_postfilter($function) + { + $this->_plugins['postfilter'][$this->_get_filter_name($function)] + = array($function, null, null, false); + } + + /** + * Unregisters a postfilter function + * + * @param callback $function + */ + function unregister_postfilter($function) + { + unset($this->_plugins['postfilter'][$this->_get_filter_name($function)]); + } + + /** + * Registers an output filter function to apply + * to a template output + * + * @param callback $function + */ + function register_outputfilter($function) + { + $this->_plugins['outputfilter'][$this->_get_filter_name($function)] + = array($function, null, null, false); + } + + /** + * Unregisters an outputfilter function + * + * @param callback $function + */ + function unregister_outputfilter($function) + { + unset($this->_plugins['outputfilter'][$this->_get_filter_name($function)]); + } + + /** + * load a filter of specified type and name + * + * @param string $type filter type + * @param string $name filter name + */ + function load_filter($type, $name) + { + switch ($type) { + case 'output': + $_params = array('plugins' => array(array($type . 'filter', $name, null, null, false))); + require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); + smarty_core_load_plugins($_params, $this); + break; + + case 'pre': + case 'post': + if (!isset($this->_plugins[$type . 'filter'][$name])) + $this->_plugins[$type . 'filter'][$name] = false; + break; + } + } + + /** + * clear cached content for the given template and cache id + * + * @param string $tpl_file name of template file + * @param string $cache_id name of cache_id + * @param string $compile_id name of compile_id + * @param string $exp_time expiration time + * @return boolean + */ + function clear_cache($tpl_file = null, $cache_id = null, $compile_id = null, $exp_time = null) + { + + if (!isset($compile_id)) + $compile_id = $this->compile_id; + + if (!isset($tpl_file)) + $compile_id = null; + + $_auto_id = $this->_get_auto_id($cache_id, $compile_id); + + if (!empty($this->cache_handler_func)) { + return call_user_func_array($this->cache_handler_func, + array('clear', &$this, &$dummy, $tpl_file, $cache_id, $compile_id, $exp_time)); + } else { + $_params = array('auto_base' => $this->cache_dir, + 'auto_source' => $tpl_file, + 'auto_id' => $_auto_id, + 'exp_time' => $exp_time); + require_once(SMARTY_CORE_DIR . 'core.rm_auto.php'); + return smarty_core_rm_auto($_params, $this); + } + + } + + + /** + * clear the entire contents of cache (all templates) + * + * @param string $exp_time expire time + * @return boolean results of {@link smarty_core_rm_auto()} + */ + function clear_all_cache($exp_time = null) + { + return $this->clear_cache(null, null, null, $exp_time); + } + + + /** + * test to see if valid cache exists for this template + * + * @param string $tpl_file name of template file + * @param string $cache_id + * @param string $compile_id + * @return string|false results of {@link _read_cache_file()} + */ + function is_cached($tpl_file, $cache_id = null, $compile_id = null) + { + if (!$this->caching) + return false; + + if (!isset($compile_id)) + $compile_id = $this->compile_id; + + $_params = array( + 'tpl_file' => $tpl_file, + 'cache_id' => $cache_id, + 'compile_id' => $compile_id + ); + require_once(SMARTY_CORE_DIR . 'core.read_cache_file.php'); + return smarty_core_read_cache_file($_params, $this); + } + + + /** + * clear all the assigned template variables. + * + */ + function clear_all_assign() + { + $this->_tpl_vars = array(); + } + + /** + * clears compiled version of specified template resource, + * or all compiled template files if one is not specified. + * This function is for advanced use only, not normally needed. + * + * @param string $tpl_file + * @param string $compile_id + * @param string $exp_time + * @return boolean results of {@link smarty_core_rm_auto()} + */ + function clear_compiled_tpl($tpl_file = null, $compile_id = null, $exp_time = null) + { + if (!isset($compile_id)) { + $compile_id = $this->compile_id; + } + $_params = array('auto_base' => $this->compile_dir, + 'auto_source' => $tpl_file, + 'auto_id' => $compile_id, + 'exp_time' => $exp_time, + 'extensions' => array('.inc', '.php')); + require_once(SMARTY_CORE_DIR . 'core.rm_auto.php'); + return smarty_core_rm_auto($_params, $this); + } + + /** + * Checks whether requested template exists. + * + * @param string $tpl_file + * @return boolean + */ + function template_exists($tpl_file) + { + $_params = array('resource_name' => $tpl_file, 'quiet'=>true, 'get_source'=>false); + return $this->_fetch_resource_info($_params); + } + + /** + * Returns an array containing template variables + * + * @param string $name + * @param string $type + * @return array + */ + function &get_template_vars($name=null) + { + if(!isset($name)) { + return $this->_tpl_vars; + } elseif(isset($this->_tpl_vars[$name])) { + return $this->_tpl_vars[$name]; + } else { + // var non-existant, return valid reference + $_tmp = null; + return $_tmp; + } + } + + /** + * Returns an array containing config variables + * + * @param string $name + * @param string $type + * @return array + */ + function &get_config_vars($name=null) + { + if(!isset($name) && is_array($this->_config[0])) { + return $this->_config[0]['vars']; + } else if(isset($this->_config[0]['vars'][$name])) { + return $this->_config[0]['vars'][$name]; + } else { + // var non-existant, return valid reference + $_tmp = null; + return $_tmp; + } + } + + /** + * trigger Smarty error + * + * @param string $error_msg + * @param integer $error_type + */ + function trigger_error($error_msg, $error_type = E_USER_WARNING) + { + trigger_error("Smarty error: $error_msg", $error_type); + } + + + /** + * executes & displays the template results + * + * @param string $resource_name + * @param string $cache_id + * @param string $compile_id + */ + function display($resource_name, $cache_id = null, $compile_id = null) + { + $this->fetch($resource_name, $cache_id, $compile_id, true); + } + + /** + * executes & returns or displays the template results + * + * @param string $resource_name + * @param string $cache_id + * @param string $compile_id + * @param boolean $display + */ + function fetch($resource_name, $cache_id = null, $compile_id = null, $display = false) + { + static $_cache_info = array(); + + $_smarty_old_error_level = $this->debugging ? error_reporting() : error_reporting(isset($this->error_reporting) + ? $this->error_reporting : error_reporting() & ~E_NOTICE); + + if (!$this->debugging && $this->debugging_ctrl == 'URL') { + $_query_string = $this->request_use_auto_globals ? $_SERVER['QUERY_STRING'] : $GLOBALS['HTTP_SERVER_VARS']['QUERY_STRING']; + if (@strstr($_query_string, $this->_smarty_debug_id)) { + if (@strstr($_query_string, $this->_smarty_debug_id . '=on')) { + // enable debugging for this browser session + @setcookie('SMARTY_DEBUG', true); + $this->debugging = true; + } elseif (@strstr($_query_string, $this->_smarty_debug_id . '=off')) { + // disable debugging for this browser session + @setcookie('SMARTY_DEBUG', false); + $this->debugging = false; + } else { + // enable debugging for this page + $this->debugging = true; + } + } else { + $this->debugging = (bool)($this->request_use_auto_globals ? @$_COOKIE['SMARTY_DEBUG'] : @$GLOBALS['HTTP_COOKIE_VARS']['SMARTY_DEBUG']); + } + } + + if ($this->debugging) { + // capture time for debugging info + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $_debug_start_time = smarty_core_get_microtime($_params, $this); + $this->_smarty_debug_info[] = array('type' => 'template', + 'filename' => $resource_name, + 'depth' => 0); + $_included_tpls_idx = count($this->_smarty_debug_info) - 1; + } + + if (!isset($compile_id)) { + $compile_id = $this->compile_id; + } + + $this->_compile_id = $compile_id; + $this->_inclusion_depth = 0; + + if ($this->caching) { + // save old cache_info, initialize cache_info + array_push($_cache_info, $this->_cache_info); + $this->_cache_info = array(); + $_params = array( + 'tpl_file' => $resource_name, + 'cache_id' => $cache_id, + 'compile_id' => $compile_id, + 'results' => null + ); + require_once(SMARTY_CORE_DIR . 'core.read_cache_file.php'); + if (smarty_core_read_cache_file($_params, $this)) { + $_smarty_results = $_params['results']; + if (!empty($this->_cache_info['insert_tags'])) { + $_params = array('plugins' => $this->_cache_info['insert_tags']); + require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); + smarty_core_load_plugins($_params, $this); + $_params = array('results' => $_smarty_results); + require_once(SMARTY_CORE_DIR . 'core.process_cached_inserts.php'); + $_smarty_results = smarty_core_process_cached_inserts($_params, $this); + } + if (!empty($this->_cache_info['cache_serials'])) { + $_params = array('results' => $_smarty_results); + require_once(SMARTY_CORE_DIR . 'core.process_compiled_include.php'); + $_smarty_results = smarty_core_process_compiled_include($_params, $this); + } + + + if ($display) { + if ($this->debugging) + { + // capture time for debugging info + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $_debug_start_time; + require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); + $_smarty_results .= smarty_core_display_debug_console($_params, $this); + } + if ($this->cache_modified_check) { + $_server_vars = ($this->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; + $_last_modified_date = @substr($_server_vars['HTTP_IF_MODIFIED_SINCE'], 0, strpos($_server_vars['HTTP_IF_MODIFIED_SINCE'], 'GMT') + 3); + $_gmt_mtime = gmdate('D, d M Y H:i:s', $this->_cache_info['timestamp']).' GMT'; + if (@count($this->_cache_info['insert_tags']) == 0 + && !$this->_cache_serials + && $_gmt_mtime == $_last_modified_date) { + if (php_sapi_name()=='cgi') + header('Status: 304 Not Modified'); + else + header('HTTP/1.1 304 Not Modified'); + + } else { + header('Last-Modified: '.$_gmt_mtime); + echo $_smarty_results; + } + } else { + echo $_smarty_results; + } + error_reporting($_smarty_old_error_level); + // restore initial cache_info + $this->_cache_info = array_pop($_cache_info); + return true; + } else { + error_reporting($_smarty_old_error_level); + // restore initial cache_info + $this->_cache_info = array_pop($_cache_info); + return $_smarty_results; + } + } else { + $this->_cache_info['template'][$resource_name] = true; + if ($this->cache_modified_check && $display) { + header('Last-Modified: '.gmdate('D, d M Y H:i:s', time()).' GMT'); + } + } + } + + // load filters that are marked as autoload + if (count($this->autoload_filters)) { + foreach ($this->autoload_filters as $_filter_type => $_filters) { + foreach ($_filters as $_filter) { + $this->load_filter($_filter_type, $_filter); + } + } + } + + $_smarty_compile_path = $this->_get_compile_path($resource_name); + + // if we just need to display the results, don't perform output + // buffering - for speed + $_cache_including = $this->_cache_including; + $this->_cache_including = false; + if ($display && !$this->caching && count($this->_plugins['outputfilter']) == 0) { + if ($this->_is_compiled($resource_name, $_smarty_compile_path) + || $this->_compile_resource($resource_name, $_smarty_compile_path)) + { + include($_smarty_compile_path); + } + } else { + ob_start(); + if ($this->_is_compiled($resource_name, $_smarty_compile_path) + || $this->_compile_resource($resource_name, $_smarty_compile_path)) + { + include($_smarty_compile_path); + } + $_smarty_results = ob_get_contents(); + ob_end_clean(); + + foreach ((array)$this->_plugins['outputfilter'] as $_output_filter) { + $_smarty_results = call_user_func_array($_output_filter[0], array($_smarty_results, &$this)); + } + } + + if ($this->caching) { + $_params = array('tpl_file' => $resource_name, + 'cache_id' => $cache_id, + 'compile_id' => $compile_id, + 'results' => $_smarty_results); + require_once(SMARTY_CORE_DIR . 'core.write_cache_file.php'); + smarty_core_write_cache_file($_params, $this); + require_once(SMARTY_CORE_DIR . 'core.process_cached_inserts.php'); + $_smarty_results = smarty_core_process_cached_inserts($_params, $this); + + if ($this->_cache_serials) { + // strip nocache-tags from output + $_smarty_results = preg_replace('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!s' + ,'' + ,$_smarty_results); + } + // restore initial cache_info + $this->_cache_info = array_pop($_cache_info); + } + $this->_cache_including = $_cache_including; + + if ($display) { + if (isset($_smarty_results)) { echo $_smarty_results; } + if ($this->debugging) { + // capture time for debugging info + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $this->_smarty_debug_info[$_included_tpls_idx]['exec_time'] = (smarty_core_get_microtime($_params, $this) - $_debug_start_time); + require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); + echo smarty_core_display_debug_console($_params, $this); + } + error_reporting($_smarty_old_error_level); + return; + } else { + error_reporting($_smarty_old_error_level); + if (isset($_smarty_results)) { return $_smarty_results; } + } + } + + /** + * load configuration values + * + * @param string $file + * @param string $section + * @param string $scope + */ + function config_load($file, $section = null, $scope = 'global') + { + require_once($this->_get_plugin_filepath('function', 'config_load')); + smarty_function_config_load(array('file' => $file, 'section' => $section, 'scope' => $scope), $this); + } + + /** + * return a reference to a registered object + * + * @param string $name + * @return object + */ + function &get_registered_object($name) { + if (!isset($this->_reg_objects[$name])) + $this->_trigger_fatal_error("'$name' is not a registered object"); + + if (!is_object($this->_reg_objects[$name][0])) + $this->_trigger_fatal_error("registered '$name' is not an object"); + + return $this->_reg_objects[$name][0]; + } + + /** + * clear configuration values + * + * @param string $var + */ + function clear_config($var = null) + { + if(!isset($var)) { + // clear all values + $this->_config = array(array('vars' => array(), + 'files' => array())); + } else { + unset($this->_config[0]['vars'][$var]); + } + } + + /** + * get filepath of requested plugin + * + * @param string $type + * @param string $name + * @return string|false + */ + function _get_plugin_filepath($type, $name) + { + $_params = array('type' => $type, 'name' => $name); + require_once(SMARTY_CORE_DIR . 'core.assemble_plugin_filepath.php'); + return smarty_core_assemble_plugin_filepath($_params, $this); + } + + /** + * test if resource needs compiling + * + * @param string $resource_name + * @param string $compile_path + * @return boolean + */ + function _is_compiled($resource_name, $compile_path) + { + if (!$this->force_compile && file_exists($compile_path)) { + if (!$this->compile_check) { + // no need to check compiled file + return true; + } else { + // get file source and timestamp + $_params = array('resource_name' => $resource_name, 'get_source'=>false); + if (!$this->_fetch_resource_info($_params)) { + return false; + } + if ($_params['resource_timestamp'] <= filemtime($compile_path)) { + // template not expired, no recompile + return true; + } else { + // compile template + return false; + } + } + } else { + // compiled template does not exist, or forced compile + return false; + } + } + + /** + * compile the template + * + * @param string $resource_name + * @param string $compile_path + * @return boolean + */ + function _compile_resource($resource_name, $compile_path) + { + + $_params = array('resource_name' => $resource_name); + if (!$this->_fetch_resource_info($_params)) { + return false; + } + + $_source_content = $_params['source_content']; + $_cache_include = substr($compile_path, 0, -4).'.inc'; + + if ($this->_compile_source($resource_name, $_source_content, $_compiled_content, $_cache_include)) { + // if a _cache_serial was set, we also have to write an include-file: + if ($this->_cache_include_info) { + require_once(SMARTY_CORE_DIR . 'core.write_compiled_include.php'); + smarty_core_write_compiled_include(array_merge($this->_cache_include_info, array('compiled_content'=>$_compiled_content, 'resource_name'=>$resource_name)), $this); + } + + $_params = array('compile_path'=>$compile_path, 'compiled_content' => $_compiled_content); + require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php'); + smarty_core_write_compiled_resource($_params, $this); + + return true; + } else { + return false; + } + + } + + /** + * compile the given source + * + * @param string $resource_name + * @param string $source_content + * @param string $compiled_content + * @return boolean + */ + function _compile_source($resource_name, &$source_content, &$compiled_content, $cache_include_path=null) + { + if (file_exists(SMARTY_DIR . $this->compiler_file)) { + require_once(SMARTY_DIR . $this->compiler_file); + } else { + // use include_path + require_once($this->compiler_file); + } + + + $smarty_compiler = new $this->compiler_class; + + $smarty_compiler->template_dir = $this->template_dir; + $smarty_compiler->compile_dir = $this->compile_dir; + $smarty_compiler->plugins_dir = $this->plugins_dir; + $smarty_compiler->config_dir = $this->config_dir; + $smarty_compiler->force_compile = $this->force_compile; + $smarty_compiler->caching = $this->caching; + $smarty_compiler->php_handling = $this->php_handling; + $smarty_compiler->left_delimiter = $this->left_delimiter; + $smarty_compiler->right_delimiter = $this->right_delimiter; + $smarty_compiler->_version = $this->_version; + $smarty_compiler->security = $this->security; + $smarty_compiler->secure_dir = $this->secure_dir; + $smarty_compiler->security_settings = $this->security_settings; + $smarty_compiler->trusted_dir = $this->trusted_dir; + $smarty_compiler->use_sub_dirs = $this->use_sub_dirs; + $smarty_compiler->_reg_objects = &$this->_reg_objects; + $smarty_compiler->_plugins = &$this->_plugins; + $smarty_compiler->_tpl_vars = &$this->_tpl_vars; + $smarty_compiler->default_modifiers = $this->default_modifiers; + $smarty_compiler->compile_id = $this->_compile_id; + $smarty_compiler->_config = $this->_config; + $smarty_compiler->request_use_auto_globals = $this->request_use_auto_globals; + + if (isset($cache_include_path) && isset($this->_cache_serials[$cache_include_path])) { + $smarty_compiler->_cache_serial = $this->_cache_serials[$cache_include_path]; + } + $smarty_compiler->_cache_include = $cache_include_path; + + + $_results = $smarty_compiler->_compile_file($resource_name, $source_content, $compiled_content); + + if ($smarty_compiler->_cache_serial) { + $this->_cache_include_info = array( + 'cache_serial'=>$smarty_compiler->_cache_serial + ,'plugins_code'=>$smarty_compiler->_plugins_code + ,'include_file_path' => $cache_include_path); + + } else { + $this->_cache_include_info = null; + + } + + return $_results; + } + + /** + * Get the compile path for this resource + * + * @param string $resource_name + * @return string results of {@link _get_auto_filename()} + */ + function _get_compile_path($resource_name) + { + return $this->_get_auto_filename($this->compile_dir, $resource_name, + $this->_compile_id) . '.php'; + } + + /** + * fetch the template info. Gets timestamp, and source + * if get_source is true + * + * sets $source_content to the source of the template, and + * $resource_timestamp to its time stamp + * @param string $resource_name + * @param string $source_content + * @param integer $resource_timestamp + * @param boolean $get_source + * @param boolean $quiet + * @return boolean + */ + + function _fetch_resource_info(&$params) + { + if(!isset($params['get_source'])) { $params['get_source'] = true; } + if(!isset($params['quiet'])) { $params['quiet'] = false; } + + $_return = false; + $_params = array('resource_name' => $params['resource_name']) ; + if (isset($params['resource_base_path'])) + $_params['resource_base_path'] = $params['resource_base_path']; + else + $_params['resource_base_path'] = $this->template_dir; + + if ($this->_parse_resource_name($_params)) { + $_resource_type = $_params['resource_type']; + $_resource_name = $_params['resource_name']; + switch ($_resource_type) { + case 'file': + if ($params['get_source']) { + $params['source_content'] = $this->_read_file($_resource_name); + } + $params['resource_timestamp'] = filemtime($_resource_name); + $_return = is_file($_resource_name); + break; + + default: + // call resource functions to fetch the template source and timestamp + if ($params['get_source']) { + $_source_return = isset($this->_plugins['resource'][$_resource_type]) && + call_user_func_array($this->_plugins['resource'][$_resource_type][0][0], + array($_resource_name, &$params['source_content'], &$this)); + } else { + $_source_return = true; + } + + $_timestamp_return = isset($this->_plugins['resource'][$_resource_type]) && + call_user_func_array($this->_plugins['resource'][$_resource_type][0][1], + array($_resource_name, &$params['resource_timestamp'], &$this)); + + $_return = $_source_return && $_timestamp_return; + break; + } + } + + if (!$_return) { + // see if we can get a template with the default template handler + if (!empty($this->default_template_handler_func)) { + if (!is_callable($this->default_template_handler_func)) { + $this->trigger_error("default template handler function \"$this->default_template_handler_func\" doesn't exist."); + } else { + $_return = call_user_func_array( + $this->default_template_handler_func, + array($_params['resource_type'], $_params['resource_name'], &$params['source_content'], &$params['resource_timestamp'], &$this)); + } + } + } + + if (!$_return) { + if (!$params['quiet']) { + $this->trigger_error('unable to read resource: "' . $params['resource_name'] . '"'); + } + } else if ($_return && $this->security) { + require_once(SMARTY_CORE_DIR . 'core.is_secure.php'); + if (!smarty_core_is_secure($_params, $this)) { + if (!$params['quiet']) + $this->trigger_error('(secure mode) accessing "' . $params['resource_name'] . '" is not allowed'); + $params['source_content'] = null; + $params['resource_timestamp'] = null; + return false; + } + } + return $_return; + } + + + /** + * parse out the type and name from the resource + * + * @param string $resource_base_path + * @param string $resource_name + * @param string $resource_type + * @param string $resource_name + * @return boolean + */ + + function _parse_resource_name(&$params) + { + + // split tpl_path by the first colon + $_resource_name_parts = explode(':', $params['resource_name'], 2); + + if (count($_resource_name_parts) == 1) { + // no resource type given + $params['resource_type'] = $this->default_resource_type; + $params['resource_name'] = $_resource_name_parts[0]; + } else { + if(strlen($_resource_name_parts[0]) == 1) { + // 1 char is not resource type, but part of filepath + $params['resource_type'] = $this->default_resource_type; + $params['resource_name'] = $params['resource_name']; + } else { + $params['resource_type'] = $_resource_name_parts[0]; + $params['resource_name'] = $_resource_name_parts[1]; + } + } + + if ($params['resource_type'] == 'file') { + if (!preg_match('/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/', $params['resource_name'])) { + // relative pathname to $params['resource_base_path'] + // use the first directory where the file is found + foreach ((array)$params['resource_base_path'] as $_curr_path) { + $_fullpath = $_curr_path . DIRECTORY_SEPARATOR . $params['resource_name']; + if (file_exists($_fullpath) && is_file($_fullpath)) { + $params['resource_name'] = $_fullpath; + return true; + } + // didn't find the file, try include_path + $_params = array('file_path' => $_fullpath); + require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); + if(smarty_core_get_include_path($_params, $this)) { + $params['resource_name'] = $_params['new_file_path']; + return true; + } + } + return false; + } else { + /* absolute path */ + return file_exists($params['resource_name']); + } + } elseif (empty($this->_plugins['resource'][$params['resource_type']])) { + $_params = array('type' => $params['resource_type']); + require_once(SMARTY_CORE_DIR . 'core.load_resource_plugin.php'); + smarty_core_load_resource_plugin($_params, $this); + } + + return true; + } + + + /** + * Handle modifiers + * + * @param string|null $modifier_name + * @param array|null $map_array + * @return string result of modifiers + */ + function _run_mod_handler() + { + $_args = func_get_args(); + list($_modifier_name, $_map_array) = array_splice($_args, 0, 2); + list($_func_name, $_tpl_file, $_tpl_line) = + $this->_plugins['modifier'][$_modifier_name]; + + $_var = $_args[0]; + foreach ($_var as $_key => $_val) { + $_args[0] = $_val; + $_var[$_key] = call_user_func_array($_func_name, $_args); + } + return $_var; + } + + /** + * Remove starting and ending quotes from the string + * + * @param string $string + * @return string + */ + function _dequote($string) + { + if ((substr($string, 0, 1) == "'" || substr($string, 0, 1) == '"') && + substr($string, -1) == substr($string, 0, 1)) + return substr($string, 1, -1); + else + return $string; + } + + + /** + * read in a file + * + * @param string $filename + * @return string + */ + function _read_file($filename) + { + if ( file_exists($filename) && ($fd = @fopen($filename, 'rb')) ) { + $contents = ''; + while (!feof($fd)) { + $contents .= fread($fd, 8192); + } + fclose($fd); + return $contents; + } else { + return false; + } + } + + /** + * get a concrete filename for automagically created content + * + * @param string $auto_base + * @param string $auto_source + * @param string $auto_id + * @return string + * @staticvar string|null + * @staticvar string|null + */ + function _get_auto_filename($auto_base, $auto_source = null, $auto_id = null) + { + $_compile_dir_sep = $this->use_sub_dirs ? DIRECTORY_SEPARATOR : '^'; + $_return = $auto_base . DIRECTORY_SEPARATOR; + + if(isset($auto_id)) { + // make auto_id safe for directory names + $auto_id = str_replace('%7C',$_compile_dir_sep,(urlencode($auto_id))); + // split into separate directories + $_return .= $auto_id . $_compile_dir_sep; + } + + if(isset($auto_source)) { + // make source name safe for filename + $_filename = urlencode(basename($auto_source)); + $_crc32 = sprintf('%08X', crc32($auto_source)); + // prepend %% to avoid name conflicts with + // with $params['auto_id'] names + $_crc32 = substr($_crc32, 0, 2) . $_compile_dir_sep . + substr($_crc32, 0, 3) . $_compile_dir_sep . $_crc32; + $_return .= '%%' . $_crc32 . '%%' . $_filename; + } + + return $_return; + } + + /** + * unlink a file, possibly using expiration time + * + * @param string $resource + * @param integer $exp_time + */ + function _unlink($resource, $exp_time = null) + { + if(isset($exp_time)) { + if(time() - @filemtime($resource) >= $exp_time) { + return @unlink($resource); + } + } else { + return @unlink($resource); + } + } + + /** + * returns an auto_id for auto-file-functions + * + * @param string $cache_id + * @param string $compile_id + * @return string|null + */ + function _get_auto_id($cache_id=null, $compile_id=null) { + if (isset($cache_id)) + return (isset($compile_id)) ? $cache_id . '|' . $compile_id : $cache_id; + elseif(isset($compile_id)) + return $compile_id; + else + return null; + } + + /** + * trigger Smarty plugin error + * + * @param string $error_msg + * @param string $tpl_file + * @param integer $tpl_line + * @param string $file + * @param integer $line + * @param integer $error_type + */ + function _trigger_fatal_error($error_msg, $tpl_file = null, $tpl_line = null, + $file = null, $line = null, $error_type = E_USER_ERROR) + { + if(isset($file) && isset($line)) { + $info = ' ('.basename($file).", line $line)"; + } else { + $info = ''; + } + if (isset($tpl_line) && isset($tpl_file)) { + $this->trigger_error('[in ' . $tpl_file . ' line ' . $tpl_line . "]: $error_msg$info", $error_type); + } else { + $this->trigger_error($error_msg . $info, $error_type); + } + } + + + /** + * callback function for preg_replace, to call a non-cacheable block + * @return string + */ + function _process_compiled_include_callback($match) { + $_func = '_smarty_tplfunc_'.$match[2].'_'.$match[3]; + ob_start(); + $_func($this); + $_ret = ob_get_contents(); + ob_end_clean(); + return $_ret; + } + + + /** + * called for included templates + * + * @param string $_smarty_include_tpl_file + * @param string $_smarty_include_vars + */ + + // $_smarty_include_tpl_file, $_smarty_include_vars + + function _smarty_include($params) + { + if ($this->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $debug_start_time = smarty_core_get_microtime($_params, $this); + $this->_smarty_debug_info[] = array('type' => 'template', + 'filename' => $params['smarty_include_tpl_file'], + 'depth' => ++$this->_inclusion_depth); + $included_tpls_idx = count($this->_smarty_debug_info) - 1; + } + + $this->_tpl_vars = array_merge($this->_tpl_vars, $params['smarty_include_vars']); + + // config vars are treated as local, so push a copy of the + // current ones onto the front of the stack + array_unshift($this->_config, $this->_config[0]); + + $_smarty_compile_path = $this->_get_compile_path($params['smarty_include_tpl_file']); + + + if ($this->_is_compiled($params['smarty_include_tpl_file'], $_smarty_compile_path) + || $this->_compile_resource($params['smarty_include_tpl_file'], $_smarty_compile_path)) + { + include($_smarty_compile_path); + } + + // pop the local vars off the front of the stack + array_shift($this->_config); + + $this->_inclusion_depth--; + + if ($this->debugging) { + // capture time for debugging info + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $this->_smarty_debug_info[$included_tpls_idx]['exec_time'] = smarty_core_get_microtime($_params, $this) - $debug_start_time; + } + + if ($this->caching) { + $this->_cache_info['template'][$params['smarty_include_tpl_file']] = true; + } + } + + + /** + * get or set an array of cached attributes for function that is + * not cacheable + * @return array + */ + function &_smarty_cache_attrs($cache_serial, $count) { + $_cache_attrs =& $this->_cache_info['cache_attrs'][$cache_serial][$count]; + + if ($this->_cache_including) { + /* return next set of cache_attrs */ + $_return = current($_cache_attrs); + next($_cache_attrs); + return $_return; + + } else { + /* add a reference to a new set of cache_attrs */ + $_cache_attrs[] = array(); + return $_cache_attrs[count($_cache_attrs)-1]; + + } + + } + + + /** + * wrapper for include() retaining $this + * @return mixed + */ + function _include($filename, $once=false, $params=null) + { + if ($once) { + return include_once($filename); + } else { + return include($filename); + } + } + + + /** + * wrapper for eval() retaining $this + * @return mixed + */ + function _eval($code, $params=null) + { + return eval($code); + } + + /** + * Extracts the filter name from the given callback + * + * @param callback $function + * @return string + */ + function _get_filter_name($function) + { + if (is_array($function)) { + $_class_name = (is_object($function[0]) ? + get_class($function[0]) : $function[0]); + return $_class_name . '_' . $function[1]; + } + else { + return $function; + } + } + + /**#@-*/ + +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/Smarty_Compiler.class.php b/includes/onyx/templates/libs/Smarty_Compiler.class.php new file mode 100644 index 0000000..52466d3 --- /dev/null +++ b/includes/onyx/templates/libs/Smarty_Compiler.class.php @@ -0,0 +1,2325 @@ + + * @author Andrei Zmievski + * @version 2.6.19 + * @copyright 2001-2005 New Digital Group, Inc. + * @package Smarty + */ + +/* $Id: Smarty_Compiler.class.php 2736 2007-09-16 14:47:53Z mohrt $ */ + +/** + * Template compiling class + * @package Smarty + */ +class Smarty_Compiler extends Smarty { + + // internal vars + /**#@+ + * @access private + */ + var $_folded_blocks = array(); // keeps folded template blocks + var $_current_file = null; // the current template being compiled + var $_current_line_no = 1; // line number for error messages + var $_capture_stack = array(); // keeps track of nested capture buffers + var $_plugin_info = array(); // keeps track of plugins to load + var $_init_smarty_vars = false; + var $_permitted_tokens = array('true','false','yes','no','on','off','null'); + var $_db_qstr_regexp = null; // regexps are setup in the constructor + var $_si_qstr_regexp = null; + var $_qstr_regexp = null; + var $_func_regexp = null; + var $_reg_obj_regexp = null; + var $_var_bracket_regexp = null; + var $_num_const_regexp = null; + var $_dvar_guts_regexp = null; + var $_dvar_regexp = null; + var $_cvar_regexp = null; + var $_svar_regexp = null; + var $_avar_regexp = null; + var $_mod_regexp = null; + var $_var_regexp = null; + var $_parenth_param_regexp = null; + var $_func_call_regexp = null; + var $_obj_ext_regexp = null; + var $_obj_start_regexp = null; + var $_obj_params_regexp = null; + var $_obj_call_regexp = null; + var $_cacheable_state = 0; + var $_cache_attrs_count = 0; + var $_nocache_count = 0; + var $_cache_serial = null; + var $_cache_include = null; + + var $_strip_depth = 0; + var $_additional_newline = "\n"; + + /**#@-*/ + /** + * The class constructor. + */ + function Smarty_Compiler() + { + // matches double quoted strings: + // "foobar" + // "foo\"bar" + $this->_db_qstr_regexp = '"[^"\\\\]*(?:\\\\.[^"\\\\]*)*"'; + + // matches single quoted strings: + // 'foobar' + // 'foo\'bar' + $this->_si_qstr_regexp = '\'[^\'\\\\]*(?:\\\\.[^\'\\\\]*)*\''; + + // matches single or double quoted strings + $this->_qstr_regexp = '(?:' . $this->_db_qstr_regexp . '|' . $this->_si_qstr_regexp . ')'; + + // matches bracket portion of vars + // [0] + // [foo] + // [$bar] + $this->_var_bracket_regexp = '\[\$?[\w\.]+\]'; + + // matches numerical constants + // 30 + // -12 + // 13.22 + $this->_num_const_regexp = '(?:\-?\d+(?:\.\d+)?)'; + + // matches $ vars (not objects): + // $foo + // $foo.bar + // $foo.bar.foobar + // $foo[0] + // $foo[$bar] + // $foo[5][blah] + // $foo[5].bar[$foobar][4] + $this->_dvar_math_regexp = '(?:[\+\*\/\%]|(?:-(?!>)))'; + $this->_dvar_math_var_regexp = '[\$\w\.\+\-\*\/\%\d\>\[\]]'; + $this->_dvar_guts_regexp = '\w+(?:' . $this->_var_bracket_regexp + . ')*(?:\.\$?\w+(?:' . $this->_var_bracket_regexp . ')*)*(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?'; + $this->_dvar_regexp = '\$' . $this->_dvar_guts_regexp; + + // matches config vars: + // #foo# + // #foobar123_foo# + $this->_cvar_regexp = '\#\w+\#'; + + // matches section vars: + // %foo.bar% + $this->_svar_regexp = '\%\w+\.\w+\%'; + + // matches all valid variables (no quotes, no modifiers) + $this->_avar_regexp = '(?:' . $this->_dvar_regexp . '|' + . $this->_cvar_regexp . '|' . $this->_svar_regexp . ')'; + + // matches valid variable syntax: + // $foo + // $foo + // #foo# + // #foo# + // "text" + // "text" + $this->_var_regexp = '(?:' . $this->_avar_regexp . '|' . $this->_qstr_regexp . ')'; + + // matches valid object call (one level of object nesting allowed in parameters): + // $foo->bar + // $foo->bar() + // $foo->bar("text") + // $foo->bar($foo, $bar, "text") + // $foo->bar($foo, "foo") + // $foo->bar->foo() + // $foo->bar->foo->bar() + // $foo->bar($foo->bar) + // $foo->bar($foo->bar()) + // $foo->bar($foo->bar($blah,$foo,44,"foo",$foo[0].bar)) + $this->_obj_ext_regexp = '\->(?:\$?' . $this->_dvar_guts_regexp . ')'; + $this->_obj_restricted_param_regexp = '(?:' + . '(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')(?:' . $this->_obj_ext_regexp . '(?:\((?:(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . ')' + . '(?:\s*,\s*(?:' . $this->_var_regexp . '|' . $this->_num_const_regexp . '))*)?\))?)*)'; + $this->_obj_single_param_regexp = '(?:\w+|' . $this->_obj_restricted_param_regexp . '(?:\s*,\s*(?:(?:\w+|' + . $this->_var_regexp . $this->_obj_restricted_param_regexp . ')))*)'; + $this->_obj_params_regexp = '\((?:' . $this->_obj_single_param_regexp + . '(?:\s*,\s*' . $this->_obj_single_param_regexp . ')*)?\)'; + $this->_obj_start_regexp = '(?:' . $this->_dvar_regexp . '(?:' . $this->_obj_ext_regexp . ')+)'; + $this->_obj_call_regexp = '(?:' . $this->_obj_start_regexp . '(?:' . $this->_obj_params_regexp . ')?(?:' . $this->_dvar_math_regexp . '(?:' . $this->_num_const_regexp . '|' . $this->_dvar_math_var_regexp . ')*)?)'; + + // matches valid modifier syntax: + // |foo + // |@foo + // |foo:"bar" + // |foo:$bar + // |foo:"bar":$foobar + // |foo|bar + // |foo:$foo->bar + $this->_mod_regexp = '(?:\|@?\w+(?::(?:\w+|' . $this->_num_const_regexp . '|' + . $this->_obj_call_regexp . '|' . $this->_avar_regexp . '|' . $this->_qstr_regexp .'))*)'; + + // matches valid function name: + // foo123 + // _foo_bar + $this->_func_regexp = '[a-zA-Z_]\w*'; + + // matches valid registered object: + // foo->bar + $this->_reg_obj_regexp = '[a-zA-Z_]\w*->[a-zA-Z_]\w*'; + + // matches valid parameter values: + // true + // $foo + // $foo|bar + // #foo# + // #foo#|bar + // "text" + // "text"|bar + // $foo->bar + $this->_param_regexp = '(?:\s*(?:' . $this->_obj_call_regexp . '|' + . $this->_var_regexp . '|' . $this->_num_const_regexp . '|\w+)(?>' . $this->_mod_regexp . '*)\s*)'; + + // matches valid parenthesised function parameters: + // + // "text" + // $foo, $bar, "text" + // $foo|bar, "foo"|bar, $foo->bar($foo)|bar + $this->_parenth_param_regexp = '(?:\((?:\w+|' + . $this->_param_regexp . '(?:\s*,\s*(?:(?:\w+|' + . $this->_param_regexp . ')))*)?\))'; + + // matches valid function call: + // foo() + // foo_bar($foo) + // _foo_bar($foo,"bar") + // foo123($foo,$foo->bar(),"foo") + $this->_func_call_regexp = '(?:' . $this->_func_regexp . '\s*(?:' + . $this->_parenth_param_regexp . '))'; + } + + /** + * compile a resource + * + * sets $compiled_content to the compiled source + * @param string $resource_name + * @param string $source_content + * @param string $compiled_content + * @return true + */ + function _compile_file($resource_name, $source_content, &$compiled_content) + { + + if ($this->security) { + // do not allow php syntax to be executed unless specified + if ($this->php_handling == SMARTY_PHP_ALLOW && + !$this->security_settings['PHP_HANDLING']) { + $this->php_handling = SMARTY_PHP_PASSTHRU; + } + } + + $this->_load_filters(); + + $this->_current_file = $resource_name; + $this->_current_line_no = 1; + $ldq = preg_quote($this->left_delimiter, '~'); + $rdq = preg_quote($this->right_delimiter, '~'); + + // run template source through prefilter functions + if (count($this->_plugins['prefilter']) > 0) { + foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) { + if ($prefilter === false) continue; + if ($prefilter[3] || is_callable($prefilter[0])) { + $source_content = call_user_func_array($prefilter[0], + array($source_content, &$this)); + $this->_plugins['prefilter'][$filter_name][3] = true; + } else { + $this->_trigger_fatal_error("[plugin] prefilter '$filter_name' is not implemented"); + } + } + } + + /* fetch all special blocks */ + $search = "~{$ldq}\*(.*?)\*{$rdq}|{$ldq}\s*literal\s*{$rdq}(.*?){$ldq}\s*/literal\s*{$rdq}|{$ldq}\s*php\s*{$rdq}(.*?){$ldq}\s*/php\s*{$rdq}~s"; + + preg_match_all($search, $source_content, $match, PREG_SET_ORDER); + $this->_folded_blocks = $match; + reset($this->_folded_blocks); + + /* replace special blocks by "{php}" */ + $source_content = preg_replace($search.'e', "'" + . $this->_quote_replace($this->left_delimiter) . 'php' + . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'" + . $this->_quote_replace($this->right_delimiter) + . "'" + , $source_content); + + /* Gather all template tags. */ + preg_match_all("~{$ldq}\s*(.*?)\s*{$rdq}~s", $source_content, $_match); + $template_tags = $_match[1]; + /* Split content by template tags to obtain non-template content. */ + $text_blocks = preg_split("~{$ldq}.*?{$rdq}~s", $source_content); + + /* loop through text blocks */ + for ($curr_tb = 0, $for_max = count($text_blocks); $curr_tb < $for_max; $curr_tb++) { + /* match anything resembling php tags */ + if (preg_match_all('~(<\?(?:\w+|=)?|\?>|language\s*=\s*[\"\']?\s*php\s*[\"\']?)~is', $text_blocks[$curr_tb], $sp_match)) { + /* replace tags with placeholders to prevent recursive replacements */ + $sp_match[1] = array_unique($sp_match[1]); + usort($sp_match[1], '_smarty_sort_length'); + for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++) { + $text_blocks[$curr_tb] = str_replace($sp_match[1][$curr_sp],'%%%SMARTYSP'.$curr_sp.'%%%',$text_blocks[$curr_tb]); + } + /* process each one */ + for ($curr_sp = 0, $for_max2 = count($sp_match[1]); $curr_sp < $for_max2; $curr_sp++) { + if ($this->php_handling == SMARTY_PHP_PASSTHRU) { + /* echo php contents */ + $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', ''."\n", $text_blocks[$curr_tb]); + } else if ($this->php_handling == SMARTY_PHP_QUOTE) { + /* quote php tags */ + $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', htmlspecialchars($sp_match[1][$curr_sp]), $text_blocks[$curr_tb]); + } else if ($this->php_handling == SMARTY_PHP_REMOVE) { + /* remove php tags */ + $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', '', $text_blocks[$curr_tb]); + } else { + /* SMARTY_PHP_ALLOW, but echo non php starting tags */ + $sp_match[1][$curr_sp] = preg_replace('~(<\?(?!php|=|$))~i', ''."\n", $sp_match[1][$curr_sp]); + $text_blocks[$curr_tb] = str_replace('%%%SMARTYSP'.$curr_sp.'%%%', $sp_match[1][$curr_sp], $text_blocks[$curr_tb]); + } + } + } + } + + /* Compile the template tags into PHP code. */ + $compiled_tags = array(); + for ($i = 0, $for_max = count($template_tags); $i < $for_max; $i++) { + $this->_current_line_no += substr_count($text_blocks[$i], "\n"); + $compiled_tags[] = $this->_compile_tag($template_tags[$i]); + $this->_current_line_no += substr_count($template_tags[$i], "\n"); + } + if (count($this->_tag_stack)>0) { + list($_open_tag, $_line_no) = end($this->_tag_stack); + $this->_syntax_error("unclosed tag \{$_open_tag} (opened line $_line_no).", E_USER_ERROR, __FILE__, __LINE__); + return; + } + + /* Reformat $text_blocks between 'strip' and '/strip' tags, + removing spaces, tabs and newlines. */ + $strip = false; + for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) { + if ($compiled_tags[$i] == '{strip}') { + $compiled_tags[$i] = ''; + $strip = true; + /* remove leading whitespaces */ + $text_blocks[$i + 1] = ltrim($text_blocks[$i + 1]); + } + if ($strip) { + /* strip all $text_blocks before the next '/strip' */ + for ($j = $i + 1; $j < $for_max; $j++) { + /* remove leading and trailing whitespaces of each line */ + $text_blocks[$j] = preg_replace('![\t ]*[\r\n]+[\t ]*!', '', $text_blocks[$j]); + if ($compiled_tags[$j] == '{/strip}') { + /* remove trailing whitespaces from the last text_block */ + $text_blocks[$j] = rtrim($text_blocks[$j]); + } + $text_blocks[$j] = ""\'", "\\"=>"\\\\")) . "'; ?>"; + if ($compiled_tags[$j] == '{/strip}') { + $compiled_tags[$j] = "\n"; /* slurped by php, but necessary + if a newline is following the closing strip-tag */ + $strip = false; + $i = $j; + break; + } + } + } + } + $compiled_content = ''; + + $tag_guard = '%%%SMARTYOTG' . md5(uniqid(rand(), true)) . '%%%'; + + /* Interleave the compiled contents and text blocks to get the final result. */ + for ($i = 0, $for_max = count($compiled_tags); $i < $for_max; $i++) { + if ($compiled_tags[$i] == '') { + // tag result empty, remove first newline from following text block + $text_blocks[$i+1] = preg_replace('~^(\r\n|\r|\n)~', '', $text_blocks[$i+1]); + } + // replace legit PHP tags with placeholder + $text_blocks[$i] = str_replace('\n", $compiled_content); + $compiled_content = preg_replace("~(?\n", $compiled_content); + + // recover legit tags + $compiled_content = str_replace($tag_guard, '_cache_serial)) { + $compiled_content = "_cache_serials['".$this->_cache_include."'] = '".$this->_cache_serial."'; ?>" . $compiled_content; + } + + // run compiled template through postfilter functions + if (count($this->_plugins['postfilter']) > 0) { + foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) { + if ($postfilter === false) continue; + if ($postfilter[3] || is_callable($postfilter[0])) { + $compiled_content = call_user_func_array($postfilter[0], + array($compiled_content, &$this)); + $this->_plugins['postfilter'][$filter_name][3] = true; + } else { + $this->_trigger_fatal_error("Smarty plugin error: postfilter '$filter_name' is not implemented"); + } + } + } + + // put header at the top of the compiled template + $template_header = "_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n"; + $template_header .= " compiled from ".strtr(urlencode($resource_name), array('%2F'=>'/', '%3A'=>':'))." */ ?>\n"; + + /* Emit code to load needed plugins. */ + $this->_plugins_code = ''; + if (count($this->_plugin_info)) { + $_plugins_params = "array('plugins' => array("; + foreach ($this->_plugin_info as $plugin_type => $plugins) { + foreach ($plugins as $plugin_name => $plugin_info) { + $_plugins_params .= "array('$plugin_type', '$plugin_name', '" . strtr($plugin_info[0], array("'" => "\\'", "\\" => "\\\\")) . "', $plugin_info[1], "; + $_plugins_params .= $plugin_info[2] ? 'true),' : 'false),'; + } + } + $_plugins_params .= '))'; + $plugins_code = "\n"; + $template_header .= $plugins_code; + $this->_plugin_info = array(); + $this->_plugins_code = $plugins_code; + } + + if ($this->_init_smarty_vars) { + $template_header .= "\n"; + $this->_init_smarty_vars = false; + } + + $compiled_content = $template_header . $compiled_content; + return true; + } + + /** + * Compile a template tag + * + * @param string $template_tag + * @return string + */ + function _compile_tag($template_tag) + { + /* Matched comment. */ + if (substr($template_tag, 0, 1) == '*' && substr($template_tag, -1) == '*') + return ''; + + /* Split tag into two three parts: command, command modifiers and the arguments. */ + if(! preg_match('~^(?:(' . $this->_num_const_regexp . '|' . $this->_obj_call_regexp . '|' . $this->_var_regexp + . '|\/?' . $this->_reg_obj_regexp . '|\/?' . $this->_func_regexp . ')(' . $this->_mod_regexp . '*)) + (?:\s+(.*))?$ + ~xs', $template_tag, $match)) { + $this->_syntax_error("unrecognized tag: $template_tag", E_USER_ERROR, __FILE__, __LINE__); + } + + $tag_command = $match[1]; + $tag_modifier = isset($match[2]) ? $match[2] : null; + $tag_args = isset($match[3]) ? $match[3] : null; + + if (preg_match('~^' . $this->_num_const_regexp . '|' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '$~', $tag_command)) { + /* tag name is a variable or object */ + $_return = $this->_parse_var_props($tag_command . $tag_modifier); + return "" . $this->_additional_newline; + } + + /* If the tag name is a registered object, we process it. */ + if (preg_match('~^\/?' . $this->_reg_obj_regexp . '$~', $tag_command)) { + return $this->_compile_registered_object_tag($tag_command, $this->_parse_attrs($tag_args), $tag_modifier); + } + + switch ($tag_command) { + case 'include': + return $this->_compile_include_tag($tag_args); + + case 'include_php': + return $this->_compile_include_php_tag($tag_args); + + case 'if': + $this->_push_tag('if'); + return $this->_compile_if_tag($tag_args); + + case 'else': + list($_open_tag) = end($this->_tag_stack); + if ($_open_tag != 'if' && $_open_tag != 'elseif') + $this->_syntax_error('unexpected {else}', E_USER_ERROR, __FILE__, __LINE__); + else + $this->_push_tag('else'); + return ''; + + case 'elseif': + list($_open_tag) = end($this->_tag_stack); + if ($_open_tag != 'if' && $_open_tag != 'elseif') + $this->_syntax_error('unexpected {elseif}', E_USER_ERROR, __FILE__, __LINE__); + if ($_open_tag == 'if') + $this->_push_tag('elseif'); + return $this->_compile_if_tag($tag_args, true); + + case '/if': + $this->_pop_tag('if'); + return ''; + + case 'capture': + return $this->_compile_capture_tag(true, $tag_args); + + case '/capture': + return $this->_compile_capture_tag(false); + + case 'ldelim': + return $this->left_delimiter; + + case 'rdelim': + return $this->right_delimiter; + + case 'section': + $this->_push_tag('section'); + return $this->_compile_section_start($tag_args); + + case 'sectionelse': + $this->_push_tag('sectionelse'); + return ""; + break; + + case '/section': + $_open_tag = $this->_pop_tag('section'); + if ($_open_tag == 'sectionelse') + return ""; + else + return ""; + + case 'foreach': + $this->_push_tag('foreach'); + return $this->_compile_foreach_start($tag_args); + break; + + case 'foreachelse': + $this->_push_tag('foreachelse'); + return ""; + + case '/foreach': + $_open_tag = $this->_pop_tag('foreach'); + if ($_open_tag == 'foreachelse') + return ""; + else + return ""; + break; + + case 'strip': + case '/strip': + if (substr($tag_command, 0, 1)=='/') { + $this->_pop_tag('strip'); + if (--$this->_strip_depth==0) { /* outermost closing {/strip} */ + $this->_additional_newline = "\n"; + return '{' . $tag_command . '}'; + } + } else { + $this->_push_tag('strip'); + if ($this->_strip_depth++==0) { /* outermost opening {strip} */ + $this->_additional_newline = ""; + return '{' . $tag_command . '}'; + } + } + return ''; + + case 'php': + /* handle folded tags replaced by {php} */ + list(, $block) = each($this->_folded_blocks); + $this->_current_line_no += substr_count($block[0], "\n"); + /* the number of matched elements in the regexp in _compile_file() + determins the type of folded tag that was found */ + switch (count($block)) { + case 2: /* comment */ + return ''; + + case 3: /* literal */ + return ""\'", "\\"=>"\\\\")) . "'; ?>" . $this->_additional_newline; + + case 4: /* php */ + if ($this->security && !$this->security_settings['PHP_TAGS']) { + $this->_syntax_error("(secure mode) php tags not permitted", E_USER_WARNING, __FILE__, __LINE__); + return; + } + return ''; + } + break; + + case 'insert': + return $this->_compile_insert_tag($tag_args); + + default: + if ($this->_compile_compiler_tag($tag_command, $tag_args, $output)) { + return $output; + } else if ($this->_compile_block_tag($tag_command, $tag_args, $tag_modifier, $output)) { + return $output; + } else if ($this->_compile_custom_tag($tag_command, $tag_args, $tag_modifier, $output)) { + return $output; + } else { + $this->_syntax_error("unrecognized tag '$tag_command'", E_USER_ERROR, __FILE__, __LINE__); + } + + } + } + + + /** + * compile the custom compiler tag + * + * sets $output to the compiled custom compiler tag + * @param string $tag_command + * @param string $tag_args + * @param string $output + * @return boolean + */ + function _compile_compiler_tag($tag_command, $tag_args, &$output) + { + $found = false; + $have_function = true; + + /* + * First we check if the compiler function has already been registered + * or loaded from a plugin file. + */ + if (isset($this->_plugins['compiler'][$tag_command])) { + $found = true; + $plugin_func = $this->_plugins['compiler'][$tag_command][0]; + if (!is_callable($plugin_func)) { + $message = "compiler function '$tag_command' is not implemented"; + $have_function = false; + } + } + /* + * Otherwise we need to load plugin file and look for the function + * inside it. + */ + else if ($plugin_file = $this->_get_plugin_filepath('compiler', $tag_command)) { + $found = true; + + include_once $plugin_file; + + $plugin_func = 'smarty_compiler_' . $tag_command; + if (!is_callable($plugin_func)) { + $message = "plugin function $plugin_func() not found in $plugin_file\n"; + $have_function = false; + } else { + $this->_plugins['compiler'][$tag_command] = array($plugin_func, null, null, null, true); + } + } + + /* + * True return value means that we either found a plugin or a + * dynamically registered function. False means that we didn't and the + * compiler should now emit code to load custom function plugin for this + * tag. + */ + if ($found) { + if ($have_function) { + $output = call_user_func_array($plugin_func, array($tag_args, &$this)); + if($output != '') { + $output = '_push_cacheable_state('compiler', $tag_command) + . $output + . $this->_pop_cacheable_state('compiler', $tag_command) . ' ?>'; + } + } else { + $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__); + } + return true; + } else { + return false; + } + } + + + /** + * compile block function tag + * + * sets $output to compiled block function tag + * @param string $tag_command + * @param string $tag_args + * @param string $tag_modifier + * @param string $output + * @return boolean + */ + function _compile_block_tag($tag_command, $tag_args, $tag_modifier, &$output) + { + if (substr($tag_command, 0, 1) == '/') { + $start_tag = false; + $tag_command = substr($tag_command, 1); + } else + $start_tag = true; + + $found = false; + $have_function = true; + + /* + * First we check if the block function has already been registered + * or loaded from a plugin file. + */ + if (isset($this->_plugins['block'][$tag_command])) { + $found = true; + $plugin_func = $this->_plugins['block'][$tag_command][0]; + if (!is_callable($plugin_func)) { + $message = "block function '$tag_command' is not implemented"; + $have_function = false; + } + } + /* + * Otherwise we need to load plugin file and look for the function + * inside it. + */ + else if ($plugin_file = $this->_get_plugin_filepath('block', $tag_command)) { + $found = true; + + include_once $plugin_file; + + $plugin_func = 'smarty_block_' . $tag_command; + if (!function_exists($plugin_func)) { + $message = "plugin function $plugin_func() not found in $plugin_file\n"; + $have_function = false; + } else { + $this->_plugins['block'][$tag_command] = array($plugin_func, null, null, null, true); + + } + } + + if (!$found) { + return false; + } else if (!$have_function) { + $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__); + return true; + } + + /* + * Even though we've located the plugin function, compilation + * happens only once, so the plugin will still need to be loaded + * at runtime for future requests. + */ + $this->_add_plugin('block', $tag_command); + + if ($start_tag) + $this->_push_tag($tag_command); + else + $this->_pop_tag($tag_command); + + if ($start_tag) { + $output = '_push_cacheable_state('block', $tag_command); + $attrs = $this->_parse_attrs($tag_args); + $_cache_attrs=''; + $arg_list = $this->_compile_arg_list('block', $tag_command, $attrs, $_cache_attrs); + $output .= "$_cache_attrs\$this->_tag_stack[] = array('$tag_command', array(".implode(',', $arg_list).')); '; + $output .= '$_block_repeat=true;' . $this->_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], null, $this, $_block_repeat);'; + $output .= 'while ($_block_repeat) { ob_start(); ?>'; + } else { + $output = '_compile_plugin_call('block', $tag_command).'($this->_tag_stack[count($this->_tag_stack)-1][1], $_block_content, $this, $_block_repeat)'; + if ($tag_modifier != '') { + $this->_parse_modifiers($_out_tag_text, $tag_modifier); + } + $output .= '$_block_repeat=false;echo ' . $_out_tag_text . '; } '; + $output .= " array_pop(\$this->_tag_stack); " . $this->_pop_cacheable_state('block', $tag_command) . '?>'; + } + + return true; + } + + + /** + * compile custom function tag + * + * @param string $tag_command + * @param string $tag_args + * @param string $tag_modifier + * @return string + */ + function _compile_custom_tag($tag_command, $tag_args, $tag_modifier, &$output) + { + $found = false; + $have_function = true; + + /* + * First we check if the custom function has already been registered + * or loaded from a plugin file. + */ + if (isset($this->_plugins['function'][$tag_command])) { + $found = true; + $plugin_func = $this->_plugins['function'][$tag_command][0]; + if (!is_callable($plugin_func)) { + $message = "custom function '$tag_command' is not implemented"; + $have_function = false; + } + } + /* + * Otherwise we need to load plugin file and look for the function + * inside it. + */ + else if ($plugin_file = $this->_get_plugin_filepath('function', $tag_command)) { + $found = true; + + include_once $plugin_file; + + $plugin_func = 'smarty_function_' . $tag_command; + if (!function_exists($plugin_func)) { + $message = "plugin function $plugin_func() not found in $plugin_file\n"; + $have_function = false; + } else { + $this->_plugins['function'][$tag_command] = array($plugin_func, null, null, null, true); + + } + } + + if (!$found) { + return false; + } else if (!$have_function) { + $this->_syntax_error($message, E_USER_WARNING, __FILE__, __LINE__); + return true; + } + + /* declare plugin to be loaded on display of the template that + we compile right now */ + $this->_add_plugin('function', $tag_command); + + $_cacheable_state = $this->_push_cacheable_state('function', $tag_command); + $attrs = $this->_parse_attrs($tag_args); + $_cache_attrs = ''; + $arg_list = $this->_compile_arg_list('function', $tag_command, $attrs, $_cache_attrs); + + $output = $this->_compile_plugin_call('function', $tag_command).'(array('.implode(',', $arg_list)."), \$this)"; + if($tag_modifier != '') { + $this->_parse_modifiers($output, $tag_modifier); + } + + if($output != '') { + $output = '_pop_cacheable_state('function', $tag_command) . "?>" . $this->_additional_newline; + } + + return true; + } + + /** + * compile a registered object tag + * + * @param string $tag_command + * @param array $attrs + * @param string $tag_modifier + * @return string + */ + function _compile_registered_object_tag($tag_command, $attrs, $tag_modifier) + { + if (substr($tag_command, 0, 1) == '/') { + $start_tag = false; + $tag_command = substr($tag_command, 1); + } else { + $start_tag = true; + } + + list($object, $obj_comp) = explode('->', $tag_command); + + $arg_list = array(); + if(count($attrs)) { + $_assign_var = false; + foreach ($attrs as $arg_name => $arg_value) { + if($arg_name == 'assign') { + $_assign_var = $arg_value; + unset($attrs['assign']); + continue; + } + if (is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + $arg_list[] = "'$arg_name' => $arg_value"; + } + } + + if($this->_reg_objects[$object][2]) { + // smarty object argument format + $args = "array(".implode(',', (array)$arg_list)."), \$this"; + } else { + // traditional argument format + $args = implode(',', array_values($attrs)); + if (empty($args)) { + $args = ''; + } + } + + $prefix = ''; + $postfix = ''; + $newline = ''; + if(!is_object($this->_reg_objects[$object][0])) { + $this->_trigger_fatal_error("registered '$object' is not an object" , $this->_current_file, $this->_current_line_no, __FILE__, __LINE__); + } elseif(!empty($this->_reg_objects[$object][1]) && !in_array($obj_comp, $this->_reg_objects[$object][1])) { + $this->_trigger_fatal_error("'$obj_comp' is not a registered component of object '$object'", $this->_current_file, $this->_current_line_no, __FILE__, __LINE__); + } elseif(method_exists($this->_reg_objects[$object][0], $obj_comp)) { + // method + if(in_array($obj_comp, $this->_reg_objects[$object][3])) { + // block method + if ($start_tag) { + $prefix = "\$this->_tag_stack[] = array('$obj_comp', $args); "; + $prefix .= "\$_block_repeat=true; \$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], null, \$this, \$_block_repeat); "; + $prefix .= "while (\$_block_repeat) { ob_start();"; + $return = null; + $postfix = ''; + } else { + $prefix = "\$_obj_block_content = ob_get_contents(); ob_end_clean(); \$_block_repeat=false;"; + $return = "\$this->_reg_objects['$object'][0]->$obj_comp(\$this->_tag_stack[count(\$this->_tag_stack)-1][1], \$_obj_block_content, \$this, \$_block_repeat)"; + $postfix = "} array_pop(\$this->_tag_stack);"; + } + } else { + // non-block method + $return = "\$this->_reg_objects['$object'][0]->$obj_comp($args)"; + } + } else { + // property + $return = "\$this->_reg_objects['$object'][0]->$obj_comp"; + } + + if($return != null) { + if($tag_modifier != '') { + $this->_parse_modifiers($return, $tag_modifier); + } + + if(!empty($_assign_var)) { + $output = "\$this->assign('" . $this->_dequote($_assign_var) ."', $return);"; + } else { + $output = 'echo ' . $return . ';'; + $newline = $this->_additional_newline; + } + } else { + $output = ''; + } + + return '" . $newline; + } + + /** + * Compile {insert ...} tag + * + * @param string $tag_args + * @return string + */ + function _compile_insert_tag($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + $name = $this->_dequote($attrs['name']); + + if (empty($name)) { + return $this->_syntax_error("missing insert name", E_USER_ERROR, __FILE__, __LINE__); + } + + if (!preg_match('~^\w+$~', $name)) { + return $this->_syntax_error("'insert: 'name' must be an insert function name", E_USER_ERROR, __FILE__, __LINE__); + } + + if (!empty($attrs['script'])) { + $delayed_loading = true; + } else { + $delayed_loading = false; + } + + foreach ($attrs as $arg_name => $arg_value) { + if (is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + $arg_list[] = "'$arg_name' => $arg_value"; + } + + $this->_add_plugin('insert', $name, $delayed_loading); + + $_params = "array('args' => array(".implode(', ', (array)$arg_list)."))"; + + return "" . $this->_additional_newline; + } + + /** + * Compile {include ...} tag + * + * @param string $tag_args + * @return string + */ + function _compile_include_tag($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + $arg_list = array(); + + if (empty($attrs['file'])) { + $this->_syntax_error("missing 'file' attribute in include tag", E_USER_ERROR, __FILE__, __LINE__); + } + + foreach ($attrs as $arg_name => $arg_value) { + if ($arg_name == 'file') { + $include_file = $arg_value; + continue; + } else if ($arg_name == 'assign') { + $assign_var = $arg_value; + continue; + } + if (is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + $arg_list[] = "'$arg_name' => $arg_value"; + } + + $output = '_tpl_vars;\n"; + + + $_params = "array('smarty_include_tpl_file' => " . $include_file . ", 'smarty_include_vars' => array(".implode(',', (array)$arg_list)."))"; + $output .= "\$this->_smarty_include($_params);\n" . + "\$this->_tpl_vars = \$_smarty_tpl_vars;\n" . + "unset(\$_smarty_tpl_vars);\n"; + + if (isset($assign_var)) { + $output .= "\$this->assign(" . $assign_var . ", ob_get_contents()); ob_end_clean();\n"; + } + + $output .= ' ?>'; + + return $output; + + } + + /** + * Compile {include ...} tag + * + * @param string $tag_args + * @return string + */ + function _compile_include_php_tag($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + + if (empty($attrs['file'])) { + $this->_syntax_error("missing 'file' attribute in include_php tag", E_USER_ERROR, __FILE__, __LINE__); + } + + $assign_var = (empty($attrs['assign'])) ? '' : $this->_dequote($attrs['assign']); + $once_var = (empty($attrs['once']) || $attrs['once']=='false') ? 'false' : 'true'; + + $arg_list = array(); + foreach($attrs as $arg_name => $arg_value) { + if($arg_name != 'file' AND $arg_name != 'once' AND $arg_name != 'assign') { + if(is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + $arg_list[] = "'$arg_name' => $arg_value"; + } + } + + $_params = "array('smarty_file' => " . $attrs['file'] . ", 'smarty_assign' => '$assign_var', 'smarty_once' => $once_var, 'smarty_include_vars' => array(".implode(',', $arg_list)."))"; + + return "" . $this->_additional_newline; + } + + + /** + * Compile {section ...} tag + * + * @param string $tag_args + * @return string + */ + function _compile_section_start($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + $arg_list = array(); + + $output = '_syntax_error("missing section name", E_USER_ERROR, __FILE__, __LINE__); + } + + $output .= "unset(\$this->_sections[$section_name]);\n"; + $section_props = "\$this->_sections[$section_name]"; + + foreach ($attrs as $attr_name => $attr_value) { + switch ($attr_name) { + case 'loop': + $output .= "{$section_props}['loop'] = is_array(\$_loop=$attr_value) ? count(\$_loop) : max(0, (int)\$_loop); unset(\$_loop);\n"; + break; + + case 'show': + if (is_bool($attr_value)) + $show_attr_value = $attr_value ? 'true' : 'false'; + else + $show_attr_value = "(bool)$attr_value"; + $output .= "{$section_props}['show'] = $show_attr_value;\n"; + break; + + case 'name': + $output .= "{$section_props}['$attr_name'] = $attr_value;\n"; + break; + + case 'max': + case 'start': + $output .= "{$section_props}['$attr_name'] = (int)$attr_value;\n"; + break; + + case 'step': + $output .= "{$section_props}['$attr_name'] = ((int)$attr_value) == 0 ? 1 : (int)$attr_value;\n"; + break; + + default: + $this->_syntax_error("unknown section attribute - '$attr_name'", E_USER_ERROR, __FILE__, __LINE__); + break; + } + } + + if (!isset($attrs['show'])) + $output .= "{$section_props}['show'] = true;\n"; + + if (!isset($attrs['loop'])) + $output .= "{$section_props}['loop'] = 1;\n"; + + if (!isset($attrs['max'])) + $output .= "{$section_props}['max'] = {$section_props}['loop'];\n"; + else + $output .= "if ({$section_props}['max'] < 0)\n" . + " {$section_props}['max'] = {$section_props}['loop'];\n"; + + if (!isset($attrs['step'])) + $output .= "{$section_props}['step'] = 1;\n"; + + if (!isset($attrs['start'])) + $output .= "{$section_props}['start'] = {$section_props}['step'] > 0 ? 0 : {$section_props}['loop']-1;\n"; + else { + $output .= "if ({$section_props}['start'] < 0)\n" . + " {$section_props}['start'] = max({$section_props}['step'] > 0 ? 0 : -1, {$section_props}['loop'] + {$section_props}['start']);\n" . + "else\n" . + " {$section_props}['start'] = min({$section_props}['start'], {$section_props}['step'] > 0 ? {$section_props}['loop'] : {$section_props}['loop']-1);\n"; + } + + $output .= "if ({$section_props}['show']) {\n"; + if (!isset($attrs['start']) && !isset($attrs['step']) && !isset($attrs['max'])) { + $output .= " {$section_props}['total'] = {$section_props}['loop'];\n"; + } else { + $output .= " {$section_props}['total'] = min(ceil(({$section_props}['step'] > 0 ? {$section_props}['loop'] - {$section_props}['start'] : {$section_props}['start']+1)/abs({$section_props}['step'])), {$section_props}['max']);\n"; + } + $output .= " if ({$section_props}['total'] == 0)\n" . + " {$section_props}['show'] = false;\n" . + "} else\n" . + " {$section_props}['total'] = 0;\n"; + + $output .= "if ({$section_props}['show']):\n"; + $output .= " + for ({$section_props}['index'] = {$section_props}['start'], {$section_props}['iteration'] = 1; + {$section_props}['iteration'] <= {$section_props}['total']; + {$section_props}['index'] += {$section_props}['step'], {$section_props}['iteration']++):\n"; + $output .= "{$section_props}['rownum'] = {$section_props}['iteration'];\n"; + $output .= "{$section_props}['index_prev'] = {$section_props}['index'] - {$section_props}['step'];\n"; + $output .= "{$section_props}['index_next'] = {$section_props}['index'] + {$section_props}['step'];\n"; + $output .= "{$section_props}['first'] = ({$section_props}['iteration'] == 1);\n"; + $output .= "{$section_props}['last'] = ({$section_props}['iteration'] == {$section_props}['total']);\n"; + + $output .= "?>"; + + return $output; + } + + + /** + * Compile {foreach ...} tag. + * + * @param string $tag_args + * @return string + */ + function _compile_foreach_start($tag_args) + { + $attrs = $this->_parse_attrs($tag_args); + $arg_list = array(); + + if (empty($attrs['from'])) { + return $this->_syntax_error("foreach: missing 'from' attribute", E_USER_ERROR, __FILE__, __LINE__); + } + $from = $attrs['from']; + + if (empty($attrs['item'])) { + return $this->_syntax_error("foreach: missing 'item' attribute", E_USER_ERROR, __FILE__, __LINE__); + } + $item = $this->_dequote($attrs['item']); + if (!preg_match('~^\w+$~', $item)) { + return $this->_syntax_error("foreach: 'item' must be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__); + } + + if (isset($attrs['key'])) { + $key = $this->_dequote($attrs['key']); + if (!preg_match('~^\w+$~', $key)) { + return $this->_syntax_error("foreach: 'key' must to be a variable name (literal string)", E_USER_ERROR, __FILE__, __LINE__); + } + $key_part = "\$this->_tpl_vars['$key'] => "; + } else { + $key = null; + $key_part = ''; + } + + if (isset($attrs['name'])) { + $name = $attrs['name']; + } else { + $name = null; + } + + $output = '_foreach[$name]"; + $output .= "{$foreach_props} = array('total' => count(\$_from), 'iteration' => 0);\n"; + $output .= "if ({$foreach_props}['total'] > 0):\n"; + $output .= " foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n"; + $output .= " {$foreach_props}['iteration']++;\n"; + } else { + $output .= "if (count(\$_from)):\n"; + $output .= " foreach (\$_from as $key_part\$this->_tpl_vars['$item']):\n"; + } + $output .= '?>'; + + return $output; + } + + + /** + * Compile {capture} .. {/capture} tags + * + * @param boolean $start true if this is the {capture} tag + * @param string $tag_args + * @return string + */ + + function _compile_capture_tag($start, $tag_args = '') + { + $attrs = $this->_parse_attrs($tag_args); + + if ($start) { + $buffer = isset($attrs['name']) ? $attrs['name'] : "'default'"; + $assign = isset($attrs['assign']) ? $attrs['assign'] : null; + $append = isset($attrs['append']) ? $attrs['append'] : null; + + $output = ""; + $this->_capture_stack[] = array($buffer, $assign, $append); + } else { + list($buffer, $assign, $append) = array_pop($this->_capture_stack); + $output = "_smarty_vars['capture'][$buffer] = ob_get_contents(); "; + if (isset($assign)) { + $output .= " \$this->assign($assign, ob_get_contents());"; + } + if (isset($append)) { + $output .= " \$this->append($append, ob_get_contents());"; + } + $output .= "ob_end_clean(); ?>"; + } + + return $output; + } + + /** + * Compile {if ...} tag + * + * @param string $tag_args + * @param boolean $elseif if true, uses elseif instead of if + * @return string + */ + function _compile_if_tag($tag_args, $elseif = false) + { + + /* Tokenize args for 'if' tag. */ + preg_match_all('~(?> + ' . $this->_obj_call_regexp . '(?:' . $this->_mod_regexp . '*)? | # valid object call + ' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)? | # var or quoted string + \-?0[xX][0-9a-fA-F]+|\-?\d+(?:\.\d+)?|\.\d+|!==|===|==|!=|<>|<<|>>|<=|>=|\&\&|\|\||\(|\)|,|\!|\^|=|\&|\~|<|>|\||\%|\+|\-|\/|\*|\@ | # valid non-word token + \b\w+\b | # valid word token + \S+ # anything else + )~x', $tag_args, $match); + + $tokens = $match[0]; + + if(empty($tokens)) { + $_error_msg = $elseif ? "'elseif'" : "'if'"; + $_error_msg .= ' statement requires arguments'; + $this->_syntax_error($_error_msg, E_USER_ERROR, __FILE__, __LINE__); + } + + + // make sure we have balanced parenthesis + $token_count = array_count_values($tokens); + if(isset($token_count['(']) && $token_count['('] != $token_count[')']) { + $this->_syntax_error("unbalanced parenthesis in if statement", E_USER_ERROR, __FILE__, __LINE__); + } + + $is_arg_stack = array(); + + for ($i = 0; $i < count($tokens); $i++) { + + $token = &$tokens[$i]; + + switch (strtolower($token)) { + case '!': + case '%': + case '!==': + case '==': + case '===': + case '>': + case '<': + case '!=': + case '<>': + case '<<': + case '>>': + case '<=': + case '>=': + case '&&': + case '||': + case '|': + case '^': + case '&': + case '~': + case ')': + case ',': + case '+': + case '-': + case '*': + case '/': + case '@': + break; + + case 'eq': + $token = '=='; + break; + + case 'ne': + case 'neq': + $token = '!='; + break; + + case 'lt': + $token = '<'; + break; + + case 'le': + case 'lte': + $token = '<='; + break; + + case 'gt': + $token = '>'; + break; + + case 'ge': + case 'gte': + $token = '>='; + break; + + case 'and': + $token = '&&'; + break; + + case 'or': + $token = '||'; + break; + + case 'not': + $token = '!'; + break; + + case 'mod': + $token = '%'; + break; + + case '(': + array_push($is_arg_stack, $i); + break; + + case 'is': + /* If last token was a ')', we operate on the parenthesized + expression. The start of the expression is on the stack. + Otherwise, we operate on the last encountered token. */ + if ($tokens[$i-1] == ')') + $is_arg_start = array_pop($is_arg_stack); + else + $is_arg_start = $i-1; + /* Construct the argument for 'is' expression, so it knows + what to operate on. */ + $is_arg = implode(' ', array_slice($tokens, $is_arg_start, $i - $is_arg_start)); + + /* Pass all tokens from next one until the end to the + 'is' expression parsing function. The function will + return modified tokens, where the first one is the result + of the 'is' expression and the rest are the tokens it + didn't touch. */ + $new_tokens = $this->_parse_is_expr($is_arg, array_slice($tokens, $i+1)); + + /* Replace the old tokens with the new ones. */ + array_splice($tokens, $is_arg_start, count($tokens), $new_tokens); + + /* Adjust argument start so that it won't change from the + current position for the next iteration. */ + $i = $is_arg_start; + break; + + default: + if(preg_match('~^' . $this->_func_regexp . '$~', $token) ) { + // function call + if($this->security && + !in_array($token, $this->security_settings['IF_FUNCS'])) { + $this->_syntax_error("(secure mode) '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__); + } + } elseif(preg_match('~^' . $this->_var_regexp . '$~', $token) && (strpos('+-*/^%&|', substr($token, -1)) === false) && isset($tokens[$i+1]) && $tokens[$i+1] == '(') { + // variable function call + $this->_syntax_error("variable function call '$token' not allowed in if statement", E_USER_ERROR, __FILE__, __LINE__); + } elseif(preg_match('~^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . '*)$~', $token)) { + // object or variable + $token = $this->_parse_var_props($token); + } elseif(is_numeric($token)) { + // number, skip it + } else { + $this->_syntax_error("unidentified token '$token'", E_USER_ERROR, __FILE__, __LINE__); + } + break; + } + } + + if ($elseif) + return ''; + else + return ''; + } + + + function _compile_arg_list($type, $name, $attrs, &$cache_code) { + $arg_list = array(); + + if (isset($type) && isset($name) + && isset($this->_plugins[$type]) + && isset($this->_plugins[$type][$name]) + && empty($this->_plugins[$type][$name][4]) + && is_array($this->_plugins[$type][$name][5]) + ) { + /* we have a list of parameters that should be cached */ + $_cache_attrs = $this->_plugins[$type][$name][5]; + $_count = $this->_cache_attrs_count++; + $cache_code = "\$_cache_attrs =& \$this->_smarty_cache_attrs('$this->_cache_serial','$_count');"; + + } else { + /* no parameters are cached */ + $_cache_attrs = null; + } + + foreach ($attrs as $arg_name => $arg_value) { + if (is_bool($arg_value)) + $arg_value = $arg_value ? 'true' : 'false'; + if (is_null($arg_value)) + $arg_value = 'null'; + if ($_cache_attrs && in_array($arg_name, $_cache_attrs)) { + $arg_list[] = "'$arg_name' => (\$this->_cache_including) ? \$_cache_attrs['$arg_name'] : (\$_cache_attrs['$arg_name']=$arg_value)"; + } else { + $arg_list[] = "'$arg_name' => $arg_value"; + } + } + return $arg_list; + } + + /** + * Parse is expression + * + * @param string $is_arg + * @param array $tokens + * @return array + */ + function _parse_is_expr($is_arg, $tokens) + { + $expr_end = 0; + $negate_expr = false; + + if (($first_token = array_shift($tokens)) == 'not') { + $negate_expr = true; + $expr_type = array_shift($tokens); + } else + $expr_type = $first_token; + + switch ($expr_type) { + case 'even': + if (isset($tokens[$expr_end]) && $tokens[$expr_end] == 'by') { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "!(1 & ($is_arg / " . $this->_parse_var_props($expr_arg) . "))"; + } else + $expr = "!(1 & $is_arg)"; + break; + + case 'odd': + if (isset($tokens[$expr_end]) && $tokens[$expr_end] == 'by') { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "(1 & ($is_arg / " . $this->_parse_var_props($expr_arg) . "))"; + } else + $expr = "(1 & $is_arg)"; + break; + + case 'div': + if (@$tokens[$expr_end] == 'by') { + $expr_end++; + $expr_arg = $tokens[$expr_end++]; + $expr = "!($is_arg % " . $this->_parse_var_props($expr_arg) . ")"; + } else { + $this->_syntax_error("expecting 'by' after 'div'", E_USER_ERROR, __FILE__, __LINE__); + } + break; + + default: + $this->_syntax_error("unknown 'is' expression - '$expr_type'", E_USER_ERROR, __FILE__, __LINE__); + break; + } + + if ($negate_expr) { + $expr = "!($expr)"; + } + + array_splice($tokens, 0, $expr_end, $expr); + + return $tokens; + } + + + /** + * Parse attribute string + * + * @param string $tag_args + * @return array + */ + function _parse_attrs($tag_args) + { + + /* Tokenize tag attributes. */ + preg_match_all('~(?:' . $this->_obj_call_regexp . '|' . $this->_qstr_regexp . ' | (?>[^"\'=\s]+) + )+ | + [=] + ~x', $tag_args, $match); + $tokens = $match[0]; + + $attrs = array(); + /* Parse state: + 0 - expecting attribute name + 1 - expecting '=' + 2 - expecting attribute value (not '=') */ + $state = 0; + + foreach ($tokens as $token) { + switch ($state) { + case 0: + /* If the token is a valid identifier, we set attribute name + and go to state 1. */ + if (preg_match('~^\w+$~', $token)) { + $attr_name = $token; + $state = 1; + } else + $this->_syntax_error("invalid attribute name: '$token'", E_USER_ERROR, __FILE__, __LINE__); + break; + + case 1: + /* If the token is '=', then we go to state 2. */ + if ($token == '=') { + $state = 2; + } else + $this->_syntax_error("expecting '=' after attribute name '$last_token'", E_USER_ERROR, __FILE__, __LINE__); + break; + + case 2: + /* If token is not '=', we set the attribute value and go to + state 0. */ + if ($token != '=') { + /* We booleanize the token if it's a non-quoted possible + boolean value. */ + if (preg_match('~^(on|yes|true)$~', $token)) { + $token = 'true'; + } else if (preg_match('~^(off|no|false)$~', $token)) { + $token = 'false'; + } else if ($token == 'null') { + $token = 'null'; + } else if (preg_match('~^' . $this->_num_const_regexp . '|0[xX][0-9a-fA-F]+$~', $token)) { + /* treat integer literally */ + } else if (!preg_match('~^' . $this->_obj_call_regexp . '|' . $this->_var_regexp . '(?:' . $this->_mod_regexp . ')*$~', $token)) { + /* treat as a string, double-quote it escaping quotes */ + $token = '"'.addslashes($token).'"'; + } + + $attrs[$attr_name] = $token; + $state = 0; + } else + $this->_syntax_error("'=' cannot be an attribute value", E_USER_ERROR, __FILE__, __LINE__); + break; + } + $last_token = $token; + } + + if($state != 0) { + if($state == 1) { + $this->_syntax_error("expecting '=' after attribute name '$last_token'", E_USER_ERROR, __FILE__, __LINE__); + } else { + $this->_syntax_error("missing attribute value", E_USER_ERROR, __FILE__, __LINE__); + } + } + + $this->_parse_vars_props($attrs); + + return $attrs; + } + + /** + * compile multiple variables and section properties tokens into + * PHP code + * + * @param array $tokens + */ + function _parse_vars_props(&$tokens) + { + foreach($tokens as $key => $val) { + $tokens[$key] = $this->_parse_var_props($val); + } + } + + /** + * compile single variable and section properties token into + * PHP code + * + * @param string $val + * @param string $tag_attrs + * @return string + */ + function _parse_var_props($val) + { + $val = trim($val); + + if(preg_match('~^(' . $this->_obj_call_regexp . '|' . $this->_dvar_regexp . ')(' . $this->_mod_regexp . '*)$~', $val, $match)) { + // $ variable or object + $return = $this->_parse_var($match[1]); + $modifiers = $match[2]; + if (!empty($this->default_modifiers) && !preg_match('~(^|\|)smarty:nodefaults($|\|)~',$modifiers)) { + $_default_mod_string = implode('|',(array)$this->default_modifiers); + $modifiers = empty($modifiers) ? $_default_mod_string : $_default_mod_string . '|' . $modifiers; + } + $this->_parse_modifiers($return, $modifiers); + return $return; + } elseif (preg_match('~^' . $this->_db_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // double quoted text + preg_match('~^(' . $this->_db_qstr_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match); + $return = $this->_expand_quoted_text($match[1]); + if($match[2] != '') { + $this->_parse_modifiers($return, $match[2]); + } + return $return; + } + elseif(preg_match('~^' . $this->_num_const_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // numerical constant + preg_match('~^(' . $this->_num_const_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match); + if($match[2] != '') { + $this->_parse_modifiers($match[1], $match[2]); + return $match[1]; + } + } + elseif(preg_match('~^' . $this->_si_qstr_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // single quoted text + preg_match('~^(' . $this->_si_qstr_regexp . ')('. $this->_mod_regexp . '*)$~', $val, $match); + if($match[2] != '') { + $this->_parse_modifiers($match[1], $match[2]); + return $match[1]; + } + } + elseif(preg_match('~^' . $this->_cvar_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // config var + return $this->_parse_conf_var($val); + } + elseif(preg_match('~^' . $this->_svar_regexp . '(?:' . $this->_mod_regexp . '*)$~', $val)) { + // section var + return $this->_parse_section_prop($val); + } + elseif(!in_array($val, $this->_permitted_tokens) && !is_numeric($val)) { + // literal string + return $this->_expand_quoted_text('"' . strtr($val, array('\\' => '\\\\', '"' => '\\"')) .'"'); + } + return $val; + } + + /** + * expand quoted text with embedded variables + * + * @param string $var_expr + * @return string + */ + function _expand_quoted_text($var_expr) + { + // if contains unescaped $, expand it + if(preg_match_all('~(?:\`(?_dvar_guts_regexp . '(?:' . $this->_obj_ext_regexp . ')*\`)|(?:(?_parse_var(str_replace('`','',$_var)) . ')."'; + } + $var_expr = strtr($var_expr, $_replace); + $_return = preg_replace('~\.""|(?_dvar_math_regexp.'|'.$this->_qstr_regexp.')~', $var_expr, -1, PREG_SPLIT_DELIM_CAPTURE); + + if(count($_math_vars) > 1) { + $_first_var = ""; + $_complete_var = ""; + $_output = ""; + // simple check if there is any math, to stop recursion (due to modifiers with "xx % yy" as parameter) + foreach($_math_vars as $_k => $_math_var) { + $_math_var = $_math_vars[$_k]; + + if(!empty($_math_var) || is_numeric($_math_var)) { + // hit a math operator, so process the stuff which came before it + if(preg_match('~^' . $this->_dvar_math_regexp . '$~', $_math_var)) { + $_has_math = true; + if(!empty($_complete_var) || is_numeric($_complete_var)) { + $_output .= $this->_parse_var($_complete_var); + } + + // just output the math operator to php + $_output .= $_math_var; + + if(empty($_first_var)) + $_first_var = $_complete_var; + + $_complete_var = ""; + } else { + $_complete_var .= $_math_var; + } + } + } + if($_has_math) { + if(!empty($_complete_var) || is_numeric($_complete_var)) + $_output .= $this->_parse_var($_complete_var); + + // get the modifiers working (only the last var from math + modifier is left) + $var_expr = $_complete_var; + } + } + + // prevent cutting of first digit in the number (we _definitly_ got a number if the first char is a digit) + if(is_numeric(substr($var_expr, 0, 1))) + $_var_ref = $var_expr; + else + $_var_ref = substr($var_expr, 1); + + if(!$_has_math) { + + // get [foo] and .foo and ->foo and (...) pieces + preg_match_all('~(?:^\w+)|' . $this->_obj_params_regexp . '|(?:' . $this->_var_bracket_regexp . ')|->\$?\w+|\.\$?\w+|\S+~', $_var_ref, $match); + + $_indexes = $match[0]; + $_var_name = array_shift($_indexes); + + /* Handle $smarty.* variable references as a special case. */ + if ($_var_name == 'smarty') { + /* + * If the reference could be compiled, use the compiled output; + * otherwise, fall back on the $smarty variable generated at + * run-time. + */ + if (($smarty_ref = $this->_compile_smarty_ref($_indexes)) !== null) { + $_output = $smarty_ref; + } else { + $_var_name = substr(array_shift($_indexes), 1); + $_output = "\$this->_smarty_vars['$_var_name']"; + } + } elseif(is_numeric($_var_name) && is_numeric(substr($var_expr, 0, 1))) { + // because . is the operator for accessing arrays thru inidizes we need to put it together again for floating point numbers + if(count($_indexes) > 0) + { + $_var_name .= implode("", $_indexes); + $_indexes = array(); + } + $_output = $_var_name; + } else { + $_output = "\$this->_tpl_vars['$_var_name']"; + } + + foreach ($_indexes as $_index) { + if (substr($_index, 0, 1) == '[') { + $_index = substr($_index, 1, -1); + if (is_numeric($_index)) { + $_output .= "[$_index]"; + } elseif (substr($_index, 0, 1) == '$') { + if (strpos($_index, '.') !== false) { + $_output .= '[' . $this->_parse_var($_index) . ']'; + } else { + $_output .= "[\$this->_tpl_vars['" . substr($_index, 1) . "']]"; + } + } else { + $_var_parts = explode('.', $_index); + $_var_section = $_var_parts[0]; + $_var_section_prop = isset($_var_parts[1]) ? $_var_parts[1] : 'index'; + $_output .= "[\$this->_sections['$_var_section']['$_var_section_prop']]"; + } + } else if (substr($_index, 0, 1) == '.') { + if (substr($_index, 1, 1) == '$') + $_output .= "[\$this->_tpl_vars['" . substr($_index, 2) . "']]"; + else + $_output .= "['" . substr($_index, 1) . "']"; + } else if (substr($_index,0,2) == '->') { + if(substr($_index,2,2) == '__') { + $this->_syntax_error('call to internal object members is not allowed', E_USER_ERROR, __FILE__, __LINE__); + } elseif($this->security && substr($_index, 2, 1) == '_') { + $this->_syntax_error('(secure) call to private object member is not allowed', E_USER_ERROR, __FILE__, __LINE__); + } elseif (substr($_index, 2, 1) == '$') { + if ($this->security) { + $this->_syntax_error('(secure) call to dynamic object member is not allowed', E_USER_ERROR, __FILE__, __LINE__); + } else { + $_output .= '->{(($_var=$this->_tpl_vars[\''.substr($_index,3).'\']) && substr($_var,0,2)!=\'__\') ? $_var : $this->trigger_error("cannot access property \\"$_var\\"")}'; + } + } else { + $_output .= $_index; + } + } elseif (substr($_index, 0, 1) == '(') { + $_index = $this->_parse_parenth_args($_index); + $_output .= $_index; + } else { + $_output .= $_index; + } + } + } + + return $_output; + } + + /** + * parse arguments in function call parenthesis + * + * @param string $parenth_args + * @return string + */ + function _parse_parenth_args($parenth_args) + { + preg_match_all('~' . $this->_param_regexp . '~',$parenth_args, $match); + $orig_vals = $match = $match[0]; + $this->_parse_vars_props($match); + $replace = array(); + for ($i = 0, $count = count($match); $i < $count; $i++) { + $replace[$orig_vals[$i]] = $match[$i]; + } + return strtr($parenth_args, $replace); + } + + /** + * parse configuration variable expression into PHP code + * + * @param string $conf_var_expr + */ + function _parse_conf_var($conf_var_expr) + { + $parts = explode('|', $conf_var_expr, 2); + $var_ref = $parts[0]; + $modifiers = isset($parts[1]) ? $parts[1] : ''; + + $var_name = substr($var_ref, 1, -1); + + $output = "\$this->_config[0]['vars']['$var_name']"; + + $this->_parse_modifiers($output, $modifiers); + + return $output; + } + + /** + * parse section property expression into PHP code + * + * @param string $section_prop_expr + * @return string + */ + function _parse_section_prop($section_prop_expr) + { + $parts = explode('|', $section_prop_expr, 2); + $var_ref = $parts[0]; + $modifiers = isset($parts[1]) ? $parts[1] : ''; + + preg_match('!%(\w+)\.(\w+)%!', $var_ref, $match); + $section_name = $match[1]; + $prop_name = $match[2]; + + $output = "\$this->_sections['$section_name']['$prop_name']"; + + $this->_parse_modifiers($output, $modifiers); + + return $output; + } + + + /** + * parse modifier chain into PHP code + * + * sets $output to parsed modified chain + * @param string $output + * @param string $modifier_string + */ + function _parse_modifiers(&$output, $modifier_string) + { + preg_match_all('~\|(@?\w+)((?>:(?:'. $this->_qstr_regexp . '|[^|]+))*)~', '|' . $modifier_string, $_match); + list(, $_modifiers, $modifier_arg_strings) = $_match; + + for ($_i = 0, $_for_max = count($_modifiers); $_i < $_for_max; $_i++) { + $_modifier_name = $_modifiers[$_i]; + + if($_modifier_name == 'smarty') { + // skip smarty modifier + continue; + } + + preg_match_all('~:(' . $this->_qstr_regexp . '|[^:]+)~', $modifier_arg_strings[$_i], $_match); + $_modifier_args = $_match[1]; + + if (substr($_modifier_name, 0, 1) == '@') { + $_map_array = false; + $_modifier_name = substr($_modifier_name, 1); + } else { + $_map_array = true; + } + + if (empty($this->_plugins['modifier'][$_modifier_name]) + && !$this->_get_plugin_filepath('modifier', $_modifier_name) + && function_exists($_modifier_name)) { + if ($this->security && !in_array($_modifier_name, $this->security_settings['MODIFIER_FUNCS'])) { + $this->_trigger_fatal_error("[plugin] (secure mode) modifier '$_modifier_name' is not allowed" , $this->_current_file, $this->_current_line_no, __FILE__, __LINE__); + } else { + $this->_plugins['modifier'][$_modifier_name] = array($_modifier_name, null, null, false); + } + } + $this->_add_plugin('modifier', $_modifier_name); + + $this->_parse_vars_props($_modifier_args); + + if($_modifier_name == 'default') { + // supress notifications of default modifier vars and args + if(substr($output, 0, 1) == '$') { + $output = '@' . $output; + } + if(isset($_modifier_args[0]) && substr($_modifier_args[0], 0, 1) == '$') { + $_modifier_args[0] = '@' . $_modifier_args[0]; + } + } + if (count($_modifier_args) > 0) + $_modifier_args = ', '.implode(', ', $_modifier_args); + else + $_modifier_args = ''; + + if ($_map_array) { + $output = "((is_array(\$_tmp=$output)) ? \$this->_run_mod_handler('$_modifier_name', true, \$_tmp$_modifier_args) : " . $this->_compile_plugin_call('modifier', $_modifier_name) . "(\$_tmp$_modifier_args))"; + + } else { + + $output = $this->_compile_plugin_call('modifier', $_modifier_name)."($output$_modifier_args)"; + + } + } + } + + + /** + * add plugin + * + * @param string $type + * @param string $name + * @param boolean? $delayed_loading + */ + function _add_plugin($type, $name, $delayed_loading = null) + { + if (!isset($this->_plugin_info[$type])) { + $this->_plugin_info[$type] = array(); + } + if (!isset($this->_plugin_info[$type][$name])) { + $this->_plugin_info[$type][$name] = array($this->_current_file, + $this->_current_line_no, + $delayed_loading); + } + } + + + /** + * Compiles references of type $smarty.foo + * + * @param string $indexes + * @return string + */ + function _compile_smarty_ref(&$indexes) + { + /* Extract the reference name. */ + $_ref = substr($indexes[0], 1); + foreach($indexes as $_index_no=>$_index) { + if (substr($_index, 0, 1) != '.' && $_index_no<2 || !preg_match('~^(\.|\[|->)~', $_index)) { + $this->_syntax_error('$smarty' . implode('', array_slice($indexes, 0, 2)) . ' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__); + } + } + + switch ($_ref) { + case 'now': + $compiled_ref = 'time()'; + $_max_index = 1; + break; + + case 'foreach': + array_shift($indexes); + $_var = $this->_parse_var_props(substr($indexes[0], 1)); + $_propname = substr($indexes[1], 1); + $_max_index = 1; + switch ($_propname) { + case 'index': + array_shift($indexes); + $compiled_ref = "(\$this->_foreach[$_var]['iteration']-1)"; + break; + + case 'first': + array_shift($indexes); + $compiled_ref = "(\$this->_foreach[$_var]['iteration'] <= 1)"; + break; + + case 'last': + array_shift($indexes); + $compiled_ref = "(\$this->_foreach[$_var]['iteration'] == \$this->_foreach[$_var]['total'])"; + break; + + case 'show': + array_shift($indexes); + $compiled_ref = "(\$this->_foreach[$_var]['total'] > 0)"; + break; + + default: + unset($_max_index); + $compiled_ref = "\$this->_foreach[$_var]"; + } + break; + + case 'section': + array_shift($indexes); + $_var = $this->_parse_var_props(substr($indexes[0], 1)); + $compiled_ref = "\$this->_sections[$_var]"; + break; + + case 'get': + $compiled_ref = ($this->request_use_auto_globals) ? '$_GET' : "\$GLOBALS['HTTP_GET_VARS']"; + break; + + case 'post': + $compiled_ref = ($this->request_use_auto_globals) ? '$_POST' : "\$GLOBALS['HTTP_POST_VARS']"; + break; + + case 'cookies': + $compiled_ref = ($this->request_use_auto_globals) ? '$_COOKIE' : "\$GLOBALS['HTTP_COOKIE_VARS']"; + break; + + case 'env': + $compiled_ref = ($this->request_use_auto_globals) ? '$_ENV' : "\$GLOBALS['HTTP_ENV_VARS']"; + break; + + case 'server': + $compiled_ref = ($this->request_use_auto_globals) ? '$_SERVER' : "\$GLOBALS['HTTP_SERVER_VARS']"; + break; + + case 'session': + $compiled_ref = ($this->request_use_auto_globals) ? '$_SESSION' : "\$GLOBALS['HTTP_SESSION_VARS']"; + break; + + /* + * These cases are handled either at run-time or elsewhere in the + * compiler. + */ + case 'request': + if ($this->request_use_auto_globals) { + $compiled_ref = '$_REQUEST'; + break; + } else { + $this->_init_smarty_vars = true; + } + return null; + + case 'capture': + return null; + + case 'template': + $compiled_ref = "'$this->_current_file'"; + $_max_index = 1; + break; + + case 'version': + $compiled_ref = "'$this->_version'"; + $_max_index = 1; + break; + + case 'const': + if ($this->security && !$this->security_settings['ALLOW_CONSTANTS']) { + $this->_syntax_error("(secure mode) constants not permitted", + E_USER_WARNING, __FILE__, __LINE__); + return; + } + array_shift($indexes); + if (preg_match('!^\.\w+$!', $indexes[0])) { + $compiled_ref = '@' . substr($indexes[0], 1); + } else { + $_val = $this->_parse_var_props(substr($indexes[0], 1)); + $compiled_ref = '@constant(' . $_val . ')'; + } + $_max_index = 1; + break; + + case 'config': + $compiled_ref = "\$this->_config[0]['vars']"; + $_max_index = 3; + break; + + case 'ldelim': + $compiled_ref = "'$this->left_delimiter'"; + break; + + case 'rdelim': + $compiled_ref = "'$this->right_delimiter'"; + break; + + default: + $this->_syntax_error('$smarty.' . $_ref . ' is an unknown reference', E_USER_ERROR, __FILE__, __LINE__); + break; + } + + if (isset($_max_index) && count($indexes) > $_max_index) { + $this->_syntax_error('$smarty' . implode('', $indexes) .' is an invalid reference', E_USER_ERROR, __FILE__, __LINE__); + } + + array_shift($indexes); + return $compiled_ref; + } + + /** + * compiles call to plugin of type $type with name $name + * returns a string containing the function-name or method call + * without the paramter-list that would have follow to make the + * call valid php-syntax + * + * @param string $type + * @param string $name + * @return string + */ + function _compile_plugin_call($type, $name) { + if (isset($this->_plugins[$type][$name])) { + /* plugin loaded */ + if (is_array($this->_plugins[$type][$name][0])) { + return ((is_object($this->_plugins[$type][$name][0][0])) ? + "\$this->_plugins['$type']['$name'][0][0]->" /* method callback */ + : (string)($this->_plugins[$type][$name][0][0]).'::' /* class callback */ + ). $this->_plugins[$type][$name][0][1]; + + } else { + /* function callback */ + return $this->_plugins[$type][$name][0]; + + } + } else { + /* plugin not loaded -> auto-loadable-plugin */ + return 'smarty_'.$type.'_'.$name; + + } + } + + /** + * load pre- and post-filters + */ + function _load_filters() + { + if (count($this->_plugins['prefilter']) > 0) { + foreach ($this->_plugins['prefilter'] as $filter_name => $prefilter) { + if ($prefilter === false) { + unset($this->_plugins['prefilter'][$filter_name]); + $_params = array('plugins' => array(array('prefilter', $filter_name, null, null, false))); + require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); + smarty_core_load_plugins($_params, $this); + } + } + } + if (count($this->_plugins['postfilter']) > 0) { + foreach ($this->_plugins['postfilter'] as $filter_name => $postfilter) { + if ($postfilter === false) { + unset($this->_plugins['postfilter'][$filter_name]); + $_params = array('plugins' => array(array('postfilter', $filter_name, null, null, false))); + require_once(SMARTY_CORE_DIR . 'core.load_plugins.php'); + smarty_core_load_plugins($_params, $this); + } + } + } + } + + + /** + * Quote subpattern references + * + * @param string $string + * @return string + */ + function _quote_replace($string) + { + return strtr($string, array('\\' => '\\\\', '$' => '\\$')); + } + + /** + * display Smarty syntax error + * + * @param string $error_msg + * @param integer $error_type + * @param string $file + * @param integer $line + */ + function _syntax_error($error_msg, $error_type = E_USER_ERROR, $file=null, $line=null) + { + $this->_trigger_fatal_error("syntax error: $error_msg", $this->_current_file, $this->_current_line_no, $file, $line, $error_type); + } + + + /** + * check if the compilation changes from cacheable to + * non-cacheable state with the beginning of the current + * plugin. return php-code to reflect the transition. + * @return string + */ + function _push_cacheable_state($type, $name) { + $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4]; + if ($_cacheable + || 0<$this->_cacheable_state++) return ''; + if (!isset($this->_cache_serial)) $this->_cache_serial = md5(uniqid('Smarty')); + $_ret = 'if ($this->caching && !$this->_cache_including): echo \'{nocache:' + . $this->_cache_serial . '#' . $this->_nocache_count + . '}\'; endif;'; + return $_ret; + } + + + /** + * check if the compilation changes from non-cacheable to + * cacheable state with the end of the current plugin return + * php-code to reflect the transition. + * @return string + */ + function _pop_cacheable_state($type, $name) { + $_cacheable = !isset($this->_plugins[$type][$name]) || $this->_plugins[$type][$name][4]; + if ($_cacheable + || --$this->_cacheable_state>0) return ''; + return 'if ($this->caching && !$this->_cache_including): echo \'{/nocache:' + . $this->_cache_serial . '#' . ($this->_nocache_count++) + . '}\'; endif;'; + } + + + /** + * push opening tag-name, file-name and line-number on the tag-stack + * @param string the opening tag's name + */ + function _push_tag($open_tag) + { + array_push($this->_tag_stack, array($open_tag, $this->_current_line_no)); + } + + /** + * pop closing tag-name + * raise an error if this stack-top doesn't match with the closing tag + * @param string the closing tag's name + * @return string the opening tag's name + */ + function _pop_tag($close_tag) + { + $message = ''; + if (count($this->_tag_stack)>0) { + list($_open_tag, $_line_no) = array_pop($this->_tag_stack); + if ($close_tag == $_open_tag) { + return $_open_tag; + } + if ($close_tag == 'if' && ($_open_tag == 'else' || $_open_tag == 'elseif' )) { + return $this->_pop_tag($close_tag); + } + if ($close_tag == 'section' && $_open_tag == 'sectionelse') { + $this->_pop_tag($close_tag); + return $_open_tag; + } + if ($close_tag == 'foreach' && $_open_tag == 'foreachelse') { + $this->_pop_tag($close_tag); + return $_open_tag; + } + if ($_open_tag == 'else' || $_open_tag == 'elseif') { + $_open_tag = 'if'; + } elseif ($_open_tag == 'sectionelse') { + $_open_tag = 'section'; + } elseif ($_open_tag == 'foreachelse') { + $_open_tag = 'foreach'; + } + $message = " expected {/$_open_tag} (opened line $_line_no)."; + } + $this->_syntax_error("mismatched tag {/$close_tag}.$message", + E_USER_ERROR, __FILE__, __LINE__); + } + +} + +/** + * compare to values by their string length + * + * @access private + * @param string $a + * @param string $b + * @return 0|-1|1 + */ +function _smarty_sort_length($a, $b) +{ + if($a == $b) + return 0; + + if(strlen($a) == strlen($b)) + return ($a > $b) ? -1 : 1; + + return (strlen($a) > strlen($b)) ? -1 : 1; +} + + +/* vim: set et: */ + +?> diff --git a/includes/onyx/templates/libs/debug.tpl b/includes/onyx/templates/libs/debug.tpl new file mode 100644 index 0000000..c05ef5d --- /dev/null +++ b/includes/onyx/templates/libs/debug.tpl @@ -0,0 +1,157 @@ +{* Smarty *} +{* debug.tpl, last updated version 2.1.0 *} +{assign_debug_info} +{capture assign=debug_output} + + + + Smarty Debug Console +{literal} + +{/literal} + + + +

      Smarty Debug Console

      + +

      included templates & config files (load time in seconds)

      + +
      +{section name=templates loop=$_debug_tpls} + {section name=indent loop=$_debug_tpls[templates].depth}   {/section} + + {$_debug_tpls[templates].filename|escape:html} + {if isset($_debug_tpls[templates].exec_time)} + + ({$_debug_tpls[templates].exec_time|string_format:"%.5f"}) + {if %templates.index% eq 0}(total){/if} + + {/if} +
      +{sectionelse} +

      no templates included

      +{/section} +
      + +

      assigned template variables

      + + + {section name=vars loop=$_debug_keys} + + + + {sectionelse} + + {/section} +
      {ldelim}${$_debug_keys[vars]|escape:'html'}{rdelim}{$_debug_vals[vars]|@debug_print_var}

      no template variables assigned

      + +

      assigned config file variables (outer template scope)

      + + + {section name=config_vars loop=$_debug_config_keys} + + + + {sectionelse} + + {/section} +
      {ldelim}#{$_debug_config_keys[config_vars]|escape:'html'}#{rdelim}{$_debug_config_vals[config_vars]|@debug_print_var}

      no config vars assigned

      + + +{/capture} +{if isset($_smarty_debug_output) and $_smarty_debug_output eq "html"} + {$debug_output} +{else} + +{/if} \ No newline at end of file diff --git a/includes/onyx/templates/libs/internals/core.assemble_plugin_filepath.php b/includes/onyx/templates/libs/internals/core.assemble_plugin_filepath.php new file mode 100644 index 0000000..690d3dd --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.assemble_plugin_filepath.php @@ -0,0 +1,67 @@ +plugins_dir as $_plugin_dir) { + + $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; + + // see if path is relative + if (!preg_match("/^([\/\\\\]|[a-zA-Z]:[\/\\\\])/", $_plugin_dir)) { + $_relative_paths[] = $_plugin_dir; + // relative path, see if it is in the SMARTY_DIR + if (@is_readable(SMARTY_DIR . $_plugin_filepath)) { + $_return = SMARTY_DIR . $_plugin_filepath; + break; + } + } + // try relative to cwd (or absolute) + if (@is_readable($_plugin_filepath)) { + $_return = $_plugin_filepath; + break; + } + } + + if($_return === false) { + // still not found, try PHP include_path + if(isset($_relative_paths)) { + foreach ((array)$_relative_paths as $_plugin_dir) { + + $_plugin_filepath = $_plugin_dir . DIRECTORY_SEPARATOR . $_plugin_filename; + + $_params = array('file_path' => $_plugin_filepath); + require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); + if(smarty_core_get_include_path($_params, $smarty)) { + $_return = $_params['new_file_path']; + break; + } + } + } + } + $_filepaths_cache[$_plugin_filename] = $_return; + return $_return; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.assign_smarty_interface.php b/includes/onyx/templates/libs/internals/core.assign_smarty_interface.php new file mode 100644 index 0000000..7e65a73 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.assign_smarty_interface.php @@ -0,0 +1,43 @@ + + * Name: assign_smarty_interface
      + * Purpose: assign the $smarty interface variable + * @param array Format: null + * @param Smarty + */ +function smarty_core_assign_smarty_interface($params, &$smarty) +{ + if (isset($smarty->_smarty_vars) && isset($smarty->_smarty_vars['request'])) { + return; + } + + $_globals_map = array('g' => 'HTTP_GET_VARS', + 'p' => 'HTTP_POST_VARS', + 'c' => 'HTTP_COOKIE_VARS', + 's' => 'HTTP_SERVER_VARS', + 'e' => 'HTTP_ENV_VARS'); + + $_smarty_vars_request = array(); + + foreach (preg_split('!!', strtolower($smarty->request_vars_order)) as $_c) { + if (isset($_globals_map[$_c])) { + $_smarty_vars_request = array_merge($_smarty_vars_request, $GLOBALS[$_globals_map[$_c]]); + } + } + $_smarty_vars_request = @array_merge($_smarty_vars_request, $GLOBALS['HTTP_SESSION_VARS']); + + $smarty->_smarty_vars['request'] = $_smarty_vars_request; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.create_dir_structure.php b/includes/onyx/templates/libs/internals/core.create_dir_structure.php new file mode 100644 index 0000000..3eecc49 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.create_dir_structure.php @@ -0,0 +1,79 @@ +_dir_perms) && !is_dir($_new_dir)) { + $smarty->trigger_error("problem creating directory '" . $_new_dir . "'"); + return false; + } + $_new_dir .= '/'; + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.display_debug_console.php b/includes/onyx/templates/libs/internals/core.display_debug_console.php new file mode 100644 index 0000000..1a80f39 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.display_debug_console.php @@ -0,0 +1,61 @@ + + * Name: display_debug_console
      + * Purpose: display the javascript debug console window + * @param array Format: null + * @param Smarty + */ +function smarty_core_display_debug_console($params, &$smarty) +{ + // we must force compile the debug template in case the environment + // changed between separate applications. + + if(empty($smarty->debug_tpl)) { + // set path to debug template from SMARTY_DIR + $smarty->debug_tpl = SMARTY_DIR . 'debug.tpl'; + if($smarty->security && is_file($smarty->debug_tpl)) { + $smarty->secure_dir[] = realpath($smarty->debug_tpl); + } + $smarty->debug_tpl = 'file:' . SMARTY_DIR . 'debug.tpl'; + } + + $_ldelim_orig = $smarty->left_delimiter; + $_rdelim_orig = $smarty->right_delimiter; + + $smarty->left_delimiter = '{'; + $smarty->right_delimiter = '}'; + + $_compile_id_orig = $smarty->_compile_id; + $smarty->_compile_id = null; + + $_compile_path = $smarty->_get_compile_path($smarty->debug_tpl); + if ($smarty->_compile_resource($smarty->debug_tpl, $_compile_path)) + { + ob_start(); + $smarty->_include($_compile_path); + $_results = ob_get_contents(); + ob_end_clean(); + } else { + $_results = ''; + } + + $smarty->_compile_id = $_compile_id_orig; + + $smarty->left_delimiter = $_ldelim_orig; + $smarty->right_delimiter = $_rdelim_orig; + + return $_results; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.get_include_path.php b/includes/onyx/templates/libs/internals/core.get_include_path.php new file mode 100644 index 0000000..4343241 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.get_include_path.php @@ -0,0 +1,44 @@ + diff --git a/includes/onyx/templates/libs/internals/core.get_microtime.php b/includes/onyx/templates/libs/internals/core.get_microtime.php new file mode 100644 index 0000000..f1a28e0 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.get_microtime.php @@ -0,0 +1,23 @@ + diff --git a/includes/onyx/templates/libs/internals/core.get_php_resource.php b/includes/onyx/templates/libs/internals/core.get_php_resource.php new file mode 100644 index 0000000..786d4e7 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.get_php_resource.php @@ -0,0 +1,80 @@ +trusted_dir; + $smarty->_parse_resource_name($params, $smarty); + + /* + * Find out if the resource exists. + */ + + if ($params['resource_type'] == 'file') { + $_readable = false; + if(file_exists($params['resource_name']) && is_readable($params['resource_name'])) { + $_readable = true; + } else { + // test for file in include_path + $_params = array('file_path' => $params['resource_name']); + require_once(SMARTY_CORE_DIR . 'core.get_include_path.php'); + if(smarty_core_get_include_path($_params, $smarty)) { + $_include_path = $_params['new_file_path']; + $_readable = true; + } + } + } else if ($params['resource_type'] != 'file') { + $_template_source = null; + $_readable = is_callable($smarty->_plugins['resource'][$params['resource_type']][0][0]) + && call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][0], + array($params['resource_name'], &$_template_source, &$smarty)); + } + + /* + * Set the error function, depending on which class calls us. + */ + if (method_exists($smarty, '_syntax_error')) { + $_error_funcc = '_syntax_error'; + } else { + $_error_funcc = 'trigger_error'; + } + + if ($_readable) { + if ($smarty->security) { + require_once(SMARTY_CORE_DIR . 'core.is_trusted.php'); + if (!smarty_core_is_trusted($params, $smarty)) { + $smarty->$_error_funcc('(secure mode) ' . $params['resource_type'] . ':' . $params['resource_name'] . ' is not trusted'); + return false; + } + } + } else { + $smarty->$_error_funcc($params['resource_type'] . ':' . $params['resource_name'] . ' is not readable'); + return false; + } + + if ($params['resource_type'] == 'file') { + $params['php_resource'] = $params['resource_name']; + } else { + $params['php_resource'] = $_template_source; + } + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.is_secure.php b/includes/onyx/templates/libs/internals/core.is_secure.php new file mode 100644 index 0000000..d54abd4 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.is_secure.php @@ -0,0 +1,59 @@ +security || $smarty->security_settings['INCLUDE_ANY']) { + return true; + } + + if ($params['resource_type'] == 'file') { + $_rp = realpath($params['resource_name']); + if (isset($params['resource_base_path'])) { + foreach ((array)$params['resource_base_path'] as $curr_dir) { + if ( ($_cd = realpath($curr_dir)) !== false && + strncmp($_rp, $_cd, strlen($_cd)) == 0 && + substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { + return true; + } + } + } + if (!empty($smarty->secure_dir)) { + foreach ((array)$smarty->secure_dir as $curr_dir) { + if ( ($_cd = realpath($curr_dir)) !== false) { + if($_cd == $_rp) { + return true; + } elseif (strncmp($_rp, $_cd, strlen($_cd)) == 0 && + substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR) { + return true; + } + } + } + } + } else { + // resource is not on local file system + return call_user_func_array( + $smarty->_plugins['resource'][$params['resource_type']][0][2], + array($params['resource_name'], &$smarty)); + } + + return false; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.is_trusted.php b/includes/onyx/templates/libs/internals/core.is_trusted.php new file mode 100644 index 0000000..4299731 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.is_trusted.php @@ -0,0 +1,47 @@ +trusted_dir)) { + $_rp = realpath($params['resource_name']); + foreach ((array)$smarty->trusted_dir as $curr_dir) { + if (!empty($curr_dir) && is_readable ($curr_dir)) { + $_cd = realpath($curr_dir); + if (strncmp($_rp, $_cd, strlen($_cd)) == 0 + && substr($_rp, strlen($_cd), 1) == DIRECTORY_SEPARATOR ) { + $_smarty_trusted = true; + break; + } + } + } + } + + } else { + // resource is not on local file system + $_smarty_trusted = call_user_func_array($smarty->_plugins['resource'][$params['resource_type']][0][3], + array($params['resource_name'], $smarty)); + } + + return $_smarty_trusted; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.load_plugins.php b/includes/onyx/templates/libs/internals/core.load_plugins.php new file mode 100644 index 0000000..6db1dc5 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.load_plugins.php @@ -0,0 +1,125 @@ +_plugins[$_type][$_name]; + + /* + * We do not load plugin more than once for each instance of Smarty. + * The following code checks for that. The plugin can also be + * registered dynamically at runtime, in which case template file + * and line number will be unknown, so we fill them in. + * + * The final element of the info array is a flag that indicates + * whether the dynamically registered plugin function has been + * checked for existence yet or not. + */ + if (isset($_plugin)) { + if (empty($_plugin[3])) { + if (!is_callable($_plugin[0])) { + $smarty->_trigger_fatal_error("[plugin] $_type '$_name' is not implemented", $_tpl_file, $_tpl_line, __FILE__, __LINE__); + } else { + $_plugin[1] = $_tpl_file; + $_plugin[2] = $_tpl_line; + $_plugin[3] = true; + if (!isset($_plugin[4])) $_plugin[4] = true; /* cacheable */ + } + } + continue; + } else if ($_type == 'insert') { + /* + * For backwards compatibility, we check for insert functions in + * the symbol table before trying to load them as a plugin. + */ + $_plugin_func = 'insert_' . $_name; + if (function_exists($_plugin_func)) { + $_plugin = array($_plugin_func, $_tpl_file, $_tpl_line, true, false); + continue; + } + } + + $_plugin_file = $smarty->_get_plugin_filepath($_type, $_name); + + if (! $_found = ($_plugin_file != false)) { + $_message = "could not load plugin file '$_type.$_name.php'\n"; + } + + /* + * If plugin file is found, it -must- provide the properly named + * plugin function. In case it doesn't, simply output the error and + * do not fall back on any other method. + */ + if ($_found) { + include_once $_plugin_file; + + $_plugin_func = 'smarty_' . $_type . '_' . $_name; + if (!function_exists($_plugin_func)) { + $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", $_tpl_file, $_tpl_line, __FILE__, __LINE__); + continue; + } + } + /* + * In case of insert plugins, their code may be loaded later via + * 'script' attribute. + */ + else if ($_type == 'insert' && $_delayed_loading) { + $_plugin_func = 'smarty_' . $_type . '_' . $_name; + $_found = true; + } + + /* + * Plugin specific processing and error checking. + */ + if (!$_found) { + if ($_type == 'modifier') { + /* + * In case modifier falls back on using PHP functions + * directly, we only allow those specified in the security + * context. + */ + if ($smarty->security && !in_array($_name, $smarty->security_settings['MODIFIER_FUNCS'])) { + $_message = "(secure mode) modifier '$_name' is not allowed"; + } else { + if (!function_exists($_name)) { + $_message = "modifier '$_name' is not implemented"; + } else { + $_plugin_func = $_name; + $_found = true; + } + } + } else if ($_type == 'function') { + /* + * This is a catch-all situation. + */ + $_message = "unknown tag - '$_name'"; + } + } + + if ($_found) { + $smarty->_plugins[$_type][$_name] = array($_plugin_func, $_tpl_file, $_tpl_line, true, true); + } else { + // output error + $smarty->_trigger_fatal_error('[plugin] ' . $_message, $_tpl_file, $_tpl_line, __FILE__, __LINE__); + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.load_resource_plugin.php b/includes/onyx/templates/libs/internals/core.load_resource_plugin.php new file mode 100644 index 0000000..a7d37d1 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.load_resource_plugin.php @@ -0,0 +1,74 @@ +_plugins['resource'][$params['type']]; + if (isset($_plugin)) { + if (!$_plugin[1] && count($_plugin[0])) { + $_plugin[1] = true; + foreach ($_plugin[0] as $_plugin_func) { + if (!is_callable($_plugin_func)) { + $_plugin[1] = false; + break; + } + } + } + + if (!$_plugin[1]) { + $smarty->_trigger_fatal_error("[plugin] resource '" . $params['type'] . "' is not implemented", null, null, __FILE__, __LINE__); + } + + return; + } + + $_plugin_file = $smarty->_get_plugin_filepath('resource', $params['type']); + $_found = ($_plugin_file != false); + + if ($_found) { /* + * If the plugin file is found, it -must- provide the properly named + * plugin functions. + */ + include_once($_plugin_file); + + /* + * Locate functions that we require the plugin to provide. + */ + $_resource_ops = array('source', 'timestamp', 'secure', 'trusted'); + $_resource_funcs = array(); + foreach ($_resource_ops as $_op) { + $_plugin_func = 'smarty_resource_' . $params['type'] . '_' . $_op; + if (!function_exists($_plugin_func)) { + $smarty->_trigger_fatal_error("[plugin] function $_plugin_func() not found in $_plugin_file", null, null, __FILE__, __LINE__); + return; + } else { + $_resource_funcs[] = $_plugin_func; + } + } + + $smarty->_plugins['resource'][$params['type']] = array($_resource_funcs, true); + } +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.process_cached_inserts.php b/includes/onyx/templates/libs/internals/core.process_cached_inserts.php new file mode 100644 index 0000000..1d78edd --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.process_cached_inserts.php @@ -0,0 +1,71 @@ +_smarty_md5.'{insert_cache (.*)}'.$smarty->_smarty_md5.'!Uis', + $params['results'], $match); + list($cached_inserts, $insert_args) = $match; + + for ($i = 0, $for_max = count($cached_inserts); $i < $for_max; $i++) { + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + $args = unserialize($insert_args[$i]); + $name = $args['name']; + + if (isset($args['script'])) { + $_params = array('resource_name' => $smarty->_dequote($args['script'])); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + if(!smarty_core_get_php_resource($_params, $smarty)) { + return false; + } + $resource_type = $_params['resource_type']; + $php_resource = $_params['php_resource']; + + + if ($resource_type == 'file') { + $smarty->_include($php_resource, true); + } else { + $smarty->_eval($php_resource); + } + } + + $function_name = $smarty->_plugins['insert'][$name][0]; + if (empty($args['assign'])) { + $replace = $function_name($args, $smarty); + } else { + $smarty->assign($args['assign'], $function_name($args, $smarty)); + $replace = ''; + } + + $params['results'] = substr_replace($params['results'], $replace, strpos($params['results'], $cached_inserts[$i]), strlen($cached_inserts[$i])); + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'insert', + 'filename' => 'insert_'.$name, + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $debug_start_time); + } + } + + return $params['results']; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.process_compiled_include.php b/includes/onyx/templates/libs/internals/core.process_compiled_include.php new file mode 100644 index 0000000..d539423 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.process_compiled_include.php @@ -0,0 +1,37 @@ +_cache_including; + $smarty->_cache_including = true; + + $_return = $params['results']; + + foreach ($smarty->_cache_info['cache_serials'] as $_include_file_path=>$_cache_serial) { + $smarty->_include($_include_file_path, true); + } + + foreach ($smarty->_cache_serials as $_include_file_path=>$_cache_serial) { + $_return = preg_replace_callback('!(\{nocache\:('.$_cache_serial.')#(\d+)\})!s', + array(&$smarty, '_process_compiled_include_callback'), + $_return); + } + $smarty->_cache_including = $_cache_including; + return $_return; +} + +?> diff --git a/includes/onyx/templates/libs/internals/core.read_cache_file.php b/includes/onyx/templates/libs/internals/core.read_cache_file.php new file mode 100644 index 0000000..c60e113 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.read_cache_file.php @@ -0,0 +1,101 @@ +force_compile) { + // force compile enabled, always regenerate + return false; + } + + if (isset($content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']])) { + list($params['results'], $smarty->_cache_info) = $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']]; + return true; + } + + if (!empty($smarty->cache_handler_func)) { + // use cache_handler function + call_user_func_array($smarty->cache_handler_func, + array('read', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); + } else { + // use local cache file + $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); + $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); + $params['results'] = $smarty->_read_file($_cache_file); + } + + if (empty($params['results'])) { + // nothing to parse (error?), regenerate cache + return false; + } + + $_contents = $params['results']; + $_info_start = strpos($_contents, "\n") + 1; + $_info_len = (int)substr($_contents, 0, $_info_start - 1); + $_cache_info = unserialize(substr($_contents, $_info_start, $_info_len)); + $params['results'] = substr($_contents, $_info_start + $_info_len); + + if ($smarty->caching == 2 && isset ($_cache_info['expires'])){ + // caching by expiration time + if ($_cache_info['expires'] > -1 && (time() > $_cache_info['expires'])) { + // cache expired, regenerate + return false; + } + } else { + // caching by lifetime + if ($smarty->cache_lifetime > -1 && (time() - $_cache_info['timestamp'] > $smarty->cache_lifetime)) { + // cache expired, regenerate + return false; + } + } + + if ($smarty->compile_check) { + $_params = array('get_source' => false, 'quiet'=>true); + foreach (array_keys($_cache_info['template']) as $_template_dep) { + $_params['resource_name'] = $_template_dep; + if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { + // template file has changed, regenerate cache + return false; + } + } + + if (isset($_cache_info['config'])) { + $_params = array('resource_base_path' => $smarty->config_dir, 'get_source' => false, 'quiet'=>true); + foreach (array_keys($_cache_info['config']) as $_config_dep) { + $_params['resource_name'] = $_config_dep; + if (!$smarty->_fetch_resource_info($_params) || $_cache_info['timestamp'] < $_params['resource_timestamp']) { + // config file has changed, regenerate cache + return false; + } + } + } + } + + $content_cache[$params['tpl_file'].','.$params['cache_id'].','.$params['compile_id']] = array($params['results'], $_cache_info); + + $smarty->_cache_info = $_cache_info; + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.rm_auto.php b/includes/onyx/templates/libs/internals/core.rm_auto.php new file mode 100644 index 0000000..b251f64 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.rm_auto.php @@ -0,0 +1,71 @@ + $params['auto_base'], + 'level' => 0, + 'exp_time' => $params['exp_time'] + ); + require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); + $_res = smarty_core_rmdir($_params, $smarty); + } else { + $_tname = $smarty->_get_auto_filename($params['auto_base'], $params['auto_source'], $params['auto_id']); + + if(isset($params['auto_source'])) { + if (isset($params['extensions'])) { + $_res = false; + foreach ((array)$params['extensions'] as $_extension) + $_res |= $smarty->_unlink($_tname.$_extension, $params['exp_time']); + } else { + $_res = $smarty->_unlink($_tname, $params['exp_time']); + } + } elseif ($smarty->use_sub_dirs) { + $_params = array( + 'dirname' => $_tname, + 'level' => 1, + 'exp_time' => $params['exp_time'] + ); + require_once(SMARTY_CORE_DIR . 'core.rmdir.php'); + $_res = smarty_core_rmdir($_params, $smarty); + } else { + // remove matching file names + $_handle = opendir($params['auto_base']); + $_res = true; + while (false !== ($_filename = readdir($_handle))) { + if($_filename == '.' || $_filename == '..') { + continue; + } elseif (substr($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, 0, strlen($_tname)) == $_tname) { + $_res &= (bool)$smarty->_unlink($params['auto_base'] . DIRECTORY_SEPARATOR . $_filename, $params['exp_time']); + } + } + } + } + + return $_res; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.rmdir.php b/includes/onyx/templates/libs/internals/core.rmdir.php new file mode 100644 index 0000000..2166c44 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.rmdir.php @@ -0,0 +1,54 @@ + keep root) + * WARNING: no tests, it will try to remove what you tell it! + * + * @param string $dirname + * @param integer $level + * @param integer $exp_time + * @return boolean + */ + +// $dirname, $level = 1, $exp_time = null + +function smarty_core_rmdir($params, &$smarty) +{ + if(!isset($params['level'])) { $params['level'] = 1; } + if(!isset($params['exp_time'])) { $params['exp_time'] = null; } + + if($_handle = @opendir($params['dirname'])) { + + while (false !== ($_entry = readdir($_handle))) { + if ($_entry != '.' && $_entry != '..') { + if (@is_dir($params['dirname'] . DIRECTORY_SEPARATOR . $_entry)) { + $_params = array( + 'dirname' => $params['dirname'] . DIRECTORY_SEPARATOR . $_entry, + 'level' => $params['level'] + 1, + 'exp_time' => $params['exp_time'] + ); + smarty_core_rmdir($_params, $smarty); + } + else { + $smarty->_unlink($params['dirname'] . DIRECTORY_SEPARATOR . $_entry, $params['exp_time']); + } + } + } + closedir($_handle); + } + + if ($params['level']) { + return @rmdir($params['dirname']); + } + return (bool)$_handle; + +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.run_insert_handler.php b/includes/onyx/templates/libs/internals/core.run_insert_handler.php new file mode 100644 index 0000000..71c3845 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.run_insert_handler.php @@ -0,0 +1,71 @@ +debugging) { + $_params = array(); + $_debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + if ($smarty->caching) { + $_arg_string = serialize($params['args']); + $_name = $params['args']['name']; + if (!isset($smarty->_cache_info['insert_tags'][$_name])) { + $smarty->_cache_info['insert_tags'][$_name] = array('insert', + $_name, + $smarty->_plugins['insert'][$_name][1], + $smarty->_plugins['insert'][$_name][2], + !empty($params['args']['script']) ? true : false); + } + return $smarty->_smarty_md5."{insert_cache $_arg_string}".$smarty->_smarty_md5; + } else { + if (isset($params['args']['script'])) { + $_params = array('resource_name' => $smarty->_dequote($params['args']['script'])); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + if(!smarty_core_get_php_resource($_params, $smarty)) { + return false; + } + + if ($_params['resource_type'] == 'file') { + $smarty->_include($_params['php_resource'], true); + } else { + $smarty->_eval($_params['php_resource']); + } + unset($params['args']['script']); + } + + $_funcname = $smarty->_plugins['insert'][$params['args']['name']][0]; + $_content = $_funcname($params['args'], $smarty); + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'insert', + 'filename' => 'insert_'.$params['args']['name'], + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); + } + + if (!empty($params['args']["assign"])) { + $smarty->assign($params['args']["assign"], $_content); + } else { + return $_content; + } + } +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.smarty_include_php.php b/includes/onyx/templates/libs/internals/core.smarty_include_php.php new file mode 100644 index 0000000..30c6e76 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.smarty_include_php.php @@ -0,0 +1,50 @@ + $params['smarty_file']); + require_once(SMARTY_CORE_DIR . 'core.get_php_resource.php'); + smarty_core_get_php_resource($_params, $smarty); + $_smarty_resource_type = $_params['resource_type']; + $_smarty_php_resource = $_params['php_resource']; + + if (!empty($params['smarty_assign'])) { + ob_start(); + if ($_smarty_resource_type == 'file') { + $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); + } else { + $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); + } + $smarty->assign($params['smarty_assign'], ob_get_contents()); + ob_end_clean(); + } else { + if ($_smarty_resource_type == 'file') { + $smarty->_include($_smarty_php_resource, $params['smarty_once'], $params['smarty_include_vars']); + } else { + $smarty->_eval($_smarty_php_resource, $params['smarty_include_vars']); + } + } +} + + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.write_cache_file.php b/includes/onyx/templates/libs/internals/core.write_cache_file.php new file mode 100644 index 0000000..72f785b --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.write_cache_file.php @@ -0,0 +1,96 @@ +_cache_info['timestamp'] = time(); + if ($smarty->cache_lifetime > -1){ + // expiration set + $smarty->_cache_info['expires'] = $smarty->_cache_info['timestamp'] + $smarty->cache_lifetime; + } else { + // cache will never expire + $smarty->_cache_info['expires'] = -1; + } + + // collapse nocache.../nocache-tags + if (preg_match_all('!\{(/?)nocache\:[0-9a-f]{32}#\d+\}!', $params['results'], $match, PREG_PATTERN_ORDER)) { + // remove everything between every pair of outermost noache.../nocache-tags + // and replace it by a single nocache-tag + // this new nocache-tag will be replaced by dynamic contents in + // smarty_core_process_compiled_includes() on a cache-read + + $match_count = count($match[0]); + $results = preg_split('!(\{/?nocache\:[0-9a-f]{32}#\d+\})!', $params['results'], -1, PREG_SPLIT_DELIM_CAPTURE); + + $level = 0; + $j = 0; + for ($i=0, $results_count = count($results); $i < $results_count && $j < $match_count; $i++) { + if ($results[$i] == $match[0][$j]) { + // nocache tag + if ($match[1][$j]) { // closing tag + $level--; + unset($results[$i]); + } else { // opening tag + if ($level++ > 0) unset($results[$i]); + } + $j++; + } elseif ($level > 0) { + unset($results[$i]); + } + } + $params['results'] = implode('', $results); + } + $smarty->_cache_info['cache_serials'] = $smarty->_cache_serials; + + // prepend the cache header info into cache file + $_cache_info = serialize($smarty->_cache_info); + $params['results'] = strlen($_cache_info) . "\n" . $_cache_info . $params['results']; + + if (!empty($smarty->cache_handler_func)) { + // use cache_handler function + call_user_func_array($smarty->cache_handler_func, + array('write', &$smarty, &$params['results'], $params['tpl_file'], $params['cache_id'], $params['compile_id'], null)); + } else { + // use local cache file + + if(!@is_writable($smarty->cache_dir)) { + // cache_dir not writable, see if it exists + if(!@is_dir($smarty->cache_dir)) { + $smarty->trigger_error('the $cache_dir \'' . $smarty->cache_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); + return false; + } + $smarty->trigger_error('unable to write to $cache_dir \'' . realpath($smarty->cache_dir) . '\'. Be sure $cache_dir is writable by the web server user.', E_USER_ERROR); + return false; + } + + $_auto_id = $smarty->_get_auto_id($params['cache_id'], $params['compile_id']); + $_cache_file = $smarty->_get_auto_filename($smarty->cache_dir, $params['tpl_file'], $_auto_id); + $_params = array('filename' => $_cache_file, 'contents' => $params['results'], 'create_dirs' => true); + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.write_compiled_include.php b/includes/onyx/templates/libs/internals/core.write_compiled_include.php new file mode 100644 index 0000000..c14adb5 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.write_compiled_include.php @@ -0,0 +1,91 @@ +caching && \!\$this->_cache_including\)\: echo \'\{nocache\:('.$params['cache_serial'].')#(\d+)\}\'; endif;'; + $_tag_end = 'if \(\$this->caching && \!\$this->_cache_including\)\: echo \'\{/nocache\:(\\2)#(\\3)\}\'; endif;'; + + preg_match_all('!('.$_tag_start.'(.*)'.$_tag_end.')!Us', + $params['compiled_content'], $_match_source, PREG_SET_ORDER); + + // no nocache-parts found: done + if (count($_match_source)==0) return; + + // convert the matched php-code to functions + $_include_compiled = "_version.", created on ".strftime("%Y-%m-%d %H:%M:%S")."\n"; + $_include_compiled .= " compiled from " . strtr(urlencode($params['resource_name']), array('%2F'=>'/', '%3A'=>':')) . " */\n\n"; + + $_compile_path = $params['include_file_path']; + + $smarty->_cache_serials[$_compile_path] = $params['cache_serial']; + $_include_compiled .= "\$this->_cache_serials['".$_compile_path."'] = '".$params['cache_serial']."';\n\n?>"; + + $_include_compiled .= $params['plugins_code']; + $_include_compiled .= "= 5.0) ? '_smarty' : 'this'; + for ($_i = 0, $_for_max = count($_match_source); $_i < $_for_max; $_i++) { + $_match =& $_match_source[$_i]; + $source = $_match[4]; + if ($this_varname == '_smarty') { + /* rename $this to $_smarty in the sourcecode */ + $tokens = token_get_all('\n"; + + $_params = array('filename' => $_compile_path, + 'contents' => $_include_compiled, 'create_dirs' => true); + + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; +} + + +?> diff --git a/includes/onyx/templates/libs/internals/core.write_compiled_resource.php b/includes/onyx/templates/libs/internals/core.write_compiled_resource.php new file mode 100644 index 0000000..b902eff --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.write_compiled_resource.php @@ -0,0 +1,35 @@ +compile_dir)) { + // compile_dir not writable, see if it exists + if(!@is_dir($smarty->compile_dir)) { + $smarty->trigger_error('the $compile_dir \'' . $smarty->compile_dir . '\' does not exist, or is not a directory.', E_USER_ERROR); + return false; + } + $smarty->trigger_error('unable to write to $compile_dir \'' . realpath($smarty->compile_dir) . '\'. Be sure $compile_dir is writable by the web server user.', E_USER_ERROR); + return false; + } + + $_params = array('filename' => $params['compile_path'], 'contents' => $params['compiled_content'], 'create_dirs' => true); + require_once(SMARTY_CORE_DIR . 'core.write_file.php'); + smarty_core_write_file($_params, $smarty); + return true; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/internals/core.write_file.php b/includes/onyx/templates/libs/internals/core.write_file.php new file mode 100644 index 0000000..8a3a3b3 --- /dev/null +++ b/includes/onyx/templates/libs/internals/core.write_file.php @@ -0,0 +1,54 @@ + $_dirname); + require_once(SMARTY_CORE_DIR . 'core.create_dir_structure.php'); + smarty_core_create_dir_structure($_params, $smarty); + } + + // write to tmp file, then rename it to avoid file locking race condition + $_tmp_file = tempnam($_dirname, 'wrt'); + + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $_tmp_file = $_dirname . DIRECTORY_SEPARATOR . uniqid('wrt'); + if (!($fd = @fopen($_tmp_file, 'wb'))) { + $smarty->trigger_error("problem writing temporary file '$_tmp_file'"); + return false; + } + } + + fwrite($fd, $params['contents']); + fclose($fd); + + if (DIRECTORY_SEPARATOR == '\\' || !@rename($_tmp_file, $params['filename'])) { + // On platforms and filesystems that cannot overwrite with rename() + // delete the file before renaming it -- because windows always suffers + // this, it is short-circuited to avoid the initial rename() attempt + @unlink($params['filename']); + @rename($_tmp_file, $params['filename']); + } + @chmod($params['filename'], $smarty->_file_perms); + + return true; +} + +/* vim: set expandtab: */ + +?> \ No newline at end of file diff --git a/includes/onyx/templates/libs/plugins/block.textformat.php b/includes/onyx/templates/libs/plugins/block.textformat.php new file mode 100644 index 0000000..8cd010a --- /dev/null +++ b/includes/onyx/templates/libs/plugins/block.textformat.php @@ -0,0 +1,103 @@ + + * Name: textformat
      + * Purpose: format text a certain way with preset styles + * or custom wrap/indent settings
      + * @link http://smarty.php.net/manual/en/language.function.textformat.php {textformat} + * (Smarty online manual) + * @param array + *
      + * Params:   style: string (email)
      + *           indent: integer (0)
      + *           wrap: integer (80)
      + *           wrap_char string ("\n")
      + *           indent_char: string (" ")
      + *           wrap_boundary: boolean (true)
      + * 
      + * @author Monte Ohrt + * @param string contents of the block + * @param Smarty clever simulation of a method + * @return string string $content re-formatted + */ +function smarty_block_textformat($params, $content, &$smarty) +{ + if (is_null($content)) { + return; + } + + $style = null; + $indent = 0; + $indent_first = 0; + $indent_char = ' '; + $wrap = 80; + $wrap_char = "\n"; + $wrap_cut = false; + $assign = null; + + foreach ($params as $_key => $_val) { + switch ($_key) { + case 'style': + case 'indent_char': + case 'wrap_char': + case 'assign': + $$_key = (string)$_val; + break; + + case 'indent': + case 'indent_first': + case 'wrap': + $$_key = (int)$_val; + break; + + case 'wrap_cut': + $$_key = (bool)$_val; + break; + + default: + $smarty->trigger_error("textformat: unknown attribute '$_key'"); + } + } + + if ($style == 'email') { + $wrap = 72; + } + + // split into paragraphs + $_paragraphs = preg_split('![\r\n][\r\n]!',$content); + $_output = ''; + + for($_x = 0, $_y = count($_paragraphs); $_x < $_y; $_x++) { + if ($_paragraphs[$_x] == '') { + continue; + } + // convert mult. spaces & special chars to single space + $_paragraphs[$_x] = preg_replace(array('!\s+!','!(^\s+)|(\s+$)!'), array(' ',''), $_paragraphs[$_x]); + // indent first line + if($indent_first > 0) { + $_paragraphs[$_x] = str_repeat($indent_char, $indent_first) . $_paragraphs[$_x]; + } + // wordwrap sentences + $_paragraphs[$_x] = wordwrap($_paragraphs[$_x], $wrap - $indent, $wrap_char, $wrap_cut); + // indent lines + if($indent > 0) { + $_paragraphs[$_x] = preg_replace('!^!m', str_repeat($indent_char, $indent), $_paragraphs[$_x]); + } + } + $_output = implode($wrap_char . $wrap_char, $_paragraphs); + + return $assign ? $smarty->assign($assign, $_output) : $_output; + +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/compiler.assign.php b/includes/onyx/templates/libs/plugins/compiler.assign.php new file mode 100644 index 0000000..abef377 --- /dev/null +++ b/includes/onyx/templates/libs/plugins/compiler.assign.php @@ -0,0 +1,40 @@ + + * Name: assign
      + * Purpose: assign a value to a template variable + * @link http://smarty.php.net/manual/en/language.custom.functions.php#LANGUAGE.FUNCTION.ASSIGN {assign} + * (Smarty online manual) + * @author Monte Ohrt (initial author) + * @author messju mohr (conversion to compiler function) + * @param string containing var-attribute and value-attribute + * @param Smarty_Compiler + */ +function smarty_compiler_assign($tag_attrs, &$compiler) +{ + $_params = $compiler->_parse_attrs($tag_attrs); + + if (!isset($_params['var'])) { + $compiler->_syntax_error("assign: missing 'var' parameter", E_USER_WARNING); + return; + } + + if (!isset($_params['value'])) { + $compiler->_syntax_error("assign: missing 'value' parameter", E_USER_WARNING); + return; + } + + return "\$this->assign({$_params['var']}, {$_params['value']});"; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.assign_debug_info.php b/includes/onyx/templates/libs/plugins/function.assign_debug_info.php new file mode 100644 index 0000000..6540498 --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.assign_debug_info.php @@ -0,0 +1,40 @@ + + * Name: assign_debug_info
      + * Purpose: assign debug info to the template
      + * @author Monte Ohrt + * @param array unused in this plugin, this plugin uses {@link Smarty::$_config}, + * {@link Smarty::$_tpl_vars} and {@link Smarty::$_smarty_debug_info} + * @param Smarty + */ +function smarty_function_assign_debug_info($params, &$smarty) +{ + $assigned_vars = $smarty->_tpl_vars; + ksort($assigned_vars); + if (@is_array($smarty->_config[0])) { + $config_vars = $smarty->_config[0]; + ksort($config_vars); + $smarty->assign("_debug_config_keys", array_keys($config_vars)); + $smarty->assign("_debug_config_vals", array_values($config_vars)); + } + + $included_templates = $smarty->_smarty_debug_info; + + $smarty->assign("_debug_keys", array_keys($assigned_vars)); + $smarty->assign("_debug_vals", array_values($assigned_vars)); + + $smarty->assign("_debug_tpls", $included_templates); +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.config_load.php b/includes/onyx/templates/libs/plugins/function.config_load.php new file mode 100644 index 0000000..db89f63 --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.config_load.php @@ -0,0 +1,142 @@ + + * Name: config_load
      + * Purpose: load config file vars + * @link http://smarty.php.net/manual/en/language.function.config.load.php {config_load} + * (Smarty online manual) + * @author Monte Ohrt + * @author messju mohr (added use of resources) + * @param array Format: + *
      + * array('file' => required config file name,
      + *       'section' => optional config file section to load
      + *       'scope' => local/parent/global
      + *       'global' => overrides scope, setting to parent if true)
      + * 
      + * @param Smarty + */ +function smarty_function_config_load($params, &$smarty) +{ + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $_debug_start_time = smarty_core_get_microtime($_params, $smarty); + } + + $_file = isset($params['file']) ? $smarty->_dequote($params['file']) : null; + $_section = isset($params['section']) ? $smarty->_dequote($params['section']) : null; + $_scope = isset($params['scope']) ? $smarty->_dequote($params['scope']) : 'global'; + $_global = isset($params['global']) ? $smarty->_dequote($params['global']) : false; + + if (!isset($_file) || strlen($_file) == 0) { + $smarty->trigger_error("missing 'file' attribute in config_load tag", E_USER_ERROR, __FILE__, __LINE__); + } + + if (isset($_scope)) { + if ($_scope != 'local' && + $_scope != 'parent' && + $_scope != 'global') { + $smarty->trigger_error("invalid 'scope' attribute value", E_USER_ERROR, __FILE__, __LINE__); + } + } else { + if ($_global) { + $_scope = 'parent'; + } else { + $_scope = 'local'; + } + } + + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + 'get_source' => false); + $smarty->_parse_resource_name($_params); + $_file_path = $_params['resource_type'] . ':' . $_params['resource_name']; + if (isset($_section)) + $_compile_file = $smarty->_get_compile_path($_file_path.'|'.$_section); + else + $_compile_file = $smarty->_get_compile_path($_file_path); + + if($smarty->force_compile || !file_exists($_compile_file)) { + $_compile = true; + } elseif ($smarty->compile_check) { + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + 'get_source' => false); + $_compile = $smarty->_fetch_resource_info($_params) && + $_params['resource_timestamp'] > filemtime($_compile_file); + } else { + $_compile = false; + } + + if($_compile) { + // compile config file + if(!is_object($smarty->_conf_obj)) { + require_once SMARTY_DIR . $smarty->config_class . '.class.php'; + $smarty->_conf_obj = new $smarty->config_class(); + $smarty->_conf_obj->overwrite = $smarty->config_overwrite; + $smarty->_conf_obj->booleanize = $smarty->config_booleanize; + $smarty->_conf_obj->read_hidden = $smarty->config_read_hidden; + $smarty->_conf_obj->fix_newlines = $smarty->config_fix_newlines; + } + + $_params = array('resource_name' => $_file, + 'resource_base_path' => $smarty->config_dir, + $_params['get_source'] = true); + if (!$smarty->_fetch_resource_info($_params)) { + return; + } + $smarty->_conf_obj->set_file_contents($_file, $_params['source_content']); + $_config_vars = array_merge($smarty->_conf_obj->get($_file), + $smarty->_conf_obj->get($_file, $_section)); + if(function_exists('var_export')) { + $_output = ''; + } else { + $_output = ''\\\'', '\\'=>'\\\\')) . '\'); ?>'; + } + $_params = (array('compile_path' => $_compile_file, 'compiled_content' => $_output, 'resource_timestamp' => $_params['resource_timestamp'])); + require_once(SMARTY_CORE_DIR . 'core.write_compiled_resource.php'); + smarty_core_write_compiled_resource($_params, $smarty); + } else { + include($_compile_file); + } + + if ($smarty->caching) { + $smarty->_cache_info['config'][$_file] = true; + } + + $smarty->_config[0]['vars'] = @array_merge($smarty->_config[0]['vars'], $_config_vars); + $smarty->_config[0]['files'][$_file] = true; + + if ($_scope == 'parent') { + $smarty->_config[1]['vars'] = @array_merge($smarty->_config[1]['vars'], $_config_vars); + $smarty->_config[1]['files'][$_file] = true; + } else if ($_scope == 'global') { + for ($i = 1, $for_max = count($smarty->_config); $i < $for_max; $i++) { + $smarty->_config[$i]['vars'] = @array_merge($smarty->_config[$i]['vars'], $_config_vars); + $smarty->_config[$i]['files'][$_file] = true; + } + } + + if ($smarty->debugging) { + $_params = array(); + require_once(SMARTY_CORE_DIR . 'core.get_microtime.php'); + $smarty->_smarty_debug_info[] = array('type' => 'config', + 'filename' => $_file.' ['.$_section.'] '.$_scope, + 'depth' => $smarty->_inclusion_depth, + 'exec_time' => smarty_core_get_microtime($_params, $smarty) - $_debug_start_time); + } + +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.counter.php b/includes/onyx/templates/libs/plugins/function.counter.php new file mode 100644 index 0000000..1f26db5 --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.counter.php @@ -0,0 +1,80 @@ + + * Name: counter
      + * Purpose: print out a counter value + * @author Monte Ohrt + * @link http://smarty.php.net/manual/en/language.function.counter.php {counter} + * (Smarty online manual) + * @param array parameters + * @param Smarty + * @return string|null + */ +function smarty_function_counter($params, &$smarty) +{ + static $counters = array(); + + $name = (isset($params['name'])) ? $params['name'] : 'default'; + if (!isset($counters[$name])) { + $counters[$name] = array( + 'start'=>1, + 'skip'=>1, + 'direction'=>'up', + 'count'=>1 + ); + } + $counter =& $counters[$name]; + + if (isset($params['start'])) { + $counter['start'] = $counter['count'] = (int)$params['start']; + } + + if (!empty($params['assign'])) { + $counter['assign'] = $params['assign']; + } + + if (isset($counter['assign'])) { + $smarty->assign($counter['assign'], $counter['count']); + } + + if (isset($params['print'])) { + $print = (bool)$params['print']; + } else { + $print = empty($counter['assign']); + } + + if ($print) { + $retval = $counter['count']; + } else { + $retval = null; + } + + if (isset($params['skip'])) { + $counter['skip'] = $params['skip']; + } + + if (isset($params['direction'])) { + $counter['direction'] = $params['direction']; + } + + if ($counter['direction'] == "down") + $counter['count'] -= $counter['skip']; + else + $counter['count'] += $counter['skip']; + + return $retval; + +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.cycle.php b/includes/onyx/templates/libs/plugins/function.cycle.php new file mode 100644 index 0000000..fe78bb8 --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.cycle.php @@ -0,0 +1,102 @@ + + * Name: cycle
      + * Date: May 3, 2002
      + * Purpose: cycle through given values
      + * Input: + * - name = name of cycle (optional) + * - values = comma separated list of values to cycle, + * or an array of values to cycle + * (this can be left out for subsequent calls) + * - reset = boolean - resets given var to true + * - print = boolean - print var or not. default is true + * - advance = boolean - whether or not to advance the cycle + * - delimiter = the value delimiter, default is "," + * - assign = boolean, assigns to template var instead of + * printed. + * + * Examples:
      + *
      + * {cycle values="#eeeeee,#d0d0d0d"}
      + * {cycle name=row values="one,two,three" reset=true}
      + * {cycle name=row}
      + * 
      + * @link http://smarty.php.net/manual/en/language.function.cycle.php {cycle} + * (Smarty online manual) + * @author Monte Ohrt + * @author credit to Mark Priatel + * @author credit to Gerard + * @author credit to Jason Sweat + * @version 1.3 + * @param array + * @param Smarty + * @return string|null + */ +function smarty_function_cycle($params, &$smarty) +{ + static $cycle_vars; + + $name = (empty($params['name'])) ? 'default' : $params['name']; + $print = (isset($params['print'])) ? (bool)$params['print'] : true; + $advance = (isset($params['advance'])) ? (bool)$params['advance'] : true; + $reset = (isset($params['reset'])) ? (bool)$params['reset'] : false; + + if (!in_array('values', array_keys($params))) { + if(!isset($cycle_vars[$name]['values'])) { + $smarty->trigger_error("cycle: missing 'values' parameter"); + return; + } + } else { + if(isset($cycle_vars[$name]['values']) + && $cycle_vars[$name]['values'] != $params['values'] ) { + $cycle_vars[$name]['index'] = 0; + } + $cycle_vars[$name]['values'] = $params['values']; + } + + $cycle_vars[$name]['delimiter'] = (isset($params['delimiter'])) ? $params['delimiter'] : ','; + + if(is_array($cycle_vars[$name]['values'])) { + $cycle_array = $cycle_vars[$name]['values']; + } else { + $cycle_array = explode($cycle_vars[$name]['delimiter'],$cycle_vars[$name]['values']); + } + + if(!isset($cycle_vars[$name]['index']) || $reset ) { + $cycle_vars[$name]['index'] = 0; + } + + if (isset($params['assign'])) { + $print = false; + $smarty->assign($params['assign'], $cycle_array[$cycle_vars[$name]['index']]); + } + + if($print) { + $retval = $cycle_array[$cycle_vars[$name]['index']]; + } else { + $retval = null; + } + + if($advance) { + if ( $cycle_vars[$name]['index'] >= count($cycle_array) -1 ) { + $cycle_vars[$name]['index'] = 0; + } else { + $cycle_vars[$name]['index']++; + } + } + + return $retval; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.debug.php b/includes/onyx/templates/libs/plugins/function.debug.php new file mode 100644 index 0000000..4345230 --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.debug.php @@ -0,0 +1,35 @@ + + * Name: debug
      + * Date: July 1, 2002
      + * Purpose: popup debug window + * @link http://smarty.php.net/manual/en/language.function.debug.php {debug} + * (Smarty online manual) + * @author Monte Ohrt + * @version 1.0 + * @param array + * @param Smarty + * @return string output from {@link Smarty::_generate_debug_output()} + */ +function smarty_function_debug($params, &$smarty) +{ + if (isset($params['output'])) { + $smarty->assign('_smarty_debug_output', $params['output']); + } + require_once(SMARTY_CORE_DIR . 'core.display_debug_console.php'); + return smarty_core_display_debug_console(null, $smarty); +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.eval.php b/includes/onyx/templates/libs/plugins/function.eval.php new file mode 100644 index 0000000..ff0472d --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.eval.php @@ -0,0 +1,49 @@ + + * Name: eval
      + * Purpose: evaluate a template variable as a template
      + * @link http://smarty.php.net/manual/en/language.function.eval.php {eval} + * (Smarty online manual) + * @author Monte Ohrt + * @param array + * @param Smarty + */ +function smarty_function_eval($params, &$smarty) +{ + + if (!isset($params['var'])) { + $smarty->trigger_error("eval: missing 'var' parameter"); + return; + } + + if($params['var'] == '') { + return; + } + + $smarty->_compile_source('evaluated template', $params['var'], $_var_compiled); + + ob_start(); + $smarty->_eval('?>' . $_var_compiled); + $_contents = ob_get_contents(); + ob_end_clean(); + + if (!empty($params['assign'])) { + $smarty->assign($params['assign'], $_contents); + } else { + return $_contents; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.fetch.php b/includes/onyx/templates/libs/plugins/function.fetch.php new file mode 100644 index 0000000..81b1bfc --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.fetch.php @@ -0,0 +1,221 @@ + + * Name: fetch
      + * Purpose: fetch file, web or ftp data and display results + * @link http://smarty.php.net/manual/en/language.function.fetch.php {fetch} + * (Smarty online manual) + * @author Monte Ohrt + * @param array + * @param Smarty + * @return string|null if the assign parameter is passed, Smarty assigns the + * result to a template variable + */ +function smarty_function_fetch($params, &$smarty) +{ + if (empty($params['file'])) { + $smarty->_trigger_fatal_error("[plugin] parameter 'file' cannot be empty"); + return; + } + + $content = ''; + if ($smarty->security && !preg_match('!^(http|ftp)://!i', $params['file'])) { + $_params = array('resource_type' => 'file', 'resource_name' => $params['file']); + require_once(SMARTY_CORE_DIR . 'core.is_secure.php'); + if(!smarty_core_is_secure($_params, $smarty)) { + $smarty->_trigger_fatal_error('[plugin] (secure mode) fetch \'' . $params['file'] . '\' is not allowed'); + return; + } + + // fetch the file + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] . '\''); + return; + } + } else { + // not a local file + if(preg_match('!^http://!i',$params['file'])) { + // http fetch + if($uri_parts = parse_url($params['file'])) { + // set defaults + $host = $server_name = $uri_parts['host']; + $timeout = 30; + $accept = "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, */*"; + $agent = "Smarty Template Engine ".$smarty->_version; + $referer = ""; + $uri = !empty($uri_parts['path']) ? $uri_parts['path'] : '/'; + $uri .= !empty($uri_parts['query']) ? '?' . $uri_parts['query'] : ''; + $_is_proxy = false; + if(empty($uri_parts['port'])) { + $port = 80; + } else { + $port = $uri_parts['port']; + } + if(!empty($uri_parts['user'])) { + $user = $uri_parts['user']; + } + if(!empty($uri_parts['pass'])) { + $pass = $uri_parts['pass']; + } + // loop through parameters, setup headers + foreach($params as $param_key => $param_value) { + switch($param_key) { + case "file": + case "assign": + case "assign_headers": + break; + case "user": + if(!empty($param_value)) { + $user = $param_value; + } + break; + case "pass": + if(!empty($param_value)) { + $pass = $param_value; + } + break; + case "accept": + if(!empty($param_value)) { + $accept = $param_value; + } + break; + case "header": + if(!empty($param_value)) { + if(!preg_match('![\w\d-]+: .+!',$param_value)) { + $smarty->_trigger_fatal_error("[plugin] invalid header format '".$param_value."'"); + return; + } else { + $extra_headers[] = $param_value; + } + } + break; + case "proxy_host": + if(!empty($param_value)) { + $proxy_host = $param_value; + } + break; + case "proxy_port": + if(!preg_match('!\D!', $param_value)) { + $proxy_port = (int) $param_value; + } else { + $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'"); + return; + } + break; + case "agent": + if(!empty($param_value)) { + $agent = $param_value; + } + break; + case "referer": + if(!empty($param_value)) { + $referer = $param_value; + } + break; + case "timeout": + if(!preg_match('!\D!', $param_value)) { + $timeout = (int) $param_value; + } else { + $smarty->_trigger_fatal_error("[plugin] invalid value for attribute '".$param_key."'"); + return; + } + break; + default: + $smarty->_trigger_fatal_error("[plugin] unrecognized attribute '".$param_key."'"); + return; + } + } + if(!empty($proxy_host) && !empty($proxy_port)) { + $_is_proxy = true; + $fp = fsockopen($proxy_host,$proxy_port,$errno,$errstr,$timeout); + } else { + $fp = fsockopen($server_name,$port,$errno,$errstr,$timeout); + } + + if(!$fp) { + $smarty->_trigger_fatal_error("[plugin] unable to fetch: $errstr ($errno)"); + return; + } else { + if($_is_proxy) { + fputs($fp, 'GET ' . $params['file'] . " HTTP/1.0\r\n"); + } else { + fputs($fp, "GET $uri HTTP/1.0\r\n"); + } + if(!empty($host)) { + fputs($fp, "Host: $host\r\n"); + } + if(!empty($accept)) { + fputs($fp, "Accept: $accept\r\n"); + } + if(!empty($agent)) { + fputs($fp, "User-Agent: $agent\r\n"); + } + if(!empty($referer)) { + fputs($fp, "Referer: $referer\r\n"); + } + if(isset($extra_headers) && is_array($extra_headers)) { + foreach($extra_headers as $curr_header) { + fputs($fp, $curr_header."\r\n"); + } + } + if(!empty($user) && !empty($pass)) { + fputs($fp, "Authorization: BASIC ".base64_encode("$user:$pass")."\r\n"); + } + + fputs($fp, "\r\n"); + while(!feof($fp)) { + $content .= fgets($fp,4096); + } + fclose($fp); + $csplit = split("\r\n\r\n",$content,2); + + $content = $csplit[1]; + + if(!empty($params['assign_headers'])) { + $smarty->assign($params['assign_headers'],split("\r\n",$csplit[0])); + } + } + } else { + $smarty->_trigger_fatal_error("[plugin] unable to parse URL, check syntax"); + return; + } + } else { + // ftp fetch + if($fp = @fopen($params['file'],'r')) { + while(!feof($fp)) { + $content .= fgets ($fp,4096); + } + fclose($fp); + } else { + $smarty->_trigger_fatal_error('[plugin] fetch cannot read file \'' . $params['file'] .'\''); + return; + } + } + + } + + + if (!empty($params['assign'])) { + $smarty->assign($params['assign'],$content); + } else { + return $content; + } +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.html_checkboxes.php b/includes/onyx/templates/libs/plugins/function.html_checkboxes.php new file mode 100644 index 0000000..ed8ad7f --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.html_checkboxes.php @@ -0,0 +1,143 @@ + + * Type: function
      + * Name: html_checkboxes
      + * Date: 24.Feb.2003
      + * Purpose: Prints out a list of checkbox input types
      + * Input:
      + * - name (optional) - string default "checkbox" + * - values (required) - array + * - options (optional) - associative array + * - checked (optional) - array default not set + * - separator (optional) - ie
      or   + * - output (optional) - the output next to each checkbox + * - assign (optional) - assign the output as an array to this variable + * Examples: + *
      + * {html_checkboxes values=$ids output=$names}
      + * {html_checkboxes values=$ids name='box' separator='
      ' output=$names} + * {html_checkboxes values=$ids checked=$checked separator='
      ' output=$names} + *
      + * @link http://smarty.php.net/manual/en/language.function.html.checkboxes.php {html_checkboxes} + * (Smarty online manual) + * @author Christopher Kvarme + * @author credits to Monte Ohrt + * @version 1.0 + * @param array + * @param Smarty + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_checkboxes($params, &$smarty) +{ + require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); + + $name = 'checkbox'; + $values = null; + $options = null; + $selected = null; + $separator = ''; + $labels = true; + $output = null; + + $extra = ''; + + foreach($params as $_key => $_val) { + switch($_key) { + case 'name': + case 'separator': + $$_key = $_val; + break; + + case 'labels': + $$_key = (bool)$_val; + break; + + case 'options': + $$_key = (array)$_val; + break; + + case 'values': + case 'output': + $$_key = array_values((array)$_val); + break; + + case 'checked': + case 'selected': + $selected = array_map('strval', array_values((array)$_val)); + break; + + case 'checkboxes': + $smarty->trigger_error('html_checkboxes: the use of the "checkboxes" attribute is deprecated, use "options" instead', E_USER_WARNING); + $options = (array)$_val; + break; + + case 'assign': + break; + + default: + if(!is_array($_val)) { + $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + } else { + $smarty->trigger_error("html_checkboxes: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (!isset($options) && !isset($values)) + return ''; /* raise error here? */ + + settype($selected, 'array'); + $_html_result = array(); + + if (isset($options)) { + + foreach ($options as $_key=>$_val) + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); + + + } else { + foreach ($values as $_i=>$_key) { + $_val = isset($output[$_i]) ? $output[$_i] : ''; + $_html_result[] = smarty_function_html_checkboxes_output($name, $_key, $_val, $selected, $extra, $separator, $labels); + } + + } + + if(!empty($params['assign'])) { + $smarty->assign($params['assign'], $_html_result); + } else { + return implode("\n",$_html_result); + } + +} + +function smarty_function_html_checkboxes_output($name, $value, $output, $selected, $extra, $separator, $labels) { + $_output = ''; + if ($labels) $_output .= ''; + $_output .= $separator; + + return $_output; +} + +?> diff --git a/includes/onyx/templates/libs/plugins/function.html_image.php b/includes/onyx/templates/libs/plugins/function.html_image.php new file mode 100644 index 0000000..9abae72 --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.html_image.php @@ -0,0 +1,142 @@ + + * Name: html_image
      + * Date: Feb 24, 2003
      + * Purpose: format HTML tags for the image
      + * Input:
      + * - file = file (and path) of image (required) + * - height = image height (optional, default actual height) + * - width = image width (optional, default actual width) + * - basedir = base directory for absolute paths, default + * is environment variable DOCUMENT_ROOT + * - path_prefix = prefix for path output (optional, default empty) + * + * Examples: {html_image file="/images/masthead.gif"} + * Output: + * @link http://smarty.php.net/manual/en/language.function.html.image.php {html_image} + * (Smarty online manual) + * @author Monte Ohrt + * @author credits to Duda - wrote first image function + * in repository, helped with lots of functionality + * @version 1.0 + * @param array + * @param Smarty + * @return string + * @uses smarty_function_escape_special_chars() + */ +function smarty_function_html_image($params, &$smarty) +{ + require_once $smarty->_get_plugin_filepath('shared','escape_special_chars'); + + $alt = ''; + $file = ''; + $height = ''; + $width = ''; + $extra = ''; + $prefix = ''; + $suffix = ''; + $path_prefix = ''; + $server_vars = ($smarty->request_use_auto_globals) ? $_SERVER : $GLOBALS['HTTP_SERVER_VARS']; + $basedir = isset($server_vars['DOCUMENT_ROOT']) ? $server_vars['DOCUMENT_ROOT'] : ''; + foreach($params as $_key => $_val) { + switch($_key) { + case 'file': + case 'height': + case 'width': + case 'dpi': + case 'path_prefix': + case 'basedir': + $$_key = $_val; + break; + + case 'alt': + if(!is_array($_val)) { + $$_key = smarty_function_escape_special_chars($_val); + } else { + $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + + case 'link': + case 'href': + $prefix = ''; + $suffix = ''; + break; + + default: + if(!is_array($_val)) { + $extra .= ' '.$_key.'="'.smarty_function_escape_special_chars($_val).'"'; + } else { + $smarty->trigger_error("html_image: extra attribute '$_key' cannot be an array", E_USER_NOTICE); + } + break; + } + } + + if (empty($file)) { + $smarty->trigger_error("html_image: missing 'file' parameter", E_USER_NOTICE); + return; + } + + if (substr($file,0,1) == '/') { + $_image_path = $basedir . $file; + } else { + $_image_path = $file; + } + + if(!isset($params['width']) || !isset($params['height'])) { + if(!$_image_data = @getimagesize($_image_path)) { + if(!file_exists($_image_path)) { + $smarty->trigger_error("html_image: unable to find '$_image_path'", E_USER_NOTICE); + return; + } else if(!is_readable($_image_path)) { + $smarty->trigger_error("html_image: unable to read '$_image_path'", E_USER_NOTICE); + return; + } else { + $smarty->trigger_error("html_image: '$_image_path' is not a valid image file", E_USER_NOTICE); + return; + } + } + if ($smarty->security && + ($_params = array('resource_type' => 'file', 'resource_name' => $_image_path)) && + (require_once(SMARTY_CORE_DIR . 'core.is_secure.php')) && + (!smarty_core_is_secure($_params, $smarty)) ) { + $smarty->trigger_error("html_image: (secure) '$_image_path' not in secure directory", E_USER_NOTICE); + } + + if(!isset($params['width'])) { + $width = $_image_data[0]; + } + if(!isset($params['height'])) { + $height = $_image_data[1]; + } + + } + + if(isset($params['dpi'])) { + if(strstr($server_vars['HTTP_USER_AGENT'], 'Mac')) { + $dpi_default = 72; + } else { + $dpi_default = 96; + } + $_resize = $dpi_default/$params['dpi']; + $width = round($width * $_resize); + $height = round($height * $_resize); + } + + return $prefix . ''.$alt.'' . $suffix; +} + +/* vim: set expandtab: */ + +?> diff --git a/includes/onyx/templates/libs/plugins/function.html_options.php b/includes/onyx/templates/libs/plugins/function.html_options.php new file mode 100644 index 0000000..cebadde --- /dev/null +++ b/includes/onyx/templates/libs/plugins/function.html_options.php @@ -0,0 +1,122 @@ + + * Name: html_options
      + * Input:
      + * - name (optional) - string default "select" + * - values (required if no options supplied) - array + * - options (required if no values supplied) - associative array + * - selected (optional) - string default not set + * - output (required if not options supplied) - array + * Purpose: Prints the list of