Subversion Repositories Sites.gentiana.org

Compare Revisions

Ignore whitespace Rev 119 → Rev 120

/tags/2014-08-05_centre/base_de_donnees/nettoyage.sql
New file
0,0 → 1,19
-- Nettoyage base eFlore pour Gentiana. Seules les données de la BDNFF et des projets liés sont gardées.
DELETE FROM `eflore_chorologie_donnee` WHERE `ecd_id_version_projet_donnee_choro` != 12;
DELETE FROM `eflore_chorologie_information` WHERE `eci_id_version_projet_info_choro` != 12;
DELETE FROM `eflore_info_txt` WHERE `eit_id_version_projet_txt` != 25;
DELETE FROM `eflore_nom` WHERE `en_id_version_projet_nom` != 25;
DELETE FROM `eflore_naturaliste_intitule_abreviation` WHERE enaia_id_intitule_naturaliste_abrege > 5516;
DELETE FROM `eflore_nom_a_txt` WHERE `enat_id_version_projet_nom` != 25;
DELETE FROM eflore_nom_citation WHERE enci_id_citation NOT IN (SELECT en_ce_citation_initiale FROM eflore_nom);
DELETE FROM `eflore_nom_intitule` WHERE `eni_id_version_projet_nom` != 25;
DELETE FROM eflore_nom_intitule_commentaire WHERE enic_id_intitule_cn NOT IN (SELECT en_ce_citation_initiale FROM eflore_nom);
DELETE FROM `eflore_nom_relation` WHERE `enr_id_version_projet_nom_1` != 25 AND `enr_id_version_projet_nom_2` != 25;
DELETE FROM `eflore_protection` WHERE `ept_id_version_projet_protection` != 36;
DELETE FROM `eflore_selection_nom` WHERE `esn_id_version_projet_nom` != 25;
DELETE FROM `eflore_taxon` WHERE `et_id_version_projet_taxon` != 25;
DELETE FROM `eflore_taxon_a_protection` WHERE `etap_id_version_projet_taxon` != 25;
DELETE FROM `eflore_taxon_a_txt` WHERE `etat_id_version_projet_taxon` != 25;
DELETE FROM `eflore_taxon_relation` WHERE `etr_id_version_projet_taxon_1` != 25;
DELETE FROM `eflore_vernaculaire` WHERE `ev_id_version_projet_nom_verna` != 24;
DELETE FROM `eflore_vernaculaire_attribution` WHERE `eva_id_version_projet_nom_verna` != 24;
/tags/2014-08-05_centre/base_de_donnees/infloris_export_sql.sh
New file
0,0 → 1,15
# Script d'export des données d'INFLORIS intégrées dans eFlore v1.1
# Auteurs : David DELON, Jean-Pascal MILCENT
# Date : 28 septembre 2007
VERSION_ID=40
BDD_NOM="gentiana_prod_eflore_v1_1_principale"
MDP=
FICHIER_EXPORT="infloris_v1_00_export.sql"
# Module PROJET
echo "DELETE FROM eflore_projet_version WHERE eprv_id_version = $VERSION_ID;" >> $FICHIER_EXPORT
/opt/lampp/bin/mysqldump -t -u root -p$MDP -w "eprv_id_version = $VERSION_ID" $BDD_NOM eflore_projet_version >> $FICHIER_EXPORT
# Module CHOROLOGIE
echo "DELETE FROM eflore_chorologie_donnee WHERE ecd_id_version_projet_donnee_choro = $VERSION_ID;" >> $FICHIER_EXPORT
/opt/lampp/bin/mysqldump -t -u root -p$MDP -w "ecd_id_version_projet_donnee_choro = $VERSION_ID" $BDD_NOM eflore_chorologie_donnee >> $FICHIER_EXPORT
echo "DELETE FROM eflore_chorologie_information WHERE eci_id_version_projet_info_choro = $VERSION_ID;" >> $FICHIER_EXPORT
/opt/lampp/bin/mysqldump -t -u root -p$MDP -w "eci_id_version_projet_info_choro = $VERSION_ID" $BDD_NOM eflore_chorologie_information >> $FICHIER_EXPORT
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 2014-08-05_centre/index.php
===================================================================
--- 2014-08-05_centre/index.php (revision 0)
+++ 2014-08-05_centre/index.php (revision 120)
@@ -0,0 +1,105 @@
+<?php
+/**
+* gentiana - index.php
+*
+* Description :
+*
+*@package gentiana
+//Auteur original :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+//Autres auteurs :
+*@author Aucun
+*@copyright Tela-Botanica 1999-2007
+*@version $Revision$ $Date$
+// +------------------------------------------------------------------------------------------------------+
+*/
+define('MAGPIE_DIR', 'api/syndication_rss/magpierss/');
+define('MAGPIE_CACHE_DIR', 'tmp/magpie_cache');
+define('MAGPIE_CACHE_ON', true);
+define('RSS_URL', 'http://www.gentiana.org/page:actu_rss');//http://www.tela-botanica.org/actu/backend.php3
+define('RSS_DESCRIPTION_LONGUEUR', 200);
+require_once MAGPIE_DIR.'rss_fetch.inc';
+require_once 'accueil/class.html2text.inc';
+$rss = fetch_rss(RSS_URL);
+function recupererImage($txt)
+{
+ if (preg_match('/<img .*src="([^"]+)"/', $txt, $match)) {
+ return array('src' => $match[1], 'alt' => $match[2]);
+ }
+ return false;
+}
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+ <head>
+ <title>Gentiana</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
+ <meta http-equiv="Content-style-type" content="text/css" />
+ <meta http-equiv="Content-script-type" content="text/javascript" />
+ <meta http-equiv="Content-language" content="fr" />
+ <meta name="robots" content="noindex,nofollow" />
+ <meta name="author" content="Tela Botanica" />
+ <meta name="keywords" content="Gentiana, association, botanique, botanistes, isère, langue française, France, végétaux, nature, environnement, connaissance, protection, plante, plantes protégées, floristique, cartographie, découvrir, fleurs." />
+ <meta name="description" content="Sites web de l'association Gentiana" />
+ <link rel="stylesheet" type="text/css" media="screen" href="accueil/accueil_simple.css" />
+ <style type="text/css" media="screen"><!-- @import "accueil/accueil_prairie.css"; --></style>
+ <link rel="stylesheet" type="text/css" media="print" href="accueil/impression.css" />
+ <link rel="alternate stylesheet" type="text/css" media="screen" href="accueil/accueil_bas_debit.css" title="Connexion bas débit" />
+ </head>
+ <body>
+ <div id="centrage">
+ <div id="cartouche">
+ <h1><a href="/" title="Retour à la page d'accueil"><img id="logo_gentiana" src="accueil/logo_gentiana.png" alt="Gentiana"/></a></h1>
+ <div id="zone_sites">
+ <h1 id="titre_sites">Sites de l'association Gentiana</h1>
+ <ul id="liste_sites">
+ <li id="site_asso_gentiana"><a href="http://www.gentiana.org/site:gentiana">L'association Gentiana</a></li>
+ <li id="site_flore_isere"><a href="http://www.gentiana.org/site:flore">La flore de l'Isère</a></li>
+ <li id="site_gestion_raisonnable"><a href="http://www.gentiana.org/site:gestion">La gestion raisonnable</a></li>
+ <!-- <li id="site_animation_botanique"><a href="http://www.gentiana.org/site:animation">Animation botanique</a></li> -->
+ </ul>
+ </div>
+ <div id="zone_actu">
+ <h1 id="titre_actu" title="<?=$rss->channel['title'];?>">Actualités &bull; Agenda</h1>
+ <ul id="liste_actu">
+ <?php foreach ($rss->items as $item) : ?>
+ <?php
+ // Si Atom nous remplissons le champ description
+ if (isset($item['atom_content']) && !isset($item['description'])) {
+ $item['description'] = $item['atom_content'];
+ }
+ // Récupération d'une image présente dans le txt
+ $image = recupererImage($item['description']);
+ if ($image) {
+ $item['image'] = $image;
+ }
+ // Nettoyage du html
+ $h2t = new html2text($item['description']);
+ $item['description'] = $h2t->get_text();
+ ?>
+ <li class="rss_actu">
+ <h2 class="rss_titre"><a href="<?=$item['link']; ?>"><?=$item['title']; ?></a></h2>
+ <?php if ($image) : ?>
+ <img class="rss_image" src="<?=$item['image']['src'];?>" alt="<?=$item['image']['alt'];?>" width="50" height="50"/>
+ <?php endif; ?>
+ <p class="rss_date">Publié le <?=strftime('%d.%m.%Y',strtotime($item['pubdate'])); ?></p>
+ <p class="rss_description"><? echo substr($item['description'],0, RSS_DESCRIPTION_LONGUEUR).'...'; ?></p>
+ </li>
+ <?php endforeach; ?>
+ </ul>
+ </div>
+ <div id="zone_logos">
+ <h1 id="titre_logos">Les partenaires de Gentiana</h1>
+ <ul id="liste_logos">
+ <li id="logo_cg_isere"><a href="http://www.cg38.fr/" title="Aller sur le site du Conseil Générale de l'Isère"><img src="accueil/logo_cg_isere.png" alt="Conseil Générale de l'Isère"/></a></li>
+ <li id="logo_tela_botanica"><a href="http://www.tela-botanica.org/" title="Aller sur le site de Tela Botanica"><img src="accueil/logo_tela_botanica.png" alt="Conseil Générale de l'Isère"/></a></li>
+ <li id="logo_rhone_alpes"><a href="http://www.rhonealpes.fr/" title="Aller sur le site de Rhône-Alpes"><img src="accueil/logo_rhone_alpes.png" alt="Rhônes-Alpes"/></a></li>
+ </ul>
+ </div>
+ </div>
+ </div>
+ <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
+ <script type="text/javascript">_uacct = "UA-2735398-1";urchinTracker();</script>
+ </body>
+</html>
\ No newline at end of file
Index: 2014-08-05_centre/.settings/org.eclipse.core.resources.prefs
===================================================================
--- 2014-08-05_centre/.settings/org.eclipse.core.resources.prefs (revision 0)
+++ 2014-08-05_centre/.settings/org.eclipse.core.resources.prefs (revision 120)
@@ -0,0 +1,5 @@
+eclipse.preferences.version=1
+encoding//sites/flore/fr/squelettes/flore.html=ISO-8859-15
+encoding//sites/gentiana/fr/squelettes/gentiana.html=ISO-8859-15
+encoding//sites/gestion/fr/squelettes/gestion.html=ISO-8859-15
+encoding/<project>=ISO-8859-15
Index: 2014-08-05_centre/.settings/org.eclipse.php.core.prefs
===================================================================
--- 2014-08-05_centre/.settings/org.eclipse.php.core.prefs (revision 0)
+++ 2014-08-05_centre/.settings/org.eclipse.php.core.prefs (revision 120)
@@ -0,0 +1,3 @@
+#Tue Jan 19 16:30:02 CET 2010
+eclipse.preferences.version=1
+include_path=0;/gentiana.org
Index: 2014-08-05_centre/client/eflore/configuration/ef_config.inc.php
===================================================================
--- 2014-08-05_centre/client/eflore/configuration/ef_config.inc.php (revision 0)
+++ 2014-08-05_centre/client/eflore/configuration/ef_config.inc.php (revision 120)
@@ -0,0 +1,203 @@
+<?php
+/*vim: set expandtab tabstop=4 shiftwidth=4: */
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.3 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This file is part of eFlore-consultation. |
+// | |
+// | Foobar is free software; you can redistribute it and/or modify |
+// | it under the terms of the GNU General Public License as published by |
+// | the Free Software Foundation; either version 2 of the License, or |
+// | (at your option) any later version. |
+// | |
+// | Foobar is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
+// | GNU General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU General Public License |
+// | along with Foobar; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+// CVS : $Id: ef_config.inc.php.sauv,v 1.1 2005/12/21 15:11:13 jp_milcent Exp $
+/**
+* Fichier de configuration des paramêtres sépcifique à un déploiement d'eFlore.
+*
+* Fichier contenant des constantes et des variables globales permettant de configurer eFlore-consultation.
+*
+*@package eflore
+*@subpackage configuration
+//Auteur original :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+//Autres auteurs :
+*@author Aucun
+*@copyright Tela-Botanica 2000-2005
+*@version $Revision: 1.1 $
+// +------------------------------------------------------------------------------------------------------+
+*/
+// +------------------------------------------------------------------------------------------------------+
+// LA LIVRAISON :
+define('EF_LIVRAISON', 'HEAD');
+
+// +------------------------------------------------------------------------------------------------------+
+// LA DISTRIBUTION :
+/** Constante stockant le nom de la distribution. Utile lorsqu'on déploie eFlore pour un site particulier et
+ * que l'on veut pouvoir employer des squelettes particuliers pour chaque module.*/
+define('EF_DISTRIBUTION', 'gentiana');
+
+// +------------------------------------------------------------------------------------------------------+
+// Définition des valeurs par défaut de l'interface d'eFlore
+$GLOBALS['_EFLORE_']['titre'] = 'eFlore';// Le titre générique de l'application
+$GLOBALS['_EFLORE_']['titre_fichier'] = $GLOBALS['_EFLORE_']['titre'];// Le titre générique pour les fichiers générés par l'application
+$GLOBALS['_EFLORE_']['projets_affichables'] = 1000;// Affiche tous les projets : null; BDNBE : 1006 ; BDNFF : 1000 (en mettre plusieurs séparés par des virgules)
+$GLOBALS['_EFLORE_']['projet_defaut'] = 1000;// Identifiant du projet sélectionné par défaut parmis les projets affichables
+$GLOBALS['_EFLORE_']['projet_version_unique'] = 25;// Identifiant de la version du projet de la BDNFF (défaut) // BDNFF : 25 ; BDNBE : 26 ; Toute version : null
+$GLOBALS['_EFLORE_']['projet_version_defaut'] = 25;// Identifiant du projet de la BDNFF (défaut)
+
+// +------------------------------------------------------------------------------------------------------+
+// Gestion de Papyrus
+if (defined('PAP_VERSION')) {
+ // Les variables suivantes sont configurées dans Papyrus via les "Arguments de l'application" dans l'interface de
+ // modification d'un menu.
+ if (isset($GLOBALS['_GEN_commun']['info_application']->titre)) {
+ $GLOBALS['_EFLORE_']['titre'] = $GLOBALS['_PAPYRUS_']['page']['titre'];
+ }
+ if (isset($GLOBALS['_GEN_commun']['info_application']->projets)) {
+ $GLOBALS['_EFLORE_']['projets_affichables'] = $GLOBALS['_GEN_commun']['info_application']->projets;
+ }
+ if (isset($GLOBALS['_GEN_commun']['info_application']->projet_defaut)) {
+ $GLOBALS['_EFLORE_']['projet_defaut'] = $GLOBALS['_GEN_commun']['info_application']->projet_defaut;
+ }
+ if (isset($GLOBALS['_GEN_commun']['info_application']->projet_version_unique)) {
+ $GLOBALS['_EFLORE_']['projet_version_unique'] = $GLOBALS['_GEN_commun']['info_application']->projet_version_unique;
+ }
+ if (isset($GLOBALS['_GEN_commun']['info_application']->projet_version_defaut)) {
+ $GLOBALS['_EFLORE_']['projet_version_defaut'] = $GLOBALS['_GEN_commun']['info_application']->projet_version_defaut;
+ }
+}
+
+// Pour un fonctionnement d'eFlore hors papyrus
+else {
+ define('PAP_CHEMIN_API_PEAR', '/opt/lampp/lib/php/');
+ // Indiquer ici un chemin vers une installation de papyrus
+ define('PAP_CHEMIN_RACINE', '/home/jpm/web/papyrus_bp');
+ define('GEN_CHEMIN_WIKINI', PAP_CHEMIN_RACINE.'/wikini/');
+ define('GEN_CHEMIN_CLIENT', PAP_CHEMIN_RACINE.'/client/');
+ set_include_path(get_include_path().PATH_SEPARATOR.PAP_CHEMIN_RACINE);
+}
+
+// +------------------------------------------------------------------------------------------------------+
+// Définition de la langue
+/** Constante stockant la langue principale utilisée pour l'application.*/
+define('EF_LANGUE_PRINCIPALE', 'fr');
+/** Constante stockant si on utilise ou pas l'utf-8 pour la connexion à la bdd. La bdd doit être en utf8.*/
+define('EF_LANGUE_UTF8', true);
+/** Paramêtres indiquant que l'on est en français pourpermettre la mise en majuscule des caractères accentués. */
+setlocale(LC_CTYPE, 'fr_FR');
+/** Paramêtres indiquant l'encodage à utiliser pour la sortie. */
+$GLOBALS['_EFLORE_']['encodage'] = 'HTML-ENTITIES';
+
+// +------------------------------------------------------------------------------------------------------+
+// Débogage
+/** Constante stockant si oui ou non on veut afficher le débogage.*/
+define('EF_DEBOGAGE', true);
+/** Constante stockant si oui ou non on veut afficher le débogage des fichiers PEAR.*/
+define('EF_DEBOGAGE_PEAR', false);
+/** Constante stockant la chaine permettant de repérer en se basabt sur le chemin, les fichiers provenant de la bibliothèque PEAR.*/
+define('EF_DEBOGAGE_PEAR_CHAINE', '/lib/php/');
+/** Constante stockant une expression régulière permettant de repérer en se basant sur le message, les fichiers provenant de la bibliothèque PEAR.*/
+define('EF_DEBOGAGE_PEAR_REGEXP_MESSAGE', '/^Non-static method (?:DB::connect|PEAR::isError)/');
+/** Constante stockant si oui ou non on veut afficher le contexte de débogage.*/
+define('EF_DEBOGAGE_CONTEXTE', false);
+/** Constante stockant une valeur correspondant au niveau d'erreur à employer pour le code PHP.*/
+define('EF_DEBOGAGE_NIVEAU', 2048);// Voir le manuel de PHP pour les différents niveaux disponibles.
+/** Constante stockant si oui ou nom on veut afficher le tableau de chronométrage de l'application.*/
+define('EF_DEBOGAGE_CHRONO', true);
+
+// +------------------------------------------------------------------------------------------------------+
+// Paramétrage de la base de données.
+/** Constante stockant le protocole de la base de données.*/
+define('EF_BDD_PROTOCOLE', 'mysql');
+/** Constante stockant le nom du serveur de bases de données.*/
+define('EF_BDD_SERVEUR', 'localhost');
+/** Constante stockant le nom de l'utilisateur de la base de données.*/
+define('EF_BDD_UTILISATEUR', '');
+/** Constante stockant le mot de passse de l'utilisateur de la base de données.*/
+define('EF_BDD_MOT_DE_PASSE', '');
+/** Constante stockant le nom de la base de données principale.*/
+define('EF_BDD_NOM_PRINCIPALE', 'gentiana_prod_eflore_v1_1_principale');
+/** Constante stockant le nom de la base de données principale.*/
+define('EF_BDD_NOM_HISTORIQUE', 'gentiana_prod_eflore_v1_1_historique');
+
+// +------------------------------------------------------------------------------------------------------+
+// Définition des chemins où stocker les fichiers
+/** Constante stockant le chemin vers le dossier où sont stockés les images png créées par la bibliothèque cartographique.*/
+define('EF_CHEMIN_CARTE_STOCKAGE', EF_CHEMIN_APPLI.'../../sites/flore/generique/images/cartes/');
+/** Constante stockant si oui ou non, nous stockons les images en local.*/
+define('EF_BOOL_STOCKAGE_IMG', true);
+/** Constante stockant le chemin vers le dossier où sont stockés les illustrations récupérées depuis les sites partenaires.*/
+define('EF_CHEMIN_IMG_STOCKAGE', EF_CHEMIN_APPLI.'../../sites/flore/generique/images/illustrations/');
+/** Constante stockant si oui ou non, nous appliquons un mécanisme de cache.*/
+define('EF_BOOL_STOCKAGE_CACHE', true);
+/** Constante stockant le chemin vers le dossier où sont stockés les pages mise en cache.*/
+define('EF_CHEMIN_STOCKAGE_CACHE', '/home/gentiana/www/tmp/eflore_cache/');
+
+// +------------------------------------------------------------------------------------------------------+
+// Les Programmes Extérieurs
+/** Constante stockant le chemin vers l'application externe Image Magick - Convert.*/
+define('EF_PROG_CONVERT', '/usr/bin/convert');
+
+// +------------------------------------------------------------------------------------------------------+
+// Les URLs
+/** Constante stockant l'URL de base de l'application recherche de plante sous forme de chaine txt.*/
+define('EF_URL', 'http://www.gentiana.org//eflore/');
+/** Constante stockant l'URL de base où chercher les illustrations des projets hébergés par Tela Botanica.*/
+define('EF_URL_IMG', 'http://www.gentiana.org/sites/flore/generique/images/%s');
+/** Constante stockant l'URL où sont accessible les cartes. Le %s correspond au nom du fichier.*/
+define('EF_URL_CARTO', 'http://www.gentiana.org/sites/flore/generique/images/cartes/%s');
+
+/** Constante stockant l'URL du fichier css "complexe" (= pour les navigateurs récents) de Tela Botanica.*/
+define('EF_URL_CSS_TB_COMPLEXE', 'http://www.tela-botanica.org/sites/commun/fr/styles/commun_complexe.css');
+/** Constante stockant l'URL du fichier css "simple" (= pour les vieux navigateurs) de Tela Botanica.*/
+define('EF_URL_CSS_TB_SIMPLE', 'http://www.tela-botanica.org/sites/commun/fr/styles/commun_simple.css');
+/** Constante stockant l'URL du fichier css "impression" de Tela Botanica.*/
+define('EF_URL_CSS_TB_IMPRESSION', 'http://www.tela-botanica.org/sites/commun/fr/styles/impression.css');
+/** Constante stockant l'URL du fichier css d'eFlore.*/
+define('EF_URL_CSS_EFLORE', 'http://www.tela-botanica.org/sites/eflore/fr/styles/eflore.css');
+
+/** Constante stockant le chemin (l'url) vers le dossier js (javascript)*/
+define('EF_URL_JS','http://www.gentiana.org/client/eflore_head/bibliotheque/js/');
+
+/** Constante stockant l'URL vers le dossier contenant les bases Xper.*/
+define('EF_URL_XPER_BASE', 'http://www.tela-botanica.org/sites/eflore/fr/documents/bases_xper/');
+/** Constante stockant l'URL vers les fichiers .jar de l'applette Xper.*/
+define('EF_URL_XPER_JAR', 'http://lis.snv.jussieu.fr/apps/xper2/identification/');
+/** Constante stockant l'URL d'accès à l'applette d'Xper.*/
+define('EF_URL_XPER_APPLETTE', EF_URL.'xper'.DIRECTORY_SEPARATOR.'%s');
+
+// +------------------------------------------------------------------------------------------------------+
+// La gestion du wikini
+/** Nom du wikini utilisé pour eFlore.*/
+define('EF_WIKI_NOM', 'flora');
+/** Chemin vers le dossier "bibliotheque" de l'intégrateur wikini utilisé pour eFlore.*/
+define('EF_WIKI_CHEMIN_BIBLIO', PAP_CHEMIN_RACINE.'/client/integrateur_wikini/bibliotheque/');
+
+// +------------------------------------------------------------------------------------------------------+
+// La gestion de l'affichage de l'application
+/** Constante permettant de savoir si on veut tenir compte ou pas du "x" des hybrides dans le trie alphabétique pour la
+ * recherche.*/
+define('EF_TRI_HYBRIDE', false);// true pour ne pas tenir compte du "x" sinon false
+/** Constante permettant de connaitre les choix du nombre de documents à afficher pour le fragmenteur.*/
+define('EF_FRAGMENTEUR_PAR_PAGE', '10,20,50,100,200');// séparer les nombre par des virgules
+/** Constante permettant de connaitre le choix du nombre de documents à afficher pour le fragmenteur par défaut.*/
+define('EF_FRAGMENTEUR_PAR_PAGE_DEFAUT', '20');// Doit contenir une valeur présente dans EF_FRAGMENTEUR_PAR_PAGE
+
+/* +--Fin du code ----------------------------------------------------------------------------------------+
+*
+* $Log$
+*
+* +-- Fin du code ----------------------------------------------------------------------------------------+
+*/
+?>
/2014-08-05_centre/client/eflore/configuration/ef_config.inc.php
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 2014-08-05_centre/client/bazar/bazar.php
===================================================================
--- 2014-08-05_centre/client/bazar/bazar.php (revision 0)
+++ 2014-08-05_centre/client/bazar/bazar.php (revision 120)
@@ -0,0 +1,430 @@
+<?php
+/*vim: set expandtab tabstop=4 shiftwidth=4: */
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+// CVS : $Id: bazar.php,v 1.45 2007-09-18 14:24:01 alexandre_tb Exp $
+/**
+*
+*@package bazar
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+*@author Florian Schmitt <florian@ecole-et-nature.org>
+//Autres auteurs :
+*@copyright Tela-Botanica 2000-2004
+*@version $Revision: 1.45 $ $Date: 2007-09-18 14:24:01 $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | ENTETE du PROGRAMME |
+// +------------------------------------------------------------------------------------------------------+
+
+error_reporting(E_ALL);
+require_once PAP_CHEMIN_API_PEAR.'DB.php' ;
+require_once PAP_CHEMIN_API_PEAR.'Auth.php' ;
+require_once 'configuration/baz_config.inc.php'; //fichier de configuration de Bazar
+require_once 'bibliotheque/bazar.class.php';
+require_once 'bibliotheque/bazar.fonct.php'; //fichier des fonctions de Bazar
+
+if (defined('PAP_VERSION')) { //si on est dans Papyrus
+ GEN_stockerStyleExterne( 'bazar_interne', 'client/bazar/bazar.interne.css');
+}
+
+//**********************************************************************************************************
+//initialisation des paramêtres papyrus
+//**********************************************************************************************************
+//si un parametre est précisé dans le gestionnaire de menus papyrus, on le prends en compte
+
+//parametre action pour lancer directement l'action indiquée
+if (!isset($_GET['action'])and(isset($GLOBALS['_GEN_commun']['info_application']->action))) {
+ $_GET['action']=$GLOBALS['_GEN_commun']['info_application']->action;
+}
+
+//parametre vue pour afficher directement une vue
+if (!isset($_GET[BAZ_VARIABLE_VOIR])and(isset($GLOBALS['_GEN_commun']['info_application']->vue))) {
+ $_GET[BAZ_VARIABLE_VOIR]=$GLOBALS['_GEN_commun']['info_application']->vue;
+}
+
+// Si le parametre vue est vide on le positionne a 1
+if (!isset($_GET[BAZ_VARIABLE_VOIR])) {
+ $_GET[BAZ_VARIABLE_VOIR] = BAZ_VOIR_CONSULTER;
+}
+
+
+//parametre voir_menu pour afficher le menu ou pas (par défaut, il l'affiche)
+if ((isset($GLOBALS['_GEN_commun']['info_application']->voir_menu))and($GLOBALS['_GEN_commun']['info_application']->voir_menu==0)) {
+ $GLOBALS['_BAZAR_']['affiche_menu']=0;
+}
+else $GLOBALS['_BAZAR_']['affiche_menu']=1;
+
+//parametre categorie_nature pour préciser quels types de fiches sont montrees (par défaut, il affiche les id_menu=0)
+if (isset($GLOBALS['_GEN_commun']['info_application']->categorie_nature)) {
+ $GLOBALS['_BAZAR_']['categorie_nature']=$GLOBALS['_GEN_commun']['info_application']->categorie_nature;
+}
+elseif (isset($_REQUEST['categorie_nature'])) {
+ $GLOBALS['_BAZAR_']['categorie_nature']=$_REQUEST['categorie_nature'];
+}
+else $GLOBALS['_BAZAR_']['categorie_nature']=0;
+
+//parametre id_nature pour afficher un certain type de fiche (par défaut, tous les types de fiches)
+if (isset($GLOBALS['_GEN_commun']['info_application']->id_nature)) {
+ $GLOBALS['_BAZAR_']['id_typeannonce']=$GLOBALS['_GEN_commun']['info_application']->id_nature;
+}
+elseif (!isset($GLOBALS['_BAZAR_']['typeannonce'])) $GLOBALS['_BAZAR_']['typeannonce']='toutes';
+
+//**********************************************************************************************************
+//initialisation de la variable globale de bazar
+//**********************************************************************************************************
+$GLOBALS['id_user']=$GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_ID);
+
+//Recuperer les eventuelles variables passees en GET ou en POST
+if (isset($_REQUEST['id_fiche'])) {
+ $GLOBALS['_BAZAR_']['id_fiche']=$_REQUEST['id_fiche'];
+ // récupération du type d'annonce à partir de la fiche
+ $requete = 'select bf_ce_nature from bazar_fiche where bf_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'] ;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query ($requete) ;
+ if (DB::isError($resultat)) {
+ echo $resultat->getMessage().'<br />'.$resultat->getInfoDebug();
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
+ $GLOBALS['_BAZAR_']['id_typeannonce'] = $ligne->bf_ce_nature ;
+ $resultat->free();
+}
+if (isset($_REQUEST['typeannonce'])) {
+ $GLOBALS['_BAZAR_']['id_typeannonce']=$_REQUEST['typeannonce'];
+}
+
+if ((isset($GLOBALS['_BAZAR_']['id_typeannonce']))and($GLOBALS['_BAZAR_']['id_typeannonce']!='toutes')) {
+ $requete = 'SELECT bn_label_nature, bn_condition, bn_template, bn_commentaire, bn_appropriation, bn_image_titre, bn_image_logo FROM bazar_nature WHERE bn_id_nature = '.$GLOBALS['_BAZAR_']['id_typeannonce'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
+ $GLOBALS['_BAZAR_']['typeannonce']=$ligne['bn_label_nature'];
+ $GLOBALS['_BAZAR_']['condition']=$ligne['bn_condition'];
+ $GLOBALS['_BAZAR_']['template']=$ligne['bn_template'];
+ $GLOBALS['_BAZAR_']['commentaire']=$ligne['bn_commentaire'];
+ $GLOBALS['_BAZAR_']['appropriation']=$ligne['bn_appropriation'];
+ $GLOBALS['_BAZAR_']['image_titre']=$ligne['bn_image_titre'];
+ $GLOBALS['_BAZAR_']['image_logo']=$ligne['bn_image_logo'];
+}
+if (!isset($GLOBALS['_BAZAR_']['id_typeannonce'])) $GLOBALS['_BAZAR_']['id_typeannonce'] = 'toutes' ;
+// +------------------------------------------------------------------------------------------------------+
+// | LISTE de FONCTIONS |
+// +------------------------------------------------------------------------------------------------------+
+if ($GLOBALS['_BAZAR_']['affiche_menu']) {
+ //---------------le menu de l'appli-----------
+ function afficherContenuNavigation () {
+ $res ='<ul id="BAZ_menu">'."\n";
+
+ // Gestion de la vue par défaut
+ if (!isset($_GET[BAZ_VARIABLE_VOIR])) {
+ $_GET[BAZ_VARIABLE_VOIR] = BAZ_VOIR_DEFAUT;
+ }
+
+ //partie consultation d'annonces
+ if (strstr(BAZ_VOIR_AFFICHER, strval(BAZ_VOIR_CONSULTER))) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_CONSULTER);
+ $res .= '<li id="consulter"';
+ if ((isset($_GET[BAZ_VARIABLE_VOIR]) && $_GET[BAZ_VARIABLE_VOIR] == BAZ_VOIR_CONSULTER)) $res .=' class="onglet_actif" ';
+ $res .='><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_CONSULTER.'</a>'."\n".'</li>'."\n";
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR);
+ }
+
+ // Mes fiches
+ if (strstr(BAZ_VOIR_AFFICHER, strval(BAZ_VOIR_MES_FICHES))) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_MES_FICHES);
+ $res .= '<li id="consulter"';
+ if (isset($_GET[BAZ_VARIABLE_VOIR]) && $_GET[BAZ_VARIABLE_VOIR] == BAZ_VOIR_MES_FICHES) $res .=' class="onglet_actif" ';
+ $res .= '><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_VOIR_VOS_ANNONCES.'</a>'."\n".'</li>'."\n";
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR);
+ }
+
+ //partie abonnement aux annonces
+ if (strstr(BAZ_VOIR_AFFICHER, strval(BAZ_VOIR_S_ABONNER))) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_S_ABONNER);
+ $res .= '<li id="inscrire"';
+ if (isset($_GET[BAZ_VARIABLE_VOIR]) && $_GET[BAZ_VARIABLE_VOIR]==BAZ_VOIR_S_ABONNER) $res .=' class="onglet_actif" ';
+ $res .= '><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_S_ABONNER.'</a></li>'."\n" ;
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR);
+ }
+
+ //partie saisie d'annonces
+ if (strstr(BAZ_VOIR_AFFICHER, strval(BAZ_VOIR_SAISIR))) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_SAISIR);
+ $res .= '<li id="deposer"';
+ if (isset($_GET[BAZ_VARIABLE_VOIR]) && ($_GET[BAZ_VARIABLE_VOIR]==BAZ_VOIR_SAISIR )) $res .=' class="onglet_actif" ';
+ $res .='><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_SAISIR.'</a>'."\n".'</li>'."\n";
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR);
+ }
+
+ //choix des administrateurs
+ $utilisateur = new Administrateur_bazar($GLOBALS['AUTH']) ;
+ $est_admin=0;
+ if ($GLOBALS['AUTH']->getAuth()) {
+ $requete='SELECT bn_id_nature FROM bazar_nature';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ if ($utilisateur->isAdmin ($ligne['bn_id_nature'])) {
+ $est_admin=1;
+ }
+ }
+ if ($est_admin || $utilisateur->isSuperAdmin()) {
+ //partie administrer
+ if (strstr(BAZ_VOIR_AFFICHER, strval(BAZ_VOIR_ADMIN))) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_ADMIN);
+ $res .= '<li id="administrer"';
+ if (isset($_GET[BAZ_VARIABLE_VOIR]) && $_GET[BAZ_VARIABLE_VOIR]==BAZ_VOIR_ADMIN) $res .=' class="onglet_actif" ';
+ $res .='><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_ADMINISTRER.'</a></li>'."\n";
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR);
+ }
+
+ if ($utilisateur->isSuperAdmin()) {
+ if (strstr(BAZ_VOIR_AFFICHER, strval(BAZ_VOIR_GESTION_DROITS))) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_GESTION_DROITS);
+ $res .= '<li id="gerer"';
+ if (isset($_GET[BAZ_VARIABLE_VOIR]) && $_GET[BAZ_VARIABLE_VOIR]==BAZ_VOIR_GESTION_DROITS) $res .=' class="onglet_actif" ';
+ $res .='><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_GESTION_DES_DROITS.'</a></li>'."\n" ;
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR);
+ }
+ }
+ }
+ }
+ // Au final, on place dans l url, l action courante
+ if (isset($_GET[BAZ_VARIABLE_VOIR])) $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, $_GET[BAZ_VARIABLE_VOIR]);
+ $res.= '</ul>'."\n";
+ return $res ;
+ }
+}
+
+function afficherContenuCorps() {
+ $res = '';
+ $res.='<h1 id="titre_bazar">'.$GLOBALS['_GEN_commun']['info_menu']->gm_titre.'</h1>'."\n";
+
+ // La resolution des actions ci-dessous AVANT l afichage des vues afin
+ // d afficher des vues correctes
+
+ if (isset($_GET['action'])) {
+ if (($_GET['action']!=BAZ_ACTION_NOUVEAU_V)and($_GET['action']!=BAZ_ACTION_MODIFIER_V)) unset($_SESSION['formulaire_annonce_valide']);
+ switch ($_GET['action']) {
+ case BAZ_ACTION_VOIR_VOS_ANNONCES : $res .= mes_fiches(); break;
+ //case BAZ_VOIR_TOUTES_ANNONCES : $res .= baz_liste($GLOBALS['_BAZAR_']['id_typeannonce']); break;
+ //case BAZ_DEPOSER_ANNONCE : $res .= baz_formulaire(BAZ_DEPOSER_ANNONCE); break;
+ case BAZ_ANNONCES_A_VALIDER : $res .= fiches_a_valider(); break;
+ case BAZ_ADMINISTRER_ANNONCES : $res .= baz_administrer_annonces(); break;
+ //case BAZ_MODIFIER_FICHE : $res .= baz_formulaire(BAZ_ACTION_MODIFIER); break;
+ case BAZ_SUPPRIMER_FICHE : $res .= baz_suppression().baz_liste('',$GLOBALS['id_user'],''); break;
+ case BAZ_VOIR_FICHE : $res .= baz_voir_fiche(1); break;
+ //case BAZ_ACTION_NOUVEAU : $res .= baz_formulaire(BAZ_ACTION_NOUVEAU); break;
+ case BAZ_ACTION_NOUVEAU_V : $res .= baz_formulaire(BAZ_ACTION_NOUVEAU_V).mes_fiches(); break;
+ //case BAZ_ACTION_MODIFIER : $res .= baz_formulaire(BAZ_ACTION_MODIFIER); break;
+ case BAZ_ACTION_MODIFIER_V : $res .= baz_formulaire(BAZ_ACTION_MODIFIER_V).baz_voir_fiche(1); break;
+ case BAZ_ACTION_SUPPRESSION : $res .= baz_suppression(); unset ($_GET['action']); break;
+ case BAZ_ACTION_PUBLIER : publier_fiche(1) ; break;
+ case BAZ_ACTION_PAS_PUBLIER : publier_fiche(0) ;$res .= fiches_a_valider(); break;
+ //case BAZ_GERER_DROITS : $res .= baz_gestion_droits(); break;
+ case BAZ_S_INSCRIRE : $res .= baz_s_inscrire(); break;
+ case BAZ_VOIR_FLUX_RSS : header('Content-type: text/xml; charset=UTF-8');include("bazarRSS.php");exit(0);break;
+ //default : $res .= baz_liste($GLOBALS['_BAZAR_']['id_typeannonce']) ;
+ }
+
+ }
+ if (isset ($_GET[BAZ_VARIABLE_VOIR])) {
+ switch ($_GET[BAZ_VARIABLE_VOIR]) {
+ case BAZ_VOIR_CONSULTER:
+ if (isset ($_GET['action']) && $_GET['action'] != BAZ_VOIR_TOUTES_ANNONCES) $res .= baz_formulaire($_GET['action']) ; else $res .= baz_liste($GLOBALS['_BAZAR_']['id_typeannonce']);
+ break;
+ case BAZ_VOIR_MES_FICHES :
+ if (isset ($_GET['action'])) $res .= baz_formulaire($_GET['action']) ; else $res .= mes_fiches();
+ break;
+ case BAZ_VOIR_S_ABONNER : $res .= baz_s_inscrire();
+ break;
+ case BAZ_VOIR_SAISIR :
+ if (isset ($_GET['action'])) $res .= baz_formulaire($_GET['action']) ; else $res .= baz_formulaire(BAZ_DEPOSER_ANNONCE);
+ break;
+ case BAZ_VOIR_ADMIN:
+ if (isset($_GET['action'])) $res .= baz_formulaire($_GET['action']) ; else $res .= fiches_a_valider();
+ break;
+ case BAZ_VOIR_GESTION_DROITS: $res .= baz_gestion_droits();
+ break;
+ default :
+ $res .= baz_liste($GLOBALS['_BAZAR_']['id_typeannonce']);
+ }
+ }
+ return $res ;
+}
+
+
+/* +--Fin du code ----------------------------------------------------------------------------------------+
+*
+* $Log: bazar.php,v $
+* Revision 1.45 2007-09-18 14:24:01 alexandre_tb
+* onglet administrer
+*
+* Revision 1.44 2007-09-06 15:39:28 alexandre_tb
+* fixation d une valeur par defaut a la variable vue pour
+* eviter un ecran vide si pas de parametres dans le menu
+*
+* Revision 1.43 2007-08-27 12:26:04 alexandre_tb
+* Mise en place de l action BAZ_VOIR_ADMIN
+*
+* Revision 1.42 2007-07-05 08:29:24 alexandre_tb
+* modification du charset iso-8859-1 vers utf8 lors l'envoie des entetes xml.
+*
+* Revision 1.41 2007-07-04 10:05:12 alexandre_tb
+* ajout d une variable $_GET['vue'] en complement de la variable action.
+* Elle correspond aux 6 vues du bazar (consulter, mes fiches, s'abonner, saisir, administrer, gestion des droits)
+*
+* Revision 1.40 2007/04/11 08:30:12 neiluj
+* remise en état du CVS...
+*
+* Revision 1.35.2.2 2007/03/07 16:53:17 jp_milcent
+* Suppression du query string "action" et non pas "nature"
+*
+* Revision 1.35.2.1 2007/02/15 13:42:16 jp_milcent
+* Utilisation de IN à la place du = dans les requêtes traitant les catégories de fiches.
+* Permet d'utiliser la syntaxe 1,2,3 dans la configuration de categorie_nature.
+*
+* Revision 1.35 2006/10/05 08:53:50 florian
+* amelioration moteur de recherche, correction de bugs
+*
+* Revision 1.34 2006/09/04 15:25:12 alexandre_tb
+* ajout d'un id dans la balise HTML du titre
+*
+* Revision 1.33 2006/06/21 15:41:42 alexandre_tb
+* rétablissement du menu mes fiches
+*
+* Revision 1.32 2006/06/21 15:40:15 alexandre_tb
+* rétablissement du menu mes fiches
+*
+* Revision 1.31 2006/05/19 13:54:32 florian
+* stabilisation du moteur de recherche, corrections bugs, lien recherche avancee
+*
+* Revision 1.30 2006/04/28 12:46:14 florian
+* integration des liens vers annuaire
+*
+* Revision 1.29 2006/04/24 10:16:22 alexandre_tb
+* ajout de la globale filtre.
+* elle remplace (à terme) catégorie nature
+*
+* Revision 1.28 2006/03/29 13:05:41 alexandre_tb
+* utilisation de la classe Administrateur_bazar
+*
+* Revision 1.27 2006/02/07 11:08:36 alexandre_tb
+* utilisation de la classe Utilisateur_bazar pour la vérification des droits
+*
+* Revision 1.26 2006/02/06 09:33:53 alexandre_tb
+* modification de l'affichage lors de la saisie de fiche
+*
+* Revision 1.25 2006/01/30 17:25:38 alexandre_tb
+* correction de bugs
+*
+* Revision 1.24 2006/01/26 11:06:43 alexandre_tb
+* ajout d'une requete pour recupere l'id_nature si un id_fiche est passé dans l'url
+*
+* Revision 1.23 2006/01/17 10:07:36 alexandre_tb
+* en cours
+*
+* Revision 1.22 2006/01/16 15:11:28 alexandre_tb
+* simplification code
+*
+* Revision 1.21 2006/01/13 14:12:52 florian
+* utilisation des temlates dans la table bazar_nature
+*
+* Revision 1.20 2006/01/05 16:28:25 alexandre_tb
+* prise en chage des checkbox, reste la mise à jour à gérer
+*
+* Revision 1.19 2006/01/03 10:19:31 florian
+* Mise à jour pour accepter des parametres dans papyrus: faire apparaitre ou non le menu, afficher qu'un type de fiches, définir l'action par défaut...
+*
+* Revision 1.18 2005/12/02 10:57:03 florian
+* MAJ pour paramétrage dans gestion de menus papyrus
+*
+* Revision 1.17 2005/12/01 16:05:41 florian
+* changement des chemins pour appli Pear
+*
+* Revision 1.16 2005/12/01 15:31:30 florian
+* correction bug modifs et saisies
+*
+* Revision 1.15 2005/11/30 13:58:45 florian
+* ajouts graphisme (logos, boutons), changement structure SQL bazar_fiche
+*
+* Revision 1.14 2005/11/24 16:17:13 florian
+* corrections bugs, ajout des cases à cocher
+*
+* Revision 1.13 2005/11/14 16:04:54 florian
+* maj bug affichage flux
+*
+* Revision 1.12 2005/11/07 17:05:46 florian
+* amélioration validation conditions de saisie, ajout des règles spécifiques de saisie des formulaires
+*
+* Revision 1.11 2005/10/21 16:15:04 florian
+* mise a jour appropriation
+*
+* Revision 1.10 2005/10/12 17:20:33 ddelon
+* Reorganisation calendrier + applette
+*
+* Revision 1.9 2005/10/12 13:35:07 florian
+* amélioration de l'interface de bazar, de manière a simplifier les consultations, et à harmoniser par rapport aux Ressources
+*
+* Revision 1.8 2005/09/30 13:00:05 ddelon
+* Fiche bazar generique
+*
+* Revision 1.7 2005/09/30 12:34:44 ddelon
+* petite modification pour integration bazar dans papyrus
+*
+* Revision 1.6 2005/09/30 12:22:54 florian
+* Ajouts commentaires pour fiche, modifications graphiques, maj SQL
+*
+* Revision 1.4 2005/07/21 19:03:12 florian
+* nouveautés bazar: templates fiches, correction de bugs, ...
+*
+* Revision 1.2 2005/02/22 15:33:32 florian
+* integration dans Papyrus
+*
+* Revision 1.1.1.1 2005/02/17 18:05:11 florian
+* Import initial de Bazar
+*
+* Revision 1.1.1.1 2005/02/17 11:09:50 florian
+* Import initial
+*
+* Revision 1.1.1.1 2005/02/16 18:06:35 florian
+* import de la nouvelle version
+*
+* Revision 1.3 2004/07/05 15:10:14 florian
+* changement interface de saisie
+*
+* Revision 1.2 2004/07/01 10:13:41 florian
+* modif Florian
+*
+* Revision 1.1 2004/06/23 09:58:32 alex
+* version initiale
+*
+* Revision 1.1 2004/06/18 09:00:07 alex
+* version initiale
+*
+*
+* +-- Fin du code ----------------------------------------------------------------------------------------+
+*/
+?>
Index: 2014-08-05_centre/client/bazar/configuration/baz_config.inc.php
===================================================================
--- 2014-08-05_centre/client/bazar/configuration/baz_config.inc.php (revision 0)
+++ 2014-08-05_centre/client/bazar/configuration/baz_config.inc.php (revision 120)
@@ -0,0 +1,275 @@
+<?php
+/*vim: set expandtab tabstop=4 shiftwidth=4: */
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+// CVS : $Id: baz_config.inc.php,v 1.30 2007-07-04 10:04:40 alexandre_tb Exp $
+/**
+* Fichier de configuration du bazar
+*
+* A éditer de façon spécifique à chaque déploiement
+*
+*@package bazar
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+*@author Florian SCHMITT <florian@ecole-et-nature.org>
+//Autres auteurs :
+*@copyright Tela-Botanica 2000-2004
+*@version $Revision: 1.30 $ $Date: 2007-07-04 10:04:40 $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | LES CONSTANTES DES ACTIONS DE BAZAR |
+// +------------------------------------------------------------------------------------------------------+
+
+define ('BAZ_VOIR_TOUTES_ANNONCES', 1) ;
+define ('BAZ_ACTION_VOIR_VOS_ANNONCES', 2);
+define ('BAZ_DEPOSER_ANNONCE', 3) ;
+define ('BAZ_ANNONCES_A_VALIDER', 4) ;
+define ('BAZ_GERER_DROITS', 5) ;
+define ('BAZ_ADMINISTRER_ANNONCES', 6) ;
+define ('BAZ_MODIFIER_FICHE', 7) ;
+if (!defined('BAZ_VOIR_FICHE')) define ('BAZ_VOIR_FICHE', 8) ;
+define ('BAZ_SUPPRIMER_FICHE', 9) ;
+define ('BAZ_ACTION_NOUVEAU', 10) ;
+define ('BAZ_ACTION_NOUVEAU_V', 11) ;
+define ('BAZ_ACTION_MODIFIER', 12) ;
+define ('BAZ_ACTION_MODIFIER_V', 13) ;
+define ('BAZ_ACTION_SUPPRESSION', 14) ;
+define ('BAZ_ACTION_PUBLIER', 15) ;
+define ('BAZ_ACTION_PAS_PUBLIER', 16) ;
+define ('BAZ_S_INSCRIRE', 17);
+define ('BAZ_VOIR_FLUX_RSS', 18);
+
+// Constante des noms des variables
+define ('BAZ_VARIABLE_VOIR', 'vue');
+define ('BAZ_VARIABLE_ACTION', 'action');
+/** Indique les onglets de vues à afficher.*/
+define ('BAZ_VOIR_AFFICHER', '2,5,6');// Indiquer les numéros des vues séparés par des virgules.
+/** Permet d'indiquer la vue par défaut si la variable vue n'est pas défini dans l'url ou dans les paramêtre du menu Papyrus.*/
+define ('BAZ_VOIR_DEFAUT', '2');
+define ('BAZ_VOIR_CONSULTER', 1);
+define ('BAZ_VOIR_MES_FICHES', 2);
+define ('BAZ_VOIR_S_ABONNER', 3);
+define ('BAZ_VOIR_SAISIR', 4);
+define ('BAZ_VOIR_ADMIN', 5);
+define ('BAZ_VOIR_GESTION_DROITS', 6);
+
+
+//==================================== LES FLUX RSS==================================
+// Constantes liées aux flux RSS
+//==================================================================================
+
+define('BAZ_CREER_FICHIERS_XML',0); //0=ne cree pas le fichier XML dans rss/; 1=cree le fichier XML dans rss/
+define('BAZ_RSS_NOMSITE','gentiana.org'); //Nom du site indiqué dans les flux rss
+define('BAZ_RSS_ADRESSESITE','http://www.gentiana.org/'); //Adresse Internet du site indiqué dans les flux rss
+define('BAZ_RSS_DESCRIPTIONSITE','Gentiana, Société botanique dauphinoise Dominique Villars.'); //Description du site indiquée dans les flux rss
+define('BAZ_RSS_LOGOSITE','http://www.gentiana.org/sites/gentiana/generique/images/graphisme/logo_gentiana.png'); //Logo du site indiqué dans les flux rss
+define('BAZ_RSS_MANAGINGEDITOR', 'p.salen@gentiana.org') ; //Managing editor du site
+define('BAZ_RSS_WEBMASTER', 'p.salen@gentiana.org') ; //Mail Webmaster du site
+define('BAZ_RSS_CATEGORIE', 'Botanique'); //catégorie du flux RSS
+
+
+//==================================== PARAMETRAGE =================================
+// Pour régler certaines fonctionnalité de l'application
+//==================================================================================
+
+define ('BAZ_ETAT_VALIDATION', 0);
+//Valeur par défaut d'état de la fiche annonce après saisie
+//Mettre 0 pour 'en attente de validation d'un administrateur'
+//Mettre 1 pour 'directement validée en ligne'
+
+define ('BAZ_TAILLE_MAX_FICHIER', 2000*1024);
+//Valeur maximale en octets pour la taille d'un fichier joint à télécharger
+
+define ('BAZ_TYPE_AFFICHAGE_LISTE', 'jma');
+$GLOBALS['_BAZAR_']['db'] =& $GLOBALS['_GEN_commun']['pear_db'];
+$GLOBALS['AUTH'] =& $GLOBALS['_GEN_commun']['pear_auth'];
+
+define ('BAZ_ANNUAIRE','annuaire'); //Table annuaire
+define ('BAZ_CHAMPS_ID','a_id'); //Champs index sur la table annuaire
+define ('BAZ_CHAMPS_NOM','a_nom'); //Champs nom sur la table annuaire
+define ('BAZ_CHAMPS_PRENOM','a_prenom'); //Champs prenom sur la table annuaire
+define ('BAZ_CHAMPS_EST_STRUCTURE','a_est_structure'); //Champs indiquant si c'est une structure qui est identifiée
+define ('BAZ_CHAMPS_EMAIL','a_mail'); //Champs prenom sur la table annuaire
+define ('BAZ_CHAMPS_NOM_WIKI','a_nom_wikini'); //Champs nom wikini sur la table annuaire
+
+/** Réglage des droits pour déposer des annonces */
+// Mettre à true pour limiter le dépot aux rédacteurs
+define ('BAZ_RESTREINDRE_DEPOT', 0) ;
+
+/** Réglage de l'affichage de la liste deroulante pour la saisie des dates */
+// Mettre à true pour afficher une liste deroulante vide pour la saisie des dates
+define ('BAZ_DATE_VIDE', 0);
+
+/** Réglage de l'URL de l'annuaire */
+// Mettre l'URL correspondant à l'annuaire
+define ('BAZ_URL_ANNUAIRE', 'http://www.gentiana.org/page:annuaire');
+
+// Mettre à true pour faire apparaitre un champs texte déroulant dans le formulaire
+// de recherche des fiches, pour choisir les émetteurs
+define ('BAZ_RECHERCHE_PAR_EMETTEUR', 1) ;
+
+$GLOBALS['_BAZAR_']['url'] = $GLOBALS['_GEN_commun']['url'];
+
+//BAZ_CHEMIN_APPLI : chemin vers l'application bazar METTRE UN SLASH (/) A LA FIN!!!!
+define('BAZ_CHEMIN_APPLI', PAP_CHEMIN_RACINE.'client/bazar/');
+
+/**Choix de l'affichage (true) ou pas (false) de l'email du rédacteur dans la fiche.*/
+define('BAZ_FICHE_REDACTEUR_MAIL', false);// true ou false
+
+//==================================== LES LANGUES ==================================
+// Constantes liées à l'utilisation des langues
+//==================================================================================
+$GLOBALS['_BAZAR_']['langue'] = 'fr-FR';
+define ('BAZ_LANGUE_PAR_DEFAUT', 'fr') ; //Indique un code langue par défaut
+define ('BAZ_VAR_URL_LANGUE', 'lang') ; //Nom de la variable GET qui sera passée dans l'URL (Laisser vide pour les sites monolingues)
+//code pour l'inclusion des langues NE PAS MODIFIER
+if (BAZ_VAR_URL_LANGUE != '' && isset (${BAZ_VAR_URL_LANGUE})) {
+ include_once BAZ_CHEMIN_APPLI.'langues/baz_langue_'.${BAZ_VAR_URL_LANGUE}.'.inc.php';
+} else {
+ include_once BAZ_CHEMIN_APPLI.'langues/baz_langue_'.BAZ_LANGUE_PAR_DEFAUT.'.inc.php';
+}
+
+// Option concernant la division des resultats en pages
+define ('BAZ_NOMBRE_RES_PAR_PAGE', 30);
+define ('BAZ_MODE_DIVISION', 'Jumping'); // 'Jumping' ou 'Sliding' voir http://pear.php.net/manual/fr/package.html.pager.compare.php
+define ('BAZ_DELTA', 12); // Le nombre de page à afficher avant le 'next';
+
+/** Réglage de l'affichage du formulaire de recherche avancee */
+// Mettre à true pour afficher automatiquement le formulaire de recherche avancee, à false pour avoir un lien afficher la recherche avancee
+define ('BAZ_MOTEUR_RECHERCHE_AVANCEE', 1);
+
+/** Réglage de l'utilisation ou non des templates */
+// Mettre à true pour afficher les pages incluses dans la base bazar_template, à false sinon
+define ('BAZ_UTILISE_TEMPLATE', 0);
+
+// Mettre ici le type d'annonce qui va s'afficher dans les calendriers.
+// Il est possible d'indiquer plusieurs identifiant de nature de fiche (bn_id_nature) en séparant les nombre par des
+// virgules : '1,2,3'
+define ('BAZ_NUM_ANNONCE_CALENDRIER', 3);
+
+define ('BAZ_CHEMIN_SQUELETTE', BAZ_CHEMIN_APPLI.'squelettes'.GEN_SEP);
+define ('BAZ_SQUELETTE_DEFAUT', 'baz_cal.tpl.html');
+
+/* +--Fin du code ----------------------------------------------------------------------------------------+
+*
+* $Log: baz_config.inc.php,v $
+* Revision 1.30 2007-07-04 10:04:40 alexandre_tb
+* ajout d une variable $_GET['vue'] en complement de la variable action.
+* Elle correspond aux 6 vues du bazar (consulter, mes fiches, s'abonner, saisir, administrer, gestion des droits)
+*
+* Revision 1.29 2007-06-25 09:57:37 alexandre_tb
+* ajout de constante sur le chemin par defaut des squelettes
+*
+* Revision 1.28 2007/04/20 09:57:21 florian
+* correction bugs suite au merge
+*
+* Revision 1.27 2007/04/11 08:30:12 neiluj
+* remise en état du CVS...
+*
+* Revision 1.21.2.1 2007/02/15 13:43:54 jp_milcent
+* Ajout de commentaire pour la constante utilisée par le Calendrier.
+*
+* Revision 1.21 2006/10/05 08:53:50 florian
+* amelioration moteur de recherche, correction de bugs
+*
+* Revision 1.20 2006/07/04 13:59:01 alexandre_tb
+* Ajout de la constante BAZ_NUM_ANNONCE_CALENDRIER dans le fichier de conf. Elle indique le type d'annonce que le calendrier doit afficher
+*
+* Revision 1.19 2006/06/21 15:40:15 alexandre_tb
+* rétablissement du menu mes fiches
+*
+* Revision 1.18 2006/06/02 09:29:30 florian
+* ajout constante nom wikini
+*
+* Revision 1.17 2006/05/19 13:53:57 florian
+* stabilisation du moteur de recherche, corrections bugs, lien recherche avancee
+*
+* Revision 1.16 2006/05/17 09:48:48 alexandre_tb
+* Ajout des constantes pour le découpage en page
+*
+* Revision 1.15 2006/04/28 12:46:14 florian
+* integration des liens vers annuaire
+*
+* Revision 1.14 2006/03/24 09:23:30 alexandre_tb
+* ajout de la variable globale $GLOBALS['_BAZAR_']['filtre']
+*
+* Revision 1.13 2006/03/14 17:10:21 florian
+* ajout des fonctions de syndication, changement du moteur de recherche
+*
+* Revision 1.12 2006/02/07 13:57:41 alexandre_tb
+* ajout de la constante pour masquer la liste des émetteurs
+*
+* Revision 1.11 2006/01/18 10:03:36 florian
+* recodage de l'insertion et de la maj des données relatives aux listes et checkbox dans des formulaires
+*
+* Revision 1.10 2006/01/03 10:19:31 florian
+* Mise à jour pour accepter des parametres dans papyrus: faire apparaitre ou non le menu, afficher qu'un type de fiches, définir l'action par défaut...
+*
+* Revision 1.9 2005/12/16 15:47:54 alexandre_tb
+* ajout de l'option restreindre dépôt
+*
+* Revision 1.8 2005/10/24 09:42:21 florian
+* mise a jour appropriation
+*
+* Revision 1.7 2005/10/21 16:15:04 florian
+* mise a jour appropriation
+*
+* Revision 1.6 2005/09/30 12:22:54 florian
+* Ajouts commentaires pour fiche, modifications graphiques, maj SQL
+*
+* Revision 1.4 2005/07/21 19:03:12 florian
+* nouveautés bazar: templates fiches, correction de bugs, ...
+*
+* Revision 1.2 2005/02/22 15:34:17 florian
+* integration dans Papyrus
+*
+* Revision 1.1.1.1 2005/02/17 18:05:11 florian
+* Import initial de Bazar
+*
+* Revision 1.1.1.1 2005/02/17 11:09:50 florian
+* Import initial
+*
+* Revision 1.1.1.1 2005/02/16 18:06:35 florian
+* import de la nouvelle version
+*
+* Revision 1.5 2004/07/08 12:15:32 florian
+* ajout constantes pour flux RSS
+*
+* Revision 1.4 2004/07/06 16:21:54 florian
+* débuggage modification + MAJ flux RSS
+*
+* Revision 1.3 2004/07/02 14:50:47 florian
+* ajout configuration de l'etat de l'annonce (visible,masquée,...)
+*
+* Revision 1.2 2004/07/01 10:13:30 florian
+* modif Florian
+*
+* Revision 1.1 2004/06/23 09:58:32 alex
+* version initiale
+*
+* Revision 1.1 2004/06/18 09:00:41 alex
+* version initiale
+*
+*
+* +-- Fin du code ----------------------------------------------------------------------------------------+
+*/
+?>
Index: 2014-08-05_centre/client/bazar/bazar.interne.css
===================================================================
--- 2014-08-05_centre/client/bazar/bazar.interne.css (revision 0)
+++ 2014-08-05_centre/client/bazar/bazar.interne.css (revision 120)
@@ -0,0 +1,260 @@
+/*
+ +----------------------------------------------------------------------------+
+ | bazar.css |
+ +----------------------------------------------------------------------------+
+ | Copyright (c) 2005 Tela Botanica |
+ +----------------------------------------------------------------------------+
+ | Feuille de style interne spécifique a l'application Bazar |
+ +----------------------------------------------------------------------------+
+ | Auteur : Jean-Pascal MILCENT <jpm@tela-botanica.org> |
+ +----------------------------------------------------------------------------+
+*/
+#BAZ_corps {
+ width:100%;}
+#formulaire input, #formulaire textarea, #formulaire select {
+ border:1px solid #000;}
+.enligne {
+ padding:0;
+ margin:0;
+ display:inline;
+ list-style: none;
+ list-style-type:none;
+ background:#FFF;}
+/*-------------Les fiches Bazar-------------------------------------------------*/
+.BAZ_cadre_fiche {
+ margin:0 auto;
+ width:95%;
+ padding:10px;
+ border: 1px solid;
+ -moz-border-radius:10px;
+ text-indent:0;
+ font-size:13px;
+ color:#000;
+ text-align:justify;
+ line-height:17px;}
+.BAZ_cadre_fiche a {
+ font-size:14px;
+ text-decoration:underline;}
+.BAZ_cadre_fiche a:hover {
+ text-decoration:underline;}
+#fiche_image {
+ float:left;
+ height:150px;
+ width:150px;}
+#fiche_titre {
+ text-align:left;
+ width:100%;
+ padding-left:10px;
+ background:transparent;
+ border:0;
+ font-size:19px;}
+#BAZ_description {
+ min-height:120px;
+ font-size:15px;
+ text-align:justify;}
+#BAZ_bas_page, .bulle_haut, .bulle_bas {
+ margin:0;
+ padding:0;}
+.bulle_corps {
+ margin:0;
+ padding:10px 5px;
+ border:1px solid;
+ -moz-border-radius:10px;}
+#formation_qualifiante {
+ float:right;
+ margin:0 -15px 0 5px;
+ height:190px;
+ width:30px;
+ background:url(images/BAZ_formation_qualifiante.gif) bottom right no-repeat;}
+#formation_diplomante {
+ float:right;
+ margin:0 -15px 0 5px;
+ height:190px;
+ width:30px;
+ background:url(images/BAZ_formation_diplomante.gif) bottom right no-repeat;}
+#formation_continue {
+ float:right;
+ margin:0 -15px 0 5px;
+ height:190px;
+ width:30px;
+ background:url(images/BAZ_formation_continue.gif) bottom right no-repeat;}
+.centrer {
+ clear:both;
+ margin:0 auto;}
+.rubrique {
+ width:150px;
+ text-align:left;
+ font:bold 15px;}
+.rubrique_bulle {
+ width:90px;
+ text-align:left;
+ font:bold 15px;
+ color: #000;}
+.infos {
+ width:70%;
+ float:left;
+ min-height:120px;
+ font:bold 15px;
+ line-height:25px;}
+.bazar_checkbox {
+ float:left;
+ width:170px;
+ font-size:10px;
+ border:0;}
+.lien_wikini {
+ margin:0;
+ padding:10px 5px;
+ border:2px solid;
+ -moz-border-radius:10px;}
+div.lien_wikini a {
+ padding-left:100px;
+ color:#FFFFFF;}
+.table_bazar th{
+ font-weight:bold;}
+.table_bazar #col1,.table_bazar #col2,.table_bazar #col3,.table_bazar #col4 {
+ text-align:center;}
+
+/* GOOGLE MAP */
+.BAZ_cadre_map {
+ padding:0;
+ height:250px;
+ width:400px;
+ overflow:auto;}
+.BAZ_cadre_map .BAZ_cadre_fiche{
+ padding:0 2px 2px 2px;}
+.BAZ_cadre_map .BAZ_fiche_titre, .BAZ_cadre_map .BAZ_fiche{
+ font-size:13px;
+ padding:2px;
+ margin:2px 2px 2px 0;}
+#map{
+ min-height:600px;}
+
+/* CALENDRIER APPLETTE*/
+.calendrier_applette{
+ width:140px;}
+
+/* CALENDRIER */
+#cal_entete{
+ display:block;
+ background:transparent url(/client/bazar/images/cal_titre_fond.png) repeat-x;
+ margin:10px 0;
+ height:31px;
+ min-width:300px;
+ border-left: 2px solid #113054;
+ border-right: 2px solid #113054;}
+#cal_titre_img{
+ float:right;
+ display:block;
+ background:transparent;
+ padding-bottom:10px;
+ width:182px;}
+#cal_navigation{
+ display:block;
+ position:absolute;
+ background:transparent;
+ top:10px;
+ left:20px;}
+#cal_precedent_lien, #cal_suivant_lien{
+ display:block;
+ position:absolute;
+ top:12px;
+ background:transparent;}
+#cal_suivant_lien img, #cal_precedent_lien img{
+ display:block;
+ border:0;}
+#cal_precedent_lien:hover, #cal_suivant_lien:hover, #cal_mois_courrant:hover{
+ background-color:#b0cdfc;}
+#cal_precedent_lien{
+ left:15px;}
+#cal_mois_courrant{
+ display:block;
+ position:absolute;
+ top:14px;
+ left:40px;
+ width:100px;
+ padding:2px 25px;
+ background-color:#fff;
+ border:1px inset #113054;
+ text-align:center;
+ text-transform:uppercase;
+ font: bold 14px 'Arial narrow', arial, sans-serif;}
+#cal_suivant_lien{
+ left:195px;}
+.calendrier{
+ font: bold 16px 'Arial narrow', Arial, sans-serif;
+ border-collapse:separate;
+ border-spacing:2px;
+ width:100%;}
+/* Problème de la couleur entre les cellules...
+.calendrier tbody{
+ background:white url(/client/bazar/images/cal_img_fond.jpg) 2px 40px repeat-y;}*/
+.calendrier th, .calendrier_applette th {
+ color:white;
+ background-color:#174984;
+ border: 1px solid #113054;
+ text-align:center;}
+.calendrier th {
+ height:20px;
+ width:14%;
+ border-width:2px;}
+.calendrier td {
+ height:83px;
+ width:14%;
+ border:2px solid #4c4c4c;
+ vertical-align:top;
+ text-align:left;
+ -moz-border-radius:3px;}
+.cal_samedi, .cal_dimanche{
+ background-color:#fff9e7;}
+.cal_j{
+ display:block;
+ float:right;
+ padding:2px;}
+.cal_jc{
+ background-color:#c4d9fb;}
+.cal_ma{
+ background-color:#eaeaec;}
+.cal_evenemt_liste{
+ font: normal 10px Arial, sans-serif;
+ list-style-type:none;/*disc url(/client/bazar/images/cal_pastille.png) inside;*/
+ margin:20px 0 0 0;
+ padding:0;}
+.cal_evenemt_liste li{
+ display:block;
+ background:transparent url(/client/bazar/images/cal_pastille.png) top left no-repeat;}
+.cal_evenemt{
+ margin:0;
+ padding:0 0 0 13px;}
+/* Pour la bibliothèque JS DomToolTip */
+div.niceTitle {
+ background-color: #333333;
+ color: #FFFFFF;
+ font-weight: bold;
+ font-size: 13px;
+ font-family: "Trebuchet MS", sans-serif;
+ width: 250px;
+ left: 0;
+ top: 0;
+ padding: 4px;
+ position: absolute;
+ text-align: left;
+ z-index: 20;
+ -moz-border-radius: 0 10px 10px 10px;
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=87);
+ -moz-opacity: .87;
+ -khtml-opacity: .87;
+ opacity: .87;}
+div.niceTitle .contents {
+ margin: 0;
+ padding: 0 3px;
+ filter: progid:DXImageTransform.Microsoft.Alpha(opacity=100);
+ -moz-opacity: 1;
+ -khtml-opacity: 1;
+ opacity: 1;}
+div.niceTitle p {
+ color: #D17E62;
+ font-size: 9px;
+ padding: 3px 0 0 0;
+ margin: 0;
+ text-align: left;
+ -moz-opacity: 1;}
\ No newline at end of file
Index: 2014-08-05_centre/client/bazar/bibliotheque/bazar.fonct.php
===================================================================
--- 2014-08-05_centre/client/bazar/bibliotheque/bazar.fonct.php (revision 0)
+++ 2014-08-05_centre/client/bazar/bibliotheque/bazar.fonct.php (revision 120)
@@ -0,0 +1,1660 @@
+<?php
+/*vim: set expandtab tabstop=4 shiftwidth=4: */
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+// CVS : $Id: bazar.fonct.php,v 1.74.2.10 2008-02-01 17:20:18 florian Exp $
+/**
+*
+* Fonctions du module bazar
+*
+*
+*@package bazar
+//Auteur original :
+*@author Alexandre Granier <alexandre@tela-botanica.org>
+*@author Florian Schmitt <florian@ecole-et-nature.org>
+//Autres auteurs :
+*@copyright Tela-Botanica 2000-2004
+*@version $Revision: 1.74.2.10 $ $Date: 2008-02-01 17:20:18 $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | ENTETE du PROGRAMME |
+// +------------------------------------------------------------------------------------------------------+
+require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm.php' ;
+require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/checkbox.php' ;
+require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/textarea.php' ;
+require_once PAP_CHEMIN_API_PEAR.'HTML/Table.php' ;
+require_once GEN_CHEMIN_API.'formulaire/formulaire.fonct.inc.php';
+require_once 'bazar.fonct.rss.php';
+
+
+/** fiches_a_valider () - Renvoie les annonces restant a valider par un administrateur
+*
+* @return string HTML
+*/
+function fiches_a_valider() {
+ // Pour les administrateurs d'une rubrique, on affiche les fiches a valider de cette rubrique
+ // On effectue une requete sur le bazar pour voir les fiches a administrer
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_ADMIN);
+ $res= '<h2>'.BAZ_ANNONCES_A_ADMINISTRER.'</h2><br />'."\n";
+ $requete = 'SELECT * FROM bazar_fiche, bazar_nature WHERE bf_statut_fiche=0 AND ' .
+ 'bn_id_nature=bf_ce_nature AND bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ' ;
+ if (isset($GLOBALS['_BAZAR_']['langue'])) {
+ $requete .= ' and bn_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%" ';
+ }
+ $requete .= 'ORDER BY bf_date_maj_fiche DESC' ;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ if ($resultat->numRows() != 0) {
+ $tableAttr = array('id' => 'table_bazar') ;
+ $table = new HTML_Table($tableAttr) ;
+ $entete = array (BAZ_TITREANNONCE ,BAZ_ANNONCEUR, BAZ_TYPEANNONCE, BAZ_PUBLIER, BAZ_SUPPRIMER) ;
+ $table->addRow($entete) ;
+ $table->setRowType (0, 'th') ;
+
+ // On affiche une ligne par proposition
+ while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) {
+ //Requete pour trouver le nom et prenom de l'annonceur
+ $requetenomprenom = 'SELECT '.BAZ_CHAMPS_PRENOM.', '.BAZ_CHAMPS_NOM.' FROM '.BAZ_ANNUAIRE.
+ ' WHERE '.BAZ_CHAMPS_ID.'='.$ligne['bf_ce_utilisateur'] ;
+ $resultatnomprenom = $GLOBALS['_BAZAR_']['db']->query ($requetenomprenom) ;
+ if (DB::isError($resultatnomprenom)) {
+ echo ("Echec de la requete<br />".$resultatnomprenom->getMessage()."<br />".$resultatnomprenom->getDebugInfo()) ;
+ }
+ while ($lignenomprenom = $resultatnomprenom->fetchRow (DB_FETCHMODE_ASSOC)) {
+ $annonceur=$lignenomprenom[BAZ_CHAMPS_PRENOM]." ".$lignenomprenom[BAZ_CHAMPS_NOM];
+ }
+ $lien_voir=$GLOBALS['_BAZAR_']['url'];
+ $lien_voir->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $lien_voir->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $lien_voir->addQueryString('typeannonce', $ligne['bn_id_nature']);
+
+ // Nettoyage de l'url
+ // NOTE (jpm - 23 mai 2007): pour être compatible avec PHP5 il faut utiliser tjrs $GLOBALS['_BAZAR_']['url'] car en php4 on
+ // copie bien une variable mais pas en php5, cela reste une référence...
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce');
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $GLOBALS['_BAZAR_']['url']->addQueryString('typeannonce', $ligne['bn_id_nature']);
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $lien_voir = $GLOBALS['_BAZAR_']['url']->getURL();
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_PUBLIER);
+ $lien_publie_oui = $GLOBALS['_BAZAR_']['url']->getURL();
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_PAS_PUBLIER);
+ $lien_publie_non = $GLOBALS['_BAZAR_']['url']->getURL();
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_SUPPRESSION);
+ $lien_supprimer = $GLOBALS['_BAZAR_']['url']->getURL();
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce');
+
+ $table->addRow (array(
+ '<a href="'.$lien_voir.'">'.$ligne['bf_titre'].'</a>'."\n", // col 1 : le nom
+ $annonceur."\n", // col 2 : annonceur
+ $ligne['bn_label_nature']."\n", // col 3 : type annonce
+ "<a href=\"".$lien_publie_oui."\">".BAZ_OUI."</a> / \n".
+ "<a href=\"".$lien_publie_non."\">".BAZ_NON."</a>", // col 4 : publier ou pas
+ "<a href=\"".$lien_supprimer."\"".
+ " onclick=\"javascript:return confirm('".BAZ_CONFIRMATION_SUPPRESSION."');\">".BAZ_SUPPRIMER."</a>\n")) ; // col 5 : supprimer
+
+ }
+ $table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
+ $table->updateColAttributes(1, array("align" => "center"));
+ $table->updateColAttributes(2, array("align" => "center"));
+ $table->updateColAttributes(3, array("align" => "center"));
+ $table->updateColAttributes(4, array("align" => "center"));
+ $res .= $table->toHTML() ;
+ }
+ else {
+ $res .= '<p class="zone_info">'.BAZ_PAS_DE_FICHE_A_VALIDER.'</p>'."\n" ;
+ }
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_TOUTES_ANNONCES);
+
+ // Nettoyage de l'url
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce');
+
+ // Les autres fiches, deja validees
+ $res .= '<h2>'.BAZ_TOUTES_LES_FICHES.'</h2>'."\n";
+ $requete = 'SELECT * FROM bazar_fiche, bazar_nature WHERE bf_statut_fiche=1 AND ' .
+ 'bn_id_nature=bf_ce_nature AND bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ';
+ if (isset($GLOBALS['_BAZAR_']['langue'])) {
+ $requete .= ' and bn_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%" ';
+ }
+ $requete .= 'ORDER BY bf_date_maj_fiche DESC' ;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ if ($resultat->numRows() != 0) {
+ $tableAttr = array('id' => 'table_bazar') ;
+ $table = new HTML_Table($tableAttr) ;
+ $entete = array (BAZ_TITREANNONCE ,BAZ_ANNONCEUR, BAZ_TYPEANNONCE, BAZ_PUBLIER, BAZ_SUPPRIMER) ;
+ $table->addRow($entete) ;
+ $table->setRowType (0, 'th') ;
+
+ // On affiche une ligne par proposition
+ while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) {
+ //Requete pour trouver le nom et prenom de l'annonceur
+ $requetenomprenom = 'SELECT '.BAZ_CHAMPS_PRENOM.', '.BAZ_CHAMPS_NOM.' FROM '.BAZ_ANNUAIRE.
+ ' WHERE '.BAZ_CHAMPS_ID.'='.$ligne['bf_ce_utilisateur'] ;
+ $resultatnomprenom = $GLOBALS['_BAZAR_']['db']->query ($requetenomprenom) ;
+ if (DB::isError($resultatnomprenom)) {
+ echo ("Echec de la requete<br />".$resultatnomprenom->getMessage()."<br />".$resultatnomprenom->getDebugInfo()) ;
+ }
+ while ($lignenomprenom = $resultatnomprenom->fetchRow (DB_FETCHMODE_ASSOC)) {
+ $annonceur=$lignenomprenom[BAZ_CHAMPS_PRENOM]." ".$lignenomprenom[BAZ_CHAMPS_NOM];
+ }
+ $lien_voir=$GLOBALS['_BAZAR_']['url'];
+ $lien_voir->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $lien_voir->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $lien_voir->addQueryString('typeannonce', $ligne['bn_id_nature']);
+
+ // Nettoyage de l'url
+ // NOTE (jpm - 23 mai 2007): pour être compatible avec PHP5 il faut utiliser tjrs $GLOBALS['_BAZAR_']['url'] car en php4 on
+ // copie bien une variable mais pas en php5, cela reste une référence...
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce');
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $GLOBALS['_BAZAR_']['url']->addQueryString('typeannonce', $ligne['bn_id_nature']);
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $lien_voir = $GLOBALS['_BAZAR_']['url']->getURL();
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_PUBLIER);
+ $lien_publie_oui = $GLOBALS['_BAZAR_']['url']->getURL();
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_PAS_PUBLIER);
+ $lien_publie_non = $GLOBALS['_BAZAR_']['url']->getURL();
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_SUPPRESSION);
+ $lien_supprimer = $GLOBALS['_BAZAR_']['url']->getURL();
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce');
+
+ $table->addRow (array(
+ '<a href="'.$lien_voir.'">'.$ligne['bf_titre'].'</a>'."\n", // col 1 : le nom
+ $annonceur."\n", // col 2 : annonceur
+ $ligne['bn_label_nature']."\n", // col 3 : type annonce
+ "<a href=\"".$lien_publie_oui."\">".BAZ_OUI."</a> / \n".
+ "<a href=\"".$lien_publie_non."\">".BAZ_NON."</a>", // col 4 : publier ou pas
+ "<a href=\"".$lien_supprimer."\"".
+ " onclick=\"javascript:return confirm('".BAZ_CONFIRMATION_SUPPRESSION."');\">".BAZ_SUPPRIMER."</a>\n")) ; // col 5 : supprimer
+
+ }
+ $table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
+ $table->updateColAttributes(1, array("align" => "center"));
+ $table->updateColAttributes(2, array("align" => "center"));
+ $table->updateColAttributes(3, array("align" => "center"));
+ $table->updateColAttributes(4, array("align" => "center"));
+ $res .= $table->toHTML() ;
+ }
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR);
+ return $res;
+}
+
+
+/** mes_fiches () - Renvoie les fiches bazar d'un utilisateur
+*
+* @return string HTML
+*/
+function mes_fiches() {
+ $res= '<h2>'.BAZ_VOS_ANNONCES.'</h2><br />'."\n";
+ if ($GLOBALS['AUTH']->getAuth()) {
+ // requete pour voir si l'utilisateur a des fiches a son nom, classees par date de MAJ et nature d'annonce
+ $requete = 'SELECT * FROM bazar_fiche, bazar_nature WHERE bf_ce_utilisateur='. $GLOBALS['id_user'].
+ ' AND bn_id_nature=bf_ce_nature AND bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ';
+ if (isset($GLOBALS['_BAZAR_']['langue'])) $requete .= ' and bn_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%" ';
+ $requete .= ' ORDER BY bf_date_maj_fiche DESC,bf_ce_nature ASC';
+
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ if ($resultat->numRows() != 0) {
+ $tableAttr = array('id' => 'table_bazar') ;
+ $table = new HTML_Table($tableAttr) ;
+ $entete = array (BAZ_TITREANNONCE , BAZ_TYPEANNONCE, BAZ_ETATPUBLICATION, BAZ_MODIFIER, BAZ_SUPPRIMER) ;
+ $table->addRow($entete) ;
+ $table->setRowType (0, "th") ;
+
+ // On affiche une ligne par proposition
+ while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) {
+ if ($ligne['bf_statut_fiche']==1) $publiee=BAZ_PUBLIEE;
+ elseif ($ligne['bf_statut_fiche']==0) $publiee=BAZ_ENCOURSDEVALIDATION;
+ else $publiee=BAZ_REJETEE;
+
+ $lien_voir = $GLOBALS['_BAZAR_']['url'];
+ $lien_voir->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $lien_voir->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $lien_voir->addQueryString('typeannonce', $ligne['bn_id_nature']);
+ $lien_voir_url=$lien_voir->getURL();
+
+ $lien_modifier = $GLOBALS['_BAZAR_']['url'];
+ $lien_modifier->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER);
+ $lien_modifier->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $lien_modifier->addQueryString('typeannonce', $ligne['bn_id_nature']);
+ $lien_modifier_url=$lien_modifier->getURL();
+
+ $lien_supprimer = $GLOBALS['_BAZAR_']['url'];
+ $lien_supprimer->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_SUPPRESSION);
+ $lien_supprimer->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $lien_supprimer->addQueryString('typeannonce', $ligne['bn_id_nature']);
+ $lien_supprimer_url=$lien_supprimer->getURL();
+
+ $table->addRow (array(
+ '<a href="'.$lien_voir_url.'">'.$ligne['bf_titre'].'</a>'."\n", // col 1 : le nom
+ $ligne['bn_label_nature']."\n", // col 2: type annonce
+ $publiee."\n", // col 3 : publiee ou non
+ '<a href="'.$lien_modifier_url.'">'.BAZ_MODIFIER.'</a>'."\n", // col 4 : modifier
+ '<a href="'.$lien_supprimer_url.'" onclick="javascript:return '.
+ 'confirm(\''.BAZ_CONFIRMATION_SUPPRESSION.'\');" >'.BAZ_SUPPRIMER.'</a>'."\n")) ; // col 5 : supprimer
+ }
+ $table->altRowAttributes(1, array("class" => "ligne_impaire"), array("class" => "ligne_paire"));
+ $table->updateColAttributes(1, array("align" => "left"));
+ $table->updateColAttributes(2, array("align" => "center"));
+ $table->updateColAttributes(3, array("align" => "center"));
+ $table->updateColAttributes(4, array("align" => "center"));
+ $res .= $table->toHTML() ;
+ }
+ else {
+ $res .= '<p class="zone_info">'.BAZ_PAS_DE_FICHE.'</p>'."\n" ;
+ }
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_VOIR, BAZ_VOIR_SAISIR);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $res .= '<br /><ul id="liste_liens"><li id="lien_saisir"><a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'" title="'.BAZ_SAISIR_UNE_NOUVELLE_FICHE.'">'.BAZ_SAISIR_UNE_NOUVELLE_FICHE.'</a></li></ul>';
+
+ }
+ else {
+ $res .= BAZ_IDENTIFIEZ_VOUS_PRESENTATION_XHTML;
+ $res .= '<p class="zone_info">'.BAZ_IDENTIFIEZ_VOUS_POUR_SAISIR.'</p>'."\n" ;
+
+ include_once BAZ_CHEMIN_APPLI.'bibliotheque/bazarTemplate.class.php';
+ $modele = new bazarTemplate($GLOBALS['_BAZAR_']['db']);
+ $res .= $modele->getTemplate(BAZ_TEMPLATE_MESSAGE_LOGIN, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['categorie_nature']);
+ }
+ return $res;
+}
+
+/** baz_gestion_droits() interface de gestion des droits
+*
+* return string le code HTML
+*/
+function baz_gestion_droits() {
+ $lien_formulaire=$GLOBALS['_BAZAR_']['url'];
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_GERER_DROITS);
+
+ //contruction du squelette du formulaire
+ $formtemplate = new HTML_QuickForm('formulaire', 'post', preg_replace ('/&amp;/', '&', $lien_formulaire->getURL()) );
+ $squelette =& $formtemplate->defaultRenderer();
+ $squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'<table style="border:0;">'."\n".'{content}'."\n".'</table>'."\n".'</form>'."\n");
+ $squelette->setElementTemplate( '<tr>'."\n".'<td style="font-size:12px;width:150px;text-align:right;">'."\n".'{label} :</td>'."\n".'<td style="text-align:left;padding:5px;"> '."\n".'{element}'."\n".
+ '<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required -->'."\n".
+ '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
+ '</td>'."\n".'</tr>'."\n");
+ $squelette->setElementTemplate( '<tr>'."\n".'<td colspan="2" class="liste_a_cocher"><strong>{label}&nbsp;{element}</strong>'."\n".
+ '<!-- BEGIN required --><span class="symbole_obligatoire">&nbsp;*</span><!-- END required -->'."\n".'</td>'."\n".'</tr>'."\n", 'accept_condition');
+ $squelette->setElementTemplate( '<tr><td colspan="2" class="bouton">{label}{element}</td></tr>'."\n", 'valider');
+ $squelette->setRequiredNoteTemplate("\n".'<tr>'."\n".'<td colspan="2" class="symbole_obligatoire">* {requiredNote}</td></tr>'."\n");
+ //Traduction de champs requis
+ $formtemplate->setRequiredNote(BAZ_CHAMPS_REQUIS) ;
+ $formtemplate->setJsWarnings(BAZ_ERREUR_SAISIE,BAZ_VEUILLEZ_CORRIGER);
+ //Initialisation de la variable personne
+ if ( isset($_POST['personnes']) ) {
+ $personne=$_POST['personnes'];
+ }
+ else $personne=0;
+
+ //Cas ou les droits ont etes changes
+ if (isset($_GET['pers'])) {
+ $personne=$_GET['pers'];
+ //CAS DES DROITS POUR UN TYPE D'ANNONCE: On efface tous les droits de la personne pour ce type d'annonce
+ if (isset($_GET['idtypeannonce'])) {
+ $requete = 'DELETE FROM bazar_droits WHERE bd_id_utilisateur='.$_GET['pers'].
+ ' AND bd_id_nature_offre='.$_GET['idtypeannonce'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ }
+ //CAS DU SUPER ADMIN: On efface tous les droits de la personne en general
+ else {
+ $requete = 'DELETE FROM bazar_droits WHERE bd_id_utilisateur='.$_GET['pers'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ }
+ if ($_GET['droits']=='superadmin') {
+ $requete = 'INSERT INTO bazar_droits VALUES ('.$_GET['pers'].',0,0)';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ }
+ elseif ($_GET['droits']=='redacteur') {
+ $requete = 'INSERT INTO bazar_droits VALUES ('.$_GET['pers'].','.$_GET['idtypeannonce'].',1)';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ }
+ elseif ($_GET['droits']=='admin') {
+ $requete = 'INSERT INTO bazar_droits VALUES ('.$_GET['pers'].','.$_GET['idtypeannonce'].',2)';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ }
+ }
+
+ //requete pour obtenir l'id, le nom et prenom des personnes inscrites a l'annuaire sauf soi meme
+ $requete = 'SELECT '.BAZ_CHAMPS_ID.', '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' FROM '.BAZ_ANNUAIRE.
+ ' WHERE '.BAZ_CHAMPS_ID." != ".$GLOBALS['id_user'].' ORDER BY '.BAZ_CHAMPS_NOM.' ASC';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ echo ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ $res='<h2>'.BAZ_GESTION_DES_DROITS.'</h2><br />'."\n";
+ $res.=BAZ_DESCRIPTION_GESTION_DES_DROITS.'<br /><br />'."\n";
+ $personnes_select[0]=BAZ_SELECTION;
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $personnes_select[$ligne[BAZ_CHAMPS_ID]] = $ligne[BAZ_CHAMPS_NOM]." ".$ligne[BAZ_CHAMPS_PRENOM] ;
+ }
+ $java=array ('style'=>'width:250px;','onchange'=>'this.form.submit();');
+ $formtemplate->addElement ('select', 'personnes', BAZ_LABEL_CHOIX_PERSONNE, $personnes_select, $java) ;
+ $defauts=array ('personnes'=>$personne);
+ $formtemplate->setDefaults($defauts);
+ $res.= $formtemplate->toHTML().'<br />'."\n" ;
+
+ if ($personne!=0) {
+ //cas du super utilisateur
+ $utilisateur = new Utilisateur_bazar($personne) ;
+ if ($utilisateur->isSuperAdmin()) {
+ $res.= '<br />'.BAZ_EST_SUPERADMINISTRATEUR.'<br /><br />'."\n";
+ $lien_enlever_superadmin=$GLOBALS['_BAZAR_']['url'];
+ $lien_enlever_superadmin->addQueryString(BAZ_VARIABLE_ACTION, BAZ_GERER_DROITS);
+ $lien_enlever_superadmin->addQueryString('pers', $personne);
+ $lien_enlever_superadmin->addQueryString('droits', 'aucun');
+ $res.= '<a href='.$lien_enlever_superadmin->getURL().'>'.BAZ_CHANGER_SUPERADMINISTRATEUR.'</a><br />'."\n";
+ }
+ else {
+ $lien_passer_superadmin=$GLOBALS['_BAZAR_']['url'];
+ $lien_passer_superadmin->addQueryString(BAZ_VARIABLE_ACTION, BAZ_GERER_DROITS);
+ $lien_passer_superadmin->addQueryString('pers', $personne);
+ $lien_passer_superadmin->addQueryString('droits', 'superadmin');
+ $res.= '<a href='.$lien_passer_superadmin->getURL().'>'.BAZ_PASSER_SUPERADMINISTRATEUR.'</a><br />'."\n";
+
+ //on cherche les differentes rubriques d'annonces
+ $requete = 'SELECT bn_id_nature, bn_label_nature, bn_image_titre FROM bazar_nature';
+ if (isset($GLOBALS['_BAZAR_']['langue'])) $requete .= ' where bn_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%"';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ $res.='<br /><b>'.BAZ_DROITS_PAR_TYPE.'</b><br /><br />';
+
+ $table = new HTML_Table(array ('width' => '100%', 'class' => 'table_bazar')) ;
+ $table->addRow(array ('<strong>'.BAZ_TYPE_ANNONCES.'</strong>',
+ '<strong>'.BAZ_DROITS_ACTUELS.'</strong>',
+ '<strong>'.BAZ_PASSER_EN.'</strong>',
+ '<strong>'.BAZ_OU_PASSER_EN.'</strong>')) ;
+ $table->setRowType (0, 'th') ;
+
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $lien_aucun_droit=$GLOBALS['_BAZAR_']['url'];
+ $lien_aucun_droit->addQueryString(BAZ_VARIABLE_ACTION, BAZ_GERER_DROITS);
+ $lien_aucun_droit->addQueryString('pers', $personne);
+ $lien_aucun_droit->addQueryString('droits', 'aucun');
+ $lien_aucun_droit->addQueryString('idtypeannonce', $ligne["bn_id_nature"]);
+
+ $lien_passer_redacteur=$GLOBALS['_BAZAR_']['url'];
+ $lien_passer_redacteur->addQueryString(BAZ_VARIABLE_ACTION, BAZ_GERER_DROITS);
+ $lien_passer_redacteur->addQueryString('pers', $personne);
+ $lien_passer_redacteur->addQueryString('droits', 'redacteur');
+ $lien_passer_redacteur->addQueryString('idtypeannonce', $ligne["bn_id_nature"]);
+
+ $lien_passer_admin=$GLOBALS['_BAZAR_']['url'];
+ $lien_passer_admin->addQueryString(BAZ_VARIABLE_ACTION, BAZ_GERER_DROITS);
+ $lien_passer_admin->addQueryString('pers', $personne);
+ $lien_passer_admin->addQueryString('droits', 'admin');
+ $lien_passer_admin->addQueryString('idtypeannonce', $ligne["bn_id_nature"]);
+ if (isset($ligne['bn_image_titre'])) {
+ $titre='&nbsp;<img src="client/bazar/images/'.$ligne['bn_image_titre'].'" alt="'.$ligne['bn_label_nature'].'" />'."\n";
+ } else {
+ $titre='<strong>&nbsp;'.$ligne['bn_label_nature'].'</strong>'."\n";
+ }
+ if ($utilisateur->isAdmin($ligne['bn_id_nature'])) {
+ $table->addRow(array($titre,
+ BAZ_DROIT_ADMIN,
+ '<a href='.$lien_aucun_droit->getURL().'>'.BAZ_AUCUN_DROIT.'</a>',
+ '<a href='.$lien_passer_redacteur->getURL().'>'.BAZ_LABEL_REDACTEUR.'</a>'));
+ }
+ elseif ($utilisateur->isRedacteur($ligne['bn_id_nature'])) {
+ $table->addRow(array($titre,
+ BAZ_LABEL_REDACTEUR,
+ '<a href='.$lien_aucun_droit->getURL().'>'.BAZ_AUCUN_DROIT.'</a>',
+ '<a href='.$lien_passer_admin->getURL().'>'.BAZ_DROIT_ADMIN.'</a>'));
+ }
+ else {
+ $table->addRow(array($titre,
+ BAZ_AUCUN_DROIT,
+ '<a href='.$lien_passer_redacteur->getURL().'>'.BAZ_LABEL_REDACTEUR.'</a>',
+ '<a href='.$lien_passer_admin->getURL().'>'.BAZ_DROIT_ADMIN.'</a>'));
+
+ }
+ }
+
+ $table->altRowAttributes(1, array('class' => 'ligne_impaire'), array('class' => 'ligne_paire'));
+ $table->updateColAttributes(0, array('align' => 'left'));
+ $table->updateColAttributes(1, array('align' => 'left'));
+ $table->updateColAttributes(2, array('align' => 'left'));
+ $table->updateColAttributes(3, array('align' => 'left'));
+ $res.=$table->toHTML() ;
+ }
+ }
+
+ // Nettoyage de l'url
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('pers');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('droits');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('idtypeannonce');
+
+ return $res;
+}
+
+/** baz_formulaire() - Renvoie le menu pour les saisies et modification des annonces
+*
+* @param string choix du formulaire a afficher (soit formulaire personnalise de
+* l'annonce, soit choix du type d'annonce)
+*
+* @return string HTML
+*/
+function baz_formulaire($mode) {
+ $res = '';
+
+ if ($GLOBALS['AUTH']->getAuth()) {
+ $lien_formulaire=$GLOBALS['_BAZAR_']['url'];
+
+ //Definir le lien du formulaire en fonction du mode de formulaire choisi
+ if ($mode == BAZ_DEPOSER_ANNONCE) {
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU);
+ if (isset($GLOBALS['_BAZAR_']['id_typeannonce']) && $GLOBALS['_BAZAR_']['id_typeannonce'] != 'toutes') {
+ $mode = BAZ_ACTION_NOUVEAU ;
+ }
+ }
+ if ($mode == BAZ_ACTION_NOUVEAU) {
+ if ((!isset($_POST['accept_condition']))and($GLOBALS['_BAZAR_']['condition']!=NULL)) {
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU);
+ } else {
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU_V);
+ }
+ }
+ if ($mode == BAZ_ACTION_MODIFIER) {
+ if (!isset($_POST['accept_condition'])and($GLOBALS['_BAZAR_']['condition']!=NULL)) {
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER);
+ } else {
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER_V);
+ if (isset ($_SESSION['_BAZAR_']['fichier'])) unset($_SESSION['_BAZAR_']['fichier']) ;
+ if (isset ($_SESSION['_BAZAR_']['image'])) unset($_SESSION['_BAZAR_']['image']);
+ if (isset ($_SESSION['_BAZAR_']['lien'])) unset($_SESSION['_BAZAR_']['lien']);
+ }
+ $lien_formulaire->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
+ }
+ if ($mode == BAZ_ACTION_MODIFIER_V) {
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER_V);
+ $lien_formulaire->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
+ }
+
+ //contruction du squelette du formulaire
+ $formtemplate = new HTML_QuickForm('formulaire', 'post', preg_replace ('/&amp;/', '&', $lien_formulaire->getURL()) );
+ $squelette =& $formtemplate->defaultRenderer();
+ $squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'<table style="border:0;width:100%;">'."\n".'{content}'."\n".'</table>'."\n".'</form>'."\n");
+ $squelette->setElementTemplate( '<tr>'."\n".'<td>'."\n".'{label}'.
+ '<!-- BEGIN required --><span class="symbole_obligatoire">&nbsp;*</span><!-- END required -->'."\n".
+ ' </td>'."\n".'<td style="text-align:left;padding:5px;"> '."\n".'{element}'."\n".
+ '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
+ '</td>'."\n".'</tr>'."\n");
+ $squelette->setElementTemplate( '<tr>'."\n".'<td colspan="2" class="liste_a_cocher"><strong>{label}&nbsp;{element}</strong>'."\n".
+ '<!-- BEGIN required --><span class="symbole_obligatoire">&nbsp;*</span><!-- END required -->'."\n".'</td>'."\n".'</tr>'."\n", 'accept_condition');
+ $squelette->setElementTemplate( '<tr><td colspan="2" class="bouton">{label}{element}</td></tr>'."\n", 'valider');
+
+ $squelette->setRequiredNoteTemplate("\n".'<tr>'."\n".'<td colspan="2" class="symbole_obligatoire">* {requiredNote}</td></tr>'."\n");
+ //Traduction de champs requis
+ $formtemplate->setRequiredNote(BAZ_CHAMPS_REQUIS) ;
+ $formtemplate->setJsWarnings(BAZ_ERREUR_SAISIE,BAZ_VEUILLEZ_CORRIGER);
+
+ //------------------------------------------------------------------------------------------------
+ //AFFICHAGE DU FORMULAIRE GENERAL DE CHOIX DU TYPE D'ANNONCE
+ //------------------------------------------------------------------------------------------------
+ if ($mode == BAZ_DEPOSER_ANNONCE) {
+ $res = '';
+ //requete pour obtenir le nom et la description des types d'annonce
+ $requete = 'SELECT * FROM bazar_nature WHERE bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ';
+ if (isset($GLOBALS['_BAZAR_']['langue'])) {
+ $requete .= ' and bn_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%" ';
+ }
+ $requete .= 'ORDER BY bn_label_nature ASC';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ //$res.='<h2>'.BAZ_DEPOSE_UNE_NOUVELLE_ANNONCE.'</h2>'."\n";
+ include_once BAZ_CHEMIN_APPLI.'bibliotheque/bazarTemplate.class.php';
+ $modele = new bazarTemplate($GLOBALS['_BAZAR_']['db']);
+ $res .= $modele->getTemplate(BAZ_TEMPLATE_FORMULAIRE_ACCUEIL, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['categorie_nature']);
+ if ($resultat->numRows()==1) {
+ $ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC);
+ $GLOBALS['_BAZAR_']['id_typeannonce']=$ligne['bn_id_nature'];
+ $GLOBALS['_BAZAR_']['typeannonce']=$ligne['bn_label_nature'];
+ $GLOBALS['_BAZAR_']['condition']=$ligne['bn_condition'];
+ $GLOBALS['_BAZAR_']['template']=$ligne['bn_template'];
+ $GLOBALS['_BAZAR_']['commentaire']=$ligne['bn_commentaire'];
+ $GLOBALS['_BAZAR_']['appropriation']=$ligne['bn_appropriation'];
+ $GLOBALS['_BAZAR_']['image_titre']=$ligne['bn_image_titre'];
+ $GLOBALS['_BAZAR_']['image_logo']=$ligne['bn_image_logo'];
+ $mode = BAZ_ACTION_NOUVEAU;
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU_V);
+
+ } else {
+ //$res.='<br />'.BAZ_CHOIX_TYPEANNONCE.'<br /><br />'."\n";
+ while ($ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC)) {
+ $utilisateur = new Administrateur_bazar($GLOBALS['AUTH']);
+ if (($utilisateur->isRedacteur($ligne['bn_id_nature'])) || ($utilisateur->isAdmin($ligne['bn_id_nature']))
+ || ($utilisateur->isSuperAdmin() || !BAZ_RESTREINDRE_DEPOT)) {
+ if ($ligne['bn_image_titre']!='') {
+ $titre='&nbsp;<img src="client/bazar/images/'.$ligne['bn_image_titre'].'" alt="'.
+ $ligne['bn_label_nature'].'" />'.'<br />'."\n";
+ } else {
+ $titre='<h3>'.$ligne['bn_label_nature'].' : </h3>'."\n";
+ }
+ $formtemplate->addElement('radio', 'typeannonce', '',
+ $titre.$ligne['bn_description'].'<br /><br />'."\n",
+ $ligne['bn_id_nature'], array("id" => 'select'.$ligne['bn_id_nature'],
+ "style" => 'float:left;'));
+ $formtemplate->addRule('typeannonce', 'Il faut choisir un type de fiche', 'required', '', 'client') ;
+ }
+ }
+ $squelette->setElementTemplate( '<div class="listechoix">'."\n".'{element}'."\n".'</div>'."\n");
+
+ //Bouton de validation du formulaire // ce qui fait échouer le lien
+ $buttons[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER);
+ $formtemplate->addGroup($buttons, null, null, '&nbsp;');
+
+ //Affichage a l'ecran
+ $res.= $formtemplate->toHTML()."\n";
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------
+ //AFFICHAGE DU FORMULAIRE CORRESPONDANT AU TYPE DE L'ANNONCE CHOISI PAR L'UTILISATEUR
+ //------------------------------------------------------------------------------------------------
+ if ($mode == BAZ_ACTION_NOUVEAU) {
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_NOUVEAU_V);
+ $formtemplate->updateAttributes(array('action' => str_replace('&amp;', '&', $lien_formulaire->getURL())));
+ // Appel du modele
+ include_once BAZ_CHEMIN_APPLI.'bibliotheque/bazarTemplate.class.php';
+ $modele = new bazarTemplate($GLOBALS['_BAZAR_']['db']);
+ $html = $modele->getTemplate(BAZ_TEMPLATE_FORMULAIRE, $GLOBALS['_BAZAR_']['langue'],$GLOBALS['_BAZAR_']['categorie_nature']);
+ if (!PEAR::isError($html)) {
+ $res = str_replace ('{FORMULAIRE}', baz_afficher_formulaire_annonce('insertion',$formtemplate), $html);
+ } else {
+ $res = baz_afficher_formulaire_annonce('insertion',$formtemplate);
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------
+ //CAS DE LA MODIFICATION D'UNE ANNONCE (FORMULAIRE DE MODIFICATION)
+ //------------------------------------------------------------------------------------------------
+ if ($mode == BAZ_ACTION_MODIFIER) {
+ $res=baz_afficher_formulaire_annonce('modification',$formtemplate);
+ }
+
+ // Nettoyage de l'url avant les return : apparement inutile sinon pose pb (url applette deconnexion et moteur de recherche) [jpm le 17 mars 2008]
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+
+ //------------------------------------------------------------------------------------------------
+ //CAS DE L'INSCRIPTION D'UNE ANNONCE
+ //------------------------------------------------------------------------------------------------
+ if ($mode == BAZ_ACTION_NOUVEAU_V) {
+ if ($formtemplate->validate()) {
+ $formtemplate->process('baz_insertion', false) ;
+ // Redirection vers mes_fiches pour eviter la revalidation du formulaire
+ $GLOBALS['_BAZAR_']['url']->addQueryString (BAZ_VARIABLE_VOIR, BAZ_VOIR_MES_FICHES);
+ header ('Location: '.str_replace ('&amp;', '&', $GLOBALS['_BAZAR_']['url']->getURL())) ;
+ exit();
+ }
+ }
+
+ //------------------------------------------------------------------------------------------------
+ //CAS DE LA MODIFICATION D'UNE ANNONCE (VALIDATION ET MAJ)
+ //------------------------------------------------------------------------------------------------
+ if ($mode == BAZ_ACTION_MODIFIER_V) {
+ if ($formtemplate->validate()) {
+ $formtemplate->process('baz_mise_a_jour', false) ;
+
+ // Redirection vers mes_fiches pour eviter la revalidation du formulaire
+ $GLOBALS['_BAZAR_']['url']->addQueryString (BAZ_VARIABLE_VOIR, BAZ_VOIR_MES_FICHES);
+ header ('Location: '.str_replace ('&amp;', '&', $GLOBALS['_BAZAR_']['url']->getURL())) ;
+ exit();
+ }
+ }
+ } else {
+ include_once BAZ_CHEMIN_APPLI.'bibliotheque/bazarTemplate.class.php';
+ $modele = new bazarTemplate($GLOBALS['_BAZAR_']['db']);
+ $res .= $modele->getTemplate(BAZ_TEMPLATE_MESSAGE_LOGIN, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['categorie_nature']);
+ }
+
+ return $res;
+}
+
+/** baz_afficher_formulaire_annonce() - Genere le formulaire de saisie d'une annonce
+*
+* @param string type de formulaire: insertion ou modification
+* @param mixed objet quickform du formulaire
+*
+* @return string code HTML avec formulaire
+*/
+function baz_afficher_formulaire_annonce($mode='insertion',$formtemplate) {
+ if ($mode=='modification') {
+ //initialisation de la variable globale id_fiche
+ $GLOBALS['_BAZAR_']['id_fiche'] = $_REQUEST['id_fiche'];
+
+ //suppression eventuelle d'une url, d'un fichier ou d'une image
+ if (isset($_GET['id_url'])) {
+ baz_suppression_url($_GET['id_url']);
+ }
+ if (isset($_GET['id_fichier'])) {
+ baz_suppression_fichier($_GET['id_fichier']);
+ }
+ if (isset($_GET['image'])) {
+ baz_suppression_image($GLOBALS['_BAZAR_']['id_fiche']);
+ }
+ }
+ $res = '';
+ //titre de la rubrique
+ if (!BAZ_UTILISE_TEMPLATE) $res= '<h2>'.BAZ_TITRE_SAISIE_ANNONCE.'&nbsp;'.$GLOBALS['_BAZAR_']['typeannonce'].'</h2><br />'."\n";
+ if (($GLOBALS['_BAZAR_']['condition']!='')AND(!isset($_POST['accept_condition']))AND(!isset($_GET['url'])OR(!isset($_GET['fichier']))OR(!isset($_GET['image'])))) {
+ require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/html.php';
+ $conditions= new HTML_QuickForm_html('<tr><td colspan="2" style="padding:5px; margin:5px; width: 90%; background: #C1CBA7;">'.$GLOBALS['_BAZAR_']['condition'].'</td>'."\n".'</tr>'."\n");
+ $formtemplate->addElement($conditions);
+ $formtemplate->addElement('checkbox', 'accept_condition',BAZ_ACCEPTE_CONDITIONS) ;
+ $formtemplate->addElement('hidden', 'typeannonce', $GLOBALS['_BAZAR_']['id_typeannonce']);
+ $formtemplate->addRule('accept_condition', BAZ_ACCEPTE_CONDITIONS_REQUIS, 'required', '', 'client') ;
+ $formtemplate->addElement('submit', 'valider', BAZ_VALIDER);
+ }
+ //affichage du formulaire si conditions acceptees
+ else {
+ //Parcours du fichier de templates, pour mettre les valeurs des champs
+ $tableau=baz_valeurs_template($GLOBALS['_BAZAR_']['template']);
+ if ($mode=='modification') {
+ //Ajout des valeurs par defaut
+ $valeurs_par_defaut = baz_valeurs_fiche($GLOBALS['_BAZAR_']['id_fiche']) ;
+
+ for ($i=0; $i<count($tableau); $i++) {
+ if ( $tableau[$i]['type']=='liste' || $tableau[$i]['type']=='checkbox') {
+ $def=$tableau[$i]['type'].$tableau[$i]['nom_bdd'];
+ }
+ elseif ( $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' || $tableau[$i]['type']=='listedatedeb'
+ || $tableau[$i]['type']=='listedatefin' || $tableau[$i]['type']=='champs_cache'
+ || $tableau[$i]['type']=='labelhtml' ) {
+ $def=$tableau[$i]['nom_bdd'];
+ } elseif ($tableau[$i]['type']=='carte_google') {
+ $def = 'carte_google';
+ $valeurs_par_defaut[$def] = array ('latitude' => $valeurs_par_defaut['bf_latitude'], 'longitude' => $valeurs_par_defaut['bf_longitude']);
+ }
+ // certain type n ont pas de valeur par defaut (labelhtml par exemple)
+ // on teste l existence de $valeur_par_defaut[$def] avant de le passer en parametre
+ $tableau[$i]['type']($formtemplate, $tableau[$i]['nom_bdd'], $tableau[$i]['label'], $tableau[$i]['limite1'],
+ $tableau[$i]['limite2'],
+ isset ($valeurs_par_defaut[$def]) ? $valeurs_par_defaut[$def] : '',
+ $tableau[$i]['table_source'], $tableau[$i]['obligatoire']) ;
+ if ($tableau[$i]['type']=='carte_google') {
+ include_once GEN_CHEMIN_API.'formulaire/formulaire.fonct.google.php';
+ GEN_stockerCodeScript($script);
+ // On ajoute l attribut load a la balise body
+ GEN_AttributsBody('onload', 'load()');
+ }
+ }
+ }
+ else {
+ for ($i=0; $i<count($tableau); $i++) {
+ $tableau[$i]['type']($formtemplate, $tableau[$i]['nom_bdd'], $tableau[$i]['label'], $tableau[$i]['limite1'],
+ $tableau[$i]['limite2'], $tableau[$i]['defaut'], $tableau[$i]['table_source'], $tableau[$i]['obligatoire']) ;
+ if ($tableau[$i]['type'] == 'carte_google') {
+ include_once GEN_CHEMIN_API.'formulaire/formulaire.fonct.google.php';
+ GEN_stockerCodeScript($script);
+ // On ajoute l attribut load a la balise body
+ GEN_AttributsBody('onload', 'load()');
+ }
+ }
+ }
+ $formtemplate->addElement('hidden', 'typeannonce', $GLOBALS['_BAZAR_']['id_typeannonce']);
+
+ // Bouton d annulation
+ $attr = $formtemplate->getAttributes();
+ $lien_formulaire = new Net_URL($attr[BAZ_VARIABLE_ACTION]);
+ $lien_formulaire->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_VOIR_VOS_ANNONCES);
+ $buttons[] = &HTML_QuickForm::createElement('link', 'annuler', BAZ_ANNULER,
+ preg_replace ("/&amp;/", "&", $lien_formulaire->getURL()), BAZ_ANNULER); // Le preg_replace contourne un pb de QuickForm et Net_URL
+ // qui remplacent deux fois les & par des &amp;
+ //Bouton de validation du formulaire // ce qui fait échouer le lien
+ $buttons[] = &HTML_QuickForm::createElement('submit', 'valider', BAZ_VALIDER);
+ $formtemplate->addGroup($buttons, null, null, '&nbsp;');
+
+ }
+
+ //Affichage a l'ecran
+ $res .= $formtemplate->toHTML()."\n";
+ return $res;
+}
+
+
+/** requete_bazar_fiche() - preparer la requete d'insertion ou de MAJ de la table bazar_fiche a partir du template
+*
+* @global mixed L'objet contenant les valeurs issues de la saisie du formulaire
+* @return void
+*/
+function requete_bazar_fiche($valeur) {
+ $requete=NULL;
+ //l'annonce est directement publiée pour les admins
+ $utilisateur = new Administrateur_bazar($GLOBALS['AUTH']);
+
+ if ($utilisateur->isAdmin($GLOBALS['_BAZAR_']['id_typeannonce']) ||
+ $utilisateur->isSuperAdmin()) {
+ $requete.='bf_statut_fiche=1, ';
+ }
+ else {
+ $requete.='bf_statut_fiche="'.BAZ_ETAT_VALIDATION.'", ';
+ }
+ $tableau=baz_valeurs_template($GLOBALS['_BAZAR_']['template']);
+ for ($i=0; $i<count($tableau); $i++) {
+ //cas des checkbox et des listes
+ if ($tableau[$i]['type']=='checkbox' || $tableau[$i]['type']=='liste') {
+ //on supprime les anciennes valeurs de la table bazar_fiche_valeur_liste
+ $requetesuppression='DELETE FROM bazar_fiche_valeur_liste WHERE bfvl_ce_fiche='.$GLOBALS['_BAZAR_']['id_fiche'].' AND bfvl_ce_liste='.$tableau[$i]['nom_bdd'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requetesuppression) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ if (isset($valeur[$tableau[$i]['type'].$tableau[$i]['nom_bdd']]) && ($valeur[$tableau[$i]['type'].$tableau[$i]['nom_bdd']]!=0)) {
+ //on insere les nouvelles valeurs
+ $requeteinsertion='INSERT INTO bazar_fiche_valeur_liste (bfvl_ce_fiche, bfvl_ce_liste, bfvl_valeur) VALUES ';
+ //pour les checkbox, les différentes valeurs sont dans un tableau
+ if (is_array($valeur[$tableau[$i]['type'].$tableau[$i]['nom_bdd']])) {
+ $nb=0;
+ while (list($cle, $val) = each($valeur[$tableau[$i]['type'].$tableau[$i]['nom_bdd']])) {
+
+ if ($nb>0) $requeteinsertion .= ', ';
+ $requeteinsertion .= '('.$GLOBALS['_BAZAR_']['id_fiche'].', '.$tableau[$i]['nom_bdd'].', '.$cle.') ';
+ $nb++;
+ }
+ }
+ //pour les listes, une insertion de la valeur suffit
+ else {
+ $requeteinsertion .= '('.$GLOBALS['_BAZAR_']['id_fiche'].', '.$tableau[$i]['nom_bdd'].', '.$valeur[$tableau[$i]['type'].$tableau[$i]['nom_bdd']].')';
+ }
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requeteinsertion) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ }
+ }
+ //cas des fichiers
+ elseif ($tableau[$i]['type']=='fichier') {
+ if (isset($valeur['texte_fichier'.$tableau[$i]['nom_bdd']]) && $valeur['texte_fichier'.$tableau[$i]['nom_bdd']]!='') {
+ baz_insertion_fichier($valeur['texte_fichier'.$tableau[$i]['nom_bdd']], $GLOBALS['_BAZAR_']['id_fiche'], 'fichier'.$tableau[$i]['nom_bdd']);
+ }
+ }
+ //cas des urls
+ // On affine les criteres pour l insertion d une url
+ // il faut que le lien soit saisie, different de http:// ET que le texte du lien soit saisie aussi
+ // et ce afin d eviter d avoir des liens vides
+ elseif ($tableau[$i]['type']=='url') {
+ if (isset($valeur['url_lien'.$tableau[$i]['nom_bdd']]) &&
+ $valeur['url_lien'.$tableau[$i]['nom_bdd']]!='http://'
+ && isset($valeur['url_texte'.$tableau[$i]['nom_bdd']]) &&
+ strlen ($valeur['url_texte'.$tableau[$i]['nom_bdd']])) {
+ baz_insertion_url($valeur['url_lien'.$tableau[$i]['nom_bdd']], $valeur['url_texte'.$tableau[$i]['nom_bdd']], $GLOBALS['_BAZAR_']['id_fiche']);
+ }
+ }
+ //cas des images
+ elseif ($tableau[$i]['type']=='image') {
+ if (isset($_FILES['image']['name']) && $_FILES['image']['name']!='') {
+ $requete .= baz_insertion_image($GLOBALS['_BAZAR_']['id_fiche']);
+ }
+ }
+ //cas des dates
+ elseif ( $tableau[$i]['type']=='listedatedeb' || $tableau[$i]['type']=='listedatefin' ) {
+
+ // On construit la date selon le format YYYY-mm-dd
+ $date = $valeur[$tableau[$i]['nom_bdd']]['Y'].'-'.$valeur[$tableau[$i]['nom_bdd']]['m'].'-'.$valeur[$tableau[$i]['nom_bdd']]['d'] ;
+
+ // si la date de fin evenement est anterieure a la date de debut, on met la date de debut
+ // pour eviter les incoherence
+
+ if ($tableau[$i]['nom_bdd'] == 'bf_date_fin_evenement' &&
+ mktime(0,0,0, $valeur['bf_date_debut_evenement']['m'], $valeur['bf_date_debut_evenement']['d'], $valeur['bf_date_debut_evenement']['Y']) >
+ mktime(0,0,0, $valeur['bf_date_fin_evenement']['m'], $valeur['bf_date_fin_evenement']['d'], $valeur['bf_date_fin_evenement']['Y'])) {
+ $val = $valeur['bf_date_debut_evenement']['Y'].'-'.$valeur['bf_date_debut_evenement']['m'].'-'.$valeur['bf_date_debut_evenement']['d'] ;
+ } else {
+ $val = $valeur[$tableau[$i]['nom_bdd']]['Y'].'-'.$valeur[$tableau[$i]['nom_bdd']]['m'].'-'.$valeur[$tableau[$i]['nom_bdd']]['d'] ;
+ }
+ $requete .= $tableau[$i]['nom_bdd'].'="'.$val.'", ' ;
+ }
+ //cas des champs texte
+ elseif ( $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' || $tableau[$i]['type']=='champs_cache' || $tableau[$i]['type']=='champs_mail' ) {
+ //on mets les slashes pour les saisies dans les champs texte et textearea
+ $val=addslashes($valeur[$tableau[$i]['nom_bdd']]) ;
+ $requete .= $tableau[$i]['nom_bdd'].'="'.$val.'", ' ;
+ }
+ //cas des wikinis
+ elseif ( $tableau[$i]['type']=='wikini' && $_REQUEST[BAZ_VARIABLE_ACTION]==BAZ_ACTION_NOUVEAU_V ) {
+ //on appelle les pages des apis et de l'integrateur wikini
+ include_once PAP_CHEMIN_RACINE.'api/sql/SQL_manipulation.fonct.php';
+ include_once PAP_CHEMIN_RACINE.'client/integrateur_wikini/configuration/adwi_configuration.inc.php' ;
+ include_once PAP_CHEMIN_RACINE.'client/integrateur_wikini/bibliotheque/adwi_wikini.fonct.php' ;
+ //génération du titre du wiki, sous la forme id-titre du projet
+ $titre=baz_titre_wiki($valeur["bf_titre"]);
+ //création du wiki
+ $valeur=array ("action"=> "nouveau_v", "code_alpha_wikini"=>$titre, "page"=>"AccueiL", "bdd_hote"=> "",
+ "bdd_nom"=> "", "bdd_utilisateur"=> "", "bdd_mdp" => "", "table_prefix"=> "", "chemin" => "wikini/".$titre, "valider"=> "Valider");
+ $val = insertion($valeur, $GLOBALS['_BAZAR_']['db']);
+ }
+ // Cas de la carte google
+ elseif ($tableau[$i]['type'] == 'carte_google') {
+ $requete .= 'bf_latitude="'.$valeur['latitude'].'", bf_longitude="'.$valeur['longitude'].'",';
+ }
+ }
+ $requete.=' bf_date_maj_fiche=NOW()';
+ return $requete;
+}
+
+/** baz_insertion() - inserer une nouvelle fiche
+*
+* @array Le tableau des valeurs a inserer
+* @integer Valeur de l'identifiant de la fiche
+* @return void
+*/
+function baz_insertion($valeur) {
+ // =========== Insertion d'une nouvelle fiche ===================
+ //requete d'insertion dans bazar_fiche
+ $GLOBALS['_BAZAR_']['id_fiche'] = baz_nextid('bazar_fiche', 'bf_id_fiche', $GLOBALS['_BAZAR_']['db']) ;
+ $requete = 'INSERT INTO bazar_fiche SET bf_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'].','.
+ 'bf_ce_utilisateur='.$GLOBALS['id_user'].', bf_ce_nature='.$GLOBALS['_BAZAR_']['id_typeannonce'].','.
+ 'bf_date_creation_fiche=NOW(),';
+ if (!isset($_REQUEST['bf_date_debut_validite_fiche'])) {
+ $requete .= 'bf_date_debut_validite_fiche=now(), bf_date_fin_validite_fiche="0000-00-00", ' ;
+ }
+ $requete .=requete_bazar_fiche(&$valeur) ;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ // Envoie d un mail aux administrateurs
+ $utilisateur = new Administrateur_bazar($GLOBALS['AUTH']);
+ if ($utilisateur->isRedacteur($GLOBALS['_BAZAR_']['id_typeannonce'])) {
+ $mails = bazar::getMailAdmin($GLOBALS['_BAZAR_']['id_typeannonce']);
+ include_once BAZ_CHEMIN_APPLI.'bibliotheque/bazarTemplate.class.php';
+ $template = new bazarTemplate($GLOBALS['_BAZAR_']['db']);
+ $sujet = $template->getTemplate(BAZ_TEMPLATE_MAIL_NOUVELLE_FICHE_SUJET, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['id_typeannonce']);
+ $corps = $template->getTemplate(BAZ_TEMPLATE_MAIL_NOUVELLE_FICHE_CORPS, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['id_typeannonce']);
+ if (is_array ($mails)) {
+ foreach ($mails as $mail) {
+ mail ($mail, $sujet, $corps);
+ }
+ }
+ }
+
+ return ;
+}
+
+
+/** baz_insertion_url() - inserer un lien URL a une fiche
+*
+* @global string L'url du lien
+* @global string Le texte du lien
+* @global integer L'identifiant de la fiche
+* @return void
+*/
+function baz_insertion_url($url_lien, $url_texte, $idfiche) {
+ //requete d'insertion dans bazar_url
+ if (!isset($_SESSION['_BAZAR_']['lien'])) {
+ $id_url = baz_nextId('bazar_url', 'bu_id_url', $GLOBALS['_BAZAR_']['db']) ;
+ $requete = 'INSERT INTO bazar_url SET bu_id_url='.$id_url.', bu_ce_fiche='.$idfiche.', '.
+ 'bu_url="'.$url_lien.'", bu_descriptif_url="'.addslashes($url_texte).'"';
+
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return $resultat->getMessage().$resultat->getDebugInfo() ;
+ }
+ $_SESSION['_BAZAR_']['lien'] = 1;
+ return;
+ }
+}
+
+
+/** baz_insertion_fichier() - inserer un fichier a une fiche
+*
+* @global string Le label du fichier
+* @global string La description du fichier
+* @global integer L'identifiant de la fiche
+* @return void
+*/
+function baz_insertion_fichier($fichier_description, $idfiche, $nom_fichier='fichier_joint') {
+ //verification de la presence de ce fichier
+ $requete = 'SELECT bfj_id_fichier FROM bazar_fichier_joint WHERE bfj_fichier="'.$_FILES[$nom_fichier]['name'].'"';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ if (!isset ($_SESSION['_BAZAR_']['fichier'])) {
+ if ($resultat->numRows()==0) {
+ $chemin_destination=BAZ_CHEMIN_APPLI.'upload/'.$_FILES[$nom_fichier]['name'];
+ move_uploaded_file($_FILES[$nom_fichier]['tmp_name'], $chemin_destination);
+ chmod ($chemin_destination, 0755);
+ }
+ $id_fichier_joint = baz_nextId('bazar_fichier_joint', 'bfj_id_fichier', $GLOBALS['_BAZAR_']['db']) ;
+ $requete = 'INSERT INTO bazar_fichier_joint SET bfj_id_fichier='.$id_fichier_joint.', bfj_ce_fiche='.$idfiche.
+ ', bfj_description="'.addslashes($fichier_description).'", bfj_fichier="'.$_FILES[$nom_fichier]['name'].'"';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return $resultat->getMessage().$resultat->getDebugInfo() ;
+ }
+ }
+ $_SESSION['_BAZAR_']['fichier'] = 1;
+ return;
+}
+
+
+/** baz_insertion_image() - inserer une image a une fiche
+*
+* @global integer L'identifiant de la fiche
+* @return string requete SQL
+*/
+function baz_insertion_image($idfiche) {
+ //verification de la presence de ce fichier
+ $requete = 'SELECT bf_id_fiche FROM bazar_fiche WHERE bf_url_image="'.$_FILES['image']['name'].'" AND bf_id_fiche!='.$idfiche;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ if ($resultat->numRows()==0) {
+ $chemin_destination=BAZ_CHEMIN_APPLI.'upload/'.$_FILES['image']['name'];
+ move_uploaded_file($_FILES['image']['tmp_name'], $chemin_destination);
+ chmod ($chemin_destination, 0755);
+ }
+ $_SESSION['_BAZAR_']['image'] = 1;
+ return 'bf_url_image="'.$_FILES['image']['name'].'", ' ;
+}
+
+
+/** baz_mise_a_jour() - Mettre a jour une fiche
+*
+* @global Le contenu du formulaire de saisie de l'annonce
+* @return void
+*/
+function baz_mise_a_jour($valeur) {
+ //MAJ de bazar_fiche
+ $requete = 'UPDATE bazar_fiche SET '.requete_bazar_fiche(&$valeur,$GLOBALS['_BAZAR_']['id_typeannonce']);
+ $requete.= ' WHERE bf_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ return;
+}
+
+
+/** baz_suppression() - Supprime une fiche
+*
+* @global L'identifiant de la fiche a supprimer
+* @return void
+*/
+function baz_suppression() {
+ if ($GLOBALS['AUTH']->getAuth()) {
+ $valeurs=baz_valeurs_fiche($_GET['id_fiche']);
+
+ //suppression des wikinis associes
+ //génération du titre du wiki, sous la forme id-titre du projet
+ $titre=baz_titre_wiki($valeurs["bf_titre"]);
+ $requete = 'SELECT gewi_id_wikini FROM gen_wikini WHERE gewi_code_alpha_wikini = "'.$titre.'"';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if ($resultat->numRows()>0) {
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $id_wikini=$ligne['gewi_id_wikini'];
+ }
+ include_once PAP_CHEMIN_RACINE.'api/sql/SQL_manipulation.fonct.php';
+ include_once PAP_CHEMIN_RACINE.'client/integrateur_wikini/configuration/adwi_configuration.inc.php' ;
+ include_once PAP_CHEMIN_RACINE.'client/integrateur_wikini/bibliotheque/adwi_wikini.fonct.php' ;
+ adwi_supprimer_wikini($id_wikini, $GLOBALS['_BAZAR_']['db']);
+ }
+
+ // suppression des valeurs des listes et des cases à cocher
+ $requete = 'DELETE FROM bazar_fiche_valeur_liste WHERE bfvl_ce_fiche='.$_GET['id_fiche'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+
+ //suppression des urls associes
+ $requete = 'delete FROM bazar_url WHERE bu_ce_fiche = '.$_GET['id_fiche'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo().'<br />'."\n") ;
+ }
+
+ //suppression des fichiers associes
+ $requete = 'SELECT bfj_id_fichier FROM bazar_fichier_joint WHERE bfj_ce_fiche = '.$_GET['id_fiche'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo().'<br />'."\n") ;
+ }
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ baz_suppression_fichier($ligne['bfj_id_fichier']);
+ }
+
+ //suppression dans bazar_fiche
+ $requete = 'DELETE FROM bazar_fiche WHERE bf_id_fiche = '.$_GET['id_fiche'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo().'<br />'."\n") ;
+ }
+ return ;
+ }
+}
+
+
+/** baz_suppression_url() - Supprimer un lien d'une fiche
+*
+* @global integer L'identifiant du lien
+* @return void
+*/
+function baz_suppression_url($id_url) {
+ //suppression dans bazar_url
+ if ($GLOBALS['AUTH']->getAuth()) {
+ $requete = 'DELETE FROM bazar_url WHERE bu_id_url = '.$id_url;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ return;
+ }
+}
+
+
+/** baz_suppression_fichier() - Supprimer un fichier d'une fiche
+*
+* @global integer L'identifiant du fichier
+* @return void
+*/
+function baz_suppression_fichier($id_fichier) {
+ if ($GLOBALS['AUTH']->getAuth()) {
+ //verification de l'utilisation du fichier joint pour une autre annonce
+ $requete = 'SELECT bfj_fichier FROM bazar_fichier_joint WHERE bfj_id_fichier='.$id_fichier;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
+ $requete = 'SELECT bfj_fichier FROM bazar_fichier_joint WHERE bfj_fichier="'.$ligne['bfj_fichier'].'"';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ //si le fichier n'est que utilise dans cette fiche, on le supprime, on le laisse sinon
+ if ($resultat->numRows()==1) {
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
+ unlink(BAZ_CHEMIN_APPLI.'upload/'.$ligne['bfj_fichier']);
+ }
+
+ //suppression dans la table bazar_fichier
+ $requete = 'DELETE FROM bazar_fichier_joint WHERE bfj_id_fichier = '.$id_fichier;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ return;
+ }
+}
+
+
+/** baz_suppression_image() - Supprimer une image d'une fiche
+*
+* @global integer L'identifiant de la fiche
+* @return void
+*/
+function baz_suppression_image($id_fiche) {
+ if ($GLOBALS['AUTH']->getAuth()) {
+ //verification de l'utilisation de l'image pour une autre annonce
+ $requete = 'SELECT bf_url_image FROM bazar_fiche WHERE bf_id_fiche='.$id_fiche;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
+ $requete = 'SELECT bf_url_image FROM bazar_fiche WHERE bf_url_image="'.$ligne['bf_url_image'].'"';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ //si le fichier n'est que utilise dans cette fiche, on le supprime, on le laisse sinon
+ if ($resultat->numRows()==1) {
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
+ unlink(BAZ_CHEMIN_APPLI.'upload/'.$ligne['bf_url_image']);
+ }
+
+ //suppression dans la table bazar_fiche
+ $requete = 'UPDATE bazar_fiche SET bf_url_image=NULL WHERE bf_id_fiche = '.$id_fiche;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ('Echec de la requete<br />'.$resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ return;
+ }
+}
+
+
+/** publier_fiche () - Publie ou non dans les fichiers XML la fiche bazar d'un utilisateur
+*
+* @global boolean Valide: oui ou non
+* @return void
+*/
+function publier_fiche($valid) {
+ if (isset($_GET['id_fiche'])) $GLOBALS['_BAZAR_']['id_fiche']=$_GET['id_fiche'];
+ if (isset($_GET['typeannonce'])) $typeannonce=$_GET['typeannonce'];
+ if ($valid==0) {
+ $requete = 'UPDATE bazar_fiche SET bf_statut_fiche=2 WHERE bf_id_fiche="'.$GLOBALS['_BAZAR_']['id_fiche'].'"' ;
+ }
+ else {
+ $requete = 'UPDATE bazar_fiche SET bf_statut_fiche=1 WHERE bf_id_fiche="'.$GLOBALS['_BAZAR_']['id_fiche'].'"' ;
+ }
+
+ // ====================Mise a jour de la table bazar_fiche====================
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ unset ($resultat) ;
+ //TODO envoie mail annonceur
+ return;
+}
+
+
+/** baz_s_inscrire() affiche le formulaire qui permet de s'inscrire pour recevoir des annonces d'un type
+*
+* @return string le code HTML
+*/
+function baz_s_inscrire() {
+ $res= '<h2>'.BAZ_S_INSCRIRE_AUX_ANNONCES.'</h2>'."\n";
+ $res .= '<p id="laius_abonnement">'.BAZ_LAIUS_S_ABONNER.'</p>'."\n";
+ //requete pour obtenir l'id et le label des types d'annonces
+ $requete = 'SELECT bn_id_nature, bn_label_nature, bn_image_titre '.
+ 'FROM bazar_nature WHERE 1';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+
+ // Nettoyage de l url
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_VOIR);
+
+ $table = new HTML_Table(array ('class' => 'table_bazar'));
+ $table->addRow(array(BAZ_TYPE_ANNONCES, BAZ_RSS));
+ $table->setRowType(0, 'th');
+
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $lien_RSS=$GLOBALS['_BAZAR_']['url'];
+ $lien_RSS->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FLUX_RSS);
+ $lien_RSS->addQueryString('annonce', $ligne[bn_id_nature]);
+ if (isset($ligne['bn_image_titre'])) {$titre='&nbsp;<img src="client/bazar/images/'.$ligne['bn_image_titre'].'" alt="'.$ligne['bn_label_nature'].'" />'."\n";}
+ else {$titre='<strong>&nbsp;'.$ligne['bn_label_nature'].'</strong>'."\n";}
+
+ $table->addRow(array($titre,
+ '<a href="'.$lien_RSS->getURL().'"><img src="client/bazar/images/BAZ_rss.png" alt="'.BAZ_RSS.'"></a>'));
+ $lien_RSS->removeQueryString('annonce');
+ }
+ $table->altRowAttributes(1, array('class' => 'ligne_impaire'), array('class' => 'ligne_paire'));
+ $table->updateColAttributes(0, array('class' => 'col1'));
+ $table->updateColAttributes(1, array('class' => 'col2'));
+ $res.=$table->toHTML() ;
+
+ // Nettoyage de l'url
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('idtypeannonce');
+
+ return $res;
+}
+
+
+/** baz_valeurs_fiche() - Renvoie un tableau avec les valeurs par defaut du formulaire d'inscription
+*
+* @param integer Identifiant de la fiche
+*
+* @return array Valeurs enregistrees pour cette fiche
+*/
+function baz_valeurs_fiche($idfiche) {
+ $requete = 'SELECT * FROM bazar_fiche WHERE bf_id_fiche='.$idfiche;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
+ $valeurs_fiche = array() ;
+ $tableau = baz_valeurs_template($GLOBALS['_BAZAR_']['template']);
+ for ($i=0; $i<count($tableau); $i++) {
+ if ($tableau[$i]['type']=='liste' || $tableau[$i]['type']=='checkbox') {
+ $requete = 'SELECT bfvl_valeur FROM bazar_fiche_valeur_liste WHERE bfvl_ce_fiche='.$idfiche.
+ ' AND bfvl_ce_liste='.$tableau[$i]['nom_bdd'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError ($resultat)) {
+ die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ $nb=0;$val='';
+ while ($result = $resultat->fetchRow()) {
+ if ($nb>0) $val .= ', ';
+ $val .= $result[0];
+ $nb++;
+ }
+ $valeurs_fiche[$tableau[$i]['type'].$tableau[$i]['nom_bdd']] = $val;
+ }
+ elseif ($tableau[$i]['type']=='champs_cache' || $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' || $tableau[$i]['type']=='listedatedeb' || $tableau[$i]['type']=='listedatefin') {
+ $valeurs_fiche[$tableau[$i]['nom_bdd']] = stripslashes($ligne[$tableau[$i]['nom_bdd']]);
+ } elseif ($tableau[$i]['type']=='carte_google') {
+ $valeurs_fiche['bf_latitude'] = $ligne['bf_latitude'];
+ $valeurs_fiche['bf_longitude'] = $ligne['bf_longitude'];
+ }
+ }
+ return $valeurs_fiche;
+}
+
+/** function baz_nextId () Renvoie le prochain identifiant numerique libre d'une table
+*
+* @param string Nom de la table
+* @param string Nom du champs identifiant
+* @param mixed Objet DB de PEAR pour la connexion a la base de donnees
+*
+* return integer Le prochain numero d'identifiant disponible
+*/
+function baz_nextId($table, $colonne_identifiant, $bdd) {
+ $requete = 'SELECT MAX('.$colonne_identifiant.') AS maxi FROM '.$table;
+ $resultat = $bdd->query($requete) ;
+ if (DB::isError($resultat)) {
+ die (__FILE__ . __LINE__ . $resultat->getMessage() . $requete);
+ return $bdd->raiseError($resultat) ;
+ }
+
+ if ($resultat->numRows() > 1) {
+ return $bdd->raiseError('<br />La table '.$table.' a un identifiant non unique<br />') ;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
+ return $ligne->maxi + 1 ;
+}
+
+/** function baz_titre_wiki () Renvoie la chaine de caractere sous une forme compatible avec wikini
+*
+* @param string mot à transformer (enlever accents, espaces)
+*
+* return string mot transformé
+*/
+function baz_titre_wiki($nom) {
+ $titre=trim($nom);
+ for ($j = 0; $j < strlen ($titre); $j++) {
+ if (!preg_match ('/[a-zA-Z0-9]/', $titre[$j])) {
+ $titre[$j] = '_' ;
+ }
+ }
+ return $titre;
+}
+
+/* +--Fin du code ----------------------------------------------------------------------------------------+
+*
+* $Log: bazar.fonct.php,v $
+* Revision 1.74.2.10 2008-02-01 17:20:18 florian
+* suppression du lien annuler pour la sélection des fiches, pas de valeur par défaut pour la sélection, et sélectionner un type de fiche devient obligatoire.
+*
+* Revision 1.74.2.9 2008-02-01 16:23:29 florian
+* ajout champs_mail, décommenter les traductions des javascripts
+*
+* Revision 1.74.2.8 2008-02-01 09:56:56 alexandre_tb
+* reglage du pb de double saisie de fiche,
+* ajout d un exit apres le header location
+*
+* Revision 1.74.2.7 2008-01-29 14:35:22 alexandre_tb
+* suppression de l identification pour l abonnement au fluxRSS
+*
+* Revision 1.74.2.6 2008-01-29 09:55:07 alexandre_tb
+* suppression de l identification pour l abonnement au fluxRSS
+*
+* Revision 1.74.2.5 2008-01-29 09:35:36 alexandre_tb
+* remplacement des variables action par une constante
+* Utilisation d un redirection pour eviter que les formulaires soient valides 2 fois
+* simplification de la suppression d un lien associe a une liste
+*
+* Revision 1.74.2.4 2008-01-11 14:10:12 alexandre_tb
+* Remplacement de la variable action ecrite en dur par la constante BAZ_VARIABLE_ACTION
+*
+* Revision 1.74.2.3 2007-12-14 09:55:05 alexandre_tb
+* suppression de style dans le formulaire
+*
+* Revision 1.74.2.2 2007-12-06 15:36:07 alexandre_tb
+* appel de la fonction GEN_AttributsBody dans le composant carte_google
+*
+* Revision 1.74.2.1 2007-12-04 09:00:08 alexandre_tb
+* corrections importantes sur baz_s_inscrire, simplification de l'application qui ne fonctionnait pas.
+*
+* Revision 1.74 2007-10-25 09:41:31 alexandre_tb
+* mise en place de variable de session pour eviter que les formulaires soit valider 2 fois, pour les url, fichiers et image
+*
+* Revision 1.73 2007-10-24 13:27:00 alexandre_tb
+* bug : double saisie d url
+* suppression de warning sur variable
+*
+* Revision 1.72 2007-10-22 10:09:21 florian
+* correction template
+*
+* Revision 1.71 2007-10-22 09:18:39 alexandre_tb
+* prise en compte de la langue dans les requetes sur bazar_nature
+*
+* Revision 1.70 2007-10-10 13:26:36 alexandre_tb
+* utilisation de la classe Administrateur_bazar a la place de niveau_droit
+* suppression de fonction niveau_droit
+*
+* Revision 1.69 2007-09-18 07:39:42 alexandre_tb
+* correction d un bug lors d une insertion
+*
+* Revision 1.68 2007-08-27 12:31:31 alexandre_tb
+* mise en place de modele
+*
+* Revision 1.67 2007-07-04 10:01:30 alexandre_tb
+* mise en place de divers templates :
+* - mail pour admin (sujet et corps)
+* - modele carte_google
+* ajout de lignes dans bazar_template
+*
+* Revision 1.66 2007-06-25 12:15:06 alexandre_tb
+* merge from narmer
+*
+* Revision 1.65 2007-06-25 08:31:17 alexandre_tb
+* utilisation de la bibliotheque generale api/formulaire/formulaire.fonct.inc.php a la place de bazar.fonct.formulaire.php
+*
+* Revision 1.64 2007-06-04 15:25:39 alexandre_tb
+* ajout de la carto google
+*
+* Revision 1.63 2007/04/11 08:30:12 neiluj
+* remise en état du CVS...
+*
+* Revision 1.57.2.12 2007/03/16 14:49:24 alexandre_tb
+* si la date de debut d evenement est superieure a la date de fin alors on met
+* la meme date dans les deux champs (coherence)
+*
+* Revision 1.57.2.11 2007/03/07 17:40:57 jp_milcent
+* Ajout d'id sur les colonnes et gestion par les CSS des styles du tableau des abonnements.
+*
+* Revision 1.57.2.10 2007/03/07 17:20:19 jp_milcent
+* Ajout du nettoyage systématique des URLs.
+*
+* Revision 1.57.2.9 2007/03/06 16:23:24 jp_milcent
+* Nettoyage de l'url pour la gestion des droits.
+*
+* Revision 1.57.2.8 2007/03/05 14:33:44 jp_milcent
+* Suppression de l'appel à Mes_Fiches dans la fonction baz_formulaire
+*
+* Revision 1.57.2.7 2007/03/05 10:28:03 alexandre_tb
+* correction d un commentaire
+*
+* Revision 1.57.2.6 2007/02/15 13:42:16 jp_milcent
+* Utilisation de IN à la place du = dans les requêtes traitant les catégories de fiches.
+* Permet d'utiliser la syntaxe 1,2,3 dans la configuration de categorie_nature.
+*
+* Revision 1.57.2.5 2007/02/12 16:16:31 alexandre_tb
+* suppression du style clear:both dans les attribut du formulaire d identification
+*
+* Revision 1.57.2.4 2007/02/01 16:19:30 alexandre_tb
+* correction erreur de requete sur insertion bazar_fiche
+*
+* Revision 1.57.2.3 2007/02/01 16:11:05 alexandre_tb
+* correction erreur de requete sur insertion bazar_fiche
+*
+* Revision 1.57.2.2 2007/01/22 16:05:39 alexandre_tb
+* insertion de la date du jour dans bf_date_debut_validite_fiche quand il n'y a pas ce champs dans le formulaire (évite le 0000-00-00)
+*
+* Revision 1.57.2.1 2006/12/13 13:23:03 alexandre_tb
+* Remplacement de l appel d une constante par un appel direct. -> warning
+*
+* Revision 1.58 2006/12/13 13:20:16 alexandre_tb
+* Remplacement de l appel d une constante par un appel direct. -> warning
+*
+* Revision 1.57 2006/10/05 08:53:50 florian
+* amelioration moteur de recherche, correction de bugs
+*
+* Revision 1.56 2006/09/28 15:41:36 alexandre_tb
+* Le formulaire pour se logguer dans l'action saisir reste sur l'action saisir après
+*
+* Revision 1.55 2006/09/21 14:19:39 florian
+* amélioration des fonctions liés au wikini
+*
+* Revision 1.54 2006/09/14 15:11:23 alexandre_tb
+* suppression temporaire de la gestion des wikinis
+*
+* Revision 1.53 2006/07/25 13:24:44 florian
+* correction bug image
+*
+* Revision 1.52 2006/07/25 13:05:00 alexandre_tb
+* Remplacement d un die par un echo
+*
+* Revision 1.51 2006/07/18 14:17:32 alexandre_tb
+* Ajout d'un formulaire d identification
+*
+* Revision 1.50 2006/06/21 08:37:59 alexandre_tb
+* Correction de bug, d'un appel constant (....) qui ne fonctionnais plus.
+*
+* Revision 1.49 2006/06/02 09:29:07 florian
+* debut d'integration de wikini
+*
+* Revision 1.48 2006/05/19 13:54:11 florian
+* stabilisation du moteur de recherche, corrections bugs, lien recherche avancee
+*
+* Revision 1.47 2006/04/28 12:46:14 florian
+* integration des liens vers annuaire
+*
+* Revision 1.46 2006/03/29 13:04:35 alexandre_tb
+* utilisation de la classe Administrateur_bazar
+*
+* Revision 1.45 2006/03/24 09:28:02 alexandre_tb
+* utilisation de la variable globale $GLOBALS['_BAZAR_']['categorie_nature']
+*
+* Revision 1.44 2006/03/14 17:10:21 florian
+* ajout des fonctions de syndication, changement du moteur de recherche
+*
+* Revision 1.43 2006/03/02 20:36:52 florian
+* les entrees du formulaire de saisir ne sont plus dans les constantes mias dans des tables qui gerent le multilinguisme.
+*
+* Revision 1.42 2006/03/01 16:23:22 florian
+* modifs textes fr et correction bug "undefined index"
+*
+* Revision 1.41 2006/03/01 16:05:51 florian
+* ajout des fichiers joints
+*
+* Revision 1.40 2006/02/06 09:33:00 alexandre_tb
+* correction de bug
+*
+* Revision 1.39 2006/01/30 17:25:38 alexandre_tb
+* correction de bugs
+*
+* Revision 1.38 2006/01/30 10:27:04 florian
+* - ajout des entrées de formulaire fichier, url, et image
+* - correction bug d'affichage du mode de saisie
+*
+* Revision 1.37 2006/01/24 14:11:11 alexandre_tb
+* correction de bug sur l'ajout d'une image et d'un fichier
+*
+* Revision 1.36 2006/01/19 17:42:11 florian
+* ajout des cases à cocher pré-cochées pour les maj
+*
+* Revision 1.35 2006/01/18 11:06:51 florian
+* correction erreur saisie date
+*
+* Revision 1.34 2006/01/18 10:53:28 florian
+* corrections bugs affichage fiche
+*
+* Revision 1.33 2006/01/18 10:07:34 florian
+* recodage de l'insertion et de la maj des données relatives aux listes et checkbox dans des formulaires
+*
+* Revision 1.32 2006/01/18 10:03:36 florian
+* recodage de l'insertion et de la maj des données relatives aux listes et checkbox dans des formulaires
+*
+* Revision 1.31 2006/01/17 10:07:08 alexandre_tb
+* en cours
+*
+* Revision 1.30 2006/01/16 09:42:57 alexandre_tb
+* en cours
+*
+* Revision 1.29 2006/01/13 14:12:51 florian
+* utilisation des temlates dans la table bazar_nature
+*
+* Revision 1.28 2006/01/05 16:28:24 alexandre_tb
+* prise en chage des checkbox, reste la mise à jour à gérer
+*
+* Revision 1.27 2006/01/04 15:30:56 alexandre_tb
+* mise en forme du code
+*
+* Revision 1.26 2006/01/03 10:19:31 florian
+* Mise à jour pour accepter des parametres dans papyrus: faire apparaitre ou non le menu, afficher qu'un type de fiches, définir l'action par défaut...
+*
+* Revision 1.25 2005/12/20 14:49:35 ddelon
+* Fusion Head vers Livraison
+*
+* Revision 1.24 2005/12/16 15:44:40 alexandre_tb
+* ajout de l'option restreindre dépôt
+*
+* Revision 1.23 2005/12/01 17:03:34 florian
+* changement des chemins pour appli Pear
+*
+* Revision 1.22 2005/12/01 16:05:41 florian
+* changement des chemins pour appli Pear
+*
+* Revision 1.21 2005/12/01 15:31:30 florian
+* correction bug modifs et saisies
+*
+* Revision 1.20 2005/11/30 13:58:45 florian
+* ajouts graphisme (logos, boutons), changement structure SQL bazar_fiche
+*
+* Revision 1.19 2005/11/24 16:17:13 florian
+* corrections bugs, ajout des cases à cocher
+*
+* Revision 1.18 2005/11/18 16:03:23 florian
+* correction bug html entites
+*
+* Revision 1.17 2005/11/17 18:48:02 florian
+* corrections bugs + amélioration de l'application d'inscription
+*
+* Revision 1.16 2005/11/07 17:30:36 florian
+* ajout controle sur les listes pour la saisie
+*
+* Revision 1.15 2005/11/07 17:05:45 florian
+* amélioration validation conditions de saisie, ajout des règles spécifiques de saisie des formulaires
+*
+* Revision 1.14 2005/11/07 08:48:02 florian
+* correction pb guillemets pour saisie et modif de fiche
+*
+* Revision 1.13 2005/10/21 16:15:04 florian
+* mise a jour appropriation
+*
+* Revision 1.11 2005/10/12 17:20:33 ddelon
+* Reorganisation calendrier + applette
+*
+* Revision 1.10 2005/10/12 15:14:06 florian
+* amélioration de l'interface de bazar, de manière a simplifier les consultations, et à harmoniser par rapport aux Ressources
+*
+* Revision 1.9 2005/10/10 16:22:52 alexandre_tb
+* Correction de bug. Lorsqu'on revient en arrière après avoir validé un formulaire.
+*
+* Revision 1.8 2005/09/30 13:50:07 alexandre_tb
+* correction bug date parution ressource
+*
+* Revision 1.7 2005/09/30 13:15:58 ddelon
+* compatibilit� php5
+*
+* Revision 1.6 2005/09/30 13:00:05 ddelon
+* Fiche bazar generique
+*
+* Revision 1.5 2005/09/30 12:22:54 florian
+* Ajouts commentaires pour fiche, modifications graphiques, maj SQL
+*
+* Revision 1.3 2005/07/21 19:03:12 florian
+* nouveautés bazar: templates fiches, correction de bugs, ...
+*
+* Revision 1.1.1.1 2005/02/17 18:05:11 florian
+* Import initial de Bazar
+*
+* Revision 1.1.1.1 2005/02/17 11:09:50 florian
+* Import initial
+*
+* Revision 1.1.1.1 2005/02/16 18:06:35 florian
+* import de la nouvelle version
+*
+* Revision 1.10 2004/07/08 17:25:25 florian
+* ajout commentaires + petits debuggages
+*
+* Revision 1.8 2004/07/07 14:30:19 florian
+* d�buggage RSS
+*
+* Revision 1.7 2004/07/06 16:22:01 florian
+* d�buggage modification + MAJ flux RSS
+*
+* Revision 1.6 2004/07/06 09:28:26 florian
+* changement interface de modification
+*
+* Revision 1.5 2004/07/05 15:10:23 florian
+* changement interface de saisie
+*
+* Revision 1.4 2004/07/02 14:51:14 florian
+* ajouts divers pour faire fonctionner l'insertion de fiches
+*
+* Revision 1.3 2004/07/01 16:37:42 florian
+* ajout de fonctions pour les templates
+*
+* Revision 1.2 2004/07/01 13:00:13 florian
+* modif Florian
+*
+* Revision 1.1 2004/06/23 09:58:32 alex
+* version initiale
+*
+* Revision 1.1 2004/06/18 09:00:37 alex
+* version initiale
+*
+*
+* +-- Fin du code ----------------------------------------------------------------------------------------+
+*/
+
+?>
\ No newline at end of file
Index: 2014-08-05_centre/client/bazar/bibliotheque/bazar.fonct.rss.php
===================================================================
--- 2014-08-05_centre/client/bazar/bibliotheque/bazar.fonct.rss.php (revision 0)
+++ 2014-08-05_centre/client/bazar/bibliotheque/bazar.fonct.rss.php (revision 120)
@@ -0,0 +1,1480 @@
+<?php
+/*vim: set expandtab tabstop=4 shiftwidth=4: */
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+// CVS : $Id: bazar.fonct.rss.php,v 1.99.2.10 2008-02-04 13:03:09 alexandre_tb Exp $
+/**
+*
+*@package bazar
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+*@author Florian Schmitt <florian@ecole-et-nature.org>
+//Autres auteurs :
+*@copyright Tela-Botanica 2000-2006
+*@version $Revision: 1.99.2.10 $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | ENTETE du PROGRAMME |
+// +------------------------------------------------------------------------------------------------------+
+
+require_once BAZ_CHEMIN_APPLI.'bibliotheque/bazar.class.php';
+require_once BAZ_CHEMIN_APPLI.'bibliotheque/bazar.fonct.php';
+
+
+/** baz_valeur_template() - Renvoi des valeurs inscrite dans le fichier de template
+*
+* @param string valeur du template de bazar_nature
+*
+* @return mixed tableau contenant les champs du fichier template
+*/
+function baz_valeurs_template($valeur_template) {
+ //Parcours du fichier de templates, pour mettre les champs specifiques
+ $tableau= array();
+ $nblignes=0;
+ $chaine = explode ("\n", $valeur_template);
+ array_pop($chaine);
+ foreach ($chaine as $ligne) {
+ $souschaine = explode ("***", $ligne) ;
+ $tableau[$nblignes]['type'] = trim($souschaine[0]) ;
+ if (isset($souschaine[1])) {$tableau[$nblignes]['nom_bdd'] = trim($souschaine[1]);}
+ else {$tableau[$nblignes]['nom_bdd'] ='';}
+ if (isset($souschaine[2])) $tableau[$nblignes]['label'] = trim($souschaine[2]);
+ else {$tableau[$nblignes]['label'] ='';}
+ if (isset($souschaine[3])) $tableau[$nblignes]['limite1'] = trim($souschaine[3]);
+ else {$tableau[$nblignes]['limite1'] ='';}
+ if (isset($souschaine[4])) $tableau[$nblignes]['limite2'] = trim($souschaine[4]);
+ else {$tableau[$nblignes]['limite2'] ='';}
+ if (isset($souschaine[5])) $tableau[$nblignes]['defaut'] = trim($souschaine[5]);
+ else {$tableau[$nblignes]['defaut'] ='';}
+ if (isset($souschaine[6])) $tableau[$nblignes]['table_source'] = trim($souschaine[6]);
+ else {$tableau[$nblignes]['table_source'] ='';}
+ if (isset($souschaine[7])) $tableau[$nblignes]['id_source'] = trim($souschaine[7]);
+ else {$tableau[$nblignes]['id_source'] ='';}
+ if (isset($souschaine[8])) $tableau[$nblignes]['obligatoire'] = trim($souschaine[8]);
+ else {$tableau[$nblignes]['obligatoire'] ='';}
+ if (isset($souschaine[9])) $tableau[$nblignes]['recherche'] = trim($souschaine[9]);
+ else {$tableau[$nblignes]['recherche'] ='';}
+
+
+ // traitement des cases � cocher, dans ce cas la, on a une table de jointure entre la table
+ // de liste et la table bazar_fiche (elle porte un nom du genre bazar_ont_***)
+ // dans le template, � la place d'un nom de champs dans 'nom_bdd', on a un nom de table
+ // et 2 noms de champs s�par�s par un virgule ex : bazar_ont_theme,bot_id_theme,bot_id_fiche
+
+ if (isset($tableau[$nblignes]['nom_bdd']) && preg_match('/,/', $tableau[$nblignes]['nom_bdd'])) {
+ $tableau_info_jointe = explode (',', $tableau[$nblignes]['nom_bdd']) ;
+ $tableau[$nblignes]['table_jointe'] = $tableau_info_jointe[0] ;
+ $tableau[$nblignes]['champs_id_fiche'] = $tableau_info_jointe[1] ;
+ $tableau[$nblignes]['champs_id_table_jointe'] = $tableau_info_jointe[2] ;
+ }
+ $nblignes++;
+ }
+ return $tableau;
+}
+
+/** baz_voir_fiches() - Permet de visualiser en detail une liste de fiche au format XHTML
+*
+* @global boolean Rajoute des informations internes a l'application (date de modification, lien vers la page de d�part de l'appli)
+* @global integer Tableau d(Identifiant des fiches a afficher
+*
+* @return string HTML
+*/
+function baz_voir_fiches($danslappli, $idfiches=array()) {
+ $res='';
+ foreach($idfiches as $idfiche) {
+ $res.=baz_voir_fiche($danslappli, $idfiche);
+ }
+ return $res;
+}
+
+
+/** baz_voir_fiche() - Permet de visualiser en detail une fiche au format XHTML
+*
+* @global boolean Rajoute des informations internes a l'application (date de modification, lien vers la page de depart de l'appli) si a 1
+* @global integer Identifiant de la fiche a afficher
+*
+* @return string HTML
+*/
+function baz_voir_fiche($danslappli, $idfiche='') {
+ $res='';
+ if (isset($_GET['id_fiche'])) $GLOBALS['_BAZAR_']['id_fiche'] = $_GET['id_fiche'];
+ if ($idfiche != '') $GLOBALS['_BAZAR_']['id_fiche'] = $idfiche;
+ $url = $GLOBALS['_BAZAR_']['url'];
+ $url->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $url->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
+ $url = preg_replace ('/&amp;/', '&', $url->getURL()) ;
+
+ //cas ou la fiche a ete validee
+ if (isset($_GET['publiee'])) {
+ publier_fiche($_GET['publiee']);
+ }
+
+ //cas on une structure s'approprie une ressource
+ if (isset($_GET['appropriation'])) {
+ if ($_GET['appropriation']==1) {
+ $requete = 'INSERT INTO bazar_appropriation VALUES ('.$GLOBALS['_BAZAR_']['id_fiche'].', '.$GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_ID).')';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ }
+ elseif ($_GET['appropriation']==0) {
+ $requete = 'DELETE FROM bazar_appropriation WHERE ba_ce_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'].' AND ba_ce_id_structure='.$GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_ID);
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ }
+ }
+
+ //cas ou un commentaire a ete entre
+ if (isset($_POST['Nom'])) {
+ $requete = 'INSERT INTO bazar_commentaires VALUES ('.
+ baz_nextid('bazar_commentaires', 'bc_id_commentaire', $GLOBALS['_BAZAR_']['db']).
+ ', '.$GLOBALS['_BAZAR_']['id_fiche'].', "'.$_POST['Nom'].'", "'.$_POST['Commentaire'].
+ '", NOW() )';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ }
+ //cas ou un commentaire va etre supprime
+ elseif (isset($_GET['id_commentaire'])) {
+ $requete = 'DELETE FROM bazar_commentaires WHERE bc_id_commentaire='.$_GET['id_commentaire'].' LIMIT 1';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ }
+ else {
+ if (isset($_GET[BAZ_VARIABLE_ACTION])) {
+ if ($_GET[BAZ_VARIABLE_ACTION]==BAZ_VOIR_FICHE) {
+ //sinon on met a jour le nb de visites pour la fiche, puisque c'est une simple consultation
+ $requete = 'UPDATE bazar_fiche SET bf_nb_consultations=bf_nb_consultations+1 WHERE bf_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ }
+ }
+ }
+ $requete = 'SELECT * FROM bazar_fiche,bazar_nature WHERE bf_ce_nature=bn_id_nature and bf_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'];
+
+ if (isset($GLOBALS['_BAZAR_']['langue'])) $requete .= ' and bn_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'"';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ (DB::isError($resultat)) ? die (BOG_afficherErreurSql(__FILE__, __LINE__, $resultat->getMessage(), $requete))
+ : '';
+
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
+ if (!isset($GLOBALS['_BAZAR_']['typeannonce'])) $GLOBALS['_BAZAR_']['typeannonce'] = $ligne['bf_ce_nature'];
+ if (!isset($GLOBALS['_BAZAR_']['fiche_valide'])) $GLOBALS['_BAZAR_']['fiche_valide'] = $ligne['bf_statut_fiche'];
+ //on verifie si l'utilisateur est administrateur
+ $est_admin=0;
+
+ // Si on vient de l applette calendrier, $GLOBALS['_BAZAR_']['id_typeannonce'] est vide ...
+ // mais on dispose de la constante BAZ_NUM_ANNONCE_CALENDRIER
+ if (!isset($GLOBALS['_BAZAR_']['id_typeannonce']) && defined('BAZ_NUM_ANNONCE_CALENDRIER')) $GLOBALS['_BAZAR_']['id_typeannonce'] = BAZ_NUM_ANNONCE_CALENDRIER;
+
+ if (!isset($GLOBALS['_BAZAR_']['template'])) $GLOBALS['_BAZAR_']['template'] = $ligne['bn_template'];
+ if (!isset($GLOBALS['_BAZAR_']['commentaire'])) $GLOBALS['_BAZAR_']['commentaire'] = $ligne['bn_commentaire'];
+ if (!isset($GLOBALS['_BAZAR_']['class'])) $GLOBALS['_BAZAR_']['class'] = $ligne['bn_label_class'];
+
+ $utilisateur = new Administrateur_bazar ($GLOBALS['AUTH']);
+ if ($utilisateur->isAdmin($ligne['bn_id_nature']) || $utilisateur->isSuperAdmin()) {
+ $est_admin=1;
+ }
+
+ //debut de la fiche
+ $res .= '<div class="BAZ_cadre_fiche BAZ_cadre_fiche_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ //affiche le titre sous forme d'image
+ if (isset ($GLOBALS['_BAZAR_']['image_titre']) && $GLOBALS['_BAZAR_']['image_titre']!='') {
+ $res .= '<img class="BAZ_img_titre" src="client/bazar/images/'.$GLOBALS['_BAZAR_']['image_titre'].'" alt="'.$ligne['bn_label_nature'].'" />'.'<br />'."\n";
+ }
+ //affiche le texte sinon
+ else {
+ $res .= '<h2 class="BAZ_titre BAZ_titre_'.$GLOBALS['_BAZAR_']['class'].'">'.$ligne['bn_label_nature'].'</h2>'."\n";
+ }
+ $GLOBALS['_BAZAR_']['annonceur'] = $ligne['bf_ce_utilisateur'] ;
+ //si le template existe, on genere le template
+ if ((file_exists(BAZ_CHEMIN_APPLI.'templates/'.$GLOBALS['_BAZAR_']['typeannonce'].'-fiche.php'))) {
+ include_once(BAZ_CHEMIN_APPLI.'templates/'.$GLOBALS['_BAZAR_']['typeannonce'].'-fiche.php');
+ $res .=genere_fiche($ligne);
+ }
+ //on affiche ligne par ligne sinon
+ else {
+ // Le titre
+ $res .= '<h1 class="BAZ_fiche_titre BAZ_fiche_titre_'.$GLOBALS['_BAZAR_']['class'].'">'.$ligne['bf_titre'].'</h1>'."\n";
+ // cas d'une image personalisee
+ if (isset($ligne['bf_url_image'])) {
+ $res .= '<div class="BAZ_fiche_image BAZ_fiche_image_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<img class="BAZ_image" src="client/bazar/upload/'.$ligne['bf_url_image'].'" border=0 alt="'.BAZ_TEXTE_IMG_ALTERNATIF.'" />'."\n";
+ $res .= '</div>'."\n";
+ }
+ //cas d'une image par defaut
+ elseif (isset ($GLOBALS['_BAZAR_']['image_logo']) && $GLOBALS['_BAZAR_']['image_logo']!='') {
+ $res .= '<div class="BAZ_fiche_image BAZ_fiche_image_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<img class="BAZ_image" src="client/bazar/images/'.$GLOBALS['_BAZAR_']['image_logo'].'" border=0 alt="'.BAZ_TEXTE_IMG_ALTERNATIF.'" width="130" height="130" />'."\n";
+ $res .= '</div>'."\n";
+ }
+
+ $res .= '<div class="BAZ_description BAZ_description_'.$GLOBALS['_BAZAR_']['class'].'">'.nl2br($ligne['bf_description']).'</div>'."\n";
+ $tableau=baz_valeurs_template($GLOBALS['_BAZAR_']['template']);
+ for ($i=0; $i<count($tableau); $i++) {
+ if (isset($ligne[$tableau[$i]['nom_bdd']]) && ( $tableau[$i]['type']=='texte' || $tableau[$i]['type']=='textelong' ) ) {
+ $val=$tableau[$i]['nom_bdd'];
+ if (!in_array($val, array ('bf_titre', 'bf_description'))) {
+ if ($ligne[$val] != '' and $ligne[$val] != BAZ_CHOISIR and $ligne[$val] != BAZ_NON_PRECISE) {
+ $res .= '<div class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'."\n".'<span class="BAZ_label" id="'.$tableau[$i]['nom_bdd'].'_rubrique">'.$tableau[$i]['label'].':</span>'."\n";
+ $res .= '<span class="BAZ_texte BAZ_texte_'.$GLOBALS['_BAZAR_']['class'].'" id="'.$tableau[$i]['nom_bdd'].'_description"> '.nl2br($ligne[$val]).'</span>'."\n".'</div>'."\n";
+ }
+ }
+ }
+ elseif ( $tableau[$i]['type']=='champs_mail' ) {
+ $val=$tableau[$i]['nom_bdd'];
+ if ($ligne[$val] != '' and $ligne[$val] != BAZ_CHOISIR and $ligne[$val] != BAZ_NON_PRECISE) {
+ $res .= '<div class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'."\n".'<span class="BAZ_label" id="'.$tableau[$i]['nom_bdd'].'_rubrique">'.$tableau[$i]['label'].':</span>'."\n";
+ $res .= '<span class="BAZ_texte BAZ_texte_'.$GLOBALS['_BAZAR_']['class'].'" id="'.$tableau[$i]['nom_bdd'].'_description"><a href="mailto:'.$ligne[$val].'"> '.nl2br($ligne[$val]).'</a></span>'."\n".'</div>'."\n";
+ }
+ }
+ elseif ( $tableau[$i]['type']=='liste' || $tableau[$i]['type']=='checkbox' ) {
+ //pour les champs renseignes par une liste, on va chercher le label de la liste, plutot que l'id
+ $requete = 'SELECT blv_label FROM bazar_fiche_valeur_liste, bazar_liste_valeurs WHERE bfvl_ce_fiche='.$GLOBALS['_BAZAR_']['id_fiche'].
+ ' AND bfvl_ce_liste='.$tableau[$i]['nom_bdd'].' AND bfvl_valeur=blv_valeur AND blv_ce_liste='.$tableau[$i]['nom_bdd'].' AND blv_ce_i18n="'.$GLOBALS['_BAZAR_']['langue'].'"';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError ($resultat)) {
+ die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ $val='';$nb=0;
+ while ($tab = $resultat->fetchRow()) {
+ if ($nb>0) $val .= ', ';
+ $val .= $tab[0];
+ $nb++;
+ }
+ if ($val != '' and $val != BAZ_CHOISIR and $val != BAZ_NON_PRECISE) {
+ $res .= '<div class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'."\n".'<span class="BAZ_label" id="rubrique_'.$tableau[$i]['nom_bdd'].'">'.$tableau[$i]['label'].':</span>'."\n";
+ $res .= '<span class="BAZ_texte BAZ_texte_'.$GLOBALS['_BAZAR_']['class'].'" id="description_'.$tableau[$i]['nom_bdd'].'"> '.$val.'</span>'."\n".'</div>'."\n";
+ }
+ }
+ elseif ( $tableau[$i]['type']=='listedatedeb' || $tableau[$i]['type']=='listedatefin' ) {
+ $val=$tableau[$i]['nom_bdd'];
+ if (!in_array($val, array ('bf_date_debut_validite_fiche', 'bf_date_fin_validite_fiche'))) {
+ if ($ligne[$val] != '' && $ligne[$val] != '0000-00-00') {
+ // Petit test pour afficher la date de debut et de fin d evenement
+ if ($val == 'bf_date_debut_evenement' || $val == 'bf_date_fin_evenement') {
+ if ($ligne['bf_date_debut_evenement'] == $ligne['bf_date_fin_evenement']) {
+ if ($val == 'bf_date_debut_evenement') continue;
+ $res .= '<div class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'."\n".'<span class="BAZ_label" id="'.$tableau[$i]['nom_bdd'].'_rubrique">'.BAZ_LE.':</span>'."\n";
+ $res .= '<span class="BAZ_texte BAZ_texte_'.$GLOBALS['_BAZAR_']['class'].'" id="'.$tableau[$i]['nom_bdd'].'_description"> '.strftime('%d.%m.%Y',strtotime($ligne['bf_date_debut_evenement'])).'</span>'."\n".'</div>'."\n";
+ continue;
+ } else {
+
+ if ($val == 'bf_date_debut_evenement') {
+ $res .= '<div class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'."\n".'<span class="BAZ_label" id="'.$tableau[$i]['nom_bdd'].'_rubrique">';
+ $res .= BAZ_DU;
+ $res .= '</span>'."\n".'<span class="BAZ_texte BAZ_texte_'.$GLOBALS['_BAZAR_']['class'].'" id="'.$tableau[$i]['nom_bdd'].'_description"> '.strftime('%d.%m.%Y',strtotime($ligne[$val])).'</span>'."\n";
+ } else {
+ $res .= '<span class="BAZ_label" id="'.$tableau[$i]['nom_bdd'].'_rubrique">'.BAZ_AU;
+ $res .= '</span>'."\n".'<span class="BAZ_texte BAZ_texte_'.$GLOBALS['_BAZAR_']['class'].'" id="'.$tableau[$i]['nom_bdd'].'_description"> '.strftime('%d.%m.%Y',strtotime($ligne[$val])).'</span>'."\n".'</div>'."\n";
+ }
+
+ continue;
+ }
+ }
+
+ $res .= '<div class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'."\n".'<span class="BAZ_label" id="'.$tableau[$i]['nom_bdd'].'_rubrique">'.$tableau[$i]['label'].':</span>'."\n";
+ $res .= '<span class="BAZ_texte BAZ_texte_'.$GLOBALS['_BAZAR_']['class'].'" id="'.$tableau[$i]['nom_bdd'].'_description"> '.strftime('%d.%m.%Y',strtotime($ligne[$val])).'</span>'."\n".'</div>'."\n";
+ }
+ }
+ }
+ elseif ( $tableau[$i]['type']=='wikini' ) {
+ $res .= '<div class="BAZ_lien_wikini BAZ_lien_wikini_'.$GLOBALS['_BAZAR_']['class'].'"><a href="wikini/'.genere_nom_wiki2($ligne["bf_titre"], TRUE).'">'.BAZ_ENTRER_PROJET.'</a></div>'."\n";
+ } elseif ($tableau[$i]['type']=='labelhtml') {
+ // On ecrit le label uniquement si le champs obligatoire est a 1
+ if ($tableau[$i]['obligatoire'] == 1) $res .= '<div class="BAZ_label BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'.$tableau[$i]['label'].'</div>'."\n";
+ }
+ }
+ //afficher les liens pour l'annonce
+ $requete = 'SELECT bu_url, bu_descriptif_url FROM bazar_url WHERE bu_ce_fiche='.$GLOBALS['_BAZAR_']['id_fiche'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ if ($resultat->numRows()>0) {
+ $res .= '<span class="BAZ_label BAZ_label_'.$GLOBALS['_BAZAR_']['class'].'">'.BAZ_LIEN_INTERNET.':</span>'."\n";
+ $res .= '<span class="BAZ_description BAZ_description_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<ul class="BAZ_liste BAZ_liste_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ while ($ligne1 = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $res .= '<li class="BAZ_liste_lien BAZ_liste_lien_'.$GLOBALS['_BAZAR_']['class'].'"><a href="'.$ligne1['bu_url'].'" class="BAZ_lien" target="_blank">'.$ligne1['bu_descriptif_url'].'</a></li>'."\n";
+ }
+ $res .= '</ul></span>'."\n";
+ }
+
+ //afficher les fichiers pour l'annonce
+ $requete = 'SELECT bfj_description, bfj_fichier FROM bazar_fichier_joint WHERE bfj_ce_fiche='.$GLOBALS['_BAZAR_']['id_fiche'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ if ($resultat->numRows()>0) {
+ $res .= '<span class="BAZ_label BAZ_label_'.$GLOBALS['_BAZAR_']['class'].'">'.BAZ_LISTE_FICHIERS_JOINTS.':</span>'."\n";
+ $res .= '<span class="BAZ_description BAZ_description_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<ul class="BAZ_liste BAZ_liste_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ while ($ligne2 = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $res .= '<li class="BAZ_liste_fichier BAZ_liste_fichier_'.$GLOBALS['_BAZAR_']['class'].'"><a href="client/bazar/upload/'.$ligne2['bfj_fichier'].'">'.$ligne2['bfj_description'].'</a></li>'."\n";
+ }
+ $res .= '</ul></span>'."\n";
+ }
+ $res .= '<div class="BAZ_bulle_corps BAZ_bulle_corps_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<div class="BAZ_infos_fiche BAZ_infos_fiche_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<span class="BAZ_nb_vues BAZ_nb_vues_'.$GLOBALS['_BAZAR_']['class'].'">'.BAZ_NB_VUS.$ligne['bf_nb_consultations'].BAZ_FOIS.'</span><br />'."\n";
+
+ //affichage du redacteur de la fiche
+ $requete = 'SELECT '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.', '.BAZ_CHAMPS_EMAIL.
+ ' FROM '.BAZ_ANNUAIRE.' WHERE '.BAZ_CHAMPS_ID.'='.$ligne['bf_ce_utilisateur'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ while ($redacteur = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $res .= '<span class="BAZ_fiche_ecrite">'.BAZ_FICHE_NUMERO.$GLOBALS['_BAZAR_']['id_fiche'].BAZ_ECRITE;
+ if (!defined('BAZ_FICHE_REDACTEUR_MAIL') || BAZ_FICHE_REDACTEUR_MAIL) {
+ $res .= '<a href="mailto:'.$redacteur[BAZ_CHAMPS_EMAIL].'">'.$redacteur[BAZ_CHAMPS_PRENOM].' '.$redacteur[BAZ_CHAMPS_NOM].'</a>';
+ } else {
+ $res .= $redacteur[BAZ_CHAMPS_PRENOM].' '.$redacteur[BAZ_CHAMPS_NOM];
+ }
+ $res .= '<br /></span>'."\n";
+ }
+
+ //informations complementaires (id fiche, etat publication,... )
+ if ($danslappli==1) {
+ if ($GLOBALS['_BAZAR_']['fiche_valide']==1 && $GLOBALS['_BAZAR_']['appropriation']!=1) {
+ if ($ligne['bf_date_debut_validite_fiche'] != '0000-00-00' && $ligne['bf_date_fin_validite_fiche'] != '0000-00-00') {
+ $res .= '<span class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'.BAZ_PUBLIEE.':</span> '.BAZ_DU.
+ ' '.strftime('%d.%m.%Y',strtotime($ligne['bf_date_debut_validite_fiche'])).' '.
+ BAZ_AU.' '.strftime('%d.%m.%Y',strtotime($ligne['bf_date_fin_validite_fiche'])).'<br />'."\n";
+ }
+ }
+ elseif ($GLOBALS['_BAZAR_']['appropriation']!=1 || $GLOBALS['_BAZAR_']['fiche_valide']!=1) {
+ $res .= '<span class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'">'.BAZ_PUBLIEE.':</span> '.BAZ_NON.'<br />'."\n";
+ }
+ //affichage des infos et du lien pour la mise a jour de la fiche
+ if ( $est_admin || $GLOBALS['_BAZAR_']['annonceur']==$GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_ID) ) {
+ $res .= '<span class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'" id="date_creation">'.BAZ_DATE_CREATION.'</span> '.strftime('%d.%m.%Y %H:%M',strtotime($ligne['bf_date_creation_fiche']))."\n";
+ $res .= '<span class="BAZ_rubrique BAZ_rubrique_'.$GLOBALS['_BAZAR_']['class'].'" id="date_mise_a_jour">'.BAZ_DATE_MAJ.'</span> '.strftime('%d.%m.%Y %H:%M',strtotime($ligne['bf_date_maj_fiche']))."\n";
+ }
+ $res .= '</div>'."\n";
+
+ if ( $est_admin || $GLOBALS['_BAZAR_']['annonceur']==$GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_ID) ) {
+ $res .= '<div class="BAZ_actions_fiche BAZ_actions_fiche_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<ul>'."\n";
+ if ( $est_admin ) {
+ $lien_publie = &$GLOBALS['_BAZAR_']['url'];
+ $lien_publie->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $lien_publie->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
+ $lien_publie->addQueryString('typeannonce', $ligne['bf_ce_nature']);
+ if ($GLOBALS['_BAZAR_']['fiche_valide']==0||$GLOBALS['_BAZAR_']['fiche_valide']==2) {
+ $lien_publie->addQueryString('publiee', 1);
+ $label_publie=BAZ_VALIDER_LA_FICHE;
+ $class_publie='_valider';
+ } elseif ($GLOBALS['_BAZAR_']['fiche_valide']==1) {
+ $lien_publie->addQueryString('publiee', 0);
+ $label_publie=BAZ_INVALIDER_LA_FICHE;
+ $class_publie='_invalider';
+ }
+ $res .= '<li class="BAZ_liste'.$class_publie.'"><a href="'.$lien_publie->getURL().'">'.$label_publie.'</a></li>'."\n";
+ $lien_publie->removeQueryString('publiee');
+ }
+ $lien_modifier=$GLOBALS['_BAZAR_']['url'];
+ $lien_modifier->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER);
+ $lien_modifier->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
+ $lien_modifier->addQueryString('typeannonce', $ligne['bf_ce_nature']);
+ $res .= '<li class="BAZ_liste_modifier"><a href="'.$lien_modifier->getURL().'" id="modifier_fiche">'.BAZ_MODIFIER_LA_FICHE.'</a></li>'."\n";
+ $lien_supprimer=$GLOBALS['_BAZAR_']['url'];
+ $lien_supprimer->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_SUPPRESSION);
+ $lien_supprimer->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
+ $lien_supprimer->addQueryString('typeannonce', $ligne['bf_ce_nature']);
+ $res .= '<li class="BAZ_liste_supprimer"><a href="'.$lien_supprimer->getURL().'" id="supprimer_fiche">'.BAZ_SUPPRIMER_LA_FICHE.'</a></li>'."\n";
+ $res .= '</ul>'."\n";
+ $res .= '</div>'."\n";
+ }
+ }
+ $res .= '</div>'."\n";
+ $res .= '</div>'."\n";
+ }
+
+ // Nous vérifions comment est appelé la fonction
+ if ($danslappli == 0) {
+ $res .= '</div>'."\n";
+ } else if ($danslappli == 1 ) {
+
+ // Ajout des appropriations, s'il le faut
+ if ($GLOBALS['_BAZAR_']['appropriation'] == 1) {
+ $res .= '<br />'."\n".'<div class="BAZ_cadre_fiche BAZ_cadre_fiche_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<h2 class="BAZ_titre BAZ_titre_'.$GLOBALS['_BAZAR_']['class'].'">'.BAZ_LES_STRUCTURES_POSSEDANT_UNE_RESSOURCE.'</h2>'."\n";
+ $requete = 'SELECT '.BAZ_CHAMPS_ID.', '.BAZ_CHAMPS_NOM.' FROM bazar_appropriation,'.BAZ_ANNUAIRE.' WHERE ba_ce_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'].' AND ba_ce_id_structure='.BAZ_CHAMPS_ID.' ORDER BY '.BAZ_CHAMPS_NOM.' ASC';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError ($resultat)) {
+ return $resultat->getMessage().'<br />'.$resultat->getDebugInfo();
+ }
+ $possede_ressource=0;
+ if ($resultat->numRows()>0) {
+ $res .= BAZ_IL_Y_A.$resultat->numRows().' ';
+ if ($resultat->numRows()==1) $res .= BAZ_STRUCTURE_POSSEDANT.'<br />'."\n";
+ else $res .= BAZ_STRUCTURES_POSSEDANT.'<br />'."\n";
+ $res .= '<ul>'."\n";
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $res .= '<li><a href="'.BAZ_URL_ANNUAIRE.'&amp;voir_fiche='.$ligne[BAZ_CHAMPS_ID].'" onclick="javascript:window.open(this.href);return false;">'.$ligne[BAZ_CHAMPS_NOM].'</a></li>'."\n";
+ if ($GLOBALS['AUTH']->getAuth() && $GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_ID)==$ligne[BAZ_CHAMPS_ID]) $possede_ressource=1;
+ }
+ $res .= '</ul><br />'."\n";
+ }
+ else $res .= BAZ_PAS_D_APPROPRIATION.'<br /><br />'."\n";
+ $res .='<p class="BAZ_bulle_corps BAZ_bulle_corps_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $lien_appropriation = $GLOBALS['_BAZAR_']['url'];
+ $lien_appropriation->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $lien_appropriation->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
+ if ($possede_ressource) {
+ $lien_appropriation->addQueryString('appropriation', 0);
+ $res .= BAZ_POSSEDE_DEJA_RESSOURCE.'<br />'."\n".'<a href="'.$lien_appropriation->getURL().'">'.BAZ_CLIQUER_POUR_VOUS_ENLEVER.'</a>'."\n";
+ $lien_appropriation->removeQueryString('appropriation');
+ }
+ elseif ($GLOBALS['AUTH']->getAuth() && $GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_EST_STRUCTURE)) {
+ $lien_appropriation->addQueryString('appropriation', 1);
+ $res .= BAZ_SI_POSSEDE_RESSOURCE.'<br />'."\n".'<a href="'.$lien_appropriation->getURL().'">'.BAZ_CLIQUER_POUR_APPARAITRE.'</a>'."\n";
+ $lien_appropriation->removeQueryString('appropriation');
+ }
+ elseif ($GLOBALS['AUTH']->getAuth() && !$GLOBALS['AUTH']->getAuthData(BAZ_CHAMPS_EST_STRUCTURE)) {
+ $res .= BAZ_IL_FAUT_ETRE_STRUCTURE."\n";
+ }
+ elseif (!$GLOBALS['AUTH']->getAuth()) {
+ $res .= BAZ_IL_FAUT_ETRE_IDENTIFIE_STRUCTURE."\n";
+ }
+ $res .='</p>'."\n";
+ $res .= '</div>'."\n";
+ }
+
+ // Ajout des commentaires, s'il le faut
+ if ($GLOBALS['_BAZAR_']['commentaire'] == 1) {
+ $res .= '<br />'."\n".'<div class="BAZ_cadre_fiche BAZ_cadre_fiche_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ $res .= '<h2 class="BAZ_titre BAZ_titre_'.$GLOBALS['_BAZAR_']['class'].'">'.BAZ_LES_COMMENTAIRES.'</h2>'."\n";
+ $requete = 'SELECT * FROM bazar_commentaires WHERE bc_ce_id_fiche='.$GLOBALS['_BAZAR_']['id_fiche'].' ORDER BY bc_date ASC';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError ($resultat)) {
+ return $resultat->getMessage().'<br />'.$resultat->getDebugInfo();
+ }
+ if ($resultat->numRows()>0) {
+ $res .= BAZ_IL_Y_A.$resultat->numRows().' ';
+ if ($resultat->numRows()==1) $res .= BAZ_COMMENTAIRE.'<br />'."\n";
+ else $res .= BAZ_COMMENTAIRES.'<br />'."\n";
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $res .= '<div class="BAZ_bulle_corps BAZ_bulle_corps_'.$GLOBALS['_BAZAR_']['class'].'">'."\n";
+ //affichage du commentaire
+ $res .= $ligne['bc_commentaire'].'<br />'."\n";
+ $res .= '<div class="BAZ_commentaire_admin">'.BAZ_PAR.' : <strong>'.$ligne['bc_nom'].'</strong>'.BAZ_ECRIT_LE.strftime('%d.%m.%Y %H:%M',strtotime($ligne['bc_date']));
+ //pour les identifies seulement, administrateurs de la rubrique ou superadmins
+ if ($est_admin==1) {
+ $url_comment= $GLOBALS['_BAZAR_']['url'];
+ $url_comment->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $url_comment->addQueryString('id_fiche', $GLOBALS['_BAZAR_']['id_fiche']);
+ $url_comment->addQueryString('id_commentaire', $ligne['bc_id_commentaire']);
+ $res .= '&nbsp;&nbsp;<a href="'.$url_comment->getURL().'">'.BAZ_SUPPRIMER.'</a>'."\n";
+ }
+ $res .= '</div>'."\n";
+ $res .= '</div>'."\n";
+ }
+ }else {
+ $res .= BAZ_PAS_DE_COMMENTAIRES.'<br /><br />'."\n";
+ }
+
+ //formulaire des commentaires
+ if ($GLOBALS['AUTH']->getAuth()) {
+ $form_commentaire = new HTML_QuickForm('bazar_commentaire', 'post', $url);
+ $squelette =& $form_commentaire->defaultRenderer();
+ $squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'{content}'."\n".'</form>'."\n");
+ $squelette->setElementTemplate( '<label style="width:200px;">{label}'.
+ '<!-- BEGIN required --><span class="symbole_obligatoire">&nbsp;*</span><!-- END required -->'."\n".
+ '</label><br />'."\n".'{element}<br />'."\n");
+ $squelette->setRequiredNoteTemplate("\n".'<span class="symbole_obligatoire"> *{requiredNote}</span>'."\n");
+ $option=array('style'=>'width:300px;border:1px solid #000;', 'maxlength'=>100);
+ $form_commentaire->addElement('text', 'Nom', BAZ_ENTREZ_VOTRE_NOM, $option);
+ $option=array('style'=>'width:95%;height:100px;white-space: pre;padding:3px;border:1px solid #000;');
+ require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/textarea.php';
+ $formtexte= new HTML_QuickForm_textarea('Commentaire', BAZ_ENTREZ_VOTRE_COMMENTAIRE, $option);
+ $form_commentaire->addElement($formtexte) ;
+ $option=array('style'=>'border:1px solid #000;');
+ $form_commentaire->addElement('submit', 'Envoyer', BAZ_ENVOYER, $option);
+ $form_commentaire->addRule('Nom', BAZ_NOM_REQUIS, 'required', '', 'client') ;
+ $form_commentaire->addRule('Commentaire', BAZ_COMMENTAIRE_REQUIS, 'required', '', 'client') ;
+ $form_commentaire->setRequiredNote(BAZ_CHAMPS_REQUIS) ;
+ $res .= $form_commentaire->toHTML();
+ }
+ $res .= '</div>'."\n";
+ }
+ }
+
+ // Nettoyage de l'url avant les return : apparement inutile sinon pose pb dans Papyrus (url applette deconnexion et moteur de recherche) [jpm le 17 mars 2008]
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ //$GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_commentaire');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce');
+ return $res ;
+}
+
+ // merci PHP 5 ...
+function mb_str_split2($str, $length = 1) {
+
+ if ($length < 1) return FALSE;
+
+ $result = array();
+
+ for ($i = 0; $i < strlen($str); $i += $length) {
+ $result[] = substr($str, $i, $length);
+ }
+
+ return $result;
+}
+
+function remove_accents2( $string )
+{
+ $string = htmlentities($string);
+ return preg_replace("/&([a-z])[a-z]+;/i","$1",$string);
+}
+
+function genere_nom_wiki2($nom, $spaces = FALSE)
+{
+ // traitement des accents
+ $nom = remove_accents2($nom);
+
+ $temp = mb_str_split2($nom);
+
+ $count = 0;
+ $final = NULL;
+ foreach($temp as $letter)
+ {
+ if(preg_match('/([[:space:]]|[[:punct:]])/', $letter))
+ {
+ $final .= ($spaces ? '_' : '');
+ } elseif(preg_match ('/[a-zA-Z0-9]/', $letter)) {
+ $final .= (($count == 0 || $count == (strlen($nom) - 1)) ? strtoupper($letter) : strtolower($letter));
+ }
+ $count++;
+ }
+
+ // v�rifions que le retour n'est pas uniquement un underscore
+ if(preg_match('/^[[:punct:]]+$/', $final)) return FALSE;
+
+ // sinon retour du nom formaté
+ return($final);
+}
+
+
+/** RSSversHTML () transforme un flux RSS (en XML) en page HTML
+*
+* On passe en param�tre le contenu du flux RSS, on affiche ou non la description,
+* et on choisit de format de la date � l'affichage. On a en sortie du code HTML � afficher
+*
+* @param string le contenu du flux RSS
+* @param boolean afficher ou non la description
+* @param string choisir le format de date: jmah (12/02/2004 12h34) jmh (12/02 12h34) jma (12/02/2004) jm (12/02) ou rien
+*
+* @return string le code HTML
+*/
+function RSSversHTML($rss, $voirdesc, $formatdate, $affichenb) {
+ if ($rss!='') {
+ $rawitems='';$title='';$url='';$cat='';$date='';
+ $res='';
+ if( eregi('<item>(.*)</item>', $rss, $rawitems ) ) {
+ $items = explode('<item>', $rawitems[0]);
+ $res.='<ul id="BAZ_liste_fiche">'."\n";
+ for( $i = 0; $i < count($items)-1; $i++ ) {
+ eregi('<title>(.*)</title>',$items[$i+1], $title );
+ eregi('<link>(.*)</link>',$items[$i+1], $url );
+ eregi('<description>(.*)</description>',$items[$i+1], $cat);
+ eregi('<pubDate>(.*)</pubDate>',$items[$i+1], $date);
+ $res.='<li>';
+ if ($formatdate=='jm') {$res.=strftime('%d.%m',strtotime($date[1])).': ';}
+ if ($formatdate=='jma') {$res.=strftime('%d.%m.%Y',strtotime($date[1])).': ';}
+ if ($formatdate=='jmh') {$res.=strftime('%d.%m %H:%M',strtotime($date[1])).': ';}
+ if ($formatdate=='jmah') {$res.=strftime('%d.%m.%Y %H:%M',strtotime($date[1])).': ';}
+ $res.='<a href="'.preg_replace ('/&amp;/', '&', $url[1]).'">'.$title[1].'</a>';
+ if ($voirdesc) {$res.=$cat[1];}
+ // Ajout du bouton supprimer pour les superadministrateur
+ $utilisateur = new Administrateur_bazar($GLOBALS['AUTH']);
+ if (($GLOBALS['AUTH']->getAuth() && $utilisateur->isSuperAdmin())and($url[1]!='#')) {
+ $mon_url = preg_replace ('/&amp;/', '&', $url[1]) ;
+ $url_suppr = new Net_URL(preg_replace ('/&amp;/', '&', $mon_url)) ;
+ $url_suppr->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_SUPPRESSION) ;
+ $res .= ' ( <a href="'.$url_suppr->getURL().
+ '" onclick="javascript:return confirm(\''.BAZ_SUPPRIMER.' ?\');">'.
+ BAZ_SUPPRIMER.'</a> )'."\n" ;
+ }
+ $res.='</li>'."\n";
+ }
+ $res.='</ul>'."\n";
+ if ($affichenb==1) {
+ //une annonce trouvee, on accorde au singulier
+ if (((count($items)-1)==1)and($title!=BAZ_PAS_D_ANNONCES)) {
+ $res = '<br /><h4>'.BAZ_IL_Y_A.' 1 '.BAZ_FICHE_CORRESPONDANTE.'</h4><br />'."\n".$res;
+ }
+ //plusieures annonces trouvees, on accorde au pluriel
+ else {
+ $res = '<br /><h4>'.BAZ_IL_Y_A.(count($items)-1).' '.BAZ_FICHES_CORRESPONDANTES.'</h4><br />'."\n".$res;
+ }
+ }
+ //cas des fiches pas trouv�es
+ if (((count($items)-1)==1)and($title[1]==BAZ_PAS_D_ANNONCES)) {
+ $res = '<br /><h4>'.BAZ_PAS_D_ANNONCES.'</h4><br />'."\n";
+ }
+ }
+ }
+ else $res = BAZ_PAS_D_ANNONCES;
+
+ // Nettoyage de l'url
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+
+ return $res;
+}
+
+/** gen_RSS() - generer un fichier de flux RSS par type d'annonce
+*
+* @param string Le type de l'annonce (laisser vide pour tout type d'annonce)
+* @param integer Le nombre d'annonces a regrouper dans le fichier XML (laisser vide pour toutes)
+* @param integer L'identifiant de l'emetteur (laisser vide pour tous)
+* @param integer L'etat de validation de l'annonce (laisser 1 pour les annonces validees, 0 pour les non-validees)
+* @param string La requete SQL personnalisee
+* @param integer La categorie des fiches bazar
+*
+* @return string Le code du flux RSS
+*/
+function gen_RSS($typeannonce='', $nbitem='', $emetteur='', $valide=1, $requeteSQL='', $requeteSQLFrom = '', $requeteWhereListe = '', $categorie_nature='') {
+ // generation de la requete MySQL personnalisee
+ $req_where=0;
+ $requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche, bf_description, bn_label_nature, bf_date_creation_fiche '.
+ 'FROM bazar_fiche, bazar_nature '.$requeteSQLFrom.' WHERE '.$requeteWhereListe;
+ if ($valide!=2) {
+ $requete .= 'bf_statut_fiche='.$valide;
+ $req_where=1;
+ }
+ $nomflux=html_entity_decode(BAZ_DERNIERE_ACTU);
+ if (!is_array ($typeannonce) && $typeannonce!='' and $typeannonce!='toutes') {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $requete .= 'bf_ce_nature='.$typeannonce.' and bf_ce_nature=bn_id_nature ';;
+ $req_where=1;
+ //le nom du flux devient le type d'annonce
+ $requete_nom_flux = 'select bn_label_nature from bazar_nature where bn_id_nature = '.$typeannonce;
+ $nomflux = $GLOBALS['_BAZAR_']['db']->getOne($requete_nom_flux) ;
+ }
+ // Cas ou il y plusieurs type d annonce demande
+ if (is_array ($typeannonce)) {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $requete .= 'bf_ce_nature IN (' ;
+ $chaine = '';
+ foreach ($typeannonce as $valeur) $chaine .= '"'.$valeur.'",' ;
+ $requete .= substr ($chaine, 0, strlen ($chaine)-1) ;
+ $requete .= ') and bf_ce_nature=bn_id_nature ';
+ }
+ $utilisateur = new Administrateur_bazar ($GLOBALS['AUTH']) ;
+ if ($valide!=0) {
+
+ if ($utilisateur->isSuperAdmin()) {
+ $req_where=1;
+ } else {
+ if ($req_where==1) {
+ $requete .= ' AND ';
+ }
+ $requete .= '(bf_date_debut_validite_fiche<=NOW() or bf_date_debut_validite_fiche="0000-00-00")'.
+ ' AND (bf_date_fin_validite_fiche>=NOW() or bf_date_fin_validite_fiche="0000-00-00") AND bn_id_nature=bf_ce_nature';
+ }
+ }
+ else $nomflux .= BAZ_A_MODERER;
+ if ($emetteur!='' && $emetteur!='tous') {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $requete .= 'bf_ce_utilisateur='.$emetteur;
+ $req_where=1;
+ //requete pour afficher le nom de la structure
+ $requetenom = 'SELECT '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' FROM '.
+ BAZ_ANNUAIRE.' WHERE '.BAZ_CHAMPS_ID.'='.$emetteur;
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requetenom) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
+ $nomflux .= ' ('.$ligne[BAZ_CHAMPS_NOM].' '.$ligne[BAZ_CHAMPS_PRENOM].')';
+ }
+ if ($requeteSQL!='') {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $requete .= '('.$requeteSQL.')';
+ $req_where=1;
+ }
+ if ($categorie_nature!='') {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $requete .= 'bn_ce_id_menu IN ('.$categorie_nature.') and bf_ce_nature=bn_id_nature ';
+ $req_where=1;
+ }
+
+ $requete .= ' ORDER BY bf_date_creation_fiche DESC, bf_date_fin_validite_fiche DESC, bf_date_maj_fiche DESC';
+ if ($nbitem!='') {$requete .= ' LIMIT 0,'.$nbitem;}
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+
+ include_once PAP_CHEMIN_API_PEAR . 'XML/Util.php' ;
+
+ // passage en utf-8 --julien
+ // --
+
+ // setlocale() pour avoir les formats de date valides (w3c) --julien
+ setlocale(LC_TIME, "C");
+
+ $xml = XML_Util::getXMLDeclaration('1.0', 'UTF-8', 'yes') ;
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createStartElement ('rss', array('version' => '2.0')) ;
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createStartElement ('channel');
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('title', null, utf8_encode(html_entity_decode($nomflux)));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('link', null, utf8_encode(html_entity_decode(BAZ_RSS_ADRESSESITE)));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('description', null, utf8_encode(html_entity_decode(BAZ_RSS_DESCRIPTIONSITE)));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('language', null, 'fr-FR');
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('copyright', null, 'Copyright (c) '. date('Y') .' '. BAZ_RSS_NOMSITE);
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('lastBuildDate', null, strftime('%a, %d %b %Y %H:%M:%S GMT'));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('docs', null, 'http://www.stervinou.com/projets/rss/');
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('category', null, BAZ_RSS_CATEGORIE);
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('managingEditor', null, BAZ_RSS_MANAGINGEDITOR);
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('webMaster', null, BAZ_RSS_WEBMASTER);
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('ttl', null, '60');
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createStartElement ('image');
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('title', null, BAZ_RSS_NOMSITE);
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('url', null, BAZ_RSS_LOGOSITE);
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('link', null, BAZ_RSS_ADRESSESITE);
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createEndElement ('image');
+ if ($resultat->numRows() > 0) {
+ // Creation des items : titre + lien + description + date de publication
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createStartElement ('item');
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag('title', null, encoder_en_utf8($ligne['bf_titre']));
+ $xml .= "\r\n ";
+ $lien=$GLOBALS['_BAZAR_']['url'];
+ $lien->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $lien->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $xml .= XML_Util::createTag ('link', null, $lien->getURL());
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('guid', null, $lien->getURL());
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createStartElement ('description');
+ $xml .= "\r\n ";
+ if ($_GET[BAZ_VARIABLE_ACTION] != BAZ_VOIR_TOUTES_ANNONCES) {
+ $xml .= XML_Util::createCDataSection(encoder_en_utf8($ligne['bf_description']));
+ }
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createEndElement ('description');
+ $xml .= "\r\n ";
+ if ($ligne['bf_date_debut_validite_fiche'] != '0000-00-00' &&
+ $ligne['bf_date_debut_validite_fiche']>$ligne['bf_date_creation_fiche']) {
+ $date_pub = $ligne['bf_date_debut_validite_fiche'];
+ } else $date_pub = $ligne['bf_date_creation_fiche'] ;
+ $xml .= XML_Util::createTag ('pubDate', null, strftime('%a, %d %b %Y %H:%M:%S GMT',strtotime($date_pub)));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createEndElement ('item');
+ }
+ }
+ else {//pas d'annonces
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createStartElement ('item');
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('title', null, utf8_encode(html_entity_decode(BAZ_PAS_D_ANNONCES)));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('link', null, utf8_encode(html_entity_decode($GLOBALS['_BAZAR_']['url']->getUrl())));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('guid', null, utf8_encode(html_entity_decode($GLOBALS['_BAZAR_']['url']->getUrl())));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('description', null, utf8_encode(html_entity_decode(BAZ_PAS_D_ANNONCES)));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createTag ('pubDate', null, strftime('%a, %d %b %Y %H:%M:%S GMT',strtotime("01/01/%Y")));
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createEndElement ('item');
+ }
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createEndElement ('channel');
+ $xml .= "\r\n ";
+ $xml .= XML_Util::createEndElement('rss') ;
+
+ // Nettoyage de l'url
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+
+ return $xml;
+}
+
+
+/** baz_liste() Formate la liste de toutes les annonces actuelles
+*
+* @return string le code HTML a afficher
+*/
+function baz_liste($typeannonce='toutes') {
+ //creation du lien pour le formulaire de recherche
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_TOUTES_ANNONCES);
+ if (isset($_REQUEST['recherche_avancee'])) $GLOBALS['_BAZAR_']['url']->addQueryString ('recherche_avancee', $_REQUEST['recherche_avancee']);
+ $lien_formulaire = preg_replace ('/&amp;/', '&', $GLOBALS['_BAZAR_']['url']->getURL()) ;
+ $formtemplate = new HTML_QuickForm('formulaire', 'post', $lien_formulaire) ;
+ $squelette =& $formtemplate->defaultRenderer();
+ $squelette->setFormTemplate("\n".'<form {attributes}>'."\n".'<table>'."\n".'{content}'."\n".'</table>'."\n".'</form>'."\n");
+ $squelette->setElementTemplate( '<tr>'."\n".'<td>'."\n".'{label}'.
+ '<!-- BEGIN required --><span class="symbole_obligatoire">&nbsp;*</span><!-- END required -->'."\n".
+ ' :</td>'."\n".'<td style="text-align:left;padding:5px;"> '."\n".'{element}'."\n".
+ '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
+ '</td>'."\n".'</tr>'."\n");
+ $squelette->setElementTemplate( '<tr>'."\n".'<td colspan="2" class="liste_a_cocher"><strong>{label}&nbsp;{element}</strong>'."\n".
+ '<!-- BEGIN required --><span class="symbole_obligatoire">&nbsp;*</span><!-- END required -->'."\n".'</td>'."\n".'</tr>'."\n", 'accept_condition');
+ $squelette->setElementTemplate( '<tr><td colspan="2">{label}{element}</td></tr>'."\n", 'rechercher');
+
+ $squelette->setRequiredNoteTemplate("\n".'<tr>'."\n".'<td colspan="2" class="symbole_obligatoire">* {requiredNote}</td></tr>'."\n");
+ //Traduction de champs requis
+ $formtemplate->setRequiredNote(BAZ_CHAMPS_REQUIS) ;
+ $formtemplate->setJsWarnings(BAZ_ERREUR_SAISIE,BAZ_VEUILLEZ_CORRIGER);
+
+
+ //cas du formulaire de recherche proposant de chercher parmis tous les types d'annonces
+ //requete pour obtenir l'id et le label des types d'annonces
+ $requete = 'SELECT bn_id_nature, bn_label_nature '.
+ 'FROM bazar_nature WHERE bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ';
+ if (isset($GLOBALS['_BAZAR_']['langue'])) $requete .= ' and bn_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%" ';
+ 'ORDER BY bn_label_nature ASC';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ //on recupere le nb de types de fiches, pour plus tard
+ $nb_type_de_fiches=$resultat->numRows();
+ $type_annonce_select['toutes']=BAZ_TOUS_TYPES_FICHES;
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $type_annonce_select[$ligne['bn_id_nature']] = $ligne['bn_label_nature'];
+ $tableau_typeannonces[] = $ligne['bn_id_nature'] ;
+ }
+ if ($nb_type_de_fiches>1 && $GLOBALS['_BAZAR_']['typeannonce']=='toutes' && BAZ_AFFICHER_FILTRE_MOTEUR) {
+ $res= '';
+ $option=array('onchange' => 'javascript:this.form.submit();');
+ $formtemplate->addElement ('select', 'nature', BAZ_TYPEANNONCE, $type_annonce_select, $option) ;
+ if (isset($_REQUEST['nature'])) {
+ $defauts=array('nature'=>$_REQUEST['nature']);
+ $formtemplate->setDefaults($defauts);
+ }
+ }
+ //cas du type d'annonces predefini
+ else {
+ if ($nb_type_de_fiches==1) {
+ $GLOBALS['_BAZAR_']['typeannonce']=end($type_annonce_select);
+ $GLOBALS['_BAZAR_']['id_typeannonce']=key($type_annonce_select);
+ }
+ $res = '<h2 class="bazar_titre2">'.BAZ_TOUTES_LES_ANNONCES_DE_TYPE.' '.$GLOBALS['_BAZAR_']['typeannonce'].'</h2>'."\n";
+ }
+
+ //requete pour obtenir l'id, le nom et prenom de toutes les personnes ayant depose une fiche
+ // dans le but de construire l'element de formulaire select avec les noms des emetteurs de fiche
+ if (BAZ_RECHERCHE_PAR_EMETTEUR) {
+ $requete = 'SELECT DISTINCT '.BAZ_CHAMPS_ID.', '.BAZ_CHAMPS_NOM.', '.BAZ_CHAMPS_PRENOM.' '.
+ 'FROM bazar_fiche,'.BAZ_ANNUAIRE.' WHERE ' ;
+
+ $requete .= ' bf_date_debut_validite_fiche<=NOW() AND bf_date_fin_validite_fiche>=NOW() and';
+
+ $requete .= ' bf_ce_utilisateur='.BAZ_CHAMPS_ID.' ';
+ if (!isset($_REQUEST['nature'])) {
+ if (isset($GLOBALS['_BAZAR_']['id_typeannonce'])) {
+ $requete .= 'AND bf_ce_nature="'.$GLOBALS['_BAZAR_']['id_typeannonce'].'" ';
+ }
+ }
+ else {
+ if ($_REQUEST['nature']!='toutes') {
+ $requete .= 'AND bf_ce_nature='.$_REQUEST['nature'].' ';
+ }
+ }
+
+ $requete .= 'ORDER BY '.BAZ_CHAMPS_NOM.' ASC';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ $personnes_select['tous']=BAZ_TOUS_LES_EMETTEURS;
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $personnes_select[$ligne[BAZ_CHAMPS_ID]] = $ligne[BAZ_CHAMPS_NOM]." ".$ligne[BAZ_CHAMPS_PRENOM] ;
+ }
+ $option=array('style'=>'border:1px solid #000;width: 200px;font:12px Myriad, Arial, sans-serif;');
+ $formtemplate->addElement ('select', 'personnes', BAZ_EMETTEUR, $personnes_select, $option) ;
+ } else {
+ $formtemplate->addElement ('hidden', 'personnes', 'tous') ;
+ }
+
+ //pour les super-administrateurs, on peut voir les annonces non validees
+ //on verifie si l'utilisateur est administrateur
+ $utilisateur = new Administrateur_bazar($GLOBALS['AUTH']) ;
+
+ if ($utilisateur->isSuperAdmin()) {
+ $option=array('style'=>'border:1px solid #000;width: 200px;font:12px Myriad, Arial, sans-serif;');
+ $valide_select[0] = BAZ_FICHES_PAS_VALIDEES;
+ $valide_select[1] = BAZ_FICHES_VALIDEES;
+ $valide_select[2] = BAZ_LES_DEUX;
+ $formtemplate->addElement ('select', 'valides', BAZ_VALIDE, $valide_select, $option) ;
+ $defauts=array('valides'=>1);
+ $formtemplate->setDefaults($defauts);
+ }
+
+ //champs texte pour entrer les mots cles
+ $option=array('maxlength'=>60,'style'=>'border:1px solid #000;width:200px;font:12px Myriad, Arial, sans-serif;');
+ $formtemplate->addElement('text', 'recherche_mots_cles', BAZ_MOT_CLE, $option) ;
+
+ //option cachee pour savoir si le formulaire a ete appele deja
+ $formtemplate->addElement('hidden', 'recherche_effectuee', 1) ;
+
+ // Ajout des options si un type de fiche a ete choisie
+ if ( (isset($_REQUEST['nature']) && $_REQUEST['nature'] != 'toutes') || (isset($GLOBALS['_BAZAR_']['categorie_nature']) && $nb_type_de_fiches==1)) {
+ if ( BAZ_MOTEUR_RECHERCHE_AVANCEE || ( isset($_REQUEST['recherche_avancee'])&&$_REQUEST['recherche_avancee']==1) ) {
+ if ($GLOBALS['_BAZAR_']['categorie_nature'] != '') {
+ $champs_requete = '' ;
+ if (!isset($_REQUEST['nature']) || $_REQUEST['nature'] == '') {
+ $_REQUEST['nature'] = $tableau_typeannonces[0];
+ }
+ }
+ // Recuperation du template
+ $requete = 'SELECT bn_template FROM bazar_nature WHERE bn_id_nature = '.$_REQUEST['nature'];
+ $resultat = $GLOBALS['_BAZAR_']['db']->getOne($requete) ;
+ if (DB::isError($resultat)) {
+ return ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+
+ if (isset($_REQUEST['recherche_avancee']) && $_REQUEST['recherche_avancee']==1) {
+ foreach(array_merge($_POST, $_GET) as $cle => $valeur) $GLOBALS['_BAZAR_']['url']->addQueryString($cle, $valeur);
+ $GLOBALS['_BAZAR_']['url']->addQueryString('recherche_avancee', '0');
+ $lien_recherche_de_base = '<a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.BAZ_RECHERCHE_DE_BASE.'</a><br />';
+ //lien recherche de base
+ labelhtml($formtemplate,'',$lien_recherche_de_base,'','','','','');
+ }
+
+ $tableau = baz_valeurs_template($resultat) ;
+ for ($i=0; $i<count($tableau); $i++) {
+ if (($tableau[$i]['type'] == 'liste' || $tableau[$i]['type'] == 'checkbox' || $tableau[$i]['type'] == 'labelhtml') && $tableau[$i]['recherche'] == 1) {
+ $tableau[$i]['type']($formtemplate, $tableau[$i]['nom_bdd'], $tableau[$i]['label'], $tableau[$i]['limite1'],
+ $tableau[$i]['limite2'], $tableau[$i]['defaut'], $tableau[$i]['table_source'], $tableau[$i]['obligatoire'], 1, 'bazar') ;
+ }
+ }
+
+ }
+ else {
+ $url_rech_avance = $GLOBALS['_BAZAR_']['url'];
+ foreach(array_merge($_POST, $_GET) as $cle => $valeur) $url_rech_avance->addQueryString($cle, $valeur);
+ $url_rech_avance->addQueryString('recherche_avancee', '1');
+ $lien_recherche_avancee = '<a href="'.$url_rech_avance->getURL().'">'.BAZ_RECHERCHE_AVANCEE.'</a><br />';
+ unset ($url_rech_avance);
+ }
+ }
+
+ //lien recherche avancee
+ if (isset($lien_recherche_avancee)) {
+ labelhtml($formtemplate,'',$lien_recherche_avancee,'','','','','');
+ }
+
+ //Bouton de validation du formulaire
+ $option=array('style'=>'border:1px solid #000;width:100px;font:12px Myriad, Arial, sans-serif;');
+ $formtemplate->addElement('submit', 'rechercher', BAZ_RECHERCHER, $option);
+
+ //affichage du formulaire
+ //$res.=$formtemplate->toHTML()."\n";
+
+
+ // Ajout de la table bazar_fiche_liste_valeur dans le from de la requete
+ $case_coche = false ;
+ $nb_jointures=0;
+ $requeteFrom = '' ;
+ $requeteWhere = ' bn_ce_id_menu IN ('.$GLOBALS['_BAZAR_']['categorie_nature'].') ';
+ if ($GLOBALS['_BAZAR_']['id_typeannonce'] != 'toutes') $requeteWhere .= 'AND bn_id_nature='.$GLOBALS['_BAZAR_']['id_typeannonce'] ;
+ $requeteWhere .= ' AND bn_id_nature=bf_ce_nature AND ' ;
+ if (isset($GLOBALS['_BAZAR_']['langue'])) {
+ $requeteWhere .= ' bn_ce_i18n like "'.$GLOBALS['_BAZAR_']['langue'].'%" and ';
+ }
+ $requeteWhereListe = '' ;
+
+ if ( isset($tableau) ) {
+ for ($i = 0; $i < count ($tableau); $i++) {
+ if ($tableau[$i]['type'] == 'checkbox' || $tableau[$i]['type'] == 'liste') {
+ $nb_jointures++;
+ $nom_liste = $tableau[$i]['type'].$tableau[$i]['nom_bdd'] ;
+ if (isset($_REQUEST[$nom_liste]) && is_array($_REQUEST[$nom_liste])) {
+ $case_coche = true;
+ $requeteFrom .= ', bazar_fiche_valeur_liste as bfvl'.($nb_jointures) ;
+ $requeteWhereListe .= ' bfvl'.$nb_jointures.'.bfvl_ce_liste='.$tableau[$i]['nom_bdd'].' AND ' ; // Num�ro de la liste
+ $requeteWhere .= ' bfvl'.($nb_jointures).'.bfvl_ce_fiche=bf_id_fiche AND ';
+ $requeteWhereListe .= ' bfvl'.$nb_jointures.'.bfvl_valeur IN (' ;
+ $chaine = '';
+ //var_dump($_REQUEST[$nom_liste]);
+ foreach ($_REQUEST[$nom_liste] as $cle =>$valeur) {
+ if ($valeur == 1) {
+ $chaine .= '"'.$cle.'",' ;
+ }
+ }
+ $requeteWhereListe .= substr ($chaine, 0, strlen ($chaine)-1) ;
+ $requeteWhereListe .= ') AND ';
+ } else {
+ if (isset ($_REQUEST[$nom_liste]) && $_REQUEST[$nom_liste]!=0) {
+ $requeteFrom .= ', bazar_fiche_valeur_liste as bfvl'.($nb_jointures) ;
+ $requeteWhereListe .= ' bfvl'.$nb_jointures.'.bfvl_ce_liste='.$tableau[$i]['nom_bdd'].' AND ' ; // Num�ro de la liste
+ $requeteWhereListe .= ' bfvl'.$nb_jointures.'.bfvl_valeur='.$_REQUEST[$nom_liste].' AND ';
+ $requeteWhere .= ' bfvl'.($nb_jointures).'.bfvl_ce_fiche=bf_id_fiche AND ';
+ $case_coche = true;
+ }
+ }
+ }
+ }
+ }
+ if ($case_coche) {
+ $requeteWhere .= $requeteWhereListe;
+ }
+ if (isset($_REQUEST['nature']) && $_REQUEST['nature']!='' && $_REQUEST['nature']!='toutes') {
+ $requeteWhere = 'bf_ce_nature="'.$_REQUEST['nature'].'" AND '.$requeteWhere;
+ }
+
+ if (BAZ_UTILISE_TEMPLATE) {
+ // Appel du template n 1
+ include_once BAZ_CHEMIN_APPLI.'bibliotheque/bazarTemplate.class.php' ;
+
+ $template = new bazarTemplate ($GLOBALS['_BAZAR_']['db']) ;
+ $chaine = $template->getTemplate(1, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['categorie_nature']);
+ if (bazarTemplate::isError ($chaine)) return $chaine->getMessage() ;
+ ob_start();
+ eval ($chaine) ;
+ $res .= ob_get_contents();
+ ob_end_clean() ;
+ } else {
+ $res .= $formtemplate->toHTML();
+ if (!isset($_REQUEST['recherche_effectuee'])) {
+ $res .= '<p class="zone_info">'.BAZ_ENTRER_VOS_CRITERES_DE_RECHERCHE.'</p>'."\n";
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION,BAZ_VOIR_FLUX_RSS);
+ $GLOBALS['_BAZAR_']['url']->addQueryString('annonce',$GLOBALS['_BAZAR_']['id_typeannonce']);
+ if ($GLOBALS['_BAZAR_']['categorie_nature']!=0) $GLOBALS['_BAZAR_']['url']->addQueryString('categorie_nature',$GLOBALS['_BAZAR_']['categorie_nature']);
+ // $res .= '{{Syndication titre="'.BAZ_DERNIERES_FICHES.'" url="'.$GLOBALS['_BAZAR_']['url']->getURL().'" nb=10 nouvellefenetre=0 formatdate="'.BAZ_TYPE_AFFICHAGE_LISTE.'"}}';
+ $requete = 'SELECT DISTINCT bf_id_fiche, bf_titre, bf_date_debut_validite_fiche, bf_description, bn_label_nature, bf_date_creation_fiche FROM bazar_fiche, bazar_nature WHERE bn_id_nature=bf_ce_nature AND bn_ce_id_menu="'.$GLOBALS['_BAZAR_']['categorie_nature'].'" AND (bf_date_debut_validite_fiche<=NOW() or bf_date_debut_validite_fiche="0000-00-00") AND (bf_date_fin_validite_fiche>=NOW() or bf_date_fin_validite_fiche="0000-00-00")
+ ORDER BY bf_date_creation_fiche DESC, bf_date_fin_validite_fiche DESC, bf_date_maj_fiche DESC';
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete);
+ if (DB::isError($resultat)) {
+ return ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+ if($resultat->numRows() != 0) {
+ $res .= '<h2>'.BAZ_DERNIERES_FICHES.'</h2>';
+ $res .= '<ul class="liste_rss">';
+ while($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+ $GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $ligne['bf_id_fiche']);
+ $res .= '<li class="titre_rss"><a class="lien_rss" href="'. $GLOBALS['_BAZAR_']['url']->getURL() .'" alt="lire la fiche">'. $ligne['bf_titre'].'</a></li>';
+ }
+ $res .= '</ul>';
+ }
+ }
+ }
+
+
+
+ //affichage des resultats de la recherche si le formulaire a ete envoye
+ $requeteSQL='';
+ if (isset($_REQUEST['recherche_effectuee'])) {
+ //preparation de la requete pour trouver les mots cles
+ if (($_REQUEST['recherche_mots_cles']!='')and($_REQUEST['recherche_mots_cles']!=BAZ_MOT_CLE)) {
+ //decoupage des mots cles
+ $recherche = split(' ', $_REQUEST['recherche_mots_cles']) ;
+ $nbmots=count($recherche);
+ $requeteSQL='';
+ for ($i=0; $i<$nbmots; $i++) {
+ if ($i>0) $requeteSQL.=' OR ';
+ $requeteSQL.='bf_titre LIKE "%'.$recherche[$i].'%" OR bf_description LIKE "%'.$recherche[$i].'%" ';
+ }
+ }
+ if (!isset($_REQUEST['nature'])) {
+ if (!isset ($GLOBALS['_BAZAR_']['id_nature'])) $typedefiches = $tableau_typeannonces;
+ else $typedefiches = $GLOBALS['_BAZAR_']['id_nature'] ;
+ } else {
+ $typedefiches = $_REQUEST['nature'] ;
+ if ($typedefiches == 'toutes') $typedefiches = $tableau_typeannonces ;
+ }
+ if ($typeannonce!='toutes') $typedefiches=$typeannonce;
+ if (isset($_REQUEST['valides'])) {$valides=$_REQUEST['valides'];}
+ else {$valides=1;}
+ //generation de la liste de flux a afficher
+ if (!isset($_REQUEST['personnes'])) $_REQUEST['personnes']='tous';
+ $res .= baz_liste_pagine_HTML($typedefiches, '', $_REQUEST['personnes'], $valides, $requeteSQL, $requeteFrom, $requeteWhere);
+ }
+
+ // Nettoyage de l'url
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('annonce');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('categorie_nature');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('recherche_avancee');
+
+ return $res;
+}
+
+/**
+ * Cette fonction renvoie du HTML
+ */
+function baz_liste_pagine_HTML($typeannonce, $nbitem, $emetteur, $valide, $requeteSQL = '', $requeteFrom = '', $requeteWhere = '') {
+ // generation de la requete MySQL personnalisee
+ $req_where=0;
+ $requete = 'SELECT * '.
+ 'FROM bazar_fiche, bazar_nature '.$requeteFrom.' WHERE '.$requeteWhere;
+ if ($valide!=2) {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $req_where=1;
+ $requete .= 'bf_statut_fiche='.$valide;
+ } else {
+ $requete .= '1 ' ;
+ }
+
+ $utilisateur = new Administrateur_bazar ($GLOBALS['AUTH']) ;
+ if ($valide!=0) {
+ if ($utilisateur->isSuperAdmin()) {
+ $req_where=1;
+ } else {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $requete .= '(bf_date_debut_validite_fiche<=NOW() or bf_date_debut_validite_fiche="0000-00-00")'.
+ ' AND (bf_date_fin_validite_fiche>=NOW() or bf_date_fin_validite_fiche="0000-00-00") AND bn_id_nature=bf_ce_nature';
+ $req_where=1;
+ }
+ }
+ if ($emetteur!='' && $emetteur!='tous') {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $requete .= 'bf_ce_utilisateur='.$emetteur;
+ $req_where=1;
+ }
+ if ($requeteSQL!='') {
+ if ($req_where==1) {$requete .= ' AND ';}
+ $requete .= '('.$requeteSQL.')';
+ $req_where=1;
+ }
+ $requete .= ' ORDER BY bf_date_debut_validite_fiche DESC, bf_date_fin_validite_fiche DESC, bf_date_maj_fiche DESC';
+ if ($nbitem!='') {$requete .= ' LIMIT 0,'.$nbitem;}
+ $resultat = $GLOBALS['_BAZAR_']['db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ return $resultat->getMessage().'<br /><br />'.$resultat->getDebugInfo() ;
+ }
+ $res = '<br /><h4>'.BAZ_IL_Y_A.($resultat->numRows()).' '.BAZ_FICHES_CORRESPONDANTES.'</h4><br />'."\n";
+ //$res .= 'requete: '. $requete. '<br />';
+
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE);
+
+ $donnees = array();
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $ligne['bf_id_fiche']) ;
+ array_push ($donnees, $ligne);
+ }
+ // Mise en place du Pager
+ include_once PAP_CHEMIN_API_PEAR.'Pager/Pager.php';
+ $params = array(
+ 'mode' => BAZ_MODE_DIVISION,
+ 'perPage' => BAZ_NOMBRE_RES_PAR_PAGE,
+ 'delta' => BAZ_DELTA,
+ 'httpMethod' => 'GET',
+ 'extraVars' => array_merge($_POST, $_GET),
+ 'altNext' => BAZ_SUIVANT,
+ 'altPrev' => BAZ_PRECEDENT,
+ 'nextImg' => BAZ_SUIVANT,
+ 'prevImg' => BAZ_PRECEDENT,
+ 'itemData' => $donnees
+ );
+ $pager = & Pager::factory($params);
+ $data = $pager->getPageData();
+ $links = $pager->getLinks();
+
+ if (BAZ_UTILISE_TEMPLATE) {
+ //Appel du template n 2
+ include_once BAZ_CHEMIN_APPLI.'bibliotheque/bazarTemplate.class.php' ;
+ $template = new bazarTemplate ($GLOBALS['_BAZAR_']['db']) ;
+ $chaine = $template->getTemplate(2, $GLOBALS['_BAZAR_']['langue'], $GLOBALS['_BAZAR_']['categorie_nature']);
+ if (bazarTemplate::isError ($chaine)) return $chaine->getMessage() ;
+ ob_start();
+ eval ($chaine) ;
+ $res .= ob_get_contents();
+ ob_end_clean() ;
+ } else {
+ $res .= '<ul>' ;
+ $res .= '<div class="bazar_numero">'.$pager->links.'</div>'."\n";
+ foreach ($data as $valeur) {
+ $res .='<li class="BAZ_'.$valeur['bn_label_class'].'">'."\n";
+ $GLOBALS['_BAZAR_']['url']->addQueryString('id_fiche', $valeur['bf_id_fiche']) ;
+ if ($utilisateur->isSuperAdmin() || $GLOBALS['id_user']==$valeur['bf_ce_utilisateur']) {
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_MODIFIER);
+ $GLOBALS['_BAZAR_']['url']->addQueryString('typeannonce', $valeur['bf_ce_nature']);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('personnes');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('recherche_effectuee');
+ $res .= '<a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">('.BAZ_MODIFIER.')</a>&nbsp;'."\n";
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_ACTION_SUPPRESSION);
+ $res .='<a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'" onclick="javascript:return confirm(\''.BAZ_SUPPRIMER.'\');">('.BAZ_SUPPRIMER.')</a>&nbsp;'."\n";
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ }
+ $GLOBALS['_BAZAR_']['url']->addQueryString(BAZ_VARIABLE_ACTION, BAZ_VOIR_FICHE) ;
+ $res .= '<a href="'.$GLOBALS['_BAZAR_']['url']->getURL().'">'.$valeur['bf_titre'].'</a>'."\n";
+ $res .='</li>'."\n";
+ }
+ $res .= '</ul>'."\n".'<div class="bazar_numero">'.$pager->links.'</div>'."\n";
+ }
+
+
+ // Nettoyage de l'url
+ $GLOBALS['_BAZAR_']['url']->removeQueryString(BAZ_VARIABLE_ACTION);
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('id_fiche');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('typeannonce');
+ $GLOBALS['_BAZAR_']['url']->removeQueryString('recherche_avancee');
+
+ return $res ;
+}
+
+function encoder_en_utf8($txt) {
+ // Nous remplaçons l'apostrophe de type RIGHT SINGLE QUOTATION MARK et les & isolées qui n'auraient pas été
+ // remplacées par une entitée HTML.
+ $cp1252_map = array("\xc2\x92" => "\xe2\x80\x99" /* RIGHT SINGLE QUOTATION MARK */);
+ return strtr(preg_replace('/ \x{0026} /u', ' &#38; ', mb_convert_encoding($txt, 'UTF-8','HTML-ENTITIES')), $cp1252_map);
+}
+
+/* +--Fin du code ----------------------------------------------------------------------------------------+
+*
+* $Log: bazar.fonct.rss.php,v $
+* Revision 1.99.2.10 2008-02-04 13:03:09 alexandre_tb
+* ajout d un class css dans les h2
+*
+* Revision 1.99.2.9 2008-02-01 16:24:10 florian
+* ajout champs_mail, décommenter les traductions des javascripts
+*
+* Revision 1.99.2.8 2008-01-29 09:35:37 alexandre_tb
+* remplacement des variables action par une constante
+* Utilisation d un redirection pour eviter que les formulaires soient valides 2 fois
+* simplification de la suppression d un lien associe a une liste
+*
+* Revision 1.99.2.7 2008-01-11 14:09:17 alexandre_tb
+* Remplacement de la variable action ecrite en dur par la constante BAZ_VARIABLE_ACTION
+*
+* Revision 1.99.2.6 2007-12-14 15:55:38 alexandre_tb
+* les commentaires peuvent maintenant apparaitre dans le moteur de recherche et dans les fiches, il faut mettre a 1 respectivement le champs recherche et obligatoire
+*
+* Revision 1.99.2.5 2007-12-10 12:57:34 jp_milcent
+* Correction du problèmes des & non remplacées par des &amp;
+*
+* Revision 1.99.2.4 2007-12-04 08:58:26 alexandre_tb
+* modification de styles dans les formulaires
+*
+* Revision 1.99.2.3 2007-12-03 15:16:21 jp_milcent
+* Correction problème de la div mystère!
+*
+* Revision 1.99.2.2 2007-11-30 15:02:50 alexandre_tb
+* simplification du code et correction du bug (les fiches de la carto n affichent pas la bonne nature
+*
+* Revision 1.99.2.1 2007-11-30 14:14:36 jp_milcent
+* Ajout d'un décodage des apostrophes de type RIGHT SINGLE QUOTATION MARK.
+*
+* Revision 1.99 2007-11-05 10:17:19 alexandre_tb
+* correction bug: retrait inorportun de la variable menu dans la globale URL
+*
+* Revision 1.98 2007-10-24 13:27:45 alexandre_tb
+* bug d'affichage multiple lorsqu'il y a +sieurs langues
+*
+* Revision 1.97 2007-10-24 08:56:27 alexandre_tb
+* bug d'affichage multiple lorsqu'il y a +sieurs langues
+*
+* Revision 1.96 2007-10-22 10:09:21 florian
+* correction template
+*
+* Revision 1.95 2007-10-22 09:22:02 alexandre_tb
+* prise en compte de la langue dans les requetes sur bazar_nature
+*
+* Revision 1.94 2007-10-10 13:26:00 alexandre_tb
+* utilisation de la classe Administrateur_bazar a la place de niveau_droit
+*
+* Revision 1.93 2007-10-01 11:59:51 alexandre_tb
+* cosmetique d affichage de la date de l evenement
+*
+* Revision 1.92 2007-09-28 15:02:43 jp_milcent
+* Suppression d'une div fermante jamais ouverte!
+*
+* Revision 1.91 2007-09-28 14:43:29 jp_milcent
+* Correction bogue sur la gestion du mail des rédacteurs.
+*
+* Revision 1.90 2007-09-28 13:39:15 jp_milcent
+* Ajout d'une constante permettant de configurer l'affichage ou pas du courriel du rédacteur d'une fiche.
+*
+* Revision 1.89 2007-09-18 07:38:43 alexandre_tb
+* ajout de la constante BAZ_AFFICHER_FILTRE_MOTEUR pour enlever le choix du type de fiche dans le moteur de recherche.
+*
+* Revision 1.88 2007-08-27 12:32:14 alexandre_tb
+* suppression de un notice
+*
+* Revision 1.87 2007-07-05 08:27:35 alexandre_tb
+* dans le flux ajout utf8_encode pour la description et le titre des flux
+*
+* indentation du code, et correction bug lorsque plusieurs catégories nature étaient demandé lors de consultation de fiche.
+*
+* Revision 1.86 2007-07-04 10:02:42 alexandre_tb
+* deplacement d une balise <ul> dans la liste des resultats pour conformite xhtml
+*
+* Revision 1.85 2007-06-25 12:15:06 alexandre_tb
+* merge from narmer
+*
+* Revision 1.84 2007-06-25 09:56:55 alexandre_tb
+* correction de bug
+*
+* Revision 1.83 2007-06-04 15:26:02 alexandre_tb
+* remplacement d un die en return
+*
+* Revision 1.82 2007/04/20 12:47:42 florian
+* correction bugs suite au merge
+*
+* Revision 1.81 2007/04/20 09:59:41 florian
+* et un echo en moins!
+*
+* Revision 1.80 2007/04/20 09:57:21 florian
+* correction bugs suite au merge
+*
+* Revision 1.79 2007/04/19 14:57:41 alexandre_tb
+* merge
+*
+* Revision 1.77 2007/04/04 15:15:22 neiluj
+* débug pour nom wiki
+*
+* Revision 1.76 2007/04/04 15:09:59 florian
+* modif class fichiers
+*
+* Revision 1.75 2007/04/04 08:51:01 florian
+* gestion des classes spécifiques pour habiller par CSS les fiches bazar
+*
+* Revision 1.74 2007/03/28 15:54:32 florian
+* correction de bugs
+*
+* Revision 1.73 2007/03/28 10:01:47 florian
+* ajout de la constante BAZ_UTILISE_TEMPLATE, pour utiliser ou non les templates pour l'affichage du moteur de recherche
+*
+* Revision 1.72 2007/03/28 08:51:22 neiluj
+* passage des flux RSS en UTF-8
+* ajout de l'indentation du code
+* Vérification validation w3c = OK
+*
+* Revision 1.71 2007/03/19 15:17:37 alexandre_tb
+* correction de la requete de recherche
+*
+* Revision 1.70 2007/03/08 15:12:13 jp_milcent
+* Fusion avec la livraison Menes : 08 mars 2007
+*
+* Revision 1.60.2.11 2007/03/07 17:20:19 jp_milcent
+* Ajout du nettoyage syst�matique des URLs.
+*
+* Revision 1.60.2.10 2007/03/06 09:41:15 alexandre_tb
+* backport de corrections de bugs de la branche principale
+*
+* Revision 1.69 2007/03/06 09:39:00 alexandre_tb
+* correction de bug sur les jointures et sur les flux rss
+*
+* Revision 1.68 2007/03/05 10:27:06 alexandre_tb
+* ajout d identifiant dans les span qui affiche le detail d une fiche.
+* ajout d un modele pour les fiches -> du code a ete deplace dans
+* bazar_template
+*
+* Revision 1.67 2007/02/28 10:18:56 alexandre_tb
+* backport de bug depuis la 1.60 de menes
+*
+* Revision 1.60.2.9 2007/02/27 15:32:40 alexandre_tb
+* utilisation de la fonction xmlEntities pour transformer les &amp; en &#...;
+* fixe les plantages des flux rss lorsque des guillemets ou des esperluettes �taient pr�sents
+*
+* Revision 1.60.2.8 2007/02/27 15:11:00 alexandre_tb
+* correction d une jointure dans la requete pour les flux rss
+* utilisation de la librairie XML_Util de pear pour generer le flux RSS -> plus clair
+*
+* Revision 1.60.2.7 2007/02/15 17:39:00 jp_milcent
+* Remise dans le code d'un bogue...
+* A corriger!
+*
+* Revision 1.60.2.6 2007/02/15 13:42:16 jp_milcent
+* Utilisation de IN � la place du = dans les requ�tes traitant les cat�gories de fiches.
+* Permet d'utiliser la syntaxe 1,2,3 dans la configuration de categorie_nature.
+*
+* Revision 1.64 2007/02/02 14:00:41 alexandre_tb
+* mise en place d'un template pour l'affichage du moteur de recherche
+*
+* Revision 1.60.2.5 2007/02/02 13:46:54 alexandre_tb
+* correction bug sur une date
+*
+* Revision 1.60.2.4 2007/01/30 15:45:01 alexandre_tb
+* affichage de la date de cr�ation e la fiche lorsque la date de d�but de validit� n'est plus bonne
+*
+* Revision 1.60.2.3 2007/01/29 10:53:46 alexandre_tb
+* Mise en place de la constante BAZ_DERNIERES_FICHES pour remplacer le label en francais dans baz_liste
+*
+* Revision 1.63 2007/01/18 14:37:34 alexandre_tb
+* backport
+* les dates ne s'affichent pas si elles sont vides.
+* les champs dates propose 4 ann�es avant l'ann�e actuelle
+*
+* Revision 1.60.2.2 2007/01/17 16:01:27 alexandre_tb
+* les dates ne s'affichent pas si elles sont vides.
+* les champs dates propose 4 ann�es avant l'ann�e actuelle
+*
+* Revision 1.60.2.1 2007/01/05 14:41:49 alexandre_tb
+* backport ordre d affichage des dernieres news et suppression de la taille des images uploadees
+*
+* Revision 1.60 2006/10/05 08:53:50 florian
+* amelioration moteur de recherche, correction de bugs
+*
+* Revision 1.59 2006/09/21 14:19:39 florian
+* amélioration des fonctions liés au wikini
+*
+* Revision 1.58 2006/09/15 12:31:40 alexandre_tb
+* correction du nom du flux RSS.
+*
+* Revision 1.57 2006/07/25 13:22:27 alexandre_tb
+* r�organisation du code, sans grand changement
+*
+* Revision 1.56 2006/07/18 14:13:35 alexandre_tb
+* Ajout d identifiant HTML
+*
+* Revision 1.55 2006/07/04 14:29:18 alexandre_tb
+* Ajout du bouton supprimer pour les administrateurs
+*
+* Revision 1.54 2006/07/03 09:51:21 alexandre_tb
+* correction du bug recherche sur fiches valid�s et invalid�s.
+*
+* Revision 1.53 2006/06/29 10:29:51 florian
+* correction bug moteur de recherche
+*
+* Revision 1.52 2006/06/02 09:29:07 florian
+* debut d'integration de wikini
+*
+* Revision 1.51 2006/05/23 15:41:27 alexandre_tb
+* ajout de la num�rotation des pages en haut et en bas ds r�sultats et ajout d'une div class=bazar_numero pour les entourer
+*
+* Revision 1.50 2006/05/22 09:55:12 alexandre_tb
+* ajout de la variable recherche_avancee dans l'action du formulaire
+*
+* Revision 1.49 2006/05/19 13:54:11 florian
+* stabilisation du moteur de recherche, corrections bugs, lien recherche avancee
+*
+* Revision 1.48 2006/05/17 09:50:13 alexandre_tb
+* Ajout du moteur de recherche �volu� et du d�coupage par page
+*
+* +-- Fin du code ----------------------------------------------------------------------------------------+
+*/
+?>
\ No newline at end of file
Index: 2014-08-05_centre/client/bazar/langues/baz_langue_fr.inc.php
===================================================================
--- 2014-08-05_centre/client/bazar/langues/baz_langue_fr.inc.php (revision 0)
+++ 2014-08-05_centre/client/bazar/langues/baz_langue_fr.inc.php (revision 120)
@@ -0,0 +1,677 @@
+<?php
+/*vim: set expandtab tabstop=4 shiftwidth=4: */
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+// CVS : $Id: baz_langue_fr.inc.php,v 1.61.2.4 2008-02-08 08:19:32 alexandre_tb Exp $
+/**
+* Fichier de traduction en fran�ais de l'application Bazar
+*
+*@package bazar
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+*@author Florian Schmitt <florian@ecole-et-nature.org>
+//Autres auteurs :
+*@author Aucun
+*@copyright Tela-Botanica 2000-2004
+*@version $Revision: 1.61.2.4 $ $Date: 2008-02-08 08:19:32 $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+if (file_exists(BAZ_CHEMIN_APPLI.'langues/baz_langue_fr.local.php')) {
+ include_once BAZ_CHEMIN_APPLI.'langues/baz_langue_fr.local.php' ;
+}
+
+define ('BAZ_TITREAPPLI','Gestionnaire de fiches (Bazar) ');
+define ('BAZ_DESCRIPTIONAPPLI','D&eacute;couvrez Bazar, une application de gestion de fiches class&eacute;es, consultables en ligne ou par flux RSS, grandement personnalisable.');
+define ('BAZ_MOTS_CLES','Bazar, fiches, flux, rss, nouveaut&eacute;, information, gestionnaire, xml, syndication, info, application, php, dynamique, mise, aacute; , jour ');
+if (!defined ('BAZ_TOUTES_LES_ANNONCES')) define ('BAZ_TOUTES_LES_ANNONCES', 'Consulter les fiches');
+define ('BAZ_CONSULTER_FICHES_VALIDEES', 'Consulter les fiches valid&eacute;es');
+define ('BAZ_TOUTES_LES_ANNONCES_DE_TYPE', 'Consulter toutes les fiches de type:');
+define ('BAZ_TOUS_TYPES_FICHES', 'Tous types de fiches');
+if (!defined ('BAZ_TOUS_LES_EMETTEURS')) define ('BAZ_TOUS_LES_EMETTEURS', 'Tous les emetteurs');
+define ('BAZ_ENTRER_VOS_CRITERES_DE_RECHERCHE','Pr&eacute;cisez vos critères de recherche et appuyez sur le bouton "Rechercher" pour consulter les fiches.');
+define ('BAZ_MODIFIE_RSS','Modifi&eacute;: ' );
+define ('BAZ_NOM', 'Nom') ;
+define ('BAZ_PRENOM', 'Pr&eacute;nom') ;
+define ('BAZ_TOUS', 'Tous');
+define ('BAZ_TOUTES', 'Toutes');
+define ('BAZ_MOT_CLE', 'Mots cl&eacute;s (facultatif)');
+if (!defined ('BAZ_EMETTEUR')) define ('BAZ_EMETTEUR', '&Eacute;metteur');
+define ('BAZ_NATURE', 'Nature de la fiche' );
+define ('BAZ_STATUT', 'Statut' );
+define ('BAZ_DATE_CREATION', 'Date de cr&eacute;ation' );
+define ('BAZ_DATE_MAJ', 'Date de mise &agrave; jour' );
+define ('BAZ_URL_IMAGE', 'Image' );
+define ('BAZ_LANGUES_PARLES', 'Langues parl&eacute;s :') ;
+define ('BAZ_EMAIL', 'E-mail :') ;
+define ('BAZ_MOT_DE_PASSE', 'Mot de passe') ;
+define ('BAZ_TITREANNONCE', 'Titre de la fiche') ;
+if (!defined ('BAZ_TYPEANNONCE')) define ('BAZ_TYPEANNONCE', 'Type de fiche') ;
+define ('BAZ_ANNONCEUR', 'Annonceur') ;
+define ('BAZ_REPETE_MOT_DE_PASSE', 'R&eacute;p&eacute;ter le mot de passe :') ;
+define ('BAZ_OUI', 'Oui') ;
+define ('BAZ_NON', 'Non') ;
+define ('BAZ_ANNULER', 'Annuler') ;
+define ('BAZ_RETOUR', 'Retour') ;
+define ('BAZ_RETABLIR', 'R&eacute;tablir') ;
+define ('BAZ_VALIDER', 'Valider') ;
+define ('BAZ_PUBLIER', 'Valider la publication') ;
+define ('BAZ_ETATPUBLICATION', 'Etat de publication') ;
+define ('BAZ_ENCOURSDEVALIDATION', 'En attente de validation');
+define ('BAZ_REJETEE', 'Rejet&eacute;e');
+define ('BAZ_PUBLIEE', 'Publi&eacute;e') ;
+define ('BAZ_PAS_DE_FICHE', '<br />Vous n\'avez pas encore d&eacute;pos&eacute; de fiches.') ;
+define ('BAZ_PAS_DE_FICHE_A_VALIDER', 'Pas de fiche &agrave; valider pour l\'instant.');
+define ('BAZ_VOS_ANNONCES', 'Vos fiches d&eacute;pos&eacute;es') ;
+define ('BAZ_ANNONCES_A_ADMINISTRER', 'Les fiches &agrave; valider') ;
+define ('BAZ_MOTS_DE_PASSE_DIFFERENTS', 'Les mots de passe sont diff&eacute;rents !') ;
+define ('BAZ_EMAIL_REQUIS', 'Vous devez saisir un email.') ;
+define ('BAZ_MOT_DE_PASSE_REQUIS', 'Vous devez saisir un mot de passe.') ;
+define ('BAZ_MAIL_INCORRECT', 'L\'email doit avoir une forme correcte, utilisateur@domaine.ext') ;
+define ('BAZ_MAIL_DOUBLE', 'Cet email est d&eacute;j&agrave utilis&eacute; par quelqu\'un d\'autre') ;
+define ('BAZ_NOTE_REQUIS', 'Indique les champs requis') ;
+define ('BAZ_ERREUR_SAISIE', 'Erreur de saisie ') ;
+define ('BAZ_VEUILLEZ_CORRIGER', 'Veuillez corriger') ;
+define ('BAZ_MODIFIER', 'Modifier') ;
+define ('BAZ_MODIFIER_LA_FICHE', 'Modifier la fiche') ;
+define ('BAZ_SUPPRIMER', 'Supprimer') ;
+define ('BAZ_SELECTION', '--S&eacute;lectionnez ici--');
+define ('BAZ_DROITS_PAR_TYPE', 'Droits par type de fiches:');
+define ('BAZ_TITRE_SAISIE_ANNONCE', 'Entrer une fiche de type: ');
+define ('BAZ_ACCUEIL','Accueil');
+define ('BAZ_SORTIRDELAPPLI','Quittez l\'application Bazar');
+define ('BAZ_DEPOSE_UNE_NOUVELLE_ANNONCE', 'Saisir une fiche') ;
+define ('BAZ_CHOIX_TYPEANNONCE', 'Choisissez le type de fiche que vous souhaitez d&eacute;poser:') ;
+if (!defined('BAZ_GESTION_DES_DROITS')) define ('BAZ_GESTION_DES_DROITS', 'Gestion des droits');
+define ('BAZ_DESCRIPTION_GESTION_DES_DROITS', 'Veuillez choisir un utilisateur dans la liste d&eacute;roulante ci-dessous pour administrer ses droits.');
+define ('BAZ_LABEL_CHOIX_PERSONNE', 'Choix de la personne dans l\'annuaire: ');
+define ('BAZ_CONFIRMATION_SUPPRESSION', 'Etes-vous s&ucirc;r de vouloir supprimer cette fiche ?') ;
+define ('BAZ_NON_VALIDE', 'Non valide') ;
+define ('BAZ_VALIDE', 'Valide') ;
+define ('BAZ_VALIDER_LA_FICHE', 'Valider la fiche') ;
+define ('BAZ_PRECEDENT', 'Pr&eacute;c&eacute;dent') ;
+define ('BAZ_SUIVANT', 'Suivant') ;
+define ('BAZ_PAS_DE_FICHE_CRIT', 'Pas de fiche correspondant &agrave; vos crit&egrave;res.') ;
+define ('BAZ_TEXTE_IMG_ALTERNATIF', 'Image de la fiche');
+define ('BAZ_NUM_FICHE', 'Num&eacute;ro de fiche');
+define ('BAZ_ADMIN_ANNONCES', 'Modifier les types de fiches');
+define ('BAZ_RECHERCHER_DES_ANNONCES', 'Rechercher des fiches');
+define ('BAZ_RECHERCHE_AVANCEE', 'Recherche avanc&eacute;e >>');
+define ('BAZ_RECHERCHE_DE_BASE','<< Recherche simple');
+define ('BAZ_DESCRIPTION_RECHERCHE', 'En pr&eacute;cisant, ci dessus, le type de fiche cherch&eacute;, vous pourrez obtenir des fonctions de recherche avanc&eacute;.');
+define ('BAZ_PAS_D_ANNONCES', 'Aucune actualit&eacute; pour l\'instant');
+if (!defined ('BAZ_S_INSCRIRE_AUX_ANNONCES')) define ('BAZ_S_INSCRIRE_AUX_ANNONCES', 'S\'abonner &agrave; un type de fiche');
+define ('BAZ_ABONNE', 'Abonn&eacute;');
+define ('BAZ_PAS_ABONNE', 'Pas abonn&eacute;');
+define ('BAZ_S_ABONNER', 'S\'abonner');
+if (!defined ('BAZ_LAIUS_S_ABONNER')) define ('BAZ_LAIUS_S_ABONNER', 'Il y a deux mani&egrave;res de s\'abonner:<br />- soit en s\'abonnant pour recevoir les fiches par mails<br />- soit par flux RSS');
+define ('BAZ_SE_DESABONNER', 'Se d&eacute;sabonner');
+define ('BAZ_RSS', 'Flux RSS');
+define ('BAZ_DERNIERE_ACTU', 'Derni&egrave;res actualit&eacute;s');
+if (!defined ('BAZ_DERNIERES_FICHES')) define ('BAZ_DERNIERES_FICHES', 'Les derni&egrave;res fiches enregistr&eacute;es');
+define ('BAZ_A_MODERER',' &agrave; mod&eacute;rer');
+define ('BAZ_CONSULTER','Consulter');
+define ('BAZ_SAISIR','Saisir');
+define ('BAZ_ADMINISTRER','Administrer');
+define ('BAZ_FICHE_ECRITE','Fiche &eacute;crite par : ');
+define ('BAZ_NB_VUS','Cette fiche a &eacute;t&eacute; consult&eacute;e ');
+define ('BAZ_FOIS', ' fois depuis sa cr&eacute;ation.');
+define ('BAZ_LES_COMMENTAIRES', 'Les commentaires sur cette fiche');
+define ('BAZ_PAS_DE_COMMENTAIRES', 'Pas de commentaires post&eacute;s pour l\'instant, identifiez vous pour poster le premier !');
+define ('BAZ_IL_Y_A', 'Il y a ');
+define ('BAZ_COMMENTAIRE', 'commentaire : ');
+define ('BAZ_COMMENTAIRES', 'commentaires : ');
+define ('BAZ_COMMENTAIRE_AUTH', 'Identifiez vous pour ajouter le votre !');
+define ('BAZ_ENTREZ_VOTRE_NOM', 'Entrez votre nom : ');
+define ('BAZ_ENTREZ_VOTRE_COMMENTAIRE', 'Entrez votre commentaire : ');
+define ('BAZ_ENVOYER','Envoyer');
+define ('BAZ_NOM_REQUIS', 'Le champs nom ne doit pas rester vide');
+define ('BAZ_COMMENTAIRE_REQUIS', 'Le champs commentaire ne doit pas rester vide');
+define ('BAZ_LES_STRUCTURES_POSSEDANT_UNE_RESSOURCE', 'Les structures possédant cette ressource');
+define ('BAZ_FICHES_PAS_VALIDEES','Seulement les fiches pas valid&eacute;es');
+define ('BAZ_FICHES_VALIDEES','Seulement les fiches valid&eacute;es');
+define ('BAZ_LES_DEUX','Fiches valid&eacute;es et non valid&eacute;es');
+define ('BAZ_VOIR_VOS_ANNONCES', 'Mes fiches');
+define ('BAZ_RECHERCHER','Rechercher');
+define ('BAZ_SAISIR_UNE_NOUVELLE_FICHE','Saisir une nouvelle fiche');
+define ('BAZ_POUR_CHANGER_IMAGE','Pour changer d\'image, il suffit d\'en saisir une autre ci dessous.');
+define ('BAZ_CONFIRMATION_SUPPRESSION_LIEN', 'Etes-vous s&ucirc;r de vouloir supprimer ce lien ?') ;
+define ('BAZ_CONFIRMATION_SUPPRESSION_FICHIER', 'Etes-vous s&ucirc;r de vouloir supprimer ce fichier ?') ;
+define ('BAZ_CONFIRMATION_SUPPRESSION_IMAGE', 'Etes-vous s&ucirc;r de vouloir supprimer cette image ?') ;
+define ('BAZ_VALIDER_PUBLICATION', 'Valider la publication');
+define ('BAZ_ENTRER_PROJET', 'ENTRER SUR L\'ESPACE DU PROJET');
+define ('BAZ_GOOGLE_MSG', '<br />Si l\'&eacute;v&egrave;nement est bien situ&eacute; vous pouvez valider la fiche<br />');
+define ('BAZ_SUPPRIMER_LA_FICHE', 'Supprimer la fiche');
+define ('BAZ_INVALIDER_LA_FICHE', 'Invalider la fiche');
+define ('BAZ_TOUTES_LES_FICHES', 'Toutes les fiches');
+
+define ('BAZ_LATITUDE', 'Latitude');
+define ('BAZ_LONGITUDE', 'Longitude');
+define ('BAZ_VERIFIER_MON_ADRESSE', 'V&eacute;rifier mon adresse avec la carte');
+
+
+//================Textes pour les libellés======================================
+define ('BAZ_ANNONCES','annonces');
+define ('BAZ_PUBLICATIONS','publications');
+define ('BAZ_EVENEMENTS','&eacute;v&egrave;nements');
+define ('BAZ_FORMATIONS','formations');
+define ('BAZ_SEJOURS','s&eacute;jours');
+define ('BAZ_EMPLOIS','emplois');
+define ('BAZ_RESS_HUMAINES','Ressources humaines');
+define ('BAZ_RESS_DOCS','Ressources documentaires');
+define ('BAZ_RESS_PHYSIQUES','Ressources physiques');
+define ('BAZ_RESS_FINANCIERES','Ressources financi&egrave;res');
+define ('BAZ_JEUX','jeux');
+define ('BAZ_PETITES_ANNONCES','petites annonces');
+define ('BAZ_BREVES','br&egrave;ves');
+define('BAZ_COMPTES_RENDUS','comptes rendus');
+define ('BAZ_REALISATION','r&eacute;alisation');
+define ('BAZ_PERSONNES_EXPERTES','personnes expertes');
+define ('BAZ_THEMATIQUE','th&eacute;matique');
+define ('BAZ_THEMATIQUE_REQUIS','la thematique est requise');
+define ('BAZ_SITE_INTERNET','site internet');
+define ('BAZ_ADRESSE_CONTACT','Adresse du contact');
+define ('BAZ_MAIL_CONTACT','Mail du contact');
+define ('BAZ_MAIL_CONTACT_REQUIS','Le mail du contact est requis');
+
+//================Textes pour les formations====================================
+define ('BAZ_TITRE_FORMATION','Intitul&eacute; de la formation');
+define ('BAZ_TITRE_FORMATION_REQUIS','L\'intitul&eacute; de la formation est obligatoire, veuillez le saisir');
+define ('BAZ_SI_MODULE','Si plusieurs modules de formation');
+define ('BAZ_NUMERO_MODULE','Num&eacute;ro de module');
+define ('BAZ_NB_TOTAL_MODULE','Nombre total de modules');
+define ('BAZ_TYPE_FORMATION','Type de la formation');
+define ('BAZ_TYPE_FORMATION_REQUIS','Le type de la formation est obligatoire, veuillez le saisir');
+define ('BAZ_SI_DIPLOMANTE','Si la formation est diplomante');
+define ('BAZ_DIPLOME_PREPARE', 'Dipl&ograve;me pr&eacute;par&eacute;');
+define ('BAZ_NIVEAU', 'Niveau');
+define ('BAZ_SI_QUALIFIANTE', 'Si la formation est qualifiante');
+define ('BAZ_QUALIF_PREPAREE', 'Qualification pr&eacute;par&eacute;e');
+define ('BAZ_OBJECTIFS', 'Objectifs');
+define ('BAZ_OBJECTIFS_REQUIS', 'Entrer les objectifs est obligatoire, veuillez les saisir');
+define ('BAZ_CONTENU', 'Contenu');
+define ('BAZ_PUBLIC', 'Publics');
+define ('BAZ_PUBLIC_REQUIS', 'Publics');
+define ('BAZ_CONDITIONS_ACCES', 'Conditions d\'acc&egrave;s');
+define ('BAZ_DATE_DEBUT_FORMATION', 'Date de d&eacute;but de la formation');
+define ('BAZ_DATE_FIN_FORMATION', 'Date de fin de la formation');
+define ('BAZ_DATE_FIN_INSCRIPTION', 'Date limite d\'inscription');
+define ('BAZ_CP_LIEU_EVENEMENT', 'Code postal du lieu de l\'&eacute;v&eacute;nement');
+define ('BAZ_TARIF_INDIVIDUEL', 'Tarif individuel (en euros)');
+define ('BAZ_TARIF_ENTREPRISE', 'Tarif entreprise (en euros)');
+define ('BAZ_TARIF_OPCA', 'Tarif OPCA (en euros)');
+define ('BAZ_NUM_AGREMENT', 'Num&eacute;ro d\'agr&eacute;ement de la structure');
+define ('BAZ_NUM_AGREMENT_REQUIS', 'Le num&eacute;ro d\'agr&eacute;ement de la structure est obligatoire, veuillez le saisir');
+define ('BAZ_ANNONCE_REQUIS','Le corps de l\'annonce est requis');
+define ('BAZ_PRENOM_CONTACT', 'Pr&eacute;nom');
+define ('BAZ_PRENOM_CONTACT_REQUIS', 'Le pr&eacute;nom de la personne contact est obligatoire, veuillez le saisir');
+define ('BAZ_NOM_CONTACT', 'Nom');
+define ('BAZ_NOM_CONTACT_REQUIS', 'Le nom de la personne contact est obligatoire, veuillez le saisir');
+define ('BAZ_MAIL', 'Adresse &eacute;lectronique');
+define ('BAZ_TELEPHONE', 'T&eacute;l&eacute;phone');
+define ('BAZ_TELEPHONE_REQUIS', 'Le t&eacute;l&eacute;phone du contact est obligatoire, veuillez le saisir');
+define ('BAZ_INTERVENANTS', 'Les intervenants');
+define ('BAZ_INFOS_COMPLEMENTAIRE', 'Informations compl&eacute;mentaires');
+define ('BAZ_COORDONNEES_CONTACT', 'Coordonn&eacute;es de la personne contact<br />');
+define ('BAZ_DUREE_DE_PARUTION', '<strong>Dur&eacute;e de parution:</strong> la date de d&eacute;but de parution indique le moment ou la fiche devient visible sur le site, et la date de fin de parution, le moment o&ugrave; elle disparait.<br />');
+define ('BAZ_LIGNE_HORIZONTALE', '<hr />');
+define ('BAZ_CHAMPS_REQUIS', ': champs requis');
+define ('BAZ_PAR', 'par');
+define ('BAZ_CHAMPS_INDISPENSABLES_CLASSES', 'Champs indispensables pour les classes<br />');
+define ('BAZ_ECRIT_LE',', &eacute;crit le ');
+define ('BAZ_FICHES_CORRESPONDANTES', 'fiches correspondantes &agrave; votre recherche') ;
+define ('BAZ_FICHE_CORRESPONDANTE', 'fiche correspondante à votre recherche') ;
+
+//================Le formulaire ================================================
+define ('BAZ_AJOUTER_CHAMPS_DE_BASE', 'Ajouter les informations de base pour la fiche');
+define ('BAZ_PAYS', 'Pays');
+define ('BAZ_PAYS_REQUIS', 'Le champs pays est requis!');
+define ('BAZ_ORGANISME', 'Organisme');
+define ('BAZ_CONTACT', 'Contact');
+define ('BAZ_REGION', 'R&eacute;gion');
+define ('BAZ_REGION_REQUIS', 'Le champs r&eacute;gion est requis!');
+define ('BAZ_DEPARTEMENT', 'D&eacute;partement') ;
+define ('BAZ_DEPARTEMENT_REQUIS', 'Le champs d&eacute;partement est requis!');
+define ('BAZ_LICENCE', 'Type de licence') ;
+define ('BAZ_LICENCE_REQUIS', 'Le type de licence est requis!') ;
+define ('BAZ_TITRE', 'Titre') ;
+define ('BAZ_TITRE_REQUIS', 'Un titre de fiche est requis!') ;
+define ('BAZ_DESCRIPTION', 'Description') ;
+define ('BAZ_DESCRIPTION_REQUIS', 'Une description de la fiche est requise!!') ;
+define ('BAZ_DATEDEBVALID', 'D&eacute;but de parution' );
+define ('BAZ_DATEDEBVALID_REQUIS', 'La date de d&eacute;but de parution est requise!!') ;
+define ('BAZ_DATEFINVALID', 'Fin de parution' );
+define ('BAZ_DATEFINVALID_REQUIS', 'La date de fin de parution est requise!!') ;
+define ('BAZ_DU', 'du') ;
+define ('BAZ_AU', 'au') ;
+define ('BAZ_LE', 'Le') ;
+define ('BAZ_DATE_DEBUT_EVENEMENT', 'D&eacute;but de l\'&eacute;venement' );
+define ('BAZ_DATE_DEBUT_EVENEMENT_REQUIS', 'La date de d&eacute;but de l\'&eacute;venement est requise!!') ;
+define ('BAZ_DATE_FIN_EVENEMENT', 'Fin de l\'&eacute;venement' );
+define ('BAZ_DATE_FIN_EVENEMENT_REQUIS', 'La date de fin de l\'&eacute;venement est requise!!') ;
+define ('BAZ_LIEU_EVENEMENT', 'Lieu de l\'&eacute;venement' );
+define ('BAZ_LIEU_EVENEMENT_REQUIS', 'Le lieu de l\'&eacute;venement est requis!!') ;
+define ('BAZ_PAS_UNE_IMAGE', 'Ce fichier n\'est pas une image.' );
+define ('BAZ_AJOUTER_IMAGE', 'Pour l\'instant, pas d\'image associ&eacute;e &agrave; la fiche, vous pouvez en ajouter une ci-dessous.' );
+define ('BAZ_IMAGE', 'Image pour la fiche (facultatif)' );
+define ('BAZ_IMAGE_VALIDE_REQUIS', 'Le fichier image n\'est pas valide.') ;
+
+//================Textes pour les parutions=====================================
+define ('BAZ_CODE', 'Code ISBN ou ISSN (s\'il existe)' );
+define ('BAZ_NOM_AUTEUR', 'Auteur' );
+define ('BAZ_NOM_AUTEUR_REQUIS', 'L\'auteur est requis');
+define ('BAZ_EDITEUR', 'Editeur');
+define ('BAZ_TYPE_PARUTION', 'Type de parution');
+define ('BAZ_ANNONCE','Annonce');
+define ('BAZ_CAPACITE_ACCUEIL', 'Capacit&eacute; d\'accueil' );
+define ('BAZ_CAPACITE_ACCUEIL_REQUIS', 'La capacit&eacute; d\'accueil est requise!!') ;
+define ('BAZ_NB_ANIMATEURS', 'Nombre d\'animateurs' );
+define ('BAZ_NB_ANIMATEURS_REQUIS', 'Le nombre d\'animateurs est requis!!') ;
+define ('BAZ_TARIF', 'Tarif (en euros)' );
+define ('BAZ_TARIF_REQUIS', 'Le tarif est requis!!') ;
+define ('BAZ_LISTE_TRANCHES_AGES', 'Tranches d\'&agrave;ges' );
+define ('BAZ_LISTE_TRANCHES_AGES_REQUIS', 'Les tranches d\'&agrave;ges sont requises!!') ;
+define ('BAZ_LISTE_URL', 'Liens associ&eacute;s &agrave; l\'annonce: ');
+define ('BAZ_PAS_URL', 'Pour l\'instant, pas de lien associ&eacute; &agrave; la fiche, vous pouvez en ajouter ci-dessous.');
+define ('BAZ_AJOUTER_URL', 'Ajouter un lien (URL) &agrave la fiche');
+define ('BAZ_LIEN', 'Lien' );
+define ('BAZ_LIEN_INTERNET', 'Liens Internet' );
+define ('BAZ_URL_LIEN', 'Adresse du lien (URL)' );
+define ('BAZ_URL_LIEN_REQUIS', 'L\'adresse du lien (URL) est requise!!') ;
+define ('BAZ_URL_TEXTE', 'Texte du lien' );
+define ('BAZ_URL_TEXTE_REQUIS', 'Le texte du lien est requis!!') ;
+define ('BAZ_AJOUTER_FICHIER_JOINT','Ajouter un fichier joint &agrave la fiche');
+define ('BAZ_FICHIER_JOINT', 'Fichier joint' );
+define ('BAZ_LISTE_FICHIERS_JOINTS', 'Fichiers associ&eacute;s &agrave; la fiche ');
+define ('BAZ_PAS_DE_FICHIERS_JOINTS', 'Pour l\'instant, pas de fichier associ&eacute; &agrave; la fiche, vous pouvez en ajouter ci-dessous.');
+define ('BAZ_FICHIER','Fichier');
+define ('BAZ_FICHIER_JOINT_REQUIS', 'Le fichier joint est requis!!') ;
+define ('BAZ_FICHIER_DESCRIPTION', 'Description du fichier' );
+define ('BAZ_FICHIER_TEXTE_REQUIS', 'Le texte du fichier est requis!!') ;
+define ('BAZ_FICHIER_LABEL', 'Label du fichier') ;
+define ('BAZ_FICHIER_LABEL_REQUIS', 'Le label du fichier est requis!!') ;
+define ('BAZ_FICHIER_EXISTANT', 'Il existe d&eacute;j&agrave; un fichier du même nom sur le site.<br />Votre fiche a &eacute;t&eacute; associ&eacute;e avec le fichier existant d&eacute;j&agrave;.');
+define ('BAZ_ACCEPTE_CONDITIONS', 'J\'accepte les conditions de saisie de la fiche');
+define ('BAZ_ACCEPTE_CONDITIONS_REQUIS', 'Vous devez accepter les conditions de saisie de la fiche');
+
+//================Textes pour les emplois=======================================
+define ('BAZ_INTITULE_POSTE', 'Intitul&eacute; du poste');
+define ('BAZ_INTITULE_POSTE_REQUIS', 'L\'intitul&eacute; du poste est requis');
+define ('BAZ_DESCRIPTION_STRUCTURE', 'Description de la structure qui embauche');
+define ('BAZ_DESCRIPTION_STRUCTURE_REQUIS', 'La description de la structure qui embauche est requise');
+define ('BAZ_CP_LIEU_TRAVAIL', 'Code postal du lieu de travail');
+define ('BAZ_LIEU_TRAVAIL', 'Lieu de travail');
+define ('BAZ_MISSIONS', 'Missions du poste');
+define ('BAZ_PROFIL', 'Profil du poste');
+define ('BAZ_PROFIL_REQUIS', 'Le profil du poste est requis');
+define ('BAZ_NIVEAU_DIPLOME_DEMANDE', 'Niveau de diplome demand&eacute;');
+define ('BAZ_ELEGIBILITE', 'Elegibilit&eacute; (CES, Emploi jeune,...)');
+define ('BAZ_TYPE_CONTRAT', 'Type de contrat');
+define ('BAZ_TYPE_CONTRAT_REQUIS', 'Type de contrat requis');
+define ('BAZ_FORME_CANDIDATURE', 'Moyen de candidature (envois de CV par mail, lettre manucrite,...)');
+define ('BAZ_INDICE_SALAIRE', 'Indice salaire');
+define ('BAZ_SALAIRE_BRUT_MENSUEL', 'Salaire brut mensuel');
+define ('BAZ_SALAIRE_BRUT_MENSUEL_REQUIS', 'Le salaire brut mensuel est requis');
+define ('BAZ_ECHEANCE_CANDIDATURE', 'Date d\'&eacute;ch&eacute;ance de candidature');
+define ('BAZ_DATE_DEBUT_EMBAUCHE', 'Date de d&eacute;but d\'embauche');
+
+//================Textes pour les ressources=======================================
+define ('BAZ_THEME','Th&egrave;me');
+define ('BAZ_THEME_REQUIS','Le th&egrave;me est requis');
+define ('BAZ_TRANCHES_AGES','Tranches d\'&acirc;ge');
+define ('BAZ_TRANCHES_AGES_REQUIS','les tranches d\'&acirc; soTRUCTUREnt requises');
+define ('BAZ_PERIODE', 'P&eacute;riode');
+define ('BAZ_PERIODE_REQUIS', 'P&eacute;riode requise');
+define ('BAZ_NIVEAU_SCOLAIRE', 'Niveau scolaire');
+define ('BAZ_DATE_DEBUT_SEJOUR', 'Date de d&eacute;but du s&eacute;jour');
+define ('BAZ_DATE_DEBUT_SEJOUR_REQUIS', 'Date de d&eacute;but du s&eacute;jour requise');
+define ('BAZ_DATE_FIN_SEJOUR', 'Date de fin du s&eacute;jour');
+define ('BAZ_DATE_FIN_SEJOUR_REQUIS', 'Date de fin du s&eacute;jour requise');
+define ('BAZ_LIEU', 'Lieu');
+define ('BAZ_LIEU_REQUIS', 'Lieu requis');
+define ('BAZ_MILIEU_DOMINANT', 'Milieu dominant');
+define ('BAZ_HEBERGEMENT', 'H&eacute;bergement');
+define ('BAZ_HEBERGEMENT_REQUIS', 'H&eacute;bergement requis');
+define ('BAZ_NOMBRE_PLACES', 'Nombre de places');
+define ('BAZ_NOMBRE_PLACES_REQUIS', 'Nombre de places requis');
+define ('BAZ_NOMBRE_ANIMS', 'Nombre d\'animateurs');
+define ('BAZ_NOMBRE_ANIMS_REQUIS', 'Nombre d\'animateurs requis');
+define ('BAZ_QUALIF_ANIMS', 'Qualification des animateurs');
+define ('BAZ_QUALIF_ANIMS_REQUIS', 'Qualification des animateurs requise');
+define ('BAZ_AGREMENTS', 'Agr&eacute;ments');
+define ('BAZ_ACTIVITES_DOMINANTES', 'Activit&eacute;s dominantes (en 3 mots cl&eacute;s)');
+define ('BAZ_ACTIVITES_DOMINANTES_REQUIS', 'Activit&eacute;s dominantes requises');
+define ('BAZ_PRECISION_PRIX', 'Pr&eacute;cision sur le prix');
+define ('BAZ_PRECISION_PRIX_REQUIS', 'Pr&eacute;cision sur le prix requise');
+define ('BAZ_VOYAGE_COMPRIS', 'Voyage compris');
+define ('BAZ_VOYAGE_COMPRIS_REQUIS', 'Voyage compris requis');
+define ('BAZ_AIDES_POSSIBLES', 'Aides possibles');
+define ('BAZ_CHOISIR', 'Choisir...');
+define ('BAZ_CHOISIR_OBLIGATOIRE', 'Il faut choisir une option dans la liste ');
+define ('BAZ_INDIFFERENT','Indiff&eacute;rent');
+
+define ('BAZ_COORDONNEES','Coordonn&eacute;es');
+define ('BAZ_ANNEE_PARUTION','Ann&eacute;e de parution');
+define ('BAZ_LANGUE','Langue');
+define ('BAZ_THEMES','Thèmes');
+define ('BAZ_PAS_D_APPROPRIATION','Aucune structure ne s\'est appropri&eacute; cette ressource pour l\'instant.');
+define ('BAZ_STRUCTURE_POSSEDANT', 'structure poss&eacute;dant cette ressource.');
+define ('BAZ_STRUCTURES_POSSEDANT', 'structures poss&eacute;dant cette ressource.');
+define ('BAZ_SI_POSSEDE_RESSOURCE', 'Si vous poss&egrave;dez cette ressource dans votre structure:');
+define ('BAZ_POSSEDE_DEJA_RESSOURCE', 'Vous poss&egrave;dez cette ressource.');
+define ('BAZ_CLIQUER_POUR_VOUS_ENLEVER', 'cliquez ici pour vous enlever de la liste.');
+define ('BAZ_IL_FAUT_ETRE_STRUCTURE', 'Seules les structures identifi&eacute;es peuvent s\'approprier cette ressource.');
+define ('BAZ_IL_FAUT_ETRE_IDENTIFIE_STRUCTURE', 'En vous identifiant ou ou vous inscrivant en tant que structure, vous pouvez vous associer cette ressource.');
+define ('BAZ_CLIQUER_POUR_APPARAITRE', 'cliquez ici pour appaitre dans la liste.');
+define ('BAZ_NON_PRECISE','Non pr&eacute;cis&eacute;');
+/** Texte de présentation précendant le formulaire d'identification.*/
+define ('BAZ_IDENTIFIEZ_VOUS_PRESENTATION_XHTML',
+'<h2>S\'identifier et s\'inscrire</h2>
+<p>Avant de saisir une fiche, il est indispensable de <a href="/page:inscrire">s\'inscrire</a>.<br />
+L\'inscription est libre et gratuite !<br />
+Elle vous permet de :</p>
+<ul>
+ <li>saisir des fiches pour nous informer ;</li>
+ <li>saisir vos observations botaniques ;</li>
+ <li>consulter l\'annuaire des personnes inscrites et pouvoir ainsi échanger des informations ;</li>
+ <li>accéder à certaines informations diffusées sur le site ;</li>
+ <li>recevoir une lettre électronique d\'informations.</li>
+</ul>
+<p>Par la suite, il vous sera possible de modifier voir annuler votre inscription.<br />
+Seuls vos prénom, nom, ville, commune et pays apparaîtrons dans l\'annuaire, les autres informations restent confidentielles
+et servent à GENTIANA à vous contacter afin de valider les données botaniques ou les informations que vous donnez.</p>
+<p>Si vous avez perdu votre mot de passe, veuillez cliquez sur le lien suivant : <a href="http://www.gentiana.org/page:inscrire?action=mdp_oubli">perte de mot de passe</a></p>');
+define ('BAZ_IDENTIFIEZ_VOUS_POUR_SAISIR', 'Déjà inscrit, identifiez-vous pour accéder à votre fiche personnelle.');
+define ('BAZ_EST_SUPERADMINISTRATEUR', 'Cette personne est un super-administrateur.<br />Il peut modifier le droits des utilisateurs et administrer toutes les rubriques de fiches.');
+define ('BAZ_CHANGER_SUPERADMINISTRATEUR', 'Changer ses droits de super-administrateur pour en faire un utilisateur sans pouvoir');
+define ('BAZ_AUCUN_DROIT', 'utilisateur sans pouvoir');
+define ('BAZ_LABEL_REDACTEUR', 'r&eacute;dacteur');
+define ('BAZ_DROIT_ADMIN', 'administrateur');
+define ('BAZ_PASSER_SUPERADMINISTRATEUR', 'Passer la personne en super administrateur');
+define ('BAZ_ENLEVER_DROIT', 'Passer en utilisateur sans pouvoir');
+define ('BAZ_TYPE_ANNONCES', 'Types de fiche');
+define ('BAZ_DROITS_ACTUELS', 'Droits actuels');
+define ('BAZ_PASSER_EN', 'Passer en');
+define ('BAZ_OU_PASSER_EN', 'ou passer en');
+
+
+define ('BAZ_CHECKBOX_SUPERADMIN', 'Super administrateur : ');
+define ('BAZ_RADIO_AUCUN', 'aucun &nbsp;');
+define ('BAZ_RADIO_REDACTEUR', 'r&eacute;dacteur &nbsp;');
+define ('BAZ_RADIO_ADMINISTRATEUR', 'administrateur &nbsp;');
+
+//================Textes pour les sejours==================================
+define ('BAZ_TITRE_SEJOUR','Titre du s&eacute;jour');
+define ('BAZ_TITRE_SEJOUR_REQUIS','Le titre du s&eacute;jour est obligatoire, veuillez le saisir');
+define ('BAZ_MAX_60_CAR', '(maximum 60 caractères)');
+
+// ================ Texte pour les structures =============================
+define ('BAZ_FICHE_STRUCTURE', 'Fiche structure') ;
+define ('BAZ_NOM_STRUCTURE', 'Nom de la structure');
+define ('BAZ_NOM_STRUCTURE_REQUIS', 'Le nom de la structure est requis');
+define ('BAZ_RAISON_SOCIALE', 'Raison sociale');
+define ('BAZ_RAISON_SOCIALE_REQUIS', 'Raison sociale requise');
+define ('BAZ_OBJET', 'Objet');
+define ('BAZ_OBJET_REQUIS', 'Objet requis');
+define ('BAZ_ACTIONS', 'Actions');
+define ('BAZ_PRODUCTIONS', 'Productions');
+define ('BAZ_RESEAUX', 'Réseaux');
+define ('BAZ_ADRESSE', 'Adresse');
+define ('BAZ_ADRESSE_REQUIS', 'Adresse requise');
+define ('BAZ_FAX', 'Fax');
+//define ('BAZ_DERNIERES_FICHES', 'Derni&egrave;res fiches enregistr&eacute;es');
+define ('BAZ_FICHE_NUMERO', 'Fiches n&deg;');
+define ('BAZ_ECRITE', '&nbsp;&eacute;crite par&nbsp;');
+
+//================ Administration de Bazar ================================
+define ('BAZ_CONFIG', 'Configuration du bazar');
+define ('BAZ_ENREGISTRER_ET_QUITTER', 'Enregistrer et quitter');
+
+//================ Calendrier Bazar =======================================
+
+define ('BAZ_LUNDI','Lundi');
+define ('BAZ_MARDI','Mardi');
+define ('BAZ_MERCREDI','Mercredi');
+define ('BAZ_JEUDI','Jeudi');
+define ('BAZ_VENDREDI','Vendredi');
+define ('BAZ_SAMEDI','Samedi');
+define ('BAZ_DIMANCHE','Dimanche');
+
+define ('BAZ_LUNDI_COURT','Lun');
+define ('BAZ_MARDI_COURT','Mar');
+define ('BAZ_MERCREDI_COURT','Mer');
+define ('BAZ_JEUDI_COURT','Jeu');
+define ('BAZ_VENDREDI_COURT','Ven');
+define ('BAZ_SAMEDI_COURT','Sam');
+define ('BAZ_DIMANCHE_COURT','Dim');
+
+define ('BAZ_JANVIER','Janvier');
+define ('BAZ_FEVRIER','F&eacute;vrier');
+define ('BAZ_MARS','Mars');
+define ('BAZ_AVRIL','Avril');
+define ('BAZ_MAI','Mai');
+define ('BAZ_JUIN','Juin');
+define ('BAZ_JUILLET','Juillet');
+define ('BAZ_AOUT','Ao&uacute;t');
+define ('BAZ_SEPTEMBRE','Septembre');
+define ('BAZ_OCTOBRE','Octobre');
+define ('BAZ_NOVEMBRE','Novembre');
+define ('BAZ_DECEMBRE','D&eacute;cembre');
+
+
+/* +--Fin du code ----------------------------------------------------------------------------------------+
+*
+* $Log: baz_langue_fr.inc.php,v $
+* Revision 1.61.2.4 2008-02-08 08:19:32 alexandre_tb
+* modification d un label
+*
+* Revision 1.61.2.3 2008-01-29 09:39:39 alexandre_tb
+* utilisation d entite
+*
+* Revision 1.61.2.2 2007-12-04 09:08:06 alexandre_tb
+* modification de label
+*
+* Revision 1.61.2.1 2007-11-21 10:01:22 alexandre_tb
+* encodage
+*
+* Revision 1.61 2007-10-10 13:27:40 alexandre_tb
+* correction encodage
+*
+* Revision 1.60 2007-10-01 12:05:07 alexandre_tb
+* orthographe
+*
+* Revision 1.59 2007-09-28 14:07:01 jp_milcent
+* Correction pour le numéro d'une page.
+*
+* Revision 1.58 2007-08-28 09:41:47 alexandre_tb
+* correction orthographe
+*
+* Revision 1.57 2007-08-27 12:29:09 alexandre_tb
+* quelques constantes rendus modifiable, avec if defined ...
+*
+* Revision 1.56 2007-07-02 13:46:45 alexandre_tb
+* nouveaux labels
+*
+* Revision 1.55 2007-06-25 12:15:06 alexandre_tb
+* merge from narmer
+*
+* Revision 1.54 2007-06-25 09:57:51 alexandre_tb
+* nouveaux labels
+*
+* Revision 1.53 2007-06-04 15:26:42 alexandre_tb
+* nouveaux labels
+*
+* Revision 1.52 2007/04/20 12:47:42 florian
+* correction bugs suite au merge
+*
+* Revision 1.51 2007/04/20 09:57:21 florian
+* correction bugs suite au merge
+*
+* Revision 1.50 2007/04/11 08:30:12 neiluj
+* remise en état du CVS...
+*
+* Revision 1.42.2.2 2007/03/07 17:20:47 jp_milcent
+* Ajout d'une majuscule accentuée.
+*
+* Revision 1.42.2.1 2007/01/29 10:54:25 alexandre_tb
+* Mise en place de la constante BAZ_DERNIERES_FICHES pour remplacer le label en francais dans baz_liste
+*
+* Revision 1.42 2006/10/05 08:53:50 florian
+* amelioration moteur de recherche, correction de bugs
+*
+* Revision 1.41 2006/09/21 14:19:39 florian
+* amélioration des fonctions liés au wikini
+*
+* Revision 1.40 2006/07/19 12:50:00 alexandre_tb
+* Un accent
+*
+* Revision 1.39 2006/06/29 10:30:26 florian
+* correction de BAZ_MOT_CLE
+*
+* Revision 1.38 2006/05/19 13:53:45 florian
+* stabilisation du moteur de recherche, corrections bugs, lien recherche avancee
+*
+* Revision 1.37 2006/04/28 12:46:14 florian
+* integration des liens vers annuaire
+*
+* Revision 1.36 2006/03/14 17:10:21 florian
+* ajout des fonctions de syndication, changement du moteur de recherche
+*
+* Revision 1.35 2006/03/02 20:36:52 florian
+* les entrees du formulaire de saisir ne sont plus dans les constantes mias dans des tables qui gerent le multilinguisme.
+*
+* Revision 1.34 2006/03/01 16:23:22 florian
+* modifs textes fr et correction bug "undefined index"
+*
+* Revision 1.33 2006/03/01 16:00:17 florian
+* ajout de certains mots par rapport aux formulaires de saisie de ressources
+*
+* Revision 1.32 2006/02/09 18:00:17 florian
+* ajout des trois mots, je sais c'est peu de choses!!
+*
+* Revision 1.31 2006/01/18 10:53:28 florian
+* corrections bugs affichage fiche
+*
+* Revision 1.30 2006/01/05 16:28:25 alexandre_tb
+* prise en chage des checkbox, reste la mise à jour à gérer
+*
+* Revision 1.29 2006/01/04 15:31:46 alexandre_tb
+* ajout de label
+*
+* Revision 1.28 2006/01/03 10:19:31 florian
+* Mise à jour pour accepter des parametres dans papyrus: faire apparaitre ou non le menu, afficher qu'un type de fiches, définir l'action par défaut...
+*
+* Revision 1.27 2006/01/02 13:24:23 alexandre_tb
+* ajout de label
+*
+* Revision 1.26 2005/11/30 13:58:45 florian
+* ajouts graphisme (logos, boutons), changement structure SQL bazar_fiche
+*
+* Revision 1.25 2005/11/24 16:17:13 florian
+* corrections bugs, ajout des cases à cocher
+*
+* Revision 1.24 2005/11/08 16:09:26 florian
+* modifs séjours
+*
+* Revision 1.23 2005/11/08 16:06:41 florian
+* modifs séjours
+*
+* Revision 1.22 2005/11/07 17:30:36 florian
+* ajout controle sur les listes pour la saisie
+*
+* Revision 1.21 2005/11/07 17:05:46 florian
+* amélioration validation conditions de saisie, ajout des règles spécifiques de saisie des formulaires
+*
+* Revision 1.20 2005/11/04 17:13:49 florian
+* ajout des textes et du formulaire pour les annonces
+*
+* Revision 1.19 2005/10/31 17:10:56 ddelon
+* Reintegration des commits mysterieusement disparus
+*
+* Revision 1.18 2005/10/24 09:42:21 florian
+* mise a jour appropriation
+*
+* Revision 1.17 2005/10/21 16:15:04 florian
+* mise a jour appropriation
+*
+* Revision 1.13 2005/10/13 14:43:42 florian
+* corrections pb accents
+*
+* Revision 1.12 2005/10/12 16:28:37 florian
+* corrections fautes orthographes
+*
+* Revision 1.11 2005/10/12 16:27:22 florian
+* ajout textes des Ressources
+*
+* Revision 1.10 2005/10/12 16:17:37 florian
+* corrections pb accents
+*
+* Revision 1.9 2005/10/12 16:12:34 florian
+* corrections pb accents
+*
+* Revision 1.8 2005/10/12 15:31:43 florian
+* corrections pb accents
+*
+* Revision 1.7 2005/10/10 16:22:06 alexandre_tb
+* Modification de label pour les rendre plus générique
+*
+* Revision 1.6 2005/09/30 23:04:31 ddelon
+* calendrier bazar
+*
+* Revision 1.5 2005/09/30 12:22:54 florian
+* Ajouts commentaires pour fiche, modifications graphiques, maj SQL
+*
+* Revision 1.3 2005/07/21 19:03:12 florian
+* nouveautés bazar: templates fiches, correction de bugs, ...
+*
+* Revision 1.1.1.1 2005/02/17 18:05:11 florian
+* Import initial de Bazar
+*
+* Revision 1.1.1.1 2005/02/17 11:09:50 florian
+* Import initial
+*
+* Revision 1.1.1.1 2005/02/16 18:06:35 florian
+* import de la nouvelle version
+*
+* Revision 1.6 2004/07/06 16:21:50 florian
+* d&eacute;buggage modification + MAJ flux RSS
+*
+* Revision 1.5 2004/07/05 15:13:53 florian
+* changement interface de saisie
+*
+* Revision 1.4 2004/07/02 14:51:41 florian
+* ajouts de labels divers
+*
+* Revision 1.3 2004/07/01 16:37:14 florian
+* ajout de labels
+*
+* Revision 1.2 2004/07/01 13:00:24 florian
+* modif Florian
+*
+* Revision 1.1 2004/06/23 09:58:32 alex
+* version initiale
+*
+* Revision 1.1 2004/06/18 09:00:46 alex
+* version initiale
+*
+*
+* +-- Fin du code ----------------------------------------------------------------------------------------+
+*/
+?>
Index: 2014-08-05_centre/client/inscription/bibliotheque/inscription.class.php
===================================================================
--- 2014-08-05_centre/client/inscription/bibliotheque/inscription.class.php (revision 0)
+++ 2014-08-05_centre/client/inscription/bibliotheque/inscription.class.php (revision 120)
@@ -0,0 +1,340 @@
+<?php
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+/**
+* Fonctions du module inscription
+*
+* Fonctions du module inscription
+*
+*@package inscription
+//Auteur original :
+*@author Alexandre Granier <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+*@copyright Tela-Botanica 2000-2004
+*@version $Id: inscription.class.php,v 1.3 2005/05/13 13:48:38 alex Exp $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | ENTETE du PROGRAMME |
+// +------------------------------------------------------------------------------------------------------+
+
+
+// +------------------------------------------------------------------------------------------------------+
+// | LISTE de FONCTIONS |
+// +------------------------------------------------------------------------------------------------------+
+
+class HTML_formulaireInscription extends HTML_Quickform {
+
+ var $mode_ajout = true;
+ /**
+ * Constructeur
+ *
+ * @param string formName Le nom du formulaire
+ * @param string method Méthode post ou get
+ * @param string action L'action du formulaire.
+ * @param int target La cible.
+ * @param Array attributes Les attributs HTML en plus.
+ * @param bool trackSubmit ??
+ * @return void
+ * @access public
+ */
+ function HTML_forumlaireInscription ( $formName, $method = "post", $action, $target = "_self", $attributes, $trackSubmit = false ) {
+ HTML_Quickform::HTML_Quickform($formName, $method, $action, $target, $attributes, $trackSubmit) ;
+ }
+
+ /**
+ *
+ *
+ * @return void
+ * @access public
+ */
+ function construitFormulaire($url, $liste_pays)
+ {
+ $squelette =& $this->defaultRenderer();
+ $squelette->setFormTemplate("\n".'<form{attributes}>'."\n".'{content}'."\n".'</form>'."\n");
+
+ $modele_element_debut = '<li class="groupe_formulaire">'."\n".'<span class="inscription_label1">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'.
+ "\n".'{element}'."\n".''."\n".
+ '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
+ ''."\n" ;
+ $modele_element_fin = "\n".'<span class="inscription_label2">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'.
+ "\n".'{element}'."\n".''."\n".
+ '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
+ '</li>'."\n" ;
+
+ $squelette->setElementTemplate( '<li class="liste_inscription">'."\n".'<span class="inscription_label">{label}<!-- BEGIN required --><span class="symbole_obligatoire">*</span><!-- END required --></span>'.
+ "\n".'{element}'."\n".''."\n".
+ '<!-- BEGIN error --><span class="erreur">{error}</span><!-- END error -->'."\n".
+ '</li>'."\n");
+ //$squelette->setElementTemplate(, ) ;
+ // Les modèles pour les champs qui se tienne 2 par ligne
+ foreach (array('mot_de_passe', 'nom', 'cp') as $valeur) $squelette->setElementTemplate( $modele_element_debut, $valeur);
+ foreach (array('password_repete', 'prenom', 'ville') as $valeur) $squelette->setElementTemplate( $modele_element_fin, $valeur);
+
+ $squelette->setElementTemplate( '<ul><li class="groupe_bouton">{element}', 'annuler');
+ $squelette->setElementTemplate( '{element}</li></ul>', 'valider');
+
+ $squelette->setRequiredNoteTemplate("\n".'<p>'."\n".'<span class="symbole_obligatoire">*</span> {requiredNote}'."\n".'</p>'."\n");
+
+ $fieldset_debut = '<fieldset>'."\n".
+ '<legend>'.(($this->mode_ajout) ? INS_AJOUT_MEMBRE : INS_MODIF_MEMBRE).'</legend>'."\n".
+ '<ul>'."\n";
+ $this->addElement('html', $fieldset_debut);
+ $this->addElement ('text', 'email', INS_EMAIL) ;
+ $this->addRule ('email', INS_EMAIL_REQUIS, 'required','', 'client') ;
+ $this->addRule ('email', INS_MAIL_INCORRECT, 'email', '', 'client') ;
+ $this->registerRule('doublon', 'callback', 'verif_doublonMail') ;
+ $this->addRule ('email', INS_MAIL_DOUBLE, 'doublon', true) ;
+
+ $this->addElement('password', 'mot_de_passe', INS_MOT_DE_PASSE);
+ $this->addElement('password', 'password_repete', INS_REPETE_MOT_DE_PASSE);
+ $this->addRule ('mot_de_passe', INS_MOT_DE_PASSE_REQUIS, 'required', '', 'client') ;
+ $this->addRule ('password_repete', INS_MOT_DE_PASSE_REQUIS, 'required', '', 'client') ;
+
+ $this->addElement('text', 'nom', INS_NOM);
+ $this->addElement('text', 'prenom', INS_PRENOM);
+ $this->addRule ('nom', INS_NOM_REQUIS, 'required', '', 'client') ;
+ $this->addRule ('prenom', INS_PRENOM_REQUIS, 'required', '', 'client') ;
+
+ $this->addElement ('text', 'adresse_1', INS_ADRESSE_1) ;
+ $this->addElement ('text', 'adresse_2', INS_ADRESSE_2) ;
+ $this->addElement ('text', 'region', INS_REGION) ;
+
+ $this->addElement('text', 'cp', INS_CODE_POSTAL) ;
+ $this->addElement('text', 'ville', INS_VILLE) ;
+ $this->addRule ('cp', INS_CODE_POSTAL_REQUIS, 'required', '', 'client') ;
+ $this->addRule ('ville', INS_VILLE_REQUIS, 'required', '', 'client') ;
+
+ // L'élément pays est construit à partir de la table des pays
+ $s =& $this->createElement('select','pays',INS_PAYS);
+ $s->loadArray($liste_pays,'fr');
+ $this->addElement($s);
+
+ if (INS_UTILISE_LISTE) {
+ $element_lettre = &new HTML_QuickForm_checkbox ('lettre', '', INS_LETTRE) ;
+ $this->addElement($element_lettre) ;
+ }
+
+ $this->addElement ('text', 'site', INS_SITE_INTERNET) ;
+
+ $fieldset_fin = '</ul>'."\n".
+ '</fieldset>'."\n";
+ $this->addElement('html', $fieldset_fin);
+
+ /* $fieldset_debut = '<fieldset>'."\n".
+ '<legend>'.INS_ADHERENT.'</legend>'."\n".
+ '<ul>'."\n";
+ $this->addElement('html', $fieldset_debut);
+
+ $this->addElement ('text', 'organisme', INS_ORGANISME) ;
+ $this->addElement ('text', 'fonction', INS_FONCTION) ;
+ $fieldset_fin = '</ul>'."\n".
+ '</fieldset>'."\n";
+ $this->addElement('html', $fieldset_fin);
+
+ $fieldset_debut = '<fieldset>'."\n".
+ '<legend>'.INS_ETES_BOTANISTE.'</legend>'."\n".
+ '<ul>'."\n";
+ $this->addElement('html', $fieldset_debut);
+
+ // requete pour trouver les niveaux en botanique
+ $requete = "select * from annuaire_LABEL_NIV" ;
+ $resultat = $GLOBALS['ins_db']->query ($requete) ;
+ if (DB::isError($resultat)) {
+ die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
+ }
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
+ $this->addElement ('radio', 'niveau', '', $ligne->LABEL_NIV, $ligne->ID_LABEL_NIV) ;
+ }
+
+ $fieldset_fin = '</ul>'."\n".
+ '</fieldset>'."\n";
+ $this->addElement('html', $fieldset_fin);
+
+
+ // L'activité professionnelle
+ $fieldset_debut = '<fieldset>'."\n".
+ '<legend>'.INS_ACTIVITE_PROFESSIONNELLE.'</legend>'."\n".
+ '<ul>'."\n";
+ $this->addElement('html', $fieldset_debut);
+
+
+ // requete pour trouver les niveaux en botanique
+ $requete = "select * from annuaire_LABEL_ACT" ;
+ $resultat = $GLOBALS['ins_db']->query ($requete) ;
+ if (DB::isError($resultat)) {
+ die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
+ }
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
+ $this->addElement ('radio', 'activite', '', $ligne->LABEL_ACT, $ligne->ID_LABEL_ACT) ;
+ }
+
+ $fieldset_fin = '</ul>'."\n".
+ '</fieldset>'."\n";
+ $this->addElement('html', $fieldset_fin);
+
+ // L'activité professionnelle
+ $fieldset_debut = '<fieldset>'."\n".
+ '<legend>'.INS_MEMBRE_ASSO.'</legend>'."\n".
+ '<ul>'."\n";
+ $this->addElement('html', $fieldset_debut);
+
+ // requete pour trouver les niveaux en botanique
+ $requete = "select * from annuaire_LABEL_ASS" ;
+ $resultat = $GLOBALS['ins_db']->query ($requete) ;
+ if (DB::isError($resultat)) {
+ die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
+ }
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT)) {
+ $this->addElement ('radio', 'asso', '', $ligne->LABEL_ASS, $ligne->ID_LABEL_ASS) ;
+ }
+
+ $fieldset_fin = '</ul>'."\n".
+ '</fieldset>'."\n";
+ $this->addElement('html', $fieldset_fin);
+
+ // Les spécialité
+ $fieldset_debut = '<fieldset>'."\n".
+ '<legend>'.INS_SPECIALISTE.'</legend>'."\n".
+ '<ul>'."\n";
+ $this->addElement('html', $fieldset_debut);
+ $this->addElement ('textarea', 'specialite', '', array ('cols' => 50, 'rows' => 4)) ;
+ $fieldset_fin = '</ul>'."\n".
+ '</fieldset>'."\n";
+ $this->addElement('html', $fieldset_fin);
+
+
+ // Les spécialité géographiques
+ $fieldset_debut = '<fieldset>'."\n".
+ '<legend>'.INS_SPE_ZONE.'</legend>'."\n".
+ '<ul>'."\n";
+ $this->addElement('html', $fieldset_debut);
+ $this->addElement ('textarea', 'specialite_geo', '', array ('cols' => 50, 'rows' => 4)) ;
+ $fieldset_fin = '</ul>'."\n".
+ '</fieldset>'."\n";
+ $this->addElement('html', $fieldset_fin);*/
+
+ if (!$this->mode_ajout) {
+ $this->addElement ('link', 'annuler', '', preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()), INS_ANNULER) ;
+ }
+ $this->addElement ('submit', 'valider', INS_VALIDER) ;
+
+ $this->setRequiredNote(INS_NOTE_REQUIS) ;
+ }
+
+ /** Modifie le formulaire pour l'adapter au cas des structures
+ *
+ *
+ * @return void
+ * @access public
+ */
+ function formulaireStructure()
+ {
+ $this->removeElement('email', false) ;
+ $mail = & HTML_QuickForm::createElement ('text', 'email', INS_MAIL_STRUCTURE) ;
+ $this->insertElementBefore ($mail, 'mot_de_passe') ;
+ $nom_structure = & HTML_QuickForm::createElement ('text', 'nom', INS_NOM_STRUCTURE) ;
+ $this->insertElementBefore ($nom_structure, 'email') ;
+ $this->removeElement ('site', false) ;
+ $site_structure = & HTML_QuickForm::createElement ('text', 'site', INS_SITE_STRUCTURE) ;
+ $this->insertElementBefore ($site_structure, 'pays') ;
+ $this->addElement ('hidden', 'est_structure', 1) ;
+ $sigle_structure = & HTML_QuickForm::createElement ('text', 'sigle_structure', INS_SIGLE_STRUCTURE) ;
+ $this->insertElementBefore ($sigle_structure, 'nom') ;
+ $this->addRule ('sigle_structure', INS_SIGLE_REQUIS, 'required', '', 'client') ;
+ }
+ /**
+ *
+ *
+ * @return string
+ * @access public
+ */
+ function toHTML( )
+ {
+ $res = HTML_QuickForm::toHTML() ;
+ return $res ;
+ } // end of member function toHTML
+}
+
+class ListeDePays extends PEAR{
+
+ var $_db ;
+ /** Constructeur
+ * Vérifie l'existance de la table gen_pays_traduction
+ *
+ * @param DB Un objet PEAR::DB
+ * @return
+ */
+ function ListeDePays (&$objetDB) {
+ $this->_db = $objetDB ;
+ $requete = 'SHOW TABLES';
+ $resultat = $objetDB->query($requete) ;
+ if (DB::isError ($resultat)) {
+ die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
+ }
+ while ($ligne = $resultat->fetchRow()) {
+ if ($ligne[0] == INS_TABLE_PAYS) {
+ return ;
+ }
+ }
+ return $this->raiseError('La table '.INS_TABLE_PAYS.' n\'est pas présente dans la base de donnée !') ;
+ }
+
+ /** Renvoie la liste des pays traduite
+ *
+ * @param string une chaine de type i18n ou une chaine code iso langue (fr_FR ou fr ou FR)
+ * @return un tableau contenant en clé, le code iso du pays, en majuscule et en valeur le nom du pays traduit
+ */
+ function getListePays ($i18n) {
+ if (strlen($i18n) == 2) {
+ $i18n = strtolower($i18n).'-'.strtoupper($i18n) ;
+ }
+ $requete = 'SELECT '.INS_CHAMPS_ID_PAYS.', '.INS_CHAMPS_LABEL_PAYS.' '.
+ 'FROM '.INS_TABLE_PAYS.' '.
+ 'WHERE '.INS_CHAMPS_PAYS_LG.' = "fr" '.
+ 'ORDER BY '.INS_CHAMPS_LABEL_PAYS.' ';
+ $resultat = $this->_db->query($requete);
+ if (DB::isError($resultat)) {
+ die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
+ }
+ if ($resultat->numRows() == 0) {
+ return $this->raiseError('Le code fourni ne correspond à aucun pays ou n\'est pas dans la table!') ;
+ }
+ $retour = array() ;
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ $retour[$ligne[INS_CHAMPS_ID_PAYS]] = $ligne[INS_CHAMPS_LABEL_PAYS];
+ }
+ return $retour;
+ }
+}
+
+
+
+/* +--Fin du code ----------------------------------------------------------------------------------------+
+* Revision 1.1 2004/06/18 09:20:47 alex
+* version initiale
+*
+*
+* +-- Fin du code ----------------------------------------------------------------------------------------+
+*/
+
+?>
Index: 2014-08-05_centre/client/inscription/bibliotheque/inscription.fonct.php
===================================================================
--- 2014-08-05_centre/client/inscription/bibliotheque/inscription.fonct.php (revision 0)
+++ 2014-08-05_centre/client/inscription/bibliotheque/inscription.fonct.php (revision 120)
@@ -0,0 +1,656 @@
+<?php
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+/**
+* Fonctions du module inscription
+*
+* Fonctions du module inscription
+*
+*@package inscription
+//Auteur original :
+*@author Alexandre Granier <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+*@copyright Tela-Botanica 2000-2004
+*@version $Id: inscription.fonct.php,v 1.2 2005/03/21 16:50:27 alex Exp $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | ENTETE du PROGRAMME |
+// +------------------------------------------------------------------------------------------------------+
+
+
+
+// +------------------------------------------------------------------------------------------------------+
+// | LISTE de FONCTIONS |
+// +------------------------------------------------------------------------------------------------------+
+
+/**
+ *
+ * @param array les valeurs renvoyés par le formulaire
+ * @return
+ */
+function demande_inscription ($valeurs) {
+ // On stocke les informations dans un variable de session
+ // On coupe l'identifiant de session pour ne prendre que les 8 premiers caractères
+ // afin d'éviter d'obtenir une url trop longue
+ $chaine = substr (session_id(), 0, 8) ;
+ $requete_verif = 'SELECT * FROM inscription_demande WHERE id_identifiant_session="'.$chaine.'"' ;
+ $resultat_verif = $GLOBALS['ins_db']->query($requete_verif) ;
+ if ($resultat_verif->numRows() != 0) {
+ $requete_suppression = 'DELETE FROM inscription_demande WHERE id_identifiant_session="'.$chaine.'"' ;
+ $GLOBALS['ins_db']->query($requete_suppression) ;
+ }
+ $requete = 'INSERT INTO inscription_demande SET id_identifiant_session="'.$chaine.'", id_donnees="'.
+ addslashes(serialize($valeurs)).'", id_date=NOW()' ;
+ $resultat = $GLOBALS['ins_db']->query($requete) ;
+ if (DB::isError ($resultat)) {
+ echo ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
+ }
+ // On envoie un email de confirmation pour l'utilisateur
+ $GLOBALS['ins_url']->addQueryString('id', $chaine) ;
+
+ $corps = INS_MESSAGE_DEBUT_MAIL_INSCRIPTION ;
+ if (INS_UTILISE_REECRITURE_URL) {
+ $corps .= 'http://'.$GLOBALS['ins_url']->host.'/'.INS_URL_PREFIXE.$chaine ;
+ } else {
+ $corps .= str_replace ('&amp;', '&', $GLOBALS['ins_url']->getURL()) ;
+ }
+ $corps .= INS_MESSAGE_FIN_MAIL_INSCRIPTION ;
+ mail ($GLOBALS['email'], 'Inscription', $corps, 'From: '.INS_MAIL_ADMIN_APRES_INSCRIPTION) ;
+}
+
+function AUTH_formulaire_login ($msg = '') {
+ $res = '';
+ //--------------------------------------------------------------------------
+ // Les urls
+ $url_deja_inscrit = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
+ $GLOBALS['ins_url']->addQueryString('action', 'inscription');
+ $url_inscription = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
+ $GLOBALS['ins_url']->removeQueryString('action');
+
+ //--------------------------------------------------------------------------
+ // Le formulaire
+ $form = new HTML_QuickForm ('inscription', 'post', $url_inscription);
+ $form->addElement ('submit', 'Inscription', INS_INSCRIPTION) ;
+ $res = '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
+ $res .= $msg ;
+ $res .= '<h2 class="titre2_inscription">'.INS_LAIUS_INSCRIPTION.'</h2>'."\n" ;
+ $res .= '<p>'.INS_LAIUS_INSCRIPTION_2.'</p>'."\n" ;
+ $res .= $form->toHTML() ;
+ $res .= '<h2 class="titre2_inscription">'.INS_DEJA_INSCRIT.'</h2>' ;
+ $form = new HTML_QuickForm ('inscription', 'post', $url_deja_inscrit) ;
+ $form->addElement ('text', 'username', INS_EMAIL) ;
+ $form->addElement ('password', 'password', INS_MOT_DE_PASSE) ;
+ $form->addElement('submit', 'valider', INS_VALIDER);
+ $res .= $form->toHTML() ;
+ $res .= '<p>'.INS_TEXTE_PERDU.'</p>'."\n" ;
+ return $res;
+}
+
+/** message_erreur () - Renvoie le code HTML d'un message d'erreur
+*
+* Cette page est appelée avec le paramêtre action=mdp_oubli passé dans l'url.
+* Elle peut aussi être appelé en cas d'erreur de loggin.
+* @return string HTML
+*/
+function message_erreur ($erreur = true) {
+ $res = '';
+
+ // Les urls
+ $url_deja_inscrit = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
+ $GLOBALS['ins_url']->addQueryString('action', 'sendpasswd');
+ $url_envoi_mdp = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
+ $GLOBALS['ins_url']->removeQueryString('action');
+
+ // La page
+ $res .= '<h1 class="titre1_inscription">'.INS_MDP_PERDU_TITRE.'</h1>' ;
+ if ($erreur) {
+ $res .= '<p class="attention">'.INS_ERREUR_LOGIN.'</p>'."\n" ;
+ }
+ $res .= '<div class="information">'."\n";
+ $res .= '<p>'.INS_SI_PASSE_PERDU.'</p>'."\n";
+ $res .= '<p>'.INS_INDIQUE_ADRESSE.'</p>'."\n";
+ $res .= '<p>'."\n";
+ $res .= '<form action="'.$url_envoi_mdp.'" method="post">'."\n";
+ $res .= '<label for="nom_d_utilisateur">'.INS_EMAIL.' : </label>';
+ $valeur = (isset($_POST['username'])) ? $_POST['username'] : '';
+ $res .= '<input type="text" id="nom_d_utilisateur" name="nom_d_utilisateur" value="'.$valeur.'" size="32" /></li></ul>'."\n";
+ $res .= '<input type="submit" value="'.INS_ENVOIE_PASSE.'" />'."\n";
+ $res .= '</form>'."\n";
+ $res .= '</p>';
+ $res .= '</div>';
+ $res .= '<hr/>';
+
+ // On remet le formulaire d'inscription mais un peu réduit
+ $res .= '<h2 class="titre2_inscription">'.INS_MDP_PERDU_TITRE_RETENTER.'</h2>' ;
+ $form = new HTML_QuickForm ('inscription', 'post', $url_deja_inscrit) ;
+ $form->addElement('text', 'username', INS_EMAIL) ;
+ $form->addElement('password', 'password', INS_MOT_DE_PASSE) ;
+ $form->addElement('submit', 'valider', INS_VALIDER);
+
+ // Retour du html
+ $res .= $form->toHTML() ;
+ return $res;
+}
+
+function insertion($valeur) {
+ // =========== Insertion dans l'annuaire ===================
+
+ $autres_valeurs = info_annuaire($valeur);
+ $autres_valeurs[INS_CHAMPS_DATE] = date('Y-m-d');
+ $autres_valeurs[INS_CHAMPS_MAIL] = $valeur['email'];
+ switch (INS_MDP_CRYPTYPE) {
+ case 'md5' :
+ $autres_valeurs[INS_CHAMPS_PASSE] = md5($valeur['mot_de_passe']);
+ break;
+ default :
+ trigger_error('Type d\'encodage du mot de passe inconnu!', E_USER_ERROR);
+ }
+
+ // Utilisation de AUTH pour ajouter la personne
+ //$resultat = $GLOBALS['AUTH']->addUser($valeur['email'], $valeur['mot_de_passe'], $autres_valeurs) ;
+ $champs = '';
+ $vals = '';
+ foreach($autres_valeurs as $champ => $val) {
+ if ($val != '') {
+ $champs .= $champ.', ';
+ $vals .= '"'.str_replace('"', '\"', $val).'", ';
+ }
+ }
+ $champs = trim($champs, ', ');
+ $vals = trim($vals, ', ');
+ $requete = 'INSERT INTO '.INS_ANNUAIRE.' '.
+ ' ('.$champs.') '.
+ 'VALUES ('.$vals.') ';
+ $resultat = $GLOBALS['ins_db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+
+ // Récupération de l'identifiant de l'inscription
+ $requete = 'SELECT '.INS_CHAMPS_ID.' '.
+ 'FROM '.INS_ANNUAIRE.' '.
+ 'WHERE '.INS_CHAMPS_MAIL.' = "'.$valeur['email'].'"' ;
+ $resultat = $GLOBALS['ins_db']->query ($requete) ;
+ if (DB::isError ($resultat)) {
+ die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
+ $id = $ligne[INS_CHAMPS_ID] ;
+
+ // Insertion dans les statistiques
+ if (INS_UTILISE_STAT) {
+ $requete = 'INSERT INTO '.INS_TABLE_STATISTIQUE.' SET '.INS_STATS_CHAMPS_DATE.' = NOW(), '.INS_STATS_CHAMPS_ACTION.' = "add" ';
+ $resultat = $GLOBALS['ins_db']->query($requete) ;
+ if (DB::isError ($resultat)) {
+ die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
+ }
+ }
+}
+
+/**
+ * Effectue une mise à jour dans la base de donnée
+ *
+ * @global AUTH un objet PEAR:Auth
+ * @global ins_db un objet PEAR::DB
+ * @return
+ */
+function mise_a_jour($valeur) {
+ // ====================Mise à jour dans l'annuaire ====================
+ $requete = 'UPDATE '.INS_ANNUAIRE.' '.
+ 'SET '.requete_annuaire($valeur).' '.
+ 'WHERE '.INS_CHAMPS_ID.' = "'.$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID).'"';
+ $resultat = $GLOBALS['ins_db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().$resultat->getDebugInfo()) ;
+ }
+
+ if (isset($valeur['lettre'])) {
+ // On appelle cette fonction pour mettre à jour
+ $GLOBALS['AUTH']->setAuthData(INS_CHAMPS_LETTRE, $valeur['lettre'], true);
+ }
+ // la valeur de session (récupéré par getAuthData()
+ unset($resultat);
+}
+
+/** requete_annuaire () - Renvoie une chaine contenant les champs de l'annuaire avec leur valeur suite à le fonction process de QuickForm
+*
+* @return string une requete du type champs="valeur",...
+*/
+function requete_annuaire(&$valeur) {
+ if (!isset($valeur['lettre'])) {
+ $valeur['lettre'] = 0;
+ }
+ if (preg_match ('/([0-9][0-9])[0-9][0-9][0-9]/', $valeur['cp'], $match)) {
+ $valeur['dpt'] = $match[1];
+ if (preg_match ('/(97[0-9])[0-9][0-9]/', $valeur['cp'], $match2)) {
+ $valeur['dpt'] = $match2[1];
+ }
+ }
+ foreach($valeur as $champ => $val) {
+ $valeur[$champ] = str_replace('"', '\"', $val);
+ }
+ $req = INS_CHAMPS_NOM.' = "'.$valeur['nom'].'",'.
+ INS_CHAMPS_PRENOM.' = "'.$valeur['prenom'].'",'.
+ INS_CHAMPS_MAIL.' = "'.$valeur['email'].'",'.
+ INS_CHAMPS_PASSE.' = "'.md5 ($valeur['mot_de_passe']).'",'.
+ INS_CHAMPS_PAYS.' = "'.$valeur['pays'].'", '.
+ INS_CHAMPS_CODE_POSTAL.' = "'.$valeur['cp'].'", '.
+ INS_CHAMPS_VILLE.' = "'.$valeur['ville'].'", '.
+ INS_CHAMPS_ADRESSE_1.' = "'.$valeur['adresse_1'].'", '.
+ INS_CHAMPS_ADRESSE_2.' = "'.$valeur['adresse_2'].'", '.
+ INS_CHAMPS_REGION.' = "'.$valeur['region'].'", '.
+ INS_CHAMPS_STRUCTURE.' = "'.$valeur['organisme'].'", '.
+ INS_CHAMPS_SITE_WEB.' = "'.$valeur['site'].'", '.
+ INS_CHAMPS_LETTRE.' = "'.$valeur['lettre'].'" ';
+ if (isset($valeur['dpt'])) {
+ $req .= ','.INS_CHAMPS_DPT.' = "'.$valeur['dpt'].'"' ;
+ }
+ return $req ;
+}
+
+/**
+ * renvoie un tableau avec en clé les champs de la base et en valeur les valeurs saisies dans le formulaire
+ *
+ * @return array renvoie un tableau avec en clé les champs de la base et en valeur les valeurs saisies dans le formulaire
+ */
+function info_annuaire ($valeur) {
+
+ // Petit code pour recupere le num de dpt a partir du cp
+ if (preg_match ('/([0-9][0-9])[0-9][0-9][0-9]/', $valeur['cp'], $match)) {
+ $valeur['dpt'] = $match[1];
+ if (preg_match ('/(97[0-9])[0-9][0-9]/', $valeur['cp'], $match2)) {
+ $valeur['dpt'] = $match2[1];
+ }
+ }
+ $tableau = array (
+ INS_CHAMPS_ID => nextId(INS_ANNUAIRE, INS_CHAMPS_ID, $GLOBALS['ins_db']),
+ INS_CHAMPS_NOM => addslashes($valeur['nom']),
+ INS_CHAMPS_PRENOM => addslashes($valeur['prenom']),
+ INS_CHAMPS_PAYS => $valeur['pays'],
+ INS_CHAMPS_CODE_POSTAL => $valeur['cp'],
+ INS_CHAMPS_VILLE => addslashes($valeur['ville']),
+ INS_CHAMPS_ADRESSE_1 => addslashes($valeur['adresse_1']),
+ INS_CHAMPS_ADRESSE_2 => addslashes($valeur['adresse_2']),
+ INS_CHAMPS_REGION => addslashes($valeur['region']),
+ INS_CHAMPS_SITE_WEB => $valeur['site']);
+ if (INS_UTILISE_LISTE){
+ $tableau[INS_CHAMPS_LETTRE] = $valeur['lettre'];
+ }
+ return $tableau ;
+}
+
+/** formulaire_defaults () - Renvoie un tableau avec les valeurs par défaut du formulaire d'inscription
+*
+* @return array Valeurs par défaut du formulaire d'inscription
+*/
+function formulaire_defaults () {
+ $requete = 'SELECT '.INS_ANNUAIRE.'.* '.
+ 'FROM '.INS_ANNUAIRE.' '.
+ 'WHERE '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'= "'.$GLOBALS['AUTH']->getAuthData (INS_CHAMPS_ID).'"' ;
+ $resultat = $GLOBALS['ins_db']->query ($requete) ;
+ if (DB::isError($resultat)) {
+ die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
+ $valeurs_par_defaut = array() ;
+ $valeurs_par_defaut['email'] = $ligne[INS_CHAMPS_MAIL];
+ $valeurs_par_defaut['nom'] = $ligne[INS_CHAMPS_NOM];
+ $valeurs_par_defaut['prenom'] = $ligne[INS_CHAMPS_PRENOM] ;
+ $valeurs_par_defaut['pays'] = $ligne[INS_CHAMPS_PAYS] ;
+ $valeurs_par_defaut['nomwiki'] = $ligne[INS_CHAMPS_LOGIN] ;
+ $valeurs_par_defaut['cp'] = $ligne[INS_CHAMPS_CODE_POSTAL] ;
+ $valeurs_par_defaut['ville'] = $ligne[INS_CHAMPS_VILLE] ;
+ $valeurs_par_defaut['adresse_1'] = $ligne[INS_CHAMPS_ADRESSE_1] ;
+ $valeurs_par_defaut['adresse_2'] = $ligne[INS_CHAMPS_ADRESSE_2] ;
+ $valeurs_par_defaut['region'] = $ligne[INS_CHAMPS_REGION] ;
+ $valeurs_par_defaut['site'] = $ligne[INS_CHAMPS_SITE_WEB] ;
+ if (INS_UTILISE_LISTE){
+ $valeurs_par_defaut['lettre'] = $ligne[INS_CHAMPS_LETTRE] ;
+ }
+ return $valeurs_par_defaut ;
+}
+
+function info() {
+ $requete = 'SELECT * '.
+ 'FROM '.INS_ANNUAIRE.', '.INS_TABLE_PAYS.' '.
+ 'WHERE '.INS_ANNUAIRE.'.'.INS_CHAMPS_ID.'="'.$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID).'" '.
+ 'AND '.INS_CHAMPS_PAYS.'='.INS_CHAMPS_ID_PAYS.' ';
+
+ $resultat = $GLOBALS['ins_db']->query($requete);
+ if (DB::isError ($resultat)) {
+ die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo());
+ }
+
+ $ligne = $resultat->fetchRow (DB_FETCHMODE_ASSOC) ;
+ $res = '<h1 class="inscription_titre1">'.INS_MESSAGE_BIENVENU.'</h1>'."\n";
+ $res .= '<h2 class="inscription_titre2">'.INS_FICHE_PERSONNELLE.'</h2>'."\n";
+ $res .= '<dl>';
+ $res .= ligne_inscription (INS_EMAIL, $ligne[INS_CHAMPS_MAIL]) ;
+ $res .= ligne_inscription (INS_NOM, $ligne[INS_CHAMPS_NOM]) ;
+ $res .= ligne_inscription (INS_PRENOM, $ligne[INS_CHAMPS_PRENOM]) ;
+ $res .= ligne_inscription (INS_ADRESSE_1, $ligne[INS_CHAMPS_ADRESSE_1]) ;
+ $res .= ligne_inscription (INS_ADRESSE_2, $ligne[INS_CHAMPS_ADRESSE_2]) ;
+ $res .= ligne_inscription (INS_REGION, $ligne[INS_CHAMPS_REGION]) ;
+ $res .= ligne_inscription (INS_CODE_POSTAL, $ligne[INS_CHAMPS_CODE_POSTAL]) ;
+ $res .= ligne_inscription (INS_VILLE, $ligne[INS_CHAMPS_VILLE]) ;
+ $res .= ligne_inscription (INS_PAYS, $ligne[INS_CHAMPS_LABEL_PAYS]) ;
+ $res .= ligne_inscription (INS_SITE_INTERNET, $ligne[INS_CHAMPS_SITE_WEB]) ;
+ $res .= '</dl>';
+ return $res;
+}
+
+/**
+ *
+ *
+ * @return
+ */
+
+function ligne_inscription ($label, $valeur) {
+ if ($valeur == '') {
+ $valeur = '&nbsp;' ;
+ }
+ return '<dt>'.$label.' : </dt><dd>'.$valeur.'</dd>' ;
+}
+
+function bouton($url) {
+ $boutons = new HTML_QuickForm('inscription', 'post', $url) ; ;
+ //confirmation() ;
+ $buttons[] = &HTML_QuickForm::createElement('submit', 'modifier', INS_MODIFIER_INSCRIPTION);
+ $buttons[] = &HTML_QuickForm::createElement('submit', 'supprimer', INS_SUPPRIMER_INSCRIPTION,
+ array ('onclick' => "javascript:return confirm('".INS_SUPPRIMER_INSCRIPTION." ?');"));
+ $boutons->addGroup($buttons, null, null, '&nbsp;');
+ $boutons->addElement('hidden', 'id_utilisateur', $GLOBALS['AUTH']->getAuthData (INS_CHAMPS_ID));
+ return $boutons->toHTML();
+}
+
+/**
+ * Renvoie un lien pour se déconnex=cter
+ *
+ * @return string
+ */
+function deconnexion ($url) {
+ // Un champs logout
+ return '<div><a href="'.$url.'&amp;logout=1">'.INS_DECONNEXION.'</a></div>';
+}
+
+function verif_doublonMail($mail) {
+ if (isset ($GLOBALS['AUTH']) && $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) != '') {
+ $requete_mail = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ".INS_CHAMPS_ID."=".$GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ;
+ $resultat_mail = $GLOBALS['ins_db']->query($requete_mail) ;
+ if (DB::isError ($resultat_mail)) {
+ die ("Echec de la requete : $requete_mail<br />".$resultat_mail->getMessage()) ;
+ }
+ $ligne_mail = $resultat_mail->fetchRow(DB_FETCHMODE_ASSOC) ;
+ if ($mail == $ligne_mail[INS_CHAMPS_MAIL]) {
+ return true ;
+ }
+ }
+ $requete = "select ".INS_CHAMPS_MAIL." from ".INS_ANNUAIRE." where ".INS_CHAMPS_MAIL."= \"$mail\"" ;
+ $resultat = $GLOBALS['ins_db']->query ($requete) ;
+ if (DB::isError ($resultat)) {
+ die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+ if ($resultat->numRows() == 0) return true ;
+ return false ;
+}
+
+function envoie_passe()
+{
+ $headers['From'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ;
+ $headers['Subject'] = INS_NOUVEAU_MOT_DE_PASSE;
+
+ $nouveau_passe = create_new_random(6) ;
+
+ $body = INS_NOUVEAU_MOT_DE_PASSE_2.$nouveau_passe ;
+ $body .= INS_NOUVEAU_MOT_DE_PASSE_LAIUS ;
+
+ // modification du mot de passe dans la base
+ $requete = "update ".INS_ANNUAIRE." set ".INS_CHAMPS_PASSE."=MD5(\"$nouveau_passe\") where ".INS_CHAMPS_MAIL."=\"".$_POST['nom_d_utilisateur']."\"" ;
+
+ $resultat = $GLOBALS['ins_db']->query($requete) ;
+ if (DB::isError($resultat)) {
+ die ("Echec de la requete<br />".$resultat->getMessage()."<br />".$resultat->getDebugInfo()) ;
+ }
+ // On teste si l'email est présent dans la base
+ if ($GLOBALS['ins_db']->affectedRows() == 0) {
+ return '<div class="erreur">Il n\'y a pas d\'inscrit avec cet email</div>'."\n" ;
+ }
+
+ // création du mail
+ if (!mail ($_POST['nom_d_utilisateur'], $headers['Subject'], $body)) {
+ return 'erreur lors de l\'envoie de mail' ;
+ }
+
+ return "<div class=\"titre1_inscription\">".INS_MOT_DE_PASSE_ENVOYE_1." ".$_POST['nom_d_utilisateur']."</div>\n".
+ "<div><br>".INS_MOT_DE_PASSE_ENVOYE_2."</div>\n";
+
+}
+
+/**
+ *
+ * @global ins_db Un pointeur vers un objet PEAR::DB connecté
+ * @return
+ */
+function envoie_mail()
+{
+ include_once 'Mail/mime.php' ;
+ $crlf="\n";
+
+ $headers ['From'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ;
+ $headers ['Subject'] = INS_MAIL_COORD_SUJET ;
+ $headers ['Reply-To'] = INS_MAIL_ADMIN_APRES_INSCRIPTION ;
+
+ $mime = new Mail_mime($crlf);
+
+ $requete = 'SELECT *, '.INS_CHAMPS_LABEL_PAYS.' '.
+ 'FROM '.INS_ANNUAIRE.','.INS_TABLE_PAYS.' '.
+ 'WHERE '.INS_CHAMPS_MAIL.' = "'.$GLOBALS['AUTH']->getUsername().'"'.
+ 'AND '.INS_CHAMPS_ID_PAYS.'='.INS_CHAMPS_PAYS.' ';
+
+ $resultat = $GLOBALS['ins_db']->query($requete);
+ if (DB::isError ($resultat)) {
+ die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC) ;
+ $body = INS_MAIL_COORD_CORPS."\n" ;
+
+ $body .= "------------------------------------------\n";
+ $body .= INS_EMAIL.": ".unhtmlentities($ligne[INS_CHAMPS_MAIL])." \n" ;
+ $body .= INS_NOM.": ".unhtmlentities($ligne[INS_CHAMPS_NOM])." \n" ;
+ $body .= unhtmlentities(INS_PRENOM).' : '.unhtmlentities($ligne[INS_CHAMPS_PRENOM])." \n" ;
+ $body .= INS_PAYS." : ".unhtmlentities($ligne[INS_CHAMPS_LABEL_PAYS])." \n" ;
+ $body .= INS_ADRESSE_1." : ".unhtmlentities($ligne[INS_CHAMPS_ADRESSE_1])." \n" ;
+ $body .= INS_ADRESSE_2." : ".unhtmlentities($ligne[INS_CHAMPS_ADRESSE_2])." \n" ;
+ $body .= unhtmlentities(INS_REGION)." : ".unhtmlentities($ligne[INS_CHAMPS_REGION])." \n" ;
+ $body .= INS_CODE_POSTAL." : ".unhtmlentities($ligne[INS_CHAMPS_CODE_POSTAL])." \n" ;
+ $body .= INS_VILLE." : ".unhtmlentities($ligne[INS_CHAMPS_VILLE])." \n" ;
+ $body .= INS_SITE_INTERNET." : ".unhtmlentities($ligne[INS_CHAMPS_SITE_WEB])." \n" ;
+ $body .= "-------------------------------------------\n" ;
+
+ $mime->setTXTBody($body);
+
+ $body = $mime->get();
+ $headers = $mime->headers($headers);
+
+ $mail =& Mail::factory('mail') ;
+ $mail->send($ligne[INS_CHAMPS_MAIL], $headers, $body) ;
+
+ // Envoi du mail aux administrateur du site
+ if ($ligne[INS_CHAMPS_MAIL] != '') {
+ foreach ($GLOBALS['mail_admin'] as $administrateur) {
+ $mail->send($administrateur, $headers, $body) ;
+ }
+ }
+ return true ;
+}
+
+/**
+ *
+ *
+ * @return
+ */
+
+function message_inscription () {
+ return '<p>'.INS_MESSAGE_INSCRIPTION.'</p>' ;
+}
+
+/**
+ * Inscrit un adhérent à la lettre d'actualité par l'envoie d'un email subscribe / unsubscribe
+ * à la liste
+ *
+ * @global AUTH Un objet PEAR::Auth
+ * @return boolean true en cas de succès
+ */
+function inscription_lettre ($action) {
+ $mail = & Mail::factory ('smtp') ;
+ $email = $GLOBALS['AUTH']->getUsername() ;
+ $headers ['Return-Path'] = $email ;
+ $headers ['From'] = "<".$email.">" ;
+ $headers ['Subject'] = $action ;
+ $headers ['Reply-To'] = $email ;
+
+ $mail -> send ($action, $headers, "") ;
+ if (PEAR::isError ($mail)) {
+ echo '<p class="erreur">Le mail n\'est pas partie...</p>' ;
+ return false ;
+ }
+ return true ;
+}
+
+/**
+ * Génère un nom wiki valide à partir des données saisies par l'utilisateur
+ * fait une requete dans la base
+ *
+ * @return string un nom wiki valide
+ */
+function genere_nom_wiki ($nom, $prenom) {
+ // 1. suppression des espaces
+ $nom = trim ($nom) ;
+ $prenom = trim ($prenom) ;
+
+ // 2. suppression des caractères non ascii et ajout de la première lettre en majuscule
+ $nom = trim_non_ascii ($nom) ;
+ $prenom = trim_non_ascii ($prenom) ;
+
+ // Vérification
+ $nom_wiki = $nom.$prenom ;
+ if (!preg_match('/^[A-Z][a-z]+[A-Z,0-9][A-Z,a-z,0-9]*$/', $nom_wiki)) {
+ $nom_wiki = chr(rand(65, 90)).$nom_wiki.chr(rand(65, 90)) ;
+ }
+ return $nom_wiki ;
+}
+
+/**
+ *
+ *
+ * @return
+ */
+function trim_non_ascii ($nom) {
+ $premiere_lettre = true ;
+ for ($i = 0; $i < strlen ($nom); $i++) {
+ if (!preg_match ('/[a-zA-Z0-9]/', $nom[$i])) {
+// str_replace ($nom[$i], '_', $nom, 1) ;
+ }
+ // remplacement de la première lettre en majuscule
+ if (preg_match ('/[a-zA-Z]/', $nom[$i]) && $premiere_lettre) {
+ $nom[$i] = strtoupper ($nom[$i]) ;
+ $premiere_lettre = false ;
+ } else {
+ if (preg_match ('/[a-zA-Z]/', $nom[$i])) {
+ $nom[$i] = strtolower ($nom[$i]) ;
+ }
+ }
+ }
+ $nom = trim ($nom, '_') ;
+ return $nom ;
+}
+
+// For users prior to PHP 4.3.0 you may do this:
+function unhtmlentities ($string)
+{
+ $trans_tbl = get_html_translation_table (HTML_ENTITIES);
+ $trans_tbl = array_flip ($trans_tbl);
+ return strtr ($string, $trans_tbl);
+}
+
+/* ***********************************
+create_new_random($n,$type) permet de générer un nombre de caractères aléatoires.
+
+ENTREE :
+- $n : créer un 'mot' de $n caractères
+- $type : permet de définir la liste des caractères disponibles
+
+SORTIE : chaine de $n caractères pris dans une liste $type
+ *********************************** */
+
+function create_new_random($n,$type="")
+{
+ $str = "";
+
+ switch ($type){
+ //liste des caractères possibles en virant ceux qui se ressemblent (ijl1oO0)
+ // case "":
+ // {
+ // }
+ // break;
+
+ default:{
+ $chaine = "abcdefghkmnpqrstuvwxyzABCDEFGHKLMNPQRSTUVWXYZ23456789";
+ }
+ break;
+ }
+
+ srand((double)microtime()*1000000);
+ for($i = 0; $i < $n; $i++){
+ $str .= $chaine[rand()%strlen($chaine)];
+ }
+
+ return "$str";
+}
+
+//==============================================================================
+/** function nextId () Renvoie le prochain identifiant numérique libre d'une table
+*
+* On passe en paramètre le nom de la table et l'identifiant de la base selon PEAR DB
+*
+* @param mixed handler de connexion
+* @param string Nom de la table
+* return interger l'identifiant
+*/
+
+function nextId ($table, $colonne_identifiant, $db)
+{
+ $requete = "select MAX($colonne_identifiant) as maxi from $table" ;
+ $resultat = $db->query($requete) ;
+ if (DB::isError($resultat)) {
+ die (__FILE__ . __LINE__ . $resultat->getMessage() . $requete);
+ return $db->raiseError($resultat) ;
+ }
+
+ if ($resultat->numRows() > 1) {
+ return $db->raiseError("<br/>La table $table a un identifiant non unique<br/>") ;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
+ return $ligne->maxi + 1 ;
+}
+?>
/2014-08-05_centre/client/inscription/bibliotheque/inscription.fonct.php
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 2014-08-05_centre/client/inscription/langues/ins_langue_fr.inc.php
===================================================================
--- 2014-08-05_centre/client/inscription/langues/ins_langue_fr.inc.php (revision 0)
+++ 2014-08-05_centre/client/inscription/langues/ins_langue_fr.inc.php (revision 120)
@@ -0,0 +1,139 @@
+<?php
+/*vim: set expandtab tabstop=4 shiftwidth=4: */
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+// CVS : $Id: ins_langue_fr.inc.php,v 1.3 2005/03/21 16:50:45 alex Exp $
+/**
+* Fichier de traduction en français de l'application inscription
+*
+* Fichier de traduction en français de l'application inscription
+*
+*@package inscription
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Aucun
+*@copyright Tela-Botanica 2000-2004
+*@version $Revision: 1.3 $ $Date: 2005/03/21 16:50:45 $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+define ("INS_AJOUT_MEMBRE", "Remplissez le formulaire ci-dessous pour vous inscrire") ;
+define ('INS_MODIF_MEMBRE', 'Modification de vos informations');
+define ("INS_NOM", "Nom") ;
+define ("INS_NOM_REQUIS", "Indiquez votre nom.") ;
+define ("INS_PRENOM", "Pr&eacute;nom") ;
+define ("INS_PRENOM_REQUIS", "Veuillez indiquer votre prénom.") ;
+define ("INS_PAYS", "Pays") ;
+define ("INS_LANGUES_PARLES", "Langues parl&eacute;s") ;
+define ("INS_EMAIL", "Adresse mail") ;
+define ("INS_MOT_DE_PASSE", "Mot de passe :") ;
+define ("INS_REPETE_MOT_DE_PASSE", "R&eacute;p&eacute;ter le mot de passe :") ;
+define ("INS_ADRESSE_1", "Adresse ") ;
+define ("INS_ADRESSE_2", "Adresse (suite)") ;
+define ("INS_REGION", "R&eacute;gion / province") ;
+define ("INS_CODE_POSTAL", "Code postal") ;
+define ("INS_CODE_POSTAL_REQUIS", "Indiquez votre code postal.") ;
+define ("INS_VILLE", "Ville") ;
+define ("INS_VILLE_REQUIS", "Indiquez votre ville.") ;
+define ("INS_SITE_INTERNET", "Site web personnel") ;
+define ("INS_LETTRE", "Je souhaite recevoir la lettre d'actualité de Gentiana") ;
+define ("INS_ADHERENT", "Vous &ecirc;tes adh&eacute;rents de personnes morales (associations, institutions, entreprise... )") ;
+define ("INS_ANNULER", "Annuler") ;
+define ("INS_RETABLIR", "Rétablir") ;
+define ("INS_VALIDER", "Valider") ;
+define ("INS_MOTS_DE_PASSE_DIFFERENTS", "Les mots de passe sont diff&eacute;rents !") ;
+define ("INS_EMAIL_REQUIS", "Vous devez saisir un email.") ;
+define ("INS_MOT_DE_PASSE_REQUIS", "Vous devez saisir un mot de passe.") ;
+define ("INS_MAIL_INCORRECT", "L'email doit avoir une forme correcte, utilisateur@domaine.ext") ;
+define ("INS_MAIL_DOUBLE", "Cet email est d&eacute;j&agrave utilis&eacute; par quelqu'un d'autre") ;
+define ("INS_NOTE_REQUIS", "Indique les champs requis") ;
+define ("INS_ACCUEIL_INSCRIPTION", "Inscription au site de Gentiana") ;
+define ("INS_MODIFIER_INSCRIPTION", "Modifier votre inscription") ;
+define ("INS_SUPPRIMER_INSCRIPTION", "Supprimer votre inscription") ;
+define ("INS_MESSAGE_BIENVENU", "Vous &ecirc;tes inscrit &agrave; Gentiana") ;
+define ('INS_MESSAGE_EXPIRATION', 'Votre demande a expiré, veuillez ressaisir le formulaire d\'inscription.') ;
+define ("INS_FICHE_PERSONNELLE", "Fiche personnelle") ;
+define ("INS_DECONNEXION", 'D&eacute;connexion') ;
+define ("INS_INSCRIPTION", 'Inscription') ;
+define ("INS_MDP_PERDU_TITRE", "Perte ou oubli de mot de passe");
+define ("INS_MDP_PERDU_TITRE_RETENTER", "Vous pouvez aussi essayer à nouveau de vous identifier...");
+
+define ("INS_TEXTE_PERDU", "Si vous avez perdu votre mot de passe, veuillez cliquez sur le lien suivant :") ;
+define('INS_MDP_PERDU_OUBLI', 'perte de mot de passe');
+define ("INS_DEJA_INSCRIT", "D&eacute;j&agrave;  inscrit, identifiez-vous pour acc&eacute;der &agrave;  votre fiche personnelle :") ;
+define ("INS_ERREUR_LOGIN", "Utilisateur inconnu ou mot de passe erronn&eacute;") ;
+define ("INS_SI_PASSE_PERDU", "Si vous avez perdu votre mot de passe") ;
+define ("INS_INDIQUE_ADRESSE", "Indiquez dans le champs ci-dessous l'adresse email que vous avez utilisé pour vous inscrire au site.<br>\n".
+ "Un nouveau mot de passe vous sera envoyé.") ;
+define ("INS_ENVOIE_PASSE", "Envoi du mot de passe par mail") ;
+define ("INS_LAIUS_INSCRIPTION", "L'inscription est libre et gratuite !") ;
+define ("INS_LAIUS_INSCRIPTION_2", "Elle vous permet de :</p>
+<ul>
+ <li>saisir vos observations botaniques ;</li>
+ <li>consulter l'annuaire des personnes inscrites et pouvoir ainsi échanger des informations ;</li>
+ <li>accéder à certaines informations diffusées sur le site ;</li>
+ <li>recevoir une lettre électronique d'informations.</li>
+</ul>
+<p>Par la suite, il vous sera possible de modifier voire annuler votre inscription.<br />
+Seuls vos prénom, nom, ville, commune et pays apparaîtrons dans l'annuaire, les autres informations restent confidentielles (e-mail, adresse). </p>
+<p>Les informations recueillies sont nécessaires pour votre <strong>inscription au site de GENTIANA</strong>. Elles font l'objet d'un traitement informatique et servent à GENTIANA
+à vous contacter afin de valider les données botaniques ou les informations que vous donnez.</p>
+<p>En application des articles 39 et suivants de la loi du 6 janvier 1978 modifiée, vous bénéficiez d'un droit d'accès
+et de rectification aux informations qui vous concernent.</p>
+<p><strong>L'inscription à l'annuaire du site de GENTIANA implique que vous soyez d'accord pour que votre nom, prénom, ville,
+code postal et pays apparaissent en clair dans le site Internet de GENTIANA</strong>.");
+define ('INS_PIED_INFO', 'Si vous constatez des problèmes en utilisant cette application, veuillez contacter : ') ;
+define ('INS_PIED_MAIL', 'gentiana@gentiana.org') ;
+
+//============= L'envoie du mot de passe perdu par mail =============================
+define ("INS_NOUVEAU_MOT_DE_PASSE", "Votre nouveau mot de passe Gentiana") ;
+define ("INS_NOUVEAU_MOT_DE_PASSE_2", "Votre nouveau mot de passe : ") ;
+define ("INS_NOUVEAU_MOT_DE_PASSE_LAIUS", "\n\nCe mot de passe vous permet de modifier les informations\n".
+ "vous concernant dans le site de Gentiana.\n".
+ "http://www.gentiana.org/\n\n") ;
+define ("INS_MOT_DE_PASSE_ENVOYE_1", "Votre nouveau mot de passe a &eacute;t&eacute; ".
+ "envoy&eacute; &agrave; l'adresse") ;
+define ("INS_MOT_DE_PASSE_ENVOYE_2", "Relevez votre messagerie, notez votre nouveau mot de passe et identifiez vous à ".
+ "nouveau en allant à l'inscription. N'h&eacute;sitez pas à changer ce mot de passe ".
+ "pour en mettre un plus simple, tr&egrave;s facile &agrave; retenir." );
+
+//============= L'envoie d'un mail de confirmation ===================================
+// Ne pas utiliser d'entités HTML
+define ("INS_MAIL_INSCRIPTION_1", "Votre inscription a bien été prise en compte.\n".
+ "Voici les informations que nous avons enregistré :\n") ;
+define ("INS_MAIL_INSCRIPTION_2", "\nVous pouvez modifier votre inscription sur \nhttp://www.gentiana.org\n".
+ "rubrique Inscription.\n\n".
+ "L'équipe de Gentiana.") ;
+
+// Envoir d'un mail à la coordination
+define ("INS_MAIL_COORD_SUJET", "Un nouvel inscrit à Gentiana") ;
+define ("INS_MAIL_COORD_CORPS", "Un nouvel inscrit à Gentiana") ;
+
+define ("INS_MESSAGE_INSCRIPTION", "<h1 class=\"titre1_inscription\">Inscription à Gentiana</h1>\n".
+ "<p>Votre inscription a bien été prise en compte.</p>\n".
+ "<h2>Pour terminer votre inscription :</h2>\n".
+ "<p>Un message de confirmation vous a été envoyé à l'adresse e-mail que vous avez fournie.".
+ " Veuillez lire ce mail et en suivre les instructions pour activer complètement votre inscription.</p>") ;
+define ('INS_MESSAGE_DEBUT_MAIL_INSCRIPTION', 'Bonjour,'."\n\n".
+ 'Nous avons reçu une demande d\'inscription pour cette adresse mail.'."\n".
+ 'Pour confirmer, cliquer sur le lien ci-dessous.'."\n\n" ) ;
+define ('INS_MESSAGE_FIN_MAIL_INSCRIPTION', "\n\n".'L\'équipe de Gentiana') ;
+?>
\ No newline at end of file
/2014-08-05_centre/client/inscription/langues/ins_langue_fr.inc.php
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 2014-08-05_centre/client/inscription/configuration/ins_config.inc.php
===================================================================
--- 2014-08-05_centre/client/inscription/configuration/ins_config.inc.php (revision 0)
+++ 2014-08-05_centre/client/inscription/configuration/ins_config.inc.php (revision 120)
@@ -0,0 +1,149 @@
+<?php
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+/**
+* Fichier de configuration de l'inscription
+*
+* A éditer de façon spécifique à chaque déploiement
+*
+*@package inscription
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+*@copyright Tela-Botanica 2000-2004
+*@version $Id: ins_config.inc.php,v 1.3 2005/05/13 13:49:15 alex Exp $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+
+/**
+//=========================DEFINITION DE VARIABLES =================================
+* Définition des variables globales
+//==================================================================================
+*/
+
+$GLOBALS['AUTH'] =& $GLOBALS['_GEN_commun']['pear_auth'] ;
+
+/**
+//==================================== LES URLS ==================================
+* Constantes liées à l'utilisation des url
+//==================================================================================
+*/
+$GLOBALS['ins_url'] =& $GLOBALS['_GEN_commun']['url'] ;
+$GLOBALS['ins_db'] =& $GLOBALS['_GEN_commun']['pear_db'] ;
+define('INS_CHEMIN_FICHIER', 'client/inscription/') ;
+
+/**
+//==================================== CONSTANTES ==================================
+* Constantes des noms de tables et de champs dans l'annuaire
+//==================================================================================
+*/
+define('INS_ANNUAIRE', 'annuaire') ;
+define ('INS_CHAMPS_ID', 'a_id') ;
+define ('INS_CHAMPS_MAIL', 'a_mail');// Nom du champs mail
+define ('INS_CHAMPS_LOGIN', 'a_nom_wikini') ;
+define ('INS_CHAMPS_NOM', 'a_nom') ;
+define ('INS_CHAMPS_PRENOM', 'a_prenom') ;
+define ('INS_CHAMPS_PASSE', 'a_mot_de_passe') ;
+define ('INS_CHAMPS_PAYS', 'a_ce_pays') ;
+define ('PROJET_PRENOM', 'a_prenom') ; // Nom du champs prénom
+define ('PROJET_DPT', 'carto_DEPARTEMENT') ; // Nom de la table département
+define ('INS_TABLE_PAYS', 'carto_PAYS') ; // Nom de la table pays
+define ('INS_CHAMPS_ID_PAYS', 'CP_ID_Pays') ;
+define ('INS_CHAMPS_LABEL_PAYS', 'CP_Intitule_pays') ;
+define ('INS_CHAMPS_PAYS_LG', 'CP_Langue_intitule') ;// Langue de l'intitule du pays
+define ('INS_CHAMPS_CODE_POSTAL', 'a_code_postal') ;
+define ('INS_CHAMPS_VILLE', 'a_ville') ;
+define ('INS_CHAMPS_ADRESSE_1', 'a_adresse1') ;
+define ('INS_CHAMPS_ADRESSE_2', 'a_adresse2') ;
+define ('INS_CHAMPS_REGION', 'a_region') ;
+define ('INS_CHAMPS_DPT', 'a_numero_dpt') ;
+define ('INS_CHAMPS_SITE_WEB', 'a_site_internet') ;
+define ('INS_CHAMPS_TELEPHONE', 'a_telephone') ;
+define ('INS_CHAMPS_FAX', 'a_fax') ;
+define ('INS_CHAMPS_STRUCTURE', 'a_structure') ;
+define ('INS_CHAMPS_DATE', 'a_date_inscription') ;
+define ('INS_CHAMPS_LETTRE', 'a_lettre') ; // Le champs qui indique si l'usager est inscrit à la lettre d'inscription
+
+/**
+//==================================== PARAMETRAGE =================================
+* Pour régler certaines fonctionnalité de l'application
+//==================================================================================
+*/
+// Indique le type de cryptage du mot de passe à appliquer (doit être identique à PEAR_AUTH)
+define ('INS_MDP_CRYPTYPE', 'md5');// Choix : md5 seulement
+
+define ('INS_MAIL_ADMIN_APRES_INSCRIPTION', 'Association Gentiana <gentiana@gentiana.org>') ;
+define ('INS_MAIL_ADMIN_APRES_INSCRIPTION_SUJET', '[Gentiana] Inscription') ;
+
+define ('INS_UTILISE_LISTE', false);// Mettre à false si pas de liste d'actu
+define ('INS_MAIL_INSCRIPTION_LISTE', 'actu-subscribe@tela-botanica.org') ;
+define ('INS_MAIL_DESINSCRIPTION_LISTE', 'actu-unsubscribe@tela-botanica.org') ;
+
+// Liste des personne recevant le mail après inscription
+$GLOBALS['mail_admin'] = array ('Pierre SALEN <p.salen@gentiana.org>', 'Jean-Pascal MILCENT <jpm@tela-botanica.org>') ;
+
+/**
+//==================================== PARAMETRAGE =================================
+* Pour gérer la réécriture d'url de l'inscription
+* Cela nécessite une ligne dans le fichier .htaccess, par exemple
+* RewriteRule ^ins([0-9a-z]*)$ papyrus.php?menu=22&id=$1 [L]
+* Cela sert à racourcir l'URL de confirmation d'inscription
+//==================================================================================
+*/
+define ('INS_UTILISE_REECRITURE_URL', 1) ; // mettre à 1 si on souhaite utiliser la réécriture
+if (INS_UTILISE_REECRITURE_URL) {
+ define ('INS_URL_PREFIXE', '_ins_') ; // Indique le préfixe de l'url http://www.mondomaine.org/prefix____
+}
+
+define ('INS_UTILISE_STAT', false);
+define ('INS_TABLE_STATISTIQUE', 'ins_STATS') ;
+define ('INS_STATS_CHAMPS_DATE', 'IS_DATE') ;
+define ('INS_STATS_CHAMPS_ACTION', 'IS_ACTION') ;
+
+/* +--Fin du code ----------------------------------------------------------------------------------------+
+*
+* $Log: ins_config.inc.php,v $
+* Revision 1.3 2005/05/13 13:49:15 alex
+* ajout de la réécriture d'url et des statistiques
+*
+* Revision 1.2 2005/03/21 16:50:31 alex
+* mille et une corrction
+*
+* Revision 1.1 2005/03/04 10:39:41 tam
+* installation
+*
+* Revision 1.1 2004/07/06 15:42:17 alex
+* en cours
+*
+* Revision 1.4 2004/07/06 15:31:33 alex
+* en cours
+*
+* Revision 1.3 2004/06/30 10:00:53 alex
+* ajout de champs pour gérer les pays
+*
+* Revision 1.2 2004/06/18 09:20:54 alex
+* version initiale
+*
+*
+* +-- Fin du code ----------------------------------------------------------------------------------------+
+*/
+?>
\ No newline at end of file
/2014-08-05_centre/client/inscription/configuration/ins_config.inc.php
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 2014-08-05_centre/client/inscription/inscription.php
===================================================================
--- 2014-08-05_centre/client/inscription/inscription.php (revision 0)
+++ 2014-08-05_centre/client/inscription/inscription.php (revision 120)
@@ -0,0 +1,268 @@
+<?php
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+/**
+* Inscription
+*
+* Un module d'inscription, en général ce code est spécifique à un site web.
+*
+*@package inscription
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+*@copyright Tela-Botanica 2000-2004
+*@version $Id: inscription.php,v 1.3 2005/03/21 16:50:21 alex Exp $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | ENTETE du PROGRAMME |
+// +------------------------------------------------------------------------------------------------------+
+include_once PAP_CHEMIN_API_PEAR.'Mail.php' ;
+require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm.php' ;
+require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/checkbox.php' ;
+require_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm/password.php' ;
+/** Constante "dynamique" stockant la langue demandée par l'utilisateur pour l'application.*/
+define('INS_LANGUE', substr($GLOBALS['_GEN_commun']['i18n'], 0, 2));
+$fichier_lg = 'client/inscription/langues/ins_langue_'.INS_LANGUE.'.inc.php';
+if (file_exists($fichier_lg)) {
+ include_once $fichier_lg;
+ include_once 'client/inscription/langues/ins_langue_'.INS_LANGUE.'.inc.php';
+} else {
+ include_once 'client/inscription/langues/ins_langue_fr.inc.php' ;
+}
+include_once 'client/inscription/configuration/ins_config.inc.php';
+include_once 'client/inscription/bibliotheque/inscription.fonct.php';
+include_once INS_CHEMIN_FICHIER.'bibliotheque/inscription.class.php';
+
+// Ajout d'une feuille de style externe
+GEN_stockerStyleExterne ('inscription', 'client/inscription/inscription.css') ;
+
+// +------------------------------------------------------------------------------------------------------+
+// | LISTE de FONCTIONS |
+// +------------------------------------------------------------------------------------------------------+
+
+function afficherContenuTete() {
+ $retour = '<h1 class="titre1_inscription">Inscription à Gentiana</h1>';
+ return ;
+}
+
+// ================ Note =======================
+// La variable action sert à définir ce qui est demandé (inscription, modification d'inscription, suppression ...
+// Elle est appelé avec $_REQUEST car elle peut aussi bien venir d'un formulaire que d'un lien.
+// ==============================================
+
+
+/**
+ *
+ * @global AUTH Un pointeur vers un objet PEAR::Auth
+ * @global ins_url Un pointeur vers un objet PEAR::Net_URL
+ * @return string Le contenu de l'application inscription
+ */
+function afficherContenuCorps() {
+
+ $url = preg_replace ("/&amp;/", "&", $GLOBALS['ins_url']->getURL()) ;
+ // Attibution de l'action par défaut à effectuer.
+ if (!isset ($_REQUEST['action'])) {
+ $_REQUEST['action'] = 'inscription';
+ }
+ $res = '' ;
+ $est_loggue = true ;
+
+ // ... tentative de déconnection
+ if (isset ($_GET['logout']) && $_GET['logout'] == 1) {
+ $GLOBALS['AUTH']->logout() ;
+ $_POST['username'] = '' ;
+ $_POST['password'] = '' ;
+ //return AUTH_formulaire_login() ;
+ }
+
+ // ...supprimer l'inscription
+ if (isset ($_POST['supprimer'])) {
+ $mail_utilisateur = $GLOBALS['AUTH']->getUsername();
+ $id_utilisateur = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID) ;
+ $bool_inscription_lettre = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE);
+ $resultat = $GLOBALS['AUTH']->removeUser($mail_utilisateur) ;
+
+ if (PEAR::isError($resultat)) {
+ die ($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) ;
+ }
+
+ // Désinscription de la lettre d'info
+ if (INS_UTILISE_LISTE) {
+ if ($bool_inscription_lettre == 1) {
+ inscription_lettre(INS_MAIL_DESINSCRIPTION_LISTE) ;
+ }
+ }
+ $GLOBALS['AUTH']->logout() ;
+
+ // Ajout d'une ligne dans les statistiques
+ if (INS_UTILISE_STAT) {
+ $requete = 'INSERT INTO '.INS_TABLE_STATISTIQUE.' SET '.INS_STATS_CHAMPS_DATE.'=NOW(), '.INS_STATS_CHAMPS_ACTION.'="del"' ;
+ $resultat = $GLOBALS['ins_db']->query ($requete) ;
+ if (DB::isError ($resultat)) {
+ die ('Echec de la requete : '.$requete.'<br />'.$resultat->getMessage()) ;
+ }
+ }
+ //return AUTH_formulaire_login() ;
+ }
+
+ // ... envoie de mot de passe
+ if ($_REQUEST['action'] == 'sendpasswd') {
+ envoie_passe();
+ }
+
+ // ...oublie de mot de passe
+ if (preg_match('/^(?:mdp_oubli|sendpasswd)$/', $_REQUEST['action'])) {
+ return message_erreur(false);
+ }
+
+ // ...inscription dans la base si l'utilisateur clique sur le lien du mail
+ if ($_GET['action'] == 'ajouter' && isset($_GET['id']) && !$GLOBALS['AUTH']->getAuth()) {
+ $requete = 'SELECT id_donnees FROM inscription_demande WHERE id_identifiant_session="'.$_GET['id'].'"' ;
+ $resultat = $GLOBALS['ins_db']->query($requete) ;
+ if (DB::isError ($resultat)) {
+ die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
+ }
+ if ($resultat->numRows() == 0) {
+ return INS_MESSAGE_EXPIRATION;
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_OBJECT) ;
+ $donnees = unserialize (stripslashes($ligne->id_donnees)) ;
+ trigger_error(print_r($donnees, true), E_USER_WARNING);
+ // Ajout des données dans la base
+ insertion($donnees);
+
+ // On loggue l'utilisateur
+ $GLOBALS['AUTH']->username = $donnees['email'] ;
+ $GLOBALS['AUTH']->password = $donnees['mot_de_passe'] ;
+ $GLOBALS['AUTH']->login() ;
+
+ // Inscription à la lettre d'information
+ if (INS_UTILISE_LISTE) {
+ if (isset ($donnees['lettre'])) {
+ inscription_lettre(INS_MAIL_INSCRIPTION_LISTE) ;
+ }
+ }
+
+ // On supprime la demande d'inscription
+ $requete = 'DELETE FROM inscription_demande WHERE id_identifiant_session="'.$_GET['id'].'"' ;
+ $resultat = $GLOBALS['ins_db']->query ($requete) ;
+ if (DB::isError ($resultat)) {
+ die ("Echec de la requete : $requete<br />".$resultat->getMessage()) ;
+ }
+ // On envoi les mails d'information sur la nouvelle inscription.
+ envoie_mail() ;
+ }
+
+ // ... affichage d'une erreur en cas de pb
+ if (!$GLOBALS['AUTH']->getAuth() && $_REQUEST['action'] != 'inscription' && $_REQUEST['action'] != 'inscription_v') {
+ if (isset($_POST['username']) && $_POST['username'] != '') {
+ $res .= message_erreur();
+ }
+ }
+
+ // ... la personne est identifiée nous affichons ses informations
+ if ($GLOBALS['AUTH']->getAuth () && !isset($_POST['modifier']) && $_REQUEST['action'] != 'modifier_v') {
+ return info().bouton($url);
+ }
+
+ // ...tentative d'inscription ou Inscription structure
+ if (preg_match('/^(?:inscription|inscription_v|modifier_v)$/', $_REQUEST['action']) || isset($_POST['modifier'])) {
+ $action = preg_replace ("/&amp;/", "&", $GLOBALS['ins_url']->getURL()) ;
+ $formulaire = new HTML_formulaireInscription('formulaire_inscription', 'post', $action) ;
+ // Construction de la liste des pays
+ $liste_pays = new ListeDePays($GLOBALS['ins_db']) ;
+
+ if (isset($_POST['structure'])) {
+ $formulaire->formulaireStructure() ;
+ }
+
+ if (!isset($_POST['modifier'])) {
+ $GLOBALS['ins_url']->addQueryString('action', 'mdp_oubli');
+ $url_oubli = preg_replace ('/&amp;/', '&', $GLOBALS['ins_url']->getURL()) ;
+ $GLOBALS['ins_url']->removeQueryString('action');
+ $res .= '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
+ $res .= '<h2 class="titre2_inscription">'.INS_LAIUS_INSCRIPTION.'</h2>'."\n" ;
+ $res .= '<p>'.INS_LAIUS_INSCRIPTION_2.'</p>'."\n" ;
+ $res .= '<p>'.INS_TEXTE_PERDU.' <a href="'.$url_oubli.'">'.INS_MDP_PERDU_OUBLI.'</a></p>'."\n" ;
+ } else {
+ $formulaire->mode_ajout = false;
+ $res .= '<h1 class="titre1_inscription">'.INS_ACCUEIL_INSCRIPTION.'</h1>';
+ }
+
+ $formulaire->construitFormulaire($action, $liste_pays->getListePays('fr')) ;
+
+ if (isset($_POST['modifier'])) {
+ $formulaire->addElement ('hidden', 'action', 'modifier_v') ;
+ $formulaire->setDefaults(formulaire_defaults()) ;
+ if (INS_UTILISE_LISTE) {
+ if ($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE) == 1) {
+ $lettre = & $formulaire->getElement('lettre') ;
+ $lettre->setChecked(true) ;
+ }
+ }
+ } else if ($_REQUEST['action'] == 'inscription') {
+ $formulaire->addElement ('hidden', 'action', 'inscription_v') ;
+ $formulaire->setDefaults (array ('pays' => 'fr', 'asso' => 3, 'activite' => 3, 'niveau' => 4, 'lettre' => 1)) ;
+ if (INS_UTILISE_LISTE) {
+ $lettre = & $formulaire->getElement('lettre') ;
+ $lettre->setChecked(true) ;
+ }
+ } else if ($_REQUEST['action'] == 'inscription_v') {
+ if ($formulaire->validate()) {
+ $formulaire->process('demande_inscription', false) ;
+ return message_inscription() ;
+ }
+ } else if ($_REQUEST['action'] == 'modifier_v') {
+ if ($formulaire->validate()) {
+ if (INS_UTILISE_LISTE) {
+ $valeur_lettre = $GLOBALS['AUTH']->getAuthData(INS_CHAMPS_LETTRE) ;
+ }
+ $formulaire->process('mise_a_jour', false) ;
+ }
+ if (INS_UTILISE_LISTE) {
+ if (isset($_POST['lettre'])) {
+ if ($valeur_lettre == '') {
+ inscription_lettre (INS_MAIL_INSCRIPTION_LISTE) ;
+ }
+ } else {
+ if ($valeur_lettre == 1) {
+ inscription_lettre (INS_MAIL_DESINSCRIPTION_LISTE) ;
+ }
+ }
+ }
+ return info($GLOBALS['AUTH']->getAuthData(INS_CHAMPS_ID)).bouton($url);
+ }
+
+ return $res.$formulaire->toHTML() ;
+ }
+
+ return $res ;
+}
+
+function afficherContenuPied () {
+ $sortie = '<p id="ins_pied_page">'.INS_PIED_INFO.
+ '<a href="mailto:'.INS_PIED_MAIL.'">'.INS_PIED_MAIL.'</a>.'.
+ '</p>';
+ return $sortie;
+}
+?>
\ No newline at end of file
/2014-08-05_centre/client/inscription/inscription.php
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 2014-08-05_centre/client/inscription/inscription.css
===================================================================
--- 2014-08-05_centre/client/inscription/inscription.css (revision 0)
+++ 2014-08-05_centre/client/inscription/inscription.css (revision 120)
@@ -0,0 +1,57 @@
+/* Feuille de style inscription*/
+
+/* Pied de page */
+#ins_pied_page {
+ color:#A9A9A9;
+ font-size:10px;
+ padding-top:10px;
+ text-align:center;}
+
+/* Presentation de la fiche des inscrits */
+dt {
+ float:left;
+ width:10em;
+ text-align:right;
+ font-weight:bold;
+ padding-right : 10px;}
+.inscription_titre2 {
+ clear:both;
+ color:#996F18;;}
+
+/* Presentation du formulaire d'inscription */
+#formulaire_inscription fieldset {
+ border: 0;
+ margin: 0;
+ margin-top:10px;
+ padding: 0;}
+#formulaire_inscription legend {
+ line-height:1.3em;
+ margin:8px 0 4px 0;
+ font-size:15px;
+ color: #996F18;
+ font-weight:bold;}
+#formulaire_inscription ul {
+ list-style:none;
+ margin:0;
+ padding:0;}
+#formulaire_inscription li {
+ font-weight:bold;
+ margin:5px 0px;
+ clear:both;}
+.symbole_obligatoire {
+ color:#F00;
+ font-size:14pt;}
+.liste_inscription .inscription_label {
+ float:left;
+ width:10em;
+ text-align:right;
+ padding-right:10px;}
+.liste_inscription select {
+ margin-top:5px;}
+.groupe_formulaire .inscription_label1 {
+ float:left;
+ width:10em;
+ text-align:right;
+ padding-right:10px;}
+.inscription_label2 {
+ margin-left:10px;}
\ No newline at end of file
/2014-08-05_centre/client/inscription/inscription.css
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 2014-08-05_centre/client/annuaire/annuaire.css
===================================================================
--- 2014-08-05_centre/client/annuaire/annuaire.css (revision 0)
+++ 2014-08-05_centre/client/annuaire/annuaire.css (revision 120)
@@ -0,0 +1,27 @@
+/* Pied de page */
+#annuaire_pied_page {
+ color:#A9A9A9;
+ font-size:10px;
+ padding-top:10px;
+ text-align:center;}
+
+/* Parcourir l'alphabet */
+#annuaire_alphabet{
+ font-size:15px;}
+
+/* Tableau des inscrits */
+#annuaire {
+ border:1px solid;}
+#annuaire table{
+ width:100%;
+ margin:0;
+ border:none;}
+#annuaire tbody{
+ vertical-align:top;
+ min-height:1em;
+ height:200px;
+ overflow: auto;}
+#annuaire td{
+ border:none;}
+#annuaire tr{
+ height:1em;}
\ No newline at end of file
Index: 2014-08-05_centre/client/annuaire/bibliotheque/annuaire.fonct.php
===================================================================
--- 2014-08-05_centre/client/annuaire/bibliotheque/annuaire.fonct.php (revision 0)
+++ 2014-08-05_centre/client/annuaire/bibliotheque/annuaire.fonct.php (revision 120)
@@ -0,0 +1,304 @@
+<?php
+/*vim: set expandtab tabstop=4 shiftwidth=4: */
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+// CVS : $Id: annuaire.fonct.php,v 1.1 2005/03/24 08:46:07 alex Exp $
+/**
+* Fonctions du module annuaire
+*
+* Fonctions du module annuaire
+*
+*@package annuaire
+//Auteur original :
+*@author Alexandre Granier <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Aucun
+*@copyright Tela-Botanica 2000-2004
+*@version $Revision: 1.1 $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | ENTETE du PROGRAMME |
+// +------------------------------------------------------------------------------------------------------+
+
+
+
+// +------------------------------------------------------------------------------------------------------+
+// | LISTE de FONCTIONS |
+// +------------------------------------------------------------------------------------------------------+
+
+function AUTH_formulaire_login() {
+ $res = '';
+
+ $url = preg_replace ('/&amp;/', '&', $GLOBALS['ann_url']->getURL()) ;
+
+ $res .= '<p>'.ANN_IDENTIFICATION_PRESENTATION_XHTML.'</p>'."\n" ;
+
+ $form = new HTML_QuickForm ('inscription', 'post', $url) ;
+ $form->addElement ('text', 'username', ANN_EMAIL) ;
+ $form->addElement ('password', 'password', ANN_MOT_DE_PASSE) ;
+ $form->addElement('submit', 'valider', ANN_VALIDER);
+ $res .= $form->toHTML() ;
+
+ return $res;
+}
+
+/** function parcourrirAnnu () Affiche l'annuaire à partir d'une lettre
+*
+*
+*
+* @return string HTML
+*/
+function parcourrirAnnu() {
+
+ $res = '<p id="annuaire_alphabet">';
+
+ // Alphabet pour la rechercher par lettre du nom des inscrits
+ for ($i = 65 ; $i < 91 ; $i++) {
+ $GLOBALS['ann_url']->addQueryString('lettre', chr($i));
+ $url_lettre = $GLOBALS['ann_url']->getURL();
+ $GLOBALS['ann_url']->removeQueryString('lettre');
+ $res .= '<a href="'.$url_lettre.'">'.chr($i).'</a>&nbsp;'."\n";
+ }
+ $GLOBALS['ann_url']->addQueryString('lettre', 'tous');
+ $url_lettre = $GLOBALS['ann_url']->getURL();
+ $GLOBALS['ann_url']->removeQueryString('lettre');
+ $res .= '<a href="'.$url_lettre.'">'.'Tous'.'</a>'."\n";
+ $res .= '</p>'."\n";
+
+ // Si aucune lettre n'est sélectionnée, attribution de la lettre par défaut
+ if (empty($_REQUEST['lettre'])) {
+ $_REQUEST['lettre'] = ANN_LETTRE_DEFAUT;
+ }
+ // Une lettre est disponible...
+ $requete = 'SELECT '.ANN_ANNUAIRE.'.*, '.ANN_TABLE_PAYS.'.* '.
+ 'FROM '.ANN_ANNUAIRE.','.ANN_TABLE_PAYS.' '.
+ 'WHERE '.ANN_CHAMPS_PAYS.' = '.ANN_GC_ID.' ';
+ if ($_REQUEST['lettre'] != 'tous') {
+ $requete .= ' AND '.ANN_CHAMPS_NOM.' LIKE "'.$_REQUEST['lettre'].'%" ' ;
+ }
+ $requete .= 'ORDER BY '.ANN_CHAMPS_NOM;
+
+ $res .= listes_inscrit ($requete, $GLOBALS['ann_url']->getURL(), '', $GLOBALS['ann_db'], $niveau = 'pays').
+ carto_texte_cocher().
+ carto_formulaire();
+
+ return $res;
+}
+
+/**
+ * Renvoie le code HTML de la liste des inscrits
+ * en fonction de la requete passé en parametre
+ *
+ * @return Renvoie le code HTML de la liste des inscrits
+ */
+function listes_inscrit($requete, $url, $argument, &$db, $niveau = 'pays') {
+ $resultat = $GLOBALS['ann_db']->query($requete);
+ (DB::isError($resultat)) ? die($resultat->getMessage().'<br />'.$resultat->getDebugInfo()) : '';
+
+ if ($resultat->numRows() > 0) {
+ $res = '<form action="'.$url.'?mailer=1&amp;lettre='.$_REQUEST['lettre'].'" method="post" name="formmail">'."\n";
+ $res .= '<div id="annuaire" class="conteneur_table">
+ <table id="table_inscrit" class="table_cadre">
+ <colgroup>
+ <col />
+ <col />
+ <col />
+ <col />
+ <col />
+ <col />
+ <col />
+ </colgroup>
+ <thead class="entete_fixe">
+ <tr>
+ <th>&nbsp;</th>
+ <th>'.ANN_NOM.'</th>
+ <th>'.ANN_PRENOM.'</th>
+ <th>'.ANN_DATE_INS.'</th>
+ <th>'.ANN_CP.'</th>
+ <th>'.ANN_VILLE.'</th>
+ <th>'.ANN_PAYS.'</th>
+ </tr>
+ </thead>
+ <tbody class="contenu_deroulant">';
+ $indic = 0;
+ $i = 1;
+ while ($ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC)) {
+ if ($indic == 0) {
+ $res .= '<tr class="ligne_impaire">'."\n";
+ $indic = 1;
+ } else {
+ $res .= '<tr class="ligne_paire">'."\n";
+ $indic = 0;
+ }
+ $res.= '<td><input type="checkbox" name="select[]" value="'.$ligne[ANN_CHAMPS_MAIL].'" /></td>'."\n".
+ '<td>'.strtoupper($ligne[ANN_CHAMPS_NOM]).'&nbsp;</td>'."\n".
+ '<td>'.str_replace(' - ', '-', ucwords(strtolower(str_replace('-', ' - ', $ligne[ANN_CHAMPS_PRENOM])))).'&nbsp;</td>'."\n".
+ '<td>'.date('d m Y', strtotime($ligne[ANN_CHAMPS_DATE_INS])).'&nbsp;</td>'."\n".
+ '<td>'.$ligne[ANN_CHAMPS_CODE_POSTAL].'&nbsp;</td>'."\n".
+ '<td>'.strtoupper($ligne[ANN_CHAMPS_VILLE]).'&nbsp;</td>'."\n".
+ '<td>'.str_replace(' - ', '-', ucwords(strtolower(str_replace('-', ' - ', ($ligne[ANN_GC_NOM]))))).'&nbsp;</td>'."\n";
+ $res .= '</tr>'."\n";
+ }
+ $res .= '</tbody></table></div>'."\n";
+ } else {
+ $res = '<p class="information">'.'Aucun inscrit n\'a de nom commençant par '.$_REQUEST['lettre'].'</p>'."\n";
+ }
+ return $res;
+}
+
+
+function carto_formulaire() {
+ $res = '<h2 class="chapo">'.ANN_ENVOYER_MAIL.'</h2>'."\n";
+ $res .= '<p class="attention surveillance">'.ANN_SURVEILLANCE.'</p>'."\n";
+ $res .= '<p class="information message_a_tous">'.sprintf(ANN_MESSAGE_A_TOUS, '<a href="'.ANN_URL_ACTUALITE.'">'.ANN_ACTUALITE.'</a>').'</p>'."\n";
+ $res .= '<table>'."\n".
+ '<tr><td class="texte">'.ANN_SUJET.' :</td>'."\n".
+ '<td><input class="forml" type="text" name="titre_mail" size="60" value="'.$_POST['titre_mail'].'"/></td>'."\n".
+ '</tr><tr><td class="texte" valign="top">'.ANN_MESSAGE.'&nbsp;:&nbsp;</td>'."\n".
+ '<td><textarea class="forml" name="corps" rows="5" cols="60">'.$_POST['corps'].'</textarea></td>'."\n".
+ '</tr><tr><td></td><td align="center">';
+ $res .= '<input class="spip_bouton" type="submit" value="'.ANN_ENVOYER.'" />'."\n";
+ $res .= '</td>'."\n";
+ $res .= '</tr>'."\n";
+ $res .= '</table>'."\n";
+ $res .= '</form>'."\n";
+ return $res;
+}
+
+
+/** function carto_texte_cocher ()
+*
+*
+* @return string HTML
+*/
+function carto_texte_cocher() {
+ $res .= '<div class="texte">'.ANN_CHECK_UNCHECK."\n";
+ $res .= '&nbsp;<input type="checkbox" name="selecttotal" onclick="javascript:setCheckboxes(\'formmail\');"/>'."\n";
+ $res .= '</div>';
+ return $res;
+}
+
+
+/** envoie_mail()
+ *
+ *
+ * @return envoie l'email
+ */
+function envoie_mail($selection, $titre_mail, $corps) {
+ $requete = 'SELECT '.ANN_CHAMPS_MAIL.' '.
+ 'FROM '.ANN_ANNUAIRE.' '.
+ 'WHERE '.ANN_CHAMPS_ID.' = "'.$GLOBALS['AUTH']->getAuthData(ANN_CHAMPS_ID).'" ';
+ $resultat = $GLOBALS['ann_db']->query($requete);
+ if (DB::isError($resultat)) {
+ die($resultat->getMessage().'<br />'.$resultat->getDebugInfo());
+ }
+ $ligne = $resultat->fetchRow(DB_FETCHMODE_ASSOC);
+ $entete = 'From: <'.$ligne[ANN_CHAMPS_MAIL].">\n";
+
+ $corps .= "\n".ANN_PIED_MESSAGE;
+
+ $liste = '';
+ foreach ($selection as $key => $value) {
+ mail($value, $titre_mail, $corps, $entete);
+ $liste .= $value."\n";
+ }
+
+ $corps .= "\n----------------------------------------------------------------------------";
+ $corps .= "\n".ANN_MESSAGE_APPLI."\n" ;
+ $corps .= "\n".ANN_MESSAGE_ENVOYE_A." :\n $liste" ;
+
+ mail(ANN_MAIL_ADMIN, $titre_mail, $corps, $entete);
+
+ return '<div class="information">'.ANN_MAIL_ENVOYER.'</div>' ;
+}
+/** translittererVersIso88591()
+ *
+ * Convertit les caractères CP1252 (= ANSI) non présent dans l'ISO-8859-1 par un équivalant ressemblant.
+ *
+ * @return envoie l'email
+ */
+function translittererCp1252VersIso88591($str, $translit = true) {
+ $cp1252_entite_map = array(
+ '\x80' => '&#8364;', /* EURO SIGN */
+ '\x82' => '&#8218;', /* SINGLE LOW-9 QUOTATION MARK */
+ '\x83' => '&#402;', /* LATIN SMALL LETTER F WITH HOOK */
+ '\x84' => '&#8222;', /* DOUBLE LOW-9 QUOTATION MARK */
+ '\x85' => '&#8230;', /* HORIZONTAL ELLIPSIS */
+ '\x86' => '&#8224;', /* DAGGER */
+ '\x87' => '&#8225;', /* DOUBLE DAGGER */
+ '\x88' => '&#710;', /* MODIFIER LETTER CIRCUMFLEX ACCENT */
+ '\x89' => '&#8240;', /* PER MILLE SIGN */
+ '\x8a' => '&#352;', /* LATIN CAPITAL LETTER S WITH CARON */
+ '\x8b' => '&#8249;', /* SINGLE LEFT-POINTING ANGLE QUOTATION */
+ '\x8c' => '&#338;', /* LATIN CAPITAL LIGATURE OE */
+ '\x8e' => '&#381;', /* LATIN CAPITAL LETTER Z WITH CARON */
+ '\x91' => '&#8216;', /* LEFT SINGLE QUOTATION MARK */
+ '\x92' => '&#8217;', /* RIGHT SINGLE QUOTATION MARK */
+ '\x93' => '&#8220;', /* LEFT DOUBLE QUOTATION MARK */
+ '\x94' => '&#8221;', /* RIGHT DOUBLE QUOTATION MARK */
+ '\x95' => '&#8226;', /* BULLET */
+ '\x96' => '&#8211;', /* EN DASH */
+ '\x97' => '&#8212;', /* EM DASH */
+ '\x98' => '&#732;', /* SMALL TILDE */
+ '\x99' => '&#8482;', /* TRADE MARK SIGN */
+ '\x9a' => '&#353;', /* LATIN SMALL LETTER S WITH CARON */
+ '\x9b' => '&#8250;', /* SINGLE RIGHT-POINTING ANGLE QUOTATION*/
+ '\x9c' => '&#339;', /* LATIN SMALL LIGATURE OE */
+ '\x9e' => '&#382;', /* LATIN SMALL LETTER Z WITH CARON */
+ '\x9f' => '&#376;' /* LATIN CAPITAL LETTER Y WITH DIAERESIS*/
+ );
+ $translit_map = array(
+ '&#8364;' => 'Euro', /* EURO SIGN */
+ '&#8218;' => ',', /* SINGLE LOW-9 QUOTATION MARK */
+ '&#402;' => 'f', /* LATIN SMALL LETTER F WITH HOOK */
+ '&#8222;' => ',,', /* DOUBLE LOW-9 QUOTATION MARK */
+ '&#8230;' => '...', /* HORIZONTAL ELLIPSIS */
+ '&#8224;' => '+', /* DAGGER */
+ '&#8225;' => '++', /* DOUBLE DAGGER */
+ '&#710;' => '^', /* MODIFIER LETTER CIRCUMFLEX ACCENT */
+ '&#8240;' => '0/00', /* PER MILLE SIGN */
+ '&#352;' => 'S', /* LATIN CAPITAL LETTER S WITH CARON */
+ '&#8249;' => '<', /* SINGLE LEFT-POINTING ANGLE QUOTATION */
+ '&#338;' => 'OE', /* LATIN CAPITAL LIGATURE OE */
+ '&#381;' => 'Z', /* LATIN CAPITAL LETTER Z WITH CARON */
+ '&#8216;' => "'", /* LEFT SINGLE QUOTATION MARK */
+ '&#8217;' => "'", /* RIGHT SINGLE QUOTATION MARK */
+ '&#8220;' => '"', /* LEFT DOUBLE QUOTATION MARK */
+ '&#8221;' => '"', /* RIGHT DOUBLE QUOTATION MARK */
+ '&#8226;' => '*', /* BULLET */
+ '&#8211;' => '-', /* EN DASH */
+ '&#8212;' => '--', /* EM DASH */
+ '&#732;' => '~', /* SMALL TILDE */
+ '&#8482;' => '(TM)', /* TRADE MARK SIGN */
+ '&#353;' => 's', /* LATIN SMALL LETTER S WITH CARON */
+ '&#8250;' => '>', /* SINGLE RIGHT-POINTING ANGLE QUOTATION*/
+ '&#339;' => 'oe', /* LATIN SMALL LIGATURE OE */
+ '&#382;' => 'z', /* LATIN SMALL LETTER Z WITH CARON */
+ '&#376;' => 'Y' /* LATIN CAPITAL LETTER Y WITH DIAERESIS*/
+ );
+ $str = strtr($str, $cp1252_entite_map);
+ if ($translit) {
+ $str = strtr($str, $translit_map);
+ }
+ return $str;
+}
+?>
\ No newline at end of file
Index: 2014-08-05_centre/client/annuaire/langues/ann_langue_fr.inc.php
===================================================================
--- 2014-08-05_centre/client/annuaire/langues/ann_langue_fr.inc.php (revision 0)
+++ 2014-08-05_centre/client/annuaire/langues/ann_langue_fr.inc.php (revision 120)
@@ -0,0 +1,130 @@
+<?php
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+/**
+* Fichier de traduction en français de l'application inscription
+*
+* Fichier de traduction en français de l'application inscription
+*
+*@package vecam
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+*@copyright Tela-Botanica 2000-2004
+*@version $Id$
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+define ('ANN_NOM', 'Nom') ;
+define ('ANN_PRENOM', 'Pr&eacute;nom') ;
+define ('ANN_CP', 'Code Postal') ;
+define ('ANN_PAYS', 'Pays') ;
+define ('ANN_LANGUES_PARLES', 'Langues parl&eacute;s :') ;
+define ('ANN_EMAIL', 'E-mail :') ;
+define ('ANN_MOT_DE_PASSE', 'Mot de passe :') ;
+define ('ANN_REPETE_MOT_DE_PASSE', 'R&eacute;p&eacute;ter le mot de passe :') ;
+define ('ANN_RETABLIR', 'Rétablir') ;
+define ('ANN_VALIDER', 'Valider') ;
+define ('ANN_MOTS_DE_PASSE_DIFFERENTS', 'Les mots de passe sont diff&eacute;rents !') ;
+define ('ANN_EMAIL_REQUIS', 'Vous devez saisir un email.') ;
+define ('ANN_MOT_DE_PASSE_REQUIS', 'Vous devez saisir un mot de passe.') ;
+define ('ANN_MAIL_INCORRECT', 'L\'email doit avoir une forme correcte, utilisateur@domaine.ext') ;
+define ('ANN_NOTE_REQUIS', 'Indique les champs requis') ;
+define ('ANN_MODIFIER_INSCRIPTION', 'Modifier votre inscription') ;
+define ('ANN_SUPPRIMER_INSCRIPTION', 'Supprimer votre inscription') ;
+define ('ANN_MESSAGE_BIENVENU', 'Vous &ecirc;tes inscrit &agrave; I-Jumelage') ;
+define ('ANN_CLIQUEZ_LETTRE', 'Cliquez sur une lettre pour voir les inscrits.') ;
+define ('ANN_LISTE_INSCRIT_LETTRE', 'Liste des inscrits &agrave; la lettre') ;
+define ('ANN_TITRE', 'Annuaire du site de Gentiana') ;
+define ('ANN_IDENTIFICATION_PRESENTATION_XHTML',
+'<h2>S\'identifier et s\'inscrire</h2>
+<p>Afin de pouvoir consulter l\'annuaire, il est indispensable de s\'inscrire.<br />
+L\'inscription est libre et gratuite !<br />
+Elle vous permet de :</p>
+<ul>
+ <li>saisir des fiches pour nous informer ;</li>
+ <li>saisir vos observations botaniques ;</li>
+ <li>consulter l\'annuaire des personnes inscrites et pouvoir ainsi échanger des informations ;</li>
+ <li>accéder à certaines informations diffusées sur le site ;</li>
+ <li>recevoir une lettre électronique d\'informations.</li>
+</ul>
+<p>Par la suite, il vous sera possible de modifier voire annuler votre inscription.<br />
+Seuls vos prénom, nom, ville, commune et pays apparaîtrons dans l\'annuaire, les autres informations restent confidentielles (e-mail, adresse). </p>
+<p>Les informations recueillies sont nécessaires pour votre <strong>inscription au site de GENTIANA</strong>. Elles font l\'objet d\'un traitement informatique et servent à GENTIANA
+à vous contacter afin de valider les données botaniques ou les informations que vous donnez.</p>
+<p>En application des articles 39 et suivants de la loi du 6 janvier 1978 modifiée, vous bénéficiez d\'un droit d\'accès
+et de rectification aux informations qui vous concernent.</p>
+<p><strong>L\'inscription à l\'annuaire du site de GENTIANA implique que vous soyez d\'accord pour que votre nom, prénom, ville,
+code postal et pays apparaissent en clair dans le site Internet de GENTIANA</strong>.</p>
+
+<p>Si vous avez perdu votre mot de passe, veuillez cliquez sur le lien suivant : <a href="http://www.gentiana.org/page:inscrire?action=mdp_oubli">perte de mot de passe</a></p>
+<p>Déjà inscrit, identifiez-vous pour accéder à votre fiche personnelle :</p>');
+define ('ANN_TEXTE_PERDU', 'Si vous avez perdu votre mot de passe, indiquer '.
+ 'votre adresse email dans le champs login ci-dessus et cliquez sur "Valider"') ;
+define ('ANN_CHECK_UNCHECK', 'Cocher les cases pour s&eacute;lectionner votre destinataire ou cocher / d&eacute;cocher tout') ;
+define ('ANN_ENVOYER_MAIL', 'Envoyer un email') ;
+define ('ANN_MESSAGE_A_TOUS', 'Si vous souhaitez diffuser votre message à l\'ensemble des membres du réseau, vous pouvez rédiger un article dans %s.');
+define ('ANN_ACTUALITE', 'les actualités de Gentiana');
+define ('ANN_SURVEILLANCE', '<strong>Avertissement :</strong> la messagerie ci-dessous est destinée à vous permettre d\'échanger ' .
+ 'des messages entre inscrit au site de Gentiana, sans dévoiler les adresses email des inscrits. Afin de respecter la ' .
+ 'tranquillité de chacun, il est strictement interdit d\'utiliser cette messagerie interne pour faire des relances périodiques ' .
+ 'd\'informations ou des annonces publicitaires et commerciales. Une surveillance du contenu des mails échangés est effectuée ' .
+ 'par l\'Association Gentiana. Merci de votre compréhension.') ;
+define ('ANN_SUJET', 'Sujet') ;
+define ('ANN_MESSAGE', 'Message') ;
+define ('ANN_ENVOYER', 'Envoyer') ;
+define ('ANN_CLIC_CONFIRMATION', 'Cliquez sur OK pour confirmer') ;
+define ('ANN_PAS_D_INSCRIT', 'Pas d\'inscrit') ;
+define ('ANN_MAIL_ENVOYER', 'Votre mail a été envoyé') ;
+define ('ANN_DATE_INS', 'Date d\'inscription') ;
+define ('ANN_VILLE', 'Ville') ;
+define ('ANN_PIED_INFO', 'Si vous constatez des problèmes en utilisant cette application, veuillez contacter : ') ;
+define ('ANN_PIED_MAIL', 'accueil@gentiana.org') ;
+
+// ========================= Labels pour les mails ============================
+
+define ('ANN_VERIF_MAIL_COCHE', 'Veuillez cocher au moins un destinataire pour votre mail' );
+define ('ANN_VERIF_TITRE', 'Votre message doit comporter un titre <i>et</i> un corps') ;
+define ('ANN_MESSAGE_APPLI', 'Application ANNUAIRE');
+define ('ANN_MESSAGE_ENVOYE_A', 'Ce message a été envoyé à ');
+define ('ANN_PIED_MESSAGE', '---------------------------------------------------------------------------'."\n".
+ 'Ce message vous est envoyé par l\'intermédiaire du site Internet'."\n".
+ '(http://www.gentiana.org) de Gentiana, '."\n".
+ 'auquel vous êtes inscrit.'."\n".
+ 'D\'autres inscrits peuvent avoir reçu ce message.'."\n".
+ 'Ne répondez que si vous êtes concerné, ou si vous avez des'."\n".
+ 'informations utiles à transmettre au demandeur.' ) ;
+
+
+// ============================ Label de lannuaire Back ===========================
+define ('AM_L_TITRE', 'Chercher un adhérent') ;
+define ('AM_L_RECHERCHER', 'Rechercher') ;
+define ('AM_L_PAYS', 'Pays') ;
+define ('AM_L_NOM', 'Nom') ;
+define ('AM_L_PRENOM', 'Prénom') ;
+define ('AM_L_VILLE', 'Ville') ;
+define ('AM_L_DEPARTEMENT', 'Département') ;
+define ('AM_L_MAIL', 'Mail') ;
+define ('AM_L_COTISANTS', 'Cotisants') ;
+define ('AM_L_GRP_RES', 'Grouper les résultats') ;
+define ('AM_L_TOUS', 'Tous') ;
+define ('AM_L_MAIL_SELECTION', 'Envoyer un mail à la sélection') ;
+?>
\ No newline at end of file
/2014-08-05_centre/client/annuaire/langues/ann_langue_fr.inc.php
Property changes:
Added: svn:executable
## -0,0 +1 ##
+*
\ No newline at end of property
Index: 2014-08-05_centre/client/annuaire/configuration/ann_config.inc.php
===================================================================
--- 2014-08-05_centre/client/annuaire/configuration/ann_config.inc.php (revision 0)
+++ 2014-08-05_centre/client/annuaire/configuration/ann_config.inc.php (revision 120)
@@ -0,0 +1,94 @@
+<?php
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+/**
+* Fichier de configuration de l'annuaire
+*
+* A éditer de façon spécifique à chaque déploiement
+*
+*@package inscription
+//Auteur original :
+*@author Alexandre GRANIER <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+*@copyright Tela-Botanica 2000-2004
+*@version $Id: ann_config.inc.php,v 1.2 2005/03/08 09:43:34 alex Exp $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// Paramêtres indiquant que l'on est en français pourpermettre la mise en majuscule des caractères accentués
+setlocale(LC_CTYPE, 'fr_FR');
+
+/**
+//=========================DEFINITION DE VARIABLES =================================
+* Définition des variables globales
+//==================================================================================
+*/
+$GLOBALS['AUTH'] =& $GLOBALS['_GEN_commun']['pear_auth'] ;
+$GLOBALS['ann_db'] =& $GLOBALS['_GEN_commun']['pear_db'] ;
+
+/**
+//==================================== LES URLS ==================================
+* Constantes liées à l'utilisation des url
+//==================================================================================
+*/
+$GLOBALS['ann_url'] =& $GLOBALS['_GEN_commun']['url'];//l'url de base de l'application, un objet Net_URL
+ // Créer cet objet par $GLOBALS['ins_url'] = new Net_URL('http://....') ;
+define('ANN_URL_ACTUALITE', 'http://www.gentiana.org/page:20') ;
+/** Variable définissant la lettre par défaut du parcour alphabétique.*/
+define('ANN_LETTRE_DEFAUT', 'A') ;// une lettre de l'aphabet ou "tous"
+
+/**
+//==================================== LES CHEMINS =================================
+* Constantes définissant les chemins d'accé au différents fichiers inclus dans les
+* applications.
+//==================================================================================
+*/
+define('ANN_CHEMIN_APPLI','client/annuaire/');//le chemin vers l'application courrante
+define('ANN_CHEMIN_LIBRAIRIE', ANN_CHEMIN_APPLI.'bibliotheque/');//le chemin de la librairie de fichier php
+
+/**
+//==================================== CONSTANTES ==================================
+* Constantes des noms de tables et de champs dans l'annuaire
+//==================================================================================
+*/
+define ('ANN_ANNUAIRE', 'annuaire');
+define ('ANN_CHAMPS_NOM', 'a_nom'); // Nom du champs nom
+define ('ANN_CHAMPS_MAIL', 'a_mail'); // Nom du champs mail
+define ('ANN_CHAMPS_PRENOM', 'a_prenom'); // Nom du champs prénom
+define ('ANN_CHAMPS_ID', 'a_id'); // Nom du champs id
+define ('ANN_CHAMPS_DATE_INS', 'a_date_inscription');
+define ('ANN_CHAMPS_CODE_POSTAL', 'a_code_postal');
+define ('ANN_CHAMPS_VILLE', 'a_ville');
+define ('ANN_CHAMPS_PAYS', 'a_ce_pays');
+
+define ('ANN_TABLE_PAYS', 'carto_PAYS');
+define ('ANN_GC_ID', 'CP_ID_Pays');
+define ('ANN_GC_NOM', 'CP_Intitule_pays');
+
+define ('ANN_TABLE_DEPARTEMENT', 'carto_DEPARTEMENT') ;
+
+/**
+//==================================== CONSTANTES==================================
+* Constantes contenant des mails
+//==================================================================================
+*/
+define ('ANN_MAIL_ADMIN', 'Pierre SALEN <p.salen@gentiana.org>, Jean-Pascal MILCENT<jpm@tela-botanica.org>') ;
+?>
\ No newline at end of file
Index: 2014-08-05_centre/client/annuaire/annuaire.php
===================================================================
--- 2014-08-05_centre/client/annuaire/annuaire.php (revision 0)
+++ 2014-08-05_centre/client/annuaire/annuaire.php (revision 120)
@@ -0,0 +1,113 @@
+<?
+// +------------------------------------------------------------------------------------------------------+
+// | PHP version 4.1 |
+// +------------------------------------------------------------------------------------------------------+
+// | Copyright (C) 2004 Tela Botanica (accueil@tela-botanica.org) |
+// +------------------------------------------------------------------------------------------------------+
+// | This library is free software; you can redistribute it and/or |
+// | modify it under the terms of the GNU Lesser General Public |
+// | License as published by the Free Software Foundation; either |
+// | version 2.1 of the License, or (at your option) any later version. |
+// | |
+// | This library is distributed in the hope that it will be useful, |
+// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
+// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
+// | Lesser General Public License for more details. |
+// | |
+// | You should have received a copy of the GNU Lesser General Public |
+// | License along with this library; if not, write to the Free Software |
+// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
+// +------------------------------------------------------------------------------------------------------+
+/**
+* programme principal du module annuaire
+*
+* programme principal du module annuaire
+*
+*@package annuaire
+//Auteur original :
+*@author Alexandre Granier <alexandre@tela-botanica.org>
+//Autres auteurs :
+*@author Jean-Pascal MILCENT <jpm@tela-botanica.org>
+*@copyright Tela-Botanica 2000-2007
+*@version $Id: annuaire.php,v 1.4 2005/03/24 08:24:39 alex Exp $
+// +------------------------------------------------------------------------------------------------------+
+*/
+
+// +------------------------------------------------------------------------------------------------------+
+// | ENTETE du PROGRAMME |
+// +------------------------------------------------------------------------------------------------------+
+
+include_once 'client/annuaire/configuration/ann_config.inc.php' ;
+include_once ANN_CHEMIN_LIBRAIRIE.'annuaire.fonct.php' ;
+/** Constante "dynamique" stockant la langue demandée par l'utilisateur pour l'application.*/
+define('INS_LANGUE', substr($GLOBALS['_GEN_commun']['i18n'], 0, 2));
+$fichier_lg = ANN_CHEMIN_APPLI.'/langues/ann_langue_'.INS_LANGUE.'.inc.php';
+if (file_exists($fichier_lg)) {
+ include_once $fichier_lg;
+} else {
+ include_once ANN_CHEMIN_APPLI.'/langues/ann_langue_fr.inc.php' ;
+}
+include_once PAP_CHEMIN_API_PEAR.'HTML/QuickForm.php' ;
+
+// Ajout d'une feuille de style externe
+GEN_stockerStyleExterne ('inscription', 'client/annuaire/annuaire.css') ;
+
+/**
+ * Renvoie le code HTML de l'application
+ *
+ * @return string HTML
+ */
+function afficherContenuCorps () {
+ $res = '<h1 class="annuaire_titre1">'.ANN_TITRE.'</h1>'."\n";
+ if (!$GLOBALS['AUTH']->getAuth()) {
+ $res .= AUTH_formulaire_login();
+ } else {
+ // Le code javascript des cases à cocher
+ $java =
+ "function setCheckboxes(the_form)
+ {
+ var do_check=document.forms[the_form].elements['selecttotal'].checked;
+ var elts = document.forms[the_form].elements['select[]'];
+ var elts_cnt = (typeof(elts.length) != 'undefined')
+ ? elts.length
+ : 0;
+ if (elts_cnt) {
+ for (var i = 0; i < elts_cnt; i++) {
+ elts[i].checked = do_check;
+ } // Fin for
+ } else {
+ elts.checked = do_check;
+ } // Fin if... else
+ return true;
+ } // Fin de la fonction 'setCheckboxes()'";
+ GEN_stockerCodeScript($java) ;
+
+ $res .= '<h2 class="annuaire_titre2">'.ANN_CLIQUEZ_LETTRE.'</h2>'."\n";
+
+ // Nettoyage des variables du POST
+ $cles = array('corps', 'titre_mail');
+ foreach ($cles as $cle) {
+ if (isset($_POST[$cle]) && !empty($_POST[$cle])) {
+ $_POST[$cle] = translittererCp1252VersIso88591(stripslashes($_POST[$cle]));
+ }
+ }
+
+ // S'il y a un mail a envoyé, on l'envoie
+ if (isset($_POST['select']) && is_array($_POST['select'])) {
+ if (isset($_POST['corps']) && isset($_POST['titre_mail'])) {
+ $res .= envoie_mail($_POST['select'], $_POST['titre_mail'], $_POST['corps']) ;
+ }
+ }
+
+ $res .= parcourrirAnnu() ;
+ }
+ return $res;
+}
+
+function afficherContenuPied () {
+ $sortie = '<p id="annuaire_pied_page">'.ANN_PIED_INFO.
+ '<a href="mailto:'.ANN_PIED_MAIL.'">'.ANN_PIED_MAIL.'</a>.'.
+ '</p>';
+ return $sortie;
+}
+?>
\ No newline at end of file
Index: 2014-08-05_centre/ancien_site/bouton_over.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/bouton_over.gif
===================================================================
--- 2014-08-05_centre/ancien_site/bouton_over.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/bouton_over.gif (revision 120)
/2014-08-05_centre/ancien_site/bouton_over.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/Images/voeux3_2005 gentiana.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/Images/voeux3_2005 gentiana.jpg
===================================================================
--- 2014-08-05_centre/ancien_site/Images/voeux3_2005 gentiana.jpg (revision 0)
+++ 2014-08-05_centre/ancien_site/Images/voeux3_2005 gentiana.jpg (revision 120)
/2014-08-05_centre/ancien_site/Images/voeux3_2005 gentiana.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/Images/RBR_affiche_new_petit.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/Images/RBR_affiche_new_petit.jpg
===================================================================
--- 2014-08-05_centre/ancien_site/Images/RBR_affiche_new_petit.jpg (revision 0)
+++ 2014-08-05_centre/ancien_site/Images/RBR_affiche_new_petit.jpg (revision 120)
/2014-08-05_centre/ancien_site/Images/RBR_affiche_new_petit.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/Images/couverture atlas.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/Images/couverture atlas.jpg
===================================================================
--- 2014-08-05_centre/ancien_site/Images/couverture atlas.jpg (revision 0)
+++ 2014-08-05_centre/ancien_site/Images/couverture atlas.jpg (revision 120)
/2014-08-05_centre/ancien_site/Images/couverture atlas.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/Images/Point.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/Images/Point.jpg
===================================================================
--- 2014-08-05_centre/ancien_site/Images/Point.jpg (revision 0)
+++ 2014-08-05_centre/ancien_site/Images/Point.jpg (revision 120)
/2014-08-05_centre/ancien_site/Images/Point.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/Images/affiche_A3_vignet.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/Images/affiche_A3_vignet.gif
===================================================================
--- 2014-08-05_centre/ancien_site/Images/affiche_A3_vignet.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/Images/affiche_A3_vignet.gif (revision 120)
/2014-08-05_centre/ancien_site/Images/affiche_A3_vignet.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/Images/logo.jpg
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/Images/logo.jpg
===================================================================
--- 2014-08-05_centre/ancien_site/Images/logo.jpg (revision 0)
+++ 2014-08-05_centre/ancien_site/Images/logo.jpg (revision 120)
/2014-08-05_centre/ancien_site/Images/logo.jpg
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/tete_r8_c9.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/tete_r8_c9.gif
===================================================================
--- 2014-08-05_centre/ancien_site/tete_r8_c9.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/tete_r8_c9.gif (revision 120)
/2014-08-05_centre/ancien_site/tete_r8_c9.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/index.html
===================================================================
--- 2014-08-05_centre/ancien_site/index.html (revision 0)
+++ 2014-08-05_centre/ancien_site/index.html (revision 120)
@@ -0,0 +1,212 @@
+<HTML>
+<HEAD>
+<TITLE>Bienvenue sur le site de Gentiana !</TITLE>
+<script language="javascript">
+<!--
+
+function sommaire() {window.location.href="sommaire.html";s}
+
+function MM_findObj(n, d) { //v4.0
+ var p,i,x; if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
+ d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
+ if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
+ for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
+ if(!x && document.getElementById) x=document.getElementById(n); return x;
+}
+
+function MM_nbGroup(event, grpName) { //v3.0
+ var i,img,nbArr,args=MM_nbGroup.arguments;
+ if (event == "init" && args.length > 2) {
+ if ((img = MM_findObj(args[2])) != null && !img.MM_init) {
+ img.MM_init = true; img.MM_up = args[3]; img.MM_dn = img.src;
+ if ((nbArr = document[grpName]) == null) nbArr = document[grpName] = new Array();
+ nbArr[nbArr.length] = img;
+ for (i=4; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
+ if (!img.MM_up) img.MM_up = img.src;
+ img.src = img.MM_dn = args[i+1];
+ nbArr[nbArr.length] = img;
+ } }
+ } else if (event == "over") {
+ document.MM_nbOver = nbArr = new Array();
+ for (i=1; i < args.length-1; i+=3) if ((img = MM_findObj(args[i])) != null) {
+ if (!img.MM_up) img.MM_up = img.src;
+ img.src = (img.MM_dn && args[i+2]) ? args[i+2] : args[i+1];
+ nbArr[nbArr.length] = img;
+ }
+ } else if (event == "out" ) {
+ for (i=0; i < document.MM_nbOver.length; i++) {
+ img = document.MM_nbOver[i]; img.src = (img.MM_dn) ? img.MM_dn : img.MM_up; }
+ } else if (event == "down") {
+ if ((nbArr = document[grpName]) != null)
+ for (i=0; i < nbArr.length; i++) { img=nbArr[i]; img.src = img.MM_up; img.MM_dn = 0; }
+ document[grpName] = nbArr = new Array();
+ for (i=2; i < args.length-1; i+=2) if ((img = MM_findObj(args[i])) != null) {
+ if (!img.MM_up) img.MM_up = img.src;
+ img.src = img.MM_dn = args[i+1];
+ nbArr[nbArr.length] = img;
+ } }
+}
+//-->
+</script>
+<meta name="keywords" content="Gentiana, botanique, flore, nature, environnement, association, isère, scientifique">
+<meta name="description" content="Gentiana est une société botanique située à Grenoble, en Isère. Son but est de promouvoir et de développer l'étude des milieux naturels très riches du département">
+<script language="JavaScript">
+<!--
+<!--
+function MM_reloadPage(init) { //reloads the window if Nav4 resized
+ if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
+ document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
+ else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
+}
+MM_reloadPage(true);
+// -->
+
+function MM_timelineGoto(tmLnName, fNew, numGotos) { //v2.0
+ //Copyright 1997 Macromedia, Inc. All rights reserved.
+ var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,lastKeyFr,propNum,theObj;
+ if (document.MM_Time == null) MM_initTimelines(); //if *very* 1st time
+ tmLn = document.MM_Time[tmLnName];
+ if (numGotos != null)
+ if (tmLn.gotoCount == null) tmLn.gotoCount = 1;
+ else if (tmLn.gotoCount++ >= numGotos) {tmLn.gotoCount=0; return}
+ jmpFwd = (fNew > tmLn.curFrame);
+ for (i = 0; i < tmLn.length; i++) {
+ sprite = (jmpFwd)? tmLn[i] : tmLn[(tmLn.length-1)-i]; //count bkwds if jumping back
+ if (sprite.charAt(0) == "s") {
+ numKeyFr = sprite.keyFrames.length;
+ firstKeyFr = sprite.keyFrames[0];
+ lastKeyFr = sprite.keyFrames[numKeyFr - 1];
+ if ((jmpFwd && fNew<firstKeyFr) || (!jmpFwd && lastKeyFr<fNew)) continue; //skip if untouchd
+ for (keyFrm=1; keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]; keyFrm++);
+ for (j=0; j<sprite.values.length; j++) {
+ props = sprite.values[j];
+ if (numKeyFr == props.length) propNum = keyFrm-1 //keyframes only
+ else propNum = Math.min(Math.max(0,fNew-firstKeyFr),props.length-1); //or keep in legal range
+ if (sprite.obj != null) {
+ if (props.prop2 == null) sprite.obj[props.prop] = props[propNum];
+ else sprite.obj[props.prop2][props.prop] = props[propNum];
+ } }
+ } else if (sprite.charAt(0)=='b' && fNew == sprite.frame) eval(sprite.value);
+ }
+ tmLn.curFrame = fNew;
+ if (tmLn.ID == 0) eval('MM_timelinePlay(tmLnName)');
+}
+
+function MM_timelinePlay(tmLnName, myID) { //v1.2
+ //Copyright 1997 Macromedia, Inc. All rights reserved.
+ var i,j,tmLn,props,keyFrm,sprite,numKeyFr,firstKeyFr,propNum,theObj,firstTime=false;
+ if (document.MM_Time == null) MM_initTimelines(); //if *very* 1st time
+ tmLn = document.MM_Time[tmLnName];
+ if (myID == null) { myID = ++tmLn.ID; firstTime=true;}//if new call, incr ID
+ if (myID == tmLn.ID) { //if Im newest
+ setTimeout('MM_timelinePlay("'+tmLnName+'",'+myID+')',tmLn.delay);
+ fNew = ++tmLn.curFrame;
+ for (i=0; i<tmLn.length; i++) {
+ sprite = tmLn[i];
+ if (sprite.charAt(0) == 's') {
+ if (sprite.obj) {
+ numKeyFr = sprite.keyFrames.length; firstKeyFr = sprite.keyFrames[0];
+ if (fNew >= firstKeyFr && fNew <= sprite.keyFrames[numKeyFr-1]) {//in range
+ keyFrm=1;
+ for (j=0; j<sprite.values.length; j++) {
+ props = sprite.values[j];
+ if (numKeyFr != props.length) {
+ if (props.prop2 == null) sprite.obj[props.prop] = props[fNew-firstKeyFr];
+ else sprite.obj[props.prop2][props.prop] = props[fNew-firstKeyFr];
+ } else {
+ while (keyFrm<numKeyFr && fNew>=sprite.keyFrames[keyFrm]) keyFrm++;
+ if (firstTime || fNew==sprite.keyFrames[keyFrm-1]) {
+ if (props.prop2 == null) sprite.obj[props.prop] = props[keyFrm-1];
+ else sprite.obj[props.prop2][props.prop] = props[keyFrm-1];
+ } } } } }
+ } else if (sprite.charAt(0)=='b' && fNew == sprite.frame) eval(sprite.value);
+ if (fNew > tmLn.lastFrame) tmLn.ID = 0;
+ } }
+}
+
+function MM_initTimelines() { //v4.0
+ //MM_initTimelines() Copyright 1997 Macromedia, Inc. All rights reserved.
+ var ns = navigator.appName == "Netscape";
+ var ns4 = (ns && parseInt(navigator.appVersion) == 4);
+ var ns5 = (ns && parseInt(navigator.appVersion) > 4);
+ document.MM_Time = new Array(1);
+ document.MM_Time[0] = new Array(1);
+ document.MM_Time["ENT"] = document.MM_Time[0];
+ document.MM_Time[0].MM_Name = "ENT";
+ document.MM_Time[0].fps = 10;
+ document.MM_Time[0][0] = new String("behavior");
+ document.MM_Time[0][0].frame = 16;
+ document.MM_Time[0][0].value = "MM_timelineGoto('ENT','1')";
+ document.MM_Time[0].lastFrame = 16;
+ for (i=0; i<document.MM_Time.length; i++) {
+ document.MM_Time[i].ID = null;
+ document.MM_Time[i].curFrame = 0;
+ document.MM_Time[i].delay = 1000/document.MM_Time[i].fps;
+ }
+}
+//-->
+</script>
+</HEAD>
+<BODY bgcolor="#336633" text="#FFFF66" link="#CCFFCC" vlink="#CCCCFF" onLoad="MM_timelinePlay('ENT')">
+<p align="center">&nbsp;
+<p align="center"><OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
+ codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0"
+ ID=intro_gentiana WIDTH=550 HEIGHT=350 align="absmiddle">
+ <PARAM NAME=movie VALUE="intro_gentiana.swf">
+ <PARAM NAME=loop VALUE=false>
+ <PARAM NAME=quality VALUE=high>
+ <PARAM NAME=bgcolor VALUE=#FFFFFF>
+ <param name="SCALE" value="exactfit">
+ <EMBED src="intro_gentiana.swf" loop=false quality=high bgcolor=#FFFFFF WIDTH=550 HEIGHT=350 TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" align="absmiddle" scale="exactfit">
+ </EMBED>
+ </OBJECT>
+<table width="75%" border="0" align="center" cellspacing="0" cellpadding="0">
+ <tr>
+ <td colspan="3">
+ <center>
+ <p><font face="Arial, Helvetica, sans-serif" color="#FFFF99">Bienvenue
+ sur le site de Gentiana, soci&eacute;t&eacute; botanique dauphinoise</font>
+ <br>
+ </p>
+ </center>
+ </td>
+ </tr>
+ <tr>
+ <td colspan="3">
+ <center> <font face="Arial, Helvetica, sans-serif" size="2" color="#FFFF99">
+ <script language="JavaScript">
+date = new Date(document.lastModified);
+jour = date.getDate();
+mois = date.getMonth() + 1;
+annee = date.getYear();
+document.writeln("Dernière modification effectuée le " + jour +"/"+ mois +"/" + annee );
+ </script></font>
+ </center>
+ </td>
+ </tr>
+ <tr>
+ <td width="21%">
+ <center>
+ <a href="sommaire.html" onClick="MM_nbGroup('down','group1','Image1','bouton_over.gif',1)" onMouseOut="MM_nbGroup('out')" onMouseOver="MM_nbGroup('over','Image1','bouton_over.gif','',1)" target="_top"><img src="bouton.gif" width="87" height="49" name="Image1" border="0" lowsrc="bouton_over.gif"></a>
+ </center>
+ </td>
+ <td width="61%">
+ <center>
+ <p>&nbsp;</p>
+ <p>&nbsp;</p>
+ <p>&nbsp; </p>
+ </center>
+ </td>
+ <td width="18%">&nbsp;</td>
+ </tr>
+ <tr>
+ <td width="21%" height="20">&nbsp; </td>
+ <td width="61%" height="20">
+ <center>
+ </center>
+ </td>
+ <td width="18%" height="20">&nbsp; </td>
+ </tr>
+</table>
+</BODY>
+</HTML>
Index: 2014-08-05_centre/ancien_site/hiver/mil.hiver.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/hiver/mil.hiver.gif
===================================================================
--- 2014-08-05_centre/ancien_site/hiver/mil.hiver.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/hiver/mil.hiver.gif (revision 120)
/2014-08-05_centre/ancien_site/hiver/mil.hiver.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/hiver/haut hiver.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/hiver/haut hiver.gif
===================================================================
--- 2014-08-05_centre/ancien_site/hiver/haut hiver.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/hiver/haut hiver.gif (revision 120)
/2014-08-05_centre/ancien_site/hiver/haut hiver.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/hiver/bas hiver.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/hiver/bas hiver.gif
===================================================================
--- 2014-08-05_centre/ancien_site/hiver/bas hiver.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/hiver/bas hiver.gif (revision 120)
/2014-08-05_centre/ancien_site/hiver/bas hiver.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/corp som_r1_c3.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/corp som_r1_c3.gif
===================================================================
--- 2014-08-05_centre/ancien_site/corp som_r1_c3.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/corp som_r1_c3.gif (revision 120)
/2014-08-05_centre/ancien_site/corp som_r1_c3.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/tete_r1_c15.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/tete_r1_c15.gif
===================================================================
--- 2014-08-05_centre/ancien_site/tete_r1_c15.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/tete_r1_c15.gif (revision 120)
/2014-08-05_centre/ancien_site/tete_r1_c15.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/sommaire.html
===================================================================
--- 2014-08-05_centre/ancien_site/sommaire.html (revision 0)
+++ 2014-08-05_centre/ancien_site/sommaire.html (revision 120)
@@ -0,0 +1,17 @@
+<html>
+<head>
+<title>Untitled Document</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+</head>
+<frameset rows="103,*" cols="*" frameborder="NO" border="0" framespacing="0">
+ <frame name="haut" scrolling="NO" noresize src="tete.htm" marginwidth="0" marginheight="0" frameborder="NO" >
+ <frameset cols="147,613*" frameborder="NO" border="0" framespacing="0" bordercolor="#FFFFCC">
+ <frame name="gauche" noresize src="3%20palette%20som.htm" marginwidth="0" marginheight="0" scrolling="NO" frameborder="NO" bordercolor="#FFFFCC">
+ <frame name="droite" src="corp%20som.htm" frameborder="NO" marginwidth="10" marginheight="20" scrolling="AUTO" noresize bordercolor="#FFFFCC">
+ </frameset>
+</frameset>
+<noframes>
+<body bgcolor="#FFFFCC" text="#000000">
+</body>
+</noframes>
+</html>
Index: 2014-08-05_centre/ancien_site/tete_r3_c13.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/tete_r3_c13.gif
===================================================================
--- 2014-08-05_centre/ancien_site/tete_r3_c13.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/tete_r3_c13.gif (revision 120)
/2014-08-05_centre/ancien_site/tete_r3_c13.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/corp som_r3_c3.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/corp som_r3_c3.gif
===================================================================
--- 2014-08-05_centre/ancien_site/corp som_r3_c3.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/corp som_r3_c3.gif (revision 120)
/2014-08-05_centre/ancien_site/corp som_r3_c3.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/tete_r3_c14.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/tete_r3_c14.gif
===================================================================
--- 2014-08-05_centre/ancien_site/tete_r3_c14.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/tete_r3_c14.gif (revision 120)
/2014-08-05_centre/ancien_site/tete_r3_c14.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/tete_r7_c11.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/tete_r7_c11.gif
===================================================================
--- 2014-08-05_centre/ancien_site/tete_r7_c11.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/tete_r7_c11.gif (revision 120)
/2014-08-05_centre/ancien_site/tete_r7_c11.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/corp som_r5_c3.gif
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream
Index: 2014-08-05_centre/ancien_site/corp som_r5_c3.gif
===================================================================
--- 2014-08-05_centre/ancien_site/corp som_r5_c3.gif (revision 0)
+++ 2014-08-05_centre/ancien_site/corp som_r5_c3.gif (revision 120)
/2014-08-05_centre/ancien_site/corp som_r5_c3.gif
Property changes:
Added: svn:mime-type
## -0,0 +1 ##
+application/octet-stream
\ No newline at end of property
Index: 2014-08-05_centre/ancien_site/pages html/Fichier_telechargeable/annonce.pdf
===================================================================
--- 2014-08-05_centre/ancien_site/pages html/Fichier_telechargeable/annonce.pdf (revision 0)
+++ 2014-08-05_centre/ancien_site/pages html/Fichier_telechargeable/annonce.pdf (revision 120)
@@ -0,0 +1,6048 @@
+%PDF-1.1 +1 0 obj +<< +/Type /Catalog +/Pages 3 0 R +>> +endobj +2 0 obj +<< +/Creator(Adobe Photoshop 4.0) +/CreationDate( Thu Nov 08 13:16:39 2001
+ ) +/Producer(Adobe Photoshop for Windows) +>> +endobj +3 0 obj +<< +/Type /Pages +/Kids [4 0 R] +/Count 1 +>> +endobj +4 0 obj +<< +/Type /Page +/Parent 3 0 R +/MediaBox [ 0 0 595 841 ] +/Resources << +/XObject << /I1 5 0 R >> +/ProcSet [ /PDF /ImageC ] +>> +/Contents 6 0 R +>> +endobj +6 0 obj +<< /Length 7 0 R >> +stream +q +q +595 0 0 841 0 0 cm +/I1 Do +Q +Q +endstream +endobj +7 0 obj +34 +endobj +5 0 obj +<< +/Type /XObject +/Subtype /Image +/Name /I1 +/Filter [ /ASCII85Decode /DCTDecode ] +/Width 662 +/Height 935 +/BitsPerComponent 8 +/ColorSpace /DeviceCMYK +%BeginPhotoshop: 3846 +% 3842494D03E900000000007800280000004800480000000003180241FFF7FFF7 +% 0340024A2002057B03E00000000001680168000000000F780B45016C00320B45 +% 471800500001010100000001270F000100010000000000000000000000000000 +% 000000000000000100640000000000000000000010A201001100000045000000 +% 36506F203842494D03ED00000000001000500000000100020050000000010002 +% 3842494D040D000000000004000000783842494D03F300000000000800000000 +% 000000003842494D040A00000000000100003842494D271000000000000A0001 +% 00000000000000023842494D03F5000000000048002F66660001006C66660006 +% 000000000001002F6666000100A1999A0006000000000001003200000001005A +% 00000006000000000001003500000001002D000000060000000000013842494D +% 03F80000000000700000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF +% 03E800000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E80000 +% 0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800000000FFFF +% FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF03E800003842494D04080000 +% 00000010000000010000024000000240000000003842494D0414000000000004 +% 000000033842494D040C000000000D15000000010000004F00000070000000F0 +% 0000690000000CF900180001FFD8FFE000104A46494600010201004800480000 +% FFEE000E41646F626500648000000001FFDB0084000C08080809080C09090C11 +% 0B0A0B11150F0C0C0F1518131315131318110C0C0C0C0C0C110C0C0C0C0C0C0C +% 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C010D0B0B0D0E0D100E0E10 +% 140E0E0E14140E0E0E0E14110C0C0C0C0C11110C0C0C0C0C0C110C0C0C0C0C0C +% 0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0CFFC00011080070004F03 +% 012200021101031101FFDD00040005FFC4013F00000105010101010101000000 +% 00000000030001020405060708090A0B01000105010101010101000000000000 +% 00010002030405060708090A0B1000010401030204020507060805030C330100 +% 02110304211231054151611322718132061491A1B14223241552C16233347282 +% D14307259253F0E1F163733516A2B283264493546445C2A3743617D255E265F2 +% B384C3D375E3F3462794A485B495C4D4E4F4A5B5C5D5E5F55666768696A6B6C6 +% D6E6F637475767778797A7B7C7D7E7F711000202010204040304050607070605 +% 350100021103213112044151617122130532819114A1B14223C152D1F0332462 +% E1728292435315637334F1250616A2B283072635C2D2449354A3176445553674 +% 65E2F2B384C3D375E3F34694A485B495C4D4E4F4A5B5C5D5E5F55666768696A6 +% B6C6D6E6F62737475767778797A7B7C7FFDA000C03010002110311003F00F49C +% 6C7C41854BDF4B3F9B64FB01FCD1E4A9BB329B6C3FB370AAEA14B5A0BACA9F54 +% 07EBFA276E3EDB36ECFF00B715DC72CFB3637A8406369DC49300435ADDD3FD57 +% 3960E1331FEAFB9CFB5ADC8CDCBC8BEAC3A590D7B71EB2FB71F1296FF84FD18A +% FF00AEFBABDFFE053E344917EAFD18A09235E9D5DAC1B7A7668B3D3A1ACB6976 +% DBA9B18D163091B9BEA306EFA4D4635600D4D75731F44733B3C3F7933E8A8675 +% 7961CE6D8F61A4B4010E1FCF33D496EFFD16DB367FC6ACDBCF56FB75B58E9B5D +% 941B1A05F2D20D25D539DED75CDB1D6EE75F6BD9E8D55D7E97F87F537A005EC6 +% BCCAE748B3A68805B482EE346EBDD20DE9A4901B4C8716904347B87D26AC6AAB +% FAC0E691774DC56BC6D87087821CDBEE78DAEB98EADD55FF0066A5FEEB59BEDB +% EFAECB3D4FD146F3F589E2E737A3E3B9CE717B1AF7B417B0576EEAAC7B6D76CC +% 8B329943EA77F33F67C8FB3DBE9FA766423C27F787F8CAAF177455D3C890CA60 +% 44986F7E131ABA780E2594C30C38C37423B154FA6E3E45D6DE7A860D746D7B5D +% 8CF66D21CCE7DEC6D966CBEBB19B9EFF00E5D3FF000885D772FA6F4AAEABAFC6 +% 6DA6FB0B637B2B04904BA4E459536CDCDFF04851BA06D4E88ABA71E19499F26A +% 8DD4610A43C5756CDCC3BB6B623737BAE65DF5CFA1BA0BB05BFA473849B71F97 +% 1DCEF507ADBBF4BFBFFCDD8B64755C4BBEAD7ED56524628ABD5F4096CEC61F75 +% 7BB77A5EED9FBFB113094689BDD554FF00FFD0F4CC7AC5983482013E9340DC24 +% 6ACDBEE6FE737F92838D8CEC67173859639A3680DDA1BFCAD8D0EFCEFF008456 +% 308FEA947FC5B3FEA42235C4BDFE0D811E71B8FF00D526CB1C6531222E51D94C +% 6B6D8E79B2C01B12DADA0C900F2E7FF29D0AADBD29B6DCEB3ED794C2FD7632E2 +% 1A04EFF633FADFFA4FF9A51EADD3B0B2C36DCAA2BB5D582D63AC2E6C6EFA4D9A +% BF7D517747E8C3E9E2D7B46E27F4971320B9BFBBFD6520AEE7EC486E8E88C0D7 +% 0FB6E61DDDFD7748FEAA99E915FA4DAFED5940B493BFD77EE33B7E96BF47D89A +% ABFECCDAB12915B5B5B18CAD85D6180035AD1B9D5BBDBF9BB9CAD1397A436BF3 +% 1B9DCCFF00510B3DD5AB4DFD11AE739C33731BBBB0B9D0263E837F37E8A8DDD0 +% 31EF6EDBF2322D1B8BE2C7878DC6756B5EC7319B777B362BC0E5F7657E50E3E3 +% FD4FDD483B2E3DCCAF91C38F1DFF00312E23DD5AB9EDFAB5D341120900C90433 +% 5FE4BA2BDDB558B3A7D0CE963A734BBD121B56E265D0E706B8C91B7F3BF77623 +% 876647D0AC181A6E3CF7FCC4AE36FD9C121BEAEE66809DB3B9BF9D1B91B26ACF +% 553FFFD1F47C4B80C6A07FC133FEA5AAD56E064F724CFE45CED7D46A031D95BF +% 73B6561CDEE0EC6AD4C2BCB98D0793241F9CA57AA69B593BB68734F9400F3A9F +% F8AF72AED7BB6912F27FA99078F89FDFDA8D910EACFB4B8910486B9DA4CFF82F +% 72006174970304FB8065E35FA47F3BF7424A0CB73C12D3BE01207B6F3DC6EF70 +% 3FBBFCDA9D54DEE0D7B5FA120C3CDA0C0FE4BDEDFF00A4D4278D3690E25A4ED8 +% AEFE1DEE6EBBBDDFCBF7240125AE6830DEC597F204BF4739A8A53BB1F20F0F10 +% 07EF59E3A7F844863DE068E13C7D2B223FEDCFEAAAEFADA75DA76B401AD77931 +% 1EDDBEE0EFCDF729B6BA20FAAC793B8EDDADB4471F1F1FA48212FA1933B8399B +% 87D13364723E90F5112FDDE88E37EE67C27735009C3748D969060186DBD840ED +% FBA9DCEC7F45D531AF0D0585C0B5E0C170FA3BBDFF00E6A2370A7FFFD2B18792 +% F7BC9ADCD6DB4B1A4B608200DBA6B1F4A5759D22D63F1EA2D73BD42DF734EA07 +% F6D731D16EAF2BA85DD37EC6CAABACB29175ED2D7DD6307ABB6903FD1EEF51AF +% FF0044BAEE94D8C46000309683C469FBCEFF00BE2603AB21000DDB1998346506 +% 3EE682E68DAD77A8EAE013BA3F47FBDB7FAFFE8D546746E96C32D6B76D7F403B +% 2AD23701B40737739BEDFA0ADE5E3DB6BA973326EA7D3065B4B983713C6E16FE +% EFF5501B8767A46A3959CED258F36D21E276FBB731CDDFF436FE93FE114A09AF +% 9A96A6C2E9B5E1DC2EC7A8CBDA5A5C722C78DA5C1DFCDBE6BDDEDFA7F4FF0097 +% FA4B15D0FCA3CD4D113F9F33FBBF98B2EDC0B1D1B733398F6D62B03D5AA0CFA8 +% F163DB3EEB19EAFA7FF5BA7FE313B7A6BEE710ECECEAF4DA5DEAD407018CFE6F +% 77BFFF00462468EF243A45F973A54D239FA71F2FA2E4EE7E5098A9A60E9EFE47 +% F9BED5263EB6B1AD3607ED0017388924777447B94C1078331A14D522F532A27D +% 26F3A8DFDBC7E828D8EBCD44BD8D6B83D9B5A1C483EE6F2EDA3FEA55843BFE80 +% FEBB3FEADA88DC21FFD36E90DFB1BE9375F65FBF73ABDEE90DDDF499B7F90E5D +% C74AB83AA6BC341739A5BBB92403ECFE4AE0E9C8B01AF2D9E9119B15FAB5E80E +% D6FBC7A2EDBE85B5EDFD27FA6F59775D21F4FD9EA6FE706C38806493EEDFC7EF +% 7B13E66142A201D47A7BC65FBDFA4A1C567D4643FADFC1D4BF6B58D1222221C5 +% A3CBFC234FFD52AE3D2DAE7915B8B4C1F753AF773B77A63FCC45C9B7218D636A +% A2DB5AE12E7546A00104435CDC877BB7B777D1FF00C0FF009C4265F9AE2D0EC5 +% BD81DB4EE3E818DC6A63B781FE83D47D8EFF008AB7D3F53F449A069FDAB972EA +% 9C0B80AC9688FA54F007D2FA1FBA8A2BC5D00B6B639C371115CFEFEEFA3F9AAB +% 9C9CE0C7461E507412D1FAB924EB0CFA7B7F49FCE7FD5FA7ECF525565667AB5C +% E1E416B9C18E24E3C004EDF56CF4ECDDB6B9DDFA3DFEC4A8FF0022A6C81D2CC1 +% FD0127BFB3547A451B268DBB099964413C7E6A916B0E8403E4478A700010040F +% 0082D5D0EFFA03FAECFF00AB6A221DFF00407F5D9FF56D446E14FF00FFD4AB8F +% 5D8DC8C7A2C05B508F4E81B6449D8CFE6C7F3766E7B1BEFB2FAFF49EAFE62F41 +% C2736CB77580173840DBCC30ED1FF45DEC5E75D2ADBACCF61AAB1EAD6D66E688 +% 6BA59B9BBAC632C7575B18EB2AAFED1FA2AECFE75EBB7E9565EDA5BEBB0B5F53 +% 8EF69104104FA8D77E77E726449DBB281BB207D0747A0B99FA2074711ED12C0F +% 267C8B9A83E934B0D7E843B9DDE8B00F683B7D9BFF00AFB3FAE8AFADD654C21A +% 6C24ED70686186FF002BD58DC86EC579AE052416E8D96504C47B5BF4F6ED6A7A +% 546A6EE696E3C6D00106969D41FA4D87FB514E25659FA435FBA0B7756D0469FF +% 0055B50FECCE1C54E2D7407376D3C0F76D77BBF794ABC3F503B734D4DDC4B6B7 +% 32A304FE70D9BFFABFBE927EA90E1ED7EFA7D3ADFF00BDE98247F54EE6A21665 +% 498B5A01E0164C7FD348556889B9C44C9D1BC7EEFD14DE85FB48FB43A49D1DB5 +% B207F9A9212B43834071DCEEE622546FFA03FAECFF00AB6A9898D752A17FD01F +% D767FD5B511B843FFFD5CAC1A1F8DD59F8F455ECBDEDADCD91EEA9CE6E5DB46E +% 7FBBD3FD1FF8572F46E999946631BB5EF26E61DA6C03C4FB1B647E919B7D9BD7 +% 23D470F1C3999ACC8D99669AED6D75492080D6CB9CDDFBBF43EEFF00CFAB4FEA +% DBDF77A3EA6EAF1019F7C3449F79F4F79FF0B67B9475A929C42810757AF19031 +% 58CA9C581C1AE30F247B5858DDDEC6BFFD27B926F57C57445D46A48D2C27581F +% F07FCA50B1C18D6FA0F9026432D637E1FCE6FDCA62D786FF003963898E2CAA47 +% DFB54836495DDD5A96982FA443DD5B8EF74073237B1EEF4B6B1DEF67D24EDEA9 +% 8EE9736EA1CD1B468F3A1739B57B8EDFCEB1FB58862CB0077BEC3A87366DAA4C +% 876E67EEFB77FF00D062957639DF4ADB1A3510E7D5DC386EF6028D22943AC637 +% 0EB69692E0002F70304E9B9AEAC6D739AACD775D6D6DB2A6D6E63C0735C1E608 +% 239FE6D536597C12E7BC1DBA0F56A3AFEEFD1FFA6895E65CCAC02CDE67526DAE +% 6093AE9B1BEC4A954DBDD913A3191FD73FFA4D42C36FA5EF6B43B7B3680491F4 +% 9B13ED6A93326A7301739AC711AB770307C3451BAFA4B07E91BF4D9F9C3F79A9 +% 0DC29FFFD900 +%EndPhotoshop +/Length 8 0 R +>> +stream +s4IA>!"M;*Ddm8XA3^+p!!<2T!/(=R!WiE)!WiE)!WrK*!WrQ-!WiH,"U"r2"9\l4
+"U,&5"U,)7#6tM>#6kJ@$47(G$k*OQ$k*OQ$k*OQ$k*OF!s8W/"9f)9"pk_G#mq+P
+%LrsY%hB'W$k*OT%h&jT$k*OT$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQ$k*OQs1eUK
+#Qpt+Q374#!!3`5!tbP:&HMje!!E:#s24r4!!!!(!<E3%!<<*"z!!EH-!X8Z*#7(VC
+$NU5/!WrH(!<E3$z!!!$"!WrQ/"pYD?$4@CF!W`B*!X&Q/#6P)1"p/iH!Ws#;!!OMY
+0gSY@'4E))JJ9l%Ta)=;66j<EdGZks@dkX`K(1-S1fKR3Z=@sm2+/gUUU)ip<+L*g
+dc(NZK*_l%)2+5C7\mCldo@e7o&K>[eE$75FbQ*W[Dg\Xok&B%QDV+1f&lZb7os>I
+LR4pJa4KMK3(R.bG_h`c\B*=dpaJ3p=_W/<RAma=g$/;^3_ERjHA\/k]#ralq@N]/
+!W`?)"U,#4"p>26")S&=!YGM;+VHLq"]5qA+pN%<OYWW8n.`^di?LZ(;IX\:1F+eE
+JejMJ-)+nT_?Y/12<%#V(K?S(#mqLe-8n:2-Y.=!2tE`M_^Ht_j7@qgUpS(ijRd#+
+KpALB`RX)C7TO,EL6e^F`n';G7os>ILR4pJa4KMK3(R.bG_h`c\B*=dpc1oKBmGQ'
+WO^.(l1lei8m5tUMOLQVb1c.Ws4RG_"9AK(&H`UJ!!#4`oT/q/rrDuVYN/dIfAt2k
+SG`9F^XIXA]%?VUH]:;I?,Bc)0-)9D0hRAnW:8,Rp@m=ug?`_/QBt18LDYb,*&6b$
+F0!^QYtlGRMsq"8VLq$!rr>@trr>$\rrAA3J)!Zr!<0%^*^ASdm3hh-+7ui::.OA!
+Il4BGj.$%$,Q;[err=XDrrBQorrE"!_uB]a?eS<O83c?KqNq"B#P26G]Q8SLKR_8t
+J*"$ZpCb7@!35ho!6NjdPQ"GjqH3`nr_LB.f5kjMht/'6o8;H$D$U$XYQ"Uf^-D12
+rM9GnP_8t$5H0-rn:*=NgW)8O#Y4gP\,KStrr@$hrrDo!O8PPuBg:]%rrAmVl<iWM
++3f!fn]h(664s4t33E2\QI(-:9)enjX5j3[-XYS'q+*a7A,;Pf56pdcc+J+Id"Hno
+.t?Zf+86D_rrB(orrC0mp65JR&,KE-V>a9,r7?".*8gB3+7kBIq/$B8`391@lFoLR
+FoA-9!0i-8Q9V?uPOO&ZgtTk.r<Ppkij\nk62pq)/,oVGYE/UPIq_./+TDG<O6U*5
+r#a1-2Y#&l!(%:t!'%+\!1(u]ge.SHri>)Z!%2.-:\dOGl!sRVq*,,U?-U$'J'`ju
+c7=D+Zlf#T^]+;6q#:?9fCkF-;@iV+rh]Ti_>Mo+D]I[,+Wp<5ht_*orPYo>!:%9_
+noao,rrA:9rg#dJJ!9AO2;Hs,2uO"Pr8P3b>=&8hE@_%hqQGtXSUY?<jWOR'V2snK
+jSU+EG;f!9rr>@trr>$\rrAA3J)!Zr!<0%Zrr=ERg/%N85Nu\SQh`iNo3KVRF+;Pi
+J'KQojg6-('#4GHWqcSoak-6Mr_a:'=T5/r:Vlt\F)N&UoH>=JMVn5H#Q;TErrD>u
+5OrsqV#LFZKDq0$WIL-$Il6$9a#Er&8,VAUr`_\g!-'Oh!;`m[r1/=O5NO$f!2YbA
+?f_,,c$))9c2Rc1&cVhjXoABed!shCrrE&!j8T*,?eS<O83c?KqNq"B#P26G]Q8SL
+KR_8tJ*"$ZpCb7@!35ho!6NjdPQ"GjqH3`nr_LB.f5kjMht/'6o8;H$D$U$XYQ"Uf
+^-D12rM9GnP_8t$5H0-rn:*=NgW)8O#Y4gP\,KStrr@$hrrDo!O8PPuBg:]%rrAmV
+l<iWM+3f!fn]h(664s4t33E2\QI(-:9)enjX5j3[-XYS'q+*a7A,;Pf56pdcc+J+I
+d"Hno.t?Zf+86D_rrB(orrC0mp65JR&,KE-V>a9,r7?".*8gB3+7kBIq/$B8`391@
+lFoLRFoA-9!0i-8Q9V?uPOO&ZgtTk.r<Ppkij\nk62pq)/,oVGYE/UPIq_./+TDG<
+O6U*5r#a1-2Y#&l!(%:t!'%+\!1(u]ge.SHri>)Z!%2.-:\dOGl!sRVq*,,U?-U$'
+J'`juc7=D+Zlf#T^]+;6q#:?9fCkF-;@iV+rh]Ti_>Mo+D]I[,+Wp<5ht_*orPYo>
+!:%9_noao,rrA:9rg#dJJ!9AO2;Hs,2uO"Pr8P3b>=&8hE@_%hqQGtXSUY?<jWOR'
+V2snKjSU+EG;f!9rr>@trr>$\rrAA3J)!Zr!<0%Zrr=ERg/%N85Nu\SQh`iNo3KVR
+F+;PiJ'KQojg6-('#4GHWqcSoak-6Mr_a:'=T5/r:Vlt\F)N&UoH>=JMVn5H#Q;TE
+rrD>u5OrsqV#LFZKDq0$WIL-$Il6$9a#Er&8,VAUr`_\g!-'Oh!;`m[r1/=O5NO$f
+!2YbA?f_,,c$))9c2Rc1&cVhjXoABed!shCrrE&!j8T*,?eS<O83c?KqNq"B#P26G
+]Q8SLKR_8tJ*"$ZpCb7@!35ho!6NjdPQ"GjqH3`nr_LB.f5kjMht/'6o8;H$D$U$X
+YQ"Uf^-D12rM9GnP_8t$5H0-rn:*=NgW)8O#Y4gP\,KStrr@$hrrDo!O8PPuBg:]%
+rrAmVl<iWM+3f!fn]h(664s4t33E2\QI(-:9)enjX5j3[-XYS'q+*a7A,;Pf56pdc
+c+J+Id"Hno.t?Zf+86D_rrB(orrC0mp65JR&,KE-V>a9,r7?".*8gB3+7kBIq/$B8
+`391@lFoLRFoA-9!0i-8Q9V?uPOO&ZgtTk.r<Ppkij\nk62pq)/,oVGYE/UPIq_./
++TDG<O6U*5r#a1-2Y#&l!(%:t!'%+\!1(u]ge.SHri>)Z!%2.-:\dOGl!sRVq*,,U
+?-U$'J'`juc7=D+Zlf#T^]+;6q#:?9fCkF-;@iV+rh]Ti_>Mo+D]I[,+Wp<5ht_*o
+rPYo>!:%9_noao,rrA:9rg#dJJ!9AO2;Hs,2uO"Pr8P3b>=&8hE@_%hqQGtXSUY?<
+jWOR'V2snKjSU+EG;f!9rr>@trr>$\rrAA3J)!Zr!<0%Zrr=ERg/%N85Nu\SQh`iN
+o3KVRF+;PiJ'KQojg6-('#4GHWqcSoak-6Mr_a:'=T5/r:Vlt\F)N&UoH>=JMVn5H
+#Q;TErrD>u5OrsqV#LFZKDq0$WIL-$Il6$9a#Er&8,VAUr`_\g!-'Oh!;`m[r1/=O
+5NO$f!2YbA?f_,,c$))9c2Rc1&cVhjXoABed!shCrrE&!j8T*,?eS<O83c?KqNq"B
+#P26G]Q8SLKR_8tJ*"$ZpCb7@!35ho!6NjdPQ"GjqH3`nr_LB.f5kjMht/'6o8;H$
+D$U$XYQ"Uf^-D12rM9GnP_8t$5H0-rn:*=NgW)8O#Y4gP\,KStrr@$hrrDo!O8PPu
+Bg:]%rrAmVl<iWM+3f!fn]h(664s4t33E2\QI(-:9)enjX5j3[-XYS'q+*a7A,;Pf
+56pdcc+J+Id"Hno.t?Zf+86D_rrB(orrC0mp65JR&,KE-V>a9,r7?".*8gB3+7kBI
+q/$B8`391@lFoLRFoA-9!0i-8Q9V?uPOO&ZgtTk.r<Ppkij\nk62pq)/,oVGYE/UP
+Iq_./+TDG<O6U*5r#a1-2Y#&l!(%:t!'%+\!1(u]ge.SHri>)Z!%2.-:\dOGl!sRV
+q*,,U?-U$'J'`juc7=D+Zlf#T^]+;6q#:?9fCkF-;@iV+rh]Ti_>Mo+D]I[,+Wp<5
+ht_*orPYo>!:%9_noao,rrA:9rg#dJJ!9AO2;Hs,2uO"Pr8P3b>=&8hE@_%hqQGtX
+SUY?<jWOR'V2snKjSU+EG;f!9rr>@trr>$\rrAA3J)!Zr!<0%Zrr=ERg/%N85Nu\S
+Qh`iNo3KVRF+;PiJ'KQojg6-('#4GHWqcSoak-6Mr_a:'=T5/r:Vlt\F)N&UoH>=J
+MVn5H#Q;TErrD>u5OrsqV#LFZKDq0$WIL-$Il6$9a#Er&8,VAUr`_\g!-'Oh!;`m[
+r1/=O5NO$f!2YbA?f_,,c$))9c2Rc1&cVhjXoABed!shCrrE&!j8T*,?eS<O83c?K
+qNq"B#P26G]Q8SLKR_8tJ*"$ZpCb7@!35ho!6NjdPQ"GjqH3`nr_LB.f5kjMht/'6
+o8;H$D$U$XYQ"Uf^-D12rM9GnP_8t$5H0-rn:*=NgW)8O#Y4gP\,KStrr@$hrrDo!
+O8PPuBg:]%rrAmVl<iWM+3f!fn]h(664s4t33E2\QI(-:9)enjX5j3[-XYS'q+*a7
+A,;Pf56pdcc+J+Id"Hno.t?Zf+86D_rrB(orrC0mp65JR&,KE-V>a9,r7?".*8gB3
++7kBIq/$B8`391@lFoLRFoA-9!0i-8Q9V?uPOO&ZgtTk.r<Ppkij\nk62pq)/,oVG
+YE/UPIq_./+TDG<O6U*5r#a1-2Y#&l!(%:t!'%+\!1(u]ge.SHri>)Z!%2.-:\dOG
+l!sRVq*,,U?-U$'J'`juc7=D+Zlf#T^]+;6q#:?9fCkF-;@iV+rh]Ti_>Mo+D]I[,
++Wp<5ht_*orPYo>!:%9_noao,rrA:9rg#dJJ!9AO2;Hs,2uO"Pr8P3b>=&8hE@_%h
+qQGtXSUY?<jWOR'V2snKjSU+EG;f!9rr>@trr>$\rrAA3J)!Zr!<0%Zrr=ERg/%N8
+5Nu\SQh`iNo3KVRF+;PiJ'KQojg6-('#4GHWqcSoak-6Mr_a:'=T5/r:Vlt\F)N&U
+oH>=JMVn5H#Q;TErrD>u5OrsqV#LFZKDq0$WIL-$Il6$9a#Er&8,VAUr`_\g!-'Oh
+!;`m[r1/=O5NO$f!2YbA?f_,,c$))9c7A^Grr>#urr>%ITmg_U!7!h)B1qe&gM#Gg
+f!YBN1YVeVoo70R=p=$T](0RW?5(2X<MAc&cASt-!8rjkg&""@1XA51$o&S?)!kh"
+0g.RL6WQns&NGdlGP=1]qL!Aad/#X"!'^5Y!7l/=rrDO8o*>4aae"@h!!RrR!&k*X
+pg-2Z&TKWLh*1mHm2Yj0#DRNVEn9BGnAS\%K>SFIC(C_Qfr."f=(\,p`Eepb_\I?0
+%h)IkW&ue9At\Y4?(-D`'m==&$rtuZ4>BoLT^]p+RY/KmG%qNr<S=<50iqt[nAS\%
+K>SFIC(C_Qfr."f=(\,p`Eepb_\I?0%h)IkW&ue9At\Y4?(-D`'m==&$rtuZ4>BoL
+T^]p+RY/KmG%qNr<S=<50iqt[nAS\%K>SFIC(C_Qfr."f=(\,p`Eepb_\I?0%h)Ik
+W&ue9At\Y4?(-D`'m==&$rtuZ4>BoLT^]p+RY/KmG%qNr<S=<50iqt[nAS\%K>SFI
+C(C_Qfr."f=(\,p`Eepb_\I?0%h)IkW&ue9At\Y4?(-D`'m==&$rtuZ4>BoLT^]p+
+RY/KmG%qNr<S=<50iqt[nAS\%K>SFIC(C_Qfr."f=(\,p`Eepb_\I?0%h)IkW&ue9
+At\Y4?(-D`'m==&$rtuZ4>BoLT^]p+RY/KmG%qNr<S=<50ir"WIl;fIH2dli.Y$AH
+k+DQ?FWBap#Q?J?:];/crgUa!0DCS&T=DKts3^[%rr>7YrrCVie,KF;-M%K@8'.?Z
+rr<4Pq8b=@_X[X+dl=k+&+6'?0D:EQLHOo`CNEsfc&0+k.dYfgZXU)^MRtbrm+AAF
+@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*
+fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj9
+2Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<
+c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0^'cRm6^2rrD3s
+5O]oh:];QLNcmR<rr<oWVuH`)_uB^2i8`qunfIDs(MEcrqD\ES55G3YeoB1=!:V?,
+#Q707Sr*II"b6?h14R12rrCM-\=*rrT7ATgNdHODloAj&@]mt5]/D/*fW2>fY0Dj9
+2Ce(GX0Z9<`k-4oet"QO1`!4Hk&3?]!7"sO!7!ZO"&dXUI=(QDb$@q7@[c,EQ#CfF
+RjK.Ee(DPn6:Z"]#k6-;Zb;7`SU=ou3ce6rGfYXVom!Nnqj_rsYs@_]U$J8IaF8I+
+fB-/!ZnFRf2cKZ0jaT##DKL:t73j'jK=#4"8uUe0;E"\7?)-*+q`@_.2P>$M`bIl4
+rq>R$3?rNZ-<Z5Jfs+Uj`EerJG&113YubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F
+'m=Cnfs+Uj`EerJG&113YubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj
+`EerJG&113YubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113
+YubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG'URgBE%rZTD[]H
+rWI[arrBu=;9m4dJ)_c\rrD#&J*FTcI)"N*hL=JNs3pg'rr>7YrrCVie,KF;-M%K@
+8'.?Zrr<4Pq8b=@_X[X+dl=k+&+6'?0D:EQLHOo`CNEsfc&0+k.dYfgZXU)^MRtbr
+m+AADX@O:<2d7Oh49>H^3W&W[k0GFN+38qs^-^?3d/;kupZ>R?WGA]Tn@b*?Y7u2D
+7cST6p!EdZJ67[I*;$H0)0QKAI]lVLe3HeFNtemeSl1eAa6pP#[dLn;SA5C>N/]bk
+rN]5]+3a3L`?4onT-e7/PWJ9#2#dP->0!K9A'.i697<dH74OOfmd</YG@n?IM0WgV
+P>-dH1qen9&%28ECTp-.ALW[;+u"l9"Dj*(cu#(B)JJW,$MMDV5Na;A-U/qBk88T+
+q1\WiTO"0<CTtjSIS9ZH7h`^cW85QHO]u"bEZ&-sZ849k,VJu!!84:D5IERS[rU]?
+'*BjO?@8:'N[*hUGGH9d8=lsq`$Z/C?l_U?o8rc@rc0+[E^)nj!1]GI^ZBt-5,[Ll
+2X-[^PcoJ\q2+2d.;=s5]UC%%=_!$N7$C2^+=N(9'lr4^f82TfGI)^WS$4Y`["Btk
+__B,kH"8F&\DiU(7tr-hY^13;%,"*Y#uLhD?c(Ir%t'_grr>(.H0+M??Ru+[ra^IZ
+2s$s(r6;!AldG*fcF7Na6V,\"8Y/#W@a695X[Jls8;u[s<SF@2@H.:eJ^N"k:0u;q
+C4'`*R)d#_EoEPbN)Sn#Z"JfT/U%D*$-%O2LHE!,#Q3\ejM0l5Rs"0FGm@]i]CQMb
+Ai1GXFU^Ck^g1(56oS/Di=O*J1+)W416;c!c>U1?O6p8ldc/gBn\eq\?l6sWM!/N=
+-PiHu=W#*F*C;QhH(WF>9CbF6Ds&c4Bc^67>IjU%OSZZO2G8+2`4)QTSWGX(<eE4I
+9dZW8`SfdB:(_O*#$`Cf@EZp(;iFEdWKQm]lDt77Kg?Z0%u*uKA$K*I`EerJG&113
+YubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RP
+CfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RPCfT/n=(]EW
+Rh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RPCfT/n=(]EWRh^*_<S=WY
+B#S&F'm=l3o4S('-_L=rVu?gJC&\1O=&I8`Y^b[X[/U-bG^ntj*.5NX6f*:Om/PT3
+2u`kAq>UHGERXpfn0[`3rC=u$M>mPZJ,./@J&:aU!7Np;RLehYJ1pVVH\X`M3GW\F
+Y0Dj92Ce(GX0[8V<S/@>Qu1lLBr?t.@7HDoA72EnJum2:?iV.0OPJ!619S]2PCG9.
+00RR\\!Fb7WG*8T7iYiK=;`s=ko@/iYdnKVOWPJt`X5[q)"1/37ZT0hJX1u(S,>YM
+_t[#ih#]k4G#%WL0$6=3.d[!*rr>(Lq&B-^q4m%9bMPG]<8%8;r4r5ro*Y;G8+QUX
+4mX`I4GajuTqk7&NPa1c*.[g`Srs$Q!tT,<?'D>=l*^(:e*?HCEgJrt'n5Q*/UeR2
+$,fu)@.rr5kEc,J4F]AmorlFicQ,pLrc'=3^R'CuoB);VIU`-I>gf9s`nK@,/X3E5
+FXk]_.M*k&`uff:2`]W>-1&\54**b$g6a[(a"hYpKZPJ?.;o291@HtN(8F)8).#,;
+HB?s,Ved+D_>aKpl1pgNrrC>(J'JbcH"Y6cT9q?^;;0`2q;:c*_W0p*f/D?A<jrKF
+IRrcK"DGnUc$Aj[d,dI9HY9&#G2I(of`im?\DrK%*'uCb5Qf?\C_Lt?-SC]__iKTJ
+BTV%?Nd@&_9%./<:t7\OjfeL"HV_]nb53+sh,hkJl4X)\o=pYF+GHC8U5%3rE!,Q3
+VKZP>Wi\k<"55m4[DYEZ\Ec!TJIW:Nl1'\+8Ko8q^SVb.k@rpcB7kkcX&!!kQfLs(
+DNj8LrrC=Tq9M;$b!.LaMgGj!:K-h.O>Y*",.+W';NSQBe#cln,?S>C*-m/_#pPr?
+!470hPI'cC4dPFsJ;FQP-<M@n-=1gL\;;SR2rlW)%o8+Bb<BipCnCfn0DWJ70R7!U
+j7>e?EdRDAbaMRfq1JLuqM)8Mku5m05+1L!*j%!MP1AO#"Vrf9!+?j^^CpTihsa:V
+QlRhgBH\g6d=DTp&$Jho@r]/jhqh!h$&ITc,!B2Ec*0%hS5]!bno++)rc5pJ)pNm(
+Oe,430/!6.q)?O$HhecE^W]3t29dLI^.2P3aXg?F42DRI_m,)mA`ATC7WYEnIqWqQ
+a_2jM\]9Q+b75Of>W%Qp.+b<rn;]!ZDRbJ8a2Nf\Wb3jl!-Z'CUIkskEA.7N\!OJh
+,?"*tCHb\g:Zm4oGhMC)Q9'K(%Z[j[2$'J[\CUY\=tTGeX^6N4cPOFa^20HT&]p)'
+:>)J(;?22>K8P_T]/aV9+&.bZmRr"gZ`8IUq5a*;c$DL@TB7fgZlbSMO""9t09'Em
+@cu3<6'>q6i//e`m"K%81sKBBl*S$<hB&.FNtM:V"p"P1]jEH2j-7XX$M&@_0PWCK
+0<90"n>im)Y0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>f
+Y0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(G
+X0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k
+.dYfgZXU)^MRtbrm+AAFc+f`4q)nZWk7p5N,P+_1,.`eX4bNb7)',XT!"6^E!);D3
+jo4floCj&6s4-s)rr>7YrrCVie,KF;-M%K@8'.?Zrr<4Pq8b=@_X[X+dl=k+&+6'?
+0D:EQLHOo`CNEsfc&0+k.dYfgY`I!l@aVihUZt$No*1s"Q_N^u29)D@3MK!$[q_3S
+OK+rdbX/6RJWn'-H);_cE]X90!4(tLe*/euR?8kb^GZDhVr`kT-IBLYobg3&^5A29
+kKIMY$sK0ab.J9af(C-D9uM)O<;:c:a.&3]GMt^;^J+J'!&fPf5&ATd'0NQ4M!m/a
+0$-'MYJ81r1?QVK:Hn!)[*1+=A%.Ye]NbFDN:Em-2$/;-JUi))g67B:i(eg.IqL]3
+05J0H3<h\h2L`X#>JiM/]'bmpPpX$oV.c;[:n*k1?WBh1JO^q4W"0plDd);!@[WV(
+6qmU\#oif5iRHoWN_pt82nReWm83RcbA5aJj,R4gNd0YSQ8p0t_3)]:JHp-`i8nQ+
+)]a`I%'c0(,S3D*F')eQC%LXO2Q`cYlPGunhPY'F[D',JqL;\UGu1H2%ojlMBMDQk
+O^?^')5Ds4B./Ue6/b%"UWD$YHEoX"DU0YC?h9%6I%R.7Il'AN^G.r6r2l]"7t"t0
+Il6-<^6:.m0BtnNluqkg-.esbAQ`Ol#TjP"R]gS0b9i-=K1h@m`6TE!*sq'S`+1+]
+L^22FNgPAqOX%BJ4d;$R@uBWJAHIA_i%p&Er->h\d&1HBQ%o86iKOJUT^M.qf)3(Q
+q3OV$r4V5%3XoReeubOi<mpE_8I`TNN\;B0H@cW0Vk!DT,Eih#AJ,7nQndZY!?o=(
+%aPsjEW6$a&Un'^PO_f!rrA=VP1j6%q)s/g4.A=4h-S[WVY]Y&;YnRLHS7ThTk4;R
+R0l2A:JC3TTDnnC#.mCZq"<A44]HEX:mA\X+^B",\;*E0k0_3r/f8E^,NE$F^2W[6
+r8Hi"(:!#:c24+ahroM_Z*;W'MrYBll*hF/ER)VPL*sRGQ:YV6M$PaZ"B?G&(1Y!H
+K,:ro[gbNSAW66%RH2[Bb"&H-"@g:jpbLhiCf`[MC]fFTI.C(pIYm-dT/4gn!'-\O
+!'/0aO"T\2D:DH6^WU!-)k2Y\>oq!MNljf>ONB>B-uMmP_2=HA5OTQMoFBd.C5)cU
+f<]]Wb6U>Gas'-pOF:1d;$5l;TsKH*KV'>CLQLqBIY4ME:I>']SEg$.euc&3@bttK
+r1ACXQF=Pqg=MXu.mGYSAUXn,;g=6L)3"_Y$fZ6Pp##7%m7fP-^NVfU?\KK)3C*1q
+T9(>o3UkV[Om?<O)Q%j"b3fZ'=>)7<MWWLS(0b"1>Y,ot\E&[1UkT9e5oUg(3+X,+
+#U>]u&:9>!@.H5,$GrsjMRtbrm+AAEM4hXY/$]EC^W\hKo'X[i^[h`@qS'_JBtdj$
+ri6?n^:UC>khG\/MC0Y=2f-_)rm/ooaZ*]1i<`;0k.kt0ljRM]!G0qD=(>!)gn'pe
+%C;sA\Kj6p.dYfgZ\&"jrc/Chr`A\ca,tJG"3b,>hKH-4NpBd;hiot[e7@%eQrYQI
+R@YfYb_("=O>@?]c.?S$#,bOQC*u,g0hBf*Q<YV^jraaUpbcU,(nM9F/V2rj8cJcB
+rr=tT]D7rmC(2Odf!ISMbAtQ4QoqqA*AZYJ^U._)ZqSkB.-VjQ`T(Q/::Z/6?(%0J
+.#H([N;6'Y&rEg$k=LD*5(kea:G>unRh^*_<S7fP?_2@h-JeJicW<c:Il_A,H$`"=
+YVa.%>X^3BAh&:S*uJ1_Fp=NuILRo'iarla,K+N4bKWTZfe,$r8>f)B+,RCrJp+&)
+3:ch+T9jrUk>+$^)aR-Q7o8b0Tc]]q8F<&AD7.mW,Si`7]H6#DK03pIJG`A.B#dj'
+g%>&ZkFDn>qFC(;5Dm#RH$?KOKXj0*69&FUP10J(Nk>1#$t[Dm7U%qobS4%:.<(2K
+G&s9+rb2+Gc<bM^Q]lg1ot<]Ta>6>!k&"NYS8$AWaJ$kCGA#isGgq?i/U2AP*OB7T
+m(E12(pi=t*2&[WohbW4*g&\(:Gr:tOeL6nZ_OcJ<+`e3(<tOK4PB`73="[7.f%t&
+r4\66rc7UKR']"?cW&Gho%&^GUD+Kqk!aim7?M7c`;<KAF?Q8_k$;;\C1WkE(`=0O
+&ptse=4>AMcVYP&L5A)hV/YnooCKl@^R:ONVkId*=5%;U1c.e3^F&9t(HP<pD%)EC
+->Q8N7VKt^brIA!X`FlWq\N8cd>gnP1;u%HS-Y>i`"VXE)<8gVfGqe>&Y4\7N7uO6
+]+HfsE1E5rp-j0go"PiaYK'&C(<Zb"Rh^*_<S/ATiGG9WG6F]IdPq<*MCN:'N/a#E
+&_)C%.Ap]laI[J$5;<#/TR#9X>EmOJa(d7ajh-9$c6Hd`ocdj;S[of_eEM!fE_@0?
+15Vc2^'Fi_:<@BMY0Dj92Ce(GX0Z9<c&0+]RK@jk;!`i1pWqPHjj&D5Ab-_AqCl8Y
+C&\1sYo0D2[2Z'Gi:m<lHBPC+@D6>sGA$++%,MI4ii,S#k/&HCqZ11e#R`f`ah"`7
+Y>ArA@,Ek;a(1IgYubPV?(2RP6GG4epS.XjGs>X,c^=^:q?tK./]OX[8<!00BbE/;
+0LmA0a*c%Vk]:OG$ohqC='+Ghr<c'sbHbOZ^9fW;"U(j.^Ers\!$&ouC@$b%j3N$1
+jo1gJlC.!D4g(ieC"aT2eKAS`lWU.%gKTtD,)@8[-N0(@AEe2]F]1!65Tgq^CLPQK
+Jj9gfP.)q<Ah7M-FuptPc&0+^N<O8ld'S@AaB"kpbo9UQhjFED05]/$CVEiu2!n@C
+GCc(4_5Xg+!/b6!mL?f!;>,2'bKcG*E5OesGU>r_rDsoLq<W]%e$<hTX0Z9<c&0+k
+.dYfgZXU)^MRtbrm.5/Xci-^)q8H/-#lN0O!/ReQSW@1Y!6.NCrrBq*rrCMm3;J':
+LV3T)g&KY"2u`kAq>UHGERXpfn0[`3rC=u$M>mPZJ,./@J&:aU!7Np;RLehYJ1pVV
+H\X`M3GW\FY0Dj92Ce&c8HLCX+]VLJ3A^^GUn!:-lKn,nK5TS:raN;,`hj0:Q9JB_
+BDf3cgZ",n]shl,?FW<c.-"^YA;7-Noo?-j*Tj4dZa"a0rq^-UHGV'-R-m2b5N[&5
+f,KjdSNg>aGPSN>Br-8oq)\,hqR+f)a#oJhg#'`"8%6!^WfdKo!tE<oo`m4`&%-''
+3iM<d!TE6gO*dl"LU",X^62Z6P8idJ2@U+:k*P3hr8R_Vjqm-ePkt'agNg\%[W&]2
+=@W;&E>9dqQJI,OX%F./1c.:,[WX=5qEEDr_^iWdpRanK$%Bq34*UZ/gA]?JbUY;#
+\#8Monipln+IWDH6i<M;5;U@A+#nNMa'Q<?b?ei.mOg>%0dJRl[aHGl5c_FrOu-`m
+#E&[j\WbbD/LEV]*GNMQn`1[&^(LQgH\%pWq_MHVr3flFE_F<n"%)fS&8U0(.C'04
+:kQJ"H)k<DpQ[kpQ[W;nYI&^Rb8Ng8O*c?ca9GRS$6qe\*t'>fGQfR3_2d\5q\qoU
+qTU0$n]!pAb^ch7o&#l(::ml[7n'C)(.lMBLlI&B3A`uJ[-No/bA[3uO3L5.iLi^'
+^Ge?Qj]Lr!D_l_5f&Xk`'tm*j*+=@lL]HjV46AbGq[M6=8NH&*nE'W\$/FE\olg:f
+mE]H9<K([6).L?\f.VPYb=[X1%J/gCjmV=rQN$q@1^3J(Q)Bdn1u-8i+ItYE;HR+U
+4CjV_'Ob=dB8cJ]A`rF(k6?2#c@N/Cqj1f9et9A>GkuGSClQDO'Z_M/PMkNp)1YG&
+G3rb+<S=WY@lX4c5eqI+]=S>2cfIADq9qaGo%0?f>;%`,IoJ]TV5%cZ-,m7V#[e]4
+"<%gWn2Yra;4C4A3H33[,^E!-Jj)_i7(+;WZfUB5DuAO7>Q/bj0Cr99KC\'D?=<>"
+Q`O4.BC^ORQ*`UZ0&SK??+eP'1<dKMAm#B*!(/Blle]kc!5U?um&`cjCGP(nP:X/e
+N![XdH:2<meb=o,m^#ca4s6?q+EIpAkVJ7<q9/d<3F2Xb3OIXQr07,go&l6bSbYkq
+ZsPojpJ&'*\C/gD&?cKY2kbXd<IPX:'QQ.4.HR*RqAo9FfO9QB[FoT`eOU+9Yf`Y'
+/n.b<9X_[2OlT\.CtcTS;$&K@D1rF?gn0g[DZ$I5!1[9@]VGK,3:l8S1AT5Ql?@$@
+kT5!?Ssae@UYjqa2-//C;;c;#O-N+0o)Nk8p!5M_]dIK?9q+(WA&jMXlBXP1M4?j1
+.:WUDqU4?[T$DdFA((_C,d$B2T&<*k#pP$@;`G%ULg-7t5:!DVMRtbrlt^_>E(cA+
+4LP1h3ENt\^FR"t!&cs-rr@0RSS,4bj#W7t(=3!\9Zr?ohB7*)]u*!"2Ymo(&KDo'
+i8kSCG&mT_48J3fH7#\2Tm8$V_Y_XqnlgHbk>[oHhau75d(:EWmj8Z/8pHQ:31>GQ
+LoAPb4tI>dEb3B:]`CT#Q^@leb_@o/+%X/OfFRPro3u&jC*%<a`jt1m^Ee*faB)EN
+rb(fPbjeu3NqtD4dcT-K)C3\RJZ*7X'd8fR7qq[2dDm#)9Ou,,*Z5>)K1$8?`$-tK
+*CI0<B!n,7_1"iEk)96>3:lrsq7l$pc57o!ID=o/So=PYjU]TT\='^@;U\JTLog"t
+j&TB0m/m,h-K7"8<0<a'B_HUEhU:Y0G(!m\E5rsfKDWl5O#[Jq&>(^fFQ1=h`A/gG
+4^77,4gCmL>&L0J%]uVcgM0o?e3[AV;VGZM$">uN8Pk[`laSds$@)J/*-*#TM5h]N
+-bL6KN(@&d4RI"c!'(;Hrr>)QIs(Q=q(\gsA9gsE\=1Y;hXadTcuf0\Xk^rFdf-VZ
+96?'6=4Q5kP!0X+I-N$1(j)K,enSWK+TV"Nb&W;"K0BlEgR,SnboS.,]EO#EIIj65
+=FP4'5FH5gl/P7_I&#jX.,7=,k:\#pBX);5FL*?o$TFs/*3dYpBVg]V*-VMs28--F
+;sa)n)+Q#)K&Mk.@k.>cJ3b2b7C1$r:<+OoS[&DHkO4j%c`:iI5Ee<r=5TFW8!^>j
+dkuV8>\]S9*g82CZZ*F`YaXZaH_V6S?.B'dJH='lYT8FU"uo7YW/_b>![5H1bXCkF
+.MWQHYDTnKN2B+l/\5e(Pj0?[2gRr]q-A4,O!7s,HWg9do/n'qIkP)4g<2+:F"DMj
+$"T>;OuZF+jGjG?0^6*lI![NcQ@B,bB+.VriW+NQ?udA%c`$'M=ZHiO>/:.<QsZA(
+q01&kT9h`5nnnC,k#^\.rINJdI(Q:^6Xt&3C$at.][V'3O58PANX1JdZag9u5Yb+]
+HQ6cSSPFQp_h9'P.0=bT5DBc+2J[boQL(N4NsnIDA/k*_o*Q!X7t:>&5:CH"0>B4m
+1s<"NbJ$TZeLdrkr5ba1='&G6fHho4b9/_Q0G5gBbR3g,h5/egblOscJXZt1@4?a\
+h&kU7TiVgkf+!_Og>S?o_F5O6p;j+PYKP6UIW$=S^X#JUnq)5#\KLHs^87Srk"?a6
+9HR6(X!<^(?VigT6ssm\G<)qq0$Vc&m+icY7!FYcpa,7*;!IK*KP*J/D;Ea\;`hbV
++6OX?DjaD_Q]XCoWIAE-@7aia%8TODD^!SH[$qs/7h*`BV/c!/R7M6f<F/.gDBK;K
+O$VEN;5a?CX!DXm&u_4'N_)a2@gIZW*:21$*p2gW#UV:]\-h1ZjHlFE4Y'AOP*b'm
+='q0jDUA%=ea.[_F`S#j^8GHdgh5+f[5^`^[e6)qQNC"Nai="s]3e!mE;]&Y%7W?!
+'/0^MQUj^o%NW9Po_1)Z.eJilXRrh;"1E:"j\=%H'.;oYOZ\9r!'+K`bqGYNje@#e
+4]BHd:L,jNS*2DW_aQJZA.b6#Gng`<:D'/QHQQDE*J(+,HkXb-nm;MnX4%F:is_YB
+U^=/m!k?K2c(7r5mf*9WRIUlX^FM/l5;?iDPPQ'(C\`PE>8\-k/=OFFQ?lM+p8?ok
+e$2_H-pB7QR8if]q\ug3C%]!4%%<$gj+P.Fn/kWNrZC:S>>GgPQJd#nFPAlITDnmQ
+LR('OD>AD:cR*C6RGXDk2J]9fjc(m+D/JqB(NPYoC3TCu@^ScE&:fLZU#MkdRQUmd
+*;C#E5"OVI%112''SeCD&59hSgH!Z[M_5(CoGCTirrCAn=s#\:^-qnNr3a9:X7HRb
+S`0-gTdBZGX.sEr&ZKr\LJYG=,Iu_?/5jKaJ36CbA_N0`J^_e>UX'rKEW'>j;4IjI
+UDXO$hI926L-p>D'O&d4k79_)DkHjHccTf`PZJ/SYEliRFRLcA1"_k3Q)(WR].sEO
+`mG8=#98P@:5:bkS_<iafik+m&LWJPr"Ih1H$0&o%&Mqa>o-=U6X98l^%m6BXYRf;
+G5=_j/u,UqZX'nQS,FXU)b;gA.A@(nNq64bV_1b5&OtmG8,s"[/Z7(^kJo-Ais7os
+1eF&,@L(aWFL[)L]%dJbHhk:PH)&Vj@Jmh1LQ\f&L$.>G=Bb#(BlA22ULe_J?G")a
+h3I=VJj:WAOk#Rs9f=,HQZeF%ra/A/?7Ci#Ak[*$AJp"/%&/'qkX]1iP'BNlm,qPB
+r8acDI.&]&Vg_]r9^7(Iebl>JC76fDc-E;&V.nM!Vd2Hs&$Ja0-'iMAU;\#`MFXVg
+:_))Sm+aEsFde+qN1h--e>-\(&M8MP;*6,FNPVZ2)2uV/>4+TMe%[L7!&n`/0m(_t
+RJagLjW?C+*qAmK4*`>U0q53OV1`)D8Kh]+BVpW=`@;c[4cM_XG,Jh\d:C6"j#hU;
+Q8ut[A\B-m&7Tf*mL*hd#t3Z*d@r(D)K4g%PG%i:dQ]hk_[O7`o%'e<a*f"rBleH.
+\<+Z5U_1I.I5J6,&J.p)0HS3`:UElL&/3/taYWu!jW]!Oe?P$)n-O-DZ7<V\J"*\,
+QQBkj^ZQKBlQ7OmD^FQ"k*Gl'gS,Jp/s9@^[0OX%AmsUmfs!VtTfL,a)XLAC:CbdE
+"nLAIe(n>F-U)-(2biP"XZuF6_bfp5jBn?SbEjs<rcm>R=R#O=4FHemI:7,CY;$*=
+'LBZkmW0:pKpFalR!=0C5pAk2QOZRHgY]u"#!Orm2>&hjYK\^b>Q._'?hpVGpNgYe
+]sj9.>4uek#o5NJ<FoJdmL"U:=+%pPT$EsAlLF,3C0;!MCurPIH_#g3R6R2[GNIqa
+QL3\Y[1>4la3N,&D^BZB7hM6X6=bmH1NStI-t.Z;.;"]oT^a99\$GlXHK."'`uZcu
+k;eaD&Tg#7A5>b7'BMKaSk]hTZ?eD4EZLtTHhi:fo08R(X80I)?$H*O5Fl]+U#bTi
+4\jU4dVeOK1lGj$e[!3Go=CpnejSNi+^VcmAkp7aQNZnno>`i//odjWEKB_dA3Ef]
+M'NPO%"(td"Mkl5.@uN#,Q^C@l8+q"!Shf,jAB\Q8*5$Xk*,UW\i-.%D+Dk-Dt@N.
+CZO@tBS_gd)N:pS3LG,P*,re&OO?iJ.Oaa`!SV^(Aku`FG_S>*pRXr`"@;b`8Ne6u
+-%t>([o2S`O8S&TjsT;WVtkgXU\X*D1JmXJL8j<r/,`\rG'_\n[:sO#XkC3gjbM9M
+*aErE<-@7eW9^"@ZCRJ[L:kh:Xtu:sB(YT<"TIgj_d\GrOgBt;;D8/=[i]s)D-Zap
+SUC%l>oQk'61RP-L$,#qT%E:pHE?l7qG*5jKus[mmU7WYa,)o'M5W@B.Pln0BlM68
+Z=_6&h&8&=]teLVOE.-fj=RG@q.]Z1rd23INe+;-<pRk6GPo4eK%nOV=Lt(SV,b0\
+lP>g&[nuu9_`W)$e5?PqPS'4)Ve?!(33kkjabqRWaB7M<;':c"/1#Le&D7c8rrC4!
+bSu&V%j?46c^(#1\ja)r/Y:rR2L-'0+pg'E7WbAqd^s#CrLK.YFa5gm+Nanl^L2Oa
+*)kmRQ[;jC^&7NOXL'Y,NHP06Em]>):NZl:#H\h[5hbJ,l7C;NId@f6+Q_B[15B=L
+3HUY`i]f;*-[Lcrj7RbTZB#f9D=mh.C^T5[rd0*49qtm;]#4MeMp*!o;7X)poV-,i
+:tJAR+F\<E6-++7Z?kJjKm(^lll?Kj*#$r`'*Q>MEc?"#<QE#NeTnFi-dRQdH[L84
+2u3IRq1n'=bg6+'&'SBCq+ji`kEkj)'k@s"XUMZ,"mdaZ"jBd474^!kZ7BggAl#a]
+Q`8AZ6&SC%23R##n)B"Z8FI/o&:E(T`3C0i:'9JX%k^*0+M@G]U;*4?O2qhcl^sHR
+Fg/ECbj231gZmB+&LCu&[F$:rnjUJ45gGNRr'<7D2>DM39du#7e`2[_mD2[C)m1&P
+%M4)!bp+Y]^tG`1p<J`]hp*l-kh\f"J*%N;Cu/gqn""Ss0Br<aeul:KO'fGThVR1W
+#A!Kp1A1%d2>UY!c^Rot4K9(7-cLKn0)f66SAu(ug)K+&cJP8!q+pT+j78g3neSFl
+5<@,`g?Y13S#4:9CO!<)'3iP`9/0Q9UULhVP$&]fAQ9/W/nF[*?qX@nr8b.R*Zd*>
+,C<8H)ZWGWTH!e@/<qh!2l=Bn#kE3&?FbFGHU#]'bg4IJ^WS8hl]tU5O-GLN/bNs:
+<eAMO\rPY@ga+=u3+n)p*^::#1"LM),GdH'/njCf&d7Dj15?V6fT;gR7YiG:ETACp
+Kbk=p>L*6KSeC8$DZ9^%Dr_ubC*/m/R'Bf5W+t$4Ku=a-3`W!:Lh>00)jBO%A`?C'
+Km=LBn`.=ncg5)4!S$;U*&t*qA0iH\%Up$+,hGq-H.lhmNsHM+"`PiSrr>1S)1:D>
+ra,S<IU-=[<I(ppCGU6*98guA;b5Hmh0I0IVPA"II<7d!`?HNAh0EDZFs-^q[2N;T
+c]0)Q!u\uL(C:RWj:VO3+U4_j\;Fh2a7CfTS+@`JIRKdDlt#Z?Qh7I9C0L88-e7:e
+eCsFZK`dL*7ACVG@Lh(LPHqK(dc&^3N3\s=mP*V7pHa&E)&:8pk?:+5^Rr0XBr?6_
+5l?>e[84t?@AA6$bYdYk.B;0+9&X9p9ccX)kdlm!#%(;a`P]-#1\N`!:Qeg9C7uX;
+#3/V?'*A(q0Ir%Sj^)akj@+mWG"Y%S5<7K@)ZGr]:F^WNrrDX<o-[eMD+`F&>%I-W
+7qnkGqF:?Z]so7JBM>$"Or9h!<AZ^mftE\o(hKYq:,jrGf,UmI[e.L+'.IkCUL`OW
+U'WF#C>_<'rcW$;O.>V;!%kr?]RbA(A*9shb$@Z`Q?1nel<8A7CMZ8G2EHQ*($1*&
+Bd.\$$@)VPV_6SE35qfncCZY/@M7Xb!uX@q>Z$b_4U<FGN$_,q$8#n=bp-`)@]mt5
+]/D/*fW2@'^RII`4T>EE'gM14o2#?0\rLqsKDtoh*N/o;$cDuE:#P'nrph-%pD7KB
+fD7H+!'^5Y!7l/=rrDO8o*>4aae"@h!!RlJa>/7^nc&U<34PCfm[o"_p5XKT4R>(D
+F(2;sMRsd1L6Si/bB7uIccnK<r84Vi^QZ5t`4!G?CNe4B0X'HgXaIMaqJs@nDDGr^
+T;s8%/fq?[Z(#XV,6SLZ6[3GJHK=>[LXk4.,HG(q&`=`IB5"NU[]m-JZa7-$daH\l
+L=4Kb#olf3ThuD$!#8H5!9c4;AnR'l-\%V(+\p<Aq=XQdT9S2.>uK,(2'4R<o6j-P
+RU]<PR#882(NPWk`'EXmn!suq?%jo`eVkd)0J5l*GC3^ug>?S!@d)*7]]HLjl1cl2
+jCqe1b+$`%008A:`Q#HkH.0tr]&,DJVmF'=X^_>b.HhLkSSCXL5V'=XHaGr*d6eUV
+LCQ$GgmFL&i+u8>HcbXZ]08SEfs44Oa:KS%2HJS:VL"U"6Hes"!7/)3IWi;Wf0f-g
+j^l]UhRd13,.,"lPSoYC:mFS1N!c,u"'Q%14SRQjcLtN)UBchqTFMXG0d,'YSURK`
+I?`/n4%9e4+5Q&-P%>7r%**j[\ld1*c]:l:+aQTVUN62ARI@7%\r0hD,e2@2M(AhS
+(0XGgjH861>-]6N!5>+6-#ZX_0rPKph4GC$)<p-V'I#M-1hA@!oH.-h]kpN:!AiZY
++na'9!\=U_=e4.t/oEc<9%+RI0B<r2pTN_O1O3p1!oE[n)B21b#(rS4WG7XPE#!oF
+bbCLDKJ<l8po1]6kl%g=piuH,E"SO+l^t$sH`Hm"p4opl/98q5`MeX2'=9!saWm\U
+cg5L?1oU7lPit?#+.?Q&0O;l`.nbpMH"uX+i\i_R-<kDiKNdr4i\4\M:cBt)ph*$f
+YWFACN.3WCjiReg8r<=e4RS-]%b'd#PCnc73?FpTIep*]Wh-nO1Y"_]NZ[kSrc7To
+ZS$n+Lh5-'FW6"Cd/;Q;TT0:2G!Ap8OqeS.O:Y=%f5BV.+)O0,dV,nE\fr=geVp,#
+GDFQDM"].rX3'=9Cl'10#G`DkT/AN'3do]MT2WO,H=rY&Jh?Z_emb$nG&113YubBF
+%mF!e#.kIE6eL=lpuc?14$I`bH[j=*CS-q0\egfbk7g-,oY!oCHHruNg8`K%C,UB-
+Q$"kR9hac&mMcJH.e53f.HBnTG4_tN4eU6hbjflMVGY5:H;%`bAX.`MM8Em;j:<lG
+#(.d>pg^l+C`6rPrr=dgk7mprk9+BOe,KD-5NaJF5<gh!`MR<$Qc\?=2<t%@T:s4d
+B@TOM/7Q(S`OeI4[nhoDY0-J,Z%a->Iq!SMCiZ/@jN#)!Z\e[**+V>&ZaY0uF(o\t
+ad-r"]%:cmrrDuV(]<A6J'L]4F3Z^G?<DtLeU3:V%3n]adjLII8CTYnGj[+pROFs=
+<)fWr,m@(lo.P!0N'>I#EFRtg).U]T!B=6YAcXe[Gh_<GFIKtg%TQ489_K;\Y11`<
+,bAGfCG-s9c&0+^\mR#So$@6q?i6Yu!0u%KVrl$`5OP7%WqJ>PW76=D[X\-c>^]"g
+,MkWY%.s?I7Nk>\fOlGL@`+=4]0,3;+$'/s!7!ftg@s])O>T*Q-.r#D8^k(C3dK$9
+d5;m*P>sB->>7$$7Tb6#$#(`N3f8Us9lm&FUXNq!0\0uiS?gF,&-mq00`%W-J]7&9
+9M_-WVI_psm9>b0-is(`O5uUrH(k4eJ'LIHg8CDn]]FPVQ]m+!k+oGJg_Xa1_BEHq
+M?oQ)kQ4e?HKKEhB#gCHoM^JVKQ1S%a,5o;e`np)JROF9P#cJT-DThO@HT'"/]bkS
+ITl>cY,c%Pg4,Kspa2J)f'KFPgab3ON7QSmSj5'%R2f;_-SH-/366qC<H4>ppka2J
+e/b+kd<quQMs'!nbAYO!aXM\>jVduM%HY?k/L2oXUNsaVK'kP)Z5"kl>XT2pM.dX6
+RL85OC:/'-U?p][B^_;,+NTUM9G&JF0)c`*)'35*O4QA0D-q&X!!Ca&Y'Pm&ERS4a
+f"Ll,q."F+,8t9BJ![5n]:D,?`U%LoD:7;+dV/KQYf_p-Vg@gg\]B+rLFsXucQ)-"
+/<Z>7I;tL.N1re[88^PZ[.4jL/%KBZIX0+C6frmob"p5!r.utF?$TrNXSI(c3kP[$
+VRLnuDKMpN,Td>]#_U2eC5V#XjdV8`bB=X\C,S(06?p?0iJ8?3OR@sl%c(ipK06Fo
+rbWa(@ptPHq8@,G7_A[#S9t1Edr^ie?MRr(D%k/t@h?*bHHh\X*hsIoFX8:hno>[j
+bEhh(@f'r$A$tph+GaQjS.@uEI]R(0RRauR/LU:#%Z=*Whtb>K)dNCCS8obP!9IG5
+JK>N0^WO6]#Jnu4Y5nS&]8l.$DG^)>3@0`Kimn&/k9rPW[&mj0+3hMdo.QL`]YCRo
+;V+1`+gFaG7(0AsUTt26PfhRd.jDK1Zcj*6\[L)SV&mP%:ECoZ(qAN[A&Z?Ic\oNV
+^rLmuIMWc&=Wm@3dD";d/O(LCYG(dda?FUq^GGfNk$KrjEdRKM?&tA\Lh2S,]X2A@
+,E<MJM5B;8Q=(3=H$7FH]5'.Mk/35o#!AD<Ah`?3'R72.DAYX+,hZr7IT_g5!(/"2
+!'*"f<r0"_Nuql0>^oGhm;`-5G(#8?j<#F!f?%E=/A;SB@!m$ZH#LdoCHqER+7kTj
+0!G)9k2.D/X'E?c]YW^s4$_:>YY@nY)Jh=:c@SS51OWTh3Fd*-i2EU2\[L,UV(Tj:
+9,9K[(-'SPOcAkl1,:s^qGFC;EGC/VGp#fp^VRk?4'n'F*T`nHraP[^cFVWiB:M*1
+k04>m)fI.XH&l$]FEG0JL#PT0_%T@&2%2_tM,;luQY^<+QR3!T0ul'`/f<10^'d(a
+T6jt_"Sf'^mqY'%TS+%;,H9pr)04W0F0j!F=jls0:]>Cdo=SfVFfkFoaSnjerFQb2
+-RlGWGk4j+NjR*L="2%k2#K,4hduffEsEI8*^#;IDS&gkJ+Jph?Ll.#FPeD?j2j>n
+O-b>W@e5>.A,1UsUW"7Up8W$!U5JhDR3>Qh(@Pqb)&9tf"-l0qrJo3r<Kf&-;(5.3
+E9'#1g`U)?-qYc`1?&AIq'T&b*Zc>u@Fa)".f?$N[aBRhJ*/)i[H7c2%lnon=4-rf
+To!rUpWK2(+LJU9`.?/bXs0;m<Vm3T5AMr7?qPj2TZ`Dn\41G.EfNL;gj_pQ=lLQ!
+5kDGu>'jbok:J<gDg\,:^F&43YPEb3cTQPlr`/?KdB6O8_bu6Wk3WuP.R@hiVFTjC
+d/C&4Z*H?s3HYT(W*maq/aM"%(rq)9aGLD61h0g;228heO[o?2BB46o(@kOs_Pufk
+QV?%[e];oUX0FO;qH/4B.Jh)p[Q5Bgo?WtTnYuM#l!KXhQ^:_o?.A!,qt[/7IWX)A
+c0;O_rjDDi+gA:+)GP3&TrQO"#h2h.@Ko]'dHTVaQFB[!J=)!4%<7iBB.dX<]:%l.
+VG``s#W1.Jk<AG`O/dJTrc5?hep?eV2%Mib#P,K$P"YaC.iWacq<Khf'#e>a\gj.h
+!L/dS\[q/Zpp9i\Nd,[9_&pnB<-Z[emQ6Ug/m_6h`Fh)Fn?+ug,l[l9MQuaC5Fs?t
+2uKcG4)u^Zr@pM5I'Zi??mf4hq-h2pr^al38iU>N5C5o'"nIh0rrARLrrARZ<AY>6
+>KP1KF=m/k7<oL*5Qu3V==^^>3"rb:>5nSfJVa<rIc/goo?N<g[U5-r!:tiSpQu:@
+O`V*kBiFi-Bh.T!Q<S^g1s;AC-]5k`jG?oSK,)Yp&j<#DR.:1VHTWQ=%?-+-,p57@
+8371Df<Bo]Q+(%uT0W>2_>L(jVBG?&?d_6gT2q/%k6'CJ*F9o(pQ=5.iQO<M3I*GB
+N:?P'E=SQ8*WH+!(T^t9[b>>ck"dM(mGs%]E?!.<qUuEqG#7d$L^De:4EJ6\Gl(">
+@1Z,/%(m^*1!L":nqet7gc3VF>GXp:j8T*>K<Ap78,VD>k'CdOYuiodVQQPg/Bu/3
+]""1dMAXsG1NfAS!BgJ.2m>8^AaR/i"A,Rqnc0]VF+0p9N495n)9i*\1q^G;J,]L/
+*VhpBjrZX"^-^9G_;m1861TMmF?A.A?1kV;\%7mAVNNB-)iJ)A<e.H8K>T>.NC<dH
+OYo,g_D@Et6?<9L*t/I,+?Q;mrS0]9E4NoM5d.T%d#WRGH)LX]j3%,)H>K1#r8RXj
+eF[#s=4=Q=HYmP)JSbkpS]XT;=IX!hhQU03Di!eLXV\?*N(-<5NWN+3U.erYM$fOB
+D9obuH?$D.M>44!<1[?03eL]#c%/VWZcS[7j;qP*!1^stSuLkO'&Q@R\)lEE?2V@L
+\3(oQc*j?!mqe.VU9)rX'P1UR&:r8tf'.jq50mf#+AB'*"QfaB_r9PfY+SD@8-:`@
+m@B#^o9O81npWjb-U0Ka9i)KqOfmAR4FUF?YscdB^]ON9FdrAubGuXdoFH3DgB+lD
+b[,5ZrrASh!&\p!!6W("m97u\2BGH<FT#"\SohNK>t4YNeVpBVdnR68eeP!"ZcP&(
+i"E&g9lh+HU=3gu(q$rB*1f!_0uD.E=R1iI#iDf4"t-O]&nN:!C7XCHYK7eKpIP5T
+rrARQdrdl4??sFb>Ako8]&o`qO\X4KKujl]=iCM:_Rff5U#.[)U=;P-fpXq]_D'"#
+qF;>PqQ=F#j)'%U]TB`LRm1FoZi4qcp'H63+2!5;'8\?K7+='<?JKAjf9U`:`,iaE
+oiFU%KCe;IYAM?DZ^CBW%&<bLR#SpnVQUDHb1<,iJ_fWQ<knH1rr>7geFZu/FZhp*
+94!>lb@VAVmr.="80nPbZZ2*FG1r^-klr$aeb0t1',bc)dI'&PT=BWF"uutMIoS*G
+Voq6@jLJbr,'c@r@'M>:V`RMh":?_j4H":]GL&G>OA<,AU.NHL#=%32*5$V`=*!*l
+l)h$*L]$16r8p551gmHHIl[>b;q-2Y.Z`@j>9ro#f2n:8!+MPb)-L'Xh0\=[i1CNq
+p21cJ!.Tn0K_kXESDYr@(sG;6jPe1/mWHVAr-R0=F6OphNM8tF"!^nZaEg\#69\Q7
+=>n87f#QY0?`(K)c^icY:]01,r8W;LAUNV#eR)lp1+IkG!!"h%npeqRXP97crrBS^
+./rKr#01!@L7"b8LA/uQ`"r@QPuFCWBtZ`)?Ys'1k@_$(O89,Gn";V#msY^ha*r+1
+^RP6'o8<)gJLC6)>!XP'"Dn54Z@h)S7=JA4+[;+@!S8;cH&2n+H*u]UjG!E<%0?4?
+T?+(6/LU.&rc2Mkg:IVQo6]X;]Z?4-e=-+s]Wel'9qDpN]MSH#$)Yk\K1b7^cpu(&
+BQN1J$93Dh>bdNU7X+%.:$lAT/YsWAgMWCNr8e+,Y,%\RhFl<D8O"nOn'$87l98%O
+N7Qu*[%!\hl8RKfi[AY2X0LF>"1ZD)"2K%>j?Ic,1QFh,8BSGM$2u,;O6W#lX7X>O
+YiR^Fb6Rih4))Im-pKlS]1D"h\GX,4Ea;0m4Z8/b21XZO[h>Lf\Li3Q3sS,$h>"P%
+Y5\LXEb-*ep-eX,aHr8ND`iNp13lW%2>K&Qal`'6T.2C5hu6f)MD3Z9G*sVsL-62O
+O,L5r?hZ6Z,Lc^NrA*auUJ:+kUVkUA3;$4bhF!Oj<b7a<Z+Y$`_qnM:9,)1a8Eepd
+.J2\=:FJT5J'M'nB%lQ8Qp,9U%]SVU/,=*]r4cMEp+8Dl>$[(c6$iVg5q.r`Y#r5'
+Ti!0]2p"]k.!?)fj2D>F*_`=TN\1Dd*Weht+=d1"U(rpG4,6mPB3RT^hH&*Qj8",c
+Y;?/mq:Eh/f9NaX/ps!qjrJ1C,(&#1jG$4R0lI^r?4uorH4'Aj<^,<g$otQO`;pC0
+"!NU.+Db3F^K,dhiY!O'ep;["D6D-@]/D/*fW2>fY0T$*D#XLroD\f\<;us6O3Koa
+MX!4Sp(.(3G+\[c&,eG>O-fabHdCJQTE!:72u`kAq>UHGERXpfn0[`3rC=u$M>mPZ
+J,./@J&:aU!7Np;RLehYJ1pVVH\X`M3GW\FY0Dj9!FK*df\9\<h:sTaV5-mMe]X&T
+*-%rjFsiqZ#q$tVS;2c#-XlQD.s))@ER2aR/%o:^f"X#K5$t+81p9BN@2u#&DkY+`
+QAocE#M#e0%_UnLk1@$p*2BBl/0fi>ohYAOj0ATa?7R)"rrBU_gQW6tGKj)U#01@1
+r7h.OdJj2)]WEQJ2+[t9kpfK+CC:u)XX.!_Gj7fQ>,`71n!edFm<m`VW>Y6p>fT5#
+FFMS[%Na9O*#WqfQVm0f:D7"(hr]Fdj%nb!jhKoK\)s0:/n;H_g`kjf>tY(D.u.b>
+dODuiMQC!5K`u0k$XE&1455eIf5"lP&QoD[0c[X6O.49brW\pWNsGkZR.E90Hi037
+@VMEOdspIOCV'NGS%PtA`f4tUB%*%;9DeUe3@%K@`aK1R]*<9@Ecsabpi"26D"?t`
+(boY91ET]e,9%Wt\)2+!eOOT;lFi#?^CMK<PW]7[,?o)9@c>pec4K3.Dj<GmDlS)<
+c7Q!\5F-b'D*I[j6VF%@dcXNY\-i[V7V#"sN#B]J,^8Tr[@4c)^)U<i`YtqSN[#L)
+N./<Dj:6b$I?Nq&CNU7-N2<Gl!@*DVaSu5Gp\2,NFR!h?cZU3PH=)n$1-CaX[[3Z_
+p,e1rU"Dt?FR,;>+uik"C)2cYCU'WgV._b-LT&Cc-=$hWETG)*j>WIlngtp;p's:-
+b7+5s:->(3R"'$%.B*&bcYEI[c7!s&cM-0k]>!m5e9Bf:qV4WU>k3%88N]`mDi3m+
+Wrtng!fs^;57I.%D`)i#CBQJeN6jbf`0'QBmJd1EGM/Fqkm[5So^^iuj=bu\mq&YL
+2Ej.e4\*TI*VYlgI'7C%RN@lATQ&>ED*93UZ3_`Ie-0g6#\mDN_@9OQ(WDVtjo$ER
+#LTjNDAh@l,7t3Pr?)RHel;G*XsctW'9QZO\MYbik!)ajgqa<tG6Y9@(2hBS]/D/*
+fW27p,NW6bGTZ:n8gK"]d<9merrAREr4_`WjTjt'Z2'=X!'-3)_>33S5<.sF(I+1.
+RRXh%CLprse2EXS,ctu596D_\TpO1OPm,h'd[nJPQFjR%1)_fY:-BY'=T8AL3Psl<
+*jNolLTA!o&^f"kEQ8dgZWr&C;>glQgYY/tq'5n>3Of"g30Si/Uj4?1BfG,pRe!;Y
+QZV%n7f<^lb48D,@^q4OY\,2]\0Ut7R/9>P!!D+lE(YG95k3noPbUGY?RrmQV`P*h
+!<>X<eII!-NPgX7A,#/W7+et2L9XF8*Ldde;&'oR=(DR-$hDolT:.eJH#Lu/1>h=m
+hcji=klo<)ElE67gu+JYXkb7'7bePr5I5],5A+Tu[.<1@&Tf>+Kh,0o)il<`0o:cM
+S2SZ%J*.UI!%\C?l$dWOl9E9,rrE"`k1BPIG)(N2q,NLT+btUflgo#._sYEj>Q/X"
+o(,hI6+gRRg.&@/m5dBOf?B[a];\qJF6W3LFLJipMIA*Z.kr:!/3tV9Ae%#[ej_EG
+P[t.oMhK(q$$XF.:VrNE0tZ`$EF19s!7!ZT<-^jUj3JcQo$>fJ_<AiO9D,or+aG4D
+.c&8VP-R`$;H?^YJYXE\M^>=hm<5B4jmlrp@$1a#gA0-s"3=;9MBL_:4-"%p*LmM^
+?h98,Q+h%c[1>+9VeTO@o,b/(Xm8/OeZ\ToYK.E[kL:i4Anl2)e@3/0[!pGHL6iIh
+)9,e=oYtj/pjL.k7_H9W2+n?RG]lm\KDB<Dn&l.Nr&Nhd$K"1ug3:-==P;c(k2o9^
+QT$_C?:gu>Hqs$1pu]2q4%!$%)*CV]puObb!!c&GZp<gTVTa">0i<(7Sb\oWELZO&
+bo6;Nk$qo%H!ae-*6I=^cRWclL4hE3,),J0Yb!9)E^+BD07;Ge]qa3;`>i,lE0&Ep
+#ist=)$36KhRo<?Jhf9ppH#k5I$aYSj\O(%%Nd9J-UP63p5KKa454!10/W8"!-pEl
+\S3@PqQmdL4jIhi7pW(\%)+?>R87\`C^3L^YTE(GKL@%Ng!;e4rr>%5q-iF30jja]
+lnqQiq3+q@qKH*5^9OVM;X,5e!8\(iU.L^Q:/%L`h_odfB_C),;8OY+N^$(),<d2h
+O=%WNGr<bRA8LZ$G"K(0ae'_jRQm"C)gro2e%CO>%l!ftlPI$3;am[:-oWnW4HD%p
+hRhCh@L[chLR5Dk1S.2.$d(G?Y__8m?m7">*.VQS_uMliJq#Mi."$aEX(eKdH-\i`
+6>[W>EM7.`o1`epl1:$)-(XG0a##'%]NU*#a0U+o=4u&e[.t,T`CNgi:VJThp*O_l
+)nQA<Onf+TF6"of5;VPI(])IHi/10S?T!+e;n^bi#U,F18F>TSQ;\-pftB)I)]Iho
+U"d0'DD?ld&]QcgN+2nYi<&oNZpu*Gag,]@o=+YXpZ:#!r5_"TY$#L_HM"Xcl2$tE
+Ml^Y36.@J0/C@\Z$Q5WOU)%W/pD"ffNe=gKg,qP--9*Z7!uT@;pW&(.^9pRQ7Rr:+
+C:J3FccJu+cciFA)Uls"&$L!7_>aKrhR-p9EFYt^a,!W1DloTkj/RV8%n#3a%aFC3
+?Y;uOe'Ef1l3%D[?MI&.rJQjZEd^7+$cmgZhj7]:]#XT09%0tdIl.+0m2+#R@FVJ<
+X[YBt.F&cJ0;XoONBtWU`kC]%f66;_=UtlcU+tKn`\E"Xo>1\,?S7:GJe0gEm`rgQ
+U7F)7-snmjC"^FPiVrm;p\AajIl6).f3,T6/\K3(fir1bg5_B!C0Fc/g<dH!*/eBJ
+$F^*(8ri_[d!J']d:!kHc9))p!+?1OG5`X3\RUITe_%'hrrD4(rr=SIO02"8I36Y7
+HffPtBWZ[,X^9k")MBi[g.3hR$"mq9NJNU[muZoHhsCkr579)0iVrm90odr9quC_`
+MT6DU]l)hFLL6F@PMS_*dZ7-&!#OkV=MN6(UsQOH.uEUM9*]m8g0\#G;oBMh^bm(@
+b\k_n4_JDqIU=B-I6`?CbMO1RRDLcBlm_KAj>Z2XjjpVTjujAP]@=LDEri\8c.`/j
+GHC(]gmXU?]"X>/N\aD[3.p(uI_W>aRck0*-3c3>"C`MnmlWIW'o",(I]gRqbYQ@l
+-[oa+ML<lkGocnbQR8#H#@5brY-cGCc)4C%#]B#TN^0nK!S4Vdf.-.de^WeV]Fl]:
+`!?t[NJdo\>o$9Nk1DN3hPL5P3:ZfeW7ZB)bq8U:-MPWe>X@K/1MOGOTl$mK%GZ\R
+R%I5Y]m3Li%jkF^Km*N.hog>XT+ls564BSu*YZC=)QFP6?>L)W&_>[=,Gfn821AHe
+rbBlolY#>4J&Jol8qU$2:q`:c,`Z5<.J3cgXnB57PN#'$QOhcG"XTAd*mr*,QC:rp
+*0&PYBPgsjl.`:SqP_424sA1^SE\m-nlC>&HQ2?2bB>)HcVi:H[@>g^8L3JGWD(n[
+;V"1QF-2<W6/+9nX^5jDq!so>!IdlI1&43;fHLPIYrckJq0's*rb(hVV2qOXH-4FT
+_p!>%8Ir"CVlZk6TaB_k"OFZ1>472L][Oo^'W('48Vld[g&",*Mn\pn4YuZTadQ:n
+/cPf%T[58CI#Dd<SLlt9H4A@7BPU_G'65]amV@uO^JQRQk'2^*GJlBtU*'g,m,<D&
+rrAQpr2e@0Xl^<>i`jYGa%<pj%k6@\QWUcFi@+n`'l7El1%7QX>,j\@J"lY#?'A9E
+R6uqU+NS&C-ZS8Ao4p<q?!FHLIR\TYbFX.^!1[0hW:HjToS['1H#m*Y7["=[V;8=7
+V,'A_l*r4c$EtY)!<aCGg'pf*-Z83iiL,YbT-:K<A(-\aW5B2u+;YrJE)"+FicjJK
+>A=qbQBeLrROd\a2#';R)Wmrt[?[i#%ipR6cQTdY!)h4lWOF?f-1,>ZmD4lNNV[&h
+P'b<,"T+13ITIQ_/QY"MS:<3)U\TK&RCo0T4T`sR?<t&Q)0G2P,R9'qP``I!j,jVI
+]!,Vqk)W$7eEHH3\7`]6bl5mU*obsa#c#Mpb;9b*`W#q\N<`G3FbsolO#:6WPHDiT
+SnQ^J/T0F^=SGB=Xm`0R-$6'%`ChjoRuLLV])>)Y@ks!2riR5[M3kln"8;X2A#G8]
+14AT:6&<Srl>rL5^_GYlLO%qNrrC2kR2Q7TQ9=]1g%gh!\TO1=DUb6j`bQR!3q7IU
+6hXe&0^Nj26*/T"15sj4@56AC4iSjY4GjP8Kh9t<XhX$4Ij^HFhk_k]h_^lbk1]8n
+5%*slXf;7c>=hk/Ra><p3/E;T;?]Vd8Z$E%[@O//%-%g?6/dJA`$?be6urO-Bq\bg
+2X5="k<I'1-2HTF2Vr<#7]W;0U>FC%2jf!-WnqF`F4i&[>?dLHjH%lN0dT3=NDC0C
+<Mf(W<gsE2,UJD@/f=XSQ[$-Ge((mGN/dCD$iI:0!''HC<TN$r^RdR"jfd).qa2&e
+?`m\V$V:uPK'l0?Q'+e'P-VI_)F=c*ZQiW-qYa`mo(d;.$RC%.[FW64UUSZ"+ul86
+E<3[o3*#)oq8P)1T/(\I<q@WWSZ6B?Smn&<o2VZCX_M$6SujRE11/bg:D?_`!CgNJ
+_e(8Je,)kn3&&A]B+l,!*[jKuO1J4*nDlVT_1Pl.r8IRenpfc9r8ZE,j=p.:M[,TA
+f)2AF?>:8L[9,i*qFIuOdYOJ,Wl"lk'``)W[EP5\m6+4R[PT@11R!GB+pmHC6R2;f
+N0oA$"01=j^ckj"!1[*fT[l6)j[lVVFi0s1kk5ZrGs3l8lH,aFcYe]uVOY+ZM,kt"
+!8r?n1A1Xrp4b/":aI/+3<:`<EIl&Oio.Z#`*e,uRn(2=$d9]Z?;U5POtQb7/p0l$
+gj([Gc7M4S!nOfaXfNgP3+MS?'NO'>(7EBTf4m!PnaXfsQ;*rtfKWe^0a(QIZ<1s6
+e]kT3^o+&2J$Vm,qm.",f#MdRhOUe%c(P!(nf>K.I'rco(5`dJ5#Aque3(LC$0J<*
+)KjBX/YCPSc+$G-;2GOOgGT]39i9.u7i1VA`Pd,uQuENH4.VOZI$^PEk6p02V38$N
+[2g_+'),9:842%a9_T,fl.:IG,`HM2n(0;>V_Q%B'Bg&aY<&Og!,^BUF30j]R'hu(
+le8Is]%)1jHTn.bX-4d3ea>%AjKt'EW<'%6XL)A)p$75GV`#Ae)!+(l$$h(kQl#lj
+4N"HTq1\W!j<)VOdr'QdUV*&0M9GN5RC):\NAjkC%Vk;5op`oUX&F0&`:k.=fq#=I
+m-)SOBBbc5)$)^ho4/.%o3@ZX5()0bJU]>f,<mg\!%i=Dh0[?A?-VQ#odG9mW-Q!Z
+^:Mkf=^VH.+0Jql/;YB9GTg(jCmSi/f!AWfj3'[Ca-:$9,O_R^FjfYsif$"um]K/X
+jmSJ(b[+rR9BgH>XSKn/[F%+W4KQjLeV0-U_ZN<FTEFL8<e@68q1a$[c7!,\W+1sS
+7raesq!a#-+IdOpNA(9N>Om87e?nQ*1lYE$a%*\#pI4YLrjSl`k]V.][jYdB9XqTq
+gj2?iJ>iqR+D0di[9]Vl&dK[JOPqr+KOdSs'L4m"[<N7ph:^1?0Y](7OnkuSg$-4q
+d3I2j9:XgO\*50H\(2?0Vls`WDUH]:e%.7-c!P)VQE.?hB;_@4&>CRF1@+4aXs\[O
+(3qXSI,0pG-@a<(r`j^n>dj5uSX-%Sq4btP/N_0?A^t_,]=Tn]EHS[9l"(Fs?'rV4
+,@Y^I?/+)h?7uM(!u]n60oR[ZR".uBfL.G`4mpVURWc_``EerJG&113YubS-Il;fI
+H2dli.Y$AHk+DQ?FWBap#Q?J?:];/crgUaEbPgKbkO'tKs3^[%rr>7YrrCVie,KF;
+-M%K@8'.?Zrr<4Pq8b=@_X[X+dl=k+&+6'?0D:EQLHOo`CNEsfc&0+mTBDKa`QshA
+rr==sQ5@<(g=;7LRu&8iNR;H_2u%UNar.\_c)5'&*9SlQYsclu;Eg_6&Ja_LbK@HQ
+SVk_L.naQX@#6#8[o!mQ0n?3bTF.]lC]FNh210"_SnF\1^Z*qofII\[CfT0N^\Q'b
+\a9=rk8uh`1`#P%=QrZ.$u-fA1?u;^/JX'Vi(ZF5cEGl;qeo.Z%HY.^oL['RIrcsU
+HY;Lpnn66(fRA>G?Lh<YO_M"EL>iY_h$GZ+bIM/XO4bZGhOAH;\b5^(h3AD_cVC2C
+iJ&[,c[Z,o?8GHG7i]Y3,;6TPX[e@pcJeT0q:-BtIUE#@d39KW^4ar"So3&>TUSfg
+^.!;6O!S3Y7iKCs?jaB[.Q>X[fq2g:4S_'?2+rh%N]eR0[#+4[=7!"XT<f[@2j#j[
+*_j%fI'_Qlo7.l]Yl)GgI.JGJ+WBg7FEN2PI2[)5>$PeO+e9pMGl!-Q:r4C`J0$tk
+Q5Sfa!:X.9PI'p!%Ne/CK.\<TLsV4;fA%FV9;08*`,XsrS4>oQOss,+f06cLg-oWW
+2V.An(A?ss_[Jd[+t01cVuQf&5Vp;LPbl;mPK`d7">Rn.&W!BG6bCHK2=#k`ZZ^.b
+fs+Uj`EerJG&113YubRp^ZRG'.D1N"0.0tQFSUPn\akNE59Zbj?h3*Cm<%Q7E/K?P
+Xfcd#Ja(t.m](Mt?711e=$+`9HZrVieK3#R&X+9EZ-+#Ia*qK-Gb74*_q*e*U,$!k
+r*(&tXW.7[bPlOgo9[PPpQ@c);rdf*cofXNc)4"m5LF\d7@hu:b^:2bij`^)pC52i
+Ee"T)3U'_^@(i)sI9\NKebm-T;?Z#8)'gI;n`#Ksh*"$7nZ:!(,^<d(`Gt4qkg-$=
+o7p?gRsHIC+-V)Yq:D@rkh^OSW_'"YXk^m>28t9]J"]R^O\$rP+s@D!^CL)#^>*8c
+m(KZr05"(A%*4ObKF&7U!,].:lYb$?icnj);%$)[B;fm8Ea$_F]/D/*fEnBt1pA!I
+@r"i^jur2O!3XNk;i$MtQ.]`!le`!kF%n_:>\kS:X,VgV2iu(:?'m[8;1j[KX0TR?
+Y";ofTO9#KG#ojIM)EO7m(.hrj'`G@Xu7$J7=`0a!kTtM-D,`"5Z_RY.L1tD+Kim7
+Ju>9`/$Zb:$KQHlhR)XR^sh0O&6EG+#@%HuF&upo)"@cQ4!^uOj=kQWG$mTN`mra2
+^o_rk&d:bmb3$C;E-RN6=(66g("?-t1i"o],=aRc""U.(19`hO6(uC,*K3](QXF)H
+9%1.13m1%@ln.kC.nt^Lo_gi%22VY`N)=)F1]^TUC]MRQ-;9RYaDOo2Stqro5co[M
+iJn&Q2Ce(GX0Z9<c&0+k.dYfgZXU)^MRs8(9e0#j[/958<j@9Ude,RF[a[/2PZ_Fd
+)-!ZW+tt1*JY<=O#g.DQ-Nd6N_<rP19tR81[t5Q$+L\b9+Leh>@Y+m$<('$k<C#1:
+"U7N=aP=6PRN7;o=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RP
+CfT0Nhp%ekSq$?hTD0#oVuH`/>t6st_>aLoNmn".L#N%3VXSTrrr@<TH2EN+s3ga&
+rr>7YrrCVie,KF;-M%K@8'.?Zrr<4Pq8b=@_X[X+dl=k+&+6'?0D:EQLHOo`CNEsf
+c&0+mT!Kp4?_9MYdE7XhOo28Yq20)$XQn9TVHP'N,)Y]9I,!Y6YkEN>PR,Ge$gKi/
+`^e(*24`k7F0i8%9[eW&Z.SCmm+AAFJc>_q;<`D`YQ"S^rV<X8jg?]&$U"Q>;ag\,
+5?cMR0;>384J3B/o:bkN4q'TZV3Z+Gr';22.=-J:7]Ie;U^&qs)JA/Ao)A\ne*K:Q
+4K[`TFlYT*)QI(X%iY;*qp&.a%;T$bT6U(lNcXQgRX@6m!$4C*O-@BEU2j_5A'Dq[
+i^G=,T])7"m^/Ftk+A4;M`4b4)RIIs,Rm^Q[8aUDL:n+q>_fX(@tV(kig0S*AUX.)
+g,+'"*&*.M_uoHJgik%,khH)U#P."qbPqS<`nr#rl;m9^]B>QBR5Jl09@EG1jop@9
+,L?_GC=8nj`]rrkmD7MI^R4%?Nu@HIh<F,%aE-Y@*Li+B#X.HcY'Y)aH1RQW2ip#"
+Z.Q+`@]mt5]/D/*fW2>fY/8Fj8^m@G3r]1NeZ9nD1qcfD93k1c\j_o&i0?o+'Toe'
+Q'@@r`(kR<11MXdM6KIf*rB+D&:#()0Dr-RRF"/IQMSeI>/-G'bEin]B9T_4<a5MU
+8jIm;e"aD`,S>oMJ]`PJ"#bS,gA/?OK:Wq(a#nr91S:2<@XS!Z_[qRM\p%EG#b5\u
+F&`c=Bf>=,8Ij"&].l.]?%@&*qb9,ko2*-2Nm>ea(V%/kR=[p;0e%AnFuok-"Hn+@
++Y8:9,328pGFj_>>I3?SkK!MuVp&4'V=oQ;'5)*XBND9E*duRI'AVFUGaU-8?f6et
+q^j4.@D<Q'U-4Y=!.^ReLhH*h'.Hcqj04SO;'0X9N;]PAcs@DbF2*HTlGrLGrc?i=
+E6#.qg:-3VWFI=E+M?/[Gs81Bn*l.8'c;1<cIQ=Hq[]V'eAdkHCj<73^YN_cptD/(
+$$?6ipZ:$)k1BOm09Z8#jc:nj@F+dff2^BQFPGV-bo/mP]i;SQNX'7[N]Un7U$=*E
+ArF+t!8qARhRcFM;q^d$0SH;"WJSXT'/&m]XkPSrF2gI<HS1tbVL:r6!1_(#c^TD:
+J*.odn)jWM,jQ(V*b3W0e!A$SN?aR\'Al(iPZ\aNnjXjDSfRh2"4#!:G->dle*<SR
+N^@q'etP]YR_4Cs1Ek/B'fkgiahRG1J+K00!1:6^g4,3shrZ">hW_8HcCo$Ml..XQ
+0XG_$*.;'g(>J#E7eX$jrl4Y2@kD"8@M0pr.37`HnN(o0[1g7fFPR.C0CdBdr4i55
+4Sf!WE*FF\URFEiJ&(CGfY>m.osXDV4,['CqGHB.3.>K8BDul%;=gBiI=%agCZta`
+r?81Jgqsc\>O%%V0(M>1dgd=snYUPcRmEauqar^?J<lX-K,BM'EUe?gpMd_nc;DJl
+Qjj$FF6,(:5Q'^-kDtmUl_<[ZR!re[oB2:mr=:UGEnad8.(>@jVmgn[N;BgXV$,2T
+;q@`-0582Z5M8*"'][mAL+MA0b/q!fh>?"t0%.iZ%P>M5NstpAjSo3=H$@RU>1("9
+j]tn=CWlSQ]%q(HPR!@C)uc^5<FC#K#Wq4lHHe'Z(0P(l',eU5"EeqXS7XB9MVS"t
+rr>(@rr>%oq:#.<q9,Q/Dt<MGQX3hB/psp>I6E6ap<oqMH^f\&.l:#O+TUh&ZeiIT
+:[ERAG1UA;bH/Q99Osef4K*H9hWjdfN0s089aY-u+29n$q>9dLbs1fP?;^=OOED"2
+?i9*<i3SpFL7N#]f9<E&7ZQG\"UoMF(5@aOc3k.op-tD&gq%oAN-)>H+@.?))\0=<
+*18+'8g__c=5,i/GPR$o!'_d6[(F)d\+@S8Q%UnthVCi"fW%@K8mY(/qE"jW8^Cb)
+B)_kHqGRueKk,]6Pe!EEXmrf+-Kr"`r3cP)3Fi'h3K*&`C<+Mh;Z+G`I)iGUI)__Q
+=BJ\I4PlME)hS#n<f3]F@@\3JqZlJSB4*am3$SiApl(2^\nd&(;);'->G09lUj:_o
+ISAJ@LmRfVHMno]Q($u#oP5#Q<\pD<On:pAKknFsj82>8ljr2upa7/>,;(';^8fqk
+H[KjKYBP@Ur3jpErrCB]^H91err=H"^FGH<gWgK.=ZjM9WnP7?(aTibF)U<,lc1;2
+o0#3WMuNd-rrB?qS_I)nrc8Xo_&*bpm:KYEaiW/tac&`CZm\GXF1;/Lc4#/3q;_'>
+niAE]IUHs^q3,,K@FXYu;OTS?DaFOJVOV'_=tNNdkJ,rKfU?-fmC?WQ6\?21'3h&W
+o&$.a/=<rCD54Oc47bhc\l\!Sjl`.]rN%[g*`USNe/\jnW:@(ZU)rkr<<p([2mW<:
+-Y_l9BeaNWZ4S0#f]6Vb0u2$*BP6M&j8O+@rc4%Y>D^D_^"o*eGpSL%4"Cdq#%Bot
+2WXC3cr[Z(ItR_(Ia3mL'%97;!1T7;>Fo_bq+!(MhduEtpHSXsPOjYbcHjV)./DSB
+OnI:XoQQcJ8e4]tZ_Vde#bY$Ad]!.G)=j-&4b56'm6')X4YcV"c4]tZhO?0VO,,AN
+:PNseboL"dd/O(tI/a2Jkr0s8<73n>Wa=rAMA;(K_.t<Y3"-'==9H(XB4C,cWU1-Y
+/:uh3Y_aCYROu&r:aaAYT*7G4^ZRbpk99c4k'[>:o3\#"o?WaTjAW7-?KU+m&U/-P
+OpL0,'P*=ljG(%F>)MLnh7N[e!Zo>2Bd\s7LgeMVR=d!K*/(EamrVZY6S)m82Aa_:
+q"E%JT9ioPSl>R8npZM[O!\UuWotA^!aBAncPqk>L1KS47b(R=d/.aR./'9GBC+GJ
+oX]kJjFO$er5X%F$bXNAA<.FM/Kg(ao8ETs$i0Di]D4hW:Wojro&%a%*`fMrZs2:e
+;@$[>PY3iW.Yu$h'SK=X2EC-=n0.KqZMSE3W6)0Y1)S:Z=ZZ[IMm)LW7.Cg4C=aj:
+*;*,*iK'VDht`Q5"6FGZq;5A>bT:6-][YrQeKmcHB36eIN\SO"7JKg_Yg5E2!.kGf
+C&9]q1[2::&B=kk!pEl5:HeN?01dr^;3\V`f!P+qV>9$EQY#t]q,ca?bU^\>IU1DK
+P>6hHh:JqC9%"7];Y)r.dX+42q)_ffE+q%b3@.2l\%gSKRio`R,1+Yd,Q;aorc4D!
+r7nqfC!VU@Z/Jm]I:&X/B@h,&!.eL`OTn%8M<$;NI(AkD]_Uq'gg'Q\oGRDTndG%]
+bO_(kQc["02U&4CXOs95G,nF2I7=b'?:@0/N2jgGP!REWIA6(5SVu2^oQ^K9gl3BM
+S`3/Uk](.nLau6RfYIfiC"]n\MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<
+c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0^'cRm6^2rrD3s
+5O]oh:];QLNcmR<rr<oWVuH`)_uB^2i8`qunfIDs(MEcsqD\ES55G3YeoB1=!:V?,
+#Q707Sr*II"b6?h14R12rrCM-\=*rrT7ATgNdHODloAj&@]mt5]/\-$Ofn]a2u`k;
+FX[s#_@J9_QLZ*E`G$pq./)hN>hWr_b8-9Fnt-oBc\)2^<)9Un*M&==D46i4D0@ud
+Y0Dj9"5QB[n@TE(ZGS_jk)G'pObFZDn0!jU1>s@9@.!(<[;O=4?i9!:jV5ImT:V[B
+rrACi-`a(WpYVc'3?tR1oY!XE`L(`!U<"QCj$*A?!.jmO\GLKT2#<X=F>:u8d.Ert
+h;Yip4=nK8r0NG3/,oU>3;e\urc/,4hoe2a^UO'[Pk6m6!"etteDsX%qaX$HFs,E8
+-<=7Clr`Blr"ORZ*m]!^8`JJW>K)Z[H,tJ7DV<_>;jSm;OE'NWWdACl#bcu$<X<,!
+OMHArU9;Y3%=eOg#(.ICb0K1bhp(L;\T1i)*e@%3ACb"VS<*7To5d@uYeAH=c'j(Z
+VjB8b=;T5D,0ah?E_?uQkbls7Wq$Q4KCd?cAG/39dh3KGjGs-[`(-.i[F"WfDrL&N
+_t+J%a!4i=_\;4`YUeU\%-a4(X/G6kE,%F^lo3KSBX6@J^u@nU**#VBe/IJa-7Ru;
+KY\9A%`R74c]9mcn]4<MOTsP(K7.FApqYs(^A1V_fLR)#@t]Y]%=gta-Cp4>-/#P)
+B#S&F'm=CnfgLD@i$8JL?4^,iYubFBVpgcp,_p#`J*5i5G1?Gnrr>%IGGOJe27/s#
+f.;"ol!l#Dl:`J6\4Ve0#Qc(Za#uB\"C7LT>O;P'=RelqANttlPOiqqV3'`UCTTKU
+kD6n9g`M]N<rBf*T::6,k1r5Y>I==>qNMm.O*$:*#>r,H8bK&-C54L`+2Q#sPB,r`
+4[]2X^=2@(3d`t.-\UY0=U;d8Ca)&*gb-gd,YX7fb^;J7fmc6c@X03hYKO7tX3[7,
+?<d!e'1$CdV_Ug.ZHd\_S75Q<M!`WYo64ei/u,g34pI2eM3^Dq'k@f%aQ;l7;p$gb
+MFN3Rc?[02rrARqrrAQHo4>VKLREPgjo5<7gVIkDp3-:eR<<Hn\;eBp,^uSpi9K53
+_LropnG<=T7Yhr"99pM9+FlFeIT#9&5Nalol5`6OrrAS_E@:\DO6.^fglbadh%-d?
+D2A)/Aq.Ud=1"EGoD\gG8WLQ5"h!Zg*rc6''u/oW/H5_5)SFJ[^G0$i8q/cQR<5BL
+e@'u"4#72#EA<TE8E:0b'VNdG^Yjh42IC3=i.Nlp?6#fcEF&KJ:6/:,nSN'JgeIeK
+5?Z@`)8G9*C+"n)T[tcrYccmIhV%$O5MudGN(guJ%D$L#f&_B2a8*Jc>Rl*2rc/NT
+:GmXI+F[eqVE89uSn7i63iZ>h#;D(Z<1HE_!#Vn#<"8HC]pR6=0=5sXP@b]NDnh$,
+Ii<AabDQM"h?-,S7tuBtr07,Of0;@p`N+8Cb4EXqR-d#HIB@26ZgAL_p+7"29@r)W
+XFr*G%8+ucT3D,%m:8AO`J6?RhDsZTQ%'&^ShGdY4Z8hm,^1le7Xr]-J'Ll+5P'n!
+EOt]OjoXAnr`n_lMd-"89"@Far4f1bo]3VTO2Qnm;L%H9*6.$ui]l@\lp_M"['A6H
+832RHi^YQH".-d5ajFk<0-^doR\2b$p\arXqTi+<oCAcRVqjdi@=@3R52s`Y#7hNr
+965.DaVug!.k(T5e7B`k%Z,sQk)=ioAKZWL&QTcmOU!!m:0kU3qOdcf3*:aHk8(fZ
+WjS^b0E"@FB7Tl&:\*qZ^XZuk]1j$!1&!7_F0pC1+TDG,Abh=orrD"p@\<:H/p$u\
+#l\`K+FS8,_gMHImV>$NTC[Y!qU?UOoJGH&+87@tc`[9Ji3s@AB/93d551]9o3#.d
+RJK<$(lEt;)=as3o++@5Apen(!2$4l0>Af!m2!0,pa]VG+8u8)12D(4%"EYq5AP=t
+jmSe"rrA[.&3o=rj!Uc"X'#=?B.Nu^#*WB?+8Af!inrF]g^e[E]&t=<!2#g2C^i>H
+*`2d(dk3(nk'=t[k(qCP/1dEQXD@p>,e0oT!7*d_J&";%rrC8YZ?Co?`t70ip#Xf_
+&bi[+VJ[4VGIF/_?_]aNq,..l32YPTrrAQBr5SZOr>6jP^9)d1_;nZJqpSuH#pX\i
+4a>ce\.frS:CQLdUA"NK]s,uD'<E%GiT/m6/>'k.UL=!-<ZNLNN/6<.mP&SWqd]5S
+4KJ:=X+")aG@`U,b_X6hL*StdHHhsjKb`fh/]07<aJ6IVrr<8lB)_icU;ttiL!((-
+f2t\.pB1+(m-OC/%Y_i6fT4<`rr=JI!&U[ir9@J3rBX)K4*roqC$C-+d/O)fmIP`=
+pFRCTIVA`],X3f%&'fYeBj[317\LTcXD9k6r;'.4^a9i-Za5hS.&8)1=W'17(#rKH
+51oSLg/6K`'<@W_U*ge?jWd1kSmqsH(sqEESaZPt\,LCMc<p1"T:(#?Q+Z@Zha-?Q
+o`J_"NTBn7[.Y:j&K/<k6UC!,-qG:M+27oJB=C(GBg&iik\G9<*]T/>R,oL;_`s-=
+Q)E,)9p2?pUVH<De,KD40\:Dr1O5bd:Ws^]V/NGK]$HWp0(dC`e\f9e1>KmlkejY1
+1`u2s_*'uO>DFItB,m$<,Z+f"m+^67&hkPq2S0##Haj!&n3I!RS6kbp4gb`.^\"!J
+Gn9ff5Na<Aqr@\V9]58Z"8=PFrTau!o#L\+rrDY"XlQ\-I56,'YF5=<W7u\^T[Vn?
+oCXB&n5Gp4rr<&E_;`Y-[%o@0Z,b^M\U1?3]uKG%e-#k]B-5KMk7sUhrrAQ(eUK>Q
+9j'UY!'[4XG1.9].GI4r<jc^Og^,,7E!M2(ghXU;3.8/oT8WUe%g;@1)>.ur_'18^
+>^5JI_618ZEBB,JrrCBN^Gpt3k$Kon9Bp_NkT4G-f=[h[m'kR9KtDnO\*m]4+<TZ&
+@t2>@g$Uh/m8smsd5p^p&q8tkR@8t`/gER2+fMMak5]Fa\Z.0"pf6"P=(]EWRh^*_
+<S=WYB#S&F'm;I*=7$o6Y`LHi\Z,P$KauAPJ!a]Jc-:a*@]mu#J!a]Jc-:a*@]mu#
+J!a]Jc-:a*@]mu#J!a]Jc-:a*@]mu#J!a]Jc-:a*@]mu#J!a]Jc-:a*@]moq9k\iq
+_-pW0_QM.@]/D/*fW2@'^RII`4T>EE'gM14o2#?0\rLqsKDtoh*N/o;$cDuE:#P'n
+rph-%pD7KBeG;-(!'^5Y!7l/=rrDO8o*>4aae"@h!!RlJa>/7^nc&U<34PCfm[o"_
+p5XKT4R>(DF(2;l\(NaAZ]9KA1I%Kr4F+1_Sn?I%62j`TfMhI5h0,sT4WXP&14SrI
+D(tganGAcINB1[74I_n%_QM.@],9TW"I`k4+VA:'SY$W]kN1TdEpK<5o&lY;#DO2$
+3;I7`F=XmhH#oh=rHKNI'*)H>fF7TYrW4.m7h1k4.G;[u+Nq5ba@dEG=c%6kWIj7[
+?;&7&Vph1Yrd@B6>p#D_0)Xu0T;Y'm=7bhO2Hj<=+d5R'6K4N7;'aSp-CpL@2;dnF
+p7=>%f#QJ6Pmoi8N-sc:YHjSi4rtORH'XG=N;Cdrj.7K(gb$N-0+o`@4U6um=@%+U
+C]8>no*b,C4KGRZ43^r`S$$MsU-5uP7FS$.`,G-%ZWi2u$>t(FgH*)\q]iKrW.o^W
+AJkFI3i`)@RKr!E?J+u'AU[[)2%kl2r6R_R?=7XeTJ`ls_og*sLZQ_Vl$SQS%8n^'
+/OnblRmb]fO]PPSf%I4#Q7b_TQ8&R9b(*RI\`d=qRmEVI3h13MR#JQ95(Oqaj5FS?
+m`bV.Nb%B098#jO6k`H@?1R&;f.O(VNq=0ljtGjmk"hME=LE'$7Aa>cDXA^[eTA\\
+SYi$#ko/2Xbd<OYQkIh<=J;DJ7272THQTTdLQ2p$',2Z6%&?+Z7nEH(9Y5)o*n/_6
+f018bo80Eaq0/Gp9`PDlp*]dt7%17Hjh8[?XEg-/bd-,@G7e'(GB5%h.,l@g!_Tb[
+`7KG6k6(,4EFJ5JM\[Ip#`_]YJ&(JtEcuYbQRU!e,L:LmGGg1A\9&V04o3C8<S=WY
+B#S&8AdShi$4>dqa;:4krF+g$B2?ru%6IIQ0@CX7.qrm6[=Cn!L:8oerQl(j<OZjQ
+!,aC.r-E'fJXDOmd#htr3j=kD9iJ?F%d,Qt(<tNX-$D/WA7`kgSj<;USD3t;eUKMB
++ah8+H$\$04NliUX+)j;FqKVFbLm+65_Jcui/tm:m6R;hr!iUt`RoULM`u(IkBP=>
+(uYVpNB!Bn*\K2Q2TK(u/cPf1=8r7\/Z!sB4o*]7[I]&Q5N$HA7rJmJF);R^2P52,
+>XNO@*tob01.n3[!e^ZoN;<eY$6I.Hp6/435)uJ+%FDkm-b0-#Va7:!8W:24+<:6_
+q8)3#q8Rp[aSu7_g&/%Trd+Bi9Ch2ph6*X,eiLd0XkGY-qM;6oh-!$,6QeDI*J:'Z
+O4hd*FZOp\6^1&;!991HMdosQCt$4l*%"&8ZrXa,0@0K%Pr(/<5;HpO7b6J@ISJ:6
+YH.J7?^-/oQDj&f;TbpI9m6ppiLa:s:9.HslslA`O2K1]98YT+GY^]Kd,]_;8fXsQ
+k]?2or9%Jnrc&n',Jc3/rrCJqY'dYW!!9A"afl<ArrBQm^"32`E.,ta>ktH#!&t"P
+IT1TFcb=n<r7\CGetJnoH%+UU,s9CgKF;g<K!Ri;Op<TeH>cLMYP9ti27RU>7Zpmu
+DHpKc,G=4,V:YE[`XKBCin:MOqP\lpJ*.3-8tR\a<"OA5l!O$gGR3[hh>[ISe:4?b
+[,Ad^p+>1Z%"IFchaDDY`@oJio%^ZpBJB6;l5_%TpIQr*]MXLF=B[IZWeKF\BsqC8
+J=lE3Q]CjRB\i9l*;\D180/JGPr?<sjM1WiDMS434os^**FEaYG1lKur#J6"4tGaT
+&,.i%I?lB2_6_TRPQ(VCg&D%3KKT87@t"0nq.Z[GoB)6Tl?U!-[pP%t["NpY&rhn#
+.R3*rN^%2/I+S?$^[OUWA*"`'XI2+pRZ*='.3J;>W9MXAbLbtQ`uIS-BK>Ta;:d[B
+@c'\`eFa^Ji:?Q5kj9-)L?8)4<L)YW7pWt:Fs(t1#(8k3d-7q.SkL7;&jf(&M!]6S
+YtgH\-^ie8l8/'nrr>#YrrB..q)A<RCjCNq1?1PFp>c-2FeA0VrU3IWrou]/LTYf-
+bq_NF>(0q!rr>a,Z2Xf#;W`V<a;V-Ef8neE5G\1Fcd.CEi/dlF&*5bHg5l3]/p$@)
+pb&37[dne8rU2h@5JA3SkGE]k!U63pbF?qOCGY"kr;BRmn,/IN!/t+Ela>'4^YfLu
+k.(Ek6Qb25:"nLA\U3M5J*5T"`t/+.0Uc-F(o$UsZLZ6#"[u?%An#ER!*%Q1?hcH\
+p4S"C_T2LXNm%F[HsGKKj=f]jT=%J@cd.)"H':\+][iEQeA"BH,>5G(k+53R11@PM
+(h3]7PQN9J'rr>N#M?3"a6_tt@YSA4A4M\3UdTEmjN-m32cf293G"g3&`1&V2Atb/
+.fOpIc?+=Zb8M1\I(B&WW7ZBBbE`_(\mD$.$+aNQn/t..G^Mo1<[Xjlk7+Wg0A+N]
+U3Z<FA&ja%7/69(oC)/3j[W7KN-KRVH_%TiUA]K<q/,;30?cJKJZ*i1c1VtDH&G.t
+^9X5'..Q(1UM-?d<J3KaW2A(CcVhY$#A\L![(%kY4sM-XOWcmQ]gQ3*He]]BA];d*
+\b[kkr56st28A;jr5\VgU9OKTRXB[chAA;@-T3`^`!tYP9!!g0T,HlT1FHc-r]M<0
+WucMFqma'ui\qqQUn%5LR1>p'J#>I[rrC=EmJd/H6htHr!&/`.rR7UhVLROLCY?q0
+V]J(83_n!"pb"]cl%f3!hu)J+rc75/IUW$[:ItKc2*AKfqqFZW:XcaL!oI%"YVX9(
+mTB/Z#@].A5O^E-!.k?c"$bnT,b6PdhgQQ[S3N`tLjWL2[n&;FLiX"-T*d7E?#nrF
+:%J:_HZpcsQ/:dX01i`+5+pL?#J#[gpQ(Ps<aO$VX'GMA8#=XjcVp_R]Y$!T'iLa1
+Z*F&9o_=9<e"Z4+qu6XU&UA#eJ'KHfB2QFR>>#nCX`ERtl&?H,U:Z]OEdSTf-U'Zm
+!.q9uPM1FY7cm/p!-aesWTc5prP1XXCCa\FRJF&L%krH^rc7hHc!"GEJ$&!BFO]AY
+/nh\54jDBZJP:6K6PO:ZggH'R!:._he=Op.ILg&f(ChG5N\MAsjWYo].=FZ`4LaEi
+M`sLt.3KR72Ath_2u[h>rc>D<o)4o?Ck!r'iq!&%KR-q4Q@+g:@MY(o+]q:o\DScV
+c1:`Hls<rGb]U2NP`5(OLH^.[jW.Bt%NZ^sgLlAMX[CDVP960@?Lo`E*WH,(r7g=;
+qe]rc7as#$ZBV**bU95:WsIf^8\W\7l?\FBMmp;[-CZ&IA]HbI#t@6h9"FI%ULt2p
+SgfLe;0QNBW37?>_as^@npcugm@[-#dJVIk>O#6A%7jXK0h/'16WIRIK:`Qf1c]Xr
+N1+"GVi!qki-G43]UkiRj+s%Jba@NR?(2RPCfT/n=(]EWRh^*_<S=WYB9^0o1VYZW
+j7udP$0Em%q%$LE0:?qL7nAB`;)$%0(-AS\@?jN,X!-P_7cQR+p`9&DS$r34*g]kG
+`a^c>qCs6T]%iIhN63Mk^oi'#5P(J]o9?8"T?P@W)c5d&FarJtI30R+%f870@iYLK
+dhb_"d`l%6mQT:lqB%rtb)0:"<`CpU!4GXprr?#<rrA6Em+p7rn+t!fb#uBJ6/de&
+!29,d!1]nc!6^i:rPGr1qP05R!0]A.n+rRS!7M\^;U+:j,JtW'!(5lJ!'*nO?h1Ls
+T^%"pl2AB[N^SB4GM0>#'E8&+;uE>[e/fIaqB')?b%gJH!0rl]0BN-GVq:A/EaSBL
+rLNrg;kNnqKA'I`F1D*YTD?f/q9!8*Dp5^jp`1_X+7gibr0b<4.f;=,!2_:EURTB\
+7tt.G!1`Z\!1]u3U[orJ4@YO4rrCRhJ)nn%3W>p@oYj=7Aj!'J7tsk?!1`]]!1]s%
+nbgRaWRdM5Sq#lt&,A#qc2Rc!J*Di?P]M+2K/``>Vu5X>C&\/`/fOM6M:;?Err@0$
+rr=Bift4BnrrAoEr_h#%l3slm+)gtt?i7I=J(uPMrrB&YJ)nn%3W>p@oYjU>jrMb-
+m?iCKHN*uj;]=-V1'::Yd^8tfjGjcH1VV.7n5'!;;;,05q`9AI2uO8jr8fm:>f].t
+'rV'3eJoh5".mdZ=Qf[NWU27SW-8j4JuntPk<&\Dk:*:@Z&/J\1*UDp\UlgAdWGH8
+jAe9tH\7^>chJ(K4,X;7`Y5l!7!anJ#n3T_3Je`d\q<49<c$)r"HC%+8AtCj"TBc4
+59'OWKWN##C)rcYG&113YubS-Il;fIH2dli.Y$AHk+DQ?FWBap#Q?J?:];/crgUaE
+bPgKbkO'tKs4-s)rr>7YrrCVie,KF;-M%K@8'.?Zrr<4Pq8b=@_X[X+dl=k+&+6'?
+0D:EQLHOo`CNEsfc&0+mhij\trrAMFSCS0`B:I*@X@Z#b4,l>e[J0I_gGYMuhCb!c
+3b&hac:210R^)g3pcCPUoZ^'T2S1UfY0,h=.P$Cg'9e7Q*ett$,*,a)%aUDIo:6dA
+SM'P!,'f)3dVaHWVKl+b(TW$KKrk-(ekp1*;d%k/[^HU`7$4LS!7?[qK]ZqFZ`^r:
+[<ktDXNVuG/2%]o&VqYXGZW&I+A);g?!s)#gfc&0qG&",hFkZ9\&HPcB=\$B-[_=l
+q/bX>/,<ODRAJ<D]qAQ_[.D?&3jPE!V+=o<(2Bf`"(T&d]rB^'otA,>fB&)J)#-]%
+DZMVopq&'giT8,`3Ao*oUhVXLg3p]/&>WANRP/ak6FYAHE-<mK%b&j9eO+#qrlH#V
+L?Qs>>?K]c8?gYrB!Toa8SocIQ6_be8`E#<S4p%Z\lUh0R=VWfX$.Bc,%Dd(]0:E<
+!7!o[8*E!G]kM]O4TaM<3k@r?@e/k%9,6Qp2*F$g9Tmp%bhNq9(`0*1HCqK,e`ReI
+/QPde_s*FkJ#[1&n+(jUgFm#S.*nX+AgMgi*Q<.;f==m`oK.:;onSY,j5h:Ne&l!#
+nu\X$XSR69XgCrur>;fW_9Sc(qmiMb%"'#R@Mo'/-Tq:5F?5@ZaceHQF>*F.rr<;r
+7lSeA)mlu?+c?PpEEmB\5J&fNJ'pHDgSrJ@rr>&6V0O!N9@@[icfRq@b6]Gjhq*jI
+gsmn:L+9[0!g:B$PFa"^N8FFLT3I49V5;3`KF6nHq<[_0h<=KVEPQ5/Nun8VU[hZc
+MX4)ZYPH1FbmbaaeF3<rIHTu!lcV4"LqJeH7;172D`k=f7UJkT0!mHJ@oN*-F7"`k
+k/iWEW8Pc;UO7`W."LQ1L@+n`1.t-$4:WUE0Ei+:gir;7TM+u[C2>fS21:!q;o`@6
+B#S&F'm;=N5on%fPIcN^QSmYWcSt#'O`%P,SQaoHo0&)(]p,t7H>Ic6QBHQ\/D"'R
+l7La5W='ssZ9:J]bC/6>":g<"d3?lq=3q:!C\!h*`pk])G'],WCRR4C6ouKS6aL7)
+`8k5r:&9m;#dni#5P+(;E$t4_o7pA[o3R&nF89n?4[G$qQ2[6c9jrAtgrjbL`<W?^
+X2`4V<oop:m$IVa]2u3kN!+D#J"%Z\O7d)\2fQ/C(hDE<>HK^$pE0"m:X#ZIj)+Uc
+ja$3-J'qo7]T-`MrQs[Wrm*_k+7OX*=0"oUr21J1S3Q(tHFM'ZhrRr;q_uS[=k'O\
+O3HK>h>UeXAEc4&"frf@[+9>,^eO@@4NgUNP(VO0j*Q:T%@s8s`@P1d@g")cT;lE6
+7rtohW"$8K.M4b3C8X4Srr>%oq+5l-e+l;l:Wjb/=L[kgcFh_7QE,!5cP.SOjsfM'
+NKBTbpkg)mSoa7ZZk;XWe&SST%RH/5a!,c&7mDp9c\o_s$\>2No0L.Se_Y=T7f;/j
+fRG?tmV2\$;*"'brXV%Wrr=1=IIi<q!.*opP0`aUaQ#MKPoalD!6`-NJ(th"rlQqp
+!6P)bJ'&c2!7T!f-("1"rd20qq?LI)"0,K'!7!)Rr8XaI%ARZnb4cr`*bS\[(>)27
+aMMj_T0=Kd:0HQo4emtJI.jX]SeILPiN[a$._9dj"leISPj8"g"oeQ^]Dhjj4m#Q9
+a7%7i^G%N@bT/Xdeu>ENBh(k(Yb'QD=%4C>F-9T=?VbZ:q:L%Brr<2'51=2=V1tAs
+0qT2D%mi@jgjLN"i1Caq[EkW?/1J*o.Po0AJfTA'24lWg5Q:`Hh3rQM=.esZmJ1ne
+],r.cYE*&7H49K[>hcsh2ofuXkfXd>-0je_3IF/Y3UM:9J&-U^@q`lK=,'l<!]VGN
+"GD,_&3QLqUU.s,9FWlh1Yb3Vhj69OP^eph8c6'3eKWT4r24*!PA8H4cpp*1UmI7a
+m*)2b:!(^7mI&D`Bm,Mb<+',SP;3--X)kMcL&bN.?#jlH/J;DGH!AM,?\3F/RpFGq
+[-4Yu9<:p5"2_4`#UCj6O:=s#E+JIEA'.7084p>Sb$s@?hX('Irr>%Urr>7^o2"GN
+k0K7k!&<sB!&Cpr0O"9[gmPOMD)Q`d-M?b;[iAq(h,]8&mPENZ[Jp5Y`ZF%(a_7BF
+PRP'M7R6o9<#pDtcLCB2>BR)s7,3d6B8U^k]-;.HcP$6Xc<c"G.I3VtP1MlcRn*(0
+O-J8=$\#Q,?*fj_f/I:_4?Y\Lj2]V+Y?L+`rrBk/gT5kIABcZm:1"]'D(Zac^OLTc
+XO?n:]f$<SJ'4J[`fE31>CXpSH,K2'7e?#!q4#Tkl<dT`Rb5ig>=GO\8O0cX99p.o
+!/Ki*m?-enD7'8Fg\CYA-4+p9i4*b;<s=[<\QrOcTr0m?(e!e<]"?QS(]<<3r88%A
+jKI^3NVSFnIlqH%E/2X1[gSsFG.N(0ju_7[d9DBOArn*/)<_&*OU&=:IbT@g>^#gm
+>!5%e@2"_X-=H[?nE^A1e"tE];rTRA<9M^_)\>Xa^H?.^H+O9e`BWs\5P'_!rc1GT
+S#C$BA$tloR=)$d&50$/g:bp>fN_:fY0.fIYULcN;dSkOSqI%C"7L06HS6r*=O'Tc
+C86/6+k=K\kf.QAfX;5DT92A0N;e,#V>Qh\aS_[]I/a2Eq3t+MFB@eiX/ISHJ8)3c
+gH68Qe`Ci8>cWQ^Dp-0+[9hPNHXjK@rMPEH/4Kgj@u,I+&%hA;FP9l-a!_UFajp;F
+Ndo>8rrC=Gq5<dBo4,r#R2V.K5*tC^:G9V2'Y7;QSNXWkrFXa@"_;nL7hXA-B2S':
+r"\^J6eQM-A(+'jV''Tq&a;6sRP`_/$RZNElIS4kETEc5\o4/k7bbO5Zfa:FjKJL>
+/sH+UkAf\2,PdAGa;WX0XF/i@23ZhM?VWf(g+6,ll,pl;6dbTlC8C_#YeT[/ce)EB
+V:FUlUCd8b<+GkI_:dFTq`JIQ;)EU.;k4FfrrAR$o=(%c!9Y(M^ZQWE:HrRe](W-W
+/[%:uodThOB7G#8\;iNO]YcR"A$8)Wk<H'AZV.:kO83-0!c\MQG^MjG0bGAVGeQnV
+dn2S^0O7uMSE'TgHi@t^kOKS`.DIS7bNDM/3)=+_cY)A*.m"&SI]GWX'U%C]P0$TG
+jF@9?,'/8$n,*k)[!FsZ@DOK;a@\kDMhhk63>S/<K><fc2X6h/3CCPeqsU+FaQs;?
+frX\Hr8kEciQ(m*<k7<61?`%VZgs-kTioX<C:BOqEa>g7UH"D?Uf'ZL7)e@aC)WN)
+^[OAc!.lc8Q%iO(0hX,MPop3[,"#keo8P^Jh&h\IlC/!Ge\C8^rr=BnjnTA]I<542
+k+=Y:q9Hk#:mUFjG?2/Y>.(FJ59/8@-'Cm(X&iIHg,Yr%f@h5mDg$]_C%**);$'"F
+/!0)$*@\TpMHHXj9t6YTVR)G+)U4/O2Ce(GX0Z9<c&0+k.dYfgZbsQLnF-<eY;h$d
+><r2g\t-Q]O8K5Ik9\%E>bCZ6:'YJ4!-9I0h`Uo=jM*.skTBDQ5E]>nngF@q(RG($
+4FHb&gVjr?B6.R"op:6$i3gdmZ4]qY<N@$VRm,3d4IVmUopU;1Bk5Y#M33W-2.2;t
+LdjAn@>TpD-C_!<>%\]P!1^%dVYm@_BBSIUj/cQfo%'AnSP.:qg2rp9r409.jKl<"
+o%=bH"fa5Tl:Dop!l#4En``2lp5?>$I=^+-5$?s,-qNC@I\LNB$/_C>:-Pj$A"")j
+4MtZJ:PO1Vo:*n:Ab(>BmPI/NchYDl,^s8!4Y3_5LWo.$ASbQ4;Vnc-1942GK6hae
+45#U2/RF[f?/%A]q#mWcjF'2g>F1L.KY9&B1^PD1d@NDsK)C`$-ftZ%5<_:nrr>0/
+[25+C07PIZ48F"`bAB>(>/u$sP2bWQpE`I"C7lcFOj/]]T\mHV]@sr2B5-uYPM(5A
+>l'h<1EWR6RYfpaQKJ$BKr)U'b'><l*?7jK%k%;:n,256Tl>*Z8,dJnb7",n`5\EN
+2R.#E_KP*A[RK@RkU%#1q)JBS^rP.7!K_K3^G'sQX8[&)YCe(&`EU,VHha,q+7k3#
+;=^Tlq():@!9Un3b"WuL5KmG@eu+kUhHna6Tt7b$$UH)HP0"hi?<[NMp"m6\rr@XX
+C$RV3Z(]Xm=$8Yl#fe4L+oj`)AO2WD>UL[6mL9e!6\3#8-pK<]P:ujo&!qc'][Q[@
+V1([YEQP<"AI"Fk_]1#o#IuQ[P!^'_hmiX[-$^db:@p76/%>3HIA"]Ue*?+udKgJ+
+9#uu]_&(:C]`&;<`>N+tOPuJ3#q(1i"oeRpKD@1C*_b-L,bspkQ8GcrVQ8foMiCRj
+]3)1(`2`Oi?=-9*R/iZh^A66-^g"0')U*Nrb[m)8%$:XJhZtE1$fp@AQ8'F!'Ig8$
+Er<W40.03g!'^,.5;6^?G)q.8m5*%rWuel1Udk$Zj48%3Xj+m"+@ec>5X/h?CAV(>
+Wh6b?dDnB.Nc>,pFr-,+>dc`&@t]=``ETpcdldg5!'$\JNVR#_!'(_TT/h1D>5nSm
+CAb^7bW]+T=&uf@Z*9+,1RYp09ta(s!DVi<c?n=6_<imfE+-qNZu\q%T*NkhftU1L
+*caPsfJo#ua#nKoq;(-cc6#+H<d@$hndEP<5dsNQktQZ,BXZsO]sddhe_\kg0VC/A
+)Pe!lB;!;u9m:&[obsfFZXs*RW\Tpi+p>+.]8/=!b:(:s!"3H&>l#E8cfJLhq*31\
+keEBIo7NW*r5eGlf\=]CAp\;4>2;`t$)$q5YP3EGH?[[[p1%<^>GL^Gh6WGDQ\^8%
+Pd[8T^igU6UFM!P75PM1rf$Wik:,h:^GC8TEI6fZIj\Puk)#Puau3W8I5504r-!("
+gPdJX.CBA./Y\1o@`O6IbWHtB6b/TB1f(lUV3.+&A5U'8kN^L5rSk3a!/qM>`!1T.
++4Ts5GWRKEZXU)^MRtbrm.5/Xci-^)q8H/-#lN0O!/ReQSW@1Y!6.NCrrBq*rrCMm
+3;J':LV3T)g&KY"2u`kAq>UHGERXpfn0[`3rC=u$M>mPZJ,./@J&:aU!7Np;RLehY
+J1pVVH\X`M3GW\FY0Dj931]X>L&Cnsn"'7-q<uFl3`d6H)pJTV?:5(hBQ*#X]b'>Y
+*uD7p$JQUf,OUrXqr/NSfa!mfG,3f8brc.6f4/>JhlmhT->S'fFr'H(H<95;p=cY>
+lEU`'RBG\4hV\p%&>Y"!F]rG(SVR4F"cSn!e'EqW6.6gZN+`(22%fBW%^$`0-:IYf
+"`pt</9`eDYe%prWZ!g%_$?YU0qS9'/2H7G8=h6#_=B5,15Xe,CH2ThD`"#7c+4@d
+bJsaJc$=-iZ&.:"5ZYV]Pg9g*O3I<!D"aK5@`_H:B9jXdPbM`=2dZW+b&AEr@5Q^*
+p7l,pq-)>0\=(iBju`,,\8j5ZFmH:/8*J6F5I?lMG+2:[H?i,'Y!#fOcA/E0iuW"a
+RSj5%GOIbCFP=:W4L;*QR[pcPV8cqr:EgAQ%OG/J%c.>$\,.Q?#(s;Tjr,D\$pK[m
+YogmT!RAZI1)19bXPRsgB:&OYjfNUKIVR@WdX8[">!;#MW68)D`1;>l"L05&!#6d+
+%.,m_*1H5u_2*)+A4@\a-*YTYE?7E`I/M1e@"6Hgq9SXCce`R;gq<5:Vl"`D9[oV\
+Z(kH->ZcHC]8g@O2U([eDIS>5ZUu.+&9+Y^U;(:5B<aKl%Yk:#N,b/2OU!/3r$YXL
+<e$!I1_3OH#FD$^F-3(1^oD%CJ*.Ss3e'<c)fIe5\lc?L>5nRg\@(o\UF[1T$VT:s
+r[BD[980fS;sDC28KU1REA$QVY&PN=HTB`'F5kX<E5ka7`t@u3/.WPoqo>VHM<'#$
+)SHQ/4/!B40A_9&5`TmZ3)H%U?[VU'r8Zu%h7)PGV0Vm9q17Z[?d1X'MlPQ9>NtmV
+))TNmg+^S^&H%e]P[mqth^n@pCHGjNO9]F_0ujtS)^K9ak2?+SfWabbbHs.53G040
++/-4S4qK+uf#R>[nu%b28)u6?dTnomDQGHBm?SW!R2@ur\l#IE"4oLsjir1+LQ+;`
+>7aB^oQ0BFAca::67+).5Z?b#3S"F$;cDK6Xku"&MRtbrm+AACY?@/.FM1FRP!uH1
+F1o[(<;LAL(8E9'D;9&kgrrbIjQuGej`ZSpr5XU_/lPKk@(NtVN_$?iU67DBD$@d\
+:E@E5Su4Ijil64rJ5tP5Y=Gb?_ka'QF?bHSo)q_F31B&7+UaRI4bT]?c?:AP0#qLa
+m+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5
+]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>f
+Y0RUX!7/Qtop5O7rr?nQ"9.S/q<C36*<-#/QOib0J($D;*M`SWQS3aU\!_a/,9l\s
+r8IYUr8Zptq-!Na(7"]hj\,JR2>mbU\0Bm>MsG9-hSVZ$-=VPV[Pc@jZ[I[sBR<UZ
+QG6-=VjO(ZU^.r.`f*QJFZ_^0n4S23gjSb.5Q(9O.J]Co^\Pn\q8b3@H)F-[r8/j%
+Tu6]4jcLpgGA@mj7l\#g:-4A7N_%i[q^":^O0[T,gAR52m68M6LFL5OOPuH<'08=E
+bEo//0!)Gu1!WY;-,3Ht?q66#?dCl>o(2HKo+L*/*`W.>SF_[0dn#g$Za3FXl*iTX
+K$/#rEh,m*0WAbH$N*&uk;DV/*H,J%NZCW!93!2e'9l5^qL49Jq6oJFSEshGnn;m3
+EVt@boDH2tV=Qq7?f]8iQ^B&r_>Kr'bJ(Q>kOT>>AXD#7<,6c_,t2I2a)r>#\s?o8
+%caI0m=2Cprn>fa]2u?/GT*\H61@Z0oar,RVl%A$7[H5WRDNRqHFfA$XT&:lNdpYS
+qG#]>LJ\!NS@KI89o`"Q5;$)C74tbp.X$HqMq!(Hjn3#1=E/\3m=qAHJKDuhe8jT2
+4;ZRJ5Tf@Fb=e`7q"Amk[LN6:S9"Pank\B)r8XFIjSk-MkNMi=k.PBpqL?\5)WBW)
+,sc&SdTAL,6;$b_#/%P/?JBfiXmJ=/m+LIKS@J?&j)C&L5?K:P2Y132`]S;S1jV-5
+H=lbUk-pJfk9GK>&L+IWbO`03@K-<f"o2@bdWoI)!*4'*]"Cl?e4'EC2_Z9^j"tMk
+Y#V4iHWTRK[5Xes3Tr=C$!!A29"kCZ=7EU8@@mP[Q`;Y>R6C.SRK!9M*'`U@]T)`"
+Fm"8!fY8^s1]2s(IZDqF2&M"TntRI>E5&A?*/_uXFCg[le>k%CG)&fZ(U1THWJ6m6
+q7SD+EC@ggfU=.<WWorph(sgd#k:NCE!NiIci3u.Il)X#r.4kJ38p]`c7o5jq6k4c
+QFk[WeNDOJ+%W6<BWaeYr*350aYH=#A#N@4fTX&$f^EI"?a]j+QYpuD*s*WMLiPFR
+4r&9Y3kY7HMo1+Ol;6PcrdFeHq2OH2b>1<NAa3TLo2_LF>9.(nOkK!.3eY51brE8p
+@m`U^:$J.>pbMPTY?dpP%5oGma!m7_7F:#U=E]-a_K4`)ESimBq.H[/Bn)Sc6In"%
+aR"#^5L$cfjn>B+dD^#Enjr>^m&H_NQ?jpc\EBKi1W(2+Ui?u6S_#4s"JZreoX=AV
+hrh_[q0Vq<kP9M_jY-GU(k4*DGLLDFa-H;?X.MXMDUK>kH8dO].63:`4hBh$^<ArK
+fig$65@L*VbbZIC7.R%\dTtG!Jjb`aRKAoJF3U"ORW%=PZXIA+U$%n<:GDWgrc9'Y
+WisuQrH$t25J8pkf_k@)m2fDAlqo3@n-Qs]GPocYo^q5/j9LOepZC=]Xt2fo.o5rV
+(]6O2_,:/,<2YASe2oQ<m+AAF@]n$8rbVT7jR`BOS5fLg^lQ`)pkn>sf_,jRA9OUC
+0+\"?K9)AraEu7g?(_/KqD\ES55G3YeoB1=!:V?,#Q707Sr*II"b6?h14R12rrCM-
+\=*rrT7ATgNdHODloAj&@]mt5]/Z/?FB:MHMkKnB_eZI!*H'J9]IF5"d\t`cZI"*E
+SFSoA%,(>M%.[%"lE\@H?V12m5;?L\'-2FjSX.u3kCk7;7@#AfGbd^K=Vt.A8D&M'
+5oH^81"_@,S_LD@!h+bkK9=4U'RK0<>1qTi9;2#om7tr8<Cu8373?1u0r#8o4p^OX
+r_Hn$_j35'&qB>/(RiV5S:Ta$5@nkJjY&a@USM()r+>*0^DLT^n\Q:<U"H=@o?tD3
+IK'9N3HdkOBXMh?0_%u3nOJLUOE37)mK+Uc>oFot1@pd7VX\qi9XlRX6M<@a&I,8Q
+i3-Ja*;"aU+D=/6m;41:33ete1&c"/`a<r/bLK,\Uj^EBRVB%OCSb&i+'I,rXHJ/)
+Ua`[(Z0B]DcPZ"r=`f(]`<nU_"GqUf@trJ.JEu_$,&<Ti:]CDGK?Z<bIY3SWR,WoC
+])mH>!7+RC!._L6RTeNH8++KPA*:aZTEdQbXI0aFUU/7<o9QsHk5PGDLR3-jbMUK;
+)UA31m1pCro(G.YmquLkB9oV@d^E%a"(9CYrr<<0khl.THY_9&:=bZ;q.`aJ_Z:U<
+.KbQ,jj`[G#Fareo(jT]==St5cE(e\Vb/$No@N'lr;28lEhkqj\2Cm*1I^Eh'%]\F
+k)/c+(6_AUo=IRA(uu/<Ds8#_ZSP[=?U`QG!5[jo:Gun[1sAX)qoKmkrh#C8VsMLK
+HHjm+3V;4N5F1.tr4)=dpfGRD>dMd6-3VM)D'&:)+H;t*2/*o+!1"nZDOKY`rmK<^
+o:5Z9L3)f9`*n29@9X=4DAmdrb'G.m1^bBWH#CGTr?"a/(=pU<2'fLi*SHgC8NfgG
+WRYV2A<oop\Xooa%1XBo.,hu`(e*+.b+.'q`EerJG&113YubQtr4lN0hp=D)a.F<l
+nnRom+uZp=p0*1F6uV^57[u1bbb8n^aGmX2A8/+_87U\RgdmKthH%WdDKP5Do%u`O
+0Bi.rd<X=?cMD)GZHK+Ohu-QH"UB^bXL>B%Y+ep+<a(,QNi,+$/)V!r0"UkU,)87'
+F?IT:ZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^
+MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF
+@]mt5]/D/*nDF0A4dCN[(4>+7!'a+i1o[DO/FE&XJ)EVU3;oYiA8BSVrgCmEm2tb,
+\U3N&N6*)hdKBKQc`b?_"B_&k!)+GTJTbs45Nbi;+c"+!o>g]8]FN3O8,VWO!!G%H
+j8AHHQnJQJHEmJM4Fcif+!*Ym+6eCH4#a,\o;-rf(jpT.!'Gb.$c),cUjp[^n3[GA
++6S^W_0?uie;sFSrWm#o8,;3D0O=urocsH\rrCu35!4=d5LTeoG&LDGk>1jrO,kCG
+O7^85*LkQ>q:#<KA)g)Tj8CZ<#A3X=rcnGCi.aEXJ"AmR"lOQB;Es?*rWm#oa8+co
+0O=ul]fo!4US\N8rq>)qd/O)q-=V.QB`;'dXF1c]+oKd2&G6Q\Zh;RPJ'b<GTo-VS
+$_O%9PLp@[GX!`HZXU)^MRtbrm.5/Xci-^)q8H/-#lN0O!/ReQSW@1Y!6.NCrrBq*
+rrCMm3;J':LV3T)g&KFq2u`kAq>UHGERXpfn0[`3rC=u$M>mPZJ,./@J&:aU!7Np;
+RLehYJ1pVVH\X`M3GW\FY0Dj9$hYH#9D_Ao/*g`XZb;4_md4O"8RdrW3\W]a.3OS'
+n464k0g%h[3jJ_t:<l<(2gKP@=DK"DR_uaP^Qqq5l2"ZU[jSi8-4K`6h0]._9FcCF
+OZdnK[-]in,bq?"/:u34rrA"*rEe_F@ZfLpVqgY*o]8nngGOu!D:un@qrMUo>LV_/
+.Ku4i*rae7C,5,tJHRYOY'fd>!!OHRFZ;6g[WF2:"*qniQX1_&-[mjQbMMPBRV?+K
+IOg!>aF$KEeu]WL[!FX)N)aa<1lId$#"9p+O?R'0B*jLl-b$J5/9'&&!@*I)nF:Q)
++PNK6%lYQ'Q94IVm[\Ac#+qnJPTZRf)@MID^dBb7?d_"Ka*Q*WB2bYn?I0^_E)//I
+nma#A.tiieUVH>?g\!MB'+lEdYdXp?7_I8ae*O0H`tIX@]S`T!KUdno\o1c[9f&C_
+c>*5\5+`#\@2S7g8KZA%X6K)]YKNGj,GdA47+-3"0)7]TktcK*b1u0)M0F4aY5<)c
+gHB>WHY9R2NR@_njq]n@D^-L_me@kO5904O*&ci>CG.J1g<"tBYQiEUPhZ.K7R!f*
+!MPOE."#g#<fc"*-agTM*hW1QWGi0bqY59k4R7Foqm`o\rpte`QHekn]6IcQQ7hQH
+)0H%\?:PX`(rQuZk",`-1eQ-_"V,XG`bM`)4Zu*_B8@E6GX^<".<D4ZcC8q(N\N%H
+b?67AFm&?#YB#q+\nP>b<UL/<eWfI@S(%JQG+R$,="`Ct%$B",NA_6)O82A=mi^]N
+c/MB66.n5jnBUj?fs+Uj`EerJG&112Rud_j9sQqD8Z-3mIkeU,Xnekoe9-1#*@oDr
+/)"3@\"64A(+E,5:<b'S:WLtl\@$K_K.ENZGa)>H2]HTDW]6^q8]GSiMgk(aq8-C;
+hp@[]W7uYt48"Os=+MOXbf6ZakGo.B=Sn;mbtMcjEiQG%>/?UP4#SSTA"!Gi`Ef'K
+rrARLrrARLdQcn82")i-R_P/lr61aOe]s:o%?0gD@<!Bgl8b>C4&BQgm#SF*T4p)n
+L7U^Z$j;Ra1hnh*<)6S.;#J`=_6s3Dr3c-7ju*.15-\h`4ZTnhN@ro7-CIhoJK=_$
+IP1Gnls@l-C$RKf0p!cEnCcoN^I)mDK,f,s+RJ\YR_S#C]X?jNaD]8jc^Tt?CDU/U
+jpn-^Ff1S"\[NAUbo+%dUlg_8_#7C-nJTo$J,Bd6g@!VCG#U4^A\\U"H9@5F2Mp_X
+*+L:9?,Z]pgU-t\cT`cBhidhkkDtlUPKY(Oe+>`(@S8,?A%<%])0tT1<[:0j&]K=T
+]C[6/26#p_:7nnKB4m'U;_\aWHAIBD]6;8+M2)p";mlu0K)F`Zrr>6t/Tf=_SM*CC
+o'MaBF*2;f<U@!61)ieY9Z?&e:F]=TT%!R"T<NIed:SK)TEarJ^AV2Da>-8A3/V66
+rc1[2E`^F+o8X_"QSj2<8%nL7pR*\qZdU`]$"J^%NYLY=je^^jF\toqJBZn]]oCQh
+9:C+4ndt<2'W!IY'?GQN6WU6a1uK%XE#$LPjL=:GQbPUH/p&2ZIkO;DQ%lNL--i'%
+lI/nkgUW>X-=f5a.9b5;5mK9=cupJ*Z$"OCC,_A-EQUQ;,Nda=,]^qa2:F\!ht*DI
+>4/r`$X_&[aR;<AD>@hef556)H,Dt',6GI.GTf2?_Z3="ilj?X#gUR7n2/CF(+F$A
+RXI$`!@Yg*4Bq9ggNiNQB3u](,8+_%H\%^uc[YPRhj;&Gr3Z#"T<C'^1#?YPRDn4W
+Ium^\6`eBd;L2834AOCadu]5EP">[?bthpJ"0U8AF6PF*)3,0hQ\t<74,eqKh31nG
+5Y@(8)rc(sD1fSPrrD4-ol&%r3SX?;c2Rd,*d[a\o*1t$F+'q1Y?NOAo1*T3aK'KS
+7liUlGl9WuDL3TLcI2]-*j\Y@Kn*Zn7uS+'82[it_l</P7O0SMK\r+\o9eB&o>d-r
+!'.^VX6A8uP<?PS.spq`HLgW/mTSbeTMo`imRshh<BHLTR9d5e#AA9mI3tO@N`kZO
+`('\gI9+?+QqU&Ci,5)Kncb\9c?.C77AosCrrC>)raeImCTLbd)L(<P(9u]M'mY3L
+>"G>O$u3iB@-e%->%Z)brr<.8Ba!BYd*h^AiajZQ6qY8/*QQ^k_A_i'+t&':FZm`<
+5;iH@k:Jg4q+n2>ZGu50EU1r"@.M's_T?r`q_X-dR:.fqNA=-LTLCHNP'W)(lp"oe
+gDFqU3rLl_P@9JL4s6-@&-lO$\TN9&geA9]!k;P3?2jmbNNW7rCAq(c8,iRZFS"n'
+Q$h80[aFpDKJMdmnWkTt&ka(t&VV-Y/a`$%+-+@]Q<CWlH"=iP`tEbdH[m?1*.#@2
+MM\+Y`)@5trrD4E5;"d2cZ]5N\^7`2=EWhT\TR(t4<mU]p.d$pOIgi0R=n7Lp8chV
+Z2Xg>bI$j63:/]N4=18[)u,.1o<.Mr(*B-'M8@d-^*eDHoH38Rk9chs&,C"?IUhZS
+*T*591u#W88(-bd87cDFPXM<0^Bb0MVRaot1Y<SWHWqL;)$nAMOi>L]N^eEV$oj&I
+f)pItIXQJlo<\#Nr`0Pnk*3\t*365U;mHeU54/P/4ga,[.RrX>iFO-j*mjdGXR$s9
+dHZ7@[\NaU#H1lfj-Den\o1:$r_NOoSBO0Hr2S<I!&K"fq(Lmf1s;\?SNOH&jW-*I
+DRBNa%pc@D!*@TF6D!j1de9%*%s%AnBu`N=e`"GZMo69k+rop%q6]/4%$BP.8_p\J
+A.B.GceV(Zbu\4>[f6>tB`,`>cB^/RMr,tY>FYD]iihW0']c=6PgoJeg#W/5JPh/d
+C/8O-7N!*Wift25FN!L\4<c&:\=E3qQfemHDLX!Nrr=mJnqYJUgASBV\pdW%)Le6=
+_`se/&sTH#mfqZ^31R[7NZG#<!7bO5-G3PH&/G-2DFi%:iZS,h:O;2k0E2%85BRts
+bdpT62*^oVJ'9K+c._`F1f#[X)gLhSeVaE9KT8_UVl,*kh\Z1tNa4d?0^Tl0`snjt
+.8]m]H#&(-E19!2`90JY&,bQ)a-47comb5Y3rV_H^WEbF?=C4f'?[o(6Yh$f[n4\Z
+j(AC@,p92U;4=U/r"%tnm7;D<QWJejV2W`X"NhiWU"\mHX5M!1.$6sRIDN_u;uZif
+]CW4pohR*k`W#otZ2'YnUj8-gc7&V:4E-c</[!bl]TL]^&u0LnG/N#t_;`l$b;ja+
+R*QU.!@,Wmr?)\QQtiHA.Kfk(`)F1f\*(g0jk&U\j=[4*q--dU;tGd:F\'qb%j^?N
+$1@R[;%lVp$Q+tX`,<dX$:\fZQ1cS4m05R``++].5-2:j$jXhRDLGK(m8dL[O[%"'
+q94XWrTEW&r`o9"nnZPnQ2:L\Rf9Ym*Os]QJ'd@:cq/37b#T^^`tM@.GM=p#F4a(X
+DN9%U>0T7*)!cufQ-<RPDW\TXXuQdWOQob*&*1M'jG&locfa31D^+G[=k#8iYKDhl
+l8jZnG<AdDGi)VphioW4l72m"(QN8-HeD*KO/14ho$0"NVArG7p'-QVHaCVg'/GVi
+WO7+pH*@3f91SQfr8]f"^ZQYMo#@AIX81@C>Pi=oa#m"/DQL<!`Ss+p-iFnSnJQM:
+f^2_;Yk*%NB*!o)\4AQtG7jiP0KQ_].)na<eF/LV.t>iVIU?mJT"\b5L=LChh^[s'
+/uNogB_pQWd5@5dHYFk)@?$M+NMHQ=&,*``g7UHphtS5cQCG07p8gr#L2dhM2fX]>
+=Mn8JAN7ubl>9dnIUrHYc:@+@QJ\4iQ!]_V^0/rC9h4eLUKp)h\"4kSZh5phgj7A_
+`mc3I%rBbh:U9hWdHo[bBL6\MdoR)Cc0Qmb=eh!d#HNBR-c7U[^[mU,8".3U+[#;p
+!''dkjfLku=RnAAqMjC"jdIO(\4$1a;E1$;J=itt?NZ'hm*9H$ADuo9:+%)s(l4+0
+\;T7=7X1H;+'2BUk;W=arrASJnkYHsl$`AIjA.)tPOkEl\jJ7=3bO`:&j^:WD"0X[
+Em0;Ni.NQS8`dBuHQ2qgg?j?P3mCE9>"g^J:2(R8Hb-Urf0U*)",N!#;qqeIIRSb3
+?2e10G\ad[8mOAXndjk8S<"rp8FmN^$^hV^=]u&/8IT*P;AF`>NAo'7Bg%1$p+?Vc
+V'orl/m31c-so5BiRJ@6WfM5#L]7@=rrDYQg-=`'k,7@Vj^jL=DtJtVb);"`^X]K"
+MF]B-gc`&R7/3!H$2Ch;[lou*p.g65Xii]H3iJ5R3K8YRH@_5K,GV6B4uhF`J'LW!
+hF7A;r4;f_](3k7W+qrlQLWa6H%Hpn93Y6`8q9JPHu24cINKQ9ZTXJtYO&qmBu4j,
+o]-&_nK"fOg9]!JO@R"6n!o$S5P(BUVuC<(n+*g-hiU*Dr57+`KmPDSX"K"n:!"Vk
+:LDNbF@+5<?MV1ZJ&(>qNm>VHbH/O3)6\h6,TfbVGr3iN"O%!?,Iu=M8UaA4BPYAO
+3X2RbCYtEVA,NF=e$%#\3\Qmu;W?[j&kFW"j$CJHj7<L9:>bE:G$]FPNdQ/5+adD<
+Uc75SEf2'$H\eSGi=GkI?i8t,QN$sJ*B]afH*:T(0(nK%D+ZrI8^M9aN]W/U)&cWu
+>#0f&8;*UU#CObh=4qFd[!K8s[,a]O`@2j*)fthM2K=U50!58c-h9q%J'$U>Orp"`
+^3%hG;ClFmT$(+(k,>N>a_Q*8ie]&`Td<=PVO\"]Q$YsP>0ggRk=q3?nfl#H8E,T:
+f^mp=Ar_+A3.e#qjulrJEm)N_SoO?dQ%(8Jk8SQic<FX%>eQbtr57X`1<\t0aH"ZW
+U)Gq(#:*]Qn`<)<UO;EIq[p#lQPP!]^D<<Z!5^`O8/VI[*P$#nk7Hod9gTh"c@^4&
+1s*e-5Na=W,<VCi46;OJ]lWc(m_QQpI;u*/J&o*F/Zlap-2jq9>L*_>a9"gUB['\K
+PUf@l"#YLtm&t0tLMCAdrB?r2n:<@;1.^E`X0F:N[jHK!a2]V+.BVo.k5;I]nBsGd
+k=lW2rc.r<S6GM;j^+_E<1[A#<7\El8Mo[#]FSs^98&:Q2e56AOE]FaD0nL:6)BmF
+(MMgR+DOc,ji0CU4N4HSZ(-J@.f>dna6:C4c0tJN:W\+0O#g#2C#s9UX,kN?bZd[K
+9?TM$d]K>]O$L]6VY&d+:dJY\DEkNr[V#4DZ(8#NH=+t[eON?3Qd\(G1#hqVMlU9U
+;i;X*6u7nAd&HJd^EnBm-9ic*2S@QfjjpR0D#XL$+.4U[d.ooM\m;Zu>SLL\QLale
+)8_!\)-)IqW$!(Xg+Qu`=0_Cm<t++Q%^X,79LS^ES/LkYQOaNI0\m8"*WCJ:c9hLs
+IR7B*hHnbqTa.%!nZ0U7C#2G.[(BK0$uS\X,fQ!!@E9T]m,,+H1&[C2?a`+j`cC%_
+iSfjJQR'd_3mr*4`JDp$bIX,W4n93\?iL*d4lie/q<uM!QelTZ!1[fq&*88Fk4p9`
+bEn[KNG\>KRQ-mJ)HM_.UnSofF$$gYOOe)%feln/7h0e(Xsi>O9S]&jkCuQIQrh,;
+r+hiJnpg7`o&'%co/H8Ro$:,0Y-u_rIjsh3ZG4q-XfPhJ`fBJ&6I;NBa[KVinTHpk
+m=*(B%a<;aFh'@6:t8'n+A,Ztm."Z-P%Hg=RPc,WRXTX6c<:-<r^;3G>CKjmrrA>s
+lh=91g0SRkXbEm/6`7tJj=$:(:/&hG,p@bKNor?mb'ONN51&M)XM^FB2FKs0/"M/J
+^0^N7qOCYu,%Jm/*usO;Rt$iPGNIB4QBTI@o8T3Jk6@F<4ZTnaf)2SG>"`]6<IH]d
+RNoJ$_:REu]n+j>]2urhFjSR['Y$]W3CK(^JA+bRAJeE6n$k6gBjC8EQG;T=ZnFJ\
+W_)9tq89s(q5naAri<(XQ"-^sMeVp];O!"-D2uXtm<AI<F]oG#b]^,p)%J(MjuB-s
+d2btBr@n*fU%-G'5<43Ha632]^ZQ]:r1o5!?LpX;*khDb>AFfSW-^Ua`j_6e:Xh#3
+<b+&@\]RFqcHqndjm@lhD\amo'I>7WMD;hm]g9/>`cHBP44Wn;I^RHeFoMG%D<71u
+p#iM&GsD:J;dT(`U\TD>ghF@Ec@]c-ga[U`aTB]/+tSW=&`_%q)#jTOrr?3t9H($'
+B]?o<nD]7ojpp<A^=OIuE3]U!]7Y2Q^3aYdUX&_.jr]dDrr=ljr^bT>!%tJDA[mIj
+.;R),I;ZLb1eR<BTE7Bkf@]8Up9ou"%90^p/2Gg+6[55EYf2fd2cNi@:<Y%[c&0+k
+.dYfgZd$7S5P[GA!9Y(]n0@O#rZ\q6G!1KX!#ZfTrr<GErr>dOj5p:2*qT+BBE-BU
+2u`kAq>UHGERXpfn0[`3rC=u$M>mPZJ,./@J&:aU!7Np;RLehYJ1pVVH\X`M3GW\F
+Y0Dj9."HW$i#ibXEpl!`6W:MdB9YOOj]8h!o+$I%kfmi]LM5\s1`OJ6F_p.S^,TD!
+iW;TpV.pc8bfr>P'QHnQ@Ha$8pIoTl*_4D&N$TM3g!e;j5DOu$^t?*4lqVU?+_N:)
+#3CgJ1)Z$Z'-][^DMR,U'("Y-D-nLV^7$">doCLb7qT^2?peh4<<f2*cNa+3+0n:I
+b7)dYW^Ccbh\#*\H8!Opl37;!*W2D#3<FbM&dP\Q\!:e=V6'=k$CIVG%-YQnjp(-<
+1X!-Zf8Vf=ji9"_S&^_3EKe[F,CRP`UD)I*iSkKQ)V_s,3Rfp'6V"A5:QJIHRTMgW
+OqAD-&?&o'JD5WBS*o)*MdP+_(hobEL-mp$6Q_(3^jS/nhnR!lo#i"t6$>PP5gIeN
+=W,"gOu($UOg-0Up<P2n&WrA`Pg82VkaUX]rEL3.GKk@ODD:>`Hg;4r/i<H[Rf3pN
+6:SkE=,C<EckB"P9%/1Q2#85*B#F4C[.?:6^l3Xq5+$JZ#TfJr3f\)G+d+q9NB21!
+m3Be<A_.oCZs=lqINiRL(Q=<NA&LN4Oq5!DT$D[!gV'h>G_V[rX,:ot:/U=YEk3U.
+DV^@LT._obXf7lO8CD?sHO+`j3.aL'V0fK8b^5PG9m.mnC&9,JO%ZC,&;Stdc^Atg
+`\GK-[gk37c.T@'B#S&F'm=CnfuuZ9]^Z5j2!:<#R-eFpJlIWlcS`(Q!?o(bNE+YK
+A!)PK0iG961MrNu>o^7.Y(P\_dD+jg%_S0>T*TU15::idWp06RpR*]&N)9>er_5^4
+01I+0/L4sQ8RoAm-lV>^iY`cs;AOoE'KM<0\u=\S@3,+J%IPj]O4.@7^OE8(7)XH.
+S\[`F[VM@jZ.Mn>fW29;Fqkak`2g6,-iEo6:;&lY?^8?5NnR'H^FslS)csR=YG<PT
+DbHFP-;GbukW@t5rrBi);3)f4C9\FNab5KM!(_`l@!2FE&n;U1>8]<u!1]b_!1\uF
+Q.Ne6(d.O.KDCM$l["V_Zo,/[mYbRt*7saU3K3KkeOboW9N8d*WYUg\k)\/%ANNO$
+Zrgb'%,`jNigceMJ;>KBjlNt8B!4<,'1V=LL:Q=D!7'sN:shMjhu<]JN-8BqX'+6&
+jqYKDncBXqG93G?-%cR&;909hkGJ,&WPtLa:=ICBJd`qqS_"/G%N_A)VMLE*eGQU>
+q8q])3r]3*+5(q_;">X6qTo*"cf_H`/t&j;IACI\%p$HR.2.GR>\M?02ENtN-hr9O
+C-A0U%55/r`J[kB*mi?rN2&W1>]H$k0(ZR:*EOLtV?Dn=+nBBC4eM`S53s8=k8*um
+]h$[rJc>^GO.9#D(O,S65Is'uEr.uujEoIe>k-_6n)ga=T)SfR2'^[*I#[9<bl7[d
+cc@Nl9)SePI5genbGbZ,8L2]H'@Sm.W@W8cW%6W0m!csHB6tb2*4YM'2:<,MP2IQ%
+kRTh1&cH2!jiJD'ZabnO[p5)Gc3jPYO!9$mraYprC0E7#j_l[Fid7:Pr`o8Gbk?e:
+rW8UHJll9H)/VY&87N70>fH^CJmW(1d-Q`FCL`SaA\nX&d`-/MO/1ZtX6,r_:)V1h
+5k8n4#P0>)rV,BMTB?a1n+jnOq8nU5Gq(i;e?tnk>i!9'-_hneeD&0g/m:#&U.ZJH
+;rJ/)RBt96`]i7N%a4R$Za*4Y!\qq:T&ES0*W4"aLTN8%.H;b"Z2ctWm@BTh/*&qj
+bTFq;aNl^BAbk3+nlt^$<IJ%H,3mSu7`t;a_IS8b-`ZG.\J\k=.4B=WZ-.*3I1BOi
+Z(85(e*/S[=/LsI,\r9B19.q[dFtXjGnJQdN21\oaf<_:[tZ4/!''0;chZP\O86l!
+5Q5Z'o0^gWDs%=iIq:2-B:AJgdf+#h9%lpojD2./m%n2An]D4m-",6gJ$qPdG"64h
+.IEZA$0`fTLs$dO+J7l<bGB$F).sq\*01o*B;*U`rr>$\VLDn<5F+P*R^uS_Y,HG<
+bNo0.0uFNhooMe838R6X4-79^L,jJsd"1(hk=>OP"H?0[9s*be\hV0m3.Za4Sb28o
+Eu$dCBjq@j--Fg5)&^tIhp)c._H?`8X8)khgHb\rr0u7p&I+fenT,Dgd)[,<;/39X
+K:7GifHfGrMP.'\Qn`bc[ppsHH5rAJA0>G7TQ%i3bb+\(ouOD#aefY0cP1_m*;X7H
+!'*Vnp$_^qDp@&:!(H:7n!#-.(@l;fAlM:Yh)ANakDag%LP+:i,Y@"ScOo8*>ofN4
+nR@VDb=6GhaD];G:Wa4Dp\'16Mfqspo(J'C^6]5VpXf"O2\B4]!UJ$D;,$;(XmB26
+^UBOeO;;kJ"5Ok"7f#rj)c)g<dg::P@I\\WbtTie)Sc41J!or@ho_#(D.E0-c!FsW
+4PB^G=m0m#V!s45W>Cg4H?)@ucHN=a6oXJqYA1IX#IITX2-;)t`J@of1R$=,S]AL$
+8*02^fVA>=@.@OWFjFUtEdhs<cEI'<K))S/jA"c"5>]aLIl=5i&Cdd6i^kF@\#b90
++6uk6E$!4"48as&f[Bd"P<<l@>D.]iqX!<Ucf42*FB_?ZSj;&OSp(,6S6kcAjk'Fk
+^Z?KCg99W4Sc"tQ_>2^DF!DNemjsT)om2lmOngNSqGLA/]5e*N0%SJJ>H$%p5A<cC
+;2["'%&]X&+$i*L6bhKtGbp!HS2uYIHWT)f"9/?b^>T"kPJ2HQ.^/"qR<Iq5m>0"W
+r#G5/g:.:$228m!(@K?n_`md]S[ZJ^-)ghDU7QgEMJ`>+V*F1]:Vkb)+7a@BKDpH5
+h)%ONXS\JOB0N)T=s&E1N:71Sg"BQQq.og&#Q5>mrc+]M^ICT"r:RbLBD,p;HO\[o
+%CkHtl7TPBJ&5U+I?r0:rr>8:#X@JiY),n]H(RU,%cA55qK!2H!\b_[NYVPiPO8kV
+:nJ!PdeCThaUJ@DMV%i-<i)dFc=-Nq;t?GZ\kL]tQNGK/Nd5Hp#jJ5_U15<bUa9`t
+US_,[Ao>hW[8FutRA6++J%[V*L%-+Q<Dhr7\77T'bZAkF5+LY^?h6LIrr=E2kMVu$
+g<\rPZ0?6']%T_?00J'iTf0?ah0L/E@4P;H^5QoIb\W6>XiH`GFZMPVf<IA=G$$-.
+5JM_1bgu?fB78D=%!mQHf9:Wkc_Kh%p\>tVk&2dG7a(BBbM)srRJb<PkkT9kdk7BE
+-@&!s`P9gEJhR`p`5HNacQS@USY[;D1Ro,=-kB:Q$p`]Y]j%`2@SXmZ%Xb/OMXjR+
+8"G,nJ*/4gr1*];\,<;;e,7U4g@WkYl$rBUP>Jn'J/EYTR9-Qgo$;FOMmPPf7G*$T
+r26?VTH#23Jn>b%k?eHoM\\lqah])Y?.`3hD1&J]S)k1VcelhB0CriJ"s;((1d7@G
++S-9_94Fl6f%Q"X^SJISXK6\kY$Q7!SZ;B&><^?K//YmI0pIX=QPM*:St*5SKVPQ'
+RBoZBL7&b'Iiu,Uq8cA-aFF$0mk$E_B\mIM2/+pd,'e`Fe62&eWQk`4#/6V$6EqUF
+m)uo_^=)_DIa@mQfXcVT4EH8f=<:D]^apRMOrElKnZucp*1@"/,._.D0BPcq5NaN2
+k8?Cgq7EIrVuC.S<,8q6=n<*`a5aqpG%HEi^]5-\,-I`CRlK\R]jG2kIY6=6da`Ma
+5s-'J)8pZPj,+o[IN4Q4,itU!@Ye=e/Y8U4["e.$q=plcjH[HM0@f_5r1/5(I.a.m
+G)Jg%^X0o3'AGtfp,B<OLSSOINq(ZCO8.5<b>6e54='q,T6Y_2aFBMTq7$0Lq2qXY
+Gq8Ju5;Be9%B`<hF'ZZjE%romPmh/e3u-jUbW#_Dk'-_>FBY9`r3!@r$"VGR0bN@:
+E1UTZN^g)1_m>#)`$>>F--a+Pd[8A*%=?9JRm6M9T96GY9AWn=\t>2i'E2G9UIX>r
+\"RS!]V8QUnW67Y9P(8#N$W8J=kGc_]oVM\\9<rgNadAQ88i$T5Wajhrr?eT<_Yu,
+3ccm4JZ^[%#Np"Tr_rgsc>*@Zc;Eg*!1;L%YEJ#=FnE"cId^="D/Eod]5+psY:0aS
+87kmt6jDEUp<8#$ZoS"ffhT`:Ul!2%0eo%7as[%uqL-H6b[]-uMed=f$=\I2o7**V
+2a?KaT968OEN6k;lTZ`K+P6:'3Q1WRrEJSh':"t8NY,D[?qSt$f"#^0BX@D&Yr_,a
+i,Kc*j1uU];WKI@KOpd4WK.PI1c>S!Q@l(1f2M\LSBq38S=#5UhjiDEjIW+]rR9Wh
+g6=MeV;qjG0J/Q->ndk"H@oC<Rk7*H/jEmY2tL3ElJlrZNkpb=R?$WC-S4ihLpf?W
+eR-CU5;h]^9t@M"Vrm-2q9?(]W6HQ4X%eT[;E,pio^,d5hF.Sr9hD;h4C?f&@$[tf
+qKZe[O?F8_J(\`+Y_*ehNNG549E&s=o1%K\+7kkK9[P0WYF'en]SZXg3;E%"leYk:
+]o-W,1[9Xpns5&Ai0&m>Em-_j/pe\G*KMi!p00_RA;2[*ZuBN@8T51K=?dJa5:9U4
+T,sX4g-"V=gTE..!'#W,Pb4:lo94WNr486<IUVdhOZtnpB%?g=jj,d:2P#,/I#RX7
+L*e3kaM+GW<JYN)pWC1\m'GDpcY9f),Vs)]JWD@eSgte7qmlN?cV'@0b:$?maik(,
+5'Hk+rrA=4X8ZUXGCRmbJ'LXLg)Lm[\+dUUr4fnXMV:V![?aB:/H%SS/>4/XV]>4/
+fj'KBZMT)6UOu:oIaE7SndZLqH!qAn#TOJ^eAeT.qnl`6'#[K69FgR\D!62"^#X\=
+beNtncc\IIo;g-E?^/9PT?K7jJ!3"IbNRVblBXsV;BqHh<@:*n-`Eh3LP'G;eI=F?
+fT0]'0^S.=<J4ie,\lBpbFD@4O1VH(NE->[L5i;UE3&P2o69f\noOeN'?PaqNrFP+
+_UC_1I';\o&a=VdQ,p_NZAcaQ6SI"U&ue5/min.._=9$SI*))Cg&B%ZY/AN=)D+)D
+GqmLm$$o"MCa61MHZeJ0=`WNE0pBNd<QCsQJ'Jr-_oa'b5Fd5pOIf/Dkg_6^Sb\VQ
+CPsd9]<8a"/`j:a4H`1#EfcNNUfiq&!Q+sh9XF^)3\:69ffbt-m._R3BOe#2"6lE4
+i]<-Dh\KBE%!a*Ef;WHP:-VK&rr>&&k-$:aFT2?d>(=gXkhhOAS[Y$"j5k(OkOUp,
+oO\mN>M?u='uq1E@lt_s*-*hH87#P:<i-C;1jSs;ftPhVg*"9;BF)Hgg.$14679NV
+I;?rbV"gA:iU\&E/)M#Jo.QCo-N=)/iP1bO@f5^GVHA,PaM6igRroDuBkk*`DNIDp
+&4/%J'UIk#aOLER=Zo6<2f3mTVSh(sLuP&qTcRb5FunL#i.E22<)!*+UYP:SSU9PI
+\,?7'Nk+`lQ+X5;q2sdpGKaB,^.WAsBc:jD>(k=/0J'>!F!-E]#NB2VH/ogUTC!eW
+-?%)gN]_eoO>5_ie$JRQ_uLpG\'G-U!6utX\n@<.!9YSVk;`C]XP=1X-U>GrFWF*9
+L]JX,eTD1/2)P8s3U)"Gi1?^J3tiAaEg-hEb`Y5h?)<kt9X6egj4iag8b/L@@f4TZ
+rrARLo=(9?.6RV1kA>G7bWWG!I)Y3\&bQMP/AXR%+WdsLhC2rc#XE'Z=3!E%e\OGe
+ak=7B2Q$a=k^\sic?1QRrI1?H/;rduBLlYhP^t+NG>>^@J,Xldq6P/*^WGX/-^YrC
+o7,j2a661n99@7TYT]!gFE>YCJijK>\#85,b.ll:m-['_m=VCS^(!l@,^hd^`P_CB
+ip=$49X4)Y@;56Lc+iGph\CqEj=`+Lk;37Tl:madpbG/`-YHQ]!0GV*g:KH2Qb@J5
+a*EUC!0W37IQN%3>+bNqeT3r?5Ngg::]#D:!2c-NaSu6oa82nJLH&r-^QcJnr7V)M
+3@4\*3EI$XkN7JZjc/A_R4at9]"QQ+;YoHPC3QBd5lUgodji:uf"&QhRpF]N?Y?tr
+p6M.NQlKRgAoWssL%8on%'mu="2ha%TGdF3nu"hP_=I&X[/DNH6d@UHHh2n(>da<o
+XXr&C.ADu;BFmG@0;fZp:O6)+II1;9>l'l77u6-Ar%KLU5^V>,0LU+C<p*0#,eGra
+m+AAF@]n$8rbVT7jR`BOS5fLg^lQ`)pkn>sf_,jRA9OUC0+\"?K9)AraEu7g?(_/F
+qD\ES55G3YeoB1=!:V?,#Q707Sr*II"b6?h14R12rrCM-\=*rrT7ATgNdHODloAj&
+@]mt5]/D/*BiQLU<8t(#0IujE3dBaS;&/Zj;Kd5/lgkM.\(B?9hMWAN/NU_5,`,5Y
+=!04N:;XB8I&[,G"lF-=HEPZ;fsp*QLDIf;\BPM3G3QbC8$CFb;_T-j\.9SBW>J#p
+A4+;edRs$Tpt)W(a<?4F""`K;fDmu.\1fbN[E1XuQL@lG%@sTk9lh$(NR/;/P`8Y*
+<3$KSG0]F+,H:'Zgqfo7.F&R?03!]85lQTTcoIP$4IH13QB@=@20h,XdDJbW`ql!a
+mEEH5lV.JPcK#`chs\k*gTUAnlans2/r1N;RU<rTB09haol0`a_7*REPUsl**p3lY
+3<b:C33kl1D/`I/.hO)l]`f48SFZV@o#Q&X@k:QR?pL3aRu8?ii=7$8'O.O+cJSG=
+W9Q=M2\nHARH1V`oVIp/EuU*i,RVnWqHs4)IBhKe]bX=+]MFRsLCBsfR%BfA408uq
+:'=+.>'f@,i4^)p`ZXko)U"cjBgAS-ii^O`]/D/*U-KGQX0MiiIm*%F?*q2VP$_*K
+C\[Oi*KQs&hd!)qd'TmN8#nGd(G4/FN^eQ\R'a3EO@JNSNk7fLY:[l^[`^*"4P`d.
+_n;&+q7H5Wc'D[Zo6ln4Rpi!`4DSQ[d2ReLNd9Q"4Hh9g"Lc+f%E#/i0&gta<AgZ>
+?'>bY#8S0p=<2QHI=?Ca?LdJuLbdbp[6=-3:dYp/,Z)F``=N=i8-5fkM?';c!!7b?
+TGD`5QKGGg.dYfgZXU)[+<I8eX0@pto'V4oN?\B&61YkQBs-[2X@<Xh9"p-p\!f,+
+j)@umO+#%D4?7FiaW.gd@lX$%O@R555Y+c5m.6O0rr>#[rr>$pV/$ZYQG8X;6f#^:
+cO<l1>hn)0MJ<F+RTGI:fVob?lMgkBMsV"P(P.cO1BJuq)gf@*m;_0]_]DZnOn$`+
+q31V;q/Q5@U?TBur5/$+*bE`@S$]oY[.tu5'SbQYU/t\fj#\It9%2NOI?!!mm`3L%
+g,u8Qj9R#.,T^IF%lW41UQAH/e#Ie9:To%2bC40r`hVVp!&A5rg<Z(-CGTCtkgrJQ
+)/]/&#f)nr5sc#Hg`#;ZQW9ADSiQ;]_^#\J%Uem>.#CHInnSUt0>B,eS,$:MMf0tg
+$Ug'!^0@q0BruKeA<oYU-XuX#BjKWU@pZ^0g7>@Fm7fmrlDAT4QT5tj?Jkl.N]>!G
+:j6.ir3lNir3Q<tD_Xo\J)s3`\NcPNQLi<Z&^*<-h9;_:Goh5V4^F$JV+E[kCA.A1
+[>$E9b&RnfiIE$O)#""1$Ofm`-6fSBXu";:P+S%HDtD;@5;KmhjZ"p+p#P'Mq01&`
+2"9:)/5FV9rR?Y+"$9=54\4dVdJ!";8#4>'_j&1G?`k=bbN97].0gP\KZMq-;k2$9
+rrAQDrrAR"fCeAja/Ju5B_#n^'/dbP>I=+NaXahIB7_"!4is[tMYGBHO8]E6ctMnW
+(q!9R!eAqMjj$-7m;"aF,h\4GjEu$EH->b+nq6N9b5+Vl]\WC/UMBd5o(mZ9#*`L-
+-&PMN/QrdH&>0ct7=40dZTY)N0$Mhg<N"/&AXCpt,g5)a@/O0R"=,CTK;r]npfmQ&
+rr>%Eq(_\&EH-F&Dr_?lbF5!WAfI:D4\>(q,"!3co=U*`8-FVh*r1rQIb".aD?)QI
+jci8s1^D/G"7]W@+ckk%lCT&#b<PTZ^QZB-dld#lH%3mRIBJY,M`93Ll_Vg9\q<kD
+ine4UGmE`#5tm>Qqbc'qUF\1MB9]6C<\pu<)fjm>\0a1D)kkTI=U4N\r8G-_j%#A^
+`=JCo?cjB5gK1_PDJYnFT&LSu;or;fRTGFZG84DE9\AYo^[:Dp"/j>BR=Q&AdBVMI
+!<'#sdGg"f(@#tSq6S4i#G&N:Xa*F\qJ'dE?1S6+=mHu:N9IUbrr?a@,:a,rK:Kr:
+<L6(A)=U:NE$A.(Uk^2,OCAKjafOWNO8S%AjR0/GD5@/-ht\T:^Fh?9JTn!e=6he<
+$;;K$$sdHX2',e+)2P8qL2O6m=k\+Co'H]q,>fu%e84#+Q1d'U4u3ZM4[%'>pubi0
+Zs>IXdPUn-9<jB#8(-cKYcuT<Id/Fs@hH`m;dY2+$^qL7%S=hhc,rGqSu+p/5;pjg
+'KJ&"3+];kihtiXQ^'\XjD.Q7Rn,Z<k8W`89?^QPh-Ggh0'u5DAZ)Y0.Y!P1G,X.V
+=aP#?'@gUCSOC,,;;m2n2]/-V\+n]KdpiB.2D*GOcGsGUrr=Wb^/MH17BVUMnthY@
+\i^l>TZ[Si&hcXWY`Q=?o_oqgRZ-FmWQ@9C3K`h?\;\#h?/No<Ki^aEh]lKoT9N]L
+T9Ittre:/bj_-cWUhWtcrpmq_8Rto4A6@%+B981.!2)1'1](OgFhOuA3H^`b=[[4\
+CM<=AJ74KQEJfRM<k+EejQGX=TD=bNrbpKc=r;`Dom:VVC*%"#b[lspKQ6K9R1*JC
+M+5\C*1adFae=`H=\7)Z>Z$7*-,0;\WU&)^..M<.rU&,,cD#V+rn48eCH6ROq)A+f
+k$L>uF7Vn,o!CH5T0/q__r]c01p\a!aJIMm7<'3=OhT88\[U&]p:!hmaeHh?`s,EM
+iO)46X4mC[X`DAu84\`XFZhG!o,mPHaSu705$U9Lr5/%&?=i^!>siqlCskrhqY'!;
+T9Lsf<N5GOG"6FcHQ,331mnh9J.]^LkjoaF2bm%Da>d]]2-OW-dXUEe5N`k?/RM-%
+oWQD#3nIE[Y9DCPbJA7Ebmhq0M'A#cS:Xb**QE34TD0^Z8#jHX3H]D--7FpMi:QkL
+A#$pZE<u!g8^>*HMtoO3Abia3gM+EihFl=Ff`dKi@eZ"I49`INUHE*uNkP4lY&h:7
+gR@!>al7")b7qUMh@5,-%G<I+-e'`u3=5VprrAQqr.k3Me`66+OhWJ)h'66YP1sbM
+1q.Z`"pIeupC^"qD5ss"c(AhLA_S61O2BH4B9F:i!V$a'r[iBef^YGeVc;`laWH^R
+QJ\$8@.S<*4IP;5F=hjc=!(W;Au-3J8Cs#]*aVOGaQgM[N.)=!k.A!IG?`c\0]:Gl
+1WP#bj,'ddmM#o\D3;dSP!IgoF\0d,rr=C\/[`pKD%H5R;t@:3J!aPH[hbDcR9EaH
+O?s)C.`Sb"cI5!Xn!7ATMdM*(50ns]2"NXSD+*d+/,g.4U(/"XERs0N<Qjs:jQGX>
+P'l6Nrr>7Y?coV;*c:N?R69<-7kDs[XCQ%%Fa4i@j'mHP*HB\X6a,*UE9T1?1W+kB
+\=0@5>>W%>jK((*&i,9;?&3cinji8Wc$js/hr\OajNB(R!'U-K`7bHaCF"*8Ql*J9
+o\EPC$r7pQWKGX&p:F%oae?\>;8JUaL>4Q[mQM>j`>M3?NPflqV09h"O3+TKD%H4O
+?MrI(r2g.#jqjHQNMa>M5qL84`%C3')E*\s#PpQ4AOkDpq$fi2lSTS?BX2.r"u8k\
+[7$U!Q2R[!U*mucpU+>\bs+=?k7`=lrr>5+\\7T9QPWBfFRZA4rcure_5TrhO+Yq=
+.5HI^,Z`Z-7W(AXp><9+SuCm/Id6[J/`;'_OnVqH?>V5LD_?J*L*J\0r8XFIilC3-
+r8[eWR4$Ijn&u:k?[c6cbh!bm`&\0bba5"o1##9A`2Z>eH+tHR;-Jt:[U.YNIA=b$
+feDNJUf@md_]J@lhHI:tC#C@eRjOof4Ycc!rr>%Uq)eDg-*>e]2s(%.k$:=!5=X+%
+PWUme`EIp2&2\DB"OnkG"4K7o`:g+9q\1-okE[hT?r71,f`F@Wr0SXhgkE.7K)Yg%
+^EPljrr=EInGZX;%o)W&`h851rh0D#[rWa^KR8QDj==O2ntg\@mB:699=CWBXj8Q+
+b4uQuU%+r=_[M#cVc;^fc!U'tJ+J[!GOlTXk.`bP='4c0@.OiVhWl)=[l92ngcsMS
+W_O6Aliq;g458WIm-QoWqJB3*NZUq[Nn<*,-a.l%oU)Lla)g]l:3<\^rrC0Eb>66N
+02^-s!%e&IDrj,@<k9+$Kr)/?8@%"R&c.1)mVBd,f]Jg7qg2])R:D^lQ<@i45g$/<
+m=9#lL)>V4:iRcR`q^GA>Op,2hd#bSRCo$N=>XqMH/=%PH)F^W:Ghg/)'2]$dn',3
+aNQut<;a#g0&G1QQ7Q-\),0"><\S1m%cKZsFgOLE+A%B`H*pi8??Q12r3Q=>o-]fN
+iTC_$6*'gVaV$/]<S%+_i4-+9Q"F>5%#J.K"rs\X%0ph;F;Qdto_AnMjqTl&,$t-O
+m%hf5AK`6V%FjQ$o2kkKfDOZ9SG^3Ck+=>V;<^##h=\\@l5*8Rp8`0aNQL$ZmH'<E
+ZP#j+:OLskJ%,Big%YcD:TMSW?r.d\*Q*[G4rh-kb=RR\b[&<bk=+tYjCdQbRf&GI
+ra'BtQ[17`!0]5^#)D=#DBa\VJ6/#HMh=L;0r\%WWNC5=U\9>I1jYpu`L_(o/p"<l
+^%Za@B.OUY6qGrf;d/q:rrD/Ar8U<.J)p=&0"(M#q/rTK)U-UA-X!O[2bOh_UlJZ9
+,\Y()NuD*5F"=[^XmKHJJ;1C-/<L.P1^Cre!.HhbH@0t^`)Ce+Xr74OrrC>/r_EH3
+]tF@FR(bi7I*$_J+/<VO80//[j58c2&2\DB("l/'gF;JrBtI$C#s'X/a2Q7)A,Rs[
+HtbSp6RM@>i(1\VQCj:hPeWFohF76]jBX^ennJ.VrTjm>>th:c(%*A\Pc,e=GuNH@
+gHNu-LMY%)>FJ]1Q(<]G;#;%M#\3^"4-B'N&'SD'0?[_II6J)jo+T5LB:CJ)8S^5t
+O8%!WCrR@>XKgBl()?;&p.oRAq]dbPU<>)c4SV]:GiX;sQ:t/s.RMjk1(!c#rr>$\
+q#U:qXMa0R-%9!2H=":"93LR9[+BL5()/)2\Tp=o6V=Hk^2:JhgMYa4CgIm\;`Vb-
+BS5d4!racRoU)nT.)q0UPLSO<rr>%1q'mKX)3`.-khhk`^ZAoch-DJZ_d#(J#q7OE
+)HSIVENNs(CrIIFG*!V]1EZ*nm^=4LpMI[bfpiU4\(/aR3RYR(jDQPt?28,*no']`
+=M2E1SJ</%h(%3b8ApP:\`E,$909C(P&$N3dFW$u*CR:RR@3-(\Oc<V.V0$.J.[U1
+*(`.+o"X7hjd2-Xn)ggt:F^W^ha@!bSN6]MMD]0`Afk;68aAB]9:18c%TQLJf>Qfp
+Ze?FKZUp'FRjjpK5=A$`T5h"eR7)#21,8ofk1+ffrrAABPJ<G+P\K7c^FoGd&!eI3
+7Gtr4<Z,M9lSfpt,]?jX.C1%K#$9O7]rg[#N9]u(LE(PKFm4tYFoaSm7ip%mD3@\"
+f3aa!QPY.>[ND"qH!2(M1,QU-W*&kneX/uM\VaL;0c5C6rpFE&Q*0n%qa[iEJmFoe
+UhQYX,7UTo_7j!r0g,:cK,uX+hn?&MI%C'nq/>=)1\nf25#CgW3[^=XrAW;Th5Wsr
+cI\6UZ;&H,8JtUiQ&ice>WneJ(;$q1piP5KVKf<P`tAWM:`E49O;uA34>=cHLn\1G
+7YAT8r#r>uGZEG%=(]EWRh^*l\+=84!%4E:ihubYIVJf^`)fg]a0:'R,IIINiHTk:
+]Gu=6hF$.Kip?]oqD\ES55G3YeoB1=!:V?,#Q707Sr*II"b6?h14R12rrCM-\=*rr
+T7ATgNdHODloAj&@]mt5]/D/*fW289"J*1\'DkaMG&a-5q%m&]Fgo-6ie59l&t>22
+o`"o9]2u[\.FZ0uIK';!0Dl6j8%(KYlLZf^N_#0_.<,-Y[JX<2Y=C.S329,t"/rDX
+7=XE'q5h.X>?d3/L0n%[7u81R%,jG3c$Mr0#fpKX^Q.X=Z]"aNQM79P&"[pY./?ca
+bLXm?KuTl9V9RrQC=e&^!M9;klo20&IqEf^4&7uQ\c.0@mI]+@KO7`TfB&2^)BWpH
+o=bb;]UXQlatQ4S49-V9(d&dfbo\($!R]Qm7:(VM>b;9AQ.Z!am+AAF@]mt5])p6$
+DZ`D6gd_[B5njAi$dM+;&SopQ#@Y>7&l6&QSXe<WrrAJ`?^6>rRp`MsO3Rl$*g,OL
+H/jeAlKp.a^Q-^4WZmVc#UF)oJ00UM1NZe<kEX9\6Yhf)08,EIRQUJ7b92UYLH'M>
+pZ:86q14$8q1[r_Emmn44P+Mr<l-j0hbg\j%[WKbB6%PkD0HSCfE^Q*&Mp,Uk0p\[
+_am!DNW_rZ]NCNib2^]u`P5ND4IU9Mj#hbXhkk_Z_Tq#XcJ$:h+U,!<CB^dI?7?k%
+.O_Dn!!BBFp1@"ZCm0)3Ed9Np!!B)44"h=lCfT/n=(]EWS#ufE?(7]6;S+h%G&113
+YQ7A_f[@Ai1p5)_/$i[d]/DLKc%_M:YubPR9'iQci<nq_A<kiP&Sg[bd^qCoY0DqV
+ZXHpI_+O(H<S=TS]/DLKc%m(:c%m(:c&F6[@KO/",V-31!kTk<ou)biAT8He2o$O:
+^8gOC)HUOjQ.]-VQ.^C^fi5`j/$eZm]/D/*fI:*q$G/2Gm+AAEL^*qrY04`j=(]AX
+=(]=Pb,,LQm(>T[G&/Ypf[@Ai.dYfgZXU)^MRtbrm.5/Xci-^)q8H/-#lN0O!/ReQ
+SW@1Y!6.NCrrBq*rrCMm3;J':LV3T)g&KRu2u`kAq>UHGERXpfn0[`3rC=u$M>mPZ
+J,./@J&:aU!7Np;RLehYJ1pVVH\X`M3GW\FY0Dj92Ce(GX0S^VQ.]CGCOem6X0F+!
++KTA#NG&huD=Euj"1-6Uf9gsWjW?9o5%)n<[AiGRl>SWCLSW[2['oH33uF[$YlYcu
+(sd6fck]VGhFSkY68NJV_2g]'%P]!iQ[^G++kPWVjf1h(R23iWFT!HU5=3n:oLm8+
+jqp5';uAR"nHd`CNKRFJ>@qIJd:7ml,h)Kq3!EDc#;1oe.8D7>*e%DHpNtTgJ:Zk6
+9XO2:9@XlUNhHX"%V8WZmA+U`[#ru-+Ff0.phR9XM;u\YEY\BHfa;m4D*lKaL#ZK)
+[Z*V_Ajm:C9a)TNG<Yg@QS,88@_trf17nGk@s`L)_:\3Tggaut)tJ.WqXpgZ**kqO
+(\Hm.CIET-<]/OVoJf!(?oR9<8Iig2\+u<NSJF:Wr?/\QQhQfS<n<^I>Ido*(S"59
+2Dn9()$sLE!1IM!1cgKHWW3^BmPXl)lqU*,B-7&leNY`F?d,'*7.PMZE?j\9Ab7X"
+49[99oikCB>Q4])O\afXCi,ZjX.m](:6jIFnR.BAjN/Ms6a#R_#lBZ]9j(&MW40/b
+hRIXf?c]o:8%6o!r7:lJVfdt6VJR97B9(Oj]6ij'UhL/3`0u(:aW(sJ"="LSLuYK%
+UQXSd(r6)ObaP<A0I<tYj_5QUhkR5GmWp4@Bqf<"3`V8MDe+P:QiP@S`LVeb!*P.8
+!"JW9bsk8EVi-i>!,_k,l\==o;ZIN7bJLF,MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj9
+2Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<
+c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfg
+ZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<cSkc=rrD-OrrAQgrrBiq
+bs1u\l8dMj&,]s]TDU>QrAT@iQi"jNceMfus4-s)rr>7YrrCVie,KF;-M%K@8'.?Z
+rr<4Pq8b=@_X[X+dl=k+&+6'?0D:EQLHOo`CNEsfc&0+k.dYfgZXU)^MRt9oi$-_(
+N0`cRZ8"IH;3lfe*h\RCq%F.l,hR9\mkk#<q+&Z_IAMOteqTW9]XF8Jdj6]e$o\hc
+2"?A\N3'cq=P-RLZH+Gq7Vm1[V4.UHM;mM;S*N>kb4"3=-j&h)!nI;N-?Zpp6W:bj
+L9YNl8ZBC`SiB3jG8@b8.5[B7YhUXo(V%,KXrWC!P#f7%ahc]8PX*D*.^Ql7,<uq1
+L]B-eQQaJ^mp'5GSji7jX/Ph]8b1EMG5bh=`fpP\?7ik72]'J\F?`s;Po3i/X>0rt
+:[Q?H'J!FCLK14i-S3/kb$0kE%jF.%Y98[YOt!QD9I9W6Rd3DnY:M%U>2.p!Oni>:
+X^Ma=7A?ePVV]G=K5E4<Z?g<n?mA]apk:)Vnfs"rJ35RGgsgSXR/W@ll/\;ThWtJ*
+PQ(VC!NoU58t*0VQ_f&2;Hl4`R`QE$[>hLp7F!`.9`8cu:YOg9;HOuCOc)/1@[Q0q
+6DMUCG'L_gP6jT%]!b$]-_#T9rr=i4(;ISPrXEp>:GtMAl+U2"or^]"WG.\aXODK8
+`aOl6d'(Df57:JIb<%en1jGr9S+,JlpjSXOhp,(J394<R1T>YDne]Cd%D]TDn+Ff]
+\m)3;I6A4nU,NAiJK\-IKne]_5KoTSGHS\ZgA6cU&\\iVCT[#Br:frlL*7Wt'3sni
+&ucR%!)O-(R[sN52JX;39(#DoBdVYs)e'BFfW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfg
+ZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbr
+m+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5
+]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]n$8rbVT7jR`BO
+S5fLg^lQ`)pkn>sf_,jRA9OUC0+\"?K9)AraEu7g?(_/JqD\ES55G3YeoB1=!:V?,
+#Q707Sr*II"b6?h14R12rrCM-\=*rrT7ATgNdHODloAj&@]mt5]/D/*fW2>fY0Dj9
+2Ce(GX0RP[V?3p?n\g>kh4'J>6c7d'D:uGriUF_=ZZ5`];B;6^^-mU$dr*4ed-TDc
+ZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbr
+m+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5
+]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>f
+Y0Dj92Ce(GX0Z9<c&0+k.dYfgZd$7S5P[GA!9Y(]n0@O#rZ\q6G!1KX!#ZfTrr<GE
+rr>dOj5p:2*qT+BBE-T[2u`kAq>UHGERXpfn0[`3rC=u$M>mPZJ,./@J&:aU!7Np;
+RLehYJ1pVVH\X`M3GW\FY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5
+]/D/*fW2>fY0Dj9"3YYg&f]Poe#iad(L5dW=]Ld$2Q\Y>>"c,m=C+\5Hp)Zk*tlU>
+e$6Yk:7]J)'cA5Gg6@A%F)!VAm1S2K*"=Wu@TaF+*sL^o:Wk$aAdJI+mM<a^"%:VB
+8$"WD:AGD54m]0#*H_`[Pee((95pN[>H=`Grr?1j8BK$6!?co<Cfl8qX*,uE.(#r=
+g::RJ.fSR0lqg:k<!nZ8_Im)XFp=")[$k,?L>jXpMOpmtlHZg:AHnpoa\(PDK3mQ"
+]<QRNA#Wm%"\Gj!+?\<62e/"IqiB?bP:q!^1N\liqb?cQ7fNJ;!KleCYrT#TXhls6
+dG(aWLsil-@XA1+WV4HL)3Q0r]=26?*8Q2^:t2-`*r-BujHj>+neK%[#n%+,]IN:#
+X0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k
+.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^
+MRtbrm+AAF@]mt5]/D/*fW2@'^RII`4T>EE'gM14o2#?0\rLqsKDtoh*N/o;$cDuE
+:#P'nrph-%pD7KBd/#^$!'^5Y!7l/=rrDO8o*>4aae"@h!!RlJa>/7^nc&U<34PCf
+m[o"_p5XKT4R>(DF(2;sMRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k
+.dYfgZXU)^MRtu"rr>8"/t_`nrb#p#UN<SO!'1aprr=&FKdnKpl(4=C!!4-"oD:n8
+3?TUh%#0SBI0IOU$!&-hLJaW^rrAR:rrAS<o/G_Xjo+Y1^GYXH:L:M)"a//5bLnDg
+iX;db?IEQCmqTcq8Hh_+B`A'uSqZQ=r!`5R^TAEGadcg&6]X?"-lAD;Kmh]_c+q/s
+Q8hj[hid8COoGFW`]l5-A9kN\F+;<gB`-8Dnio!WVT/@3R`aR$CE8u&QRnFo'tHQ?
+Ldf8%UfWNd;d@N>hm0jI8aMI.BETUi=Wn:e!+]Ue"T;[*\ZV8G8S@^egE:M#h`J%>
+j8@M'rr>7urrARF7%'n1CTj*Wj`WBL'5<t[-@gJuEaI/Wn./oK=[XG\EXS-?,4]e;
+q?JA[rr<CfZcT!9=6\$TH!aGHYOdP3pZ=':r8soG4R]*AWO3Tqo\8,7jc84nR3dqf
+*:]ap,Y3QCUVT)I^G'`V27bqgPHsiPp1FR<\@?rg&Lg9$p"SA9murA17T,>l:"t.?
+1Yn[kSm(_%jSo5XiGY2Mj[B)_lbAi/?duJcFULu(V:X;eX?=1:ka,+M>f+`RMhN%5
++[p&=<.gc@fNPsAD0o95p9k6@jUo@;+s@8'+%_PO?`.O$,RcNm_i[-"%];F]q$H+(
+q8E:5bmb3,RX4sQq:"oHoCh4%af=-2-4"86SWEZg,m6u%BuNcf+g!fgHgQT%qb,UF
+1/II#1MF@=is):A[=UEp;iRZ7*2!ct`#Isn;`t0]!'0VZ<Zdg'o85GCHSi#oGAdo]
+o40X6HDQ4[EQ`CPWMr%%PlC`72P1JS6e\l:,;'s(MhjJZS=>Q,:&U_UPQ3jMg4[p#
+ht*2lRGXF(If/m0?i8o-j`d)hnn_W@95/e4jr7GE)<<_Ko6P"NMTE$>!d]g(6'6t$
+BJQc!HP8]urK3T'*I]`0_^7A$GE3</\3"%0gR@Euc<3UbR^'J[9J?"0r;3)3ahCU$
+4P0C3q6B(o:X&8Zfup?thp68G7sdD1)-I]VKQ=k7KH]Kn)@#7]a0WP=\LgjZ3-EqL
+3Rc4AR"t`P)&`_(NJDHX\W"-^KQ0Inh,3-b^0LU8o,m.Vr8:Z>Un2M82a2?S/t1Kh
+YH9)qP4C%)1>?'T&2+n.'!FPM=-n<,C&9--Ye@9g7fWciT-S%\G6=P!r@dV52%n*0
+R68BJ;4L;YE:a'L;p=-\O6(jDIVGq<r^m*%90D'0o,Y_*Z"^\09OPAn2^JC_eQP`j
+<8(.s9mY^l,5VtImCsT!AVc=PP^`3<G2`XE%D1qgjEXs!O&mktGb7QI*Z<](MpJO*
+!70+H,_G9`/18l:i$g+">oUsUQ-t>b#,$Q(P_P51rr@W,9X;S@6'dJ1ej"Kn>eTPr
+b'u@fHP#5Cqq%ur>?]U*PNG+*aZn#J5Q5^c>P"/LQJ.>SVLk79nu]'`U?0+lVDVFp
+Ci.>%7MR'EVQFX)k(>t$_sHfX0=/0-A=866G_Abg.ND[9DD!HD8Fg_rQ9H`8M&Vn%
+Yb2m,fD]bgo(0tP6h4ik-fqi"[\`f!q1%O2otBqHcCoD7In$MZ#c+kc:j*h6,,GjM
+l8-5(ZgCI^^K2N%l!pU:N)YI?_8L]EH>W99mPN=M@SC?AC$V@i:U2dADr7TtlrD`D
+=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RPCfT/n=(]EWRh^*_
+<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F
+'m=Cnfs+Uj`EerJG&113YubS-Il;fIH2dli.Y$AHk+DQ?FWBap#Q?J?:];/crgUaE
+bPgKbkO'tKs3^[#rr>7YrrCVie,KF;-M%K@8'.?Zrr<4NrLh:4!"6jI!)2D3BKs(W
+!5I5JmM_-+o=$;h>t9o)m+!.:X0YcMii^O'j,1H,.dYfgZXU)^MRtbrm+AAF@]mt5
+]/D/*fW2>fY0Dj92Ce(GX0]aZoC+mb=P(=N)Z7XQkW2H3\#Ds$BMT(lT5Q%"m&>IJ
+1C2u@@MB059nmsQr!E&k1k*g2adtg1&X]o/ogFACL"[(c(>S;^8rE8VJ!;&HO5<2#
+ao$hl!1[nqo0:>Dmp,e'd]G.g/T7A1CP\cQ`N?;;@'&l6$I'6A&cnnj#A\Z^XmGK+
+fD\8pN]d+bFimQ:QLXRAZ0l7["=FKFEt0S83./GCo-"&5T:"@.M*/2GO"A>J7i9j3
+PlC_[;D_HM5?Zt0=-pg"?$=N"+)0tLrr</Yb4pKunSa$X<T4<lai+7N?.R9PiMV&2
+q$6#R1K].Q_*:/3_0tFY>0B1\+P.CL>b8r[XX>cAVXa;]*<^<(M5:N\%u+6S#ANEM
+lkYXW1.:2`6#d.[?bGXZl3YBS2,]]V9bX`P)%QT+r8I58S[?X[b.mP0^[m4eAj;_"
+lZ&iuJ'>JEMpckU-+'*KoE%j]AF\b2r;(#<Z[U/61g-NEZ?odmdqiY7b.)c?-3p.@
+eAF2;8/TYjiqInehbHa-k86$?q8cA-a5?^4:Gqs15:l99eZ.okB=-0qYKFK&ESl5!
+A<%["FbEcSP#V\9$5PaJ6X"(,\%;"Kp4q?AGb_6u3"10ibQk&a*06J'du9Z5rAVJE
+-AgVuV`_rojIT?KrrBd\FRR<^q8H,hq%N?pmndB]%)Yk!(/5_m!g:SBX=DC>)qJS]
+Lf;m3*S7Se;=*@aca<RF%W*R(VEA+(QZnhkDW5:@bWs2M-#N@TcU@d5c<g;_cY(M[
+o7o4:ko-apFWW*eBpO3af'FsN]8u8Y\!h?m:G^"L'K\eQ<]rCe:]:T)Z(i._@XM%l
+*7:A]8Zdfj;'5%TQ)oqSZ-^'sU4d/JrrAS%r/pp(dXO3gTDnmO:&,s.\!anNj^kl]
+bhc?VI7oDtc]UdTE<7%XOpN$U&O%lMZIaD;I=V$\Zh!g-DStjEpfK<)K`;%A.gL.E
+EFRVdnObST?nAf"8n9m*5P(AZS=c2J>L^D@rr=[dk8QP:Ujccgp2?ha?X6/acrccj
+1!;*rD5&lfSgJ&<?&MaJc*!-,#$mSKR:32JG+KT9icqDM;kmeLT0?Mh@6JL"7\^''
+!-PFbBYX.u^1.#)rrAQ,r93_6VeGq1jtE=m+&gd5XYF#HU6kU/>M6q=;UVplX]VMd
+&N&-P^L-Ao0&6088Z7T$FLYs#^n&.`R6B0u"$#7![.:qBU3@J%r.4kJS:&aL2h0ut
+]X.ELq2_4Tk^&&reZL`ubI_Dre245TGr%a-)GI+%U%jl=kXqGW?a\bBjm9`tZM'$)
+@Sub"?UdSBJKTDGH1$V0@@'Y22\Y/A?N1"q>5XogfDMlQ!1_C+hN@!g#?JBnb>p[+
+K)*2JEA!Y:U1mQFAC00gnDI,s74hO:*Cb5OgA=\!4f@Y48SI3&*0Z>o1%fO+`6QE=
+n(#D*iLW1tZ/jU&SYPeSo9[Xhc1dWRRK!7I-iX0+J*%c$<7:4gX?<3>*=g&ZDet*4
+/YptlU6<Ar33`c7W$]/Ig!3CHY@b0ZTo2k%rN2([`Wmb8/e\Of1Q8&OQj1M1Fk<[C
+Cna><-9JB4J:)BKrr>7>r36+<nfO.30f?-oBY'7i1_2Q\2NrDbbF5GumYJ?47@*?#
+@'7/mOTB"sq!t71Qs]>kmG/RmC@G`^:,t(>JJfgV;O5j=rrAabBAf!u9Xu3=2fBc5
+oZ_\pP#XRY\Em5KYubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJ
+G&113YubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV
+?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+UkRt!>Gnp168c74>%8*6HA7<KU:
+HO'O*4&>hlL]3dZa34GB4m25cci;Gi1]IG=q>UHGERV\l-M%K@7nK;/rr<40q8dT+
+;]kmm\=*rrT7ATgNdH))4RL<rRY)>uC(++qW%h@cTZ(3&GMM2\`rk@Z],cd@2Ce(G
+X0O&7X_R/ens6tgl2LbRdY?DnV4Jicf'XABDcK#:Ouh*:`%]:c(tsE"NB.MM?de;D
+_)>(CP5GDLolrcgC(Wg?9j8moi`1^YRJf^B6H^YTjM4T\%C\=&(Y'h$JX+Gp_DYk#
+.pa?hKhmFVMH'1VY0Dj92Ce(GX0Z9<c&0+GF:;q\EC3Ik\]9M'=(MN2G3da+_aE8%
+5QKQF'rKJBmnVO;!%L+%Q,F4;.L5>6qlo\KPIn.$#>Mp8!uQr]*LCg5U4AlBmurj;
+Rj$I4(nLD)oK3$(3+ZRn*q.g7H_$.<-X[Ip#+6\9H@;l=)tS5U75X)5l1AFRMQTNo
+33L<$p*V%n2bfWK64JbjNh4oV!F#o,"5`Bg&_pEX.u9/lkdPn#)HUYSf;KMh.-qO9
+^"DC?WOSYgE,_+.]-s\3:cB7?_Ms'W9<i'mOp^QoJ_(PX("p,.*,g.,G$mW#NJ49A
+iE'S'#@%DY[<>qDgD`jK0+&_h'm=Cnfj';m!^Kh!W5c]d0+,<L$WgrWY0Dj9.'OX1
+"O_#;JZ]\K0,mu)`EerJG&113YubPV?'S9EC"]LKE]cVtbK29@@]mt5]/D/*Bj_AV
+guN$$*bt%\29@AT@]mt5]/D/*fW2</#8MDg.dYtG.dX0o*'mks>]!c3;2&;BMRtbr
+m+AAF@]mt5]0+jDZi:#hci.o_rr<*b2#dR8/#_W@fK\ngg4/V)5P3eB5%!b%mltf8
+J,e!o1]IG=ptu'ja%rT4!;!OBKDqY,cU@d5K!5+5)*b*]rPVr8!WCL:"ocoqDs*\%
+CNEsfc&0+k.dYfgZXU)^MRss-MRtMVG#@L]$aZ@Kll59Z,\S95C>N?MH^Kd@@FJ_L
+q5OsC;'>\`$XR.IF=b&I!*d;%>tjYY*?J1=m9`cYda`((8pY,;5hco#?-YitgJ9^S
+j;-CtD8%NS<p%A,Rh^*_<S=WYB#S&F'm:@.)V1&4rA+BQ>1[mYD'MU"TPL)k;nSB(
+Jd>1QSk0oU:^;#]bW'7(@Lr`A-@d)X7&2"Xnob0,c^Hu,k<0Hubaqbam(C<1l:PC#
+=0S**Jl&8DEHEI*&4%=&f]AR(/mU)4@a,Pma-\q"Lr`+hgcMBSrr=h>IW<+"_m]-&
+Qb:4SjkBq/j(e<%^7L[saZ%fegaM>0"]2).%_7iF2E9p80d''X"?``>ct0mL:P>5L
+g?uMEH&p)h?.S\L>u'8R7b>%"F'<p4Z39Et=Sbb185^^4\UJZJZj1EI3_8D]jj#L;
+4E1K"r-//!9T=f.Z+urEr6itW^ts/((QnX3V<`GoQ)q^(nYCbINLGS[PnfOJEDioB
+2%:&KPG.?2jjmnWQl([P^ZNV]#>jKn61ai6r5X-[Ar5Z@1KN#aKZtg.XhmXQNC[-5
+'H`;LN=.='3tkl7c(rO7,#a=14b"Hc-kciJCFUFMIj&(mKtOC'k7&VR1*hhcd?<oB
+5HKI?#Z09sTN.)$5]0%`>!13Oig?;IrrC*r]OL1#G!AgprrA3=]gC=De@aJ2=DBe(
+T;1diXtHK0=1Y,u6n9rR^,=Z`J^fVidUeqBUCog.IU23t(J_bBrapUd>pcNDhK.+V
+>oF;=V'90>#[oCN$&oGZcf*q7[G&%1:I1KVqFKZCI*oqqh+We'8+TYJr56q[VreL@
+H%Sku[FMJ//ON4DUpgi;"R`^\P`\:-g]XD>Hj[`[e4WZlfsJ)UEl@;th91:kj5u0A
+9:#"fA=o7G6&Wr3b&[<u85CuY"@&SSgg7as_Q*uL>=_6B51(CV,=S!ZnO*lmJ)dH!
+,k8n>pN@j`rau.9BG]]%f)4j/Bj-S!/`+Y4mO7-f(b#MT/Q;j6d'X)<%NQ%,d,Tcc
+NEu?cD;W(^.@:=CG@]Tod_(8rEt[.f+jp:!q$$GlcRm3#%41]5"dSO5V7MW0Sq<;s
+8qXaqTX1TlP\rb1YK5nr`_HWQGot)aac@:M[ch\"aM42#;>eAFo*qU`okSp-]YCC@
+AMc-aNm^E.!VM-S^BS>DYAocn*mN$*nBOnqS4&.NRNGu^0d:i&ek1)23I+QGn]Li@
+o*pG3+Fm`i0'>cm6=81P`JmDAnE`3u4rbFr&0VZXgZ$@R!:JYR>_.14o/fO(rrC3Q
+#F55OjbnOcbdS@/[H7AJ;PIlh%oHkh,a!LX/qjqn((*]Upk&$PN#E\!N3X9k`]`/X
+!4/^D89/I50Y-f,PUpsU]X)tID*$:m(ClQrUrdS-Io9;.*+`ol\D:-P_k9#Hq/"(^
+M\r#cG:^\Eh3![-c.]n0X)"#f3i8CE7ATb5>mf<BG_h[Vd58qIKJ9#pIfBDtOM<7W
+_+<VAAa2+6`=-?:Gd3*t.jdKSN+I4om$$.P@egN-9j0Vc2sE+VKbMe5Ye#c=&OtOs
+7rgrc<qogKTP]Og;(WPg?kX.U\Tt@qmr^(AT/(k;IU?bp:=_Pj(RZgs4[2Fl73jQ^
+Stq]-`+Be#0cXJ\EWNb2`n?W4ZF(Qm&C^-?.9FU`q2hI_,0=_U@K),G],r_A3d'SI
+jukKs6G:fZ\k<lq/"%G=eh_9.F/PiUnZ_!GaS:NXLQbLr(E@s^"(/+gSh"RZBO@.@
+7.WU;F/4)*c2(2CWS.PjXDI="Q;/oCc@K*h<BCt"J9E:lc(iO<,'/S@o)*V)TM-Cq
+fT!)sDrp*SZ#-.:H.,9qeo*#i2#(tJGpHg*JO6WBd7N<jW!T:Sb<qj\c9h]N3rV>9
+iZ7I/S<Li/4H`=9)?S4Fci=5@-a3]U@WU1EjN6)oY!4m.\Z>PHahCjI:R\Y-ISF;3
+;b^TLemu:T7qlB_n];YMq]<$mQN<G%26Ld$ARri9=`VI#,DUat)Z3f:a9eM`Fpdf<
+k!EdsQek6`5;tG_2p)&;f(=2>p!#8MrD5q(^bs.LA7oFDaeKJ>?L=-C6?6\.FR_,F
+;CC_>D![R*^R1T]o"q*Pr7e(47Ta02KdXEj?:\ZZ,Eame-W]0[W$>bt$lCg(Z[EE5
+E]t^g4mA8'a-h*Na-lSg?V&])o0/8M>e/;O[4,7S=)4:M6k6\Lo;mL+(fe\?W5/"!
+esk+t3@)P]R91H?SjV@\1?0*mlj"'`YN<.KVA:gIk`Rlki>3ER>M,"1&R_-T`ObXa
+.P(%:5AP)Mq*.^g$\A!;4O<'$*-(FbLTVJT5PZT#IbW+?k++C-]mB[CSufC,d7Z&`
+qGE>GBe#ot*u.'Uf]5M_1!SYGSj)8q'l@JCbl7[6?^Lar\+6Zn^1Gd]XM!A=DeGqP
+7<9?*a"+f@E*fp1'1TgRg^unIaO>;rVbnn_!fS?Q+7hpsbRSL:jJ'uF2A%#dC0H[e
+1j75f_f%N&?!nS!]U$Yg2mZ('&!*'UKSB1,ldmfp1UKPES(kU/jLeR`CDP=40YED-
+%6IG;oNsLjHB+JiWI7t<)jDjfTGHWP825^jTWeEU`n>N@(2OZBS4G#j"MkioRmm7m
+nh6C'$dC1fo59hol8AoY]!JcTN`T?4KkCEXjJp-&AZ,iCCQ<fi>S%Rj&gK#!ls;[B
+[pZlOcCRu+9\5U0>k8\b[l0kshF2'<8l8iTO$tCo`"3c5-AI9[I5Y=Fi^A^[-J_:*
+C]8MJO-O&"5;Dto_aK[aVUdiNeg>N;"$ILN,*Dt:n;<*nFS]gBJKp1#n;A_BSUiZ5
+b[2Q>Dc3gep$XhR>#)&rKPMM7S!_W*8K37G&o&/NiDqc<ljcf$M`,5d_Bd,`cf:Y6
+M3&_5NRe%/0t`45lLt3af"Bt;BmSUe%nfU-]8AV(WbEP4AfNh%Q^'QPQ,qt5A^-1p
+KLq!cpuh-F0F_6jP(,TCNr6]a-Aee[fkJ0'd!W0tCGOf&&J(cke_S^f)'sG6a,DN7
+6,.JGN,TZpM28J^8'7!+:;[CNkG.?(/*aiLo4F)G_5LPjh!.s*]n.[Si['cE6k:4^
+Z6Sj(`":.p7N2t^PK02'aTHX.*^]>RU-Q>f(sV7D!$g7`[Q5E-Cso'/2*8?b/2Yqh
+LeTJN/5f#=3EMSU=-$OBFiX'`GRX@A!"Zm9.,l%<`oqo>?:FH;jn>>.rr=ul3mIAe
+L.g9:9=Ug?NDC=QMT2S)`J$Q=<k0d84P4*h304Y(a%p\G+S'E*"SmDihGNlShFH\2
+1$SPpfPicbB0+14A>i#n:?_UO(*<jVU"^`he)]!0LcB=9>0HLbSNNh2qfja+e)hSi
+"q.=`>.s:G(TQaMb8>*KW8,a92`kHsl#Q%u@u2[Yk3?"k)ZKg#8*0`$Xa*Q3]CRqO
+,5Jm`fj70i'1/#Eg.R7bjp;HZPR++3PF4CW'2tjMQR$$iFp7e7O6K.SHeY7`cDrhY
+Xf]7&=#U`G>/M:P28lR/1drCPR@8X+2^IOk#3ZP.Pr4Yo1\4Q9gKC!Ehb!FZMl=ms
+U.M;[^"cEI,d+DldL^)cg!hU"e5J0oBJ\ZKaoi#ko<*Qi*+Q[n':+,)rr=Z7$i?4\
+^5XCAA`r:SmnW:0B^WBs&TCWMYuN=T#+uSe#8lY\b#*\?\I0J>nHQR4gY^4.,3c[=
+L:M`pm3^RYeSWR^Q`.UQ?Bs"i:_nVmIe.h!Ho9]1OH,AYVI1TmJYG6>lbjf9i.sM_
+jVtBUrr@tZr6;*'Q.6dE4Mg]hKq^%U(?[D[W`?bG$)fp+nh\a+L0k5)nb70'+@V&r
+/'8s%g0^C5q5rkP>LrH&GK]h`K4TN+2Jse+/%_:?Lmg>;ePK-i.N(P@\BFOcT9i30
+*3h4DOhZu"Xb:>!S#%lEk&8Hs,Pa5g+S/['oZ[U"l8G*^f(.cERTRsh]>kdOfi4T"
+JO/0CdqLT&9k&sE1GT'%=D_d75;2:UkqhT#eW'Jfr,43C28&J%Q\cXPG.2!k,RV/H
+UsN[C'ZJ]LLS'_hJ`Q0LH/nJte&s[R%!MKUSIC#-9-#P-9lhM4ZaRKST&R&\AJ$X/
+WD^a#55C\@m)a!38Ospu,<5]'985bpIB7(C!^5q%qQM?9Il)8Nn3<='alI;[:"Jbi
+(:?`](ec,hMhpBpBU#R$,[sf]Y>J/]SIS=rL-1SB_]^-kL9auFc)57khJ1R<a6&p:
+/LO!:N)+T@D:;:Ad".M:mG:;:DGSILC)m:Xou<"0A=1CSP#!E*#<,PJD<9Y3H$dfI
+E7MV/XBOpnEKQtSG-2id7&M;JlGB9gn!7^1q)$PSa>d]k+:rf[&$hG32Ce(GX0Z9<
+cSkc=rrD-OrrAQgrrBiqbs1u\l8dMj&,]s]TDU>QrAT@iQi"jNceMfus4$lurr>7Z
+4FcN6FR")A2jchp3_]0ApaZ:Dc9[ZjR/[0A7D\?j!:HJ00D:EQF?-N&1X=e+\F)\j
+(o>mMNVE6XY0Dj92Ce(GX0Z9<c&0+S0iqsM0ir!MP^\end'AU\d.pnho%]gkQQ!9I
+MDO5tMU"NU)^Wn1mltkEN;Zi"="H7XB31*>Vu,o!'(-9a>3S4mp<JMWD.7dq=(]EW
+Rh^*_<S=WYB#S&F'm;il1Oh&?]D8SiD_h<!q5u1.d!X5Toh@g=dMSiH(cjcs!M^m<
+@8KGJJho'd]14emC9d&C<us@.$fu1[@i6J"Go'm:jJV)=!0obn4G0R2??nA65*)Vf
+4j.,<c0JW\4i;?(=VrWe,jYS_!#_9\h7KWQ]k$e^JilWrTgN_Y@`'0_iK#>-Y!W-g
+0XPaN?%-O&qN%./^SpG/,'cdRCFcGY*CfHS]))987a5>"6ZCnAgSSTI%.\RMa,4jM
+nU[Z31#%5:ob$V%+?7?#NK:AoGT0aV/10rUZ2&V*/%nkWd!V\Q#k[L&lH8N/P4Da4
+f8AEQ]2Y-kb`5[t3IjGdY6UgsRgs^p.:pE<`9[\4+G+l@ZdQ^6]n^rh_#22m^G9$Z
+raNJ1i;0pN]]o9>o#TJ"F*$HrFR)M9+MF(TXIt9Li?3f".S@q)ZrV&8DqQ0QP#u9E
+66$noI^(=-n;nnd-Yr!**EX9<gtbJ\FcAl[H2dkLnck`IN=T+=#F)A=^:Ei@mZVdi
+>Nq4Y5'o/nJ6kYHaO<8M$:^in.:tXi3]pM>ME.N'`^_EW6qgA%(%HTAWW;XiHFE+l
+`!l\qBuk\Dp&>$7XUjucbK,"[LRp%u:U1b<VbWO]I\UO<D_A7O;])rS=%9]&;F;^_
+rLRgp>E1JXX#eIm,:lkeoaWE=O/'Vh]XJXF5p21+h5omj<6uu@07Q!iO7:KHFZj6Y
+EnskE`*kl$`GML+$Y3>#&a>]\PTGCUHIk%N]]UOsq"UdW27N'[NShPBk1BY:QY/;K
+Ni0)G5FFa%)W%_@QuD,N5h7KoMgt6_g1HPD?/1nU(<SO[(-iP\A`Y2?Xhq*g1sF3>
+RQ0s8"F(&;JKD'F88^(jnc3"nnnSHj4j1emGKo442+ru^IRn,]TkbG?[ul'_)L8>E
+RgYT]gPq5o)3@K:@Q>*c0?5"er(Fd"36!q<U1D24-7Y!G'6ancp@iXkgn<:"%]`C6
+(]#cijVFQc6$;6OB(+'T2RDYr>HXN9elR1)dPD>ZoWJ@5'rN8BaO1A/mDkRr/VI_Y
+@otM)@hl\tL]Aj@_Rhtd\5.F63)"+3!'?^CBRWdg8A@A*;ph'!lcf)m(V>jeLK0'l
+!nu:*Dr)k?*C/ft5g4WPQljFhb.Jn@UjmY7qfbVm55)=\Gp_9BMoZr9[_*:-C2s'!
+:5\C5Vq$[_>"5^\.rWO:W'0`LW0fW&Sm]X3IfBDEO9^NO]0*pk5:]k`M<&"fq5(h\
+(X,'>eF`QId4P"LobGuX-PCljO&Lq\@5(>%.9ZYTl8#t%N^\\FHMq9:ZKa/S_r8fX
+4C5`8arDCK<tRgaiU5BrJ=oK=jP<Nd\:.Z;b@0NTb[3#1l.VE!r;LH\2/??,ZFF+1
+D!iOWoVIT7VkEsI5ZN8"L8m$ug0"-Si5lWF"usQtLCf`n`sCIIgG,>!=''67HkCYc
+q(D[I41*<f:Sc)q[[Z?iRqj$Ej(=#RWO3#T,.H5<1gp4NY@;:**4;S%Y-(+3\2(6a
+-.U_;__hrRf[p_Yh^3WZ]^lT1Rrt8kp)=MqksFs]<O'<u/^b#_Co.cc"DY/pQ:*Hl
+%&>HbFEk2rB+.p_7gtD;JT@([UK>YW%PE*I`8=Ug#3&_/e_:l;_S#J/c(;>>gtI%>
+#^j=hkV&b-B2$[K]mWCHZ_#<_e8KI5JmVO(((@FY3Y\7sf.d(d"AVK`dHZ\Wb$\'h
+lm$tO/*<%<[Ie5][b;e1-^io*3\BW$8bohZW+:,n5dHTs7KIIC"V]BLT.ZYBl]-A^
+3.MV`gdXF&N0dlM[G8h*cct,Vd^>,mH"TXu1`mq+RbsRHVkIe^kn_!Co(CKkH45XS
+D[KZ;>qOf0N]VHJ<C@8Ud8_s:25/Oa`a"YJSA\s[/^,RT-Y&R=HopY:c^)^!7j69*
+U$mO"/[aDDhu7WtdaepcH'[d??;e"E(K]*CB@GH-m@^sZMV1G3ZBbpW.PU&;W1hIj
+.:L+'%hXIg1J`n)`PMq<NtDN^6_>L@_'`a7UXLK;Dprj$5MY/QH!<qk`P/,CDh"V!
+f=&.lBq""'$X"OiNQOZZ[.0oa/-a%aK/G\g%2MKne3n<Z["Q3t)O65p*e!%9'7@E\
+g6d/.W7lOS;>dcKr2o&9CIQ#/Y-huBgg+:O<uP=)%?7G_QWBhp@n>ZrLn!\H3#U5#
+/5I"`;]Rc%2E[2HOtm[UP_>"?fH^Q=UJgacbIk"iOVB7G,I6lWoq20BremQ*q.a\>
+C>3"$eAdmsZ!2ml*ar9=\_mHqi@<s#dsd\EeD@Xs.uB)fr@M%?Y9Xri/$$"]IV\.n
+\!VXu][rqBf"YSAD_6DI1RO6hYt$98/Z1Bi5-Z$5H^]=dm?h1M39&6j9[sfko5Bl%
+rbj]8((7I@-^\__h<2PqA"e0P?IRm(oX_BoK2Bq_o_>f7Use=X/_X@$8@NW>"AHsP
+Z0@`<Benq[\]j4=a2:n3,;&?Y5ppP_MMPc^,p33b*JU2S)S_Z5f:pY8)Qo3rhe4r(
+0"%Hfk>f1.^+RJ`jcQ7..ps!N=]18`JX;9r#=F(uJY'kJ6Xq_[#CUDa_)"4pO^H5$
+$@+LY-0poS?,+kMdf0:sF:A^Ah+G[[=l?j"\XZr0rq09RNtj4Q'c^"AB%OII!J;^B
+0tsB&W/u;C<4;#.&DV-L2JLnj3ersmo^^hhT53Phe;=birbbllfgTf;<,*>?5+`0)
+!hR&6YlXQbm-U-IeDpJFB.4@p!P9Gk+'6PTmcoru-es1EZ_hK/9S'k(q#`03>>o1r
+7+>^!QILgf7acP"#QP/1!.'RC^U+/'"#\_Prr@[d_4RbOO1b=Kf>G.eNRN%),F>Op
+?Rom*EW$uVh<;F?R"$f<CTfNukq_O%filLjgD7E/[>cF_B=X)N1@SjEAhKn@R3N_A
+4>?sP*&YTD,O4<TdZNr#)Wt):pdt5ZLC.Qb8c:5TjWqILdCdddH%5F*ot=Dco1>Kk
+-*Wj/=['>ITS6(?``6XC@l+Fe6Y>(M3(m0e`_lEn"9hC[,%<FHAU>BNeP#rcDuAbD
+?+_lS=jj]^rG0YaC-GSGorfs`k790?L?Cu`Z6dMa@;hqIMoTZ_<gg(-*]_G4Eoe#b
+a8qa#2Fuha`(1OqPQA$cQPK*4,nOR9ddCr::Rb<*:,C5Cc2!8FSFsWIGuId[.t>aE
+HU?7?9?fN[_HgL-rLnR"#]6_SMKulG:0&s`MIb_"nn^;E/KA8],ia8lO:dSAO7]r5
+0cf%.mo^\n+BHa"6M!^4/`,OYIMi!n,hcR^FXo%=f#e1oDl:qCqoE+!#l+71,`<Q@
+-ol7DoZ_gn`()iIgsHm_bD:SZrYCo^:;C5#pY*c)2u[*jQWMacMkaueX.X5L@+$FN
+FXnmUg-<uFo0io8eKS"%+H.'!cK*Jep9'iDi>e$>N`ep.@kfs1rr>8mGYRSB:S,YI
+GHQjn[KcZ_P3YNf+nHeA?X:,3d*^p]e*S`/99!:LemV./Z0Aa3P\_ISPaY81`)JH;
+R=6-VZLn.sR#-hj*tO/?9S=c(3.aG]G71iW1g1q*)s,=PGpCPIHFNKaQ8OK+5;m9G
+C3k'&@AVdpG5$0Cg06iPTt.Le771\NnWf?=e+\doN__Qhl>^>',p!J7iMfL9JdEc(
++tnl>g<K!&::;=I.YdZ?b*kQW-^23fq1#MlMd#^!XfU?l]r%,ZmD#&seE)h[H!Wt"
+"@XGXmFY1ul$@](!D1AUL3fh/c\?Fm+W-4$!QJXB<(R^h&I*]GI]iA'"(F:&$;R#P
+cR#sM?_V,_2-i$/rrC1[7II8.PA5(``#=<nIrLN?`U;U22`(;FGs)Cm;\'+33[US6
+1'R1(gC$5:QRb-#;3'g_`@ul129f%jo1B9>][Q!Ze[:G`C)VQ-WG([./toVc[hH+l
+/a_&h5tN3&0VF`cLGg&G$rXtln3dQD#DPL50f?qb?Ao3).NLk96V[-$BB1(+;>e3,
+o$Qgr\'o`@k<C\HSkBHlKeZ.ZQ:=M-<`oI_V._)^Ycf5-.F#':%8N68W_pft(a+;u
+Qo4iES/2f!Q'iQ<1f#ZJMW`-dl?8ee\!MPIYeRY2>ee]]S[P'u`h+QJh5$7TBl=ui
+nK%t?9];Kd0A-J(<M*-A8l6EM`aX2Q,%O60``tW(+SV:TmU?T#HKq#mISf;JftPun
+39Jcah^3%5Fe\(`@.OSb/s3*ea;O#!Cn@_)I;D=jWsMfM9$s'KW7CU]!?.AbA!E1r
+(ed[PcG;V,i_RD%/K/fL^W\i!pIkG/Yk*mKFln#k!oqIZ8$gc/[:f>%X=dE8VjT.h
+db<u/>EpX-N@A!)]fmF\m+e?_Pi9XkB-<>!)%R5hWYA.#+&;](rr<hj>,2.j&[qj9
++k*ga%jp%[=mLB/PNKu7YG_2gbW"/@IAY=BoI[+I?.*.iCCdBY'&6(J.#8&f.MNlE
+3MibRc7+!J,b^/b#ukdU#$3QR8YQ(BI24[Yf^j!g#/;_T?^icPhu6[P_/JFub1#um
+>`rS`eVL<K'14RoXrW`O,;A0b>1D_"flNHB>UTYk\%]Hr^;4WPdTRT[o<nMr!:mJo
+]B=P<Mqom^o.IMJBGu9T61Xm/Q<O`F<@3mo?`l\/EA`/6:ddTZ;9+l"SD(sb7lUco
+E(3aucG$#5$7$-6pZC$l2Fj(Xo[mf'oDRgHT\oQ?%3F)+(J2B)inmi/:77mu;WbeI
+ia8_?_ZWh0l%uF`l83C7(QAH77__BH3MSAc%#%YS\87aW1+/IWlZ[\3R/i5]'[\e`
+9DMecC):'OjcnJ[QSjI\<k8.Doe3_T3N]-eRf<@eMJH?[o[+DNL!:JL0A6fAF#10p
+O,>p5iu%cZGIIF+ld(!f@?5F<GIQ%u)f$>rX/9[h@Fp:!mra[Ckb"9/ra=5495AHC
+m]GXBjh8!8(9enLc+WJ8ZRURNb078U5f3m7i5L^:"D9842LG5D7Rs;qWTiKKN=pPA
+6D)^RISA8Oo,m,(RCpM:B_o->NrE&,lrR?>FPFJh/oDoG]9/kI?:>Qe@ojDFm9R%/
+<MuFX9al:n)rd12OI^2KJpFX,MKT)7VAFNYbdq_Y5<AGK]i*T_Q5TU]G8a8TC"IZh
+7Xn"H`%kK71l<6F4DC#-B]lDE8h`!rL=20;m!?a+nHd<]Z5oe+g5hQ'r4D.cns68P
+GtMF'le7SP?ad;0HegU#=jte)mNo)g?;qSD`:HP?C0:t\ZB($84Jk/j/.nCI6&ID&
+6t7Z8>XWT&2'%61lA%j([7[m5ee@=%FfoMkkFA`'PHQ&ZYN?pm[4"rE8"Jh3`lCV`
+>59__2OpL:_Ndl27kQ#E3dD,n"p'kh,dd@k.RLY*9B"q-5r%J5Lgr$uFg[:@E;gs"
+$p=7oVtkshk.`_JA'3NT3b=qLXn65=]@5rK\CN9><joP,L=UH>L.b(tF3W*$A0GaY
+Au5QAn;J5r*tZbV@O<61&eD-(+&O7jH>h3<ShEq$i!4=X\t5%cBte0.r7.`kF&:D7
+\YB(8ghPHpFhOR*bj`g;lT716;@@UNXqoUJ]-(])Z@^Kd/h5$HN\_93Z-XcCqQ.K(
+6\ok8<OqR>G0`MNCL==;-&fF$Rg&FbhRc5!rl4+sQ.Z5hKK!ni+^Mkl<eon`Atr'`
+4Lc\=?c+$Ao+i3rCN<.29=&*1c&0+k.dZbFk0O$&5P`8or!<5Lrr@kXURdHRrrC&/
+C&\1MnG`L;GW>MK]SF/u`S(:AqC2FE55\pj!(,YArrCtOjq%<KP<B`]$GZ1oAH)X`
+j8T+!(C.;H!4mUZ^Y1^8^h]N`jt4_$ii^<(d,M4IP_)'<.1XP?0$T9c2Ce(GX0Kk"
+'m<NE/TF.aSbY:[^#i,7/S:UX]!PXHZh:DGD7"!+4s$egI5T,>UBl99ZL*$c)E3oI
+3HAg*kq=;$:c6e@Oh^aM\^Bt"N(5cUm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0YkB
+FsgXE<S7/.k7r/;,+W^T@rYR^YJ(AOm+(jIY0C=$<S=B7EOBsi7rg=c@Xs=Fn[3OH
+.dYe=/$c09<*-sHX0V"F=(P?UNV[+ebG`BcPXlaV!:`%LZLM".`EerJG&113YubPV
+?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RPCfT/n
+=(GCWhH-uRG*=P@I;s=?^K@nV[D&tdPM=nr9U?Od7Tikc8L%92.9"TF0]UJ1=ZCpG
+#?9:dVf]d])p$96js^/XXne;\o1lc3@j[bD9mIb\&R*pb,]_0TMUiVD[&js]AuVMT
+-o-)@6;[1A^d9q*6HtYDc2<rbDf(\CkY'AS$#:Q8?(2RP27m7XY`S42rr@diS'B@V
+`6C7*(po(Gf&!1LoOPI9K#CR"\L8J49U%<UK7JujNZP@F2?e8?<S=WYB#S&F'm=Cn
+fs+Uj`EerJG'URgBE%rZTD[]HrWI[arrBu=;9m4dJ)_c\rrD#&J*FTcI)"N*hL=JN
+s47#mrr>7]2#dQGE79=+-M%K@7nK;1rr<3uq8dT+_X[X+\;Q!mrrCk>!+5+5p<Y\C
+3cc(uOp:(aG$&Ud=(B)72T8sfXPBd[;B:[)QY+3BRh^*PEE?UJ3i$T;_,3]MA$>rN
+8bickGnnNSpgb'/\gBU6dWGj4N;EEVCK";E>tTApQG4]-8(!Kd2S;7>AU\fdO-qjU
+&RIM"V5Ec*$8n&>DSoo\d@["P4H!tfc&0+k.dYfgZXU)^MRtbrm+AAE^M%)ZbJdbW
+oCE45$fm4_#d(5Bc.A>j8@4j(0<WmCar.%98JSCGR3_FT]crA'-(Lt9<m1-h;k@N&
+!"1V9?R/6C*KAJEkBhL:83EfNBKr6!J']XI?2Ab<FUAAdP0cUW&I[3G0[q$[&.VW$
++@D/Eg?X0J/**2!=-Kp;2s02L?>5j/Ol\*a;chPXNIOCGTGK?'&=5_40/W6b5+GLX
+Ra@2FN5Q.WIjT/FPin6b0T9Ohl:.]^Vt%)qR0-lE]-l1]g:dLdQ0p8Ih'$kL>"^BL
+Y%^bgV;fGWY+VTSWZ>1A_!qVaE",9Pr&@2(7.C_bniQYr4lruk)iAfXD_M*,_r\'N
+ITuVD:5;HVf.Ho]U$B5%]&'n#Ns&;7>,oGt/BKD81o<2S"epQLA`PAMO(;$HSki\u
+&W#CsQK.U]YW4[WIi?gsh6XZf'@+1%jq!\uY;YVWaUP,GZE%0OaO3@;[*NZ1$aa`k
+`]7O?jJ8hSW^n?l]'UhM*bf'*2iVq:ITq/g,:aP6MJR@!:\i\G>No%2Z<te%a7;s=
+]6!*0oa#K0P>H%NFW!$GXs((B^j%-778hA[ZL[+pMNaHjm$pt?LZ3lJ\>m5"='+9d
+d6H2snOXO&?'5fqYAp:.k)3#!H!U?WHfaW=*Hp9[54!$BHYIIM>GQ5&MA,Z63f&`+
+Buu^"YVd+bZ\DceVjA6_+Pt*p/=sS<c_!s+pq,@6m/I&>]ZY#iH%*ZVr^B"PZL_AB
+e?iLNgJO#/&Df6\/9\MdO[\KHMMr:4UeX:6?q@6>Ur$Oh@`i4j2["*WS.5=MqHn7G
+V:7RORO@86\Z0AX;=dP\q0alNjKCLJg"9KnEp>APIr?q1Li):?aW^i6Gt:3;;SWj_
+!3Im"g">h*ShZFdE:WZ!&+'(m,Yn$=Yb1M;cX(>:]SZHYr`/MUl@)g_[(UBN\FUH\
+VNt0,269^1h90;G@X`=5,-mM[,:lj)"0jj,RAIf^;2f).;iun=L;uO<4)aU:1GTni
+Fq*"%!'BT?)nZ%N8(0<N?=,)4=e@AW6X7"HB9l\;P2KPYn4jhH0;QbJ)3$,^H.K?g
+%qkKH`\MMYVG@Xdb!/r:aRgQ1jMj3S"a;TZn"#)(o3JPer0(XR?Ro>EZYQ[Vn`p*\
+Z7ITg\lmr)5nRb_)<r#dJa8bpRU_+-`K8[[\5/6uD%a*^C"ji;rbL_)U&9tR>=?ro
+q:[d>MQ@DkltpTGmeZ),&4dS:S/l<N:o\XuIQl!!3DL/*`7<DnUhU#0n'J^o>I0E)
+hjWD-f=_+`jI\AH2O<mfH($O_q%,iqgL!UO4mG2GQM4"%!sFsI)PMV#R-:L*SQ`XA
+h2SANVOTVV,n9$V0tJPc-fo`h5$$4o!,V43a587&5F_N"jmS?cjmlqCB9IZ@*Q?$Z
+k$,N!7-SOlUmLB<=iYFX>$G[3<Dap4=ufWVc$iF2N\ch>+n;3j0EYd&LLXh\]AQh^
+Sc"B#k>6VFBKG=HI%0:l]f+0uhcj$SIU#-#_eh6]QPu6$"i^J/$8K"KTi*ZmAnXUJ
+Pq)U:r^YJue'ASamPcTM%k-o2RJq+co\Z,M0MgK9O1o^S+F1`n*rA7pAtc:$CJMOU
+Z1Aa3A#:Mt\6.<DD*h>5EkC$p,Dt23*uGL6:U1I<p:cSZK.].DP^o&^E][UuJ2TP\
+T/tYi8`=??@1KL(Z0,s[b@f22Zb>qmk*Cq#l=.X'DlmPlB]]g/b\J:WA=70M5m.p2
+O?+Va5,(T>1Eg4e?#o]lfP<W+(n^uKCt+H)b_*/oR_(I-m+AAF@]mt5]/D/*fW2>f
+Y0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(G
+X0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5]/D/*fW2>fY0T$*D#XLroD\f\<;us6
+O3KoaMX!4Sp(.(3G+\[c&,eG>O-fabHdCJQTE!O>-3!s/rr=qV!1\)YrrDO8fDbj9
+2=o4Fi2ckX3=N[]GlId!#6V=4!4mUZ^Y1^8C=></\Z9cR>ZKG8f+iHn'm;PXK,&Pl
+0iRJs'Sg.jJgrKJZLM".`EeS?b\QH"rr=8=Wo=qTR5F01CrkIsh%-R)G5hOp6%h,W
+2$1l^Tl1t'RIiK$!5T]2F52?s4X^iA,tE_)29A%IB+CE.l2#8.#iO16U:,a\5`hX-
+"69Y314Z<SjH8;(2;R*5e!dtoY:H79SVnQ'k6u;b6fu?nRh^*_<S=WYB#S&F'm<G;
+7OmcBVCLrF<S7cO`g*]B3^["_O_?\NiIYfj=.&Ac]!8lT+S1GCCcIm1e>nVbGGquF
+4>=stPfsKe^jn_c2'TrEQ"^0tQ(DmaF?WmBnt*Cf:T\?"?.P"8fkR`sIZA2(n!a+0
+4$QJ@RME,@BVJO?%2BV8O9j.(Bkd6#1*#hOM3&j334W&4C*m-ukC)\Z1EWH;+bm^/
+r2eIk/,oT%C0JZGU"8])NDId0StU-=YLS?Eq1:li7i6F^LjDm];,-@SC=W$21<+9l
+8;s5ZJTpbZ7fh8+a_l8pb?q@'gtN#FRtr>C4[.1K.p@:$2:+H28[>G03*iHDDjc!X
++."WCV5WTZR[oe2oY3$SMSi]+RS,`Wd8>3d?9ohglGFg#AL^%tY7^90o$*CV\2%$+
+!dl1];(sgmQSH5(=:dtLqOHo`"fA>5UY8pfGBS2AU@L6e()EdmfX!SGYs?`0b,P_Q
+glk@%[*/sANb$/qbh;fuO"K)2F!p('e,E]GjM0-iMhsR60":NB8FYRj]\:E&`jMaG
+o]ohqjo5=K*[ceM/*s,eNsGj4ZeGWYa7@572sZpHUNNS"Q):J@OeKcHfDQoMjt#D=
+"l*qE6=Y.9'WhZ\m?5l_VkoVh&S)N&nK<H+Lc!22E'$u">PUY4g?,Htft@.C%3"D#
+nu_1l<jnGCS]/7QQ0]p@"SZMRU_+kgk!9]/Wr.<0/&^2/2O6>D_$LE@@Uqnparh/j
+Y"/V"94'5J5KbRAr42B"OoGDS7J2]k>\K>GW-V1TDp^L@>VK.=<TYO!,jeis9k]i,
+jfPA/m$NT.7!kJe]kd2no)Wro3dEs4^1G[NnopV=90>G8XKH-Jd[O>o8Tb^O$0.%j
+bgO+rIK_`0Y+Q3Ee+SNV-5gmAIOkd$8E#hS-H5l2_'-$E3t/%b^[l?&Xm159PAe+K
+EG+E0X%TSZIUTRO;$H@"&_e8*=`'^3M'@d:`8[;QWp<P<&Cp%95Y"\lE3U&_!ORj9
+Jc"&N;>Nh,FmUg4mak(8[(a/4pA,%-43Qhr(=C;TW93=MB+]kU+aFuJWQf$])3_Nf
+I3"iM6i<Ude%F#i]h;;R^IrirbdQ+]?=!-d6Aq[DlHX9)R$#5[^:/-28q8mY05T?S
+m9*$uUCkC';3\9M1"m`68*aS#fd*,ZJTQr*H2G^,<q5)4\d#.qO!ra#^I['m'"5Q)
+B4hf*DIZh&$SbTfA3bF3OeFj,2LRKV)$)ITB7#u>cX5j\UXV<lfVd2gA&q6=l191$
+I;;F%I*$$aqoc*'5_i)*%+ghLAYui?4G)H\oYn56CCpk4[ZKtn2'SeR\T25Q(PadK
+L^=](6?:(holH8P_3`,s+EQi9RG<1ljM/nL0=I(=*HTDJITk*WEEha)V9A^Mim%l^
+E(e2N[n/OZXYPOOQ1VmQXNdork7bo]OCaP4%)!F%o]"c#5-4N)"ZVt>pYcmcq,ul"
+WuYhA9ijWmo),(nPKd9CSTtC\(T-3^Y9q`k-!)MAnoI8seKG;D!39[\/8<4\9TYSX
+`%`/Te&)au-uF?9Fm,D7(DC/JHrio;Vt2H@>)VZL`eb/$c^cnb2d+et<`;8f$Q,Rp
+>@37g;@%u$YYe>"?n90)lLjpmLknMe;1XS`+Q',ZIouFiJ@KgL6(k&;L2(*^4IPaL
+@[U[GRh^*_<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RPCfT/n=(]EWRh^*_
+<S=WYB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(2RPCfT/n=(]EWRh^*_<S=WYB#S&F
+'m=Cnfs+UkRt!>Gnp168c74>%8*6HA7<KU:HO'O*4&>hlL]3dZa34GB4m25cci;Ag
++9)=#!,;H539@(3rrAU^?iL,)f?Znc!.qEPj>-`8L#`15E#]A6ros1Zrr?`q[Bn/:
+R^Xgd@]mal`Eeg6pVgEu#H*S3lqecEnQ05J_!SQZ%`P\GZXTRh3ToN:(K#HV7&d>q
+k"RjH?BpDqRec/r<r"/OANYa8A\M+C!(W5Xe92&68%WH1-CeV;7CnS.Is]X*&F=d`
+(>c,i`>FJ1S[%,Ji)R;R<S=WYB#S&F'm<G2`Ee^'.dV%&m+AAEqI6VKDk)4Hjo5<,
+6X_=JEB@KAd[P(a7Bs=bmf*3)$Q-!_Ta^K,;-"fZ;7dAubAc]YSmIG0Edj*4app]Y
+D1Pq<cp';PorVO0'(a7PC%B9;HB.\D=jj+#$%ti[E47O.d&R<QnTRlW!)?0>Lr'@9
+P[ln:rr=X3fV3b!.BMb:dY=<6%$%ab:FB[sbFWOuI+3:kUO?Tu>o->,9UAS=(6782
+H[6!X[#I@,7c^7cpj%TjC(=U7'X82q>Dr6&dr*(8]?<hQ7/)ncCC-+I&k^;s]W;\Z
+(*HVEJ-U.XiA0$n7FSIl>-(Wef31GI]1HikiOF6TKpL9-k!]Rra5M5L8=*2bK!kJC
+!/1E%#e+6>'Y?7Qm&CD7`CmKKk'oPX*`3`GVI[2DW+[*QR;N->1k\tEiY-LQO&mC6
+nQr>aBs_#c7PVb2RDo>XZfJpFLS&Xn;l&\:]#L)6CA()bcW.B-o$Fu<@he.4+_C"b
+Yc,Y)_^mU03=7Jd+*cGE#A7J1#Cst]?%B+3/?C&gmquXBK@Go)/?TS1b/"[)`!Wg^
+!:FmA"$(=ObC.%49<p:SH.,=Tqe?@7K)-<@f@/cGlruK)8(?];d&^$jb/choI@?&d
+bAldEP^sb0cc^JWLq>!*`.LA&OnWB26s;s^Wmf/F"bl$kKoUqdg#(T:lPIoP73'`r
+2*Br"$u1+<k!\l&B+YGDR#XFq6ei8>fP&&1Rq35Dj_UKMXWPek7_,YsMaGmGpD4lP
+GTbQ*4VefkEB4t$Y*5K3jc)6f'l1^Mo%_\@E68cOO'fl2'=VAO='sEuNCV1G<S&sN
+k'O)/oWX1o9TWH&G5U!@Om0[24u=;M(hY6lE>q/GpC\_FOKtE=%Zo1mi\J-@8M7u&
+9'k32ZXU)S]d$L7>19Tr3%_;8,J$drD0lXpcBMe68JBL9mGG>Y#t6Ja9IP(#<S=WY
+B#S&+n*a]6XKO;F3=C0N,e0ACWSnJVC(BBY&\.ma?;A<4-EV!cB_l&GVjD0.@aZ4M
+-BWPXL3+%OAN^?#'c:Kq&jb`3D:iQR0$T9c2Ce(GX0Ap4e>(F`gV$?dCTGPCe'r_[
+-sGWha%Ai7Hqo*E&2.RL?nEJE3e"V\Y1dUW.@85(M:/e-;$qkp/`F77'D@3Z3c7%H
+gEW%!i!0+uTGr%iH&KtZ:R2YpRoY.?4'`cUf'_i!/Y/PG]:@WOEQPMuL)"8=W$(iV
+iR6%,N+-uip'Xc6G@BlnV]G^3PR28NDVACZeE(J%RO+6;;9R5hD59cp#9gQ!bL@N5
+`.A:F%D*(T9'e3HlU8FI:MZoJm#\UEg(tg(M-(un'"-^,!)4oV<Pp!hL"4X"@Tksr
+*jqp#l7grJfgg&.NOABhD`[B26d@(8C0%(B71NHD./BRhCP<8CMRtbrm+AAF@]mQY
+1&6l)o#@94QDi66ZX$a;K*iJ8e\/JQee,iD1.nr;LA<rVAX5Xpk&9TSNsN4'n28@_
+;X>scomJned^:*6=1VTf01iU<mngZCnVS/_]<S71!RPAq,r-\dAC+PYA66m%J(+>[
+ENE<tko.9mH_N*nQZcQOW3ql-HEQu4U5+&qWZJMilp*RpT0nr@#g-Zpb34l\f+@^\
+06YF6:U:cfB#S&F'm=Cnfs+Uj`EerJG&113YubPV?(Pp2g&D&okPkNAWW)sL+.@]L
+("@<0llZ#Dm6CAP+8Tm\+#!AMpRet-5QB.-(&n7n#QFe*jemUd:Z`2aNI:A*pac@E
+`r,i:iHYA&g]mqfrrBZ[!5I5Jm;>C_FjE'h<okjYHq/Q8D:uU.rNSf''j%=Qr>;gM
+`<#5`MHu8PgTS=@lqr,hY/M0RKQP0VfWHZHF59l`hjD,QZK5*7FPU#"SN;;Ad'AD$
+Yp*mqI?$j=C6nH"ZGa/[Pl/@>!=&8[_bO;#_QquWp,o%0J"Ca5Mea!NMRtRrR&dLb
+(osuB@]mj$_\I>p8]=u#MRtbrm,hZF>(>ZeWVL2i>7\l)>2MdH_Rn9'5:Yr"4Es;7
+;-Ga[<G"k'ZN:kt-T3!/RnJZBMH\)h?kOGeF5^oW,q'?HDTKlrj//%9_kI'.kW3YF
+VR$cCq1f(-I=C`9&nbEi+ZAl:1hs!8MSEkiGRBTaRD.294#]*4A=$ps_ZBU"pM]I9
+aVZ6^^^9UKe$^EAnQ>ekc9nE(oSAF,q&UJ>bLpGH<89cf4M'(U9ZE[)`n$/LHq]>k
+iCu#H*;_S^T1!]%+?lr-$3#]7mpl^a!;AR$H['0joDYFIQfNWUC,S!Tdo*O!FZZ]`
+E'h.^"f/H!-#6DTCXD3&ADkM-emX6N`8lG+r6lg=!nfZmgu'YIc5Yn:r;Qbjkl+&b
+[.C0&X(u(1(RfN2Y(aBl[C3LV>0D19l&0O#/[Wr^I]e@1=.^r[31Sa_Nh7qOOH`.A
+O,1a%,k"*X\"V%FVM^H;Haa?+gD@5`c9>+2fC[BI?0f(/Q*9;tD*3YnD1-2uH%iH)
+,`s]9ph#?fm\C,IO!3S:eG,;.&2Q[LSl)']).X^VIZk1*!%<qU\q/^!Q@"UP-KmO%
++'XY0o-]iO`MNB_<q@Z*I&HduU$;DJSD&p?FtIWFdk2AQVme:b(tr"FZ!tib#rKhI
+g5+e6`sBOeGc#q^9n=oaV^A]#&SGPk+H5MJE:ZSfI&j>oZU3*Q_)tRuBmrk,o^-9g
+.rmK224[A-b3)Tc\GbH@<BhA\==lrl=u;[a3UgP'.,9dPfT+N-(s#*h!.HeIb'P%B
+$oO`]r`nbM'r?t^ooCe0q6&=P\%^;`g#KZRMJFe%iqbf)dQnd.@9sNbVXaZUG_I8\
+V[TirEDCP)M9!CtLnJWP4="82mf'?#R3,#`DWui.'D]7*dm#1,h0nIgCWq*cSSkfm
+%lW(t4@;o82+naM]G@IbL`..28sD2A;!"aGR;q954\d.+_Dm4m#l=KT"4VXK5@lPL
+JJ3FeSR:te?Ia-^/_Za?:gF_&>1POD'^P1D,1oDb?,pjW+XHgj.!d6jY9L@WAtQE6
+N7j#K,XrE3GF4;cGr?U'3U1l2hT,4P8()N3IpDSWPHT6Jba+UlDSL;&CVi`h.QP#C
+N?!8EoOY3E;i"](`NPNud`DM,8i\"[JDo8i;>5`g@uGDT3t?/pn%?j,X\[$bH';+r
+O-[GDU$7bDBf[7"Bm4apL1FGYIOu[o"b9(BPQeU=-XhU*Nh9)f8Z\,t.9Vbl&[(ZH
+ja:.UAj97RGl[2lH!ei\C-HP+YEeSS`c[bF2p@k+o)7.B&i=H+4[2`"lI=*(<DQd#
+,=_["!Lbo]%D\:)9o*5L5op]W#m%f=LlcoS1^NiQ"RHYGZ75U:D`lR"kGp,J1?ss'
+q.J"09s`;b[/7U)3/-DWd`NOPWF5."H#<r4Y/ZQS"@abs(.3,%nr0Q,mT2leFrL?f
+?0X.?kDq2jWSLqG?=+a?D)j60oje\2Wth'nOG^YAkq=6-N5b/A,rfG.%(o>>&#Yc3
+U1QUYm$?m[ra=-g1F0@!^%T-TqKH&TO3'>hpCTWV05VUF,e("@!'.l:*(\A#Ja,:Z
+Z4M7m5"NP:C;[o57EAJ>#5No&5Bh0'G3WV1o1AUHVYn*S[/GJNo)([[o0da_[FU`i
+`B9H\_Y2r_&i.!ocO/1)rWHan4,3=O;%bU7,5D=NE]U;rT^:`gC@aZ\IkK3qr`@N1
+bB`5(/\J]8TPF>9YXs&6*HP+q2L+AqPTi]7-`mbO%1^Y)Bq%6qT*K%**:a+>VFcS$
+4orSO4U:K"L[S\i2?rTi?!_tpITgIbD:V]?,P&3f)pGX6P>Sa</hJr9]7M?@<ju2`
+_<FT<ZQl%bOa)s*ZKufmHL.$h`ab'eNsn]74?#aU%G7`X\+_,t&5>&sgC:g5jjE/X
+3.=kCR\/^H^T6(brj=)PF0&V84fXnI^SjcVZ,ElFLn^qIA,&$In<65,\kPu_FLmhJ
+E>8b16BClFg0`/#m]qA")rL?K=1/n/IV&,iY.8TaQIj?)QMU?;Fff`.Onl<BhF>0-
+lmB&33FfO!%r/C%g#X1B;t0]76-?N$&VPO,&]6THn:E,:mttCrEu%Y"\G3L$#"Pfn
+jf@%OX82)(So+'pS92F`a]I)_ak"m2FK9h53?X>(K@,BTWk@dW;3I&tQA%tMR?pGh
++bMTr#tlOW8*W(T-Z4@LM<EAC"PrZRSM'KZbT9-]nlE:;jrUeiM)F[E:!rY42cZ.m
+D06QBgXBm'ToLrFblL#6LlWWP=>2sQCZ1U$W]>'h69GjB#!5F>-hrPpJ`L`u<6Ks7
+NSCFoO"P33BCd464Ioh9q4@'"p0M4>KC_IQ0QOYM2#B7qG#`0G6t&of+tbX;Ruuhl
+4>V+>Z/NSE,6<g$*ZU42On@IP^!2-6%o,eh,j\fh]U>gGYO`TV90q)*j/M89G.q$`
+Ip';0jc8'p!*$P?e1PTJ6T@ES%D(<EKOIM0X]g=9?EtDi6@!&P:P`I>Ktn$#Q[\Vs
+A-Wn%:;NN"fDO61k1p-_GCF;VFfd\X3dIVoQK(dr2"qd:H<T+X74aS@J=,,T2?\S0
+?1T.<%"9)8+p[Pq9lq^dOLWV'HFfB[]]J=+35_fm_a)SV3Sgn:hrX;Zg<BcOd7pOn
+heBi/\JFbk.?6E"ADi2-e9M3$Bq#PRB4*cJ)(0dkb;*i!_IQ&r5DQl]jiK,_GIKlq
+D[`nIrcm/MH'_7SgJ[tUImmZ-2Yr07B5t)[V8IbJZaILQ<IIt9R%@efDFtd4<a'NT
+cq7-%+J2^I&2Aq`^j(1obRKl6j%e:ZIk>f$9iK6@]q+l+Er(4Wc'G2;jt[FE@riLr
+p6Po)i#,.r-KM8(1BJ&$Fnk,>[k8VaCiFe,qN&Y?T[n099$^T:_7'9o^Us*G\"P18
+Y4YKs8^MQnj0juu/F=1*pF+G(Y9hMol2`217SkT--ScR7Uc;g<`:8@LR'SBjdJV?@
+^%TIUYC92s\F@R'JU?RP1;fj^CIikcgI^t&P5MX4S6?E%B;SHVc2EH\m]JaXNmaY@
+$Q=T\Orod'K4],fFSPcMPE!k/^*jlgJ82MS'E4A@5iT?pQV_VlcVA`m:H(M%oIoae
+[N9<ZE?;i1R9Bia1/th!U4VY4&2jqf)[tnV5[bPk2"E"7qJ9"RY<DUDD6^\.DUmL=
+H/e;;rc@WFVjso;c#KmXkPJO,>L[a#Y%NK=/F'3PiT$6O:ark3Z*G1'5`?MA-9sSN
+c4)ZPAFYV!LrI:5g\6iEHsb16U`NUme7HOGm\bh8p`_-$2giAU0"2UiX%f?RQaLQ*
+c$uh[ei2gaa/@*DS`ZC^Zs^c-\u7$L].p^-<<V!<3ZPFB`.o-C6ptN5D8ke!M<E0c
+n$6\5g\>aN8P_8?D1<tH_fb.e?d)TcHFpW74O\)EZpr&BYA&1sBf3T*C5ZuVblZ6:
+Hq7@(,!ubYq6=K#1&,3%"P%oeV7k(IKloMh+:\qlP"OMfgj+t*r`A["SS\5GXSIoN
+r6DP;jHnk1\`(-Imu/&;,eB"td@h/+BiRhX&Wp?d+o?PKP6<Z1jMiDq,$ZIG'8[pO
+BARp`\%4HPaB7WNSP5:3*`fr(p#"&c7/?:To$+SWRigo[USW_!hU1B2FN0L+DFiWu
+oVe"=i[MogEt]n!@i1jn`^Ih+fd'_sH]OVS@ZL)lJsFCeZfb+=q6S23eG@_:oWPoY
+jXjq7'Mu%4DY$knB"3h7<>-os^_<rFc*f2>/2N-AB_[ubr4ijY+,-!b7#h(qgn&:B
+LS+62r91^SqPLHmq0100CT?UP7EdYnX(bq7Co0`S-^:A'(K5X]V:D,.!QWkSX9/qm
+7*:1A#76J>*u>OcLS$4Fb38`W'`*/b5/67PeblTgno'onmB::d8!U6b85dlOHPnD/
+:HW>TY4i;2R=s/[&V[8l%oht;[+]6QaprY]6;nK&\2V9##<EPb"FiCKZTaq^e2Um1
+kqd+iRsm`r2>4_arHhK@^J/&"dbaAdZnaMhP<;/C.HrR%Z?44La>*C38-m-1q?FF/
+4\o%sbc^e(`rPp"?1URYPKDZbeGS("B_M0=(87mGfD9TgD5c`?`N)XC*!pQqR,bYE
+##@ns-)21V[DL&Ekle<3!0CYQ6K1-eA9HnqTO-4#C]/%oEU'fX?/#,Bq4Y%ahNt#[
+2^1N`Ms7g-O`u4*K^J%#I_8--UqA^-B\@rF<kMq[iC?b^$(N8cH3lui-2gcujAEZB
+Cf>ZC9_'Ht[Ys=03r'i_bSlP0FIb?cd^=KAk>dmS?,?3oEtn*]po?rUXi%>'OiWF.
+Pf2*^nT=9M:lM5"7"M^n+E-tZL=2j/=@r=fFlls[>I<!8DZ%HYji*7KIn=!m>'T)=
+dk;>Cnm:0<^qI^sL4Y4'Kc%16:dhoXj-1hqR/!KE`[h^,U3T47rr-]HDX:QUc+:9R
+;Z-.:+'Wo</F".bkSJoHMedREHX!OkVLVK"L-StH0+;f6Te0T?*.b2SLa0[d7!WgT
+OpD&Rk^5-MjllX"kKbi-O&*@Yp9C@VRQceoH`].^QA-:V]m4/;cRb7$'S4YhMT/.!
+8`a6WT@t.Okog-7!bFLA4Bm]%J<(5.hf]]E8-bf1-o^JH-_HnYrrCu1=0&RWr4!I6
+,lX4;U"eH^?'KiU7;qF_qi],No__'ZcLjsjlI#FZb5/<-n%?npU$@)O5$c_s/*ZGb
+7@#i9QtEe6Zoho.%++NIOZ-i/Fqr5WA%W!`2usWN'Kpk)T8h9kdcsm]5P'sP5GWcV
+4T>Bp?<u4[3_].%/L<*_E*oin3iT:B^12=m;i=M5<"2mV(:h/C:)V?bS*aG&^16c;
+S"]-]fj<u"q%Ls7br:#fB!RHr9;ip"6RXGT:mFB*YGfRa&[lV*39AS&pnM4:o&5Va
+\51;IXm54oDeJ"<ODsYmQXB[$eh+8P%lilYrh&=k06r0/9.aat]">8Zd]EZBhn_7K
+N2X_/2b'eOBZc%c\9]B\?NDTc!609&`,N_lBZ<ES\;gKgkbK'gkdHlseKt.1d_)"D
+FlirlnZ6Js@Jn2`+%XuC'A;,CgSO;D?*r05E>'T2Y_VN6].rBp<J*LC=U<uXX"Ghd
+7MtpA1eH?eFh%UFGBmC1#llB`;nl#jT9cp8R$q?nY#ot5lbDBp\$_^KbH,GTC3lCO
+S>BGgg3?R5JWqCYOHrr.!TQd\G*KAE@i=6jcH)=\$mAhUa0#)_gE7eSq)Hj49^UN7
+AF.sLZXU)^MRtbrm+AAF@]n$8rbVT7jR`BOS5fLg^lQ`)pkn>sf_,jRA9OUC0+\"?
+K9)AraEu7g?(_/Fq@W`-3!a6u!''/>G5hQ5T?JDM)VO>hn5]JgS:Y,;]RT>OXjJ',
+quM;SF4pPh1X>70"`@1PNjohW5gpHk.]q'M^+4*;8nnMg33j%5<k\#rZ!_:'],V`R
+!;s*'A%A/7&qWc^"/F<=o-_gbKg?V@Q_eCN[rBb5mq!S_dH%k]D_pIsoag\E./A0!
+5dgRPp%4L77J(HW#KMn&`.+k0U#9`rRB]h*`EerJG&113YubPV?(2RPCfT.V=)8SR
+bS1%B'X(b,V05B,bN1r?q8Z3H,L$!A[^2m";KRNLC1E\qdTE"Nn]8D7#[uBIqL(h,
+'&poEr]0_6,I._D'O2).A4KDmR/FGBV7F-pbH626F_Po)pNiCtm\;OA?(m.#Tp"tl
+RO+(5X)K8XCsUUShQK&:3Cj5b#iU_N\2Fda!-]Gc7hfIS2cJ<SqT"kK]B0P/r3NM>
+&8F6>`tVmUV?EoT$CH\^6RtW*'kJPQJ3aDoEU%RSbMpIiO'__HI0_u+,0[t;9k7-T
+aq)\ZXKQHT6;)9?$#QTNe8B3.DD/\-2D8n:hTJ",)2X`Fi8U"c-ShuNY+g1G6:HDi
+W5M/d5=cb@qUk!nR.(?&bD5Y@o'5)Xb]Y^dF[R9fOt$=G>3=qB\Xil"3R!I3Fd6)E
+]gX*E!Ns<CqbpE<&nU]UfPQ$sEq2:FLE6*Nfd-7.W4[]Bq!@IN,gbPa[FI+d[!be)
+SkHtDAID-#_`M*[N?AZmL9*uA](F.NCU6]dAQ9ru<>q"#,-&0`?-2%/X952G=Eu"3
+dp?;Dg*pg<lSd4h]=ked^6rfmeZGR/l<.:=M;4g:%b9buHCiR7C+G<LNU-d:NjTE!
+5%f!L"-^=TqtXI>nlb0[Hg,LWQ^23kT0Tm\\D#&:L-'QQqP'DcjUp#'M3N\&Qm,jE
+Rm1Y%fJcmZoW<U;^!X7$4q1F_e=gZ)m69V7O\6Yd<`?:'!&KmMS?^.--A^_^MrsA`
+q/c,QaaR7>`j;FSF!doQP%jFN(O*?TZH$Z1Oim/_f2G:A$cIdP__UmjURtI+*/%=E
+5R<8gI3:8)3.kYiXpjnLO?BN)l0Rj2br+Rse'[3^eEq-k/?Yb*;QV32impYr0sOPI
+(?/*]Y")-fc)/5am!93g4o@&<?_(A3!A89SLu!M`GoH.pg2E6\bOF9MRP^c!8%5mO
+D5FY1E^$iH&@tPu*c9$:nnq1CR[c@Fq=3Q,7#@&hI]FL>.i%/=_C,oW<rq');Z:!*
+kaKhaXh;%M>%a47MX+JD/B3%+QoKCn10b\*`an_kM)k1+#.nEDg00?p),0uql]hHq
+NZY.-j]1Am#_>b:L+rU4q)0a;D,,tt$#l1bh+;ZEf+Q4_fp^pLe<X5Tgr1cZ"IdrF
+<@qNU5!,NMli?mmlo#WN&QJ+.Vrbs_XSg*;CPPQF[Bi!I;,&q(bg=7IE2=kL$Ya0c
+@WtiqZ61tLG;YVmfqj@1^I[nqr(%TP,r?WI,Q,gW;gHr$+kfM"DY1Umb`V0OcqBcY
+A<$r^Y9I*oOr'-R6<R7RYW6?/CHj4f8g]Lk5hI,gF>au[EGTn^%lCK5Y9iEo0!474
+D$CmM]mlF$iOrqY?N1"oH>W>SDH]UYpdYq@N<[7f:2P/jfg\P+eK.^fiV*W)*sP%S
+3s4\RQ+f`YleT[\kfknig-2,nko6\*7"%g6F1+qm/AYe1$DPlc!.&4FT$Y`\iSu&"
+mPmUC\E$EcNLr"?N!+De[DMkqnn7OJ8%Q.@Zh!$tY`@]P3X`"#];p9\DP:ikijXO!
+Bd/NX-R_to$5uhpc.`#qd4plo4Qo0H6kNr0:>d'<cnWI\DPn`9@/QM@Cc#q>rr=6W
+&B![J2bL[1I&X&Z=*HSPD["Kb-)g[YP,O>>!/eq?X;(3Z-]>BEA0[Ju1-m#_%?<on
+#N&aNi#Nh9E]`>H-@)(Qf6k>KA#=O861SlPQ-He+oWL(:;!RcKEO6dX]tLKT/^FM<
+d$FnLJ18IJHnM<oN^?X.UH-M:?jp`*jP=p_eF@Hk&YeZln!tgur2B0VQEF:go'V8R
+VQ!u4dHD*^4jDNkSn:_#>$K6--+]5D&;9h-*h-^YqbK+d@iecX2S&l+HfP/^4iTnX
+JW((5=#d[S]T)`@Ug/1j/8T^MU$L`AMZ3\%HGnOm'DZrsP2OZd)gsRh4'`YaU+A$a
+B+2]iCS-qnVjT?/N8qcb(rUC;)Q7XJ[kT^MCtREc838c<4nH9lIT^qCm`.i%r=/EJ
+]Y,;iBTq*(>ZtB:7kkH(ER+cE0*`U8;UdNBCbo9)G%aFiMg9BJ#X8A>9E>T5+3M?_
+RP]=LRQS:G/JnB)ala&fF3@!j-T<`\Ysu!'a*+cbn]H?+#nP13NeWscW9miF,VmAG
+T`Gh2Y(+^!*q"tsN"K%SdjA+FPol?Y3[V>tgOC_WSKl@=ZKq54R3l^kO8uW3/<8.8
+UPL*\h!+pB5g&\AVPc903D>VEiT(,Xf`2J]qJp5a.]Lt$#(uK!a>W`Np'ISO\C?HA
+lM=d^:mUkS)2l9Cna6hL&W%V\JVJTRW1HkNR.1Qf9L.L-Udp+96QZdja`j)aZ(^tp
+:/*6*YngAU/<dRs,dKuuc,rUhQ<&8VG<;+6,l$LCV`aW44A:LkbI_ZM"TUZ;3/SCj
+Oe4?,<;@'L3h=R$XCu3?7fES!eRu>%]!M8"#c/:u[C2AISQ/dCl3<p9VIf"==&YuO
+#!#NE?qS,f5hEl?aoYi&WQ/c2Q!Qi/A'n3?6T4L\HHC9b*q$o1k/QC",RP=>:MVLZ
+1dd)o)2d$l=*tp(e'r*UN$LPUa<4#\I7Os!?s65)k3AJ'kk[3(TP9^<5)j+pT;H>m
+qGqcZ!YH3DpEYnn,a5c#SAE;lP"&@)Q:#8i/Yi;JGpbr.mWEqB7jdrp.H'<1F)uOF
+:u&9hj+8eLA<%CdJ]L<\%n!eYS"$d+k(&,]YjMQ?DH:3I2<SWb!P4DI\nC*ejjoJC
+a^aH+=O"OuXhC76QZLnc6$4'"B^KZuRGrd$2CV2IBVpB6-_%Md3Iha//af>>2g6\O
+E]<pU;8O6REapbgF=F?a4%XPHUpopMYtq(3GuE?e@=*7P2sRZhat)-,!0IDUZKB?,
+4!JiTP^f%N0l!p_TUV<kRo<gF*Tc,5f_V:].CY6$'1cSk\qV^W&4diE1NW8]UG.Lg
+LSpC<*gOJG(2KnT`'ai3)6A9_IU6gDNh`T=\dMe:XNH`B<e"AdNlq&`N?VE7ZUpGh
+NsO931c578;25s&C,'5fiuqamf_8"JLVTm>/_'F7(&n8s4K5<nlecB!o:8@nf1rsm
+AIiQf.o1'u'S$rZ(p_U=L9i]:!_6]q`^6JM+X@-?!nG%<]V2GRg0SL!`:quJea@<k
+Y3rBgCXW>gRCug=@rP+=WXoUF*AUf8G&97L&^%Qa6FlZK+U0($$SMGZ-iX0!D]lEp
+PKRsbBkaH8+6p<+gfqfVK,.s6Ej8/eFQDf<Q^7!YWuB`R[<4/KM>mPl(EdHuil9j_
+j?%u-MCm?9L&A%C.S&TfU!]IeGsX_c5a!)0\E&M[lQLuC8V>2(FB0h6AL%_j+3HV4
++YpeGlECOW/r609W1qAO(9q.4o#Ji*Ss-#7[i,lHAYI:(qBK0<4fu\nQOM+nK&R(L
+B`19\OB8.>G/8f<Rgf)P/^JYE*h.`e5:%ud;l`S0VYL>9g-(aeVs2nE]tLS,W4&n-
+MRtq,\k*js4H@DAQ'PGZmT>qHQ0$P-b;2.NaV90Ze]87DR"5i8fQds`V-E6Zg@R9p
+*j;PI_.e=F$0NQlbp,Q1H;RA;7c!XGAX'HY7/B1r]ZjUV!nR)3Nd6u^kK3^A]n6.*
+3b4T+5nLM=`SK#tbm8cIQ,F6VOj'?)j!(`(1FGoN)77eUEKC=9JNj3%,N(oXLLGA@
+q*Xt#k)9,]6X933GEV61`s/_`-Ferap,J8bLgA`R,""QtU8a7]!!1FTZVB/bSNK;[
+cD]CJ'-6Pi81$Fe[;Nu\''A'rd^^sY4L_"tf,&XW?CM\#c29K.pQHsSaW6UX.s3]s
+B[Dhs'/lU4:^#$n8KR\G,On<\*1F!K:91.(HKD*2eZ@3me5$7hJkFB_CFW*flpg4`
+.h?Wbj.*BDM5.TVo18rRG!U$G!%37KYHLCff9a^ea/XTX[YO0mCBPQ,G*23#JS#M4
+m``ZF.-8R]=-H]D*N,ihGXT!?j=\.=AS=-3ak!YjBmTK>IA6$CBmliC:pn"0Pa12Q
+:\L%"K1#$n0Tgprm!5QG.(]j?r0uer;0CsLZqFWer6]?jVS<i2l6Xpq_8IcH[7(Wt
+e=bR">%Q_qPXZ5t2$-I!N2l4$6#"tIU4-3i,Kp)eUmk0-N0EQ#D5UathV?oD>WnQW
+[_dBjAW^HsM;YH=GGT?XrMQU<@V%3gfUsEA^7kVB5&<UeF`?pO!6SVPeU4rUV5WVO
+pRYXdZrVfNPST'B!+/;uVP'gj._sOF#W3KW1X'D"!VKSSk'?mX(kO95YeS@&61VLL
+-G-k9lt/oFoLQ.X)p>jol^*VUb`VbREm!>TYouE09kdkA=09ZG+QObb5QMJfL]d!3
+?mE1)9X>ItZXU)^MRtbrm+AAF@]mt5]0+jDZi:#hci.o_rr<*b2#dR8/#_W@fK\ng
+g4/V)5P3eB5%!b%mltf8J,e!o"oeQ^&KkHVa)*p\qO.8trr>ouSr`mO"]>:"2[$nS
+GlId!#?df#mJ$b_!,1Q$_t#Y13A+uLQGp97V?C,.7,Mpp,"c-m<$27Sj(dpXA6%lR
+VVR:*X4-OWf%l>p:OF=&f_&tm;n0]+?%PFET<A8ejBMk7A-^1MleHdC=#FpEIV6>^
+F4Z,'7:r26iiogG7qOaWT(ZIPTA7EI]*]*cFF/1r#i/hOT&eDqW/qU^$p@hL_ZO9t
+7hiopc&0+k.dYfgZXU)^MRtbrm+AACY?9@t]`V$DeoeYugI]gM\/OO.eF+\c@"K(-
+B9Gb.;utdEQ99650om;JV^"G:A>#"fP3`G8^GG'pERAU8a5pTEbKN!WUkVMO?Vd(;
+\!96%nT6#p&OJO2f-dQGk0mj#ZUDZM1dMgT84WgrDX!\[>P!?6p$XkT^.%t6r>hfF
+QEBQ9o8fEL=<tM5c>1rc>M31_`?ZdUb[].GGnhQ%^MTHrbD)K%/ND(JcP\i"Nl6LR
+,b9J!]?tdm*?C;-/(so3l*n"8k.`]chIk7T*`eW9\n&B`l:`%B1*F-<L!Zqr7g94'
+b\]gS&r#A&'#%FeY2Rs[,'oSaL5G_WjI\0_C)/iHRrjX!o1MQ9rnbrg.@qe``M=YZ
+eH+=,pd*WAaCWfb0gnWQOQ,BsrFrKZDMKClB)M<![ds0YF^Hr&Re4j.hao5UCM@o!
+8MlT/Jk&k8jsnMC_u`AAR9FLNe`P$p6Q*F`NbFs$5qQWR9CklTZ`1obV>60Ee8uXh
+,O:Fq5XS;cDB:^I&rAT8#83YAAd@>>>e&sW1gr!h.__FU^$,Y4m!aZaL#e:OhHajP
+=n?6hY@#t7f+rNGEDIdO4A1At-'0.X$E\KRE95O50S"12KH9gbF8)b0A]VIqdsj-#
+KraM4q?EAN>o->gY*7ACdqu93P$(kAWC0`raRJt\)tDdL_^u@r*&si/"nOs=<6("S
+jBYHI:GP3UP=mAm*(jO?*.Y&h.TqV\!!_NH0f%fK-^VN<_jdun8,9dYm;pSp:@c/`
+][`a%MChqFXf]QR4EiSN[W^s^0-@(k!+<@2C)&l4Y&'rffeMHW9Rt-9G^HnW^Zo3=
+%"Ji0^6@a[!%$sbXlbD5q6rrG[@7YU>17=@U6]B_cP\.2`4#s(WEpr^6^YEkRZ'5G
+8]6G.Ofuf)M#qDD+4#CEe@`>#jm.mbdIhWX1?dFdd?tB'X5Dc("N<VMNQ$qlf]E((
+V](12/s)U;0o7.B@?O))DYIQ)5<X9]qc]?0G(+)QD`-`PU%G:d,C0)N[)rtV`6nS:
+)mAX-0dimFNu5teSf[UK(J_i^bYL.PGt19NF_EBZD4nH2#*#PG(O's4`G'aK'tqMN
+/:gF5jG#"3mVA5=SYZ25jW4&Jj=?e@-:@//E_D'iL)F\HIe$gWD5giU5&AZT$Z-bE
+D-gnYU*A;8V3X]^*"]%o1&+;p*660uc&@Z2Sb[Q:";,OkfQmJsakF1qWTs>(R^B\t
+01=]"^0@PL4&B"IRFmYdK"HWa"E#s9V:7gu&qQ"&0":7DeEfppbWd@GTj;r9r*,us
+!/KoPoIk?A\rC*PD1IL6@Q:nL.&V,`6+F`_*c[Bo_!uLgNeiMp>BDiIjo5<8kWW\/
+f2hJ)Z"L4ROtfA=ZC,<cRV^&J$)8s%WSD^=jMd;k\7Z^)naT>*eee.CcQ6!TK%`GW
+r5kjM.t#RLMgIKQdda4f$HJ>6YJ`]!mnB#e)0>fXG7n!qJF&!c>Otoa\FM0lG4Se&
+[#I";^"'N+/NZoF,$S;@BrPBAg6`C/oblb>2o&.3@CBb4F;\Sf3&*ljJJ*/*E!Ll]
+@j#4g]&u`8FcA1\Z*`$QNCqr*dk@I/fkM:c/C;V+V^.B2<YZX8CU-;Q,[hia*UT5h
+ak7F#Drs!Ar0en=f=]k6BR6bGP$H\nhd&YbKb[gNKcP^M=_Yt(=)->B2#9nWNStL?
+Is8N<K^oD\$1sk7%klX^(Wa=$o>d8@T.f&HY=>e25?OI.dTLH>j-F%<*Qo0qrJ@34
+Er>b_SCoXVM3*[Pp]L8`9FAMsA>]A,cG!-'FPArk;=dPJAY\N&2#;Bn2;B\c`+l!h
+6ROKA%O<-LSAg5P/kL"O,fk0=r]cFEN.B]M@PN=?Gp[qL%l6T8r>iP_E?dm^[Vm<n
+;^s:R`Ti`r*C;\2-DH6i,s=/+1QR(VNh(@UN[XM4SP36Yo>d'fr>tQ;dCdl'l8gPh
+A/^K-%ErDl@hSBp:A"ZP.n2Yc[f%s!oXV2%_jj8[l/27EU-j#_(\05O(X;[qD:N%c
+*eC9cDbdl:I2WPMFe3hdM$]@1r_WMkf-%@H&]F_rR('tsY0tWk+V#@rODa??kTaBN
+T:6[892qcZF?duF,^GO^9'8P4L6&B$UEPh%Rb%$G>A34rX!nMITaF>3n;n(hA*23S
+E>XPL;<$]\Y:ks#.uSL/A**/<H#(Zdgs>)aHH0<Kc,=g%AMVHnZOTSI.B)=>Xa5uG
+7QL!L_J2rOH5aTUAb3[%4J9-bk)V93hHq)%;TrKCOYinKc[rF&"UF$0:j8d49rH77
+YmBk3gk-a`^K4r)b.jDA%G-_Mo<4UqaeS*hAaZn+=D>@FSKkPQMU,55[C5]E]*TA6
+J2b8<G9_!kjj@WW]I612!']]KS*iZi#e&r<VJ1@rS$$K!g9up<gM4<2lM?fmNLZt1
+&uB;AOU4o8.C%)ZOe+=<01d/M1DF$<9mPmi4*eH_?=WQ0jm;h]Ml(b\88S4Mk?V!>
+9B5k<BThQD<]3guDQ[H'6tp4q?7K20UE3Z`;:FRAL,j<XPkU,*%o(Tqq=FdO_X-XU
+QMG,W53Ye?8*<Z%ke:KSUQ&g5[;.911s:TH@j&==XtF05(5+_(pT!u3>t"3V!K&Xk
+NSdUp_q2Wkb*`98h2>thR6F"0"?N[)L$($,<eEbuc)]*+GmoUJ&?5>5.bdF+B`A'C
+dpnDD*hs;KE$L:,gsd1,k]%PKbn&"pl#ete]^;G!5)T`WeV%"c^S)"=7[9q0@9A47
+2@!a+$0_%A`(])SQ.PD0./1-3h^j4lBO62ZrfO@/>KhD!Ra%nNB;f%jZHhQ+`0#IN
+4ZO')f)e"PfDSX9>/&;.U<>*5Tcu`LD]s:OLK5U.6Gp*;Vg7aR>->%fQh9`&l'L,c
+\#J\-E*Pm(roLZ4!\#u]P=MHoT=%A1af!GjG_QqHaS\7:bXs/0WS[dArrAI96.L*n
+I0348[Yq)"GDI<h9t.fj8S&&g8g:;W7u,(%Do[0&-Tr6C*&sht"nc<`5k6PDp>1)c
+L$lDtQE:#/VVLM,[#4]R<tW+CU#&`U%db+he8Dt8b,'kMEK$';iS/k&Rj(+?0`LYB
+dn[<\]t_16`m3!jRd0>"ei9C`"^0[:KiJ4q8YF/mAO'BJ80$HUb?"Q*r4B3(Nk=I9
+:H*!6Y*GYK.Co;We4e1L6M&682qd:pa\(p;ED`/!].[0J;3(a/N3Wuuq5gA:'/&G2
+EcpKI1[+gTdHpPN$Mk2u_X]QqRL'a0=!/9;ZL,b*Tc&]d_ik9l#mqg'NPej)4S.YP
+2=L%IIV7+To*BPuoJ52kBCuj^]Kp>GMSBa!Zj,Si,<Qk(O2U"ehWN)TE_V<s!Vr)C
+2qBRn^E9"g=4])OBJ">%]S+N"X0cIk4MK]1?k_o?%0kL"dHW\"p]pu*l1ZC]:H)dZ
+o6-UuI[[h=-^s[3>75:Bm;6BJ'&Vuj/L.c@>DA;-)IPSK[i^.(_mN&)11]>\Td"6t
+T(RP"OuA-Ool^N=!0sndCmGu?V^J).,h)FsT&32RHg"HVQ8T$4$"6/\6FCOGO:;L6
+0qd&'8gbLdmX<pjCW$P4fPR[7kK6sDUMH]A*bNlCbt@Uuom7XIKT8Fb[g:(aILto9
+WG2W!$Cn:8T/L@#_Ba]W1*CDu=!G)&S,Q:74S,ZR?<V,FB?V8gS5[eZ)%SijE?!Yg
+_Zo91J?t66#g5tq;&qc?R$/23h(/0'is%nq3t7h.^0^BnQS].Uc9?9r/X'/CMpg/l
+<4B9LPf=`8d9YRr#X!V@W4S8N,';LZAs>!d>8+:+j@^^GMS?6i0[fR=?;AtV]01?7
+c+6?HMl=YDl.W5*OKGq-.e4o(H#\->rXs7QH>Q(2@i1A!0jM?(_&Q>@k3f`fjo5<9
+k[%u-O&bc5Z"^@TOu#S:[Sj3*,YagHWAJ2bV)s^t#&JQ=bD'DWgj_h?Je''l#Nfqc
+Gur,Xg<8Vs125GDhRSZj?VZ_?`G*C_XD6O+\H7Dt:Ca!TF',2eNW-q%4!?dfr795t
+I$">Lo08X"M[_.AF'6u!m9!($gK_X-WSL`]QrlEV)<$9Ri$Q't.@HWrcH?Y^_29R;
+0SHKEEe';L93sV`CplgrgEkHYQsN@hdBroR0\q#`8rH'eNu]lRqUB?cb>=?FFX/sJ
+8Khk7%;AMRa/7*1(iZ&i\ag0q23NkZgJ(#chYP7W/))Saen[q"*(^jL\E'fQ[1!<u
+"<=Am1dr.&$c9'kMRtbrm+AAF@]n$8rbVT7jR`BOS5fLg^lQ`)pkn>sf_,jRA9OUC
+0+\"?K9)AraEu7g?(_/HpZMJ4?%;'Do^blTC&GgI!)]kiO8f1`?hqbhrr<GIrnoi>
+&cLJR"ocoqB13E9-ET)L9:Q@E&C-.B4*7Vpe_#YW8Z8LC[d;kO=0=BAlr6,52>T!A
+Fsn<np;!iI!NH;]`"dGY>E<(Zg25KAPX_N?@'QBem!C4>P(#d$&\1<*5V%rCRT?fL
+R1&qu%_bC&jRW4(C62#e9W+h+6>8'nqE7]=R,)cL&a%6Km3"T*eh*#/Y+I1G!-b?j
+UK_1.n>ptIpQG53i+ukInE-KcMVGCI?q!Wh'\fnCY>+O[ZXU)^MRtbrm+AAF@]md"
+k$R6-Q[^m*NTOTkrr=pPn"BKNe*<BQ[?/?_!5[(CE"*[*6OJE'g_#tQQeFHH4&q>A
+L:Hcp86E-,]J.Hd:*q?hY`&'ZnpAN/O^:<%rr=]7RVsJ!o_GXB?L(FSf"%B!QffWs
+_,3XE!%NL!bb!_Zh+qnRB<9V7M*?#2,)$"%m9DW*3/E=2Y"#=+;t@iPIW=s!RKfIg
+q()%L92.bPrr>QsP5=W>eEnhcc9XUh+f:D/U5Cj1M--e_<_s'<WtaTte)S>T3H<]N
+&K&S%AUIDJMEUt428DfHD.GHH1[BOXfA:5JndOAoMbVfNS$(I[1[=\cg0U5:Q,'e%
+5!)=.(nl%p;)g+``HbIqB#5Chp3n-,4s,Y;@klr,EdC4l*QeMBqDL0WO@c(nD2NPQ
+>&K2Y0/GhZ@+?M"`P.tf\n7^U-^HE-G-Qs$[^ae_Zb*T-Gc\%-O^9@_M$2*A_D9\m
+M`"\>f^Val(drD,]Of&,;A'odaN'V-J_[sV-^ekMgCh#[c!&0Ln)d];FLB]tiLstS
+'o;FpZ)MECBj/,2Ej;*-B]P'+h6\n)X<^>;V>-X!^1(Zk**KPl@PF=oiXqQJ2u6&f
+OUlFZ^Lh\:FEIhK)gUaFeUK8+][*PP@nG0fo_hk40\Sl'eZI,eDd)%$Bs)RLoq[;h
+Xrpb1(]d+0fepr0q*pPRa-':5)2,('3X,eK`/Tg78iG8Np;n&hV.\tp1&b=njZb;2
+qIR^3ojN?KlBh?AcBTH3VkpK":LYC).)_*bc!p>(/<h-r!>OZS4B'Zq.Esi7Ou3gh
+7jf"\JJ'e8%c'nY!n`VL3AborD*,m!Q628sPaZ0]QY!MR1jr`RpX^=*G0H0)9Y,mQ
+G<87oA8Ws\7Q\u+0):\O<+Xc%M99ufNaNK9I09O6/3#d)"21pbN9\0I\i-UmGmds-
+FGgg4h*9G&QUOqT3eauTbYqd"!lQ['Kc2W^J8<*i:29YZ/2:l_.@M36mNbUn"1rGJ
+[`rG3o0/i)R2X\B[/U+Pkka_0H#95MU<Mnhg,8;b*g8bLQn@]7H09c:7M6;!).E$a
+*JS4kn4Q?1Em6#R8ArlBQPE-=U_7rsdi/oBJ9H)Nq(G1`Y4"S+[/6Zs_7%rXNH#Wa
+H"QY@>C0'kBWWPfPYHQ@PW%uJaNUR1SV38,6eaP*SoD`=6QQ^WJ;u&!nOn5_#%Y[P
+!*VH<LJE1S9lmgnB%Yttl(1h6`m.es[e#QHDJ*(5\W-qQ#bG1$%Z6,M-a:iSAS$l^
+:PdBendh6"&"@0%hp&7];JX!XeGR_iAZBNh*aj`k8b8M<l98%Ko),PdBb=!PW*7(/
+?41pjMu&6'aZ$$Nb8!lJfL#cG*5"BV**6`[aNJ%+=Kh#A&ELb98:k("RFj_aD,TiF
+>!(O'oBU^OTB;b!C)XL5(2n[%!*$>TmH0j5X%'8_#h=3^W^m2ugG!s^-OtH]KM8Yr
+,30u]TcmZ/f&t;D<t;deI*Jj0hI>+0%m9Y4akDaP*`2F)UL\<94Yl$HC=DGa(6933
+<d,u%c-1?h"I$=3!Fd:4nogm*%441Sr!`C1,rl(lR$RdTlF?@PEM#eZC*\K[pC9?,
+0T]N)?=NiO*bCth^1,K4^FJG@SnGP'r:Vb,l.<CC<lQPi&Z]gp`o/17*;'$W\MFQ0
+*^0U`&NOZ>-$BLAheVZp(gTd]jP9g5rUTELc@032o'_sR\NI^.H$@@/BUtpi7[9\e
+*ErHrj%V5DWQV'l5jmd[BjN\P_@$J2`u=HEA3aPOjH_b2*0Yo_b$7br\;eF%1'?#U
+>Fi;;P"G+^4rN"&.Q"gO*CJ-Krf(p[Ms3@EF(Zi#Wd0KD[.s'e\$u!195Af)m9Ga(
+<_"nB<*dfi_<kM!0uo/j`uY50K>l'ko!o9M#AqkG+;<)\d5C6DfD:G48c7#gr57Y[
+'2uKj]Zm59[_?)>2P6o'C1>NS9fLXFq,5WiV1[9C(0,67*i?&>VIO)ab?(PP`*s-H
+,YCBDe9s_lFX/"G)s#Rj%6I&02#dRF0:Xm-D`.?7bI6TZ(9.-X:%^13RC,b8CUbaa
+:H$f<,^1$h(S"@n?%[M8>j-Yn$$b)IiQiZ,c`HJ$@8nVn&[CPClc_%E=#t/FX7OX0
+q+[Yug.%"&8YM,kg$;i/m\qeYR&u@<dp-.ZI^II+H;GHPOdD.62'r(+4t<.F[I_Qg
+BUQj_`,O34O8sR]YMj!Hh2E8Fej<G<Mog:sk-goED_5``=.X?FRf<@Uf'G5_X\p`O
+c<D^T\$Ihn`@-`5R2S:bDC\$kC)H)$E(a=R1;c*@itOnY+]8H4U.,%IBL]g]&pY(c
+r4]]3ritVS0'`l\X5k?SBpqMpD5Q.Haeq_.gD.BLkCV8FB")E<`0K<#NC+VW)/ckq
+eVoX0.+k'8ne&Jq8/(ZD/MX3qE8MPp:FKSlk&8H!>(7r*krK6ED=^fCU?M>0oPGWW
+])`qbP/\u[cTL'[b+GtNj0M]pT3+Q3j5]fWE/_m;1(Ej@d!QHM)`4_M2d#X!h:J:e
+bB\8HSJhG-1@u#hQaUP9Db!*Y,eVoPph!J/q`#>J1GNWaimL(Y<Bg^6:A`_9_#*-0
+^]X+H4Uq_pcLPkdX)$U[o''=QUN'^bBB7l=:kMP7`4D[W>)gJ0E'VmQ6R9MP=t9]r
+"[fO4%aESbe)A2T)$?+L\#q]@/r2X8g[36G+afheR32#2PjLU-Vtnd<b4jb<o+.9C
+4Kc8$eCqX,FGOfcP5Yj"2"5CaXO^%"<08Ed)&,/a5]-(%Y+CMqUGu\87*LDp]M7^I
+IMp=;j[X*$5-(`&OWG?SFAF3.]'A;T!)\6iI;IX5B2m=P)f)Ps>sIV_(Q/YoBR&1`
+['HaNN=&'a!S!ChY!-+dE5jTj_[pGu![kt*7Fh7Z?12m,&a!@tm@?W8Rp,CnVY^7g
+V/q-hkZV,s:G-q-<RN2@Dm'8<qTrJOb8_Ru>Er(NXAQ$=V])N^;qd[[N`!BHc.k^A
+8DfPi^j0)W[_mT97[1*(0@Y+Znn7*^^ZI1(kdm>QQ0(dg::0T\RC)?Bk>N.G;_ji5
+5#ekG=^gu/el?TM*:-C!@Dd\#]f:a,7cJh]a?o=(#"2WSKOqYG*HR;+RQd]Y^.@jM
+Tkif:/U;LIO#^F;dWEA#\m3smQm]Ltio<fmf+TER(?u^+EUmCdp`/GJ(/Rb223)bM
+D`JCI!?.o_MD<l0rQHd0TsB&%cl\L`7ZXBZ>3rgBl1VL8p"R_hC&Gkcof8q[\6/]D
+TXHR?dD[=`.N$[%0%BZrFe,e+=n5$<N$;aQ)M,EcI*Kijn&uhP3\nSa!NZ"&9l_b"
+FfBggH)o6=l?Wr@XEbc2>-[Z6QG93J9rQ75?V>;H^"ogPV6[c5Rhu9j8;Q<cASsV!
+D2odnGd3(I1!9U7@ko56(Ig0F7!BT:4k;P"o4u6(rrAJS]ZKu0^R4_D9KmH_bBh3o
+=>W(W=#tcC`hIBL<jgE:eDlD4a_J"$f_!3,)nok",I?rN3JK=LbP5Tqe+fa@7los`
+f:OR0e$];K#*#C']1U[.1q*=tf0%*Oq(Kr1D3gHekg*ZH]NU#hUKC9?UM;,bkan;a
+1T4mG4EE#"V^;]=ar"S6.*CR&.Jcck*-1$0,['5F6m>E-l>s>iq0:V.rrA/OC"bSV
+LWd/N2Ra-6#8FJMQU/3A`7u%4j(XYg9nsj^l'c:#32<"h=2Y-po/oBi1IV'1Ajo]O
+c=`n!Vfh(H+SfDYg:HU!;"O@5hI2"a53`i:+4Ab=)4"op@[8_d%UM&)$:-%eg3R2"
+/m1dj'?*-K`")\bLqAKk?mWB2%1;PGH\M[Poq*sR^2a(He[=-r0LL1sk"S;s?cog+
+?^;]c6i,)tIr,h3hpqPG<cnj*R)J[Z`I8D`SNJ'N2\-DnibZh2;BX!C?i(bVO\uLI
+5%j:8PM<MeBV&#2Z2BX[WR>2FjL.+HO/mP0rd?p]MU--#C=#OtE:JGr>Xm-uN-Ct5
+>?<B,lbrZn5$g=0UG6u<i]mns!$F2\>/FLGDp4ZBRQiI/[@9m>)>%i2?%$q=qJLj4
+e$Q_sDlHo+E@pC`Asgj.,8k!XdlsJ*W67#b0k8+jL/=Xq;)9";>U:O*H[cgdp82@5
+G?d0Klee8%(8p::,Kjf!>Me8>NiAji>+V"W#`[[%Q&Y-3(GJ1^L5FQW&eT[*:-J2G
+fib)&:aJ.IKRnN\Lt_cn.(HDDS>':*:@g:aR(DII/q!3OD`$AI$W>@"k?HDHdk.@.
+#EfHkZWYs!B+hK-BYcuC;9LlhcRh=S&^(SBi\JMA_H^].4iF1(HNWO9M`//E4TXV<
+C=c\\hN`(r%J1$HCB^g*W**BX8gT??%Qu>@id(^7BhJ"F1gQf.iQiW^E_%B@>8+Ii
+>K8&#k>*jK5%E*Mrr=]FWS-V,[Xn78$bqpJ^G!b'G1I5[gd)DIpT&-U:1oQP;Xm?n
+F5lHdZ-Cjl*]V%b$&jPArC0,tp*LtA.u(QXme8Q-mQB7XQu:bU]8uM!c<=aB>F$jU
+qd7r4=R79@.s3_ko+^pWpKU&UBaUk$5?`%Ld[>`K58LO/;Y175F5"-J+#K,D4#Mb2
+ja6=>3l<iCJM#-"J"*b0$S9ljiXeWA'+?g-Pp;1A;&0*2T5V-'a#M+mn4JanA'_n5
+OWQ3Hamd,2)g3)HP@JHNrc/K]o&+3Zfk"q#9%N']n8r^cW.^5g<Tk80Xk.rq-Dub;
+SgJqQ4*PR,!?s@2m,[#B](;3-jmK\@/)(M[9Th%TBeek@<gB@MIs%m=ClhnMB'l7^
+&46&K`&L:9>ERtND"RLB*5Z[QQ`aA#0b=NU;6YHCY.*Mt5Qo"/bMPA2Y+mSXk"_n(
+GG]-Ef_Nk8RROZ;E-1ETN826$lVA85,]#'g(1\[a=(A^eeXQd$Y[dR@Sh$=Y\So58
+QHs@@[C$O*7!t(K4FqM5]mn;`?.IZSkOSWQ7FAL@;V+[T^QV4"[-%+KP?Zb[/F]-h
+EORP7,ri.L=#QVL5<kK3%5pcGRW>,j!K!rl,Y^n?gA:0e4U/uDn+YphJ'(iZIVeR]
+\M'071qt^"q<,sCA'm-6]7),%L0Y?p7s-@>V5rD-XL"pq'kqleP=gk:6On?\K-QC2
+1jRYCSf?u_YEG7Z)""`<46Kr@DO#:@H2I2:jOm7CVs;l[4k6q+Kd+$kC$QK(+ZhK-
+$EcmLY%mORMbSd^AhbOSHAUIB,>s_.*7Z^_P<Uo^T/1bJ7+C[IO"b7YI@$;uaerkI
+3hOojek:b/Z'IIBk*cl<8<S_d_8rB*.PTes/QSG[Yt,0j7*$5OnID&2L<1frgP0_&
+4Wdb4PKCOX^:!QFQTVfsIHP9.geO?aqb*,RfB9`R\t6a?Xs[?7[K/D-*EJoL"-]5@
+\RR)7"9p<r`t7o:A&F6,"N7&I^AanTX@*EX(D\kRGJhDI4LLmIG5c("2/bZl)T9?t
+e[6tNbniQK\A%'GIg*F?XP-WSMSe*2`/VEL0p"IIX"e+Fa-T_o_iulT@2P(Q,=3aD
+:/W4XrANIJk0Z'48pN&\=k%hujm>FZ)HpgCjm@^7C>(ua.rRMB0,RSY:^R"EOuaYP
+cK\gMRTpK8K=>3so[@cjhj[b"^okq>]/D/*fW2>fY0T$*D#XLroD\f\<;us6O3Koa
+MX!4Sp(.(3G+\[c&,eG>O-fabHdCJQTE!I9rrDuT;^25Ac8t4f])Mber5#l@*k$AR
+r"]eRZkEB=L#`15E#hu;qmYJkp%a,ZfZcV"L7.3_j`)lf``i%FJsVJMKTtnDY8a`7
+O<)H^S7T%3ES,k^&=[iQ+Tu\&Uk`FF0`m+O'Y>/Q7eJ%e8cu@ZkD_f&43:fG]nr^N
+)Em96CYi]\UPO=N^gW&TN_`=TA6r0B9@#EiIb$qhMJY]49Wc[7PtTa-LcHU*m%`#d
+]e<'4;B7gD$WtoIOK_3ZJR=T#.9U3_YR+("Eqd/!p#Le4h:tXZQJ@ZKQ8SR/e#"\C
+H$kW%ls(/g*]U4*ih0*]MVGH%Hql20b7$nUcP5-=6+@c.fjoZc'O.mFVoH6Cfru$j
+b/+nHLp)1?RkDhkhR12;[4!ZPa5?!>$1Cr-j6saC%KM8ri]HW#_&RQdG&BC&DV66V
+27I.Z\'#t)!;@Yi6s%&V-H.=fPXfUjaS"jk9="?fP"nb+iTd)J']M/_?jbYo\9j_e
+(q$h^DTJ?+YXDd?&d:I_N>&dAQXc71!6T$e689&;eS^q<i%&!$HnffQltK9,?-XW<
+3sE**V%%3Dor^\^H%+97G$m<b,jmcM@Nt1B#@iWlRupAk2MYo&.pf-o#7$]6].;>L
+n(/T]<RFS0bMYKuNsBr/]<_5,)IX63R+&@Np"un^%IVnRZZ$sB_;UCOf%l\4^%-8s
+m&gEjO.'q=\.93,&HQb%\9m-f^8l.r^j)@r.qRCc!(j0I&J,#-DU$(FeD[75B&G1C
+S;Drh>BXlc[B4E[kBkpp08R^M#:6ij'Eh7'Z6g>8Q$-LHj'QUb45/Gp\."25!2[/:
+iU2.s9KIm:B&GdeO+oR,MX7XAMH&WRk-jX37t(A]6tlhWd2b<=*"-?2Hp,ar*L5<*
+7=U%S+ZA]BGHGk[I*h68IIZ8tB&YQ(=(^GRD=YLk!h4@7!Eu&aiSU(UfmH;M',sZX
+2]mDP+.Cri\9-Nd_7JC-'H?Ia_IIuEh3]K;]kN!`Kb_(,nn<2_<S=WYB#S&F'm=l3
+o4S('-_L=rVu?gJC&\1O=&I8`Y^b[X[/U-bG^ntj*.5NX6f*:Om/PZ2GPpBhgjeK/
+2!$'Vo<R]ZJ'mRpUjp3i(YeLFm<JX2g]piRrpBI`rC=qAYb#UZ=13CdIB:@M;hg].
+>HqR1/)SAk9d#=:3]TAUc60D*VdSO5$X1nU$Lt_A'(RjgpgF2bS$>ac%eMp()JjRJ
+ZEkHk^d:Do,Pcl0IkA^;ofCs3V!7eI<_74<B`RncNJq'4I5Tm)4IQ=doA1C*dra@A
+U(;:1Z3@/9Acua8k>ijP-ZP6V_pGYUfD=LCp?@5F[^1"WeAAZ\'Ye0fak5NcMRss8
+;bkSp*LFm\ED=%qXseHq1c<6hfVou#p[H-[lt7f1[b_k']-,sYo8W4'/c<=>bmXG:
+WHjh5\']"CNRHN)a`*EblH(P%PXS]6BV_6QOep#:ZQaGKL_k2Hg]lY^,pEQ0fa#4g
+k.L9XLRSO=4I86sjprq-@=@u!_X2:#e8-uMZ"B=<1TYT&P`i':]P>9mNPha>r*>^!
+nrJEdi@Z_'WC4Tc<@HP$l+-[&A4>mtY\i"S:RnP0$Z,rPb@3TWXdNhmet;eB(4iP=
+Pmu!gr9FskW.F&j2Gg]"B2KObLl*qOE6*%oSq1-NDeGk7qRcRDA`>XK]<EU]!9Z2-
+*gNpYLqKnE2jukBIAU.RBenPco`H8?0;E6/2%kHUeX/%)*<RHc<a*qXO(W^#J]BAo
+F5is$X,#4H+6QX?$0TPQA6k2L!k;[<IU[T:b4!KA*$.VV](7;<;cB,%^J(ZlnQY7P
+"uDaBCsL3P\6^:HaEJ?U.`[/EN21&R,@A@Shtf:UIp#IAYcZ6@7r0Zfr:.2C1b8BE
+rr=[nU3Xbr>ds:aq+g5Oh'.4#aA'pdX/J$\^9&X]V=d@^"_B.,EQkOLA'\)8$n%&>
+#(/ZTi<G@@T,3Ubf'25`mrel`Im8&0LcidhGGE,uk03q6e@!Zq/OnVs\(&^0.pL[)
+:@U_FnP"n%,ucVJOfHcrB'_Xb0qg#46:U,O!tc,Uauf7`-N3fd`#fc9V?HMZSUWQi
+]`V$AMoiP2M0hIS1i"NeMd7,+d,!Qr'1=?[-srH5jH#(rQH3e4g*u,B3LK<)49Lrk
+gg%&P&8*+:O1!Kk\KKBapSRb%<qBVZV<*PtbnaK$QdY<V:S6r)IrhU4E<VV]^EFNG
+B&pVIW$/]/!6T;)ISBY`"E9PLB5SPO>bl-2F;OCXAPHY$q4FkSQRue3O!LoqXtMWf
+6Vu,WZdb18[^plJ#.^2F8OP8"BCqFu"\LPN'm%<PP]SnV&26n<eJODl_FG3=!p+DD
+5$K/NMm:[@=2#uSIV`fOZhZBBbT9*7bC3agq2-gYC'RRmlKTmfm98o`YAId.#eac.
+Js;D]e.9L+%8Mg$39-&I'_1":W1E8'0"uK6`<&s"75tY5n)`0`%]/@c8@>8?D(N?1
+Ir<_LpTWq&h;$%#aiE\U[`KHa'8>8h4)c=;;2/0+>"Il?iE7rVp8FTC9$\2I6U22K
+%)KBX,PeMYV5sFHnr([(kVcW5Pr5+MnkFGUqWlUfG.#e:AW8"EoOJU\7!bP/d@!6B
+Fj,lj`<3$fj<V`bKQq[Rbi0.1d'8hE!kGa%E]a).k8W4faIYciDj7oE4NFY\>3]0U
+dVGOfAZ+eDqNUIp[l4LO8qPQQ,Xc6,>@=I+*7uJuZcSM&&[48u,`D;SLRGFs!0OK$
+>@Bm_$%FuWcHRN^I$pp;q5t5`>'XUVnuPb[1WOKb$VtPX%D\c[_(#FPr&!;m;P[kk
+ZacjrR,B\S&j(M(_>]PahktdFR\nWN3hPOKg(p@Xf:;bk-Ca-\+3N=:W=[PIf2,Pt
+XDW.JBcAPA5CW2K''K[KD>PZWW+j7Tn0c0f@P!Dn5l%#=]?k.[0\-q`lgke]*B]Ub
+lhV-YoQt"pXQ\#8CA)u5?,8D#mHq9&M:U%.jrDC\Robc=bl&>jl"?u]3Qc\8A:k4J
+(mE.$jn]`kQ#%B`R3THD^sd\5XEhPS;Y$X,k*lf)bNjKZT5jOie1S-XmVV<4qefjh
+-"a1KAPdYPW!6X<d@@'gKSKj]H#5klb`=rY)&ZMhXA;[jg[e4,UqM]35F9c3D[2SN
+D_g')L9Vca\nNa2ZJ*B'#YIX:Zo7u^a5T+KVX1s!\O&82&nO&_hE3W-FEs>pGoaoG
+ig3Nifg"&8nSOuWGs9[IbcDk%QL6ZF1'!VsBrB:U4HaQkirNGtRc^plSllJPjp_@h
+lSL&Uf/F01P\@i'OZI*PWHhLHFNY&!/c"9&*C%`6ctbPK>*;I&rp`R,VFES]QQ$Hh
+h2nq!'mHP<5I:0jj-cn:5SGZ$KQcNWmuI-M%?2%/^h!c+]8s[%5;.L@0Dta+WPbC_
+g%f[QB)8(jHB`UiED%"[T@ND4(,\#AEN*L2`<bJQCt<CoZ-p^'ijn^s;'Wdf^Kc0M
+15*/kZpcdNAeQMt@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbr
+m+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5
+]/D/*fW2>fY0T$*D#XLroD\f\<;us6O3KoaMX!4Sp(.(3G+\[c&,eG>O-fabHdCJQ
+TE!O;#Q3N'J(?huj29*PrrE!e[X)$Q(!Upo^YsG;!8IfZUAjQT"T:j3B<TO4MJ&A^
+D61o"dj&G8)`n8)"[Y8=FN"k5?%EF6@Qj9JK<RksGpNdP$uK:8*;eg-15L)\<bA*8
+2W%9Gd1(ZraHE,iaIeoNJ$"0,C&\0IB%N%'M-]mY=klfrrJQBO`&2-hLRTsfg6d!N
+2r0_[l"L22?H2-m#c]fPA!;_@V+h2'PuT`69M,62q;BS#D71:7"h<Z/OmrjCC"P*n
+TZ*,"b/!@-r)6A2e=O1Hfm'cF=>\!&O2YCi;-IG3bJdbI'qlaLpu8[IikM#D<c@e6
+l_7$b%]k'FA+^)V&kO[cMd*JTM\Dj^W$7o$GG45D*M.6Q584bP'D0iH*W%RR,(Oh>
+^\k5*2k$kVrCbD(esO0`e_nn-2!B&6B)7O[A#JTHl44f?b[d/6h($]:NK=;EC3$S&
+L(-8>0Z%&sLn5eMjXE]THJ5.ChNJRg]-b72nts$tCAK<II&3gql2G;A@(`c\g6>K.
+@sqj8kqpu?qFn1a7$'n_8<r1#Wj#qg#>:Nt#9J,R"8q&T*q=Sp2E&]FE(;j7niLdN
+Ilk[UR^N%;><p`OlfO#im2o-8Z^g5uBsrJe//:<H1\::9AsM[_Dsk,q3H<PV\7-Ft
+_ZM-g*+i+30'h-s)f=HKNo\`WB.JbZSo+$gR_LEGO"];aI5RLfk7'm$)</5g7^@X)
+FRE115oe&^B[gF7O]'\g5ll-Be`jJ>aXk;V'c;N2Hp_8[/qilm0g&;U#3mX2ka+Mu
+g?,/CGHP:uMSO[Nc`LC:f(u+CZft:XASh'Zf_niB4\)t>o#ViUO?"pu'd6Oc@b9VW
+4r?]_>UCD^>n_Tea@a8=kfC]5qR-1(<R6ahmH,E9l90>ko'V(0g0Rlr?<(hL_HA%h
+^=24#Ut8C)Lt<"XU9n?,Mcqh^U(Gi=o_AO,a#MJ*\B(s%cDtW@d.ai?H..+g(aiJW
+VrfY$r2Y%>C\Q[iZI`qN4Z?C3qe>TW4e#*AgrFLPldfJe=^!LC%F?0"OVp!Co0gL7
+0VTk(EGtd/gZQfa8j\Gq4()o$o"SH$*4kjEX)#/4=.",W>m=LPh)5M$.ihDP\Xr((
+Pp^=i)/0gXYlq6^etSHtZlssNL_CB?#a\Xe;&aO5I$.udokPLlq1%S"2r&h"cMH+K
+#O&9S;mu8jS"[Z;+o:W'BdJsM>fh$QkCbV%Ue3$qYqG4!$oM3o1nnqY8(AIj1,%'o
+KQ-nQI=__On%!B[GiY=ZaB(;=2s$Wu\r92Z6GCodmO$k:g^>&]/QknOiT+=>\UnmT
+4H^q'hVHb"QM!rS9IB=sO?CQlkBm4/3dH;S]jl2+Vp2-qa5sp9m=.dAP/S\jRZNri
+)'E&(`Wm\J]jr=E13L0e'>Q<^j!11tK>N,3>_hSO2JeiCcWp%RqR;l?Mlt*DON$<#
+gY8ceG#DL`F^[.rWfUm$R6qnd)+L)n0k/=bg$o%Eb,#u)KLf5N\ZWt5VO@6[k)UtE
+q0N&@b'NKH-^cfL/'TkM[aa9'fP3<g(Xh2-XO+JC)'F3#(BK'ql;Z7JaVrA`M2lR#
+!^qeM*)RhZf<N#lqil_V*Dp0[*GbIPXNbs%jpcB<[Cl)oa-q,M!&3_ZgKV<kMf5Lt
+95AHUC5hT>;.M&DYq3k]d\0'LCGCD!j,"W5&g@Y=jD;p5T.RJY,JBE.3t.Kl^/WYO
+4O[m(]c0hT[(Xq9\Z4leE8EkO`V#/dRk'<UO^jOuaM1\(aqu4YA%#h)S45^Q@+BjE
+@m^!=eAp+X[lJ$7jM.&mQi,eJ]?i[TX8.ZRdWM#g%nF+"1eVVt,&$049PhlLmb0D]
+1+MW)d?k\damE>0ShU6p68>!(Udp;1_&UJOS+QV\n/]U8fep\76h7k5)XZ[rYA2eQ
+Ngo0*;V+1"`oBjH8T!he/I(Wi\>8(>L6a2BWj7e`Na%Bu@#\bL1'.MI*Qqo90ouKX
+3j/i;c,A3XqYl'.cSbOe8b2&8VpXkuFl+D=[nML_:TVY^HLki*]u(e\+AaaAS4sMq
+CsLJonEDZPRVj`;AV@`s?BHE9he?:A<-t(U*$:N>Ql>+pjSPQ4CS"nEd6+/4Yfip.
+<gPP_W=.N?D*=e^k*<U](/mcQOPRW,nC&3F3_V8je&GlCLc6Lg$&Q6Lme?I&do*Gu
+QW/3JK)Dh5Dp/_E^5\eoX6"]S.qh,22VRK]ZMp>bc3c+!b+_=UAI&@Ei1<p0klQ#h
+]hY%NQ:Ue'/FLK;$Tu]4??OA!#hs*-d,9s9IU@AXfCK(,cT:ZCHH+mqgfRAO*O_Qm
+om^.IUlOJ6oj*,qFbm,,(F,FIFSKkpSON^YNZ<FZHTYg['48R[J9p*<'M!Lh3t\$U
+22p86MRtbrm+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbr
+m+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^MRtbrm+AAF@]mt5
+]0+jDZi:#hci.o_rr<*b2#dR8/#_W@fK\ngg4/V)5P3eB5%!b%mltf8J,dmhrrDuT
+_QWnGrglpQH'_n903i.crrBlJr\p\R!"6jHi&\O_rS-fJqN$`a>ft3K\Y.8([RFe+
+cC5;/iFF5#<8Ar*=+!uih1b5V1*+1J6"+:c+6ldFIIQoGM6Q=Y"LUC57(,D6E?'K0
+o"a<J"si2Y!X8]=*K^4d6#l^Qj`n@r2b)?d[bd'%QF<_fbus<%b@AYkY&(u,PTEQN
+B&c1&WTi!-rrC/3Y%D,5,U*">FH/?RWB8]T+PS4c9h@N.U<%+BmGX0>@N*5GPC<"$
+c.F_l<M21aMfpM.5W@R9<pUC'<jfn!`AnID"eqQUWWq+Lfn&L/X0KQPMRsm4i$O/[
+(Li3<m*g>kCg)*G,G&W$oKOtGUg<<6T;u:5[X*(ef;'ZbHb7B_)g?Hih1Fu,T45^Y
+/]30cM%JnaIKOZ]5p1(3=3TN7d_)?N^9amY<n(AY=iD'\AXZh]\^K=?UPs*7njioh
+cN]^=o?2k.kahPUM_(^/[p].n</4D(8`I1i[1V2!>;TE#Zk=._RA"7#oHb?X,]8R:
+0\GK.4=]\Ojua,?EhR77K6bA\IS]N7n!(k\mM=7BbrWFL?<rr;l8R:s<3`KS9MqA]
+4-C:!+I\F\RQV^/8B>e/&;cX\*/EeH$Rum/ai_,.CdC4FCr?tnVdlc\9GBQ=OJQn6
+MF[p(\I:SeX[o?uIBK[]cDRUTCMe88RWMA!-.K.[>KSQ#Pn;)e(G!D`"74N=XrlU8
+n%Z+;_,j^h[P9YYjN26?PuaJW#_9Mj:frf/8H=+qN4=iWC/#(Z+I]B-Wn_;Q<Ou=M
+X^\nX[Y9FA/C,LC8\WA/R)rnYJ5i,8-2\rmrAs=QYO>P$JT*[jM3nUIB''Uur`B@i
+H#ACKL'J;EY/[i!:f*=%%!_KW;XE8?n$0Y`%PAjQRW]<WSmp0]_DP8iqP7fYQ-PS?
+lGcd$-Ida5NI%^%a1biO)9#id5X..]4C8>$gPL%<H`JSJNOiEN1YZ"nn.N&gqMuV,
+r'm_'+pUrPm?GQ1o%X]#QM"nQSXk_DeY0aA;2RGNX)k/p24TYI$UV/)U.OW:>+VO#
+4Tg\D#jO0c+BP"kh1eA6lup4b(O'G:K!_6/^(*="9fjmc3(1UD[-Y*VGi7Ti:<N5G
+$'fk!m+fX4a:+`=SX&IIdYI"K18;/B.J!bYVtjslebmCdR1i<B/LA*FB[`H,Ti1;Y
+7c_p<b;$r\66hmcYfbh]/g,mj$kdYb'9Jo_$AsnB+iV,ASVh`F[,3&_$a.6jn@L?@
+n2P[/jFaeF#m%3LCj>=5RW_(]c0)bFb"cHt*oU47qOY9H(lY*NH:O\%UUTV$XJZfu
+GOWhi2Nobd",pTi0]k9XmtUiBdZuYM%=qm:P)F[sY&3+-LbXeH1mU1[*\IO%O-.Xh
+bCG\"Nbj6SY_)2cqF.<MFIt!@egK%VHYMqYL'UsNK%:8XT&r?.`/a#4E]&$=:hXQZ
+1!3UpQXL_m3K<L>^[uY=>'<JjMEj?c8Y%2dZPN_K_;Yi+FuRqnb'gtn)$*YSFs1RL
+Bn't?jc&GLCGgMjLfn"#!`YFm83;DYE]cJX5i('COMSjMfcBZKRe2(XBUASp[k*YD
+=<a&%@VMa/7pqIs">PN!8L(H=70Kq8%(B#m=n2u?qN%!_GFRYUb%)o)Yjr0Q4Aec9
+aU+7jPL5V7FlY'lL@c^a)-Jde6aAAAH.tpAVmhFV[_J@c0(jQEXo2D@&^R3-I88m7
+PO,1r61jL:^a+$FZJ_$%Y(<O?Z"-TlEVgLuh1g^/((L*Xm6nOF[_!uGcMGcop?Dc9
+:$PA$<Da$\W+'FBWq@Se&XTF.7Qh7=%se6]PHa)s;Ce%-K:u!UAeHO<!-ZE$$):8=
+jua+c0m'eh,P)/.1uBk;gL"]eWnZ?:f]fXt86l#fL!4_%!XCu$Q"kXTo'@3+SjkCM
+;)7o7)'?(*m-HhI.3s*XEh4sSgSbnS-h@h_@HEIZ<q?g#lA[_k[$p^eU/+Y)0HkWi
+K5tW`)0VJ`[2C3L+&n$uhG[W_Yfbhf/#XT#MP`Ikel\q#Gdn/35"@$]!7=tn/C"uU
+&8?kSZ"m+U<gic9jm?CO9%0mOcdm5qorDj^n<G&lJT^WYhF>*X0$F11ELF?o3O-G"
+,LZYp:])nd8*oBT1C*=E*Rc?i5QtgsYj7Yt/8hSrL"Js]R5F]4e*\g=I8\s"^J-a<
+lm"G=P-_N3dMV6a,@htMm&+?[7KhQ76MK6H^YZudLOPoc3Dmm1eS*F:9U`RO.dYfg
+ZXU)`2Z@Om!9EbO!1[$g!5OZ?5PU-$3S=$9r+'uCr%ATZ2hR0XqoF-1gg-QPdIsL9
+i>'Flnd<3Z"nO(TIf%\Vks+Z?rrA&CJ&:aU!4[/t3EA)s*/!U?i%rqnIoh)ejtt5a
+FZ^0c`EOV=8Ii\QZ48;B0#[^->Z7LK%`P60M@Fll\3Xqfg">M+\<&65jfoinYV*gM
+];YU/,TNBulk^\Y*-\Oq'#`(dOh439Dp/Z2>48A7Ind<Qa6PZC<t'T;'P."DJKe`C
+]'Qdf8C?HJ_s@0<o^2W]5m=VmT:q]>PITfN5oC<h$">m*9i;:o:*;=tG@7qPT`2#c
+1@,W!kQo87VddL>%Imuq&J=(nq]&OP_('ZpOefT'Y2+'N.G:snZ/_\rG&r/Y%6sG'
+;uEunV2s^rWGeR2@GPY#SlF2l\;91UW3$qi.^LKFXMBA9-T3!-/L33`VlPZ?&L#.!
+=S6FO,[bjlr>h$Hq8YWGo7oa3W6dC$!7+qW*Gb6Z)(lBsgeoEC[`1]-GitMA<0B[W
+[)tKi,ZclFeE6,Ah4p9aR0*mY,D7(u/bV8cqBH!-J.q(uVekV3Fn3eTSG]Llq-s0R
+.t)H\95gp[gO`<`6TT^^'S0OcL`)u:l=Hg:*7=a!q"l$(VR(jL5KoJ/RpKXr<gg!V
+K'2^%#rOB[Rk[BlI+8m%Vcm<OG!d:hgA_/9co6@.lL^^jfWn+3Z^QHMrSGsMrPX-D
+A#!:)&KX]D0VuG4kO1-"je"),h.ekTWEskio2WEODf)l9l/C%_ULe.N%F!!`=Q>K!
+qL9A_?0TM09r?B+'?r9VA&8Hb9]NXh,8&hS?HQkTc&D$SQ>,N_>pE@ToB/+\[+(pZ
+0&55e6$%B"R)p:60-8YE1Fb,$j9NVs=hZ)$;;./]EQ35L`=j=n!]N?g#GXCLJa.6Q
+Cu[S$VQKZlk+Bjjhsc<uA+Ep.ST3_//*]%ep=?*$Q;2b>ljGlWl3k,]N?!$uqfOdP
+C&BOeT,/8O%(7od49f#1J0]V7E]i(;`A24mKfe8+*b,&co1tH1VfVN:7J6+!C/\gg
+SDIMt/to`(hWDfnM;$*d8g.9#a)T((9?-63^LZBc_ktlIVEp&tL#Oj($Bb<2n_lFL
+5qk&K"/tALX89%YXl_30/c<BH#P/1i0)ko$,LS/qq3OgA-uZKYkUpFNagKkmM'\8u
+"c`;P#l$VDa4n\pe&k.)@2L!9>U4/0e&.Lq,Lc*n9<$t'[RkT,?SHq:alcBE:Wtt+
+b"n[GHA7RDq]..W,I>kJ:SOrbnOjh'b>%s,#nJ+PPUKnHPYP'(:ED.t:PpkPS%2nq
+a1..6F[lo0`9s2#X35h`R"%#,o(AlRYA-6uZVMn35%D76ct*uVC,_T^9SR)JLQQGJ
+oI>`rIUecg!KtPABRu8(A9`q'HA"e.oDM45N;;hk%Fr,7F/8,NGk1:'k)FTM3c14K
+CpZX[(+D+FS'19%UliNB.XJQn+jI_4Zn55Y\P<Q1a<N[#n&;ik,*OHpo6,0s1I\Km
+MobnuQl9%n2*Wh[K?;tld;?7K8bEploBOr6l#VNhT%pp$,C(0%jMdIZ-CM-VP9(^r
+o"[N\5i8KgH]CV<#!>5/>XqD!;"J:qk7&).o,aOcNF,N3J&)%ad/:^uVVF_K8Z2o;
+$i^416R/o-GIY):J3V6nQo(0eq/i"pbYcKK,RGJ@0JWS-AM9=J5-"$cKOeH7hjIeb
+o*sKahj=2(XlW4S;a^,AS#BN4D];8hWNXqBY2GW-)E!d'oPJ%h<>%jW(8_O"B&UZQ
+*CeJV9\:\FCdXOC9p=W>36]+&LV@l&bBkndD(f8Im/4jVJ&0T:gWuQ&CJhRjFZ=;f
+8J^GA=p5)fAb=f,9!YoP#DiFiG),0jN\\R+/=085Qq)mb)F)2bIl:+9#C]=*-n1]*
+>9!&$9'X<$\JfMQB$C'TN'C?!)2*V9QQK;Y$i@MUj%e.L?p9Sl*i"53bAt'P?2^sp
+]\E7Kk<CLFS[DfVkScXAU0ZHiU_of9>MH$e##R4>a>a25P8OKXqd0lNFrYbrl(UQH
+R?881E:),hF2,hN&p`j1jn^$lq:4Ve-HFG9")9T,2]A_NZ+8Dd,LAl5^%5H(@kELt
+e5o`aK1WGEC@kkg2Ylk9Fos9.OJ*U7M/i&&f_'9c4Ln?5`QYL[E_!$B&]akqd,MY.
+$gRT?TDZeXT:u($8F<QtUUFia=_>7/J;+n7M93<1=d4;6"";D#%NMkt(h:Tu>Cg:L
+FXMX/&j8-7b1]oAqJDh/kBg"GI:LK-AFg7jYqMM&br5)DYLXI2UTJ[NFHue.oZZGW
+'kDF>Wmo\`I"X=d?]G_TO+iT\`r;ss4's/Edi'K%htkq*p8d/8]8nanUK,q6r0JLm
+mW:O=DpQ"\MOn4/6nW>X/2V^#iFQ]N,:Z>JQD:aj$gJK%\C40-9aJU=L_;FqI6M26
+;=>+_n8(!WEcE$,,kK<fk<C--k>*R@5'bX2=gT2.=n;QqWX/'soQfWMU9Kb*Od1?>
+k#X,OPSOF-E\"Ac#ijG(AXib"&4"lDdS@]VFeipsX)_^"Vg71BragR2q.n9eL9Yg_
+%k6hR>$Lf[7(QSsCJ9o9/aaipNHdr9]-627TIQd;:kkcA*hsesi$'<mrAH8Tq=gGj
+oCGNX4HDF0cfJK61l\VNg:[Ds[.@%YQBH$0#FTHR]6Ja8E%Ytp@31rC:<:p5e-1*d
+6afjq![\ci!QI\CPX-DUJ`M7Z!&D\0]pgkGO\a7512:uPq8VI;\sJhf4N$7)%<X[J
+1qBaU[*:U_]^\/D\-aU/<@ZBrc_o/lO='tN`XH<s7PTkD*hZ2f\.??fN_*0"f]?li
+Ie,djf?O:m2nrPfGF<!G\GWG"5bPK5?m5ZGBguAhFd>C$O`9FAD8DpdOM`Z!mPj-T
+RJ1]^8Fp?1cd.eSY!lp3r8I5lq:AI6^#$(BZfPJ%pI+SE*E,ad9*\)L&fjTe<%fu<
+?t>M,W(0c&*JrDWH40lq1<qa:#trYj03:F_e8j;]oN^!q4uq#4Mg^*H#L$LjT2Y?1
+Z/q\?rCYg9[.;e#Euhnjb-k?[P?_?S7dW1'XpUh?K7`GM&p$dI1"!uQN't29.<,su
+,7k*"fsW,`EjmA;S98bm:X"6r5$ZSuDuSsJ`R17sclQm_DX?CeL$.SgRl13G2ei7s
+QWg\IajJaThHN\r;m<MtkEenpn*>2+pIagl)G.H=\*hBfT]K+C#!<ed)"C6G8;!5P
+\=k?O8B-4A,=;;%C#b=&QN/JK(uK(WIaU)Z$XEVR]%-Fi(4AD:8Mr^_>f?JFS#VVa
+rA>u1R3!6D+=smA<&?e,"casaV_OK#2[PbjSgtG<IttqU7_3Y)BbDZUFTi45cJ.NA
+?I)+3`ijfhlBg3]!(R09RUQRV]k`I*(o"H.8HVO7\4$*ekI4^Gkcr;h;&D\7\_j4m
+pq@^ERq-5HcTfJ500/5shjA^GhJ/K,V5j>ta$\@haZ[)+F/;=f)-5I<Viir[AW6OX
+Ou%*+S)E$Zo@%0k0k?ti1*f7!%gh;ZrS9Ti@j5_IG/E.]0.Pb&DYF%LRl0Xg/_B*>
+T%D??mS`:ZR6O+^=Xb>,V5lq_6>c4jc%f_Bj/@JJ&J_7\a:YoM2ElS+Ekm=r"h"=S
+-6YLrq0@&B)t``>Zf^??/VX*@mYRl!D[b)uB_1Lc94nr9YLT"'\#7)-KWAtu!82rn
+4]dRg!?N*g&j)pR'?>T'gm]gI/Nlj!]T)pk.sFjSaF8;blZ\M;RVb7OcI6+bRWQ,'
+g0NDJO_elC:Jqt;jpW53QD%Fh(+1ce8$h,/@1rd\`'B!/N3%)_fT3gW"So4!mn^Oq
+0!4r)C&(&lIV>pV2*:g<1Z!G(Hkm4CYj#$&J#E_\kFO,t.V+*@')JH?j8_EVWo;9V
+:EIrMPe]d#,a5tY_Wu(=!$18Y,!8oWeb6uTp\a"@AqfDb7c+#CYg?kM^"i*l5%)mA
+[;4M[C+3R,f,"@;.5AJP-`\26!L7n+'8_a)0*eL5R$\U*8cZ_ffg!I!IVNFPrZ%KR
+U[+?ZS@kQWff]/o4^1_RrJmie[b"SXM.+!#MAqqcXBmm9gQDr>,('M*YU`Y+N5Igf
+R<Tnc',mRg8l\dgGJ0=D*DYu?G0YTuSI<]RBB8OCjj06r4N4JU9e![FAs$f+U2$l@
+X)NrbACHc3Uu%TP#?'QT>I-sdUD?R7c9V`WMN=[aHZK:U]k`ChmC-"hRHXYN+mU%q
+Z/n[qo1dc=[B"$/c_Yoe0+C16jERJ)[,W$,@ruD>'bk4(Y%i*(V2$=j5d5$6A)M^'
+!O]TsM0Yh64F+ij^2MBj_lZ5%q'e/^d8rcdCb0+$X1NFnDsej^7qnp?,\hgQn3''#
+2Yn9TE,">`PE-FHMi&.5f>nQrqo8#%i\I1ZVgKTJkreY%D-ku>Sp']?c]iQJ/U:u$
+^Xr,H/DR$SJ#M8;n]c$^!Ek,h7c&\@T]X:W+9@l+Tr6>q9fV0lVJ+1oNn&.6j_Va\
+Rop^$/6]>aGt5t(bo4+@oj(Yj0D)]N*2s\?ba(G#?UAq).+BcNW;ELnniLI4[,[0Q
+-D84<;3%"RA.C.ra/7++q,`thH@=\O(]:e,;=^pPrrD*ul.WSHWBoZ,=R('2;uL7K
+$sm;jDGo10A)L9:0ouWZ1E3^%<N+Cb#fMUp"]lD4$!]_b!g_tqmkr)[=U4+fraBOT
+CQ54/Y0!DaOT'fo3=<%>P1PH=<qKEfI]oa@Ej*BBc/E0`92"4GN#>+Zj0AN+kOhn+
+B=X'<[P1/(H,j*mr9!TSq>UG"dOmYAWp2h-*?s"N*ModhBpQ5;/#^->2_*63"qGeZ
+nY+hkc7nM.T,>N[11Q0'2e8(q*T%&XA_*A@j#cqB\T$D#O3FKFh-E4'\u4%$-hicC
+@6^S/C.1q81IND`h[]A>X$<GiE#R%[lP`NtXEboYpWqQSjp&5phJ9i9nnt@RVnkJg
+U<&[I]p&D$)c71T**g9[%Et*<3N:;ZZSP&hS@CreiPh0iDmhZEpt;NkJ:,rLj-'pF
+c5QARjO^#OanfaC[@JgLo,XZfVFh)I/N)j`94af'56OT7!>Rg]T]gBTG!%L>d`2Yq
+RE$0e[@Cm<lY0&V5Fg7gPs:Z:;-WrYWGl@\&(R:uGGg1)Fr1'ii9h8>hO3pea9C'3
+pQ<e`[I(/g[>eqiba8%W0!1m`:DAms--_sc]_8QT80E7d9@]h[?VOg.&j[BH0\,sG
+35?)^O<^Sp?r-<4?bM:Y+>t\+"Ms71DGSD^ausaPQ>L-UHCpDgodrPh%<T)Rf#`*"
+V*B5E3+/Li?BiV)g.ZS<B#cW66QmNG_F/gF-;sJf43-4FX6i:NZ^oh8pHDm](U$ur
+$bO(]^Gi@`D!=eJ[ee+.&C?Dn:_*F[Tq!?o:R24[A2IfZ")SX8!(Z[qpE$sD@F(3\
+rrC="7SbDsDh"n6VYQVkq<ItF>1;?Ym;HiEf&oYcff@eY'[3/;a7-B65:3.;[oY]q
+7S(Nr15F3Z,S/BgZ?DS3q>;0tRATs'/+Om!*`N!MndPA-Qo/T<^\Nb/g[r1iqTAb:
+[Cnme@uN2@,%.(W2^a!5@ujimc,U)"*'?QADc,q)`.0:S.qs:l9/"K#+3eSn5O1@b
+ZYce:I3%#VdcJs4=uIsF-*WGOkVr7k]hVrh+FH15dD`$&X.GPb*#p3<Le-Rc'&p[h
+FQA=EEEd%GZe&nJDI$,WqIHXh\-tENn!qetNSE^!<sft;'m=Cng#h2:TDY:1o8918
+&c&@)!"iL,4!)6<!/urerr@c3rrAqcEUs,0Gn52tMmNH3p':NS@/g4g'4O2pj4D'2
+27(_\i3E:^)lNZOO8[8"df0;k:V]O_-d+Yr$!>AqFO)_O3\^3*?p@SR<K0%jO<h?(
+"Zm9:`.Qu'6:%Od?q.X5h/Z5BPB8eH^#Yl&e%Srba?#)/3W8\81?o=Qfrg]#.EJ1D
+o>o!s2]2j/S9G[D%<2CRG@Yp@ZPgEtkI\=U5/1`BXF#A%aq@[##*@hJZ(9!JqY4a:
+^Z;m2f\'P8!TE>"b!/c4kYOk"jcOGh+bNVCIf6Na*cAk$Rt/Gc3s;=1.SfdH=(83%
+hsn^KDS]2Z_nOd*]*'Rb4F?)/)g3hsZ737lX2"2A(qUeb%5=if:YDG\?($!M3q^Ht
+M?$0ggLOh'Kd8_doUd`!H7e9mW+gQP^7Tc7>LBBbf2/Xe]=D%,"dW*a9I#Nt^&oq.
+Rl4s")'s9QW"8$Kiii!mZCj3=[DEAKo%1ue[[1j+h<7D<G$9U>WMdjV/CsP2\$o7,
+/G%WO6Kp$q,>.mDYc)"@gL]"pg5IiJN41qF&4\uOY^R_!0SsTY3aodhr2666:<H9q
+6ErGQ:GZ6\b9YNk:Gg?21pYFhaWn%t"^-l$!Ob?oSpHgpcEH"'p](;tP9CJt21i2"
+0BjN^dHks,%`UXj9%.;Bm-N`8'iN$)V26J('$NomP"FHjH#mN>,EjRe*b@()nodL1
+J'1&(l^'R)\%6+shs,D^hVV\m?<p[Z,k++mA<=oK/7uVW^jJB^XTi(.m0rbLGYQP`
+nGsa;\l[L5M\?,7lihP-6hu4T\m/.s"`3gh=KJWH\?>7oZ[6q%aH9_2a"#%f%`OL/
+XB:\/[EGfJVQ1#i%)/jcTuDIMY!2t$^`?Z]?Mp_l-^f*-SQf4CrG0%;N]gBM]",8(
+q'$eUDd\/rNo1*9IsS6dr&lsZ@-oOHRN+<K[<D[^rDGp(T-?G^38dRZl>Us7IkJC1
+k*OP0e[2bXXVrOqd]`!i-a:.jJb\ei-a]$a&Y:2G?98V%]e='a1pW6s[ZId#&f9Hj
+inr"NU'lMsVH)O8T9AYZkH_VFGqAK"nMS\'S6ZZQ<VhWUaHP.ULQUTT\So#<j4390
+3:Cp$OKV_KWfTIt?lOU<%j5([H'6-'*cQD>dVgo;[oY>uglM^3k%AsBQ:34"RZQ'"
+2:uK.4%E406:P2>jg9L%jMuj8c.(g<8+Mt&TLu[SAXn['[S^c+I6@++gc`#"b;(<c
+41d?qRG+IgIgiAAZT`BF,O+2CWWK"HZ2iWu!)-i&F\0HnDp+1d=nt[>,$T>!`XaKQ
+4Ru4>/:Y/_EB@Gsi)ZP1bZlhZ;aRja``h0n1Q:menN6U6._\1M4&]7bQ2H3pT.%m*
+GG<dGI<tQ!)kB=lo'655U5Y7tM/MF?eJ,835m%=h=.<**A:+@ZliZZHg":?%?.'\9
+"3j<S:;4;bdT9?-gqKXt':=$rNBKNF['.2/:0\bTl+=,ULLRLOH=aOcW,$SM8KOq4
+_f'Cj?@mIG'sBD#)OaMd7\r4f'"L7mmQ6YUG!`As.(k1ZX5.PIkUnJ@mT03^["e#2
+)]P9C.R`m]7k398,ubN$KWu8,SBQ`&;&i(;OPqCo"##3JT<o_/*cAgjO6*j7obNR%
+["a1t/OJW!9A;Orm:Z:?kYZHYX:catQm.;hnMD2$1,u\qLdZeH?k'n58!cBIkai>Y
+X%Y.,nqZf4gHi:=c)6o^_ah#^AC[b([Ca#)95DY.StqHAP6iGo-?)s%/K'6j:0T@$
+eP@X<ATF#'8K_mq<$epjTjHf!MJf>AHoAV7]CL+DQ$oC_BFrFdl;uBuGB&t28bL`!
+37?n8%O=VG@TkfH@8=LW*ZE8tjsM$m\K4t8i].kMK=@#jOJ;$&hZHu0=*Z#cdks94
+/I5TblZ0g*ZSgh8h;$i.C<Fm@Y%NmZInZg#$W)!cS=Y.XI.J#>g`<<o(uE8c5Q\th
+O<Y@bU2.<](9chZ'4$huWp.]P1>(GtX!q[N(:WENEu8G!+?>-7)iAH$;i`hAHUR7/
+r4+R8_XB%$'?bi#>LT9Jb7sf0O6bEL='$3)19;s+,\c[WQ9p^c6E_jGRLRPFX4:e2
+OE+4$;ue!_!;N92#@V84rr=R^Q0-8l6L.t*c0OZgCLO<_[l4jcHNJ6[f&eAk7$lB`
+Ga8JiluCJIL8R`X*-1+V&cj65ZB,HpL,!r]b)otT;Z(3)4oYMETXhN%V=]`;9k>'p
+65tW=7qQ4@70/;Z:-Y8uE6]Y<%$egn)Vf2jG?tlfX%Xnlrr=MGL#ssblWMa07lT.Z
+,^R5UDXOVN^IX]K$cm2HN]W7N3<&GD_sm<Q-\o(:(bp8TOPq"`7+_*'"HS*B9Hm6j
+eYXdrr`8hJ>h*?8Y;CNA[5E[HH*4O?bH3nQ"gP-`>RO,4'.eX=*#]9@gLGlC[5]:;
+$!8IF:lMsZ)$3/](qV,`Y*#XJH<pN.WnK&mQ`=9'Xo4a@N3LC">oJA7&8@Mo15Q,S
+_Xhq<p&>$7h^&#\qCPWDdH$?dMV0OeqSM[c_HF!NWCSC`8RaHp[5:se.VVMFc-uBH
+VbIgEEYN`Q#uU9Q#/1eej,#k/]tA>(O32qrh-T?tdqD8M`MKY:\p@Xf/W!+=)dcLb
+AJXi_6is3HoH"hmg,b%"PTiOeS(M^"k>JH+n0t#9>aF^4?IHL0V-W;rh25S(Qbc,0
+Z^+dZ@-Hmu6RsB0AS!!9!?:/J*18YTnM-JojmhfRA+VS1fatIeV"+tZqX))ho&!7*
+M\X^RaY'9,EI7BEFVG3C\WT5?RrT^[!*4V^Akpe(jG[Lr:k?.'!f??=q`L6ba19a9
+p)fKJQb$s;[!F"LD0;^]kcX[SpU?u@ldH`][>`ne-OAMGPm^Bn1<eRZXN=Nu5`'=p
+`oS/6GX*(U5fXJY\t#9qBUW5Fg+CP"8G=02OepGO26FL'%rBIZpPMFGq]+3-Z`+>+
+0<<F&hTi7)LKOOQq$TpIj48$'-FUF9m-5@p.sH.44r^q>k2Im%=6dm)R'fsL^>jY5
+1G<J-EoHME(#D?'[dTK$IB3i*gT-Kn4K%<,IkE[EP=E!1/N(2,O.o7\Xh2D(@jGrt
+Eoa@De/Y51Cm3!#R9\&3k/pO9:<8]]jQGXmT+12!BN!^)IqJOnaf&QQ?LY7_Odb,K
+XN`,h))86[;kWX(SO[C/F,64rESOA&hp6r`ptH)7N-PY=lL.*h0/Xat=1GV?2(]53
+1n1dH-j@a!k2X-=,u?PE58PkZ-q)FQ?bkE+Z3Yq-I"\r7>$G^-edtDpf<IhWWbN<d
+hH&cClG=KnoMpj/8gP2'VIg=de;?1(!k4+akhV:*DPm_Q+.#/uo%(Nth%n?/Bh\f`
+bLYBp7#5?\[@V0!lGU$8bXl<TmR]:YEpE7,JW,TDN4eSZjIuVn%<]K.Ac0%.Q^[RT
+I:$()AfA(i+&uTE_Xckc\U/d1r<[&BQ6qbY7$+QB#,G.p/CJ=?BglMUO$WuMr@fb;
+$+Es&)cHU7nij*kU0Gs;I8'HS")FT9C"F.:(H0k3:/Ie+XHCS$MLruQJp/ENi5=7e
+N$QOnH#p1q-f#n3$mL!Y[)3mta<":Nf[7]qU.&Sg"8%Gu(d*i+I[6@+?QN*,(,O)8
+Z!pFHl8AEsr*4<W1EJ-&quDQNJj_ks)lYe17/XC^DjOe`oUQuVM[S+c1rrk_i`N<1
+G\+?2g,UEhKmbuB?3gW1>rlLR)XU"57RM>IciV7UkL6Cu@KT^95:D"7P?(ssH$)O&
+hOR7j5O0+-UXJeLX7_b,rElT34[[PWNkE(Z[D#lCWN,I#4tXD1EE@?!EIY9,6+WSP
+8*,../H!=l1s!Y6R\l[+0Z-qfe<_kk]WD#0gh<^%9nm-tq'EqsCqs"tJE.9lE7Wak
+)]MFc.l]p4[W*Q.YcgHT2%#4)5Z9-TaPVJ2p-Q@&3O8WWr`h(N*i-MU0shjPHG-bW
+Q^;Jr(&W-2Q+;psAesUi;9kj>qtE+A*n8a8AfQ.gE0EYH\Sit3?>X9SRk<.M[9q%J
+bFNPMrr>mG4LDSWWa'sr;6anpJRp^sj%H;V=[WI/W'7*h<?/&FnDWb?Adi[414:9q
+BQ7*t(HV,u8;(m7X`L.Mg/X0BVI+$UXeK1e\u!'*\qQB`@T[5?Nf?@`AL(jt/=A37
+3?W'6g`J5<;0G;(^%kaj^FX,=CKb&.1[<PQ27B-Ul5-p5KXS*J"3#*.Em*[I"Tc,2
+ULR/h>.oB_<<8,#o[s".@s-;jJS9]]'5jrVKCWgKk1`hBeRA%&qXt`KWTeTPEH:c=
+=,T#@le5N!VAL;o.SOM+;E>F"o'ME>LCY1aNl'"2Wg'O/h;kaFDPncr^/"7lK_BV5
+H;%/jl1/S1=i^sl&o/0ZB)SZ"#M,7$CA6sd`LaD53(agO0p%BTrr<I,5!rln!N_=F
+rrA:t7*meQI90"eT%7++Rc@/JqVBWQg.`qI;Hm9dX`"M.br?iBG,AK1['^dVN,p2O
+j<K-e!%6bu4?.t%fIkM@_oYpqF5C*am#O'&*jRAdk2G^e^5c9b:Be@$@YgF_B06k0
+`06/W93!AKHs6S\aB8_XR^:2:AF)6=9CgL$nFEVnnK0E@4^ZTi[glm-lZK=FrV+@a
+Y#.>WCm4C"I:ob$L[Ipf:;jfIjXVu6rr@khU@L>90"6,/hjFtkiq0E.U8EGD"7a4,
+b<5\]dNUp?HD2USP4?n0("oinB#S&ID>`)e!6OF(!'$tX!.c5\J+49'F0Y'RprMhe
+pg,'=D[.@;pQ5-A\@Y!*e+O%EiE>:<)lG?4o-V6P!)]kiOoGCbTD76/r%B/hOQuIX
+oY1DQrK!<83U@'H.1,f_R8J%9.:d\F7Ng<c1)i4K@LHRlf[mW:)ObN.%W3GH$i'U-
+--aaO1c^a*fOkf%n=+O8K'_*!f.@&V+Q!]G1P/(>:A)MA^o=OQ_.t2'\`o*NMUFU@
+_E#2GKeYEn$+uTPW?7M1J_p"B>)@1ni5ojcoLFG>j5bXT_p/A4PKVO3WqMkrMRn$M
+Q)FRYK:Nc)+9E$AY]F7JBl?&$"4st5Oc[%\U9J4-34E+t_c+;EWHJS<pd]^KK<S64
+_DfOdYY)[EfVU:;._nl?p;k]1@`ZQYF?OSr]+uYj$4F0EXZ+uLFuUQ''m9bqeTC0s
+b3)[Qoa>Ui9s[2=k+QuK5m/p&XX'&@W]03<(duH$`*#5=^_U4/qH';:Q*4n'qVI.m
+bpQH<FK5>)e1L+JGcbX>+'jMJmqr%RD8'OmdUpB\$,hZAM;f#AE?tJ"nf'Kq^Z/$$
+^05&S0EZe)qN6oMVls1s3A;p5eU_&$Qk#<6iUiaCj)0"a*(.El%bpSRo%*P/\CPK/
+pRto-<jr.UHh]7fQ8*?oOUY0IA0FP(2q[N+=YA%M7j,fZ7#p2,:A$@Ch/LO*c^m_5
+dVSU2cSk#'g+K-6c_p'6?:)*p&][X`'SX'1.P&H.nsF,HjI+"39SHTO=35]@?0pj"
+^k9n#DRF3?m9@a4CXDK+NDic9gZt_*\;or*+Hk=/j,lTsZKr$7`IV4b+-r3TZ\79i
+.*)9=ok2B/6+S$LD<Lp!,Ml\jQ?Ku\dHA'f,*I@X'YK*gGbK!faX>%mZ+%U5U7I8R
+:3oU\N+FE!--OP$J`PBPFhc3TbIo.C>5+Oso3Rc^l'_`qrFB-g_o_<kL$)*+<qp3j
+=5X=^ghiD<m*.ri7h5X[Q#5unf#P^hk4q(K1k.Gura`P0p%OgN`MDDTg9$A$VUd(-
+>[5G[>6+BbO2lnnfju-um[L=;`QP.#Jl7V"O?p#K!$,3^3sKC`QsN55FaKY]7Iu7p
+X(umK]mVN]nen>HRA?'8@S[*4;s^*_b;*c&A&^8r"@VpZiZ+MG0BPddqs-/S>u*NF
+O07?O7;8R"oEO;H'q#JG(j_P0N&^L_mC#[Y3W([sJFJS2OiJMDm$[HNO!283_Vtup
+S7b[rht"bDR_5!KY:4at6eAM!Xa483>-bQIMW/=:iip&)GDo#i;HON5J3^(<K]^QC
+Q^D6R8]8OQnH+-u5GbM]('&MQCqTZ+X6k([.b]0W8@nCEWGupO7<o9sUIGQ40e4%#
+J5q:QUTH<dkqb[<aXE8mp0;+@\fS@/:%P9IFcBGj6dgA*VWq@(J9,q3>?o2oa<PR8
+&rOX*%!]0Dak4u#QVEYX"QpC#\ItAJ9k(hEo4O@OW<=#$A_4#*-n\Vu[$S+p,">F1
+$-8"o)k(jfS[$#.adu`siadG$O?'n>$XE<'!0R2cD5Z69K?`+>NG5Eng0M\Rj=qst
+:cC@l0]o'2'#S)d8]-0RQT6918MTDhK-31@@(Y;Sq--Y#K2]MU*h-lA>h_hsCO[q[
+9+88V"_X8_/]H+)W?k+TNuWg,A=4Vr-B0%V'?CnE"08ALm-!!8SmRf7](_J3)#W?g
+?+6:I\@AiYLA'H^8E!N&e;)i'dKN6c+SQSoN*VRFQ9!1+<>2s3a-F7_9BQ1#7+*q%
+B?bm@d;AO1>u't?C4\m`Jfp8iE8%oq,BB=Vn8L<=%2<p,1$PU%EJ,HZL^'oRjF,(^
+OWZSMiI`EIrrA3*d&h]@rbU#<Q`o%3A#tTuRbi7'd3=Z,%c7Tf7f+473@JT^cRH^T
+GfMLi5SiW)O]^m0I]6mqWG/iGC)VN]@V\X&Bbjf^NOKCXKW>47%T+?X837BKY_u?L
+^Q^Rg>2)<lI*JP@lZ]HL>A806`fm`&8;VRG";qK>"89KA\UH[o>`b7B`0eT56')SR
+7<BWrcR&CBcFWJ,2!o>+k??6\h24^B'=@3^R*-I?XB;hNM=i>VY"L-TC,'.WBg@Kt
+YN+K6@%+dHZ:UherrC.^@am('N<@G:7^K,ZMTpLGg"o(QZ%P5BMB`a#\&(\g*KKq(
+g0D-q-TI5+E[=!Sdr[bk'`>Q6Nhb`B$d/>6[Amq;2Qu3_5?lWZLm5qB;r#p"\Z88G
+gXG*r)\?c;Iq`SkV9b>>!?sN460N*^]n@cO/@J'(b9ZpKjtDh(qd!+o7.Z_(X'01M
+AC`@bDden_UB$oa;QP,:!0G629o`);8Xg$F-P@^T!*:q$%s_b4%jn5r+3\XGM)D6H
+`gSQ]ji*5Pkl/7#.n,`5`b$4U]URjplJE+XZ=cUr#bD.`jgR9@)"27p&%$b/7e7(B
+)Qnjq>ADl7_-mf?XG\WG;"8,XV!b$TK=Eu_UFnQ9ObC[cd?*-cFr,FfcCRr)F>ik7
+C@`dCjlilfa(X*!&]*b<MQi%""h9Q:3XsA;Vpf5,)T<@64-3tX2df?mo*`X2?FA68
+FjE$\qG!in)U"p]h-NGe>f=E3Q52&B8e=W+KEG+m=EJhp&g7m4H21>HJEC-2&ZYZe
+agr4HY,AAsX%LhtqreL>L$ck70un8>0nU`&>*968Ju`7c^*=k\9p[E@+VI='<QP"1
+,fg"(c?oAFq7Gbe"3NY7[@hfK64N*0:=Di+k.,Uq:L_(ASRIuJKTSDpDPXTeFkfiO
+n!SK.bKZM-TOB(\$'6/#7hFhJ<ta&2om*9;q+JgWcTYFBo;8F2&_=.hg+,'c#%JjE
+FQL#FBr=Qn&EcAq-K&i#@a^[aGsiso41kFCRI=Ee9'8RTo@K/t]Ba;i;tF=ZVs64-
+UJ8/$\@dPV?LXsS[g:1g1*fID.X<]=$KGRCjd]$)&n>!cdd$e_ZT]Mf%u+p_cb<!$
+ot/O%l!A/R[2j`mjtAQ,CUg1N6P8?$0rl'P%a@</SXP<caeR+A(s+1g'?Kf2O=#O$
+%O#9VNT;*]=GP)rB:SU"6X.']e[NuoY@3`2(Pf!Z.^:OLHrM'Thki3WB8/V^^kduQ
+Q]="*eh(n)rr=<JH%HPV>kt]uLWm4R<ZMY;U),,O'h.cj<&9N`*S[uANf,a!*24g2
+F$1=q?!F:r4T4>t4N.4r:H%Gjk(q,\ckc$oFrW.ZSsM'7K)A&O>&R#DAYmQi?87;p
+n#_`^nns-?p-*WiL8V-/q0,U*2OSurf^nsrP6K0N:51"55Z(XPTcc>nPLc,E99qQW
+6P:Sg'QF>gA=k8\m+AAF@]mt5]/D/*fW2>fY0Dj92Ce(GX0Z9<c&0+k.dYfgZXU)^
+MRtbrm+AAF@]mt5]0+jDZi:#hci.o_rr<*b2#dR8/#_W@fK\ngg4/V)5P3eB5%!b%
+mltf8J,e$l&,bB<5NPK$KDtj%HiBdD\`l?J=T8A\e,KCUa8Y2OBKhd@1n\iIpETI'
+p/ToWF;1A^Y'Hu,k=n;f<tMjZ=7'C)@:=+76TLE+)_2NVLP2Z5T\g$Y,q=53ZKUZ8
+jGccsOAoUYmPb3XC#m6W*0XQ"4YUYT%IsP3*,Q2Gi\\Iq5YZ!;l%R3Y$RgBVA.etg
+WAG@,*-q*Y=)*cJ?ho.DH"OpB^KmH)lo4MBmcJY1U`:\85"r`;9Bl84mL%HHgXt5>
+M#QDZ)#O6;TIeRm'2KSKZC#eDJnd!;9I3u"&C4Mem?)Etak/.'9N`0>\D!r3O^RMi
+K[^?N^okL]:fA<7@d$B?p;N6"@VcN'G$Rimlu;3H],V=Qm>AM9=6@2U`6e<=<IGMC
+bdnm^I)U$(H':V&N6a&`klgNF1>Ap)rr?*0Ot$>`#s9[<AHO`1#M1A\#YIr:8F>$n
+^77Q-p?sO[b5+1[5NW)hH20T&!3Z,ZbF5b@J',FSZqX=sRnpW#Rp!D8Or(C2L>LoL
+Vj,o89RTYX&$*YUX&EeiSJ3<01nnXB7Ss4R638;"&n4O_I\+<j\n1.RQOU6/q6pit
+jPMM6)pB(@H@<3APP*`ckk]GWHn=A2'\:,MhDCBp8;4rRY8hR<3"P8^q174LkKB/I
+P_<Ze)+]0QlTf7qePRG]lI.eM#J$KXO^0Wa(KRtYWp#oMQ.gN$c$,MgD=\"!o]c$j
+o$b::CDEp/L*JIsF2<.J1]^6*1IO7+ARrS4!=;/T%KK"V63eeMl]L7Dq4QVbfV=6m
+j5%=W@W2S6VMBGrCB":#Eb]n1Y;l*nRXFpR/toE3D.tP!?I&+F?#fLGN==4W9!i=L
+EWlnmh-@TT=eI&Q`sd;a5_DI,kA>1qLMlgH>`mohF'"FJR[`#EQ\hW^q5pB+lLD[h
+MadIW;W?mO-s+q5GNm;MY$6fJ+f1"S*(*FKoXjWE7/*/-^62rM^WuceK=*kHMbM\Z
+mjhLU?=37EQ)f2Vb$$-OGp]/Yq1HlbG4umhdG2OB=tJ)l!RtOgGo^?ZdaB<9f&XAB
+>qjAOGr+s0Eff,kM;f8oM`r$M,RsQ*'<A=ITEfOhLZuK]rrDYrhV%hIk*rP2r`m>F
+MlkduEp7cA(GNn.X4uBiX2"bt1'LeeP,=b*(!?^a*'/H)Nt-5@N(Ad$.%2FR47ZiT
+nI>;<3.]`CUWd]B^4#qb09bdG-mkG)*c9<,[2[:N]emR(:\l5DM;%)?hBO16<GH\.
+[GdL!GXFicSD["',\00%T+l0K@Sb+2'33iG#BPm:]@-W-VLDcq9?LR2ehfO.bBh0j
+G`Z3F(D[SXD@JbZY5)>G)Sk.e=+DP/31$7[,in'>/ft`Z>`k7_--AKCQcme`OPeUS
+"6PdiBE6U.09bgtr.ikqqen&\%_$H?>O>R0+gkmmCQmn+/e[@j*6\1e>X)OO,N6eQ
+)8rqq6<eDbo@g\Yh;1h8$AY2OQY146bL-!BJ&jfld52<?NDiH[\$;"DoL+`'CCdKC
+*iQ)ZmE2u@dEX`E&<snj8+uj"H94+I]&oRGX\\M?8b0oe[ESpAbM'nZF(KQg?.q`@
+7%,HrDQ<;"$JU*:8;b-FZE^54)7Y]f/tWnnjIAc271hMC5?q"4%i6@3O;-<b#m.`p
+OC'A\B2)YVo'a\LA@_=(*bOtDX/A]T\K6pK</4AVQ]p9c:-/W9mH/k8npP/8Ogu!'
+AmE[6l7sG'4ud$0b@!k:e090._rJ"-gaAEB;d9S.7,@a0WMXcub?Kn<-d@bK8'=,n
+oj8kH>Nuj7^:0ilC"FD3SS(EPef3kJKl5k>aPg0[l4bt<QYb4GS0]SB\TgO(>K0!7
+@_%kY/ed-cgt<(LD.32$n"lr=H%4$R>.1i3H)jZI^UDM^.h*9W?*Tt_K*0A0Iqrs:
+LQ'IdAOpL'X741h#-Q+d/AcYU+Xh/&'ZMmXpPG"J8,;$(;]lWU#I[+/D/S[^rbL"G
+g%g3\9i"Eno8f5[5LGh/G+EcUa/9bkcdt!c(/[dO-#OR@.\U1`BU,H*:JEuQ&W9GJ
+-\>7$,8a_WS]H>1n_HWa4>J6gO!bOuKYC1O:$VP@o&EQ]ntjWuU.)*Xb?OQ:M**$m
+(>f"lR`[XQ.Zd4$!5+S,rr@2.ij:/CDPpYJP>`'WMF:hV>?m,3\>u]]lRlh<k/J"g
+?^lV>55ER<o',8^4+:;tLJ,<!%>*p>Qa>qB'A]`+)MCpD*i(]6]7DKPrr=,ZEr/7+
+1qHCDoAdpm7i'-j#Zq>Ed(^pL&1&?cc;B(alT0IfJ`_AMhopCQLSO[KcGo;<8$EeR
+QBLOblIJ"I[!R.f*YSlR+#p#H^8PtU><7W+@5Hj%i1-^#!3$lni.n<pHr0r1oJ31G
+[?*ZWo%e_.e%fFf6Lq:O@r^YU+(+WrMlL$-U2=71o8V(_Vn,a(:T#e8bFL+5'IM\r
++iW-.6IH?:,.GL5ZcSgl:C+iY7i7)D(]ZrsMeSRjA.KdhpG1Kpm8gh=m/I'Prcc'-
++k-A&jp_[X6M#Rc%ApV9=tQekB!L2g4;!C[Q72*-0$uC*(gsF:Y%]ci+cMi+6;Z\s
+)qhFrZX:WK/k*)dYF'##B,^^/e@`nQDu#6_)a.ZMhU5[f9c$7GF;]"metH#Z4L^O2
+q@bM!fJI%sb".+JVim"mG&EOnmj*-R&0UL:7u*Jji?WfrhQJ-?EkRq_%S;&b2,!rL
+1&c%Rp(1uMAu#0gjUF9.aZ>L4DT!lE[(VIM99b:.[WpM*#Lt;)T[R_te)N0C4J&,a
+;tU3%hDktSEp7b"\MQ7BKf\tF?R=r?#,A8K>K$./ol[G`F8[-@bsOp(.pXG!7U'#h
+\\!m=#[/!5j%-%iOb,9h!R0AIZH!GR_2!e)nHj2-?E;dBAB3^A6K9fmNU1pLaO#tf
+Mgp;*h5^8Pdm^[lFXqgl5:CU_52t2CoHfZ)CZ@;/Sf2b0ZUkF5ir9#&3Gk7Eh4oTD
+6S9dUeBVA!P5kXX>>ue^QgfbDfB7llcBk;OU;P3$VN5f]m<d'CSjq?(X%P$77"$sA