diff --git a/bower.json b/bower.json
index 32e68382..f0eac513 100644
--- a/bower.json
+++ b/bower.json
@@ -19,6 +19,8 @@
"openlayers": "git@github.com:openlayers/openlayers.git#release-2.13",
"extjs": "http://cdn.sencha.com/ext/gpl/ext-3.4.1.1-gpl.zip",
"handlebars": "~3.0.0",
- "r.js": "git@github.com:jrburke/r.js.git#2.1.18"
+ "r.js": "git@github.com:jrburke/r.js.git#2.1.18",
+ "html2canvas": "0.5.0-beta4",
+ "es6-promise": "~3.1.2"
}
}
diff --git a/config/config.exempleSimple.php b/config/config.exempleSimple.php
index ad4cc693..005b04a1 100644
--- a/config/config.exempleSimple.php
+++ b/config/config.exempleSimple.php
@@ -43,9 +43,10 @@
'navigateur' => array(
'OutilRapporterBogue' => array('lien' => 'http://geoegl.msp.gouv.qc.ca/mantis/login_page.php'),
'OutilAjoutWMS' => array('urlPreenregistre' => "http://geoegl.msp.gouv.qc.ca/cgi-wms/inspq_icu.fcgi,"
- . "http://geoegl.msp.gouv.qc.ca/cgi-wms/gouvouvertqc.fcgi"),
+ . "http://geoegl.msp.gouv.qc.ca/cgi-wms/igo_gouvouvert.fcgi"),
'OutilZoomPreselection' => array('service' => '[zoomPreSelection]'), // [] -> Fait référence à servicesExternes->zoomPreSelection
'OutilAide' => array ('lien' => "guides/guide.pdf"),
+ 'PanneauInfo' => array('urlServiceElevation' => 'http://geogratis.gc.ca/services/elevation/cdsm/altitude'),
'WMS' => array(
'infoFormat' => "application/vnd.ogc.gml"
)
@@ -56,7 +57,8 @@
//Les urls externes utilisés dans l'application doivent correspondre à un regex pour être permis
'regex' => array(
"#".preg_quote("http://geoegl.msp.gouv.qc.ca/cgi-wms/inspq_icu.fcgi")."#",
- "#".preg_quote("http://geoegl.msp.gouv.qc.ca/cgi-wms/gouvouvertqc.fcgi")."#"
+ "#".preg_quote("http://geoegl.msp.gouv.qc.ca/cgi-wms/igo_gouvouvert.fcgi")."#"
+ "#".preg_quote("http://geogratis.gc.ca/services/elevation/cdsm/altitude")."#"
)
),
// les configurations permettent d'appeler un fichier xml en mode rest et d'associer une clé avec un lien vers un fichier
diff --git a/doc/xml/DocumentationXML.markdown b/doc/xml/DocumentationXML.markdown
index 086e8d05..ea906dc6 100644
--- a/doc/xml/DocumentationXML.markdown
+++ b/doc/xml/DocumentationXML.markdown
@@ -254,13 +254,15 @@ l'échelle et la projection de la carte.
|Nom |Description |Obligatoire |Valeurs possibles|Valeur défaut|
|---------------|-----------------------|---------------|-----------------|-------------|
-|id | | | |*info-panneau*|
-|titre | | | |*Informations additionnelles*|
-|position | | | |*sud*|
-|dimension |Hauteur du panneau. | | |*75*|
-|minDimension |Hauteur minimale du panneau.| | |*75*|
-|maxDimension |Hauteur maximale du panneau.| | |*400*|
-|ouvert | | | |*false*|
+|id | |Non| |*info-panneau*|
+|titre | |Non| |*Informations additionnelles*|
+|position | |Non| |*sud*|
+|dimension |Hauteur du panneau. |Non| |*75*|
+|minDimension |Hauteur minimale du panneau.|Non| |*75*|
+|maxDimension |Hauteur maximale du panneau.|Non| |*400*|
+|ouvert | |Non| |*false*|
+|projection |Afficher dans la liste les projections comme code EPSG ou leurs nom commun|Non|code, nom|*code*|
+|elevation |Afficher l'altitude à une position dans la carte. (Ajout dans le config.php est nécessaire pour identifié le service api d'élévation)|Non|Booléen |*false*|
*Exemples*
@@ -268,7 +270,7 @@ l'échelle et la projection de la carte.
+ ouvert="false" projection="nom" elevation="true" />
```
@@ -401,12 +403,15 @@ couches disponibles à l’affichage sur la carte.
|Nom |Description |Obligatoire |Valeurs possibles|Valeur défaut|
|---------------|-----------------------|---------------|-----------------|-------------|
-|idResultatTable|Identifiant du PanneauTable ou du PanneauOnglet. Ce panneau sera utilisé pour afficher les occurences.|Non|Chaîne alphanumérique||
+|idResultatTable|Identifiant du PanneauTable ou du PanneauOnglet. Ce panneau sera utilisé pour afficher les occurences.|Non|Chaîne alphanumérique| |
+|retirerCheckboxPremNiveau| Permet de retirer les checkbox de premier niveau dans l'arborescence | non | true | false |
+|identifierSousSelection| Permet de griser les répertoires parents lorsqu'une couche est sélectionnée | non | true| false
+|identifierGetInfo| Permet d'ajout l'icône du getInfo à gauche de la couche lorsque celle-ci est cochée et qu'elle contient un getInfo | Non | true | false |
*Exemple*
```xml
-
+
```
*Aperçu*
@@ -826,7 +831,7 @@ OutilZoomPreselection et OutilZoomRectangle*.
|id |Identifiant de l'outil. Est utilisé pour accéder à celui-ci. Doit être unique.|Non|Chaîne alphanumérique|*outil*|
|classe |Nom de la classe qui implémente l'outil. |Non |Les classes prédéfinies sont : *OutilAide*, *OutilAjoutWMS*, *OutilAnalyseSpatiale*, *OutilDeplacement*, *OutilDessin*, *OutilHistoriqueNavigation*, *OutilInfo*, *OutilMesure*, *OutilDeplacerCentre*, *OutilPartagerCarte*, *OutilReporterBug*, *OutilZoomEtendueMaximale*, *OutilZoomPreselection*, *OutilZoomRectangle* ou Classe personnalisée (voir attribut urlModule)|*Outil*|
|urlModule|Url du fichier Javascript contenant la classe définissant un panneau personnalisé.|Seulement pour les panneaux personnalisés|URL||
-|icone|Icône de l'outil. Est affiché sur le bouton dans la barre d'outils.|Non|URL ou Classe CSS prédéfinie : *aide*, *apropos*, *back*, *bug*, *deletefeature*, *drawpoint*, *drawline*, *drawpolygon*, *gentillyboom*, *getinfo*, *measrCircle*, *measrlinear*, *measrpolgn*, *modifyfeature*, *moveto*, *next*, *pan*, *print*, *zoomfull*, *zoomin*, *zoomout*, *zoom-hydro*, *zoom-mrc*, *zoom-mun*, *zoom-reg-adm*|titre|Titre de l'outil. Est affiché à droite du bouton dans la barre d'outils.|Non|Chaîne alphanumérique||
+|icone|Icône de l'outil. Est affiché sur le bouton dans la barre d'outils.|Non|URL ou Classe CSS prédéfinie : *aide*, *apropos*, *back*, *bug*, *deletefeature*, *drawpoint*, *drawline*, *drawpolygon*, *getinfo*, *measrCircle*, *measrlinear*, *measrpolgn*, *modifyfeature*, *moveto*, *next*, *pan*, *print*, *zoomfull*, *zoomin*, *zoomout*, *zoom-hydro*, *zoom-mrc*, *zoom-mun*, *zoom-reg-adm*|titre|Titre de l'outil. Est affiché à droite du bouton dans la barre d'outils.|Non|Chaîne alphanumérique||
|infobulle|Infobulle de l'outil. Est affiché lorsque le curseur de la souris est placée sur le bouton dans la barre d'outils.|Non|Chaîne alphanumérique||
|visible|Indique si le bouton est visible ou non dans la barre d'outils lors de l'affichage initial du navigateur.|Non|Booléen|*true*|
|actif|Indique si le bouton est actif ou non (grisé) dans la barre d'outils lors de l'affichage initial du navigateur.|Non|Booléen|*true*|
@@ -994,6 +999,18 @@ infobulle="Dessin/Annotations" visible="true" actif="true"/>
![](media/image21.png)
+
+outilExportCSV
+-----------
+
+
+Permet d'exporter les données d'un panneauTable en fichier csv. Inclus dans le panneauTable.
+
+*Attributs ou valeurs spécifiques*
+
+Aucune
+
+
outilExportGPX
-----------
@@ -1305,6 +1322,11 @@ partir d'une liste.
|type |Type de l'outil. Sert à déterminer le type de région à afficher dans la liste.|Oui|*region-adm / mrc / mun / hydro*||
|icone | | | |*zoom-reg-adm (si type = region-adm)*, *zoom-mrc (si type = mrc)*, *zoom-mun (si type = mun)*, *zoom-hydro (si type = hydro)*|
|titre | | | |*Par région administrative (si type = region-adm)*, *Par MRC (si type = mrc)*, *Par municipalité (si type = mun)*, *Par hydrographie (si type = hydro)*|
+|etiquette| attribut à utiliser pour afficher dans l'étiquette |Non| string |res_nm_reg mrs_nm_reg mus_nm_mun |
+|texteForm| Texte à afficher dans le formulaire| Non | string | |
+|fieldLabel | Titre du combobox à afficher | Non | String | |
+|requestParametre| Nom du service d'obtention des données | Non | string |
+|service | url du service | Non | String| |
*Exemple*s
```xml
@@ -1315,6 +1337,19 @@ municipalité" infobulle="Zoom municipalité" visible="true"
actif="true"/>
```
+```xml
+
+
+```
+*Personnalisé:
+```xml
+
+```
+
*Aperçu*
![](media/image29.png)
@@ -1474,7 +1509,8 @@ Marqueurs, OSM, TMS, Vecteur, WMS*.
|ordreAffichage| Ordre d'affichage de la couche | Non | Nombre entier | *Valeurs par défaut d’OpenLayers*|
|droit | Indique les droits de la couche (Copyrights) | Non | Chaîne alphanumérique | |
|metadonnee| Lien vers les métadonnées | Non | URL | |
-|ordreArborescence| Ordre d'affichage de la couche dans le groupe de l'arborescence (1 étant le haut du groupe)| Non| Nombre entier||
+|ordreArborescence| Ordre d'affichage de la couche dans le groupe de l'arborescence (1 étant le haut du groupe)| Non| Nombre entier|
+|estInterrogeable|Indique si le getInfo doit être fait sur cette couche | Non | Booléen | true |
blanc
-----
@@ -1642,7 +1678,8 @@ Permet la définition d'une couche provenant d’un service de carte (WMS).
|infoEncodage | Indique l'encodage voulu dans la fenêtre de résultats pour l' *OutilInfo* sur la couche | Non| Chaîne alphanumérique| *UTF-8*|
|infoGabarit | Indique l'emplacement du script [Handlebars](https://github.com/wycats/handlebars.js#differences-between-handlebarsjs-and-mustache) avec l'extension *.html* qui sera apliqué dans la fenêtre de résultats sur l' *OutilInfo* après le clique sur la couche dans la carte ([exemple](https://github.com/bosthy/igo/blob/dev/interfaces/navigateur/public/template/handlebars.exemple.html),[ exemple simple](https://github.com/bosthy/igo/blob/dev/interfaces/navigateur/public/template/handlebars.exempleSimple.html)) | Non| URL|
|infoUrl | Indique un url qui sera remplacer par l'url GetFeaturInfo de l' *OutilInfo* | Non| URL| |
-|infoAction | Indique l'emplacement du script qui reçevra le résultats json du GetFeatureInfo de l' *OutilInfo* après le clique sur la couche dans la carte l'affichage sera géré par le script| Non| URL| |
+|infoAction | Indique l'emplacement du script qui reçevra le résultats json du GetFeatureInfo de l' *OutilInfo* après le clique sur la couche dans la carte l'affichage sera géré par le script| Non| URL| |
+|afficherMessageErreurUtilisateur| Permettre d'afficher un message générique à l'utilisateur quand la couche est en erreur. | Non | "True" | |
*Exemples*
```xml
diff --git a/doc/xml/media/image4.png b/doc/xml/media/image4.png
index 3c286a8f..ace57048 100644
Binary files a/doc/xml/media/image4.png and b/doc/xml/media/image4.png differ
diff --git a/interfaces/navigateur/api/index.php b/interfaces/navigateur/api/index.php
index a19bd76e..16f38cd2 100644
--- a/interfaces/navigateur/api/index.php
+++ b/interfaces/navigateur/api/index.php
@@ -14,10 +14,16 @@
$di->get('chargeurModules')->chargerApis($app);
/**
- *
+ *
* @param string $configuration
*/
- $app->get('/configuration/{configuration}', function($configuration) use($di, $app) {
+ $app->get('/configuration/{configuration}', 'configuration');
+
+
+ function configuration($configuration){
+
+ global $di;
+ global $app;
$config = $di->getConfig();
$debug = $config->application->debug;
@@ -37,7 +43,7 @@
}
if(!file_exists ($xmlPath) && !curl_url_exists($xmlPath)){
- return envoyerResponse(404, "Not Found", "La configuration '{$configuration}' n'existe pas!");
+ return envoyerResponse(404, "Not Found", "La configuration '{$configuration}' n'existe pas!");
}
if($encoding === "json"){
@@ -63,18 +69,18 @@
$avertissements = array();
foreach($result as $couche){
$coucheId = $couche->attributes()->idbd->__toString();
-
- $igoVueCouche = is_numeric($coucheId)
- ? IgoVueCouche::findFirst("id={$coucheId}")
- : IgoVueCouche::findFirst("mf_layer_name='{$coucheId}'");
-
+
+ $igoVueCouche = is_numeric($coucheId)
+ ? IgoVueCouche::findFirst("id={$coucheId}")
+ : IgoVueCouche::findFirst("mf_layer_name='{$coucheId}'");
+
if(!$igoVueCouche){
-
- $avertissements[] = is_numeric($coucheId)
+
+ $avertissements[] = is_numeric($coucheId)
? "La couche avec id : '{$coucheId}' n'existe pas!"
: "La couche avec mf_layer_name : '{$coucheId}' n'existe pas!";
-
+
$dom = dom_import_simplexml($couche);
$dom->parentNode->removeChild($dom);
continue;
@@ -94,7 +100,7 @@
$config->mapserver['couchesCacheDir'] .
$igoVueCouche->mf_layer_name . '.map';
$protocole = 'WMS';
-
+
//Ne pas exposer la connexion
unset($igoVueCouche->connexion);
}else{
@@ -115,22 +121,22 @@
if(!$couche->attributes()->$key){
$couche->addAttribute($key, $value);
}
- }
+ }
}else{
if ($debug){
$avertissements[] = "Vous n'avez pas les droits sur la couche {$igoVueCouche->mf_layer_meta_title} (id : {$igoVueCouche->id})";
- }
+ }
$dom = dom_import_simplexml($couche);
- $dom->parentNode->removeChild($dom);
+ $dom->parentNode->removeChild($dom);
}
}
-
+
if(count($avertissements)){
foreach($avertissements as $value){
$element->addChild('avertissements', $value);
}
}
-
+
$variableXml = array();
if(isset($config->variableXml)){
$variableXml = $config->variableXml;
@@ -138,34 +144,55 @@
$json = json_encode($element);
$json = preg_replace_callback(
- "/\"{{(\w+?)}}\"/",
+ "/\"{{(\w+?)}}\"/",
function($m) use ($variableXml) {
if(!isset($variableXml[$m[1]])){
return "";
}
- return json_encode($variableXml[$m[1]]);
+ return json_encode($variableXml[$m[1]]);
},
$json
);
$json = preg_replace_callback(
- "/{{(\w+?)}}/",
+ "/{{(\w+?)}}/",
function($m) use ($variableXml) {
if(!isset($variableXml[$m[1]])){
return "";
}
- return json_encode($variableXml[$m[1]]);
+ return json_encode($variableXml[$m[1]]);
},
$json
);
- echo $json;
-
+ echo $json;
+
}else{
return envoyerResponse(404, "Not Found", "L'élément racine du fichier de configuration doit se nommer 'navigateur' !");
- }
- }else{
+ }
+ }else{
return envoyerResponse(404, "Not Found", "L'encodage '{$encoding}' n'est pas supporté!");
}
- });
+ };
+
+ $app->map('/proxy/html2canvas',"redirigerRequetesHtml2Canvas")->via(array('GET','OPTIONS'));
+
+ function redirigerRequetesHtml2Canvas() {
+ global $app;
+
+ if(!utilisateurActuelEstAuthentifie()) {
+ return envoyerResponse(401, "", "Non-Autorisees");
+ }
+
+ $cheminServices = '../../../services';
+ $cheminProxy = $cheminServices . '/proxy/html2canvasproxy.php';
+
+ if(file_exists($cheminProxy)) {
+ ob_end_clean();
+ ob_start();
+ include $cheminProxy;
+ $contenu = ob_get_contents();
+ die($contenu);
+ }
+ };
/**
*
@@ -176,7 +203,7 @@ function obtenirContexte($contexteId){
global $app;
$igoContexte = IgoContexte::findFirst("id={$contexteId}");
if(!$igoContexte){
- return envoyerResponse(404, "Not Found", "Le contexte '{$contexteId}' n'existe pas!");
+ return envoyerResponse(404, "Not Found", "Le contexte '{$contexteId}' n'existe pas!");
}
return $igoContexte;
}
@@ -190,11 +217,11 @@ function obtenirContexteParCode($contexteCode){
global $app;
$igoContexte = IgoContexte::findFirst("code='{$contexteCode}'");
if(!$igoContexte){
- return envoyerResponse(404, "Not Found", "Le contexte '{$contexteCode}' n'existe pas!");
+ return envoyerResponse(404, "Not Found", "Le contexte '{$contexteCode}' n'existe pas!");
}
return $igoContexte;
}
-
+
/**
*
* @return ???
@@ -218,7 +245,7 @@ function envoyerResponse($statusCode, $titre, $msgErreur){
$app->response->setContentType('application/json', 'UTF-8');
$app->response->setContent(json_encode($error));
- return $app->response->send();
+ return $app->response->send();
}
/**
@@ -229,7 +256,7 @@ function obtenirAuthentificationModule(){
global $app;
// Construire un tableau associatif de permissions avec le id de la couche ou groupe de couche comme clef.
$authentificationModule = $app->getDI()->get("authentificationModule");
-
+
if($authentificationModule == null){
return null;
}
@@ -238,7 +265,7 @@ function obtenirAuthentificationModule(){
return envoyerResponse(401, "Unauthorized", "Vous n'êtes pas authentifié!");
}
return $authentificationModule;
- }
+ }
/**
* Indique si l'utilisateur courant est authentifié
@@ -252,7 +279,7 @@ function utilisateurActuelEstAuthentifie(){
return false;
}
return $session->get("info_utilisateur")->estAuthentifie;
- }
+ }
/**
* Indique si l'utilisateur courant est anonyme
@@ -299,13 +326,13 @@ function obtenirUtilisateurProfilsInQuery() {
$profiLActif = utilisateurActuelProfilActif();
$profils = utilisateurActuelProfils();
- if(!is_null($profiLActif)) {
+ if(!is_null($profiLActif)) {
$nomProfilAnonyme = $app->session->get('nomProfilAnonyme');
if($nomProfilAnonyme === null){
$config = $app->getDI()->get("config");
if(isset($config->application->authentification)){
- $nomProfilAnonyme = $config->application->authentification->nomProfilAnonyme;
- }
+ $nomProfilAnonyme = $config->application->authentification->profilAnonyme->nom;
+ }
}
if(isset($nomProfilAnonyme)){
@@ -315,8 +342,8 @@ function obtenirUtilisateurProfilsInQuery() {
if(isset($tAP[0]) && isset($tAP[0]['id'])){
$anonymeId = $tAP[0]['id'];
if($anonymeId !== $profiLActif){
- return (string) '0,' . $anonymeId . ',' . $profiLActif;
- }
+ return (string) '0,' . $anonymeId . ',' . $profiLActif;
+ }
}
}
}
@@ -332,19 +359,19 @@ function obtenirUtilisateurProfilsInQuery() {
return (string) '0';
}
-
+
/**
*
* @return
*/
function obtenirPermission($couche_id){
global $app;
-
+
if(is_null($app->getDI()->getConfig()->database)) {
return null;
}
-
- $conditions = "profil_id in (" . obtenirUtilisateurProfilsInQuery() . ") AND (couche_id = ?1)";
+
+ $conditions = "profil_id in (" . obtenirUtilisateurProfilsInQuery() . ") AND (couche_id = ?1)";
$parameters = array(1 => $couche_id);
$permission = IgoVuePermissionsPourCouches::findFirst(array(
$conditions,
@@ -355,13 +382,13 @@ function obtenirPermission($couche_id){
return $permission;
}
-
+
/**
*
* @param string $coucheId
* @return
*/
- function obtenirGroupeCouche($coucheId){
+ function obtenirGroupeCouche($coucheId){
$igoGroupeCouches = IgoGroupeCouche::find("couche_id={$coucheId}");
$in = array();
@@ -369,15 +396,21 @@ function obtenirGroupeCouche($coucheId){
$in[] = $igoGroupeCouche->groupe_id;
}
return implode(',', $in);
- }
-
+ }
+
/**
*
* @param int $coucheId
* @return
*/
- $app->get('/couche/{coucheId}', function($coucheId) use($di, $app){
-
+ $app->get('/couche/{coucheId}', 'couche');
+
+
+ function couche ($coucheId){
+
+ global $di;
+ global $app;
+
$config = $di->getConfig();
$authentificationModule = obtenirAuthentificationModule();
$arrayCoucheId = explode(",", $coucheId);
@@ -399,20 +432,20 @@ function obtenirGroupeCouche($coucheId){
if($couche->connexion_type == 'POSTGIS' || $couche->connexion_type == null){
- $couche->mf_map_meta_onlineresource =
+ $couche->mf_map_meta_onlineresource =
$config->mapserver['host'].
$config->mapserver['mapserver_path'] .
$config->mapserver['executable'].
$config->mapserver['mapfileCacheDir'] .
$config->mapserver['couchesCacheDir'] .
$couche->mf_layer_name . '.map';
- $couche->protocole = 'WMS';
-
+ $couche->protocole = 'WMS';
+
//Ne pas exposer la connexion
unset($couche->connexion);
-
+
}else{
-
+
$couche->mf_map_meta_onlineresource = $couche->connexion;
$couche->protocole = $couche->connexion_type;
$couche->nom = $couche->mf_layer_name;
@@ -431,7 +464,7 @@ function obtenirGroupeCouche($coucheId){
}
}
-
+
if(count($avertissements)){
$reponse = array('couches'=>$couches, 'avertissements'=>$avertissements);
}else{
@@ -440,77 +473,40 @@ function obtenirGroupeCouche($coucheId){
$app->response->setContentType('application/json; charset=UTF-8')->sendHeaders();
echo json_encode($reponse);
- });
-
+ };
+
/**
*
* @param ??? $contexteCode
*/
- $app->get('/contexteCode/{contexteCode}', function($contexteCode) use($app, $di){
+ $app->get('/contexteCode/{contexteCode}', 'contexteCode');
+
+ function contexteCode($contexteCode){
+
+ global $app;
+ global $di;
+
$contexte = obtenirContexteParCode($contexteCode);
obtenirInfoContexte($contexte, $app, $di);
- });
+ };
/**
*
* @param int $contexteId
*/
- $app->get('/contexte/{contexteId:[0-9]+}', function($contexteId) use($app, $di){
- $contexte = obtenirContexte($contexteId);
- obtenirInfoContexte($contexte, $app, $di);
- });
+ $app->get('/contexte/{contexteId:[0-9]+}', 'contexte');
+ function contexte($contexteId) {
- /**
- * Obtenir Chaine de connexion au site securise
- * @param ??? $service
- * @param ??? $restService
- * @return ??? $auth
- */
-
- function obtenirChaineConnexion($service, $restService){
+ global $di;
global $app;
- //Services
- $igoController = new IgoController();
- $permisUrl = $igoController->obtenirPermisUrl($service, $restService);
-
- if($permisUrl === false){
- http_response_code(403);
- die("Vous n'avez pas les droits pour ce service.");
- }
-
- //Decrypter la chaine de connexion
- if (!empty($permisUrl['connexion']) || !empty($permisUrl['user'])) {
- $auth = array();
- if(!empty($permisUrl['user'])) {
- $auth['user'] = $permisUrl['user'];
- }
- if(!empty($permisUrl['pass'])) {
- $auth['pass'] = $permisUrl['pass'];
- }
- if(!empty($permisUrl['methode'])) {
- $auth['method'] = $permisUrl['methode'];
- }
+ $contexte = obtenirContexte($contexteId);
+ obtenirInfoContexte($contexte, $app, $di);
+ };
+
+
- if(!empty($permisUrl['connexion'])){
- $crypt = $app->getDI()->get("crypt");
- $chaine = explode(",", $crypt->decryptBase64(urldecode($permisUrl['connexion'])));
- $auth['user'] = ltrim(trim($chaine[0]), " user:");
- $auth['pass'] = ltrim(trim($chaine[1]), " pass:");
- if (empty($auth['pass'])) {
- header('Content-Type: text/html; charset=utf-8');
- http_response_code(401);
- die("Votre clé n'est pas décryptée correctement.");
- }
- }
-
- }
-
- $auth['url'] = $permisUrl['url'];
- return $auth;
- }
-
/**
@@ -531,12 +527,12 @@ function obtenirInfoContexte($contexte, $app, $di){
} else {
$order = "layer_a_order, mf_layer_meta_group_title, mf_layer_meta_title";
}
-
+
$contexteId = $contexte->id;
$contexteCouches = IgoVueContexteCoucheNavigateur::find(array(
- "conditions"=>"contexte_id=$contexteId",
+ "conditions"=>"contexte_id=$contexteId",
"order"=>$order
- ));
+ ));
$authentificationModule = obtenirAuthentificationModule();
$array = array();
@@ -583,7 +579,7 @@ function obtenirInfoContexte($contexte, $app, $di){
if($test==1&&isset($matches[1]))$couche->wms_timeextent = $matches[1];
}
}else{
- if ($debug){
+ if ($debug){
$avertissements[] = "Vous n'avez pas les droits sur la couche '{$couche->mf_layer_meta_title}' (id : {$couche->couche_id})";
}
}
@@ -591,9 +587,9 @@ function obtenirInfoContexte($contexte, $app, $di){
}
$contexte->couches = $array;
-
+
if(count($avertissements)){
- $contexte->avertissements = array('avertissements'=>$avertissements);
+ $contexte->avertissements = array('avertissements'=>$avertissements);
}
$app->response->setContentType('application/json; charset=UTF-8')->sendHeaders();
@@ -622,7 +618,7 @@ function wms_proxy($contexteId){
$data = array();
foreach($datain as $key => $value){
$data[strtoupper($key)] = $value;
- }
+ }
$service = $filter->sanitize($data["SERVICE"], array("string", "upper"));
$request = $filter->sanitize($data["REQUEST"], array("string", "upper"));
}else{
@@ -630,7 +626,7 @@ function wms_proxy($contexteId){
error_log("not a get or a post?");
return;
}
-
+
if($service === "WMS"){
$config = $app->getDI()->get("config");
@@ -642,7 +638,7 @@ function wms_proxy($contexteId){
$method = $httprequest->getMethod();
$data = $httprequest->get();
- $data["MAP"] = $igoContexte->getMapfilePath();
+ $data["MAP"] = $igoContexte->getMapfilePath();
$response = null;
switch($request){
case "GETCAPABILITIES":
@@ -655,7 +651,7 @@ function wms_proxy($contexteId){
case "GETLEGENDGRAPHIC":
$authentificationModule = obtenirAuthentificationModule();
if($authentificationModule === null){
- $response = proxy_request($mapserverPath, $data , $method);
+ $response = proxy_request($mapserverPath, $data , $method);
}else{
if(isset($data["LAYERS"])){
$couches = explode(",", $data["LAYERS"]);
@@ -686,7 +682,7 @@ function wms_proxy($contexteId){
die("Forbidden");
}
}
- $response = proxy_request($mapserverPath, $data , $method);
+ $response = proxy_request($mapserverPath, $data , $method);
}
break;
default:
@@ -703,7 +699,7 @@ function wms_proxy($contexteId){
die("Seul les services WMS sont pris en charge par ce proxy.");
}
}
-
+
/**
*
* @param string
@@ -761,7 +757,7 @@ function proxy_request($url, $data, $method) {
// receive the results of the request
$result .= fgets($fp, 128);
}
- }else{
+ }else{
return array(
'status' => 'err',
'error' => "$errstr ($errno)"
@@ -786,7 +782,7 @@ function proxy_request($url, $data, $method) {
}
$app->map('/service[/]?{service}',"proxyNavigateur")->via(array('GET','POST'));
-
+
/**
*
* @param
@@ -805,7 +801,7 @@ function ObtenirAdresseIP($serveur){
$ip = $tabIPs[0];
return $ip;
}
-
+
/**
*
* @return
@@ -830,7 +826,7 @@ function proxyNavigateur($service) {
if($files!=null) {
$options['files'] = $files;
}
-
+
$restService = true;
if($service == null){
$restService = false;
@@ -842,7 +838,7 @@ function proxyNavigateur($service) {
unset($paramsGet['_url']);
unset($paramsPost['_client_IP']);
unset($paramsGet['_client_IP']);
-
+
//Session
$session = $app->getDI()->getSession();
if(!$session->has("info_utilisateur")){
@@ -850,15 +846,15 @@ function proxyNavigateur($service) {
http_response_code(401);
die("Vous devez être connecté pour utiliser ce service");
}
-
- $auth = obtenirChaineConnexion ($service, $restService);
- $url = $auth['url'];
+
+ $igoController = new IgoController();
+ $auth = $igoController->obtenirChaineConnexion($service, $restService);
$authtmp['auth'] = $auth;
$options = array_merge($options, $authtmp);
-
+
$url = $options['auth']['url'];
-
+
if(isset($url) && is_string($url) && $url !== ""){
if(substr($url, 0, 1) === "/"){
$url = "http://localhost".$url;
@@ -952,8 +948,8 @@ function proxyNavigateur($service) {
$url = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $url);
}
proxyRequestNavigateur($url, $paramsPost, $method, $options);
- };
-
+ };
+
/**
*
* @param string $url
@@ -962,17 +958,18 @@ function proxyNavigateur($service) {
* @param
* @return
*/
- function proxyRequestNavigateur($url, $data, $method, $options) {
+ function proxyRequestNavigateur($url, $data, $method, $options) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
+ curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
- if(isset($GLOBALS['HTTP_RAW_POST_DATA'])){
+ $rawData = file_get_contents('php://input');
+ if(isset($rawData)){
curl_setopt($ch, CURLOPT_POST, 1 );
- curl_setopt($ch, CURLOPT_POSTFIELDS, $GLOBALS['HTTP_RAW_POST_DATA'] );
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $rawData );
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: text/plain'));
} else if ($method === 'POST') {
if(isset($options['files'])){
@@ -1004,95 +1001,31 @@ function proxyRequestNavigateur($url, $data, $method, $options) {
curl_setopt($ch, CURLOPT_TIMEOUT, 30);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $GLOBALS['HTTP_RAW_POST_DATA']);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $rawData);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type:' . $_SERVER['CONTENT_TYPE'],
'SOAPAction:' . $_SERVER['HTTP_SOAPACTION']));
}
- if (!empty($options['auth'])) {
- $auth = $options['auth'];
- if (isset($auth['method']) && isset($auth['user']) && isset($auth['pass'])) {
- //On obtient le payload (objectif chercher dans le payload les url securisees)
- $postdata = file_get_contents ("php://input");
-
- //Seul le post xml de zoo est modifié
- if (!empty ($postdata) && strpos ($postdata, 'wps:Execute') !== false) {
- $doc = new DOMDocument();
- $doc->loadXML ($postdata);
- $domList = $doc->getElementsByTagNameNS ('*', '*');
- //on navigue dans tout le payload
- for ($i = 0; $i < $domList->length; $i++) {
- if ($domList->item ($i)->tagName === 'wps:Reference') {
- $xmlurl = $domList->item ($i)->getAttribute ('xlink:href');
- $partsxml = parse_url ($xmlurl);
- //les credentials a ajouter dans le xml on verifié s il y en as
- if (isset ($xmlurl) && $partsxml['scheme'] === 'https') {
- if ($xmlurl !== $url ) {
- //les credentials des urls qu on as pas
- $authxml = obtenirChaineConnexion ($partsxml['scheme'] . '://' . $partsxml['host'] . $partsxml['path'], $restService=false);
- if (isset ($authxml['user']) && isset ($authxml['pass'])) {
- $urlxml = $partsxml['scheme'] . '://' . $authxml['user'] . ':' . $authxml['pass'] . '@' . $partsxml['host'] . $partsxml['path'] . '?' . $partsxml['query'];
- }
- $xmlpost = str_replace ($xmlurl, $urlxml, $postdata);
- $postdata = $xmlpost;
- }
- //les credentials de zoo on possede deja dans le xml est modifié
- if ($xmlurl === $url) {
- $urlxml = $partsxml['scheme'] . '://' . $auth['user'] . ':' . $auth['pass'] . '@' . $partsxml['host'] . $partsxml['path'];
- $xmlpost = str_replace ($xmlurl, $urlxml, $postdata);
- $postdata = $xmlpost;
- }
- }
- }
- }
-
- curl_setopt ($ch, CURLOPT_POST, 1);
- curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
-
- }
-
- //Necessaire pour le SSL sinon on voit pas les couches dans
- //la list des couche disponible analyse spatial
- curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
- curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
-
-
- curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
- curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
- curl_setopt($ch, CURLOPT_CUSTOMREQUEST, $method);
-
- switch ($auth['method']) {
- case "BASIC":
- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
- break;
- case "NTLM":
- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
- break;
- case "GSSNEGOTIATE":
- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);
- break;
- case "DIGEST":
- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
- break;
- default:
- curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
- break;
- }
- curl_setopt($ch, CURLOPT_USERPWD, $auth['user'] . ':' . $auth['pass']);
- }
+ if(isset($_COOKIE['sessionIGO']) && $_SERVER['HTTP_HOST'] === parse_url($url)['host']) {
+ $strCookie = "sessionIGO=" . $_COOKIE['sessionIGO'];
+ session_write_close();
+ curl_setopt( $ch, CURLOPT_COOKIE, $strCookie );
}
+ $igoController = new IgoController();
+ $ch = $igoController->proxyChaineConnexion($ch, $url, $method, $options);
+
$result = curl_exec ($ch);
$contentType = curl_getinfo($ch, CURLINFO_CONTENT_TYPE);
$http_status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
-
+
curl_close ($ch);
$contentsTypesAVerifier = array(
- "application/xml",
- "application/vnd.ogc.wms_xml",
- "application/vnd.ogc.gml",
+ "application/xml",
+ "application/vnd.ogc.wms_xml",
+ "application/vnd.ogc.gml",
"text/xml; subtype=gml/3.1.1"
);
@@ -1105,7 +1038,7 @@ function proxyRequestNavigateur($url, $data, $method, $options) {
}
if(isset($options['encodage'])){
- $contentType = $contentType . "; charset=" . $options['encodage'];
+ $contentType = $contentType . "; charset=" . $options['encodage'];
}
header('Content-type: ' . $contentType);
diff --git a/interfaces/navigateur/app/controllers/IgoController.php b/interfaces/navigateur/app/controllers/IgoController.php
index ae35e3f8..73ee4fb1 100644
--- a/interfaces/navigateur/app/controllers/IgoController.php
+++ b/interfaces/navigateur/app/controllers/IgoController.php
@@ -9,15 +9,15 @@ public function indexAction() {
public function configurationAction($configuration) {
$this->definirVariablesCommunes();
- $this->traiterXml($configuration);
+ $this->traiterXml($configuration);
}
public function contexteAction($code) {
$this->definirVariablesCommunes();
$this->traiterXml('defaut');
-
+
if(!is_numeric($code)){
- $type = "code";
+ $type = "code";
$contexte = IgoContexte::findFirst("$type='$code'");
} else {
$type = "id";
@@ -33,17 +33,17 @@ public function contexteAction($code) {
}
}
- public function coucheAction($id) {
+ public function coucheAction($id) {
$this->definirVariablesCommunes();
$this->traiterXml('defaut');
-
+
$filterArray = function ($value){
if(is_numeric($value)){
return $value;
}
};
-
- $arrayCoucheId = array_filter(explode(",",$id), $filterArray);
+
+ $arrayCoucheId = array_filter(explode(",",$id), $filterArray);
$couches = array();
foreach ($arrayCoucheId as $key => $value) {
@@ -64,7 +64,7 @@ public function coucheAction($id) {
}
$this->ajouterModules();
}
-
+
public function groupeAction($id) {
$this->definirVariablesCommunes();
$this->traiterXml('defaut');
@@ -74,9 +74,9 @@ public function groupeAction($id) {
return $value;
}
};
-
- $arrayGroupeCoucheId = array_filter(explode(",",$id), $filterArray);
-
+
+ $arrayGroupeCoucheId = array_filter(explode(",",$id), $filterArray);
+
$couches = array();
foreach ($arrayGroupeCoucheId as $key => $value) {
$couche = IgoGroupeCouche::find("groupe_id=$value");
@@ -106,8 +106,9 @@ public function groupeAction($id) {
}
$this->ajouterModules();
}
-
+
private function traiterXml($nomXml){
+
if(isset($this->getDi()->getConfig()->configurations[$nomXml])){
$xmlPath = $this->getDi()->getConfig()->configurations[$nomXml];
} else {
@@ -116,10 +117,10 @@ private function traiterXml($nomXml){
if(file_exists($xmlPath)){
$externe = false;
- $element = simplexml_load_file($xmlPath);
+ $element = simplexml_load_file($xmlPath);
} else { //url externe
$externe = true;
- $element = simplexml_load_string(curl_file_get_contents($xmlPath));
+ $element = simplexml_load_string(curl_file_get_contents($xmlPath));
}
$elAttributes = $element->attributes();
if(isset($_GET['mode'])){
@@ -139,41 +140,41 @@ private function traiterXml($nomXml){
curl_setopt($curl, CURLOPT_NOBODY, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_FILETIME, true);
- curl_exec($curl);
+ curl_exec($curl);
$timestamp = curl_getinfo($curl, CURLINFO_FILETIME);
$filemtime = $timestamp;
}
$this->view->setVar("configuration", $nomXml . "?v={$filemtime}");
-
+
$contexteArrayId = array();
$contexteArrayCode = array();
$this->view->setVar("couche", "null");
-
+
if(isset($element->contexte)){
$contexte = null;
for($i = 0; $i < count($element->contexte); $i++) {
if(isset($element->contexte[$i]->attributes()->id)) {
$contexteId = $element->contexte[$i]->attributes()->id;
- $contexte = IgoContexte::findFirst("id=$contexteId");
+ $contexte = IgoContexte::findFirst("id=$contexteId");
if($contexte){
- $contexteArrayId[] = $element->contexte[$i]->attributes()->id . "?v=" . md5($contexte->date_modif);
+ $contexteArrayId[] = $element->contexte[$i]->attributes()->id . "?v=" . md5($contexte->date_modif);
}else{
$this->view->setVar("avertissement", "Le contexte avec le id:$contexteId n'existe pas");
}
} else if (isset($element->contexte[$i]->attributes()->code)) {
$contexteCode = $element->contexte[$i]->attributes()->code;
- $contexte = IgoContexte::findFirst("code='$contexteCode'");
+ $contexte = IgoContexte::findFirst("code='$contexteCode'");
if($contexte){
- $contexteArrayCode[] = $element->contexte[$i]->attributes()->code . "?v=" . md5($contexte->date_modif);
+ $contexteArrayCode[] = $element->contexte[$i]->attributes()->code . "?v=" . md5($contexte->date_modif);
}else{
$this->view->setVar("avertissement", "Le contexte '$contexteCode' n'existe pas");
}
- }
+ }
}
}
$this->view->setVar("contexteCode", $contexteArrayCode);
$this->view->setVar("contexteId", $contexteArrayId);
-
+
if(isset($elAttributes->aliasUri)){
$this->config->uri->librairies = $elAttributes->aliasUri . 'librairie/';
$this->config->uri->services = $elAttributes->aliasUri . 'services/';
@@ -183,6 +184,7 @@ private function traiterXml($nomXml){
$this->config->uri->navigateur = $elAttributes->aliasUri . 'public/';
$this->config->application->baseUri = $this->config->uri->navigateur;
} else if(isset($elAttributes->baseUri)){
+
if(isset($elAttributes->libUri)){
$this->config->uri->librairies = $elAttributes->baseUri . $elAttributes->libUri;
}
@@ -193,11 +195,12 @@ private function traiterXml($nomXml){
$this->config->uri->api = $elAttributes->baseUri . $elAttributes->apiUri;
}
if(isset($elAttributes->modulesUri)){
- $this->config->uri->modules = $elAttributes->modulesUri;
- }
+ $this->config->uri->modules = (string) $elAttributes->modulesUri;
+ }
- $this->config->uri->navigateur = $elAttributes->baseUri;
+ $this->config->uri->navigateur = (string) $elAttributes->baseUri;
$this->config->application->baseUri = $this->config->uri->navigateur;
+
}
if(isset($elAttributes->mapserver)){
@@ -213,15 +216,19 @@ private function traiterXml($nomXml){
if(isset($element->serveur)){
if(isset($element->serveur->authentification)) {
$configServeurXml['authentification'] = array();
- foreach ($element->serveur->authentification->attributes() as $key=>$attr) {
- $configServeurXml['authentification'][$key] = (String) $attr;
+ foreach ($element->serveur->authentification->children() as $key=>$attr) {
+ $child = array();
+ foreach ($attr->attributes() as $cle => $valeur) {
+ $child[$cle] = (String) $valeur;
+ }
+ $configServeurXml['authentification'][$key] = $child;
}
}
}
}
$application->getDI()->getSession()->set('configXml', $configServeurXml);
-
- $this->ajouterModules();
+
+ $this->ajouterModules();
}
private function definirVariablesCommunes(){
@@ -245,10 +252,10 @@ private function definirVariablesCommunes(){
$idProfil = $application->getDI()->getSession()->get("info_utilisateur")->profilActif;
if(isset($application->getDI()->getSession()->get("info_utilisateur")->profils)){
$count = count($application->getDI()->getSession()->get("info_utilisateur")->profils);
- if(isset($idProfil)){
+ if(isset($idProfil)){
foreach($application->getDI()->getSession()->get("info_utilisateur")->profils as $value){
if($value['id']== $idProfil){
- $libelleProfil = $value['libelle'];
+ $libelleProfil = $value['libelle'];
break;
}
}
@@ -288,7 +295,7 @@ private function definirVariablesCommunes(){
$fonctionCallback = "function(e){
var coucheWMS = new Igo.Couches.WMS(
{
- url:'{$url}',
+ url:'{$url}',
nom:'{$layers}',
fond:false,
active:{$active},
@@ -302,11 +309,11 @@ private function definirVariablesCommunes(){
} else {
$this->view->setVar("callbackInitIGO", 'null');
}
- }
+ }
/**
* Ajoute tous les scripts Javascript requis pour chacun des modules.
- *
+ *
* @return void
*/
private function ajouterModules() {
@@ -322,7 +329,7 @@ private function ajouterModules() {
$configXml = $this->getDi()->getView()->configXml;
$modulesFonctions = $chargeurModules->obtenirFonctions();
foreach ($modulesFonctions as $fct) {
- include($fct);
+ include($fct);
}
}
@@ -330,12 +337,15 @@ private function ajouterModules() {
* vérifie si URL ou nom du service est permis selon config.php.
*/
public function verifierPermis($szUrl, $restService=false){
- return obtenirPermisUrl($szUrl, $restService) !== false;
+ return $this->obtenirPermisUrl($szUrl, $restService) !== false;
}
public function obtenirPermisUrl($szUrl, $restService=false){
- //vérifier URL
+ //vérifier URL
//Services
+
+ $szUrl = $this->removeDblBackSlash($szUrl);
+
$url = "";
$serviceRep = array(
@@ -344,7 +354,7 @@ public function obtenirPermisUrl($szUrl, $restService=false){
);
$session = $this->getDI()->getSession();
-
+
if($session->has("info_utilisateur") && isset($this->config['permissions'])) {
//utilisateur
if(($session->info_utilisateur->identifiant) && isset($this->config->permissions[$session->info_utilisateur->identifiant]) && isset($this->config->permissions[$session->info_utilisateur->identifiant]->servicesExternes)){
@@ -362,7 +372,7 @@ public function obtenirPermisUrl($szUrl, $restService=false){
if(isset($profil) && isset($this->config->permissions[$profil]) && isset($this->config->permissions[$profil]->servicesExternes)){
$serviceExtProfil = $this->config->permissions[$profil]->servicesExternes;
$serviceRep = self::verifieDomaineFunc($serviceRep, $szUrl, $serviceExtProfil, $restService);
- if($serviceRep["test"] !== false){
+ if($serviceRep["test"] !== false){
$test = true;
if ($serviceRep["url"] !== false) {
break;
@@ -371,7 +381,7 @@ public function obtenirPermisUrl($szUrl, $restService=false){
}
}
}
-
+
$serviceRep["test"] = $test;
}
} else if (!$session->has("info_utilisateur")) {
@@ -380,7 +390,9 @@ public function obtenirPermisUrl($szUrl, $restService=false){
//general
if (($serviceRep["test"] === false || $serviceRep["url"] === true) && isset($this->config['servicesExternes'])) {
+
$servicesExternes = $this->config['servicesExternes'];
+
$serviceRep = self::verifieDomaineFunc($serviceRep, $szUrl, $servicesExternes, $restService);
}
@@ -397,18 +409,175 @@ public function obtenirPermisUrl($szUrl, $restService=false){
}
} else {
if(is_object($serviceRep["url"])){
- $szUrl = (array) $serviceRep["url"];
+ $szUrl = (array) $serviceRep["url"];
if(!isset($szUrl['url'])){
$szUrl['url'] = $szUrl[0];
- }
+ }
} else {
- $szUrl = array("url" => $serviceRep["url"]);
+ $szUrl = array("url" => $serviceRep["url"]);
}
}
return $szUrl;
+
+ }
+
+
+
+ /**
+ * Obtenir Chaine de connexion au site securise
+ * @param ??? $service
+ * @param ??? $restService
+ * @return ??? $auth
+ */
+
+ public function obtenirChaineConnexion($service, $restService=false){
+ global $app;
+
+ $permisUrl = self::obtenirPermisUrl($service, $restService);
+
+ if($permisUrl === false){
+ http_response_code(403);
+ die("Vous n'avez pas les droits pour ce service.");
+ }
+
+ //Decrypter la chaine de connexion
+ if (!empty($permisUrl['connexion']) || !empty($permisUrl['user'])) {
+ $auth = array();
+ if(!empty($permisUrl['user'])) {
+ $auth['user'] = $permisUrl['user'];
+ }
+ if(!empty($permisUrl['pass'])) {
+ $auth['pass'] = $permisUrl['pass'];
+ }
+ if(!empty($permisUrl['methode'])) {
+ $auth['method'] = $permisUrl['methode'];
+ }
+ if(!empty($permisUrl['cainfo'])) {
+ $auth['cainfo'] = $permisUrl['cainfo'];
+ }
+ if(!empty($permisUrl['verifypeer'])) {
+ $auth['verifypeer'] = $permisUrl['verifypeer'];
+ }
+
+ if(!empty($permisUrl['connexion'])){
+ $crypt = $this->getDI()->get("crypt");
+ $chaine = explode(",", $crypt->decryptBase64(urldecode($permisUrl['connexion'])));
+ $auth['user'] = ltrim(trim($chaine[0]), " user:");
+ $auth['pass'] = ltrim(trim($chaine[1]), " pass:");
+ if (empty($auth['pass'])) {
+ header('Content-Type: text/html; charset=utf-8');
+ http_response_code(401);
+ die("Votre clé n'est pas décryptée correctement.");
+ }
+ }
+
+ }
+
+ $auth['url'] = $permisUrl['url'];
+ return $auth;
}
+
+ /**
+ * Obtenir Chaine de connexion au site securise pour proxy
+ * @param ??? $ch
+ * @param ??? $url
+ * @param ??? $method
+ * @param ??? $url
+ * @return ??? $ch
+ */
+ public function proxyChaineConnexion ($ch, $url, $method, $options) {
+
+ if (!empty ($options['auth'])) {
+ $auth = $options['auth'];
+ if (isset ($auth['user']) && isset ($auth['pass'])) {
+ //On obtient le payload (objectif chercher dans le payload les url securisees)
+ $postdata = file_get_contents ("php://input");
+ //Seul le post xml de zoo est modifié
+ if (!empty ($postdata) && strpos ($postdata, 'wps:Execute') !== false) {
+ $doc = new DOMDocument();
+ $doc->loadXML ($postdata);
+ $domList = $doc->getElementsByTagNameNS ('*', '*');
+ //on navigue dans tout le payload
+ for ($i = 0; $i < $domList->length; $i++) {
+ if ($domList->item ($i)->tagName === 'wps:Reference') {
+ $xmlurl = $domList->item ($i)->getAttribute ('xlink:href');
+ $partsxml = parse_url ($xmlurl);
+ //les credentials a ajouter dans le xml on verifié s il y en as
+ if (isset ($xmlurl) && $partsxml['scheme'] === 'https') {
+ if ($xmlurl !== $url) {
+ //les credentials des urls qu on as pas
+ $authxml = $this->obtenirChaineConnexion ($partsxml['scheme'] . '://' . $partsxml['host'] . $partsxml['path'], $restService = false);
+ if (isset ($authxml['user']) && isset ($authxml['pass']) && isset($partsxml['host']) && isset($partsxml['path']) && isset ( $partsxml['query'])) {
+ $urlxml = $partsxml['scheme'] . '://' . $authxml['user'] . ':' . $authxml['pass'] . '@' . $partsxml['host'] . $partsxml['path'] . '?' . $partsxml['query'];
+ } else if (isset ($authxml['user']) && isset ($authxml['pass']) && isset($partsxml['host']) && isset($partsxml['path'])) {
+ $urlxml = $partsxml['scheme'] . '://' . $authxml['user'] . ':' . $authxml['pass'] . '@' . $partsxml['host'] . $partsxml['path'] ;
+ }
+ $xmlpost = str_replace ($xmlurl, $urlxml, $postdata);
+ $postdata = $xmlpost;
+ }
+ //les credentials de zoo on possede deja dans le xml est modifié
+ if ($xmlurl === $url) {
+ $urlxml = $partsxml['scheme'] . '://' . $auth['user'] . ':' . $auth['pass'] . '@' . $partsxml['host'] . $partsxml['path'];
+ $xmlpost = str_replace ($xmlurl, $urlxml, $postdata);
+ $postdata = $xmlpost;
+ }
+ }
+ }
+ }
+
+ curl_setopt ($ch, CURLOPT_POST, 1);
+ curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata);
+ }
+
+ //Necessaire pour le SSL sinon on voit pas les couches dans
+ //la list des couche disponible analyse spatial
+
+ //curl_setopt ($ch, CURLOPT_VERBOSE, 1);
+ //curl_setopt ($ch, CURLOPT_CERTINFO, 1);
+
+ if (isset ($auth['cainfo'])) {
+ curl_setopt ($ch, CURLOPT_CAINFO, $auth['cainfo']);
+ }
+
+ //Verify peer pour le SSL 1 par défaut, 0 si dans config 'verifypeer' => 'Off' (pas de vérification)
+ if (isset ($auth['verifypeer']) && $auth['verifypeer'] == 'Off') {
+ curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 0);
+ } else {
+ curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, 1);
+ }
+
+ curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2);
+
+ curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
+ curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, true);
+ curl_setopt ($ch, CURLOPT_CUSTOMREQUEST, $method);
+
+ switch ($auth['method']) {
+ case "BASIC":
+ curl_setopt ($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
+ break;
+ case "NTLM":
+ curl_setopt ($ch, CURLOPT_HTTPAUTH, CURLAUTH_NTLM);
+ break;
+ case "GSSNEGOTIATE":
+ curl_setopt ($ch, CURLOPT_HTTPAUTH, CURLAUTH_GSSNEGOTIATE);
+ break;
+ case "DIGEST":
+ curl_setopt ($ch, CURLOPT_HTTPAUTH, CURLAUTH_DIGEST);
+ break;
+ default:
+ curl_setopt ($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
+ break;
+ }
+
+ curl_setopt ($ch, CURLOPT_USERPWD, $auth['user'] . ':' . $auth['pass']);
+ }
+ }
+
+ return $ch;
+ }
private function verifieDomaineRegexFunc($service, $arrayRegex) {
foreach ($arrayRegex as $regex) {
if ($regex[0] === '#' || $regex[0] === '/') {
@@ -430,7 +599,7 @@ private function verifieDomaineRegexFunc($service, $arrayRegex) {
return false;
}
-
+
private function verifieDomaineFunc($serviceRep, $service, $arrayServicesExternes, $restService){
if(isset($arrayServicesExternes[$service])){
if($restService == false){return $serviceRep;}
@@ -453,4 +622,25 @@ private function verifieDomaineFunc($serviceRep, $service, $arrayServicesExterne
return $serviceRep;
}
+
+ /**
+ * Obtenir une url sans double backslash. Permet ainsi de résoudre
+ * correctement les regex pour les urls permis.
+ * @param ??? $url url à vérifier
+ * @return ??? $resultat url sans double backslash
+ */
+ private function removeDblBackSlash($url){
+
+ $resultat = preg_replace('/(?removeDblBackSlash($resultat);
+ }
+
+ if($resultat === null){
+ $resultat = $url;
+ }
+
+ return $resultat;
+ }
}
diff --git a/interfaces/navigateur/app/library/Utils.php b/interfaces/navigateur/app/library/Utils.php
index b16c96b4..41d67d09 100644
--- a/interfaces/navigateur/app/library/Utils.php
+++ b/interfaces/navigateur/app/library/Utils.php
@@ -357,4 +357,14 @@ static function curl_file_get_contents($url,$connectout=5,$timeout=10){
return $contenu;
}
+ /**
+ * Remplace les lettres avec accent par leur équivalent sans accent, dans une chaine de caractères.
+ *
+ * @link http://stackoverflow.com/questions/27680624/compare-two-string-and-ignore-but-not-replace-accents-php
+ * @param string $string La chaine de caractères.
+ * @return string La chaine de caractères avec les accents enlevés.
+ */
+ static function enleverAccents($chaine) {
+ return strtolower(trim(preg_replace('~[^0-9a-z]+~i', '-', preg_replace('~&([a-z]{1,2})(acute|cedil|circ|grave|lig|orn|ring|slash|th|tilde|uml);~i', '$1', htmlentities($chaine, ENT_QUOTES, 'UTF-8'))), ' '));
+ }
}
diff --git a/interfaces/navigateur/app/plugins/SecurityPlugin.php b/interfaces/navigateur/app/plugins/SecurityPlugin.php
index 78f4ea51..66dcc946 100644
--- a/interfaces/navigateur/app/plugins/SecurityPlugin.php
+++ b/interfaces/navigateur/app/plugins/SecurityPlugin.php
@@ -12,13 +12,13 @@
class SecurityPlugin extends Plugin
{
public function beforeExecuteRoute(Phalcon\Events\Event $event, Phalcon\Mvc\Dispatcher $dispatcher){
- $authentificationModule = $this->getDI()->get("authentificationModule");
+ $authentificationModule = $this->getDI()->get("authentificationModule");
if($authentificationModule == null){
return;
}
$controller = $dispatcher->getControllerName();
- $action = $dispatcher->getActionName();
+ $action = $dispatcher->getActionName();
$config = $this->getDI()->get("config");
if($controller === "connexion" || $controller === "error"){
@@ -27,8 +27,10 @@ public function beforeExecuteRoute(Phalcon\Events\Event $event, Phalcon\Mvc\Disp
}else if($controller === "igo" && ($action === "configuration" || $action === "index")){
$user = $this->session->get("info_utilisateur");
$authObligatoire = isset($_GET['force-auth']) ? $_GET['force-auth'] : false;
-
$configuration = $this->obtenirConfiguration($action, $dispatcher);
+
+ $authRequise = ($authObligatoire || $this->estAuthentificationRequise($configuration))? true:false;
+
if(isset($this->getDi()->getConfig()->configurations[$configuration])){
$file = $this->getDi()->getConfig()->configurations[$configuration];
} else {
@@ -37,39 +39,39 @@ public function beforeExecuteRoute(Phalcon\Events\Event $event, Phalcon\Mvc\Disp
if((!file_exists($file) && !curl_url_exists($file))){
return $this->forwardToErrorPage();
}
- if(($authObligatoire || $this->estAuthentificationRequise($configuration)) && !$this->estAuthentifie() && (!$this->estAnonyme() || ($this->estAnonyme() && (!isset($user->persistant) || $user->persistant == false)))){
+ if(($authObligatoire || $authRequise) && !$this->estAuthentifie() && (!$this->estAnonyme() || ($this->estAnonyme() && (!isset($user->persistant) || $user->persistant == false)))){
return $this->forwardToLoginPage();
- } else if($this->estAuthentificationRequise($configuration) && $this->estRoleSelectionneRequis() && !$this->estRoleSelectionne()){
+ } else if($authRequise && $this->estRoleSelectionneRequis() && !$this->estRoleSelectionne()){
return $this->forwardToRolePage();
- } else if (!$this->estAuthentificationRequise($configuration) && !$this->estAuthentifie()){
+ } else if (!$authRequise && !$this->estAuthentifie()){
$authentificationModule = $this->getDI()->get("authentificationModule");
if(!$this->session->has("info_utilisateur")) {
$this->session->set("info_utilisateur", new SessionController());
}
- $configuration = $this->getDI()->get("config");
- if($configuration->offsetExists("database")) {
+ $configurationSysteme = $this->getDI()->get("config");
+ if($configurationSysteme->offsetExists("database")) {
if($this->estRoleSelectionneRequis()){
- $profilAnonyme = IgoProfil::findFirst("nom = '{$configuration->application->authentification->nomProfilAnonyme}'");
+ $profilAnonyme = IgoProfil::findFirst("nom = '{$configurationSysteme->application->authentification->profilAnonyme->nom}'");
if($profilAnonyme){
$this->session->get("info_utilisateur")->profils = array($profilAnonyme->toArray());
$this->session->get("info_utilisateur")->profilActif = $this->session->get("info_utilisateur")->profils[0]['id'];
}
- } else if(isset($configuration->application->authentification->nomProfilAnonyme)){
- $this->session->get("info_utilisateur")->profils = IgoProfil::find("nom = '{$configuration->application->authentification->nomProfilAnonyme}'")->toArray();
- }
+ } else if(isset($configurationSysteme->application->authentification->profilAnonyme->nom)){
+ $this->session->get("info_utilisateur")->profils = IgoProfil::find("nom = '{$configurationSysteme->application->authentification->profilAnonyme->nom}'")->toArray();
+ }
}
$this->session->get("info_utilisateur")->estAnonyme = true;
} else if($this->estRoleSelectionneRequis() && !$this->estRoleSelectionne()){
return $this->forwardToRolePage();
}
-
- if($this->estAnonyme() && isset($config->application->authentification->permettreAccesAnonyme) && !$config->application->authentification->permettreAccesAnonyme){
+
+ if($this->estAnonyme() && $authObligatoire){
return $this->forwardToUnauthorizedPage();
}
if($this->estAnonyme()){
$this->session->get("info_utilisateur")->persistant = false;
}
- }else if ($controller == "igo" && ($action == "contexte" || $action == "couche" || $action == "groupe")){
+ }else if ($controller == "igo" && ($action == "contexte" || $action == "couche" || $action == "groupe")){
if($this->estAnonyme()){
$user = $this->session->get("info_utilisateur");
if(isset($user->persistant) && $user->persistant === true){
@@ -77,18 +79,18 @@ public function beforeExecuteRoute(Phalcon\Events\Event $event, Phalcon\Mvc\Disp
} else {
$this->session->destroy();
$authentificationModule->deconnexion();
- }
- }
- if(!$this->estAnonyme() && !$this->estAuthentifie()){
+ }
+ }
+ if(!$this->estAnonyme() && !$this->estAuthentifie()){
return $this->forwardToLoginPage();
}else if($this->estRoleSelectionneRequis() && !$this->estRoleSelectionne()){
return $this->forwardToRolePage();
}if($this->estAnonyme() && isset($config->application->authentification->permettreAccesAnonyme) && !$config->application->authentification->permettreAccesAnonyme){
return $this->forwardToUnauthorizedPage();
- }
- }
+ }
+ }
}
-
+
private function forwardToLoginPage(){
$this->dispatcher->forward(array(
"controller" => "connexion",
@@ -97,7 +99,7 @@ private function forwardToLoginPage(){
));
return;
}
-
+
private function forwardToErrorPage(){
$this->dispatcher->forward(array(
"controller" => "error",
@@ -105,82 +107,87 @@ private function forwardToErrorPage(){
));
return;
}
-
+
private function forwardToUnauthorizedPage(){
$this->dispatcher->forward(array(
"controller" => "error",
"action" => "error403"
));
return;
- }
+ }
private function forwardToRolePage(){
$this->dispatcher->forward(array(
"controller" => "connexion",
"action" => "role"
));
return;
- }
-
+ }
+
private function estAuthentificationRequise($configuration){
+
if(!isset($this->getDi()->getConfig()->application->authentification) ||
$this->getDi()->getConfig()->application->authentification == false){
- return false;
+ $authentification = false;
}
+
if(isset($this->getDi()->getConfig()->configurations[$configuration])){
$xmlPath = $this->getDi()->getConfig()->configurations[$configuration];
} else {
$xmlPath = $this->getDi()->getConfig()->configurationsDir . $configuration . '.xml';
}
if(file_exists($xmlPath)){
- $element = simplexml_load_file($xmlPath);
- if(isset($element->serveur) && isset($element->serveur->authentification) && isset($element->serveur->authentification->attributes()->nomProfilAnonyme)){
- $this->getDi()->getConfig()->application->authentification->nomProfilAnonyme = (String) $element->serveur->authentification->attributes()->nomProfilAnonyme;
- $this->session->set('nomProfilAnonyme', $this->getDi()->getConfig()->application->authentification->nomProfilAnonyme);
- }
+ $element = simplexml_load_file($xmlPath);
+ if(isset($element->serveur) && isset($element->serveur->authentification) && isset($element->serveur->authentification->children()->profilAnonyme->attributes()->nom)){
+ $this->getDi()->getConfig()->application->authentification->profilAnonyme->nom = (String) $element->serveur->authentification->children()->profilAnonyme->attributes()->nom;
+ $this->session->set('nomProfilAnonyme', $this->getDi()->getConfig()->application->authentification->profilAnonyme->nom);
+ }
} else { //url externe
- $element = simplexml_load_string(curl_file_get_contents($xmlPath));
- }
+ $element = simplexml_load_string(curl_file_get_contents($xmlPath));
+ }
+
if(isset($element->attributes()->authentification)){
$authentification = $element->attributes()->authentification;
} else{
$authentification = "true"; // Est-ce qu'on devrait forcer l'authentification par defaut? En attendant de décider, on le force par défaut.
- }
- // Si la configuration demande que l'utilisateur soit authentifié et qu'il ne l'est pas encore, le rediriger vers la fenetre de connexion
- if($authentification == "true"){
+ }
+ // Si la configuration demande que l'utilisateur soit authentifié et qu'il ne l'est pas encore, le rediriger vers la fenetre de connexion
+ if($authentification == "true"){
return true;
}else{
return false;
}
+
+
}
-
+
private function estAuthentifie(){
if($this->session->has("info_utilisateur")) {
return $this->session->get("info_utilisateur")->estAuthentifie;
}
return false;
}
-
+
private function estAnonyme(){
if($this->session->has("info_utilisateur")) {
return $this->session->get("info_utilisateur")->estAnonyme;
}
return false;
}
-
+
private function estRoleSelectionneRequis(){
if(isset($this->getDi()->getConfig()->application->authentification->activerSelectionRole)){
return $this->getDi()->getConfig()->application->authentification->activerSelectionRole;
}
return false;
}
-
+
private function estRoleSelectionne(){
if($this->session->has("info_utilisateur")) {
return !is_null($this->session->get("info_utilisateur")->profilActif);
}
return false;
}
-
+
private function obtenirConfiguration($action, $dispatcher){
if($action === "index"){
$configuration = "defaut";
@@ -189,5 +196,5 @@ private function obtenirConfiguration($action, $dispatcher){
}
return $configuration;
}
-
-}
\ No newline at end of file
+
+}
diff --git a/interfaces/navigateur/app/views/partials/librairies_css.volt b/interfaces/navigateur/app/views/partials/librairies_css.volt
index 1d04cc90..1c095db4 100644
--- a/interfaces/navigateur/app/views/partials/librairies_css.volt
+++ b/interfaces/navigateur/app/views/partials/librairies_css.volt
@@ -1,2 +1,3 @@
{{ view.ajouterCss("extjs/resources/css/ext-all.css", true, true) }}
{{ view.ajouterCss("css/igo.css", false) }}
+{{ view.ajouterCss("css/print.css", false) }}
diff --git a/interfaces/navigateur/app/views/partials/requireConfig.volt b/interfaces/navigateur/app/views/partials/requireConfig.volt
index 3ab357bf..277af540 100644
--- a/interfaces/navigateur/app/views/partials/requireConfig.volt
+++ b/interfaces/navigateur/app/views/partials/requireConfig.volt
@@ -38,6 +38,9 @@ options.requireConfigFct = function(version, debug){
hbars : "libs/require/src/hbars",
handlebars: '{{this.config.uri.librairies}}/handlebars/handlebars',
jquery: debug ? "{{this.config.uri.librairies}}/jquery/jquery" : "{{this.config.uri.librairies}}/jquery/jquery.min",
+ html2canvas: "{{this.config.uri.librairies}}/html2canvas/dist/html2canvas",
+ html2canvassvg: "{{this.config.uri.librairies}}/html2canvas/dist/html2canvas.svg",
+ es6promise: "{{this.config.uri.librairies}}/es6-promise/es6-promise.min",
proj4js: 'libs/proj/Proj4js',
epsgDef: 'libs/proj/epsgDef',
build: "js/main-build"
diff --git a/interfaces/navigateur/build/configRequire.js b/interfaces/navigateur/build/configRequire.js
index ed06fa2d..b2cc1e9b 100644
--- a/interfaces/navigateur/build/configRequire.js
+++ b/interfaces/navigateur/build/configRequire.js
@@ -72,6 +72,7 @@ require.config({
outilZoomEtendueMaximale: 'js/app/outil/outilZoomEtendueMaximale',
outilZoomPreselection: 'js/app/outil/outilZoomPreselection',
outilZoomRectangle: 'js/app/outil/outilZoomRectangle',
+ outilExportCSV: 'js/app/outil/outilExportCSV',
panneau: 'js/app/panneau/panneau',
panneauAccordeon: 'js/app/panneau/panneauAccordeon',
panneauCarte: 'js/app/panneau/panneauCarte',
@@ -97,6 +98,10 @@ require.config({
fileUploadField: 'empty:',
getInfo: 'empty:',
handlebars: 'empty:',
- IGODatePicker: 'empty:'
+ IGODatePicker: 'empty:',
+ fixOpenLayersRequire: 'empty:',
+ html2canvas: 'empty:',
+ html2canvassvg: 'empty:',
+ es6promise: 'empty:'
}
});
\ No newline at end of file
diff --git a/interfaces/navigateur/public/css/igo.css b/interfaces/navigateur/public/css/igo.css
index 2a315c32..66ac6dd6 100644
--- a/interfaces/navigateur/public/css/igo.css
+++ b/interfaces/navigateur/public/css/igo.css
@@ -60,9 +60,6 @@ img.olTileImage {
.apropos {
background-image:url(../images/toolbar/onebit_25.png) !important;
}
-.gentillyboom {
- background-image:url(../images/toolbar/hazard_radioactive2.png) !important;
-}
.getinfo {
background-image:url(../images/toolbar/info.png) !important;
}
@@ -125,13 +122,16 @@ ul.list {
font-size: 11px;
padding: 0 0 0 16px;
}
-#currentMousePositionComponent,
+
+#currentMousePositionElevation,
#currentScaleComponent,
#currentProjectionComponent,
-#currentTimeComponent{
+#currentTimeComponent,
+#currentMousePositionComponent{
float: left;
}
-
+
+
div.southPanel{
padding: 0px 0px 0px 0px;
}
@@ -438,4 +438,4 @@ div.olControlMousePosition {
#occurencesResultatsWindow .x-panel-body {
overflow: auto;
-}
\ No newline at end of file
+}
diff --git a/interfaces/navigateur/public/css/print.css b/interfaces/navigateur/public/css/print.css
new file mode 100644
index 00000000..209050e3
--- /dev/null
+++ b/interfaces/navigateur/public/css/print.css
@@ -0,0 +1,95 @@
+@media print {
+
+ #menu-panneau3,
+ #resultatRechercheTable,
+ .x-panel,
+ .x-toolbar,
+ .x-slider,
+ .x-layout-split,
+ .x-layout-collapsed,
+ .x-unselectable,
+ .x-tip,
+ .x-panel-tbar,
+ .x-window,
+ .x-shadow,
+ .olControlNoSelect,
+ .ext-el-mask
+ {
+ display: none !important;
+ }
+
+ #carte-panneau1,
+ #mapComponent,
+ #printLayer,
+ .x-panel-bwrap
+ {
+ display: block !important;
+ }
+
+ #carte-panneau1,
+ #mapComponent {
+ left: 0 !important;
+ background-color: white !important;
+ /*top: -100px !important;*/
+ /*left: -100px !important;*/
+ /* width: 1000px !important;*/
+ /*height: 1200px !important;*/
+ }
+
+ #printLayer {
+ width: 100%;
+ height: 100%;
+ position: absolute;
+ top: 0;
+ left: 0;
+ background-color: none !important;
+ }
+
+ #printLayer .centerH {
+ text-align: center;
+ }
+
+ #printLayer .printTitle {
+ width: 100%;
+ margin: auto;
+ text-align: center;
+ padding: 5px;
+ font-size: 18px;
+ text-shadow: #fff 0px 0px 2px;
+ font-weight: bold;
+ }
+
+ #printLayer .printLegend {
+ position: absolute;
+ right: 0;
+ top: 0;
+ background-color: white;
+ max-width: 30%;
+ }
+
+ #printLayer .printDescription {
+ position: absolute;
+ bottom: 0;
+ font-size: 12px;
+ background-color: white;
+ max-width: 30%;
+ }
+
+ #printLayer .printInfo {
+ position: absolute;
+ bottom: 0;
+ text-align: center;
+ width: 100%;
+ }
+
+ #printLayer .printInfo div {
+ font-size: 12px;
+ background-color: white;
+ text-align: center;
+ display: inline;
+ }
+ .x-border-layout-ct {
+ background-color: white !important;
+ border: none !important;
+ }
+}
diff --git a/interfaces/navigateur/public/images/quebec/gouv_qc_logo.png b/interfaces/navigateur/public/images/quebec/gouv_qc_logo.png
new file mode 100644
index 00000000..7938f4bf
Binary files /dev/null and b/interfaces/navigateur/public/images/quebec/gouv_qc_logo.png differ
diff --git a/interfaces/navigateur/public/images/toolbar/export-csv.png b/interfaces/navigateur/public/images/toolbar/export-csv.png
new file mode 100644
index 00000000..8b82dd29
Binary files /dev/null and b/interfaces/navigateur/public/images/toolbar/export-csv.png differ
diff --git a/interfaces/navigateur/public/index.php b/interfaces/navigateur/public/index.php
index 2e54d564..9c1ce825 100644
--- a/interfaces/navigateur/public/index.php
+++ b/interfaces/navigateur/public/index.php
@@ -4,17 +4,21 @@
error_reporting(E_ALL);
try {
-
+
$config = include __DIR__ . "/../app/config/config.php";
include __DIR__ . "/../app/config/loader.php";
include __DIR__ . "/../app/config/services.php";
$application = new \Phalcon\Mvc\Application($di);
-
+
+ //TODO
+ //faire un module pour la retro-compatibilité, pour ce genre de code.
+ if(isset($config->application->authentification->nomProfilAnonyme)){
+ $config->application->authentification->profilAnonyme = array('nom'=>$config->application->authentification->nomProfilAnonyme);
+ }
+
$application->registerModules($di->get('chargeurModules')->obtenirDefinitionModules());
echo $application->handle()->getContent();
} catch (\Exception $e) {
- echo $e->getMessage();
+ echo $e->getMessage();
}
-
-
diff --git a/interfaces/navigateur/public/js/app/analyseur/analyseurConfig.js b/interfaces/navigateur/public/js/app/analyseur/analyseurConfig.js
index 116ffcc3..9d6169f2 100644
--- a/interfaces/navigateur/public/js/app/analyseur/analyseurConfig.js
+++ b/interfaces/navigateur/public/js/app/analyseur/analyseurConfig.js
@@ -1,16 +1,16 @@
-/**
+/**
* Module pour l'objet {@link AnalyseurConfig}.
* @module analyseurConfig
- * @requires aide
- * @requires navigateur
- * @requires carte
- * @requires contexte
+ * @requires aide
+ * @requires navigateur
+ * @requires carte
+ * @requires contexte
* @author Marc-André Barbeau, MSP
* @version 1.0
*/
define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], function(Aide, Navigateur, Carte, Contexte, Evenement, Serveur) {
- /**
+ /**
* Création de l'object AnalyseurConfig.
* @constructor
* @name AnalyseurConfig
@@ -18,9 +18,9 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
* @alias analyseurConfig:AnalyseurConfig
* @requires analyseurConfig
* @param {object} options Liste des options possibles
- * @param {object | string} [options.configuration='defaut'] La
- * configuration dans le format json en paramètre ou appelle l'api
- * ([api]/configuration/[options.configuration]) pour obtenir
+ * @param {object | string} [options.configuration='defaut'] La
+ * configuration dans le format json en paramètre ou appelle l'api
+ * ([api]/configuration/[options.configuration]) pour obtenir
* le json ou le xml. (voir la documentation du XML)
* @param {string} [options.configuration] todo: à complèter
* @param {function} [options.callback] Function appelée lorsque l'initialisation
@@ -38,9 +38,9 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
};
- /**
- * Initialisation de l'object AnalyseurConfig.
- * @method
+ /**
+ * Initialisation de l'object AnalyseurConfig.
+ * @method
* @private
* @name AnalyseurConfig#_init
*/
@@ -48,11 +48,11 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
this.options = $.extend({}, this.defautOptions, this.options);
};
- /**
+ /**
* Sert à charger le navigateur selon la configuration donnée lors de la création de {@link AnalyseurConfig}.
- * Si la configuration est un string, appelle l'api ([api]/configuration/[options.configuration]) pour obtenir
+ * Si la configuration est un string, appelle l'api ([api]/configuration/[options.configuration]) pour obtenir
* le json ou le xml.
- * @method
+ * @method
* @name AnalyseurConfig#charger
* @returns {Navigateur} Le navigateur construit: @link Navigateur
*/
@@ -79,10 +79,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
return this.igo;
};
- /**
- * Fonction appelée si l'api retourne un erreur lors de l'obtention de la configuration.
+ /**
+ * Fonction appelée si l'api retourne un erreur lors de l'obtention de la configuration.
* Affiche les erreurs obtenues.
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_chargementError
*/
@@ -93,10 +93,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
Aide.afficherMessage("Erreur chargement de la configuration XML", message, null, 'ERROR');
};
- /**
- * Fonction appelée si la configuration est obtenue.
+ /**
+ * Fonction appelée si la configuration est obtenue.
* @param {object} config La configuration en format json ou xml
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_chargementConfigSuccess
*/
@@ -194,18 +194,18 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
}
that.igo.nav.carte.gestionCouches.enleverToutesLesCouches();
- that._analyserCouches(groupeCouches);
+ that._analyserCouches(groupeCouches);
});
}
}
-
- /**
+
+ /**
* Convertie la configuration xml en json.
* @param {object} xml Configuration dans le format xml.
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_chargementConfigSuccess
- * @returns {object} Configuration dans le format json
+ * @returns {object} Configuration dans le format json
*/
AnalyseurConfig.prototype._xml2Json = function(xml) {
var obj = {};
@@ -246,12 +246,12 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
return obj;
};
- /**
+ /**
* Obtenir les modules requis pour le json en paramètre
* @param {object} json Partie de la configuration à analyser
* @param {tableau} [modulesReq = []] Tableau des modules requis
* @param {entier} [niveauForage = 1] Nombre de niveau du json à analyser
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserRequire
* @returns {array} Tableau des modules requis
@@ -304,12 +304,12 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
return modulesReq;
};
- /**
+ /**
* Analyser la section "panneaux" de la config
* @param {object} json Partie de la configuration concernant les panneaux
* @param {Panneau|Navigateur} [panneauOccurence = Navigateur] Parent des panneaux
* @method
- * @private
+ * @private
* @name AnalyseurConfig#_analyserRequire
*/
AnalyseurConfig.prototype._analyserPanneaux = function(json, panneauOccurence) {
@@ -368,17 +368,22 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
});
};
- /**
+ /**
* Charger le contexte enregistré
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserContexte
*/
AnalyseurConfig.prototype._analyserContexte = function() {
if (this.fin.panneaux && this.fin.couches && this.fin.actions) {
- var contexte = new Contexte();
- contexte.charger();
- this._fin();
+ if(!window.arboLoading) {
+ var contexte = new Contexte();
+ contexte.charger();
+ this._fin();
+ } else {
+ var that = this;
+ setTimeout(function(){that._analyserContexte()}, 500);
+ }
}
};
@@ -396,12 +401,12 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
}
this._analyserAvertissements();
};
-
- /**
+
+ /**
* Analyser la section "outils" de la config
* @param {object} json Partie de la configuration concernant les outils
* @param {BarreOutil|OutilMenu} [outilOccurence] Parent des outils
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserOutils
*/
@@ -423,7 +428,7 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
} else {
arrayGroupeOutils = [json];
}
-
+
arrayGroupeOutils = $.isArray(arrayGroupeOutils) ? arrayGroupeOutils : [arrayGroupeOutils];
$.each(arrayGroupeOutils, function(key, groupeOutils) {
var listOutils = [];
@@ -456,7 +461,7 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
}
if(options.actionScope){
options.actionScope = that._pathShortToLong(options.actionScope);
- }
+ }
var outilOccurence = new Igo.Outils[classe](options);
listOutils.push(outilOccurence);
@@ -476,10 +481,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
});
};
- /**
+ /**
* Analyser la section "couches" de la config
* @param {object} json Partie de la configuration concernant les couches
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserCouches
*/
@@ -508,14 +513,14 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
if (!couches || !couches.couche) {
return true;
};
-
+
var couchesOptions = couches["@attributes"] || couches["attributs"];
var propriete = $.isArray(couches.couche) ? couches.couche : [couches.couche];
$.each(propriete, function(key, couche) {
var options = couche["@attributes"] || couche["attributs"];
if(options.infoAction){
options.infoAction = that._pathShortToLong(options.infoAction);
- }
+ }
options.droit = options.droit || couche.droit;
options = $.extend({}, couchesOptions, options);
var classe = options.protocole;
@@ -528,21 +533,21 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
}
});
});
-
+
if (listCouches.length === 0 || !listCouches[0].estFond() || listCouches[0].obtenirTypeClasse()==='Google') {
that._ajouterCoucheBlanc(listCouches);
return true;
}
-
+
that.listCouchesApresContexte = listCouchesApresContexte;
that._analyserCouchesSuccess(listCouches);
});
};
- /**
+ /**
* Appeler lorsque l'analyse des couches est terminée
* @param {tableau} listCouches Tableau de {@link Couche} à ajouter à la carte
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserCouches
*/
@@ -555,10 +560,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
}
};
- /**
+ /**
* Ajouter la couche 'Blanc' lorsque la carte n'a pas de couche de fond.
* @param {tableau} listCouches Tableau de {@link Couche} à ajouter à la carte
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_ajouterCoucheBlanc
*/
@@ -567,11 +572,11 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
this._analyserCouchesSuccess(listCouches);
};
- /**
+ /**
* Sert à charger le contexte de la BD. Utilise le contexte.attributes.id ou le contexte.attributes.code du json
* Si id, appelle l'api ([api]/contexte/[contexte.attributes.id]) pour obtenir les couches de la bd.
* Si code, appelle l'api ([api]/contexteCode/[contexte.attributes.code]) pour obtenir les couches de la bd.
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserContexteBD
*/
@@ -605,7 +610,7 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
} else if(this.options.contexteId) {
contexteId = this.options.contexteId;
}
-
+
var contexteUrl;
if (contexteId && contexteId !== "null") {
contexteUrl = Aide.obtenirConfig('uri.api')+"contexte/" + contexteId;
@@ -613,7 +618,11 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
contexteUrl = Aide.obtenirConfig('uri.api')+"contexteCode/" + contexteCode;
} else {
this.fin.couches = true;
- this._analyserContexte();
+ setTimeout(function () {
+ that.igo.nav.carte.gestionCouches.ajouterCouches(that.listCouchesApresContexte);
+ that._analyserContexte();
+ }, 1);
+
return true;
}
@@ -629,10 +638,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
});
};
- /**
- * Fonction appelée si l'api retourne un erreur lors de l'obtention des couches du contexte.
+ /**
+ * Fonction appelée si l'api retourne un erreur lors de l'obtention des couches du contexte.
* Affiche les erreurs obtenues.
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserContexteBDError
*/
@@ -645,10 +654,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
this._analyserContexte();
};
- /**
+ /**
* Analyser les couches reçues de la BD
* @param {object} data Json des couche à ajouter à la carte
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserContexteBDSuccess
*/
@@ -660,6 +669,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
if(layernamePermis){
layernamePermis = layernamePermis.split(',');
}
+ var layerActif = Aide.obtenirParametreURL("layeractif");
+ if(layerActif){
+ layerActif = layerActif.split(',');
+ }
$.each(couches, function(key, couche) {
var layername = couche.mf_layer_name || couche.mf_layer_meta_name;
if(layernamePermis){
@@ -667,6 +680,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
return true;
}
couche.est_active = true;
+ } else if (layerActif){
+ if(layerActif.indexOf(layername) !== -1){
+ couche.est_active = true;
+ }
}
var options = {
id: couche.couche_id,
@@ -697,7 +714,7 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
if(Aide.obtenirConfig("uri.mapserver")){
if(Aide.obtenirConfig("uri.mapserver") !== true){
options.url = Aide.obtenirConfig("uri.mapserver") + options.url;
- }
+ }
} else {
options.url = Aide.obtenirConfig("uri.api") + "wms/" + data.id;
}
@@ -761,10 +778,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
return objet;
}
- /**
+ /**
* Analyser la section "declencheurs" de la config
* @param {object} json Partie de la configuration concernant les déclencheurs
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserDeclencheurs
*/
@@ -788,10 +805,10 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
});
};
- /**
+ /**
* Analyser la section "actions" de la config
* @param {object} json Partie de la configuration concernant les actions
- * @method
+ * @method
* @private
* @name AnalyseurConfig#_analyserActions
*/
@@ -813,7 +830,7 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
if (aJSExt !== -1) {
source = source.substr(0, aJSExt);
}
-
+
var paths = {};
paths[id] = source;
require.ajouterConfig({
@@ -829,11 +846,11 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
};
- /**
+ /**
* Sert à charger une couche de la bd selon son ID
* Appelle l'api ([api]/couche/[coucheId]) pour obtenir les informations sur la couche
* @param {string} coucheId Le ID de la couche
- * @method
+ * @method
* @name AnalyseurConfig#_analyserCoucheBD
*/
AnalyseurConfig.prototype._analyserCoucheBD = function(coucheId) {
@@ -846,12 +863,12 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
dataType: 'json'
});
};
-
- /**
+
+ /**
* Sert à analyser les avertissements subvenus lors du chargement de la config
* Affiche la liste des avertissements à l'utilisateur
* @param {tableau} avertissements Tableau d'avertissements (string) à afficher.
- * @method
+ * @method
* @name AnalyseurConfig#_analyserAvertissements
*/
AnalyseurConfig.prototype._analyserAvertissements = function(avertissements){
@@ -865,7 +882,7 @@ define(['aide', 'navigateur', 'carte', 'contexte', 'evenement', 'serveur'], func
Aide.afficherMessageConsole(avertissement);
});
-
+
}
};
diff --git a/interfaces/navigateur/public/js/app/carte.js b/interfaces/navigateur/public/js/app/carte.js
index 611b0ac1..ee5aad52 100644
--- a/interfaces/navigateur/public/js/app/carte.js
+++ b/interfaces/navigateur/public/js/app/carte.js
@@ -8,8 +8,7 @@
* @author Marc-André Barbeau, MSP
* @version 1.0
*/
-
-define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide', 'contexteMenuCarte', 'libs/extension/OpenLayers/DrawFeatureEx', 'libs/extension/OpenLayers/CircleToMeasure', 'libs/extension/OpenLayers/MeasureCircle', 'libs/extension/OpenLayers/resetLayersZIndex'], function(Point, Occurence, Limites, GestionCouches, Evenement, Aide, ContexteMenuCarte) {
+define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide', 'contexteMenuCarte', 'html2canvas', 'html2canvassvg', 'es6promise', 'libs/extension/OpenLayers/fixOpenLayers'], function(Point, Occurence, Limites, GestionCouches, Evenement, Aide, ContexteMenuCarte, html2canvas, html2canvassvg) {
/**
* Création de l'object Carte.
* @constructor
@@ -24,6 +23,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
* @property {Dictionnaire} options Options de la carte.
*/
function Carte(options) {
+ this.isReady = false;
this.gestionCouches = new GestionCouches(this);
this.options = options || {};
this._init();
@@ -111,7 +111,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
//this.gestionCouches.ajouterCouche(new Blanc({visible:true, active:true}));
//Controles
- this._carteOL.addControl(new OpenLayers.Control.Attribution());
+ this._carteOL.addControl(new OpenLayers.Control.Attribution({separator: ', '}));
this._carteOL.addControl(new OpenLayers.Control.PanPanel());
this._carteOL.addControl(new OpenLayers.Control.ZoomPanel());
this._carteOL.addControl(new OpenLayers.Control.Navigation({
@@ -149,7 +149,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
return false;
}
- if(occurence.obtenirInteraction('survol') === false){
+ if(occurence.obtenirInteraction('survol') === false){
return false;
}
that.gestionCouches.ajouterOccurenceSurvol(occurence);
@@ -174,7 +174,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
return false;
}
- if(occurence.obtenirInteraction('survol') === false){
+ if(occurence.obtenirInteraction('survol') === false){
return false;
}
@@ -197,7 +197,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
return false;
}
- if(occurence.obtenirInteraction('cliquable') === false){
+ if(occurence.obtenirInteraction('cliquable') === false){
return false;
}
@@ -208,12 +208,12 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
if(lastOccSurvol.id === occurence.id){
dessus = true;
}
- }
+ }
couche.declencher({
type: "occurenceClique",
occurence: occurence,
dessus: dessus
- });
+ });
},
moveend: function() {
that.declencher({
@@ -229,7 +229,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
that.declencher({
type: "quitterSurvolCarte"
});
- clearInterval(that._timerEvenementPauseSurvol);
+ clearTimeout(that._timerEvenementPauseSurvol);
},
mousemove: function(e) {
that.coordSouris = e.xy;
@@ -242,9 +242,9 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
x: lonlat.lon,
y: lonlat.lat
});
- clearInterval(that._timerEvenementPauseSurvol);
- that._timerEvenementPauseSurvol = setInterval(function() {
- clearInterval(that._timerEvenementPauseSurvol);
+ clearTimeout(that._timerEvenementPauseSurvol);
+ that._timerEvenementPauseSurvol = setTimeout(function() {
+ clearTimeout(that._timerEvenementPauseSurvol);
that.declencher({
type: "pauseSurvolCarte",
x: that._carteOL.getLonLatFromViewPortPx(that.coordSouris).lon,
@@ -283,6 +283,69 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
};
};
+ /**
+ * Permet d'exporter un canvas de la carte
+ * @method
+ * @name Carte#exporterCanvas
+ * @return {Canvas} Une version canvas de la carte
+ */
+ Carte.prototype.exporterCanvas = function() {
+ var deferred = jQuery.Deferred();
+ var options = {
+ useCORS: true,
+ allowTaint: false,
+ proxy: Aide.obtenirConfig('uri.api') + '/proxy/html2canvas'
+ };
+
+ // Correctif pour support Internet Explorer et RequireJS
+ html2canvas.svg = html2canvassvg;
+ window.html2canvas = html2canvas;
+
+ html2canvas(this._carteOL.div, options).then(function(canvas) {
+ deferred.resolve(canvas);
+ })
+
+ return deferred.promise();
+ };
+
+ /**
+ * Permet d'exporter une image de la carte au format PNG.
+ * @method
+ * @name Carte#exporterImage
+ * @param {function} callbackPreprocesseurCanvas
+ * Callback de modification du canvas avant la convertion en image.
+ * @return {Image} Une version image PNG de la carte
+ */
+ Carte.prototype.exporterImage = function(callbackPreprocesseurCanvas) {
+ var deferred = jQuery.Deferred();
+
+ this.exporterCanvas().then(function(canvas) {
+ var image = new Image();
+
+ try {
+ if(callbackPreprocesseurCanvas) {
+ canvas = callbackPreprocesseurCanvas(canvas);
+ }
+
+ image.src = canvas.toDataURL("image/png");
+ } catch(e) {
+ deferred.reject(e);
+ }
+
+ image.onload = function () {
+ deferred.resolve(image);
+ }
+ image.onerror = function(error) {
+ deferred.reject(error);
+ };
+
+ }).fail(function(erreur) {
+ deferred.reject(erreur);
+ });
+
+ return deferred.promise();
+ };
+
/**
* Obtenir la projection de la carte. (Format EPSG)
* @method
@@ -430,7 +493,20 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
return this._carteOL.resolution;
};
- Carte.prototype.obtenirEchelle = function() {
+ Carte.prototype.obtenirEchelle = function(approximative) {
+ if (approximative) {
+ var scale = this._carteOL.getScale();
+ scale = Math.round(scale);
+ if (scale < 10000) {
+ return scale;
+ }
+ scale = Math.round(scale/1000);
+ if (scale < 1000) {
+ return scale + 'K';
+ }
+ scale = Math.round(scale/1000);
+ return scale + 'M';
+ }
return this._carteOL.getScale();
};
@@ -668,17 +744,17 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
cacherVertex();
that._.curseur = 'move';
if(occurence){
- couche.declencher({ type: "debutDeplacementOccurence", occurence: occurence });
+ couche.declencher({ type: "debutDeplacementOccurence", occurence: occurence });
}
- },
+ },
onDrag: function(feature){
cacherVertex();
var occurence = couche.obtenirOccurenceParId(feature.id);
if(occurence){
occurence.majGeometrie(feature.geometry, {lancerDeclencheur: false});
- couche.declencher({ type: "deplacementOccurence", occurence: occurence });
+ couche.declencher({ type: "deplacementOccurence", occurence: occurence });
}
- },
+ },
onComplete: function(feature){
if(that.controleEdition){
that.controleEdition.resetVertices();
@@ -688,9 +764,9 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
if(occurence){
occurence.majGeometrie(feature.geometry);
$olMapViewport.removeClass('olControlDragFeatureOver');
- couche.declencher({ type: "finDeplacementOccurence", occurence: occurence });
+ couche.declencher({ type: "finDeplacementOccurence", occurence: occurence });
}
- },
+ },
onEnter: function(feature){
var occurence = couche.obtenirOccurenceParId(feature.id);
if(occurence && occurence.obtenirInteraction('editable') === false){
@@ -717,19 +793,27 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
this._._carteOL.addControl(this.controleDrag);
this.controleDrag.activate();
}
+ this.controleDrag.coucheIgo = couche;
if (this.snap) {
this.activerSnap(couche);
}
}
- Carte.Controles.prototype.desactiverDeplacementVecteur = function(couche) {
+ Carte.Controles.prototype.desactiverDeplacementVecteur = function() {
if (this.controleDrag) {
+ var couche = this.controleDrag.coucheIgo;
this.desactiverSnap();
this.controleDrag.deactivate();
this._._carteOL.removeControl(this.controleDrag);
this.controleDrag.destroy();
this.controleDrag = undefined;
+ if (couche) {
+ couche.definirOrdreAffichage(couche._layer.z_index_default);
+ couche.declencher({
+ type: 'controleDeplacementVecteurDesactiver'
+ });
+ }
}
}
@@ -753,24 +837,24 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
var modeEdit = 0;
if(options.editVertex !== false){
modeEdit = OpenLayers.Control.ModifyFeature.RESHAPE ;
- }
+ }
if(options.rotation){
modeEdit += OpenLayers.Control.ModifyFeature.ROTATE ;
- }
+ }
if(options.editDimension){
modeEdit += OpenLayers.Control.ModifyFeature.RESIZE ;
- }
+ }
if(modeEdit){
this.controleEdition = new OpenLayers.Control.ModifyFeature(couche._layer, {
mode: modeEdit
});
- this._._carteOL.addControl(this.controleEdition);
+ this._._carteOL.addControl(this.controleEdition);
this.controleEdition.optionsIgo = options;
this.controleEdition.coucheIgo = couche;
}
}
-
+
if(this.controleEdition){
this.controleEdition.activate();
@@ -789,7 +873,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
couche.declencher({
type: 'controleEditionActiver'
});
-
+
if (this.snap) {
this.activerSnap(couche);
}
@@ -801,7 +885,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
if (this.vertex) {
this.dragVertex(this.vertex, pixel);
}
-
+
if(this.feature){
var occ = new Occurence(this.feature.geometry);
couche.declencher({
@@ -832,6 +916,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
this._editionEvents.oModifificationTerminee = undefined;
this.activerOccurenceEvenement();
if (couche) {
+ couche.definirOrdreAffichage(couche._layer.z_index_default);
couche.deselectionnerTout();
couche.declencher({
type: 'controleEditionDesactiver'
@@ -889,7 +974,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
}
- if(occurence.obtenirInteraction('editable') === false){
+ if(occurence.obtenirInteraction('editable') === false){
if(occurence.obtenirTypeGeometrie() === 'Point'){
//la carte n'est plus focus pour un déplacement
that.controleEdition.handlers.drag.dragend(e)
@@ -898,7 +983,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
}
occurence._resetVertex = function(){if(that.controleEdition){that.controleEdition.resetVertices()}};
-
+
occurence._controle = that.controleEdition;
that._editionEvents.oModifificationTerminee = that._editionEvents.oModifification;
that._editionEvents.oModifification = occurence;
@@ -939,7 +1024,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
this._editionEvents.fnVecteurOccurenceSelectionnee = function(e) {
//e.options.scope._desactiverEventsEdition();
- if (couche.obtenirOccurencesSelectionnees().length > 1) {
+ if (couche.obtenirOccurencesSelectionnees().length > 1) {
couche.deselectionnerTout({exceptions: [e.occurence]});
}
if(e.occurence){
@@ -963,6 +1048,10 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
//todo: créer si pas de couche? avertissement?
couche = couche === "active" ? this._.gestionCouches.coucheVecteurActive : couche;
+ if(couche && typeof couche.activer==='function'){
+ couche.activer(true);
+ }
+
if (options.releverBoutonOutil !== false) {
var boutonActif = Ext.ButtonToggleMgr.getPressed('carte');
if (boutonActif) {
@@ -1086,6 +1175,7 @@ define(['point', 'occurence', 'limites', 'gestionCouches', 'evenement', 'aide',
}
this._._carteOL.addControl(this.controleDessin);
+ this.controleDessin.coucheIgo = couche;
}
Aide.obtenirNavigateur().evenements.ajouterDeclencheur('controleCarteActiver', function(e) {
diff --git a/interfaces/navigateur/public/js/app/contexteMenu/contexteMenuArborescence.js b/interfaces/navigateur/public/js/app/contexteMenu/contexteMenuArborescence.js
index f642bc3b..ac84e0d5 100644
--- a/interfaces/navigateur/public/js/app/contexteMenu/contexteMenuArborescence.js
+++ b/interfaces/navigateur/public/js/app/contexteMenu/contexteMenuArborescence.js
@@ -174,85 +174,16 @@ define(['contexteMenu', 'aide', 'fonctions', 'panneauTable', 'dateTimeIntervalPi
if (args.couche.options.wms_timeextent) {
// This is a layer from the MSP map file. In which case we read the msp metadata.
// Create the DatePicker
- var timeExtentArray = args.couche.options.wms_timeextent.split("/");
- var startDate = Fonctions.createDateFromIsoString(timeExtentArray[0]);
- var endDate=null;
- var allowIntervals=null;
- var defautPrecision;
- if(timeExtentArray.length>1){
- endDate = Fonctions.createDateFromIsoString(timeExtentArray[1]);
- allowIntervals = true;
- if(timeExtentArray[2]){
- switch (timeExtentArray[2][timeExtentArray[2].length-1]){
- case 'S':
- defautPrecision = 'seconde';
- break;
- case 'M':
- defautPrecision = 'minute';
- break;
- case 'H':
- defautPrecision = 'heure';
- break;
- case 'D':
- defautPrecision = 'jour';
- break;
- case 'M':
- defautPrecision = 'mois';
- break;
- case 'Y':
- defautPrecision = 'annee';
- break;
- }
- }
- } else{
- endDate = null;
- allowIntervals = false;
- }
-
- if(args.couche.options.wms_timeAllowIntervals){
- allowIntervals = Aide.toBoolean(args.couche.options.wms_timeAllowIntervals);
- }
-
- if(!defautPrecision){
- var strArray = timeExtentArray[0].split("-");
- var heureArray;
- switch(strArray.length){
- case 1:
- defautPrecision = 'annee';
- break;
- case 2:
- defautPrecision = 'mois';
- break;
- case 3:
- defautPrecision = 'jour';
- if(strArray[2].split("T")[1]){
- heureArray = strArray[2].split("T")[1].split(':');
- }
- break;
- }
- if(heureArray){
- switch(heureArray.length){
- case 1:
- defautPrecision = 'heure';
- break;
- case 2:
- defautPrecision = 'minute';
- break;
- case 3:
- defautPrecision = 'seconde';
- break;
- }
- }
- }
-
+ var periode = Fonctions.obtenirPeriodeTemps(args.couche.options.wms_timeextent);
+
var datePicker = new DateTimeIntervalPicker({
id : 'datePicker',
layer : args.couche._layer,
- allowIntervals : allowIntervals,
- minStartDate : startDate,
- maxEndDate : endDate,
+ allowIntervals : periode.allowIntervals,
+ minStartDate : periode.min,
+ maxEndDate : periode.max,
mapServerTimeString : args.couche.options.wms_timedefault,
- precision : args.couche.options.wms_timeprecision || defautPrecision
+ precision : args.couche.options.wms_timeprecision || periode.precision
});
return {
diff --git a/interfaces/navigateur/public/js/app/contexteMenu/contexteMenuCarte.js b/interfaces/navigateur/public/js/app/contexteMenu/contexteMenuCarte.js
index b8b64231..3fb992d3 100644
--- a/interfaces/navigateur/public/js/app/contexteMenu/contexteMenuCarte.js
+++ b/interfaces/navigateur/public/js/app/contexteMenu/contexteMenuCarte.js
@@ -264,10 +264,12 @@ define(['contexteMenu', 'point', 'polygone', 'occurence', 'aide', 'analyseurGML'
};
ContexteMenuCarte.prototype.initSelectionSubmenu = function(args){
+ var that=args.scope;
if(args.occurencesSelectionnees.length !== 0){
var type = "";
var memeType = true;
+ var typePolygone = true;
$.each(args.occurencesSelectionnees, function(index, occurence){
if(type === ""){
type=occurence.type;
@@ -277,6 +279,11 @@ define(['contexteMenu', 'point', 'polygone', 'occurence', 'aide', 'analyseurGML'
memeType = false;
}
}
+
+ if(type !== 'MultiPolygone' && type !== 'Polygone') {
+ typePolygone = false;
+ }
+
});
var subSelection = {
@@ -300,12 +307,42 @@ define(['contexteMenu', 'point', 'polygone', 'occurence', 'aide', 'analyseurGML'
}
});
+
if(memeType){
+ if(typePolygone === true)
+ {
+ subSelection.menu.items.push('-');
+ subSelection.menu.items.push({
+ id: 'selectionPerimetre',
+ text: "Périmètre",
+ handler: function(){
+ var perimetre = 0;
+ $.each(args.occurencesSelectionnees, function(index, occurence){
+ perimetre += occurence.obtenirPerimetre();
+ });
+ Aide.afficherMessage('Périmètre', perimetre + ' ' + that.options.carte._carteOL.getUnits());
+ }
+ });
+ subSelection.menu.items.push({
+ id: 'selectionSuperficie',
+ text: 'Superficie',
+ handler: function(){
+ var superficie = 0;
+ $.each(args.occurencesSelectionnees, function(index, occurence){
+ superficie += occurence.obtenirSuperficie();
+ });
+ Aide.afficherMessage('Superficie', superficie + ' ' + that.options.carte._carteOL.getUnits() + "²");
+ }
+ });
+ }
+
var submenuCopieVers = args.scope.initSubMenuCopieVers("-1", args.occurencesSelectionnees, type);
if(submenuCopieVers){
+ subSelection.menu.items.push('-');
subSelection.menu.items.push(submenuCopieVers);
}
+
}
if(args.occurencesSelectionnees.length === 1 && args.occurencesSelectionnees[0]._obtenirGeometrie() === undefined ){
diff --git a/interfaces/navigateur/public/js/app/couche/gestionCouches.js b/interfaces/navigateur/public/js/app/couche/gestionCouches.js
index d5db8e55..c5fee7b9 100644
--- a/interfaces/navigateur/public/js/app/couche/gestionCouches.js
+++ b/interfaces/navigateur/public/js/app/couche/gestionCouches.js
@@ -74,13 +74,7 @@ define(['evenement', 'couche', 'blanc', 'limites', 'aide'], function(Evenement,
opt = opt || {};
if (couche._getLayer()) {
this.listeCouches.push(couche);
- if(couche.obtenirTypeClasse() === "WMS"){
- setTimeout(function() {
- that._ajouterCoucheCallbackEnd(couche, opt);
- }, 1)
- } else {
- this._ajouterCoucheCallbackEnd(couche, opt);
- }
+ this._ajouterCoucheCallbackEnd(couche, opt);
};
};
@@ -154,6 +148,23 @@ define(['evenement', 'couche', 'blanc', 'limites', 'aide'], function(Evenement,
return couches;
};
+ /**
+ * Obtenir la liste des couches ayant le nom donné en paramètre.
+ * @method
+ * @name GestionCouches#obtenirCouchesParNom
+ * @param {String} nom Nom recherché
+ * @returns {Tableau} Tableau de {@link Couche}
+ */
+ GestionCouches.prototype.obtenirCouchesParNom = function(nom) {
+ var couches = [];
+ $.each(this.listeCouches, function(index, value){
+ if(value.obtenirNom() === nom){
+ couches.push(value);
+ }
+ });
+ return couches;
+ };
+
/**
* Obtenir la liste des couches avec l'aide d'un regex
* @method
@@ -165,6 +176,7 @@ define(['evenement', 'couche', 'blanc', 'limites', 'aide'], function(Evenement,
opt = opt || {};
var testerTitre = opt.testerTitre !== false ? true : false;
var testerGroupe = opt.testerGroupe !== false ? true : false;
+ var testerNom = opt.testerNom !== false ? true : false;
if(typeof regex === "string"){
var ignorerCase = opt.ignorerCase !== false ? 'i' : '';
@@ -185,7 +197,7 @@ define(['evenement', 'couche', 'blanc', 'limites', 'aide'], function(Evenement,
var couches = [];
$.each(this.listeCouches, function(index, value){
- if((testerTitre && regex.test(value.obtenirTitre())) || (testerGroupe && regex.test(value.obtenirGroupe()))){
+ if((testerTitre && regex.test(value.obtenirTitre())) || (testerGroupe && regex.test(value.obtenirGroupe())) || (testerNom && regex.test(value.obtenirNom()))){
couches.push(value);
}
});
@@ -426,9 +438,28 @@ define(['evenement', 'couche', 'blanc', 'limites', 'aide'], function(Evenement,
if(!couche.estFond() && couche.estActive()){
couche.desactiver();
+ couche.gererStyleParentEnfantSelect();
}
});
};
+
+ /**
+ * Désélectionner toutes les couches WMTS qui ne sont pas des fonds de carte
+ * @method
+ * @name GestionCouches#deselectionnerCouchesWMTS
+ *
+ */
+ GestionCouches.prototype.deselectionnerCouchesWMTS = function(){
+
+ var tabCouches = this.obtenirCouchesParType("WMTS");
+
+ $.each(tabCouches, function(index, couche){
+
+ if(!couche.estFond() && couche.estActive()){
+ couche.desactiver();
+ }
+ });
+ };
/**
* Création de l'object GestionCouches.Controles
diff --git a/interfaces/navigateur/public/js/app/couche/protocole/OSM.js b/interfaces/navigateur/public/js/app/couche/protocole/OSM.js
index 22dacee4..a04f6f08 100644
--- a/interfaces/navigateur/public/js/app/couche/protocole/OSM.js
+++ b/interfaces/navigateur/public/js/app/couche/protocole/OSM.js
@@ -53,7 +53,7 @@ define(['couche'], function(Couche) {
window.location.protocol+"//c.tile.opencyclemap.org/cycle/${z}/${x}/${y}.png"];
break;
case "humanitaire":
- var HOTAttribution = '
';
+ var HOTAttribution = '© Contributions OpenStreetMap Humanitaire';
var get_my_url = function(bounds) {
var res = this.map.getResolution();
var x = Math.round ((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
diff --git a/interfaces/navigateur/public/js/app/couche/protocole/WMS.js b/interfaces/navigateur/public/js/app/couche/protocole/WMS.js
index 4d1d95c1..992897a2 100644
--- a/interfaces/navigateur/public/js/app/couche/protocole/WMS.js
+++ b/interfaces/navigateur/public/js/app/couche/protocole/WMS.js
@@ -1,13 +1,13 @@
-/**
+/**
* Module pour l'objet {@link Couche.WMS}.
* @module wms
- * @requires couche
+ * @requires couche
* @author Marc-André Barbeau, MSP
* @version 1.0
*/
define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect) {
- /**
+ /**
* Création de l'object Couche.WMS.
* Pour la liste complète des paramètres, voir {@link Couche}
* @constructor
@@ -27,11 +27,11 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
if(!this.options.layerOL){
if (!this.options.url) {
throw new Error("Igo.WMS a besoin d'un url");
- }
-
+ }
+
if (!this.options.nom && !this.options.mode) {
throw new Error("Igo.WMS a besoin d'un nom");
- }
+ }
}
if(this.options.nom){
@@ -43,42 +43,42 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
if(Aide.toBoolean(this.options.utiliserProxy)){
this.options.url=Aide.utiliserProxy(this.options.url, true);
}
-
+
this.defautOptions.version = "1.1.1";
-
+
this._optionsOL = {
queryable: true,
singleTile: !Aide.toBoolean(this.options.multiTuile)
};
-
+
if(!this.options.mode){
this._init();
}
};
-
+
WMS.prototype = new Couche();
WMS.prototype.constructor = WMS;
-
- /**
+
+ /**
* Initialisation de l'object WMS.
* Appelé lors de la création.
- * @method
+ * @method
* @private
* @name Couche.WMS#_init
*/
- WMS.prototype._init = function(target, callback, optCalback){
+ WMS.prototype._init = function(target, callback, optCallback){
if (!this.options.layerOL){
Couche.prototype._init.call(this);
-
+
var transparence = this.options.transparence || true;
-
+
if(this.options.format === "jpeg" || this.options.format === "jpg"){
transparence = false;
}
-
+
var parametreWMS = {
layers: this.options.nom,
- transparent: transparence,
+ transparent: transparence,
version: this.options.version
};
if (this.options.mapdir){
@@ -88,7 +88,7 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
this._layer = new OpenLayers.Layer.WMS(
this.options.titre||this.options.nom,
this.options.url,
- parametreWMS,
+ parametreWMS,
this._optionsOL
);
@@ -110,59 +110,70 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
this._layer.mergeNewParams(this.options.extraParams);
}
}
-
+
if(this.options.mode){
Couche.prototype._ajoutCallback.call(this, target, callback, optCallback);
}
} else {
this._layer = this.options.layerOL;
+ this.options.url = this._layer.url;
+ this.options.nom = this._layer.params.LAYERS.toString();
+ this.options.titre = this._layer.name;
+ this.options.version = this._layer.params.VERSION;
}
-
+
this._layer.events.register('loadend',this,this._validerChargement);
};
- /**
+ /**
* Appelé lors de l'ajout de la couche à la carte si le mode GetCapabilities est activé.
- * @method
+ * @method
* @private
* @name Couche.WMS#_getCapabilities
*/
- WMS.prototype._getCapabilities = function(target, callback, optCalback){
+ WMS.prototype._getCapabilities = function(target, callback, optCallback){
var tjrsProxy = this.options.encodage ? true : false;
+ var that=this;
+ window.arboLoading = true;
$.ajax({
- url: Aide.utiliserProxy(this.options.url, tjrsProxy),//this.options.url.split('?')[0],
+ url: Aide.utiliserProxy(that.options.url, tjrsProxy),//this.options.url.split('?')[0],
data: {
SERVICE: "WMS",
- VERSION: this.options.version || this.defautOptions.version,
+ VERSION: that.options.version || that.defautOptions.version,
REQUEST: "GetCapabilities",
- _encodage: this.options.encodage //"wms_encoding" "ISO-8859-1"
+ _encodage: that.options.encodage, //"wms_encoding" "ISO-8859-1"
+ t: +new Date
},
- //crossDomain: true, //utilisation du proxy
- async:false,
- context:this,
+ async:true,
+ context:that,
dataType:'xml',
dataFilter: function(response, type){
return jQuery.trim(response);
},
success:function(response) {
- this._getCapabilitiesSuccess(response, target, callback, optCalback);
+ that._getCapabilitiesSuccess(response, target, callback, optCallback);
},
- error:function(e){this._getCapabilitiesError(e, target, callback, optCalback);}
+ error:function(e){that._getCapabilitiesError(e, target, callback, optCallback);}
});
};
-
- WMS.prototype._getCapabilitiesSuccess = function(response, target, callback, optCalback){
- var that=this;
- if(!response){
- this._getCapabilitiesError();
+ WMS.prototype._getCapabilitiesSuccess = function(response, target, callback, optCallback){
+ var that=this;
+ if(!response || (response.getElementsByTagName && response.getElementsByTagName("BODY").length)){
+ var errorMessage;
+ if(response){
+ errorMessage = {
+ responseText: response.getElementsByTagName("BODY")[0].textContent
+ }
+ }
+ this._getCapabilitiesError(errorMessage);
return false;
}
var xml=new OpenLayers.Format.WMSCapabilities().read(response);
var iCL=0;
var xmlOptions = {};
var capabilityLayers, arrayLayers, len;
- //InfoFormat absent dans le fichier contexte alors on le prend
+ //InfoFormat absent dans le fichier contexte alors on le prend
//dans le getCapabilities pour le nouveau GetInfo
if(!this.options.infoFormat && xml.capability.request.getfeatureinfo !== undefined ){
var arrayInfoFormat = xml.capability.request.getfeatureinfo.formats;
@@ -181,10 +192,10 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
len = arrayLayers.length;
capabilityLayers=xml.capability.layers;
}
- $.each(capabilityLayers, function(key,value){
+ $.each(capabilityLayers, function(key,value){
if((!that.options.nom) || jQuery.inArray(value.name, arrayLayers)>=0){
- iCL++;
- if(!that.options._merge){
+ iCL++;
+ if(!that.options._merge){
var parcourirLayerXML = function(value, groupe, groupeNiveauBase){
var layers=value;
@@ -195,7 +206,7 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
groupe = groupe ? groupe+'/' : "";
groupe += value.title;
}
-
+
layers = value.nestedLayers;
$.each(layers, function(key2, value2){
parcourirLayerXML(value2, groupe, groupeNiveauBase);
@@ -203,15 +214,28 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
} else {
xmlOptions = {
titre: value.title,
- droit: value.attribution ? value.attribution.href : undefined,
echelleMin: value.minScale,
- echelleMax: value.maxScale
+ echelleMax: value.maxScale,
+ aGetInfo: value.queryable
};
+ if(value.attribution){
+ xmlOptions.droitTitre = value.attribution.title;
+ xmlOptions.droitLien = value.attribution.href;
+ if(value.attribution.logo){
+ xmlOptions.droitLogo = value.attribution.logo.href;
+ xmlOptions.droitLogoLargeur = value.attribution.logo.width;
+ xmlOptions.droitLogoHauteur = value.attribution.logo.height;
+ }
+ }
+
if(value.dataURL && value.dataURL.format === 'igo'){ //"wms_dataurl_format" "igo"
var idMeta = value.dataURL.href;
var igoClassMeta = idMeta;
xmlOptions.metadonnee = igoClassMeta; //"wms_dataurl_href" "/path/to/metdata3.xml" ou numéro de la metadata
+ } else if (value.dataURL && value.dataURL.format === 'text/html'){
+ xmlOptions.metadonneeLien = value.dataURL.href;
+ xmlOptions.metadonnee = true;
}
$.extend(xmlOptions, that.options);
@@ -234,7 +258,7 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
xmlOptions.wms_timedefault = value.dimensions.time.default;
}
target.ajouterCouche(new WMS(xmlOptions));
- }
+ }
};
parcourirLayerXML(value, that.options.groupe, that.options.groupeNiveauBase);
@@ -245,11 +269,20 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
} else if (iCL===1){
xmlOptions = {
titre: value.title,
- droit: value.attribution ? value.attribution.href : undefined,
echelleMin: value.minScale,
echelleMax: value.maxScale,
- groupe: "Couches WMS ajoutées"
+ aGetInfo: value.queryable,
+ groupe: "Couches WMS ajoutées"
};
+ if(value.attribution){
+ xmlOptions.droitTitre = value.attribution.title;
+ xmlOptions.droitLien = value.attribution.href;
+ if(value.attribution.logo){
+ xmlOptions.droitLogo = value.attribution.logo.href;
+ xmlOptions.droitLogoLargeur = value.attribution.logo.width;
+ xmlOptions.droitLogoHauteur = value.attribution.logo.height;
+ }
+ }
if (len===1){
return false;
};
@@ -265,20 +298,25 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
}
}
});
+
+ window.arboLoading = false;
if(iCL===0){
Aide.afficherMessageConsole("Couche(s) introuvable(s): " + this.options.nom);
return false;
}
if(len===1 && that.options._merge){
this.options=$.extend(xmlOptions, this.options);
- this._init(target, callback, optCalback);
+ this._init(target, callback, optCallback);
}
}
- WMS.prototype._getCapabilitiesError = function(response, target, callback, optCalback){
+ WMS.prototype._getCapabilitiesError = function(response, target, callback, optCallback){
+ window.arboLoading = false;
response = response || {};
- if(response.status != 200){
- Aide.afficherMessageConsole('Erreur WMS: GetCapabilities:
Le GetCapabilities pour \''+this.options.url+'\' a échoué.
'+response.responseText);
+ if(response.status != 200){
+ var message = 'Erreur WMS: GetCapabilities:
Le GetCapabilities pour \''+this.options.url+'\' a échoué.
'+response.responseText;
+ console.log(message);
+ Aide.afficherMessageConsole(message);
return false;
}
if(BrowserDetect.browser == "Explorer"){
@@ -287,15 +325,15 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
xmlDoc.validateOnParse = false;
xmlDoc.resolveExternals = false;
var parsed=xmlDoc.loadXML(response.responseText);
-
+
if(!parsed) {
var myErr = xmlDoc.parseError;
Aide.afficherMessage('Erreur WMS: GetCapabilities', 'Le GetCapabilities pour \''+this.options.url+'\' a échoué.
'+myErr.reason, 'OK', 'ERREUR');
} else {
- this._getCapabilitiesSuccess(xmlDoc, target, callback, optCalback);
+ this._getCapabilitiesSuccess(xmlDoc, target, callback, optCallback);
}
return false;
- }
+ }
Aide.afficherMessage('Erreur WMS: GetCapabilities', 'Le GetCapabilities pour \''+this.options.url+'\' a échoué.', 'OK', 'ERREUR');
}
@@ -306,8 +344,10 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
Couche.prototype._ajoutCallback.call(this, target, callback, optCallback);
}
};
-
+
WMS.prototype._validerChargement = function(e, a){
+ var that = this;
+
if(e.object.div.innerHTML.indexOf("olImageLoadError")>-1){
$.ajax({
url: Aide.utiliserProxy(decodeURIComponent($('').html(/src="(.*)"/.exec(e.object.div.innerHTML)[1]).text())),
@@ -316,12 +356,18 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
VERSION: this.options.version,
REQUEST: "GetMap"
},
- async:false,
+ async:true,
context:this,
success:function(response) {
+
+ if(this.options.afficherMessageErreurUtilisateur === "true"){
+ this.gestionErreurWMS(this);
+ return false;
+ }
+
var message = ''+this.options.titre +':
';
-
- if(typeof response === 'object'){
+
+ if(typeof response === 'object'){
var tagError = response.getElementsByTagName("ServiceException");
if(tagError){
message += tagError.item(0).textContent;
@@ -333,31 +379,31 @@ define(['couche', 'aide', 'browserDetect'], function(Couche, Aide, BrowserDetect
}
},
error:function(e){
- var message = ''+ e.statusText +':
';
- Aide.afficherMessageConsole(message);
- /*var response = e.responseXML;
-
- if(typeof response === 'object'){
- var tagError = response.getElementsByTagName("ServiceException");
- if(tagError){
- message += tagError.item(0).textContent;
- Aide.afficherMessageConsole(message);
- }
- } else {
- Aide.afficherMessageConsole(message);
- }*/
+ that.gestionErreurWMS(e);
}
-
+
});
}
};
-
- WMS.prototype.rafraichir = function() {
+
+ WMS.prototype.rafraichir = function() {
if(this._layer){
- this._layer.redraw(true);
+ this._layer.redraw(true);
+ }
+ };
+
+ WMS.prototype.gestionErreurWMS = function(e) {
+
+ if(this.options.afficherMessageErreurUtilisateur === "true") {
+ Aide.afficherMessage({titre: this.obtenirGroupe(), message: "La couche d'information " + this.obtenirTitre() + " n'est actuellement pas disponible."});
+ this.desactiver();
+ }
+ else {
+ var message = ''+ e.statusText +':
';
+ Aide.afficherMessageConsole(message);
}
};
-
+
return WMS;
-
+
});
diff --git a/interfaces/navigateur/public/js/app/couche/protocole/WMTS.js b/interfaces/navigateur/public/js/app/couche/protocole/WMTS.js
index 18eb189b..1b9171ca 100644
--- a/interfaces/navigateur/public/js/app/couche/protocole/WMTS.js
+++ b/interfaces/navigateur/public/js/app/couche/protocole/WMTS.js
@@ -29,7 +29,6 @@ define(['couche', 'aide'], function(Couche, Aide) {
}
this._optionsOL = this.options._optionsOL || {
name: options.titre,
- url: options.url,
layer: options.nom,
matrixSet: options.matrixSet,
format: options.format==null ? "image/png" : "image/"+options.format,
@@ -39,8 +38,13 @@ define(['couche', 'aide'], function(Couche, Aide) {
if(Aide.toBoolean(this.options.utiliserProxy)){
this.options.url=Aide.utiliserProxy(this.options.url, true);
}
-
- this._init();
+
+ this.options.version = this.options.version==null ? "1.0.0" : this.options.version;
+
+ if(!this.options.mode){
+ this._init();
+ }
+
};
WMTS.prototype = new Couche();
@@ -54,12 +58,66 @@ define(['couche', 'aide'], function(Couche, Aide) {
* @name Couche.WMTS#_init
*/
WMTS.prototype._init = function(){
- Couche.prototype._init.call(this);
- this._layer = new OpenLayers.Layer.WMTS(
- this._optionsOL
- );
+ if (!this.options.layerOL){
+ Couche.prototype._init.call(this);
+
+ var opt = $.extend({}, this._optionsOL, {url: this.options.url});
+ this._layer = new OpenLayers.Layer.WMTS(opt);
+ }
+ };
+
+ WMTS.prototype._ajoutCallback = function(target, callback, optCallback){
+ if(this.options.mode === 'getCapabilities'){
+ this._getCapabilities(target, callback, optCallback);
+ }else {
+ Couche.prototype._ajoutCallback.call(this, target, callback, optCallback);
+ }
+ };
+
+ WMTS.prototype._getCapabilities = function(target, callback, optCallback){
+ var that=this;
+
+ OpenLayers.Request.GET({
+ url: that.options.url,
+ params: {
+ SERVICE: "WMTS",
+ VERSION: this.options.version,
+ REQUEST: "GetCapabilities",
+ },
+ async: false,
+ success: function(request) {
+ var doc = request.responseXML;
+ if (!doc || !doc.documentElement) {
+ doc = request.responseText;
+ }
+
+ var layerWMTS;
+ try{
+ var reader = new OpenLayers.Format.WMTSCapabilities();
+ var capabilities = reader.read(doc);
+ layerWMTS = reader.createLayer(capabilities,
+ that._optionsOL);
+ }
+ catch(e){
+ Aide.afficherMessageConsole('La création du layer WMTS '+that.options.titre+' a échoué.'
+ +'Erreur:'+e,'eleve');
+ }
+
+ if(layerWMTS){
+ that._layer = layerWMTS;
+ }
+
+ Couche.prototype._ajoutCallback.call(that, target, callback, optCallback);
+ },
+ failure: function() {
+ Aide.afficherMessageConsole("La requête GetCapabilities au service :"+that.options.url+', pour la couche:'+that.options.titre+' a échoué.','eleve');
+ }
+ });
+
+
+
};
return WMTS;
-});
\ No newline at end of file
+});
diff --git a/interfaces/navigateur/public/js/app/couche/protocole/arcGIS93Rest.js b/interfaces/navigateur/public/js/app/couche/protocole/arcGIS93Rest.js
index 28ec7560..a6e5dd2a 100644
--- a/interfaces/navigateur/public/js/app/couche/protocole/arcGIS93Rest.js
+++ b/interfaces/navigateur/public/js/app/couche/protocole/arcGIS93Rest.js
@@ -3,15 +3,16 @@ define(['couche', 'aide'], function(Couche, Aide) {
function ArcGIS93Rest(options){
this.options = options || {};
- if (!this.options.titre || !this.options.url || !this.options.nom) {
+ if (!this.options.titre || !this.options.url) {
throw new Error("Igo.ArcGIS93Rest a besoin d'un titre, d'un url et d'un nom");
}
- if(this.options.nom.substr(0,5) !== 'show:'){
+ if(this.options.nom && this.options.nom.substr(0,5) !== 'show:'){
this.options.nom = 'show:' + this.options.nom;
}
this._optionsOL = this.options._optionsOL || {
+ layers: this.options.nom,
maxZoomLevel: options.zoomMax==null?null:Number(options.zoomMax),
minZoomLevel: options.zoomMin==null?null:Number(options.zoomMin),
transparent: this.options.fond ? false : true
@@ -37,7 +38,6 @@ define(['couche', 'aide'], function(Couche, Aide) {
*/
ArcGIS93Rest.prototype._init = function(){
Couche.prototype._init.call(this);
-
this._layer = new OpenLayers.Layer.ArcGIS93Rest(
this.options.titre,
this.options.url,
diff --git a/interfaces/navigateur/public/js/app/couche/protocole/couche.js b/interfaces/navigateur/public/js/app/couche/protocole/couche.js
index cd328a8e..80829ad0 100644
--- a/interfaces/navigateur/public/js/app/couche/protocole/couche.js
+++ b/interfaces/navigateur/public/js/app/couche/protocole/couche.js
@@ -77,12 +77,46 @@ define(['evenement', 'aide'], function(Evenement, Aide) {
};
}
+ var attribution;
+ if(typeof opt.droit === 'string'){
+ attribution = opt.droit.trim();
+ } else if(opt.droitTitre || opt.droitLogo){
+ var attribution = '';
+
+ if(opt.droitLien){
+ attribution += '';
+ }
+ if(opt.droitLogo){
+ attribution += '';
+ }
+
+ if(opt.droitLien){
+ attribution += ' ';
+ }
+
+ attribution += opt.droitTitre;
+
+ if(opt.droitLien){
+ attribution += '';
+ }
+
+ attribution += '';
+ }
+
+ var layerActif = Aide.obtenirParametreURL("layeractif");
+ if(layerActif){
+ layerActif = layerActif.split(',');
+ if(layerActif.indexOf(opt.nom) !== -1){
+ opt.active = true;
+ }
+ }
+
this._optionsOL = $.extend({
isBaseLayer: Aide.toBoolean(opt.fond),
minScale: opt.echelleMin, //todo: defaultMapOptions.resolutions[11] || this.carte.getResolutionForZoom(opt.niveauZoomMin), //echelleMin: grand nombre
maxScale: opt.echelleMax, //|| this.carte.getResolutionForZoom(opt.niveauZoomMax), //echelleMax: petit nombre
group: opt.groupe,
- attribution: opt.droit,
+ attribution: attribution,
typeContexte: opt.typeContexte,
displayInLayerSwitcher: Aide.toBoolean(opt.visible),
legende: Aide.toBoolean(opt.legende),
@@ -125,9 +159,9 @@ define(['evenement', 'aide'], function(Evenement, Aide) {
this._getLayer().id = this.id;
if (typeof callback === "function") callback.call(target, this, optCallback);
- this._getLayer().events.register('loadstart', this, function(e){this.afficherChargement()});
- this._getLayer().events.register('loadend', this, function(e){this.masquerChargement()});
- this._getLayer().events.register('visibilitychanged', this, function(e){this._visibiliteChangee()});
+ this._getLayer().events.register('loadstart', this, function(e){this.gererStyleParentEnfantSelect();this.gererIndentifierAGetInfo();this.afficherChargement();});
+ this._getLayer().events.register('loadend', this, function(e){this.masquerChargement();});
+ this._getLayer().events.register('visibilitychanged', this, function(e){this.gererStyleParentEnfantSelect();this.gererIndentifierAGetInfo();this._visibiliteChangee();});
};
/**
@@ -167,6 +201,17 @@ define(['evenement', 'aide'], function(Evenement, Aide) {
return this.options.groupe;
};
+ /**
+ * Obtenir le nom de la couche
+ * @method
+ * @name Couche#obtenirNom
+ * @returns {String} Nom de la couche
+ */
+ Couche.prototype.obtenirNom = function() {
+ return this.options.nom;
+ };
+
+
/**
* Obtenir l'identifiant de la couche
* @method
@@ -251,6 +296,8 @@ define(['evenement', 'aide'], function(Evenement, Aide) {
}
this._getLayer().setVisibility(true);
+ this.gererStyleParentEnfantSelect();
+ this.gererIndentifierAGetInfo();
};
/**
@@ -267,6 +314,8 @@ define(['evenement', 'aide'], function(Evenement, Aide) {
return;
}
this._getLayer().setVisibility(false);
+ this.gererStyleParentEnfantSelect();
+ this.gererIndentifierAGetInfo();
};
@@ -414,5 +463,61 @@ define(['evenement', 'aide'], function(Evenement, Aide) {
});
}
+ /**
+ * Aficher/Masquer un style gris sur le style parent pour indiquer que des couches enfants sont sélectionnées.
+ * @method
+ * @name Couche#gererStyleParentEnfantSelect
+ */
+ Couche.prototype.gererStyleParentEnfantSelect = function()
+ {
+
+ var panneauArborescence = Aide.obtenirNavigateur().obtenirPanneauxParType("Arborescence",3)[0];
+
+ if(panneauArborescence === undefined || panneauArborescence.options.identifierSousSelection !== "true")
+ return false;
+
+ var idPanneauArbo =panneauArborescence.obtenirId();
+ $("#"+idPanneauArbo).find("input:checked").parents("ul").prev().css('background-color', 'rgb(211, 211, 211)');
+
+ $("#"+idPanneauArbo).find("div").each(
+ function(index,elem){
+ if($(elem).css('background-color') == 'rgb(211, 211, 211)')
+ {
+ if($(elem).next().find("input:checked").length == 0)
+ $(elem).css('background-color', '');
+ }
+ }
+ );
+ };
+
+ /**
+ * Obtenir la valeur à savoir si la couche a un getInfo
+ * @method
+ * @name #Couche#gererIndentifierAGetInfo
+ */
+ Couche.prototype.gererIndentifierAGetInfo = function() {
+
+ var panneauArborescence = Aide.obtenirNavigateur().obtenirPanneauxParType("Arborescence",3)[0];
+
+ if(panneauArborescence === undefined || panneauArborescence.options.identifierGetInfo !== "true")
+ return false;
+
+
+ if(this.options.aGetInfo && (this.options.aGetInfo === true || this.options.aGetInfo == "true")) {
+ var div = this.obtenirElementDivArbo();
+
+ var $layerArboGetInfo = $(div).find(".layerArboGetInfo");
+ if($layerArboGetInfo.length){
+ if($(div).find("input:checked").length == 1)
+ $layerArboGetInfo.show();
+ else
+ $layerArboGetInfo.hide();
+
+ } else if(div){
+ $(div).find(".x-tree-node-indent").before('');
+ }
+ }
+ };
+
return Couche;
});
\ No newline at end of file
diff --git a/interfaces/navigateur/public/js/app/couche/protocole/google.js b/interfaces/navigateur/public/js/app/couche/protocole/google.js
index 39dd8a4d..31aa3ab6 100644
--- a/interfaces/navigateur/public/js/app/couche/protocole/google.js
+++ b/interfaces/navigateur/public/js/app/couche/protocole/google.js
@@ -19,13 +19,14 @@ define(['couche', 'aide'], function(Couche, Aide) {
* @requires google
* @param {String} [options.titre="Google"] Nom de la couche
* @param {String} [options.nom="route"] Type de la carte {terrain | satellite | hybride | route}.
+ * @param {Boolean} [options.useTiltImages="false"] Utilisation des images à 45°.
* @returns {Couche.Google} Instance de {@link Couche.Google}
*/
function Google(options){
this.options = options || {};
this.options.fond = true;
this.options.opaciteSlider = false;
-
+
this._optionsOL = {
sphericalMercator: true,
numZoomLevels: 20,
@@ -72,12 +73,22 @@ define(['couche', 'aide'], function(Couche, Aide) {
this.options.titre,
this._optionsOL
);
+
+ if(Aide.toBoolean(!this.options.useTiltImages) && (type === google.maps.MapTypeId.SATELLITE)){
+
+ var nav = Aide.obtenirNavigateur();
+
+ nav.evenements.ajouterDeclencheur('ajouterCouche', function(e){
+ e.couche._layer.mapObject.setTilt(0);
+ this.enleverDeclencheur(e.type, e.options.id);
+ }, {id: this._layer.id+'desactiveTilt'});
+ }
};
Google.prototype._ajoutCallback = function(target, callback, optCallback){
var that=this;
var options = $.extend({}, that.defautOptions, Aide.obtenirConfig(that.obtenirTypeClasse()), that.options);
- var googleConnexion = options.url ? window.location.protocol + options.url : window.location.protocol + '//maps.google.com/maps/api/js?sensor=false';
+ var googleConnexion = options.url ? window.location.protocol + options.url : window.location.protocol + '//maps.google.com/maps/api/js?';
if(options.client){
googleConnexion += "&client=" + options.client;
if(options.signature){
diff --git a/interfaces/navigateur/public/js/app/couche/protocole/vecteur.js b/interfaces/navigateur/public/js/app/couche/protocole/vecteur.js
index a7a1e5d1..769e56c8 100644
--- a/interfaces/navigateur/public/js/app/couche/protocole/vecteur.js
+++ b/interfaces/navigateur/public/js/app/couche/protocole/vecteur.js
@@ -1,15 +1,15 @@
-/**
+/**
* Module pour l'objet {@link Couche.Vecteur}.
* @module vecteur
- * @requires couche
- * @requires occurence
- * @requires limites
+ * @requires couche
+ * @requires occurence
+ * @requires limites
* @author Marc-André Barbeau, MSP
* @version 1.0
*/
define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occurence, Limites, Style, Aide) {
- /**
+ /**
* Création de l'object Couche.Vecteur.
* Pour la liste complète des paramètres, voir {@link Couche}
* @constructor
@@ -26,7 +26,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
*/
function Vecteur(options){
this.options = options || {};
-
+
//todo: Aide.toBoolean() pour selectionnable et autres...
this.garderHistorique = this.options.garderHistorique;
this._historiqueOccurencesAjoutees=[];
@@ -40,14 +40,14 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
this._init();
};
};
-
+
Vecteur.prototype = new Couche();
Vecteur.prototype.constructor = Vecteur;
-
- /**
+
+ /**
* Initialisation de l'object Couche.Vecteur.
* Appelé lors de la création.
- * @method
+ * @method
* @private
* @name Couche.Vecteur#_init
*/
@@ -60,7 +60,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
titre,
this._optionsOL
);
-
+
if(!this._optionsOL.styleMap){
var styles = this.options.styles || new Style();
this.definirStyles(styles);
@@ -70,7 +70,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
this._layer = this.options.layerOL;
}
};
-
+
Vecteur.prototype._ajoutCallback = function(target, callback, optCallback){
var that=this;
Couche.prototype._ajoutCallback.call(this, target, callback, optCallback);
@@ -85,7 +85,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
}
var analyseur = new Analyseur();
analyseur.lireUrl({
- url: Aide.utiliserProxy(that.options.source),
+ url: Aide.utiliserProxy(that.options.source),
callback: function(reponse, status){
if(status === 'success') {
that.ajouterOccurences(reponse);
@@ -100,17 +100,17 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
});
}
};
-
- /**
+
+ /**
* Obtenir la liste des occurences.
- * @method
+ * @method
* @name Couche.Vecteur#obtenirOccurences
* @returns {Tableau} Tableau de {@link Occurence}
*/
- Vecteur.prototype.obtenirOccurences = function() {
+ Vecteur.prototype.obtenirOccurences = function() {
return this.listeOccurences;
};
-
+
Vecteur.prototype.obtenirOccurencesModifiees = function(ajoutEtRetrait){
var occurencesModifiees = [];
$.each(this.obtenirOccurences(), function(key, occurence){
@@ -120,26 +120,26 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
occurencesModifiees.push(occurence);
}
});
-
+
return occurencesModifiees;
};
-
+
Vecteur.prototype.obtenirOccurencesEnlevees = function(){
return this._historiqueOccurencesEnlevees;
};
-
+
Vecteur.prototype.obtenirOccurencesAjoutees = function(){
return this._historiqueOccurencesAjoutees;
};
-
- /**
- * Selectionner une occurence de la couche
- * @method
+
+ /**
+ * Selectionner une occurence de la couche
+ * @method
* @name Couche.Vecteur#selectionnerOccurence
* @param {Occurence} occurence L'occurence à sélectionner
* @fires Couche.Vecteur#selectionnerOccurence
*/
- Vecteur.prototype.selectionnerOccurence = function(occurence) {
+ Vecteur.prototype.selectionnerOccurence = function(occurence) {
if (!occurence || !occurence._feature){return;};
/*var selectControle = this._.controles._selectControle;
if (!selectControle){
@@ -148,14 +148,14 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
occurence.selectionner();
//selectControle.select(occurence._feature);
};
-
- /**
+
+ /**
* Obtenir la liste des occurences sélectionnées.
- * @method
+ * @method
* @name Couche.Vecteur#obtenirOccurencesSelectionnees
* @returns {Tableau} Tableau de {@link Occurence}
*/
- Vecteur.prototype.obtenirOccurencesSelectionnees = function() {
+ Vecteur.prototype.obtenirOccurencesSelectionnees = function() {
var occurences=[];
$.each(this.obtenirOccurences(), function(key, value){
if(value.selectionnee){
@@ -164,14 +164,14 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
});
return occurences;
};
-
- /**
+
+ /**
* Obtenir la liste des occurences pas sélectionnées.
- * @method
+ * @method
* @name Couche.Vecteur#obtenirOccurencesNonSelectionnees
* @returns {Tableau} Tableau de {@link Occurence}
*/
- Vecteur.prototype.obtenirOccurencesNonSelectionnees = function() {
+ Vecteur.prototype.obtenirOccurencesNonSelectionnees = function() {
var occurences=[];
$.each(this.obtenirOccurences(), function(key, value){
if(!value.selectionnee){
@@ -180,15 +180,15 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
});
return occurences;
};
-
-
- /**
+
+
+ /**
* Obtenir l'occurence ayant l'id entré en paramètre.
- * @method
+ * @method
* @name Couche.Vecteur#obtenirOccurenceParId
* @returns {Occurence} Occurence ayant l'identifiant voulu.
*/
- Vecteur.prototype.obtenirOccurenceParId = function(id) {
+ Vecteur.prototype.obtenirOccurenceParId = function(id) {
var occurence;
$.each(this.obtenirOccurences(), function(key, value){
if(value.id===id){
@@ -198,15 +198,15 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
});
return occurence;
};
-
- /**
- * Déselectionner une occurence de la couche
- * @method
+
+ /**
+ * Déselectionner une occurence de la couche
+ * @method
* @name Couche.Vecteur#deselectionnerOccurence
* @param {Occurence} occurence L'occurence à désélectionner
* @fires Couche.Vecteur#deselectionnerOccurence
*/
- Vecteur.prototype.deselectionnerOccurence = function(occurence) {
+ Vecteur.prototype.deselectionnerOccurence = function(occurence) {
if (!occurence || !occurence._feature){return;};
//todo: mode igo
occurence.deselectionner();
@@ -215,29 +215,29 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
selectControle.unselect(occurence._feature);
};*/
};
-
- /**
+
+ /**
* Déselectionner toutes les occurences de la couche
- * @method
+ * @method
* @name Couche.Vecteur#deselectionnerTout
* @param {Opt} Possibilité de passer une option
*/
- Vecteur.prototype.deselectionnerTout = function(opt) {
-
+ Vecteur.prototype.deselectionnerTout = function(opt) {
+
var opt = opt || {};
var occurences = this.obtenirOccurencesSelectionnees();
this.processThis('deselectionnerOccurence',occurences,opt);
};
-
- /**
+
+ /**
* Sélectionner toutes les occurences de la couche
- * @method
+ * @method
* @name Couche.Vecteur#selectionnerTout
* @param {Opt} Possibilité de passer une option
*/
- Vecteur.prototype.selectionnerTout = function(opt) {
-
+ Vecteur.prototype.selectionnerTout = function(opt) {
+
var opt = opt || {};
var occurences = this.obtenirOccurences();
this.processThis('selectionnerOccurence', occurences, opt);
@@ -277,12 +277,12 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
/**
* Inverser la sélection des occurences
- * @method
+ * @method
* @name Couche.Vecteur#selectionnerInverse
* @param {Opt} Possibilité de passer une option
*/
- Vecteur.prototype.selectionnerInverse = function(opt) {
-
+ Vecteur.prototype.selectionnerInverse = function(opt) {
+
var opt = opt || {};
var selectionPassee = this.obtenirOccurencesSelectionnees();
var selectionFutur = this.obtenirOccurencesNonSelectionnees();
@@ -290,17 +290,17 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
this.processThis('selectionnerOccurence', selectionFutur, opt);
};
-
- /**
+
+ /**
* Créer une occurence et l'ajouter à la couche.
* Appel de la fonction {@link Occurence}
* Appel de la fonction {@link Couche.Vector#ajouterOccurence}
- * @method
+ * @method
* @name Couche.Vecteur#creerOccurence
* @param {Geometrie.Point|Geometrie.Ligne|Geometrie.Polygone} geometrie La géométrie à créer et à ajouter
* @exception Vérification de la création de l'occurence.
*/
- Vecteur.prototype.creerOccurence = function(geometrie, info, opt) {
+ Vecteur.prototype.creerOccurence = function(geometrie, info, opt) {
//todo: throw error si pas geometrie...
//todo: vérifier la projection de la géométrie
opt = opt || {};
@@ -313,13 +313,13 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
creationOccurence._keepFeature = true;
}
var occurence = new Occurence(geometrie, info, undefined, creationOccurence);
-
+
this.ajouterOccurence(occurence, opt);
};
-
- /**
- * Ajouter une occurence à la couche
- * @method
+
+ /**
+ * Ajouter une occurence à la couche
+ * @method
* @name Couche.Vecteur#ajouterOccurence
* @param {Occurence} occurence L'occurence à ajouter
* @exception Vérification du type de l'intrant.
@@ -332,26 +332,26 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
this.creerOccurence(occurence, undefined, opt);
return;
//throw new Error("L'intrant n'est pas une occurence. Utiliser creerOccurence(geom).");
- }
-
+ }
+
if(this.options.typeGeometriePermise && this.options.typeGeometriePermise !== occurence.type){
console.warn("Cette couche vecteur accepte seulement le type de géométrie: " + this.options.typeGeometriePermise);
return false;
}
-
+
if(!occurence.type){
console.warn("L'occurence doit avoir une géométrie pour être ajoutée à la couche vecteur.");
return false;
}
-
+
if(this.options.protege && opt.forcer !== true){
console.warn("Cette couche est protégée, elle n'accepte pas l'ajout d'occurrence de cette façon.");
return false;
}
//avant
- // this.declencher({ type: "ajouterOccurence", occurence: occurence });
- occurence.vecteur=this;
-
+ // this.declencher({ type: "ajouterOccurence", occurence: occurence });
+ occurence.vecteur=this;
+
if(this.options.simplificationZoom && opt.simplificationZoom !== false){
occurence._feature.geometry=occurence._obtenirGeomOL(this.carte._carteOL.getResolution()/2);
}
@@ -365,26 +365,26 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
occurence._feature.utilisateur=true;
this._layer.addFeatures(occurence._feature);
};
-
+
if(this.garderHistorique){
occurence.ajoutee = true;
this._historiqueOccurencesAjoutees.push(occurence);
}
-
+
/**
* Événement ajouterOccurence. Événement lancée avant et après.
* @event Couche.Vecteur#ajouterOccurence
* @type {object}
* @property {Occurence} occurence L'occurence ajoutée
*/
- this.declencher({ type: "ajouterOccurence", occurence: occurence });
-
+ this.declencher({ type: "ajouterOccurence", occurence: occurence });
+
return occurence;
};
-
- /**
- * Ajouter un tableau d'occurences à la couche
- * @method
+
+ /**
+ * Ajouter un tableau d'occurences à la couche
+ * @method
* @name Couche.Vecteur#ajouterOccurences
* @param Array {Occurences} tableau d'occurence à ajouter
*/
@@ -392,7 +392,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
var that = this;
if(!occurences){return false;}
$.each(occurences, function(key, value){
- that.ajouterOccurence(value, opt);
+ that.ajouterOccurence(value, opt);
});
/**
* Événement ajouterOccurences. Événement lancée avant et après.
@@ -402,15 +402,15 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
*/
this.declencher({ type: "ajouterOccurences", occurences: occurences });
};
-
- /**
- * Enlever une occurence à la couche
- * @method
+
+ /**
+ * Enlever une occurence à la couche
+ * @method
* @name Couche.Vecteur#enleverOccurence
* @param {Occurence} occurence L'occurence à enlever
* @fires Couche.Vecteur#enleverOccurence
*/
- Vecteur.prototype.enleverOccurence = function(occurence, opt) {
+ Vecteur.prototype.enleverOccurence = function(occurence, opt) {
var idx = this.listeOccurences.indexOf(occurence);
if (idx !== -1) {
occurence.vecteur = undefined;
@@ -419,7 +419,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
this.carte.gestionCouches.enleverOccurenceSurvol(occurence);
if(this.garderHistorique){
occurence.enlevee = true;
-
+
if(!occurence.ajoutee){
this._historiqueOccurencesEnlevees.push(occurence);
}
@@ -434,10 +434,10 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
* @type {object}
* @property {Occurence} occurence L'occurence à retirer
*/
- this.declencher({ type: "enleverOccurence", occurence: occurence });
+ this.declencher({ type: "enleverOccurence", occurence: occurence });
};
- Vecteur.prototype.accepterModifications = function(saveFn) {
+ Vecteur.prototype.accepterModifications = function(saveFn) {
var save = saveFn || false;
if(!save && this.options.fnSauvegarder){
save = this.options.fnSauvegarder(this);
@@ -454,46 +454,46 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
}
};
- Vecteur.prototype.annulerModifications = function() {
+ Vecteur.prototype.annulerModifications = function() {
this.garderHistorique = false;
this.enleverOccurences(this._historiqueOccurencesAjoutees);
this._historiqueOccurencesAjoutees=[];
-
+
this.ajouterOccurences(this._historiqueOccurencesEnlevees);
this._historiqueOccurencesEnlevees=[];
this.garderHistorique = true;
$.each(this.obtenirOccurencesModifiees(true), function(key, occurence){
occurence.annulerModifications();
});
-
+
$.each(this._historiqueOccurencesAjoutees, function(key, occurence){
occurence.annulerModifications();
});
};
-
- Vecteur.prototype.enleverOccurences = function(occurences, opt) {
+
+ Vecteur.prototype.enleverOccurences = function(occurences, opt) {
var that=this;
var occurencesClone = $.extend({}, occurences);
$.each(occurencesClone, function(key, value){
- that.enleverOccurence(value, opt);
+ that.enleverOccurence(value, opt);
});
};
- /**
+ /**
* Enlever toutes les occurences de la couche
- * @method
+ * @method
* @name Couche.Vecteur#enleverTout
* @fires Couche.Vecteur#enleverTout
*/
//todo renommer en enleverToutesOccurences
- Vecteur.prototype.enleverTout = function(opt) {
+ Vecteur.prototype.enleverTout = function(opt) {
this.enleverOccurences(this.listeOccurences, opt);
};
-
+
Vecteur.prototype.cacherOccurence = function(occurence,tousLesStyles) {
-
+
var tousStyles = tousLesStyles===undefined?false:tousLesStyles;
if(Array.isArray(occurence)){
@@ -508,13 +508,13 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
Vecteur.prototype.cacherTout = function(tousLesStyles) {
- var tousLesStyles = typeof tousLesStyles === "undefined"?undefined:tousLesStyles;
+ tousLesStyles = typeof tousLesStyles === "undefined"?undefined:tousLesStyles;
var selection = this.obtenirOccurences();
this.processThis('cacher', selection, tousLesStyles);
};
- Vecteur.prototype.afficherOccurence = function(occurence, tousStyles) {
+ Vecteur.prototype.afficherOccurence = function(occurence, tousLesStyles) {
var tousStyles = tousLesStyles===undefined?false:tousLesStyles;
@@ -528,30 +528,30 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
Vecteur.prototype.afficherTout = function(tousLesStyles) {
- var tousLesStyles = typeof tousLesStyles === "undefined"?undefined:tousLesStyles;
+ tousLesStyles = typeof tousLesStyles === "undefined"?undefined:tousLesStyles;
var selection = this.obtenirOccurences();
this.processThis('afficher', selection, tousLesStyles);
};
/**
* Obtenir l'emprise de toutes les occurences de la couche
- * @method
+ * @method
* @name Couche.Vecteur#obtenirLimites
*/
- Vecteur.prototype.obtenirLimites = function() {
+ Vecteur.prototype.obtenirLimites = function() {
var limitesOL = this._layer.getDataExtent();
if(!limitesOL){return false};
var limites = new Limites(limitesOL.left, limitesOL.bottom, limitesOL.right, limitesOL.top);
return limites;
};
-
- /**
+
+ /**
* Zoomer sur l'emprise de toutes les occurences de la couche ou sur les occurences en paramètre
- * @method
+ * @method
* @name Couche.Vecteur#zoomerOccurences
* @param {Array} [occurences] Occurences sur lesquelles zoomer. Si absent, zoom sur toutes les occurences de la couche
*/
- Vecteur.prototype.zoomerOccurences = function(occurences, maxZoom) {
+ Vecteur.prototype.zoomerOccurences = function(occurences, maxZoom) {
if(!occurences){
var limitesOL = this._layer.getDataExtent();
if(!limitesOL){return false};
@@ -562,35 +562,35 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
this.carte.gestionCouches.zoomerOccurences(occurences, maxZoom);
};
- /**
+ /**
* Zoomer sur une occurence
- * @method
+ * @method
* @name Couche.Vecteur#zoomerOccurence
* @param {Occurence} occurence L'occurence sur laquelle zoomer.
*/
- Vecteur.prototype.zoomerOccurence = function(occurence, maxZoom) {
+ Vecteur.prototype.zoomerOccurence = function(occurence, maxZoom) {
this.carte.zoomer(occurence.obtenirLimites(), maxZoom);
-
- this.declencher({ type: "zoomerOccurence", occurence: occurence });
+
+ this.declencher({ type: "zoomerOccurence", occurence: occurence });
};
- /**
+ /**
* Obtenir les styles pour les occurences de la couche vecteur
- * @method
+ * @method
* @name Couche.Vecteur#obtenirStyles
* @returns {Tableau} Tableau de {@link Geometrie.Style}
*/
- Vecteur.prototype.obtenirStyles = function() {
+ Vecteur.prototype.obtenirStyles = function() {
return this.styles;
};
-
- /**
+
+ /**
* Changer les styles pour les occurences de la couche vecteur
- * @method
+ * @method
* @param {Tableau} styles Tableau de {@link Geometrie.Style}
* @name Couche.Vecteur#definirStyles
*/
- Vecteur.prototype.definirStyles = function(styles) {
+ Vecteur.prototype.definirStyles = function(styles) {
var that=this;
if (styles){
if (!styles.obtenirTypeClasse || styles.obtenirTypeClasse() !== 'Style'){
@@ -598,7 +598,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
$.each(styles, function(key, style){
if(!style.obtenirTypeClasse){
style = new Style(style);
- }
+ }
that.styles[key] = style.cloner();
that.styles[key].parent = that;
that.styles[key].regle = key;
@@ -631,38 +631,38 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
}
}
};
-
- /**
+
+ /**
* Obtenir le style par défaut ou lors de la sélection.
- * @method
+ * @method
* @name Couche.Vecteur#obtenirStyle
* @param {String} [regle='defaut'] Style à obtenir (defaut | select)
* @returns {Geometrie.Style} Occurence de {@link Geometrie.Style}
*/
- Vecteur.prototype.obtenirStyle = function(regle) {
+ Vecteur.prototype.obtenirStyle = function(regle) {
regle = regle || 'defaut';
return this.styles[regle];
};
-
- /**
+
+ /**
* Changer le style d'une règle pour les occurences de la couche vecteur
- * @method
+ * @method
* @param {Geometrie.Style} style Occurence de {@link Geometrie.Style}
* @param {String} [regle='defaut'] Style à obtenir (defaut | select)
* @name Couche.Vecteur#definirStyle
*/
- Vecteur.prototype.definirStyle = function(style, regle) {
+ Vecteur.prototype.definirStyle = function(style, regle) {
if (!regle){
regle = 'defaut';
};
-
+
if(!style.obtenirTypeClasse){
style = new Style(style);
}
this.styles[regle]=style.cloner();
this.styles[regle].parent=this;
this.styles[regle].regle=regle;
-
+
if (this.styles){
if (this._optionsOL.styleMap){
if(regle==='defaut'){
@@ -679,19 +679,19 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
} else {
this.definirStyles(this.styles);
}
- }
+ }
};
-
- /**
+
+ /**
* Redessiner les occurences de la couche
- * @method
+ * @method
* @name Couche.Vecteur#rafraichir
*/
- Vecteur.prototype.rafraichir = function(occurence) {
-
+ Vecteur.prototype.rafraichir = function(occurence) {
+
if(this.options.rafraichissementPermis){
if(!occurence){
- this._layer.redraw();
+ this._layer.redraw();
this.rafraichirLegende();
this.declencher({type: "vecteurRafraichi", vecteur:this, occurence: occurence});
return true;
@@ -700,18 +700,18 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
this.rafraichirLegende();
this.declencher({type: "vecteurRafraichi", vecteur:this, occurence: occurence});
return true;
- }
+ }
};
-
+
Vecteur.prototype.rafraichirLegende = function() {
if(this._layer.arborescence){
this._layer.arborescence.setRules();
this._layer.arborescence.update();
}
};
-
-
-
+
+
+
/**
* Obtenir l'ordre d'affichage de base de la couche
* @method
@@ -721,7 +721,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
Vecteur.prototype.obtenirOrdreAffichageBase = function() {
return this.carte._getCarte().Z_INDEX_BASE.Vecteur;
};
-
+
/**
* Enlever la couche
* @method
@@ -730,7 +730,7 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
*/
Vecteur.prototype.enlever = function(){
this.carte.gestionCouches.enleverCouche(this);
-
+
return true;
};
@@ -747,33 +747,20 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
$.each(that.listeOccurences, function(key, occurence){
that._layer.removeFeatures(occurence._feature);
if(!occurence._geomSimplifiee){
- occurence._geomSimplifiee = {};
+ occurence._geomSimplifiee = {};
}
if(!occurence._geomSimplifiee[zoom]){
occurence._geomSimplifiee[zoom] = occurence._obtenirGeomOL(that.carte._carteOL.getResolution()/2);
}
occurence._feature.geometry = occurence._geomSimplifiee[zoom];
that._layer.addFeatures(occurence._feature);
- });
+ });
});
}
};
-
+
Vecteur.Controles.prototype.activerDeplacement = function() {
this._.carte.controles.activerDeplacementVecteur(this._);
- /* if(opt.combinaisonClique){
- this._dragControl.handlers['drag'].stopDown = false;
- this._dragControl.handlers['drag'].stopUp = false;
- this._dragControl.handlers['drag'].stopClick = false;
- this._dragControl.handlers['feature'].stopDown = false;
- this._dragControl.handlers['feature'].stopUp = false;
- this._dragControl.handlers['feature'].stopClick = false;
- } else {
- this._dragControl.handlers['drag'].stopDown = true;
- this._dragControl.handlers['feature'].stopDown = true;
- this._dragControl.handlers['feature'].stopClick = true;
- };*/
-
};
Vecteur.Controles.prototype.activerEdition = function(options) {
@@ -800,65 +787,23 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
Vecteur.Controles.prototype.activerSelection = function(opt) { //ajouter? au lieu d'activer? separer en 2?
opt = opt || {};
if (!this._.options.selectionnable && !opt.force){return false};
- if(this._.obtenirDeclencheur('occurenceClique', null, this._selection).length){
- return false;
- }
- this._.ajouterDeclencheur('occurenceClique', this._selection, {scope: this});
-
- //todo: vérifier si selectionnable...ou force:
- /* opt = opt || {};
- if (!this._.options.selectionnable && !opt.force){return false};
-
- if (opt.local !== undefined && opt.local) {
- if (!this._selectControl) {
- this._selectControl = new OpenLayers.Control.SelectFeature(this._._layer, {onSelect: this._._.controles._selection, scope: this});
- this._.carte._getCarte().addControl(this._selectControl);
- };
- this._selectControl.activate();
- return true;
+ if(!this._.obtenirDeclencheur('occurenceClique', null, this._selection).length){
+ this._.ajouterDeclencheur('occurenceClique', this._selection, {scope: this});
}
-
- var selectControle = this._._.controles._selectControle;
- if (!selectControle) {
- selectControle = this._._.controles.initSelection();
- };
-
- if(selectControle.layers.lastIndexOf(this._._layer) === -1){
- selectControle.addLayer(this._._layer);
- }
-
- if(selectControle.active){
- selectControle.activate();
- } */
+ return true;
};
-
+
Vecteur.Controles.prototype.desactiverSelection = function() { //retirer
this._.enleverDeclencheur('occurenceClique', null, this._selection);
- /* opt = opt || {};
- if (!opt.local !== undefined && opt.local) {
- if (this._selectControl) {
- this._selectControl.deactivate();
- }
- return true;
- }
-
- var selectControle = this._._.controles._selectControle;
- if (selectControle && selectControle.active) {
- selectControle.deactivate();
- selectControle.layers.remove(this._._layer);
- if(selectControle.layers.length !== 0) {
- selectControle.activate();
- }
- }*/
};
-
+
Vecteur.Controles.prototype._selection = function(e) {
var that = e.options.scope;
- if (that._.obtenirId() !== e.occurence.vecteur.obtenirId()){return false};
+ if (that._.obtenirId() !== e.occurence.vecteur.obtenirId()){return false};
if(e.occurence.obtenirInteraction('selectionnable') === false){
return false;
}
- if (!Aide.obtenirNavigateur().obtenirCtrl()) {
+ if (!Aide.obtenirNavigateur().obtenirCtrl()) {
that._.carte.gestionCouches.deselectionnerToutesOccurences();
}
if(e.occurence.estSelectionnee()){
@@ -866,51 +811,8 @@ define(['couche', 'occurence', 'limites', 'style', 'aide'], function(Couche, Occ
} else {
e.occurence.vecteur.selectionnerOccurence(e.occurence);
}
- //that._.declencher({ type: "occurenceClique", occurence: e.occurence });
};
- /* Vecteur.Controles.prototype.activerClique = function() {
- this._.carte.ajouterDeclencheur('occurenceClique', this._clique, {scope: this});
- };
-
- Vecteur.Controles.prototype.desactiverClique = function() {
- this._.carte.enleverDeclencheur('occurenceClique', null, this._clique);
- };
-
- Vecteur.Controles.prototype._clique = function(e) {
- var that = e.options.scope;
- if (that._.obtenirId() !== e.occurence.vecteur.obtenirId()){return false};
- that._.declencher({ type: "occurenceClique", occurence: e.occurence });
- };
-
- Vecteur.Controles.prototype.activerMouseover = function() {
- this._.carte.ajouterDeclencheur('occurenceMouseover', this._mouseover, {scope: this});
- };
-
- Vecteur.Controles.prototype.desactiverMouseover = function() {
- this._.carte.enleverDeclencheur('occurenceMouseover', null, this._mouseover);
- };
-
- Vecteur.Controles.prototype._mouseover = function(e) {
- var that = e.options.scope;
- if (that._.obtenirId() !== e.occurence.vecteur.obtenirId()){return false};
- that._.declencher({ type: "occurenceMouseover", occurence: e.occurence });
- };
-
- Vecteur.Controles.prototype.activerMouseout = function() {
- this._.carte.ajouterDeclencheur('occurenceMouseout', this._mouseout, {scope: this});
- };
-
- Vecteur.Controles.prototype.desactiverMouseout = function() {
- this._.carte.enleverDeclencheur('occurenceMouseout', null, this._mouseout);
- };
-
- Vecteur.Controles.prototype._mouseout = function(e) {
- var that = e.options.scope;
- if (that._.obtenirId() !== e.occurence.vecteur.obtenirId()){return false};
- that._.declencher({ type: "occurenceMouseout", occurence: e.occurence });
- };*/
-
return Vecteur;
-
+
});
diff --git a/interfaces/navigateur/public/js/app/helper/aide.js b/interfaces/navigateur/public/js/app/helper/aide.js
index 98eb7a24..1863471b 100644
--- a/interfaces/navigateur/public/js/app/helper/aide.js
+++ b/interfaces/navigateur/public/js/app/helper/aide.js
@@ -658,7 +658,7 @@ define([], function() {
$divInfobulle.css({ 'top': options.y + 'px' });
} else {
// Éviter que l'infobulle s'affiche en dehors de l'écran
- var y = Math.round(this.obtenirNavigateur().carte.coordSouris.y) + this.obtenirNavigateur().obtenirPanneauxParType('PanneauCarte')[0]._panel.y - $divInfobulle.height();
+ var y = Math.round(this.obtenirNavigateur().carte.coordSouris.y) + this.obtenirNavigateur().obtenirPanneauxParType('PanneauCarte')[0]._panel.y - $divInfobulle.height() - 4;
if (this.obtenirNavigateur().obtenirBarreOutils()){
y += this.obtenirNavigateur().obtenirBarreOutils()._panelContainer.getTopToolbar().getHeight();
}
diff --git a/interfaces/navigateur/public/js/app/helper/contexte.js b/interfaces/navigateur/public/js/app/helper/contexte.js
index 3b11aa4b..8cc884fe 100644
--- a/interfaces/navigateur/public/js/app/helper/contexte.js
+++ b/interfaces/navigateur/public/js/app/helper/contexte.js
@@ -33,8 +33,7 @@ define(['aide', 'WMS'], function(Aide, WMS) {
return;
}
- // Chargement de chaque élément individuellement
-
+ // Chargement de chaque élément individuellement
if(contexte.center && contexte.center.length == 2 && contexte.zoomlevel && !this.options.ignorePosition){
this.carte.definirCentre(contexte.center);
this.carte.definirZoom(contexte.zoomlevel);
diff --git a/interfaces/navigateur/public/js/app/helper/fonctions.js b/interfaces/navigateur/public/js/app/helper/fonctions.js
index 4d075387..ba2f2bdf 100644
--- a/interfaces/navigateur/public/js/app/helper/fonctions.js
+++ b/interfaces/navigateur/public/js/app/helper/fonctions.js
@@ -64,6 +64,9 @@ define([], function() {
infoTemplate = {};
titre = defautTitre;
} else {
+ if(value[0].vecteur.options.estInterrogeable === false){
+ return true;
+ }
infoTemplate = value[0].vecteur.templates.info || {};
titre = value[0].vecteur.obtenirTitre();
}
@@ -232,10 +235,26 @@ define([], function() {
value.occurencesGeoJSON.alias = value.alias;
html = args[key](value.occurencesGeoJSON);
}
- oResultWindow.items.get(0).add({
+ var pan = oResultWindow.items.get(0);
+ if(pan.items.getCount() === 0){
+ pan.add({
title: value.titre,
html: html
});
+ }
+ else{ //Tri alphabétique des onglets
+ var newIndex = 0;
+ $.each(pan.items.items, function(index, tabPan){
+ if(value.titre > tabPan.title){
+ newIndex = index+1;
+ }
+ });
+
+ pan.insert(newIndex, {
+ title: value.titre,
+ html: html
+ });
+ }
});
oResultWindow.show();
@@ -289,6 +308,83 @@ define([], function() {
return mesure*metresParUniteDepart/metresParUniteConvertie;
};
+
+ Fonctions.obtenirPeriodeTemps = function(isoTimeString){
+
+ var timeExtentArray = isoTimeString.split("/");
+ var startDate = this.createDateFromIsoString(timeExtentArray[0]);
+ var endDate=null;
+ var allowIntervals=null;
+ var defautPrecision;
+ if(timeExtentArray.length>1){
+ endDate = this.createDateFromIsoString(timeExtentArray[1]);
+ allowIntervals = true;
+ if(timeExtentArray[2]){
+ switch (timeExtentArray[2][timeExtentArray[2].length-1]){
+ case 'S':
+ defautPrecision = 'seconde';
+ break;
+ case 'M':
+ defautPrecision = 'minute';
+ break;
+ case 'H':
+ defautPrecision = 'heure';
+ break;
+ case 'D':
+ defautPrecision = 'jour';
+ break;
+ case 'M':
+ defautPrecision = 'mois';
+ break;
+ case 'Y':
+ defautPrecision = 'annee';
+ break;
+ }
+ }
+ } else{
+ endDate = null;
+ allowIntervals = false;
+ }
+
+ if(!defautPrecision){
+ var strArray = timeExtentArray[0].split("-");
+ var heureArray;
+ switch(strArray.length){
+ case 1:
+ defautPrecision = 'annee';
+ break;
+ case 2:
+ defautPrecision = 'mois';
+ break;
+ case 3:
+ defautPrecision = 'jour';
+ if(strArray[2].split("T")[1]){
+ heureArray = strArray[2].split("T")[1].split(':');
+ }
+ break;
+ }
+ if(heureArray){
+ switch(heureArray.length){
+ case 1:
+ defautPrecision = 'heure';
+ break;
+ case 2:
+ defautPrecision = 'minute';
+ break;
+ case 3:
+ defautPrecision = 'seconde';
+ break;
+ }
+ }
+ }
+
+ return {min: startDate,
+ max: endDate,
+ allowIntervals: allowIntervals,
+ precision: defautPrecision};
+ };
+
+
Fonctions.obtenirMetresParUnite = function(unite){
var metres;
switch(unite) {
diff --git a/interfaces/navigateur/public/js/app/helper/metadonnee.js b/interfaces/navigateur/public/js/app/helper/metadonnee.js
index fb0dddeb..90adf3a7 100644
--- a/interfaces/navigateur/public/js/app/helper/metadonnee.js
+++ b/interfaces/navigateur/public/js/app/helper/metadonnee.js
@@ -29,7 +29,7 @@ define(['aide'], function(Aide) {
if(lienExt && Aide.toBoolean(lienExt) !== true){
lienExt = decodeURIComponent(lienExt).replace("{id}", nomClasse);
- lienExt = Aide.utiliserProxy(lienExt);
+ //lienExt = Aide.utiliserProxy(lienExt);
this.parse({responseText: ""});
return true;
}
diff --git a/interfaces/navigateur/public/js/app/menu/arborescence.js b/interfaces/navigateur/public/js/app/menu/arborescence.js
index 07c6fdc8..5325be95 100644
--- a/interfaces/navigateur/public/js/app/menu/arborescence.js
+++ b/interfaces/navigateur/public/js/app/menu/arborescence.js
@@ -61,6 +61,14 @@ define(['panneau', 'contexteMenuArborescence', 'layerTreeBuilderBuild'], functio
listeners: {
afterrender: function(e) {
that.callbackCreation();
+ },
+ afterlayout: function(){
+ //Si premier affichage, gérer l'affichage des niveau
+ if(this.premier === undefined)
+ {
+ that.gererAffichageNiveau();
+ this.premier = true;
+ }
}
}
});
@@ -107,7 +115,12 @@ define(['panneau', 'contexteMenuArborescence', 'layerTreeBuilderBuild'], functio
if(coucheSpan){
var caseInput = coucheSpan.parent().parent().find("input");
if(caseInput){
- caseInput.click();
+ if(caseInput[0].disabled){
+ caseInput.prop('checked', true);
+ couche.activer();
+ } else {
+ caseInput.click();
+ }
}
}
};
@@ -243,6 +256,17 @@ define(['panneau', 'contexteMenuArborescence', 'layerTreeBuilderBuild'], functio
Arborescence.prototype.fermerRecherche = function() {
this.window_recherche.hide();
};
+
+ /**
+ * Gérer l'affichage des niveaux selon les paramètres fournis dans les options
+ * @method
+ * @name Arborescence#gererAffichageNiveau
+ */
+ Arborescence.prototype.gererAffichageNiveau = function(){
+ //Option pour retirer le checkbox du niveau répertoire
+ if(this.options.retirerCheckboxPremNiveau == "true")
+ $("#tree_panneau").find(".x-tree-node-icon").not('.gx-tree-layer-icon').next(".x-tree-node-cb").remove();
+ };
return Arborescence;
diff --git a/interfaces/navigateur/public/js/app/menu/googleStreetView.js b/interfaces/navigateur/public/js/app/menu/googleStreetView.js
index 168ab95c..03d78db0 100644
--- a/interfaces/navigateur/public/js/app/menu/googleStreetView.js
+++ b/interfaces/navigateur/public/js/app/menu/googleStreetView.js
@@ -1,4 +1,4 @@
-define(['panneau'], function(Panneau) {
+define(['panneau','vecteur','aide','point','style','occurence'], function(Panneau,Vecteur,Aide,Point,Style,Occurence) {
function GoogleStreetView(options){
this.options = options || {};
};
@@ -31,10 +31,8 @@ define(['panneau'], function(Panneau) {
GoogleStreetView.prototype.ol_streetview = function(){
//on va récupérer les derniers points de l'usager user...
- var streetview = 'http://maps.google.com/maps?q=&layer=c&cbll='+Y_lieu_iti1+','+X_lieu_iti1+'&cbp=11,0,0,0,0';
-
- oClickCtrl.deactivate();
- activateNavigationControl();
+ var streetview = 'http://maps.google.com/maps?q=&layer=c&cbll='+this.marqueurs.depart.obtenirCentroide().projeter("EPSG:4326").y +
+ ','+this.marqueurs.depart.obtenirCentroide().projeter("EPSG:4326").x+'&cbp=11,0,0,0,0';
Ext.Msg.alert("Fonction Google Street View.",
"**ATTENTION** Cette vue provient de Google Street View, donc il n'utilise pas les données gouvernementales. Cette fonction est fournie en support, doit être utilisée avec précaution et n'est pas un outil officiel en mesures d'urgence du MSP.");
@@ -43,6 +41,7 @@ define(['panneau'], function(Panneau) {
};
GoogleStreetView.prototype.getContentPanel = function() {
+ var that = this;
return new Ext.FormPanel({
labelWidth: 100,
frame:true,
@@ -77,7 +76,13 @@ define(['panneau'], function(Panneau) {
marginBottom: '5px'
},
handler: function(){
- ol_ajouterlieu1();
+ if(that.marqueurs){
+ that.marqueurs.supprimerTout();
+ that.marqueurs.activerControles();
+ }else{
+ that.marqueurs = new GoogleStreetView.Marqueurs(that);
+ }
+
}
}, {
text: "LANCER StreetView",
@@ -88,14 +93,124 @@ define(['panneau'], function(Panneau) {
marginBottom: '5px'
},
handler: function(){
- this.ol_streetview();
- oClickCtrl.deactivate();
+ that.ol_streetview();
}
}
]
});
};
+ //=====================================================================//
+
+ GoogleStreetView.Marqueurs = function(_) {
+ this._ = _;
+ this.depart;
+ this.iPixels = 0;
+ this.vecteur = new Vecteur({titre: 'marqueursGoogleStreetView', active: true, visible:false, selectionnable: false});
+ this._.carte.gestionCouches.ajouterCouche(this.vecteur);
+ this.initEvent();
+ };
+
+ //
+ GoogleStreetView.Marqueurs.prototype.initEvent = function() {
+ this.initCliqueMarqueurs();
+ this.initDeplacementMarqueurs();
+ this.activerControles();
+ };
+
+ GoogleStreetView.Marqueurs.prototype.activerControles = function() {
+
+ this._.carte.ajouterDeclencheur('clique', this.cliqueCarte, {scope: this});
+ this._.carte.controles.activerClique();
+ this.vecteur.controles.activerDeplacement({combinaisonClique: true});
+ };
+
+ GoogleStreetView.Marqueurs.prototype.desactiverControles = function() {
+ this._.carte.enleverDeclencheur('clique', null, this.cliqueCarte);
+ };
+
+ //
+ GoogleStreetView.Marqueurs.prototype.initCliqueMarqueurs = function() {
+ this.vecteur.ajouterDeclencheur('occurenceClique', this.marqueursClique, {scope: this});
+ };
+
+ //
+ GoogleStreetView.Marqueurs.prototype.initDeplacementMarqueurs = function() {
+ this.vecteur.controles.activerDeplacement();
+ this.vecteur.ajouterDeclencheur('finDeplacementOccurence', this.finDeplacementMarqueurs, {scope: this});
+ };
+
+ GoogleStreetView.Marqueurs.prototype.obtenirIcone = function(type) {
+ return Aide.utiliserBaseUri("images/marqueur/marker-green.png");
+ };
+
+ //todo: objet en parametre
+ GoogleStreetView.Marqueurs.prototype.ajouter = function(x, y, type, origine, titre) {
+ var icon = this.obtenirIcone(type);
+
+ var point = new Point(x, y);
+ var propriete = {type: type, origine: origine};
+ var style = new Style({icone: icon, iconeLargeur: 20, iconeHauteur: 34, iconeOffsetY: -34});
+
+ var occurence = new Occurence(point, propriete, style);
+ this.vecteur.ajouterOccurence(occurence);
+
+ if(titre){
+ occurence.definirPropriete('titre', titre);
+ };
+
+ this.depart = occurence;
+
+ this.desactiverControles();
+ return occurence;
+ };
+
+ //
+ GoogleStreetView.Marqueurs.prototype.cliqueCarte = function(e) {
+ var that = e.options.scope;
+ var feature = that.ajouter(e.point.x, e.point.y, 'depart');
+ };
+
+ GoogleStreetView.Marqueurs.prototype.marqueursClique = function(e) {
+ var occurence = e.occurence;
+ var that = e.options.scope;
+
+ that.vecteur.controles.desactiverDeplacement();
+ var type = occurence.obtenirPropriete('type');
+ that.supprimerOccurences(occurence);
+ that.vecteur.controles.activerDeplacement({combinaisonClique: true});
+ };
+
+ GoogleStreetView.Marqueurs.prototype.supprimerOccurences = function(occurences) {
+ var that=this;
+ if(!$.isArray(occurences)){occurences = [occurences];};
+
+ $.each(occurences, function(key, value) {
+ that.vecteur.enleverOccurence(value);
+ var type = value.obtenirPropriete('type');
+ if (type === 'depart'){
+ that.depart = null;
+ } else if (type === 'arrivee'){
+ that.arrivee = null;
+ } else {
+ that.intermediaires.remove(value);
+ };
+ });
+ };
+
+ GoogleStreetView.Marqueurs.prototype.finDeplacementMarqueurs = function(e) {
+ var that = e.options.scope;
+ that.depart = e.occurence;
+ };
+
+ //
+ GoogleStreetView.Marqueurs.prototype.supprimerTout = function() {
+ this.vecteur.enleverTout();
+ this.depart = null;
+ this.arrivee = null;
+ this.intermediaires = [];
+ };
+
return GoogleStreetView;
});
\ No newline at end of file
diff --git a/interfaces/navigateur/public/js/app/menu/itineraire.js b/interfaces/navigateur/public/js/app/menu/itineraire.js
index 5b2b88a5..28b413c0 100644
--- a/interfaces/navigateur/public/js/app/menu/itineraire.js
+++ b/interfaces/navigateur/public/js/app/menu/itineraire.js
@@ -1,4 +1,4 @@
-/**
+/**
* Module pour l'objet {@link Panneau.Itineraire}.
* @module itineraire
* @author Marc-André Barbeau, MSP
@@ -13,10 +13,10 @@ require.ajouterConfig({
autocomplete: 'libs/jquery/extensions/autocomplete/jquery.autocomplete.min'
}
});
-
-define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence', 'style', 'outilItineraire', "hbars!template/itineraire", "css!css/itineraire", "css!css/autocomplete", 'autocomplete', 'encodedPolyline'], function(Aide, Panneau, Vecteur, Point, Ligne, Limites, Occurence, Style, OutilItineraire, Template) {
- /**
+
+define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence', 'style', 'outilItineraire', 'analyseurGeoJSON', "hbars!template/itineraire", "css!css/itineraire", "css!css/autocomplete", 'autocomplete', 'encodedPolyline'], function(Aide, Panneau, Vecteur, Point, Ligne, Limites, Occurence, Style, OutilItineraire, AnalyseurGeoJSON, Template) {
+ /**
* Création de l'object Panneau.Itineraire.
* Objet à ajouter à un panneauMenu.
* @constructor
@@ -48,19 +48,19 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
})
}];
Panneau.prototype._init.call(this);
-
+
var that=this;
var initVecteurs = function(){
that._panel.removeListener('expand',initVecteurs);
that.initVecteurs();
};
- this._panel.on("expand", initVecteurs);
-
+ this._panel.on("expand", initVecteurs);
+
};
-
-
- Itineraire.prototype.initVecteurs = function() {
+
+
+ Itineraire.prototype.initVecteurs = function() {
this.proj4326 = "EPSG:4326";
this.projCarte = this.carte.obtenirProjection();
@@ -68,7 +68,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
this.trajet = new Itineraire.Trajet(this);
this.marqueurs = new Itineraire.Marqueurs(this);
this.instructions = new Itineraire.Instructions(this);
- this.resultatLocalisation = new Itineraire.ResultatLocalisation(this);
+ this.resultatLocalisation = new Itineraire.ResultatLocalisation(this);
};
@@ -82,9 +82,9 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
resume: $('#resume'),
alternatifTitre: $('#resume h2'),
descriptionBody: $('#myTable tbody')
- };
+ };
};
-
+
Itineraire.Instructions.prototype.supprimerResume = function(keepAlternativeSwitch) {
$('#resume table tbody').empty();
@@ -93,7 +93,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
$('#resume h2 .button').remove();
}
};
-
+
Itineraire.Instructions.prototype.afficherResultatItineraire = function() {
$('#itineraire').show();
};
@@ -101,7 +101,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Instructions.prototype.cacherResultatItineraire = function() {
$('#itineraire').hide();
};
-
+
Itineraire.Instructions.prototype.formaterDistance = function(rDistance) {
if (rDistance == 0) {
return 'None';
@@ -136,12 +136,12 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
return rDuree + ' s';
};
- Itineraire.Instructions.prototype.afficherResume = function(resume, keepAlternativeSwitch) {
+ Itineraire.Instructions.prototype.afficherResume = function(resume, waypoints, keepAlternativeSwitch) {
this.supprimerResume(keepAlternativeSwitch);
- var rDistance = resume.total_distance;
- var rDuree = resume.total_time;
- var rDepart = resume.start_point;
- var rArrivee = resume.end_point;
+ var rDistance = resume.distance;
+ var rDuree = resume.duration;
+ var rDepart = waypoints[0].name;
+ var rArrivee = waypoints[waypoints.length-1].name;
if (rDepart == '') {
rDepart = 'Route inconnue';
}
@@ -156,163 +156,181 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
$('#depart input').val(rDepart); //todo: dans recherche
$('#arrive input').val(rArrivee); //todo: dans recherche
-
+
$('#resume table tbody').append('Distance: | ' + rDistance + ' | | Durée: | ' + rDuree + ' | |
');
-
+
if (this._.marqueurs.depart) {
this._.marqueurs.depart.definirPropriete('titre', rDepart);
};
-
+
if (this._.marqueurs.arrivee) {
this._.marqueurs.arrivee.definirPropriete('titre', rArrivee);
};
};
Itineraire.Instructions.prototype.formaterDirection = function(direction) {
- if (direction == 'W') {
- return 'ouest';
- } else if (direction == 'E') {
- return 'est';
- } else if (direction == 'S') {
- return 'sud';
- } else if (direction == 'N') {
+ if (direction >= 337 || direction < 23) {
return 'nord';
- } else if (direction == 'NE') {
+ } else if (direction < 67) {
return 'nord-est';
- } else if (direction == 'NW') {
- return 'nord-west';
- } else if (direction == 'SE') {
+ } else if (direction < 113) {
+ return 'est';
+ } else if (direction < 157) {
return 'sud-est';
- } else if (direction == 'SW') {
+ } else if (direction < 203) {
+ return 'sud';
+ } else if (direction < 247) {
return 'sud-ouest';
+ } else if (direction < 293) {
+ return 'ouest';
+ } else if (direction < 337) {
+ return 'nord-ouest';
} else {
- return 'None';
- };
+ return 'None' ;
+ }
};
- Itineraire.Instructions.prototype.formaterInstruction = function(instruction, route, direction) {
- if (direction == 'W') {
- return 'ouest';
- } else if (direction == 'E') {
- return 'est';
- } else if (direction == 'S') {
- return 'sud';
- } else if (direction == 'N') {
- return 'nord';
- } else if (direction == 'NE') {
- return 'nord-est';
- } else if (direction == 'NW') {
- return 'nord-west';
- } else if (direction == 'SE') {
- return 'sud-est';
- } else if (direction == 'SW') {
- return 'sud-ouest';
+ Itineraire.Instructions.prototype.formaterModifier = function(modifier) {
+ if (modifier === "uturn") {
+ return 'demi-tour';
+ } else if (modifier === "sharp right") {
+ return 'fortement à droite';
+ } else if (modifier === "right") {
+ return 'à droite';
+ } else if (modifier === "slight right") {
+ return 'légèrement à droite';
+ } else if (modifier === "sharp left") {
+ return 'fortement à gauche';
+ } else if (modifier === "left") {
+ return 'à gauche';
+ } else if (modifier === "slight left") {
+ return 'légèrement à gauche';
+ } else if (modifier === "straight") {
+ return 'tout droit';
} else {
- return 'None';
- };
+ return modifier ;
+ }
};
- Itineraire.Instructions.prototype.formaterInstruction = function(noInstruction, route, direction) {
+
+ Itineraire.Instructions.prototype.formaterInstruction = function(type, modifier, route, direction, position, last) {
var directive = 'None';
var image;
- if (noInstruction == 0) {
- directive = 'None'; //Pas d'instruction
- } else if (noInstruction == 1) {
- directive = 'Continuez';
- image = 'continue.png';
- } else if (noInstruction == 2) {
- directive = 'Tournez légèrement à droite';
- image = 'slight-right.png';
- } else if (noInstruction == 3) {
- directive = 'Tournez à droite';
- image = 'turn-right.png';
- } else if (noInstruction == 4) {
- directive = 'Tournez fortement à droite';
- image = 'sharp-right.png';
- } else if (noInstruction == 5) {
- directive = 'Faites demi-tour';
+
+ if (modifier === "demi-tour") {
image = 'u-turn.png';
- } else if (noInstruction == 6) {
- directive = 'Tournez légèrement à gauche';
- image = 'slight-left.png';
- } else if (noInstruction == 7) {
- directive = 'Tournez à gauche';
- image = 'turn-left.png';
- } else if (noInstruction == 8) {
- directive = 'Tournez fortement à gauche';
+ } else if (modifier === "fortement à droite") {
+ image = 'sharp-right.png';
+ } else if (modifier === "à droite") {
+ image = 'turn-right.png';
+ } else if (modifier === "légèrement à droite") {
+ image = 'slight-right.png';
+ } else if (modifier === "fortement à gauche") {
image = 'sharp-left.png';
- } else if (noInstruction == 9) {
- directive = 'Atteignez le point intermédiare';
- image = 'target.png';
- } else if (noInstruction == 10) {
- directive = 'Direction ' + direction;
+ } else if (modifier === "à gauche") {
+ image = 'turn-left.png';
+ } else if (modifier === "légèrement à gauche") {
+ image = 'slight-left.png';
+ } else if (modifier === "tout droit") {
+ image = 'continue.png';
+ }
+
+ if (type === 'turn') {
+ if (modifier === "tout droit") {
+ directive = 'Continuer sur ' + route;
+ } else if (modifier === "demi-tour") {
+ directive = 'Faire demi-tour sur ' + route;
+ } else {
+ directive = 'Tourner ' + modifier + " sur " + route;
+ }
+ } else if (type === 'new name') {
+ directive = 'Continuer sur ' + route;
+ image = 'continue.png';
+ } else if (type === 'depart') {
+ if(position == 0 ) {
+ directive = 'Aller en direction ' + direction + " sur " + route;
+ }
image = 'head.png';
- } else if (noInstruction == 11) {
- directive = 'Entrez dans le rond-point';
- image = 'round-about.png';
- } else if (noInstruction == "11-1") {
- directive = 'Au rond-point, prenez la première sortie';
- image = 'round-about.png';
- } else if (noInstruction == "11-2") {
- directive = 'Au rond-point, prenez la deuxième sortie';
- image = 'round-about.png';
- } else if (noInstruction == "11-3") {
- directive = 'Au rond-point, prenez la troisième sortie';
- image = 'round-about.png';
- } else if (noInstruction == "11-4") {
- directive = 'Au rond-point, prenez la quatrième sortie';
- image = 'round-about.png';
- } else if (noInstruction == "11-5") {
- directive = 'Au rond-point, prenez la cinquième sortie';
+ } else if (type === 'arrive') {
+ if (last) {
+ directive = 'Vous êtes arrivé';
+ } else {
+ directive = 'Atteignez le point intermédiare sur ' + route;
+ }
+ image = 'target.png';
+ } else if (type === 'merge') {
+ directive = 'Continuer sur ' + route;
+ image = 'continue.png';
+ } else if (type === 'on ramp') {
+ directive = 'Prendre l\'entrée d\'autoroute ' + modifier;
+ } else if (type === 'off ramp') {
+ directive = 'Prendre la sortie d\'autoroute';
+ if (modifier.search("gauche") >= 0) {
+ directive = directive + " à gauche";
+ } else if (modifier.search("droite") >= 0) {
+ directive = directive + " à droite";
+ }
+ } else if (type === 'fork') {
+ if (modifier.search("gauche") >= 0) {
+ directive = "Garder la gauche sur " + route;
+ } else if (modifier.search("droite") >= 0) {
+ directive = "Garder la droite sur " + route;
+ } else {
+ directive = "Continuer sur " + route;
+ }
+ } else if (type === 'end of road') {
+ directive = 'À la fin de la route, tourner ' + modifier + " sur " + route;
+ } else if (type === 'use lane') {
+ directive = 'Prendre la voie de ... ';
+ } else if (type === 'continue') {
+ directive = 'Continuer sur ' + route;
+ image = 'continue.png';
+ } else if (type === 'roundabout') {
+ directive = 'Rond-point....';
image = 'round-about.png';
- } else if (noInstruction == "11-6") {
- directive = 'Au rond-point, prenez la sixième sortie';
+ } else if (type === 'rotary') {
+ directive = 'Rond-point rotary....';
image = 'round-about.png';
- } else if (noInstruction == 12) {
- directive = 'Quittez le rond-point';
+ } else if (type === 'roundabout turn') {
+ directive = 'Rond-point, prendre la ...';
image = 'round-about.png';
- } else if (noInstruction == 13) {
- directive = 'None'; //Rester dans le rond-point;
- } else if (noInstruction == 14) {
- directive = 'Commencez au bout de la rue';
- image = 'head.png';
- } else if (noInstruction == 15) {
- directive = 'Vous êtes arrivé';
- image = 'target.png';
- } else if (noInstruction == 16) {
- directive = 'Entrez dans le sens interdit';
- } else if (noInstruction == 17) {
- directive = 'Entrez le sens interdit';
- } else if (noInstruction == 128) {
- directive = 'Accès restreint';
+ } else if (type === 'notification') {
+ directive = 'notification ....';
} else {
- directive = 'None';
- };
+ directive = '???';
+ }
+
+ // directive = directive + "
" +type+ " - " + modifier + " - " + direction + " - " + route;
+
- if ((route != '') && (directive != 'None' || noInstruction != 15)) {
- directive = directive + ' sur ' + route;
- };
-
if (image){
image = Aide.utiliserBaseUri('images/itineraire/'+image);
}
return {instruction: directive, image: image};
};
-
+
Itineraire.Instructions.prototype.afficherInstructions = function(instructions, route) {
var that = this;
- $.each(instructions, function(key, value) {
- var noInstruction = value[0];
- var distance = that.formaterDistance(value[2]);
- var direction = that.formaterDirection(value[6]);
- var instructions = that.formaterInstruction(noInstruction, value[1], direction);
+ var steps = [];
+ $.each(instructions.legs, function(key, value) {
+ steps = steps.concat(value.steps);
+ });
+ var nbSteps = steps.length;
+ $.each(steps, function(key, value) {
+ var noInstruction = value.maneuver.type;
+ var typeInstruction = value.maneuver.type;
+ var modifier = that.formaterModifier(value.maneuver.modifier);
+ var distance = that.formaterDistance(value.distance);
+ var direction = that.formaterDirection(value.maneuver.bearing_after);
+ var instructions = that.formaterInstruction(typeInstruction, modifier, value.name, direction, key, key+1 == nbSteps);
var instructionText = instructions.instruction;
var instructionImage = instructions.image;
- var x = route.geometry.components[value[3]].x;
- var y = route.geometry.components[value[3]].y;
+ var point = new Point(value.maneuver.location[0], value.maneuver.location[1], 'EPSG:4326').projeter(that._.carte.obtenirProjection());
+ var x = point.x;
+ var y = point.y;
var tr = document.createElement('tr');
var $tr = $(tr);
@@ -321,7 +339,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
if ((noInstruction == 15) || (noInstruction == 10)) {
$tr.data("estMarqueurs", true);
}
- ;
+
if (instructionText != 'None') {
var imageDiv = '';
@@ -363,7 +381,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
var that = e.data;
that._.marqueurs.supprimerParOrigine('instructionMouseover');
};
-
+
Itineraire.Instructions.prototype.instructionClick = function(e) {
var that = e.data;
var $instruction = $(e.target).parent();
@@ -375,9 +393,9 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
if (!estMarqueurs) {
that._.marqueurs.supprimerParType(type);
that._.marqueurs.ajouter(x, y, type); //todo: titre?
- };
-
- var point = new Point(x,y);
+ }
+
+ var point = new Point(x,y);
that._.carte.definirCentre(point);
that._.carte.definirZoom(14);
};
@@ -390,18 +408,18 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
var route_summary, route_name, route_instructions;
if (alternatif) {
- route_summary = json.alternative_summaries[0];
- route_name = json.alternative_names[0];
- route_instructions = json.alternative_instructions[0];
+ route_summary = json.routes[1];
+ route_name = json.routes[1];
+ route_instructions = json.routes[1];
} else {
- route_summary = json.route_summary;
- route_name = json.route_name;
- route_instructions = json.route_instructions;
+ route_summary = json.routes[0];
+ route_name = json.routes[0];
+ route_instructions = json.routes[0];
};
- this.afficherResume(route_summary, keepAlternativeSwitch);
+ this.afficherResume(route_summary, json.waypoints, keepAlternativeSwitch);
this.afficherVia(route_name);
- if (!keepAlternativeSwitch && json.found_alternative) {
+ if (!keepAlternativeSwitch && json.routes[1]) {
this.afficherItineraireAlternatifSwitch();
}
this.afficherInstructions(route_instructions, route);
@@ -442,12 +460,12 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
this.$.alternatifTitre.find('div').mouseover(this, this.changerItineraireMouseOver);
this.$.alternatifTitre.find('div').mouseout(this, this.changerItineraireMouseOut);
};
-
+
Itineraire.Instructions.prototype.changerItineraireClique = function(e) {
if (e.target.classList[1] === "button-pressed") {
return true;
};
-
+
var that = (e ? e.data : this);
var cible = e.target.textContent;
var pressed = that.$.resume.find('.button-pressed');
@@ -460,10 +478,10 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
that._.marqueurs.supprimerParType('instruction');
if (cible === "B") {
- var route = that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.alternative_geometries[0]);
+ var route = that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.routes[1].geometry);
that.afficherItineraireDescription(that.jsonReponseItineraire, route, true, true);
} else {
- var route = that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.route_geometry);
+ var route = that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.routes[0].geometry);
that.afficherItineraireDescription(that.jsonReponseItineraire, route, true);
}
};
@@ -472,32 +490,32 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
if (e.target.classList[1] === "button-pressed") {
return true;
};
-
+
var that = (e ? e.data : this);
var cible = e.target.textContent;
if (cible === "B") {
- var route = that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.alternative_geometries[0]);
+ that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.routes[1].geometry);
} else {
- var route = that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.route_geometry);
+ that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.routes[0].geometry);
}
};
-
+
Itineraire.Instructions.prototype.changerItineraireMouseOut = function(e) {
if (e.target.classList[1] === "button-pressed") {
return true;
};
-
+
var that = (e ? e.data : this);
var cible = e.target.textContent;
if (cible === "A") {
- var route = that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.alternative_geometries[0]);
+ that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.routes[1].geometry);
} else {
- var route = that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.route_geometry);
+ that._.trajet.afficherItineraireCarte(that.jsonReponseItineraire.routes[0].geometry);
}
};
-
+
//=====================================================================
//
@@ -511,28 +529,42 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
this._.carte.gestionCouches.ajouterCouche(this.vecteur);
this.initEvent();
};
-
+
//
- Itineraire.Marqueurs.prototype.initEvent = function() {
+ Itineraire.Marqueurs.prototype.initEvent = function() {
this.initCliqueCarte();
this.initCliqueMarqueurs();
+ this.initSurvolMarqueurs();
this.initDeplacementMarqueurs();
+
};
- //
+ Itineraire.Marqueurs.prototype.initSurvolMarqueurs = function() {
+ if(this._.options.infobulleSurvol){
+ this.vecteur.ajouterDeclencheur('occurenceSurvol', function(e){
+ e.occurence.ouvrirInfobulle({html:e.occurence.proprietes.titre, aFermerBouton: false});
+ },
+ {scope: this});
+ this.vecteur.ajouterDeclencheur('occurenceSurvolFin', function(e){
+ e.occurence.fermerInfobulle();
+ },
+ {scope: this});
+ }
+ }
+
Itineraire.Marqueurs.prototype.initCliqueCarte = function() {
var that=this;
-
+
//this._.carte.ajouterDeclencheur('clique', this.cliqueCarte, {scope: this});
//this.activerControles();
this.outilItineraire = new OutilItineraire({panneauItineraire: this});
var barreOutils = Aide.obtenirNavigateur().barreOutils;
barreOutils.ajouterOutil(this.outilItineraire);
this.outilItineraire.enfoncer();
-
+
this._._panel.on("expand", function(){
that.outilItineraire.enfoncer();
- });
+ });
this._._panel.on("collapse", function(){
that.outilItineraire.relever();
});
@@ -540,7 +572,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Marqueurs.prototype.activerControles = function() {
//Igo.nav.barreOutils._mapContainer.topToolbar.disable();
- //this._.carte.controles.activerDeplacement();
+ //this._.carte.controles.activerDeplacement();
this._.carte.ajouterDeclencheur('clique', this.cliqueCarte, {scope: this});
this._.carte.controles.activerClique();
//this.vecteur.controles.activerClique();
@@ -559,7 +591,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Marqueurs.prototype.initCliqueMarqueurs = function() {
this.vecteur.ajouterDeclencheur('occurenceClique', this.marqueursClique, {scope: this});
};
-
+
//
Itineraire.Marqueurs.prototype.initDeplacementMarqueurs = function() {
//this.vecteur.controles.activerDeplacement({combinaisonClique: true});
@@ -586,14 +618,14 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
var point = new Point(x, y);
var propriete = {type: type, origine: origine};
var style = new Style({icone: icon, iconeLargeur: 20, iconeHauteur: 34, iconeOffsetY: -34});
-
+
var occurence = new Occurence(point, propriete, style);
this.vecteur.ajouterOccurence(occurence);
if(titre){
occurence.definirPropriete('titre', titre);
};
-
+
if(!origine){ //mettre un origine?
if(type == 'arrivee'){
this.arrivee = occurence;
@@ -603,7 +635,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
this.intermediaires.push(occurence);
};
};
-
+
return occurence;
};
@@ -646,7 +678,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Marqueurs.prototype.marqueursClique = function(e) {
var occurence = e.occurence;
var that = e.options.scope;
-
+
that.vecteur.controles.desactiverDeplacement();
//todo controlethat.vecteur.controles.desactiverSelection();
var type = occurence.obtenirPropriete('type');
@@ -661,7 +693,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Marqueurs.prototype.supprimerOccurences = function(occurences) {
var that=this;
if(!$.isArray(occurences)){occurences = [occurences];};
-
+
$.each(occurences, function(key, value) {
that.vecteur.enleverOccurence(value);
var type = value.obtenirPropriete('type');
@@ -674,12 +706,13 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
};
});
};
-
- Itineraire.Marqueurs.prototype.snapMarkers = function() { //todo: snapTrajet
+
+ Itineraire.Marqueurs.prototype.snapMarkers = function() { //todo: snapTrajet
var that = this;
var route = this._.trajet.vecteur.obtenirOccurences()[0];
if (route) {
+ this.desactiverControles();
if (this.depart) {
var pDepart = route.points[0];
this.depart.deplacer(pDepart);
@@ -688,7 +721,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
var pFin = route.points[route.points.length-1];
this.arrivee.deplacer(pFin);
};
-
+
$.each(this.intermediaires, function(key, value) {
var dist = -1;
var nearestPoint;
@@ -701,9 +734,10 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
});
value.deplacer(nearestPoint);
});
+ this.activerControles();
}
};
-
+
Itineraire.Marqueurs.prototype.debutDeplacementMarqueurs = function(e) {
var that = e.options.scope;
@@ -713,7 +747,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
$('#myTable tbody').text('Votre itinéraire est en cours de calcul');
var occurence = e.occurence;
-
+
if (occurence.obtenirPropriete('type') !== 'instruction') {
that.supprimerParType('instruction');
return true;
@@ -732,7 +766,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
}
});
};
-
+
occurence = that.changerTypeMarqueurs(occurence, 'intermediaire');
var lengthIKey = Object.keys(iKey).length;
occurence.definirPropriete('ordre', lengthIKey + 1);
@@ -745,14 +779,14 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Marqueurs.prototype.deplacementMarqueurs = function(e) {
var that = e.options.scope;
-
- if (that.iPixels == 10) {
+
+ if (that.iPixels == 10) {
if (that.depart && that.arrivee) {
var points = [];
points.push(that.depart);
var points = points.concat(that.intermediaires);
points.push(that.arrivee);
-
+
that._.trajet.trouverItineraire(points, true);
} else {
var input = $('#depart input');
@@ -784,12 +818,12 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
}
that._.formulaire.geocodageInverse(e.occurence, e.occurence, input);
}
-
+
//todo? fait planter le prochain select...
//that._.carte._carteOL.setLayerZIndex(that.vecteur._layer, that._.carte._carteOL.Z_INDEX_BASE["Feature"] + 10);
};
-
+
//
Itineraire.Marqueurs.prototype.supprimerTout = function() {
this.vecteur.enleverTout();
@@ -846,7 +880,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
};
});
};
-
+
//=====================================================================
Itineraire.Trajet = function(_) {
@@ -862,8 +896,8 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
'limiteCouleur': '#000000',
'limiteOpacite': '0.8'
})
- };
- this.vecteur = new Vecteur({titre:'trajetItineraire', styles: styles, active: true, visible:false, selectionnable: false});
+ };
+ this.vecteur = new Vecteur({titre:'trajetItineraire', styles: styles, active: true, visible:false, selectionnable: false});
this._.carte.gestionCouches.ajouterCouche(this.vecteur);
this.ecouterEvenements();
};
@@ -872,12 +906,15 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Trajet.prototype.supprimer = function() {
this.vecteur.enleverTout();
};
-
+
Itineraire.Trajet.prototype.ecouterEvenements = function(){
- this._.carte.ajouterDeclencheur('zoomEnd', this.zoomEndEvent, {scope: this});
+ // this._.carte.ajouterDeclencheur('zoomEnd', this.zoomEndEvent, {scope: this});
};
Itineraire.Trajet.prototype.zoomEndEvent = function(){
+ if(!this._.marqueurs){
+ return false;
+ }
var depart = this._.marqueurs.depart;
var arrivee = this._.marqueurs.arrivee;
var intermediaires = this._.marqueurs.intermediaires;
@@ -892,13 +929,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Trajet.prototype.afficherItineraireCarte = function(geometryEncoded) { //todo ajouter
var route = this.formaterRouteGeometrie(geometryEncoded);
-
- while(isNaN(route.geometry.components[route.geometry.components.length-1].x)){
- route.geometry.components.pop();
- };
-
- var routeIGO = new Ligne(route.geometry.components); //todo new Ligne
- this.vecteur.creerOccurence(routeIGO);
+ this.vecteur.ajouterOccurence(route);
this.supprimerAncienTrajet();
return route;
};
@@ -909,36 +940,37 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
var loc = "";
$.each(points, function(key, value) {
var p = value.projeter(that._.projCarte, that._.proj4326);
+ if (loc) {
+ loc = loc + ';';
+ }
if (p.x) {
- //loc = loc + '&loc[]=' + p.y + ',' + p.x;
- loc = loc + '&loc=' + p.y + ',' + p.x;
+ loc = loc + p.x + ',' + p.y;
} else {
- //loc = loc + '&loc[]=' + p.lat + ',' + p.lon;
- loc = loc + '&loc=' + p.lat + ',' + p.lon;
+ loc = loc + p.lon + ',' + p.lat;
}
- ;
});
- var url;
+ var url = this._.options.service;
var graph = $('#rechercheType select').val(); //todo $variable
-
+ if (graph !== 'voiture') {
+ url += '/' + graph;
+ }
+
if (sansInstructions) {
- url = this._.options.service + "?graph=" + graph + "?output=json&compression=true&z=" + this._.carte.obtenirZoom() + loc;
+ url += "/route/v1/driving/" + loc + "?overview=full&alternatives=true&steps=false&geometries=geojson";
} else {
- url = this._.options.service + "?graph=" + graph + "?output=json&compression=true&instructions=true&z=" + this._.carte.obtenirZoom() + loc;
+ url += "/route/v1/driving/" + loc + "?overview=full&annotations=true&alternatives=true&steps=true&geometries=geojson";
};
if (!sansInstructions || this.ajaxItineraireComplete != false) {
this.ajaxItineraireComplete = false;
$.ajax({
- dataType: 'jsonp',
- //url: Aide.utiliserProxy(url),
+ dataType: 'json',
url: url,
- jsonp: "jsonp",
cache : true,
- //crossDomain: true, //utilisation du proxy
context: this,
success: function(response) {
+ console.log(response);
that.trouverItineraireSuccess(response, sansInstructions, sansModifierInstructions);
},
complete: function() {
@@ -956,15 +988,16 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
return false;
}
var route;
- if(sansModifierInstructions && response.found_alternative){
- this.afficherItineraireCarte(response.alternative_geometries);
+ if(sansModifierInstructions && response.routes.length > 1){
+ // alternative route
+ this.afficherItineraireCarte(response.routes[1].geometry);
return true;
} else {
- route = this.afficherItineraireCarte(response.route_geometry);
+ route = this.afficherItineraireCarte(response.routes[0].geometry);
}
if (sansInstructions) {
- this._.instructions.afficherResume(response.route_summary);
+ this._.instructions.afficherResume(response.routes[0], response.waypoints);
} else {
this._.instructions.afficherItineraireDescription(response, route);
this._.marqueurs.snapMarkers();
@@ -984,9 +1017,9 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Itineraire.Trajet.prototype.formaterRouteGeometrie = function(routeEncoded) {
routeEncoded = $.isArray(routeEncoded) ? routeEncoded[0] : routeEncoded;
- this.formatEncoded = this.formatEncoded || new OpenLayers.Format.EncodedPolyline();
- var route = this.formatEncoded.read(routeEncoded);
- route.geometry.transform(new OpenLayers.Projection(this._.proj4326), new OpenLayers.Projection(this._.projCarte));
+ this.formatEncoded = this.formatEncoded || new AnalyseurGeoJSON();
+ var route = this.formatEncoded.lire(routeEncoded)[0];
+ route = route.projeter('EPSG:4326', this._.carte.obtenirProjection());
return route;
};
@@ -1013,12 +1046,12 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
};
this.initEvent();
};
-
+
//
Itineraire.Formulaire.prototype.initEvent = function(){
var that=this;
this.initAutoComplete();
-
+
//mettre les keyup dans resultatLocalisation?
this.$.departInput.keyup( function(event){
if (event.keyCode == 13) {
@@ -1054,7 +1087,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
depart = that._.marqueurs.depart;
depart.definirPropriete('titre', $('#arrive input').val());
that._.marqueurs.changerTypeMarqueurs(depart, 'arrivee');
- }
+ }
if (that._.marqueurs.arrivee) {
arrivee = that._.marqueurs.arrivee;
arrivee.definirPropriete('titre', $('#depart input').val());
@@ -1063,14 +1096,14 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
$.each(that._.marqueurs.intermediaires, function(key, value) {
value.definirPropriete('ordre', iInt);
iInt++;
- });
-
- that._.marqueurs.depart = arrivee;
+ });
+
+ that._.marqueurs.depart = arrivee;
that._.marqueurs.arrivee = depart;
-
+
that.trouverItineraireClick();
};
-
+
//
Itineraire.Formulaire.prototype.rechercherDepart = function(premierResultat) {
this._.trajet.supprimer();
@@ -1099,29 +1132,29 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
if (this.blur) {
this.blur();
};
-
+
var departTitre, arriveeTitre;
if(that._.marqueurs.depart){
departTitre = that._.marqueurs.depart.obtenirPropriete('titre');
};
-
+
if(that._.marqueurs.arrivee){
arriveeTitre = that._.marqueurs.arrivee.obtenirPropriete('titre');
};
-
+
if ((!departTitre && that.$.departInput.val() != "") || (departTitre != that.$.departInput.val())) {
that.rechercherDepart(true);
return true;
};
-
+
if ((!arriveeTitre && that.$.arriveeInput.val() != "") || (arriveeTitre != that.$.arriveeInput.val())) {
that.rechercherArrivee(true);
return true;
};
-
+
that.lancerRechercheTrajet();
};
-
+
Itineraire.Formulaire.prototype.reinitialiserItineraireClick = function(e) {
var that = (e ? e.data : this);
this.blur();
@@ -1134,8 +1167,8 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
that._.instructions.cacherResultatItineraire();
that._.resultatLocalisation.cacher();
};
-
-
+
+
//
Itineraire.Formulaire.prototype.lancerRechercheTrajet = function(){
var depart = this._.marqueurs.depart;
@@ -1152,7 +1185,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
this._.instructions.cacherResultatItineraire();
};
};
-
+
Itineraire.Formulaire.prototype.rechercherLieu = function(texte, type, premierResultat) {
var limiteResultats = premierResultat? 1 : 15;
@@ -1160,53 +1193,47 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Aide.afficherMessageChargement({titre: "Itineraire"});
//var bbox = this._.carte.obtenirLimites().projeter(this._.projCarte, this._.proj4326);
//var bboxFormated = bbox.gauche + ',' + bbox.bas + ',' + bbox.droite + ',' + bbox.haut;
- // var url = "http://nominatim.openstreetmap.org/search?format=json&accept-language=fr&limit="+limiteResultats+"&q=" + texte + "&viewbox=" + bboxFormated;
- var url = this._.options.serviceGLO;
- var tjrsProxy = this._.options.cle ? true : false;
- $.ajax({
- url: Aide.utiliserProxy(url, tjrsProxy),
- data: {
- texte: texte,
- type: "adresse",
- epsg_sortie: this._.carte.obtenirProjection().split(":")[1],
- indDebut: 0,
- indFin: limiteResultats,
- format: "JSON",
- groupe: 1,
- urlappelant: this._.options.cle ? undefined : this._.options.urlAppelant,
- _cle: this._.options.cle
- },
- context: this,
- success: function(response) {
- this.$.departInput.autocomplete().hide();
- this.$.arriveeInput.autocomplete().hide();
- this.rechercherLieuSuccess(response, type, premierResultat);
- },
- error: function(e){
- //afficher message error dans panneau
- console.log(e.responseText);
- Aide.cacherMessageChargement();
- }
- });
- }
+ // var url = "http://nominatim.openstreetmap.org/search?format=json&accept-language=fr&limit="+limiteResultats+"&q=" + texte + "&viewbox=" + bboxFormated;
+
+ $.ajax({
+ url: this._.options.iCherche,
+ dataType: 'jsonp',
+ data: {
+ q: texte,
+ type: 'region_administrative,mrc,municipalite,route,adresse',
+ nb: 10,
+ callback: "JSONP_CALLBACK"
+ },
+ context: this,
+ success: function(response) {
+ this.$.departInput.autocomplete().hide();
+ this.$.arriveeInput.autocomplete().hide();
+ this.rechercherLieuSuccess(response, type, premierResultat);
+ },
+ error: function(e){
+ //afficher message error dans panneau
+ console.log(e.responseText);
+ Aide.cacherMessageChargement();
+ }
+ });
+ }
};
//
Itineraire.Formulaire.prototype.rechercherLieuSuccess = function(response, type, premierResultat) {
var that = this;
- if (premierResultat){
+ if (premierResultat){
var pos;
- var adresse = response.geocoderReponseListe[0];
+ var adresse = response.hits.hits[0];
if(!adresse){
console.warn("Pas de résultat");
Aide.cacherMessageChargement();
return false;
}
- var loc = adresse.localisation;
- if(loc.point.x && loc.point.y){
- pos = new Point(loc.point.x, loc.point.y);
- } else if (loc.enveloppe.Xmax){
- var limites = new Limites(loc.enveloppe.Xmin, loc.enveloppe.Ymin, loc.enveloppe.Xmax, loc.enveloppe.Ymax);
+ var loc = adresse._source.extent.coordinates;
+ if (loc){
+ var limites = new Limites(loc[0][0], loc[0][1], loc[1][0], loc[1][1], 'EPSG:4326');
+ limites = limites.projeter(that._.carte.obtenirProjection());
pos = limites.obtenirCentroide();
pos.limites = limites;
} else {
@@ -1214,29 +1241,28 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
Aide.cacherMessageChargement();
return false;
}
- this._.marqueurs.ajouter(pos.x, pos.y, type, null, adresse.adresseLibre);
+ this._.marqueurs.ajouter(pos.x, pos.y, type, null, adresse._source.recherche);
if (type == 'depart') {
- this.$.departInput.val(adresse.adresseLibre);
+ this.$.departInput.val(adresse._source.recherche);
} else if (type == 'arrivee') {
- this.$.arriveeInput.val(adresse.adresseLibre);
+ this.$.arriveeInput.val(adresse._source.recherche);
}
this.trouverItineraireClick();
Aide.cacherMessageChargement();
return true;
}
- if(response.geocoderReponseListe.length === 0){
+ if(response.hits.hits.length === 0){
var tr = document.createElement('tr');
var $tr = $(tr);
$tr.append('' + "Aucun résultat" + ' | ');
this._.resultatLocalisation.$.resultatBody.append(tr);
} else {
- $.each(response.geocoderReponseListe, function(key, adresse) {
- var loc = adresse.localisation;
- if(loc.point.x && loc.point.y){
- pos = new Point(loc.point.x, loc.point.y);
- } else if (loc.enveloppe.Xmax){
- var limites = new Limites(loc.enveloppe.Xmin, loc.enveloppe.Ymin, loc.enveloppe.Xmax, loc.enveloppe.Ymax);
+ $.each(response.hits.hits, function(key, adresse) {
+ var loc = adresse._source.extent.coordinates;
+ if (loc){
+ var limites = new Limites(loc[0][0], loc[0][1], loc[1][0], loc[1][1], 'EPSG:4326');
+ limites = limites.projeter(that._.carte.obtenirProjection());
pos = limites.obtenirCentroide();
pos.limites = limites;
} else {
@@ -1252,7 +1278,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
$tr.data("x", x);
$tr.data("y", y);
$tr.data("type", type);
- $tr.append('' + adresse.adresseLibre + ' | ');
+ $tr.append('' + adresse._source.recherche + ' | ');
that._.resultatLocalisation.$.resultatBody.append(tr);
});
}
@@ -1267,50 +1293,50 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
var that=this;
//var bbox = this._.carte.obtenirLimites().projeter(this._.projCarte, this._.proj4326);
//var bboxFormated = bbox.gauche + ',' + bbox.bas + ',' + bbox.droite + ',' + bbox.haut;
-
+
//todo: mettre le service dans les params de Itineraire...
//todo: à remplacer par le glo v6 lorsque le format json sera supporté
//var url = Aide.utiliserProxy("http://nominatim.openstreetmap.org/search?format=json&accept-language=fr&limit=5&viewbox=" + bboxFormated);
- var tjrsProxy = this._.options.cle ? true : false;
- var url = Aide.utiliserProxy(this._.options.serviceGLO, tjrsProxy);
this.$.departInput.autocomplete({
- serviceUrl: url,
- paramName: 'texte',
- dataType: 'json',
+ serviceUrl: that._.options.iCherche,
+ paramName: 'q',
+ dataType: 'jsonp',
showNoSuggestionNotice: true,
+ preserveInput: true,
transformResult: function(response) {
return {
- suggestions: $.map(response.geocoderReponseListe, function(dataItem) {
- return { value: dataItem.adresseLibre, loc: dataItem.localisation};
+ suggestions: $.map(response.hits.hits, function(dataItem) {
+ var label = dataItem._source.recherche;
+ if (dataItem.highlight.suggest) {
+ label = dataItem.highlight.suggest[0];
+ } else if (dataItem.highlight.recherche) {
+ label = dataItem.highlight.recherche[0];
+ }
+ return { value: label, recherche: dataItem._source.recherche, loc: dataItem._source.extent.coordinates};
})
};
},
onSearchStart: function (query) {
that.$.departLoading.show();
$.extend(query, {
- type: "adresse",
- epsg_sortie: that._.carte.obtenirProjection().split(":")[1],
- indDebut: 0,
- indFin: 5,
- format: "JSON",
- groupe: 1,
- urlappelant: that._.options.cle ? undefined : that._.options.urlAppelant,
- _cle: that._.options.cle
+ type: 'region_administrative,mrc,municipalite,route,adresse',
+ nb: 10,
+ callback: "JSONP_CALLBACK"
});
- },
+ },
onSearchComplete: function (query) {
that.$.departLoading.hide();
},
beforeRender: function(container){
if(!$(this).is(":focus")){
container[0].innerHTML= "";
- setTimeout(function(){
+ setTimeout(function(){
$(container[0]).hide();
}, 1);
}
},
- onSelect: function (suggestion) {
-
+ onSelect: function (suggestion) {
+ that.$.departInput.val(suggestion.recherche);
if (that._.marqueurs.depart) {
if(that._.marqueurs.depart.obtenirPropriete('titre') === that.$.departInput.val()){
return;
@@ -1320,17 +1346,16 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
if(that.$.departInput.val()){
var pos;
var loc = suggestion.loc;
- if(loc.point.x && loc.point.y){
- pos = new Point(loc.point.x, loc.point.y);
- } else if (loc.enveloppe.Xmax){
- var limites = new Limites(loc.enveloppe.Xmin, loc.enveloppe.Ymin, loc.enveloppe.Xmax, loc.enveloppe.Ymax);
+ if (loc){
+ var limites = new Limites(loc[0][0], loc[0][1], loc[1][0], loc[1][1], 'EPSG:4326');
+ limites = limites.projeter(that._.carte.obtenirProjection());
pos = limites.obtenirCentroide();
pos.limites = limites;
} else {
console.warn("Pas de géométrie");
return true;
}
-
+
var type = 'depart';
that._.marqueurs.supprimerParType(type);
that._.marqueurs.ajouter(pos.x, pos.y, type, null, that.$.departInput.val());
@@ -1340,47 +1365,50 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
};
},
minChars: 3
- });
-
+ });
+
this.$.departInput.focus(function() { $(this).select(); } );
-
+
this.$.arriveeInput.autocomplete({
- serviceUrl: url,
- paramName: 'texte',
- dataType: 'json',
- showNoSuggestionNotice: true,
- transformResult: function(response) {
- return {
- suggestions: $.map(response.geocoderReponseListe, function(dataItem) {
- return { value: dataItem.adresseLibre, loc: dataItem.localisation};
- })
- };
- },
- onSearchStart: function (query) {
- that.$.arriveeLoading.show();
- $.extend(query, {
- type: "adresse",
- epsg_sortie: that._.carte.obtenirProjection().split(":")[1],
- indDebut: 0,
- indFin: 5,
- format: "JSON",
- groupe: 1,
- urlappelant: that._.options.cle ? undefined : that._.options.urlAppelant,
- _cle: that._.options.cle
- });
- },
- onSearchComplete: function (query) {
- that.$.arriveeLoading.hide();
- },
- beforeRender: function(container){
- if(!$(this).is(":focus")){
- container[0].innerHTML= "";
- setTimeout(function(){
- $(container[0]).hide();
- }, 1);
- }
- },
- onSelect: function (suggestion) {
+ serviceUrl: that._.options.iCherche,
+ paramName: 'q',
+ dataType: 'jsonp',
+ showNoSuggestionNotice: true,
+ preserveInput: true,
+ transformResult: function(response) {
+ return {
+ suggestions: $.map(response.hits.hits, function(dataItem) {
+ var label = dataItem._source.recherche;
+ if (dataItem.highlight.suggest) {
+ label = dataItem.highlight.suggest[0];
+ } else if (dataItem.highlight.recherche) {
+ label = dataItem.highlight.recherche[0];
+ }
+ return { value: label, recherche: dataItem._source.recherche, loc: dataItem._source.extent.coordinates};
+ })
+ };
+ },
+ onSearchStart: function (query) {
+ that.$.departLoading.show();
+ $.extend(query, {
+ type: 'region_administrative,mrc,municipalite,route,adresse',
+ nb: 10,
+ callback: "JSONP_CALLBACK"
+ });
+ },
+ onSearchComplete: function (query) {
+ that.$.departLoading.hide();
+ },
+ beforeRender: function(container){
+ if(!$(this).is(":focus")){
+ container[0].innerHTML= "";
+ setTimeout(function(){
+ $(container[0]).hide();
+ }, 1);
+ }
+ },
+ onSelect: function (suggestion) {
+ that.$.arriveeInput.val(suggestion.recherche);
if (that._.marqueurs.arrivee) {
if(that._.marqueurs.arrivee.obtenirPropriete('titre') === that.$.arriveeInput.val()){
return;
@@ -1390,10 +1418,9 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
if(that.$.arriveeInput.val()){
var pos;
var loc = suggestion.loc;
- if(loc.point.x && loc.point.y){
- pos = new Point(loc.point.x, loc.point.y);
- } else if (loc.enveloppe.Xmax){
- var limites = new Limites(loc.enveloppe.Xmin, loc.enveloppe.Ymin, loc.enveloppe.Xmax, loc.enveloppe.Ymax);
+ if (loc){
+ var limites = new Limites(loc[0][0], loc[0][1], loc[1][0], loc[1][1], 'EPSG:4326');
+ limites = limites.projeter(that._.carte.obtenirProjection());
pos = limites.obtenirCentroide();
pos.limites = limites;
} else {
@@ -1408,44 +1435,39 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
};
},
minChars: 3
- });
-
+ });
+
this.$.arriveeInput.focus(function() { $(this).select(); } );
- };
-
+ }
Itineraire.Formulaire.prototype.geocodageInverse = function(point, feature, $input) {
var pos = point.projeter(this._.projCarte, this._.proj4326);
- //todo: à remplacer par le glo v6 lorsque le reverse sera intégré
- //var url = "http://nominatim.openstreetmap.org/reverse?format=json&accept-language=fr&lat="+pos.lat+"&lon="+pos.lon;
+ //todo: à remplacer par le glo v6 lorsque le reverse sera intégré
+ //var url = "http://nominatim.openstreetmap.org/reverse?format=json&accept-language=fr&lat="+pos.lat+"&lon="+pos.lon;
//var url = "http://spssogl97d.sso.msp.gouv.qc.ca/Services/itineraire.php?graph=locate&loc=" + pos.lat + "," + pos.lon;
- var url = this._.options.service + "?graph=locate?loc=" + pos.y + "," + pos.x;
-
+ var url = this._.options.service + "/nearest/v1/driving/" + pos.x + ',' + pos.y + "?number=1" ;
+
$.ajax({
- dataType: 'jsonp',
- //url: Aide.utiliserProxy(url),
+ dataType: 'json',
url: url,
- jsonp: "jsonp",
cache : true,
- //crossDomain: true, //utilisation du proxy
success: function(response) {
- var json_obj = eval(response);
- if ($input) {
- $input.val(json_obj.name);
+ if ($input && response.waypoints.length) {
+ $input.val(response.waypoints[0].name);
feature.definirPropriete('titre', $input.val());
};
}
});
};
-
+
Itineraire.Formulaire.prototype.definirInput = function(type, value) {
if (type === 'depart') {
this.$.departInput.val(value);
} else if (type === 'arrivee') {
this.$.arriveeInput.val(value);
};
- };
-
+ };
+
//------------------------------------------
//
@@ -1470,13 +1492,13 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
var $instruction = $(e.target).parent();
var x = $instruction.data('x');
var y = $instruction.data('y');
- var type = $instruction.data('type');
+ var type = $instruction.data('type');
- that._.formulaire.definirInput(type, e.target.textContent);
+ that._.formulaire.definirInput(type, e.target.textContent);
that._.marqueurs.supprimerParType(type);
that._.marqueurs.ajouter(x, y, type, null, e.target.textContent);
-
- var point = new Point(x,y);
+
+ var point = new Point(x,y);
that._.carte.definirCentre(point);
that._.carte.definirZoom(14);
};
@@ -1499,7 +1521,7 @@ define(['aide', 'panneau', 'vecteur', 'point', 'ligne', 'limites', 'occurence',
that._.marqueurs.supprimerParOrigine('rechercheMouseover');
that._.marqueurs.afficherTout();
};
-
+
//
Itineraire.ResultatLocalisation.prototype.supprimer = function() {
this.$.resultatBody.empty();
diff --git a/interfaces/navigateur/public/js/app/menu/recherche/recherche.js b/interfaces/navigateur/public/js/app/menu/recherche/recherche.js
index 7aa11f58..df453dfa 100644
--- a/interfaces/navigateur/public/js/app/menu/recherche/recherche.js
+++ b/interfaces/navigateur/public/js/app/menu/recherche/recherche.js
@@ -1,4 +1,4 @@
-/**
+/**
* Module pour l'objet {@link Panneau.Recherche}.
* @module recherche
* @author Marc-André Barbeau, MSP
@@ -11,11 +11,11 @@
*/
define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], function(Panneau, Vecteur, Aide, PanneauTable) {
- /**
+ /**
* Création de l'object Panneau.Recherche.
* Objet à ajouter à un objet localisation.
* @constructor
- * @abstract
+ * @abstract
* @name Panneau.Recherche
* @class Panneau.Recherche
* @alias recherche:Panneau.Recherche
@@ -23,6 +23,7 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
* @requires recherche
* @param {string} [options.recherchePrefixe] Prefixe de la recherche
* @param {string} [options.typeRecherche] Type de la recherche
+ * @param {string} [options.lienAide] Lien URL vers une aide
* @returns {Panneau.Recherche} Instance de {@link Panneau.Recherche}
* @property {dictionnaire} options Liste des options de la couche
* @property {Couche.Vecteur} vecteur Vecteur pour le résultat de la recherche
@@ -39,16 +40,18 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
sauvegarder: true,
id: 'recherche',
init: false,
- zoom: 15
+ infobulleSurvol: false,
+ zoom: 15,
+ lienAide: Aide.utiliserBaseUri("guides/IGO_Navigateur_guide.pdf")
};
};
Recherche.prototype = new Panneau();
Recherche.prototype.constructor = Recherche;
- /**
- * Initialisation de l'object recherche.
- * @method
+ /**
+ * Initialisation de l'object recherche.
+ * @method
* @name Recherche#_init
*/
Recherche.prototype._init = function() {
@@ -69,11 +72,11 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
this.aidePanneau,
this.resultatPanneau
]
-
+
if (Boolean(this.options.epingle)) {
items.push(this.obtenirEpingleCheckbox());
}
-
+
if (Boolean(this.options.sauvegarder)) {
items.push(this.obtenirSauvegarderCheckbox());
}
@@ -97,16 +100,16 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
},
activate: function(e){
that.declencher({type: that.obtenirTypeClasse()+'Active'});
- }
+ }
}
});
this.verifierParamsUrl();
};
- /**
+ /**
* Obtenir les valeurs des champs de recherche.
- * @method
+ * @method
* @name Recherche#obtenirValeursRecherche
* @returns {array} Tableau des valeurs de recherche
*/
@@ -155,7 +158,7 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
*/
Recherche.prototype.obtenirLienPDF = function() {
return "" +
"Cliquer ici pour avoir plus de détails...
";
};
@@ -257,13 +260,13 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
{
if (this.vecteur) {
this.vecteur.desactiver();
- }
+ }
}
}
});
return this.pineCheckbox;
};
-
+
Recherche.prototype.obtenirSauvegarderCheckbox = function() {
this.saveCheckbox = new Ext.create({
xtype: 'checkbox',
@@ -295,7 +298,7 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
this.reinitialiserVecteur();
var texte = '';
if(this.obtenirRecherchePrefixe()){
- texte += this.obtenirRecherchePrefixe() + ' ';
+ texte += this.obtenirRecherchePrefixe() + ' ';
}
texte += textUser;
var typeRecherche = this.obtenirTypeRecherche();
@@ -308,7 +311,7 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
epsg_sortie: this.carte.obtenirProjection().split(":")[1],
indDebut: this.indexDebut,
indFin: this.indexDebut + this.indexFin,
- format: this.options.format, //"JSON",//"HTML",
+ format: this.options.format, //"JSON",//"HTML",
groupe: 1,
urlappelant: this.options.cle ? undefined : this.options.urlAppelant,
_cle: this.options.cle
@@ -322,12 +325,12 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
this.declencher({type: "appelerServiceRecherche", recherche: this});
};
-
+
Recherche.prototype.appelerServiceErreur = function(jqXHR){
var messageErreur = jqXHR.responseText;
if(jqXHR.responseJSON){
messageErreur = jqXHR.responseJSON.message_erreur;
-
+
if(jqXHR.responseJSON.detail_message){
$.each(jqXHR.responseJSON.detail_message, function(key, value){
messageErreur += "
"+value;
@@ -344,14 +347,14 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
this.declencher({type: "resultatRecherche", vecteur: vecteur, texteRecherche: this.textUser});
vecteur.garderHistorique = true;
-
+
var occurence = vecteur.obtenirOccurences()[0];
if(!occurence){
return false;
- }
+ }
vecteur.zoomerOccurence(occurence, this.options.zoom);
occurence.selectionner();
-
+
if(this.options.idResultatTable){
var nav = Aide.obtenirNavigateur();
var panneauTable = nav.obtenirPanneauParId(this.options.idResultatTable, -1);
@@ -361,23 +364,34 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
} else if(panneauTable.obtenirTypeClasse() === 'PanneauOnglet'){
var paginer = panneauTable.options.paginer?panneauTable.options.paginer:false;
var limite = panneauTable.options.paginer_limite?parseInt(panneauTable.options.paginer_limite):undefined;
- var debut = panneauTable.options.paginer_debut?parseInt(panneauTable.options.paginer_debut):undefined;
-
+ var debut = panneauTable.options.paginer_debut?parseInt(panneauTable.options.paginer_debut):undefined;
+
var nouvelleTable = new PanneauTable({
- reductible: false,
+ reductible: false,
fermable: true,
paginer : paginer,
paginer_debut: debut,
paginer_limite: limite,
outils_auto:true,
- outils_selectionSeulement: true
- });
+ outils_selectionSeulement: true
+ });
panneauTable.ajouterPanneau(nouvelleTable);
nouvelleTable.ouvrirTableVecteur(vecteur);
- panneauTable.activerPanneau(nouvelleTable);
+ panneauTable.activerPanneau(nouvelleTable);
}
}
+
+ if(this.options.infobulleSurvol){
+ vecteur.ajouterDeclencheur('occurenceSurvol', function(e){
+ e.occurence.ouvrirInfobulle({html:e.occurence.proprietes.adresseLibre, aFermerBouton: false});
+ },
+ {scope: this});
+ vecteur.ajouterDeclencheur('occurenceSurvolFin', function(e){
+ e.occurence.fermerInfobulle();
+ },
+ {scope: this});
+ }
}
Recherche.prototype.creerVecteurRecherche = function(styles, callback, paramsCallback) {
@@ -385,13 +399,13 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
if (!this.pineCheckbox || this.pineCheckbox.checked) {
active = true;
};
-
+
var visible = false;
if (this.saveCheckbox && this.saveCheckbox.checked) {
visible = true;
};
-
- var vecteur = new Vecteur({legende: false, active: active, visible: visible , selectionnable: false, suppressionPermise: true, titre: "Resultats Recheche " + this.options.titre + " - " + this.obtenirValeursRecherche()['RechercheTitle' + this.options.id], styles: styles});
+
+ var vecteur = new Vecteur({legende: false, active: active, visible: visible , selectionnable: false, suppressionPermise: true, titre: "Resultats Recheche " + this.options.titre + " - " + this.obtenirValeursRecherche()['RechercheTitle' + this.options.id], styles: styles});
if(callback){
vecteur.ajouterDeclencheur("coucheAjoutee", callback, {scope: this, params: paramsCallback});
}
@@ -411,7 +425,7 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
Recherche.prototype.ajouterPagination = function(nombreResultats) {
var ajoutFleche = "";
-
+
if (nombreResultats === (this.indexFin + 1)) {
ajoutFleche += "";
ajoutFleche += "";
@@ -438,8 +452,8 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
}
return ajoutFleche;
}
-
- Recherche.prototype.initEventResultat = function() {
+
+ Recherche.prototype.initEventResultat = function() {
$(this.resultatPanneau.items.items[0].body.dom).find('#precedentRecherche')
.click($.proxy(this.appelPrecedent, this));
$(this.resultatPanneau.items.items[0].body.dom).find('#suivantRecherche')
@@ -460,7 +474,7 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
this.vecteur.zoomerOccurence(occurence, this.options.zoom);
occurence.selectionner();
};
-
+
Recherche.prototype.eventResultatMouseover = function(e) {
var id = $(e.target).parents('.rechercheResultatsListe').data('id');
var occurence = this.vecteur.obtenirOccurenceParId(id);
@@ -569,14 +583,14 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
Recherche.prototype.definirResultat = function(resultatTexte, callback, target) {
//Masquer le message d'attente
Aide.cacherMessageChargement();
-
+
this.resultatPanneau.show().expand();
this.resultatPanneau.items.items[0].body.update(resultatTexte);
if (typeof callback === "function"){
callback.call(target);
}
};
-
+
Recherche.prototype.verifierParamsUrl = function(){
var recherche = Aide.obtenirParametreURL('recherche');
if(recherche === this.obtenirTypeRecherche()){
@@ -598,18 +612,18 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
}
}
};
-
+
Recherche.prototype.traiterParamsUrl = function(texte){
var that=this;
this.parent.ajouterDeclencheur('ajouterPanneau', function(e){
if(that === e.panneau){
- e.target.enleverDeclencheur('ajouterPanneau', 'rechercheTraiterParamsURL');
+ e.target.enleverDeclencheur('ajouterPanneau', 'rechercheTraiterParamsURL');
e.panneau.ajouterDeclencheur(that.obtenirTypeClasse()+'Active', function(e2){
e2.target.enleverDeclencheur(that.obtenirTypeClasse()+'Active', 'rechercheTraiterParamsURL2');
e2.target.lancerRecherche(texte);
}, {id: "rechercheTraiterParamsURL2"});
e.target.activerPanneau(e.panneau);
- }
+ }
}, {id: "rechercheTraiterParamsURL"});
this.parent.ouvrir();
};
@@ -625,15 +639,18 @@ define(['panneau', 'vecteur', 'aide', 'panneauTable', 'css!css/recherche'], func
$.each(this._panel.items.items, function(index, item){
if(item.xtype == "textfield" || item.xtype == "numberfield" || item.xtype == "combo"){
item.reset();
- }
+ }
});
-
+
if(this.resultatPanneau.isVisible()){
this.definirResultat(this.obtenirAideHTML());
}
};
-
+
+ Recherche.prototype.obtenirLienAide = function (){
+ return (typeof this.options.lienAide == undefined)?this.defautOptions.lienAide:this.options.lienAide;
+ }
+
return Recherche;
});
-
diff --git a/interfaces/navigateur/public/js/app/menu/recherche/rechercheAdresse.js b/interfaces/navigateur/public/js/app/menu/recherche/rechercheAdresse.js
index e310f089..81534e13 100644
--- a/interfaces/navigateur/public/js/app/menu/recherche/rechercheAdresse.js
+++ b/interfaces/navigateur/public/js/app/menu/recherche/rechercheAdresse.js
@@ -143,13 +143,19 @@ define(['recherche', 'aide', 'point', 'style', 'limites'], function(Recherche, A
resultat += "Résultats (" + debut + " - " + fin + ")
";
$.each(vecteur.listeOccurences, function(row, occurence) {
var title = occurence.proprietes.statut.description || '';
+ var couleur = 'blue';
+
if(occurence.proprietes.statut.commentaire){
title += '\nCommentaire: ' + occurence.proprietes.statut.commentaire;
+ couleur = 'DarkOrange';
}
- var couleur = 'blue';
+
if(occurence.proprietes.statut.etat && occurence.proprietes.statut.etat !== 'Officiel'){
couleur = '#ff7200';
}
+
+ title = title.replace(/'/g, "'");
+
resultat += "» " +
occurence.obtenirPropriete("adresseLibre")+"";
@@ -161,4 +167,4 @@ define(['recherche', 'aide', 'point', 'style', 'limites'], function(Recherche, A
return RechercheAdresse;
-});
\ No newline at end of file
+});
diff --git a/interfaces/navigateur/public/js/app/menu/recherche/rechercheGPS.js b/interfaces/navigateur/public/js/app/menu/recherche/rechercheGPS.js
index 0ac6832a..ba436c64 100644
--- a/interfaces/navigateur/public/js/app/menu/recherche/rechercheGPS.js
+++ b/interfaces/navigateur/public/js/app/menu/recherche/rechercheGPS.js
@@ -5,7 +5,7 @@
* @version 1.0
* @requires recherche
*/
-define(['recherche', 'aide', 'point', 'style', 'limites'], function(Recherche, Aide, Point, Style, Limites) {
+define(['recherche', 'aide', 'point', 'polygone', 'occurence', 'style', 'limites'], function(Recherche, Aide, Point, Polygone, Occurence, Style, Limites) {
/**
* Création de l'object Panneau.RechercheGPS.
* Objet à ajouter à un objet localisation.
@@ -62,6 +62,12 @@ define(['recherche', 'aide', 'point', 'style', 'limites'], function(Recherche, A
iconeOffsetX: -10,
iconeOffsetY: -34,
filtres: [ {
+ filtre: "[cercleIncertitude]==true",
+ style: {
+ opacite: 0.3,
+ visible: true
+ }
+ }, {
filtre: "[coteCertitude]>0",
style: {icone: Aide.utiliserBaseUri('images/marqueur/marker-yellow.png')}
}, {
@@ -76,12 +82,22 @@ define(['recherche', 'aide', 'point', 'style', 'limites'], function(Recherche, A
var survolStyle = style.cloner();
survolStyle.definirPropriete('opacite', 0.8);
- var styles = {defaut: {visible: false}, select: style, survol: survolStyle};
+ var defautStyle = new Style({
+ filtres: [ {
+ filtre: "[cercleIncertitude]==true",
+ style: {
+ opacite: 0.3,
+ visible: true
+ }
+ }
+ ]
+ })
+
+ var styles = {defaut: defautStyle, select: style, survol: survolStyle};
if(this.options.idResultatTable){
styles.defaut = style;
}
var vecteur = this.creerVecteurRecherche(styles, this.ajouterOccurences, {responseJSON: responseJSON});
-
};
RechercheGPS.prototype.ajouterOccurences = function(e) {
@@ -91,6 +107,13 @@ define(['recherche', 'aide', 'point', 'style', 'limites'], function(Recherche, A
if (responseJSON.localisation && responseJSON.localisation.point.x && responseJSON.localisation.point.y) {
point = new Point(responseJSON.localisation.point.x, responseJSON.localisation.point.y);
vecteur.creerOccurence(point, responseJSON);
+
+ if(responseJSON.rayonIncertitude){
+ var cercleOL = OpenLayers.Geometry.Polygon.createRegularPolygon(point._obtenirGeomOL(), responseJSON.rayonIncertitude, 50);
+ var cercle = new Occurence(new Polygone(cercleOL), {cercleIncertitude: true});
+ cercle.definirInteraction(false);
+ vecteur.ajouterOccurence(cercle);
+ }
} else {
this.definirResultat('Aucun résultat');
return false;
@@ -133,7 +156,11 @@ define(['recherche', 'aide', 'point', 'style', 'limites'], function(Recherche, A
var resultat = this.ajouterPagination(nombreResultats);
resultat += "Convertir les coordonnées GPS";
- resultat += "" + occurence.proprietes.patternCoordInput + "("+occurence.proprietes.formatCoordInput+")
";
+ resultat += "" + occurence.proprietes.patternCoordInput + "";
+ if (occurence.proprietes.rayonIncertitude && occurence.proprietes.coteCertitude ){
+ resultat += "Certitude de " + occurence.proprietes.coteCertitude + "% dans un rayon de " +occurence.proprietes.rayonIncertitude + " m";
+ }
+ resultat += "("+occurence.proprietes.formatCoordInput+")
";
resultat += "» ";
diff --git a/interfaces/navigateur/public/js/app/menu/recherche/rechercheLieu.js b/interfaces/navigateur/public/js/app/menu/recherche/rechercheLieu.js
index 7242eb0a..9bb49fc8 100644
--- a/interfaces/navigateur/public/js/app/menu/recherche/rechercheLieu.js
+++ b/interfaces/navigateur/public/js/app/menu/recherche/rechercheLieu.js
@@ -101,9 +101,9 @@ define(['recherche', 'aide', 'point', 'style', 'limites'], function(Recherche, A
$.each(value.placeListe, function(keyPlace, place){
if(place.type === 'Municipalité'){
- value.lieu = place.nom;
- } else if (place.type === 'Lieu'){
value.municipalite = place.nom;
+ } else if (place.type === 'Lieu'){
+ value.lieu = place.nom;
}
});
vecteur.creerOccurence(point, value);
diff --git a/interfaces/navigateur/public/js/app/navigateur.js b/interfaces/navigateur/public/js/app/navigateur.js
index 8d7487d9..18e009f5 100644
--- a/interfaces/navigateur/public/js/app/navigateur.js
+++ b/interfaces/navigateur/public/js/app/navigateur.js
@@ -103,6 +103,7 @@ define(['barreOutils', 'panneau', 'carte', 'panneauCarte', 'aide', 'evenement'],
listeners: {
afterrender: function(e) {
e.scope.isReady = true;
+ e.scope.carte.isReady = true;
if (typeof callback === "function") {
callback.call(cible, optCallback);
}
@@ -125,6 +126,7 @@ define(['barreOutils', 'panneau', 'carte', 'panneauCarte', 'aide', 'evenement'],
listeners: {
afterrender: function(e) {
e.scope.isReady = true;
+ e.scope.carte.isReady = true;
if (typeof callback === "function") {
callback.call(cible, optCallback);
}
diff --git a/interfaces/navigateur/public/js/app/occurence/occurence.js b/interfaces/navigateur/public/js/app/occurence/occurence.js
index cd5c6ec8..bc16be0a 100644
--- a/interfaces/navigateur/public/js/app/occurence/occurence.js
+++ b/interfaces/navigateur/public/js/app/occurence/occurence.js
@@ -1,4 +1,4 @@
-/**
+/**
* Module pour l'objet {@link Occurence}.
* @module occurence
* @author Marc-André Barbeau, MSP
@@ -14,7 +14,7 @@
* @requires evenement
*/
define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLigne', 'multiPolygone', 'collection', 'aide', 'evenement'], function(Limites, Style, Point, Ligne, Polygone, MultiPoint, MultiLigne, MultiPolygone, Collection, Aide, Evenement) {
- /**
+ /**
* Création de l'object Occurence.
* @constructor
* @name Occurence
@@ -48,10 +48,10 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
proprietes = proprietes || vectorOL.attributes;
if(!opt._keepFeature){
geometrie = vectorOL.geometry;
- }
+ }
}
-
- var typeGeometrie = opt.typeGeometrie?opt.typeGeometrie:null;
+
+ var typeGeometrie = opt.typeGeometrie ? opt.typeGeometrie : null;
this.styles = {};
this._definirGeometrie(geometrie,typeGeometrie);
@@ -59,10 +59,12 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
this.accepterModifications();
this.selectionnee = false;
- this.definirStyle(style);
+ if (style && !$.isEmptyObject(style)) {
+ this.definirStyle(style);
+ }
};
- /**
+ /**
* Indique si l'occurence est sélectionnée
* @method
* @name Occurence#estSelectionne
@@ -72,7 +74,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return this.selectionnee;
};
- /**
+ /**
* Selectionner l'occurence
* @method
* @name Occurence#selectionner
@@ -107,7 +109,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
}
};
- /**
+ /**
* Déselectionner l'occurence
* @method
* @name Occurence#deselectionner
@@ -142,7 +144,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
}
};
- /**
+ /**
* Indique si l'occurence est visible à l'écran
* @method
* @name Occurence#estVisible
@@ -152,7 +154,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return this._feature.onScreen();
};
- /**
+ /**
* Indique si l'occurence est affichée.
* Il n'est pas nécessairement visible (peut être à l'extérieur de l'écran)
* @method
@@ -163,7 +165,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return this._feature.getVisibility();
};
- /**
+ /**
* Obtenir le type de géométrie de l'occurence
* @method
* @name Occurence#obtenirTypeGeometrie
@@ -173,7 +175,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return this.type;
};
- /**
+ /**
* Obtenir les propriétés de l'occurence
* @method
* @name Occurence#obtenirProprietes
@@ -186,7 +188,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return this._feature.attributes;
};
- /**
+ /**
* Définir les propriétés de l'occurence
* @method
* @param {Dictionnaire} proprietes Propriétés de l'occurence
@@ -197,7 +199,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
if (proprietes && !$.isPlainObject(proprietes)) {
throw new Error("Occurence.definirProprietes : Paramètre invalide");
}
-
+
if (!this.proprietesOriginales) {
this.modifiee = true;
this.proprietesOriginales = $.extend(true, {}, this.obtenirProprietes());
@@ -211,7 +213,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
}
};
- /**
+ /**
* Obtenir la valeur d'une propriété
* @method
* @name Occurence#obtenirPropriete
@@ -241,18 +243,18 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return obj;
};
- /**
+ /**
* Ajouter une propriété à l'occurence
* @method
* @name Occurence#definirPropriete
- * @param {String} propriete Nom de la propriété
+ * @param {String} propriete Nom de la propriété
* @param {*} valeur Valeur de la propriété
* @throws Occurence.definirPropriete : Nom de la propriété invalide
*/
Occurence.prototype.definirPropriete = function(propriete, valeur) {
if (typeof propriete !== 'string') {
throw new Error("Occurence.definirPropriete : Nom de la propriété invalide");
- }
+ }
var obj = this._feature.attributes;
if (propriete[0] === '/') {
propriete = propriete.substr(1);
@@ -325,7 +327,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
if (typeof propriete !== 'string') {
throw new Error("Occurence.definirErreur : Nom de la propriété invalide");
}
-
+
var obj = this.erreurs ? this.erreurs : this.erreurs={};
var proprieteSplited = propriete.split('.');
var dernierePropriete = proprieteSplited.pop();
@@ -344,7 +346,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
obj[dernierePropriete] = valeur;
};
- /**
+ /**
* Obtenir le style de l'occurence
* @method
* @name Occurence#obtenirStyle
@@ -367,7 +369,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return this.styles[regle];
};
- /**
+ /**
* Définir un style de l'occurence
* @method
* @name Occurence#definirStyle
@@ -379,7 +381,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
if (typeof regle !== 'string') {
throw new Error("Occurence.definirStyle : Règle du style invalide");
}
-
+
if (style && style.obtenirTypeClasse && style.obtenirTypeClasse() === 'Style') {
this.styles[regle] = style.cloner();
this.styles[regle].parent = this;
@@ -395,7 +397,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
}
};
- /**
+ /**
* Changer le style de l'occurence
* @method
* @name Occurence#appliquerStyle
@@ -404,7 +406,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
*/
Occurence.prototype.appliquerStyle = function(regle, survol) {
regle = regle || 'defaut';
-
+
if (typeof regle !== 'string') {
throw new Error("Occurence.appliquerStyle : Règle du style invalide");
} else if (regle === 'courant') {
@@ -430,11 +432,11 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
this._feature.style = this.styles[regle]._getStyleOptionsOL();
this._feature.renderIntent = undefined;
}
-
+
this.rafraichir();
};
- /**
+ /**
* Définir le style over. 4 possibilités, en ordre d'essai:
* 1) Utilisation du style 'survol' de l'occurance
* 2) Changer l'opacité à 0.6 du style 'courant' de l'occurance
@@ -492,7 +494,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return true;
};
- /**
+ /**
* Obtenir la valeur d'une propriété du style
* @method
* @name Occurence.Occurence#obtenirProprieteStyle
@@ -516,7 +518,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
};
- /**
+ /**
* Ajouter une propriété au style de l'occurence
* @method
* @name Style.Occurence#definirProprieteStyle
@@ -529,7 +531,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
throw new Error("Occurence.definirProprieteStyle : Nom de la propriété invalide");
}
regle = regle || 'courant';
- regle = regle == 'courant' ? this.regleCourant : regle;
+ regle = regle == 'courant' ? this.regleCourant : regle;
if (this.obtenirStyle(regle)) {
this.obtenirStyle(regle).definirPropriete(nom, valeur);
} else if (this.obtenirStyle(regle, true, true)) {
@@ -549,20 +551,20 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
this.appliquerStyle("courant")
};
- /**
+ /**
* Cacher l'occurence
* @method
* @name Occurence#cacher
* @param {boolean} tousLesStyles Cacher l'occurence pour tous les styles ou seulement le style courant
*/
Occurence.prototype.cacher = function(tousLesStyles) {
-
+
if(this.estAffichee()){
this.definirProprieteStyle('visible', 'none', undefined);
if (this.vecteur) {
this.vecteur.carte.gestionCouches.enleverOccurenceSurvol(this);
}
-
+
if (tousLesStyles) {
//todo: faire une boucle sur tous les styles
this.definirProprieteStyle('visible', 'none', 'defaut');
@@ -571,17 +573,17 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
}
};
- /**
+ /**
* Afficher l'occurence
* @method
* @name Occurence#afficher
* @param {boolean} tousLesStyles Afficher l'occurence pour tous les styles ou seulement le style courant
*/
Occurence.prototype.afficher = function(tousLesStyles) {
-
+
if(!this.estAffichee()){
this.definirProprieteStyle('visible', undefined, undefined);
-
+
if (tousLesStyles) {
//todo: faire une boucle sur tous les styles
this.definirProprieteStyle('visible', undefined, 'defaut');
@@ -590,7 +592,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
}
};
- /**
+ /**
* Rafraichir l'occurence sur la carte
* @method
* @name Occurence#rafraichir
@@ -604,7 +606,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
}
};
- /**
+ /**
* Ouvrir une infobulle attachée à l'occurence
* @method
* @name Occurence#ouvrirInfobulle
@@ -673,7 +675,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
};
- /**
+ /**
* Fermer l'infobulle de l'occurence
* @method
* @name Occurence#fermerInfobulle
@@ -687,7 +689,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
}
};
- /**
+ /**
* Définir la géométrie de l'occurence
* @method
* @name Occurence#_definirGeometrie
@@ -742,7 +744,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
} else if (geometrie.CLASS_NAME === "OpenLayers.Geometry.Collection"){
this.type = "Collection";
geometrie = new Collection(geometrie);
- }
+ }
} else if (geometrie._obtenirGeomOL) {
var geomOL = geometrie._obtenirGeomOL();
this._feature = new OpenLayers.Feature.Vector(geomOL);
@@ -754,7 +756,11 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return;
}
- $.extend(this, geometrie, Occurence.prototype);
+ $.extend(this, geometrie, {
+ 'constructor': this.constructor,
+ 'projeter': this.projeter,
+ 'majGeometrie': this.majGeometrie
+ });
if (!this.id) {
var type = this.type ? this.type + '_' : '';
@@ -763,12 +769,12 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
this._feature.id = this.id;
this._feature.attributes = proprietes || {};
-
+
return this;
};
- /**
- * Obtenir la géométrie de l'occurence.
+ /**
+ * Obtenir la géométrie de l'occurence.
* C'est une copie de la géométrie. Les modifications ne sont pas réflétées à la géométrie.
* @method
* @name Occurence#_obtenirGeometrie
@@ -786,8 +792,8 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return new Polygone(this.lignes, this.obtenirProjection());
case "MultiPolygone":
return new MultiPolygone(this.polygones, this.obtenirProjection());
- case "MultiLignes":
- return new MultiLignes(this.lignes, this.obtenirProjection());
+ case "MultiLigne":
+ return new MultiLigne(this.lignes, this.obtenirProjection());
case "MultiPoints":
return new MultiPoints(this.points, this.obtenirProjection());
case "Collection":
@@ -801,8 +807,8 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
return undefined;
}
};
-
- /**
+
+ /**
* Mise à jour de la géométrie de l'occurence
* @method
* @name Occurence#majGeometrie
@@ -825,7 +831,7 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
this.vecteur._layer.addFeatures(this._feature);
this.appliquerStyle(this.regleCourant, false);
}
-
+
if(opt.lancerDeclencheur !== false){
/**
* Événement lancée lorsque l'occurence est modifiée
@@ -843,12 +849,12 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
this.vecteur.declencher({type: "vecteurOccurenceModifiee", occurence: this, modifGeometrie: geometrie, modifType: 'géométrie'});
}
}
-
+
return this;
};
- /**
+ /**
* Annuler les modifications apportées à l'occurence.
* Retourner l'occurence dans l'état qu'elle était la dernière fois que les modifications ont été acceptées.
* @method
@@ -870,8 +876,8 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
this.enlevee = false;
};
- /**
- * Accepter les modifications apportées à l'occurence.
+ /**
+ * Accepter les modifications apportées à l'occurence.
* Elles ne pourront plus être annulées.
* @method
* @name Occurence#annulerModifications
@@ -885,19 +891,19 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
this.ajoutee = false;
this.enlevee = false;
};
-
-
+
+
/**
* Projecter une occurrence dans une nouvelle projection
* @method
* @name Occurence#projeterOccurence
- * @param {String} arg1
+ * @param {String} arg1
* Si !arg2, alors arg1 = Projection voulue. La projection source est la projection du polygone.
* Si arg2, alors arg1 = Projection source
* @param {String} [arg2] Projection voulue
* @returns {Occurence} Occurence avec la nouvelle projection
*/
- Occurence.prototype.projeter = function(arg1, arg2) {
+ Occurence.prototype.projeter = function(arg1, arg2) {
var geom = this._obtenirGeometrie().projeter(arg1, arg2);
return this.cloner()._definirGeometrie(geom);
};
@@ -908,19 +914,19 @@ define(['limites', 'style', 'point', 'ligne', 'polygone', 'multiPoint', 'multiLi
* @name Occurence#cloner
* return {Occurence} Occcurence clonée
*/
- Occurence.prototype.cloner = function(garderStyleVecteur) {
+ Occurence.prototype.cloner = function(garderStyleVecteur) {
if(garderStyleVecteur){
return new Occurence(this._obtenirGeometrie(), this.proprietes, this.obtenirStyle(this.regleCourant, true, true));
}
else{
return new Occurence(this._obtenirGeometrie(), this.proprietes, this.styles);
- }
+ }
};
-
+
/**
* Réinitialiser les valeurs des attributs de l'occurence
* @method
- * @name Occurence#reinitialiserAttributs
+ * @name Occurence#reinitialiserAttributs
*/
Occurence.prototype.reinitialiserAttributs = function() {
this.definirProprietes();
diff --git a/interfaces/navigateur/public/js/app/outil/outil.js b/interfaces/navigateur/public/js/app/outil/outil.js
index 74663dc7..5675a37a 100644
--- a/interfaces/navigateur/public/js/app/outil/outil.js
+++ b/interfaces/navigateur/public/js/app/outil/outil.js
@@ -128,7 +128,7 @@ define(['aide', 'evenement', 'fonctions'], function(Aide, Evenement, Fonctions)
}
this._bouton = new Ext.Toolbar.Button(this._extOptions);
- if(opt.actif){
+ if(Aide.toBoolean(opt.actif)){
this.enfoncer();
}
};
diff --git a/interfaces/navigateur/public/js/app/outil/outilAjoutWMS.js b/interfaces/navigateur/public/js/app/outil/outilAjoutWMS.js
index 152ff054..58d7b5db 100644
--- a/interfaces/navigateur/public/js/app/outil/outilAjoutWMS.js
+++ b/interfaces/navigateur/public/js/app/outil/outilAjoutWMS.js
@@ -134,50 +134,6 @@ define(['outil', 'aide'], function(Outil, Aide) {
this._MyWMSBrowser.Window.show();
};
- /**
- * Methode : saveContext
- * Appelée lors d'un déclanchement d'un événement 'savecontext'.
- *
- * Ajoute la liste des serveurs wms dans l'object global de sauvegarde de
- * contexte.
- */
-
- //TODO Lancer MyWMSBrowser.saveContext pour partager Carte??
- /*
- *
- * oMapComponent.on({"savecontext": sauvegardeContexte});
- oMapComponent.on({"savecontext": MyWMSBrowser.saveContext});
- oMapComponent.on({"loadcontext": MyWMSBrowser.loadContext});
- main.js ligne 603
- */
-
- /* MyWMSBrowser.saveContext = function() {
- var options = { 'wmsservers': MyWMSBrowser.getWMSServersContext() };
- goSauvegardeContexteJSON =
- OpenLayers.Util.applyDefaults(options, goSauvegardeContexteJSON);
- };*/
-
- /**
- * Methode : getWMSServersContext
- * Retourne la liste de serveurs wms contenu dans l'objet 'Store'. Toutes les
- * urls sont retournées : celles du départ et celles ajoutées par
- * l'usager.
- *
- * Retourne:
- * {Array} Liste d'urls des serveurs wms.
- */
- /* MyWMSBrowser.getWMSServersContext = function() {
- var aszUrls = [];
- var nUrls = MyWMSBrowser.Store.getCount();
-
- for(var i=0; i"
});
- var buttonVisualiser = new Ext.Button({
+ var buttonTelecharger = new Ext.Button({
width: 80,
cls: "fileButton",
- text: "Visualiser",
+ text: "Télécharger",
listeners : {
click : function(){
@@ -123,11 +123,11 @@ define(['aide', 'outil', 'fileUploadField'], function(Aide, Outil) {
style: "position: relative; float:right",
cls: "uploadForm",
width: 80,
- items: [buttonVisualiser,
+ items: [buttonTelecharger,
{
xtype :'fileuploadfield',
inputType :'file',
- id: 'uploadDocument',
+ id: 'uploadOutilAssocierFichier',
buttonOnly : true,
buttonText: " Ajouter ", //width 80?
cls: "fileButton",
@@ -151,6 +151,9 @@ define(['aide', 'outil', 'fileUploadField'], function(Aide, Outil) {
else{
Aide.afficherMessage("Message", "S.V.P. Sélectionner un fichier.", "OK", "MESSAGE");
}
+
+ //Permet de réinialiser le panneau afin de permettre la resélection du même fichier.
+ this.reset();
}
}
},
diff --git a/interfaces/navigateur/public/js/app/outil/outilDeselectWMS.js b/interfaces/navigateur/public/js/app/outil/outilDeselectWMS.js
index c2899eee..d7e001d9 100644
--- a/interfaces/navigateur/public/js/app/outil/outilDeselectWMS.js
+++ b/interfaces/navigateur/public/js/app/outil/outilDeselectWMS.js
@@ -40,6 +40,7 @@ define(['outil'], function(Outil) {
*/
OutilDeselectWMS.prototype.executer = function () {
this.carte.gestionCouches.deselectionnerCouchesWMS();
+ this.carte.gestionCouches.deselectionnerCouchesWMTS();
};
return OutilDeselectWMS;
diff --git a/interfaces/navigateur/public/js/app/outil/outilDessin.js b/interfaces/navigateur/public/js/app/outil/outilDessin.js
index e70ff468..071c3af2 100644
--- a/interfaces/navigateur/public/js/app/outil/outilDessin.js
+++ b/interfaces/navigateur/public/js/app/outil/outilDessin.js
@@ -38,11 +38,35 @@ define(['outil', 'aide'], function(Outil, Aide) {
Outil.prototype._init.call(this);
if(this.options.couche){
if(typeof this.options.couche === "string"){
- this.options.couche = this.carte.gestionCouches.obtenirCoucheParId(this.options.couche);
+ var couche = this.carte.gestionCouches.obtenirCoucheParId(this.options.couche);
+
+ //problème de synchro avec firefox. La couche n'existe pas encore.
+ if(typeof couche == 'undefined'){
+ var that = this
+ var nav = Aide.obtenirNavigateur();
+
+ nav.evenements.ajouterDeclencheur('ajouterCouche', function(e){
+ if(e.couche.options.id == e.options.nomCouche){
+ that.options.couche = e.couche;
+ that.couche = that.options.couche;
+ if(that.parent){
+ that.parent.activer();
+ } else {
+ that.activer();
+ }
+ this.enleverDeclencheur(e.type, e.options.id)
+ }
+ }, {id: that.options.id+'ActiverOutil', nomCouche: this.options.couche});
+ }
+ else{
+ this.options.couche = couche;
+ }
+
}
if(this.options.couche && this.options.couche.obtenirTypeClasse && (this.options.couche.obtenirTypeClasse() === "Vecteur" || this.options.couche.obtenirTypeClasse() === "VecteurCluster" || this.options.couche.obtenirTypeClasse() === "WFS")){
this.couche = this.options.couche;
- } else {
+ }
+ else {
this.options.couche = undefined;
}
}
@@ -72,6 +96,7 @@ define(['outil', 'aide'], function(Outil, Aide) {
return true;
}
+
if(!nav.evenements.obtenirDeclencheur('initArborescence', 'outilEditionAjouterContexteSubmenu').length){
nav.evenements.ajouterDeclencheur('initArborescence', function(e){
that._ajouterContexteSubmenu(e.target.contexteMenu);
diff --git a/interfaces/navigateur/public/js/app/outil/outilExportCSV.js b/interfaces/navigateur/public/js/app/outil/outilExportCSV.js
new file mode 100644
index 00000000..c5912d81
--- /dev/null
+++ b/interfaces/navigateur/public/js/app/outil/outilExportCSV.js
@@ -0,0 +1,103 @@
+/**
+ * Module pour l'objet {@link Outil.OutilExportCSV}.
+ * @module outilAide
+ * @requires outil
+ * @requires aide
+ * @author Michael Lane, FADQ
+ * @version 1.0
+ */
+define(['outil', 'aide'], function(Outil, Aide) {
+ /**
+ * Création de l'object Outil.OutilExportCSV.
+ * Pour la liste complète des paramètres, voir {@link Outil}
+ * @constructor
+ * @name Outil.OutilExportCSV
+ * @class Outil.OutilExportCSV
+ * @alias outilAide:Outil.OutilExportCSV
+ * @extends Outil
+ * @requires outilExportCSV
+ * @param {string} [options.id='aide_igo##'] Identifiant du bouton. Si absent, XX est un nombre généré.
+ * @param {string} [options.icone='aide'] Icone du bouton. Lien vers l'image ou une classe CSS
+ * @param {string} [options.infobulle='Guide d'auto-formation'] Description (tooltip) du bouton
+ * @param {string} [options.lien] Lien vers l'aide. Si absent, lien vers l'aide du MSP.
+ * @returns {Outil.OutilExportCSV} Instance de {@link Outil.OutilExportCSV}
+ */
+ function OutilExportCSV(options){
+ this.options = options || {};
+ this.defautOptions = $.extend({}, this.defautOptions, {
+ icone: 'export-csv',
+ id: 'export-csv_igo',
+ infobulle: "Exporter les données en CSV"
+ });
+ };
+
+ OutilExportCSV.prototype = new Outil();
+ OutilExportCSV.prototype.constructor = OutilExportCSV;
+
+
+ /**
+ * Action de l'outil.
+ * Exporter les données de la table en CSV
+ * @method
+ * @name Outil.OutilExportCSV#executer
+ */
+ OutilExportCSV.prototype.executer = function () {
+
+ var colonnes = this.options.colonnes;
+ var donnees = this.options.donnees;
+
+ var tabTitre = Array();
+ var tabAttribut = Array();
+ var tabDonnees = Array();
+
+ var attributFloat = Array();
+
+ $.each(colonnes, function(ind, col){
+ tabTitre.push(col.titre);
+
+ //TODO exclure les colonnes non visible ("isHidden" n'est pas implémenté dans extjs 3.4)
+ tabAttribut.push(col.propriete);
+
+ if(col.type == "float"){
+ attributFloat.push(col.propriete);
+ }
+ });
+
+ tabDonnees.push(tabTitre);
+
+ $.each(donnees, function(ind, occu){
+ var ligne = Array();
+ $.each(tabAttribut, function(index, attribut){
+
+ //Remplacer le point par une virgule pour les float
+ if(attributFloat.indexOf(attribut) == -1){
+ ligne.push(occu.proprietes[attribut]);
+ }
+ else {
+ ligne.push(occu.proprietes[attribut].replace(".",","));
+ }
+ });
+ tabDonnees.push(ligne);
+ });
+
+ var csvContent = "";
+ tabDonnees.forEach(function(infoArray, index){
+
+ dataString = infoArray.join(";");
+ csvContent += index < tabDonnees.length ? dataString+ "\n" : dataString;
+
+ });
+
+ var encodedUri = encodeURI(csvContent);
+ var link = document.createElement("a");
+ link.setAttribute("href", "data:text/csv;charset=utf-8,\uFEFF" + encodedUri);
+ link.setAttribute("download", "export "+this.options.titreFichier+".csv");
+
+ link.click(); // This will download the data file named "my_data.csv".
+
+
+ };
+
+ return OutilExportCSV;
+
+});
\ No newline at end of file
diff --git a/interfaces/navigateur/public/js/app/outil/outilExportFichier.js b/interfaces/navigateur/public/js/app/outil/outilExportFichier.js
index 031f1d92..b2ecc00d 100644
--- a/interfaces/navigateur/public/js/app/outil/outilExportFichier.js
+++ b/interfaces/navigateur/public/js/app/outil/outilExportFichier.js
@@ -48,7 +48,10 @@ define(['outil', 'aide', 'analyseurGeoJSON', 'togpx'], function(Outil, Aide, Ana
// ['TIGER', 'TIGER'],
['pgdump', 'PGDump', 'sql']
//['VRT', 'VRT']
- ]
+ ],
+ libelleFormatOutput: 'Format Output',
+ exampleCoordonnee: true,
+ titreFenetre: "Exportation de occurences sélectionnées"
});
this.oOutputFormatStore = new Ext.data.SimpleStore({
@@ -173,7 +176,7 @@ define(['outil', 'aide', 'analyseurGeoJSON', 'togpx'], function(Outil, Aide, Ana
var myWin = new Ext.Window({
id : 'myWin',
- title : "Exportation de occurences sélectionnées",
+ title : this.options.titreFenetre,
autoHeight : true,
autoWidth: true,
items : [myuploadform],
@@ -352,7 +355,7 @@ define(['outil', 'aide', 'analyseurGeoJSON', 'togpx'], function(Outil, Aide, Ana
var szDefaultOutputFormat = this.oOutputFormatStore.data.items[0].data.value;
var oOutputFormatComboBox = new Ext.form.ComboBox({
id : 'exportOutputFormat',
- fieldLabel: 'Format Output',
+ fieldLabel: this.options.libelleFormatOutput,
store: this.oOutputFormatStore,
valueField: 'value',
value: szDefaultOutputFormat,
@@ -392,7 +395,7 @@ define(['outil', 'aide', 'analyseurGeoJSON', 'togpx'], function(Outil, Aide, Ana
var szDefaultEPSG = this.oEPSGStore.data.items[0].data.value;
var oEPSGComboBox = new Ext.form.ComboBox({
id : 'exportEPSGOutput',
- fieldLabel: 'Système de coordonnée
Ex. :'+this.oEPSGStore.data.items[0].data.exemple,
+ fieldLabel: 'Système de coordonnées'+(this.options.exampleCoordonnee === true ? '
Ex. :'+ this.oEPSGStore.data.items[0].data.exemple : ""),
store: this.oEPSGStore,
valueField: 'value',
value: szDefaultEPSG,
diff --git a/interfaces/navigateur/public/js/app/outil/outilImportFichier.js b/interfaces/navigateur/public/js/app/outil/outilImportFichier.js
index 59840bf9..d829c78a 100644
--- a/interfaces/navigateur/public/js/app/outil/outilImportFichier.js
+++ b/interfaces/navigateur/public/js/app/outil/outilImportFichier.js
@@ -140,7 +140,7 @@ define(['outil', 'aide', 'analyseurGeoJSON', 'vecteur', 'togeojson', 'fileUpload
anchor: '95%',
allowBlank: false,
xtype: 'fileuploadfield',
- id: 'upload',
+ id: 'uploadOutilImportFichier',
emptyText: 'Sélectionner un fichier...',
fieldLabel: 'Fichier',
buttonText: 'Parcourir',
@@ -271,7 +271,7 @@ define(['outil', 'aide', 'analyseurGeoJSON', 'vecteur', 'togeojson', 'fileUpload
var data = new FormData();
//Obtenir le fichier d'upload
- var file = jQuery('input[id^="upload"]')[1].files[0];
+ var file = jQuery('input[id^="uploadOutilImportFichier"]')[1].files[0];
var extension = file.name.split(".")[file.name.split(".").length-1];
var filename = file.name.split(".")[0];
//Exception pour le format GPX, le service ogre ne fonctionne pas bien, on utilise donc togeojson
@@ -295,7 +295,7 @@ define(['outil', 'aide', 'analyseurGeoJSON', 'vecteur', 'togeojson', 'fileUpload
data.append('upload', file);
//Ne pas afficher les erreurs
- //data.append("skipFailures",'');
+ data.append("skipFailures",'');
//Projection de la carte
//data.append("targetSrs", that.projection);
@@ -404,6 +404,27 @@ define(['outil', 'aide', 'analyseurGeoJSON', 'vecteur', 'togeojson', 'fileUpload
});
}
}
+
+ //Illiminé les doublons de coordonnées pour chaque géométrie de type polygone
+ if(feat.geometry.type === "Polygon")
+ {
+ var coordPrec = "";
+ var coordIndexToPop = new Array();
+ $.each(feat.geometry.coordinates, function(index, geom){
+ $.each(geom, function(ind, coord){
+ //Si égale à la coordonnée précédente
+ if(coordPrec !== "" && coordPrec[0] === coord[0] && coordPrec[1] === coord[1]){
+ coordIndexToPop.push(ind);
+ }else{
+ //Sinon si coordonnée à 3dimensions, on retire la dimension "z"
+ if(coord.length === 3) {
+ coord.pop();
+ }
+ }
+ coordPrec = coord;
+ });
+ });
+ }
}
});
diff --git a/interfaces/navigateur/public/js/app/outil/outilInfo.js b/interfaces/navigateur/public/js/app/outil/outilInfo.js
index 151f7eaa..24e15fd8 100644
--- a/interfaces/navigateur/public/js/app/outil/outilInfo.js
+++ b/interfaces/navigateur/public/js/app/outil/outilInfo.js
@@ -45,11 +45,33 @@ define(['outil', 'aide', 'browserDetect', 'fonctions', 'point'], function (Outil
OutilInfo.prototype.activerEvent = function () {
this.carte.ajouterDeclencheur('desactiverClique', this.relever, {scope: this});
this.carte.ajouterDeclencheur("clique", this.cliqueCarte, {scope: this});
+
+ //Désactiver la sélection sur les couches vecteur afin de permettre en tout temps le getInfo à travers une géométrie
+ var couches = this.carte.gestionCouches.obtenirCouchesParType("Vecteur");
+
+ $.each(couches, function(index, couche) {
+ if(couche.options.selectionnable)
+ {
+ couche.controles.desactiverSelection();
+ }
+ });
+
};
OutilInfo.prototype.desactiverEvent = function () {
this.carte.enleverDeclencheur('desactiverClique', this.relever);
this.carte.enleverDeclencheur("clique", this.cliqueCarte);
+
+ //Réactiver la sélection sur les couches vecteur
+ var couches = this.carte.gestionCouches.obtenirCouchesParType("Vecteur");
+
+ $.each(couches, function(index, couche) {
+ if(couche.options.selectionnable)
+ {
+ couche.controles.activerSelection();
+ }
+ });
+
};
/**
@@ -134,6 +156,7 @@ define(['outil', 'aide', 'browserDetect', 'fonctions', 'point'], function (Outil
'infoAction': couche.options.infoAction,
'infoUrl': couche.options.infoUrl,
'infoGabarit': couche.options.infoGabarit,
+ 'extraParams': couche.options.extraParams,
'estInterrogable': couche.options.estInterrogable,
'url': couche.options.url,
'nom': couche.options.nom,
@@ -234,18 +257,6 @@ define(['outil', 'aide', 'browserDetect', 'fonctions', 'point'], function (Outil
'y': Math.floor(point.y)
});
-// var prmt = [];
-// var lonlat = this.carte._carteOL.getLonLatFromPixel(this.px);
-// var point = new Point(lonlat.lon, lonlat.lat).projeter('EPSG:4326');
-//
-// prmt.push({
-// 'name': oCoucheObtnInfo.nom,
-// 'projection': 'EPSG:4326',
-// 'x': point.x,
-// 'y': point.y
-// });
-
-
var infoUrlFormat = this.formatUrl(oCoucheObtnInfo.infoUrl, [prmt[0].name, prmt[0].projection, prmt[0].x, prmt[0].y]);
if (oCoucheObtnInfo.infoAction !== undefined) {
@@ -268,32 +279,50 @@ define(['outil', 'aide', 'browserDetect', 'fonctions', 'point'], function (Outil
}
} else {
- //Appliquer Url WMS GetFeatureInfo
+ //Appliquer Time extent WMS GetFeatureInfo
var timeExtent;
if(oCoucheObtnInfo.layer._layer && oCoucheObtnInfo.layer._layer.params){
timeExtent = oCoucheObtnInfo.layer._layer.params.TIME;
}
+ //Trouver filter WMS GetFeatureInfo
+ var filterParams = {};
+ if(oCoucheObtnInfo.layer._layer && oCoucheObtnInfo.layer._layer.params){
+ $.each(oCoucheObtnInfo.layer._layer.params, function (name, value)
+ {
+ if (name !== 'LAYERS' && name !== 'TRANSPARENT' && name !== 'FORMAT' && name !== 'SRS' && name !== 'SERVICE' &&
+ name !== 'VERSION' && name !== 'STYLES' && name !== 'REQUEST') {
+ filterParams = $.extend({}, filterParams, filterParams[name] = value );
+ }
+ });
+ }
+
+ //Appliquer Url WMS GetFeatureInfo
+ var getInfoData = {
+ LAYERS: oCoucheObtnInfo.nom,
+ SERVICE: 'WMS',
+ REQUEST: "GetFeatureInfo",
+ EXCEPTIONS: "application/vnd.ogc.se_xml",
+ VERSION: oCoucheObtnInfo.version,
+ SRS: this.carte._carteOL.getProjection(),
+ BBOX: this.carte._carteOL.getExtent().toBBOX(),
+ QUERY_LAYERS: oCoucheObtnInfo.nom,
+ X: Math.floor(this.px.x),
+ Y: Math.floor(this.px.y),
+ INFO_FORMAT: coucheInfoFormat,
+ FEATURE_COUNT: 100,
+ WIDTH: this.carte._carteOL.size.w,
+ HEIGHT: this.carte._carteOL.size.h,
+ TIME: timeExtent,
+ _encodage: encodage,
+ xsl_template: xslTemplate
+ };
+
+ //Appliquer filtre en plus du WMS GetFeatureInfo
+ getInfoData = $.extend({}, getInfoData, filterParams );
+
jqXHRs.push($.ajax({
- url: Aide.utiliserProxy(decodeURIComponent(oCoucheObtnInfo.url)),
- data: {
- LAYERS: oCoucheObtnInfo.nom,
- SERVICE: 'WMS',
- REQUEST: "GetFeatureInfo",
- EXCEPTIONS: "application/vnd.ogc.se_xml",
- VERSION: oCoucheObtnInfo.version,
- SRS: this.carte._carteOL.getProjection(),
- BBOX: this.carte._carteOL.getExtent().toBBOX(),
- QUERY_LAYERS: oCoucheObtnInfo.nom,
- X: Math.floor(this.px.x),
- Y: Math.floor(this.px.y),
- INFO_FORMAT: coucheInfoFormat,
- FEATURE_COUNT: 100,
- WIDTH: this.carte._carteOL.size.w,
- HEIGHT: this.carte._carteOL.size.h,
- TIME: timeExtent,
- _encodage: encodage,
- xsl_template: xslTemplate
- },
+ url: Aide.utiliserProxy(decodeURIComponent(oCoucheObtnInfo.url )),
+ data:getInfoData ,
context: this,
dataType: coucheDataType,
beforeSend: function (jqXHR) {
diff --git a/interfaces/navigateur/public/js/app/outil/outilMesure.js b/interfaces/navigateur/public/js/app/outil/outilMesure.js
index 59903396..77b25d8c 100644
--- a/interfaces/navigateur/public/js/app/outil/outilMesure.js
+++ b/interfaces/navigateur/public/js/app/outil/outilMesure.js
@@ -379,9 +379,59 @@ define(['outil', 'aide', 'fonctions'], function(Outil, Aide, Fonctions) {
}
}
- oWindowMeasr.show();
+ this.oWindowMeasr = oWindowMeasr;
+ this.afficherFenetre();
};
+ /**
+ * Afficher la fenêtre de l'outil
+ * @method
+ * @returns {bool} true/false si la fenêtre a été affiché ou non
+ */
+ OutilMesure.prototype.afficherFenetre = function() {
+
+ if(this.oWindowMeasr)
+ {
+ this.oWindowMeasr.show();
+ return true;
+ }
+ else
+ return false;
+ };
+
+ /**
+ * Masquer la fenêtre de l'outil
+ * @method
+ * @returns {bool} true/false si la fenêtre a été masqué ou non
+ */
+ OutilMesure.prototype.cacherFenetre = function() {
+ if(this.oWindowMeasr)
+ {
+ this.oWindowMeasr.hide();
+ return true;
+ }
+ else
+ return false;
+ };
+
+ /**
+ * Positionner la fenêtre selon les coordonnées gauche, haut
+ * @method
+ * @param {integer} gauche Coordonnée de position gauche de la fenêtre
+ * @param {integer} haut Coordonnée de la position droite de la fenêtre
+ */
+ OutilMesure.prototype.positionnerFenetre = function(gauche,haut) {
+ this.oWindowMeasr.setPosition(gauche, haut);
+ };
+
+ /**
+ * Obtenir l'objet de la fenêtre
+ * @method
+ * @returns {object} Objet Ext de la fenêtre
+ */
+ OutilMesure.prototype.obtenirFenetre = function() {
+ return this.oWindowMeasr;
+ }
return OutilMesure;
diff --git a/interfaces/navigateur/public/js/app/outil/outilPartagerCarte.js b/interfaces/navigateur/public/js/app/outil/outilPartagerCarte.js
index a18790dc..d098b0ab 100644
--- a/interfaces/navigateur/public/js/app/outil/outilPartagerCarte.js
+++ b/interfaces/navigateur/public/js/app/outil/outilPartagerCarte.js
@@ -73,6 +73,17 @@ define(['outil', 'aide', 'browserDetect', 'WMS'], function(Outil, Aide, BrowserD
}
}
},*/{
+ text: 'Ajouter aux favoris',
+ formBind: true,
+ id:'favoris',
+ handler: function(btn, e){
+ var lien = Ext.getCmp('msgLien');
+ var bCopied = lien.getValue();
+ if (BrowserDetect.browser === "Explorer") { // IE Favorite
+ window.external.AddFavorite(bCopied, document.title);
+ }
+ }
+ },{
text: 'Envoyer par courriel',
formBind: true,
handler: function() {
@@ -109,6 +120,14 @@ define(['outil', 'aide', 'browserDetect', 'WMS'], function(Outil, Aide, BrowserD
});
}
+ var fav = Ext.getCmp('favoris');
+
+ if (BrowserDetect.browser === "Explorer") {
+ fav.setVisible(true);
+ } else {
+ fav.setVisible(false);
+ }
+
this.windowWizardContexte.show();
this.showBusy('frmWizardContexte-statusbar', 'busy', 'construction de l\'adresse en cours');
diff --git a/interfaces/navigateur/public/js/app/outil/outilZoomPreselection.js b/interfaces/navigateur/public/js/app/outil/outilZoomPreselection.js
index 44560f1e..0887f3ef 100644
--- a/interfaces/navigateur/public/js/app/outil/outilZoomPreselection.js
+++ b/interfaces/navigateur/public/js/app/outil/outilZoomPreselection.js
@@ -37,16 +37,18 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
fieldLabel: 'Hydrographie',
requestParametre: 'search_hydronyme'
});
+ } else if (this.options.type !== undefined){
+ this.defautOptions = $.extend({},this.defautOptions);
} else {
throw new Error("OutilZoomPreselection a besoin d'un type");
}
this.defautOptions.executer = this.afficherFormRecherche;
};
-
+
OutilZoomPreselection.prototype = new Outil();
OutilZoomPreselection.prototype.constructor = OutilZoomPreselection;
-
+
OutilZoomPreselection.prototype.submitForm = function(comboBox) {
if (this.options.type==='hydro'){
@@ -64,7 +66,7 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
data: {
request:'GetCoordonnees',
type: this.options.type.replace('-','_'),
- id:code,
+ id:code,
epsg:epsg
},
//crossDomain: true, //utilisation du proxy
@@ -76,22 +78,22 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
});
this.cacherFormRecherche();
- }
+ }
comboBox.setValue("");
comboBox.clearInvalid();
};
-
-
+
+
OutilZoomPreselection.prototype.creerFormRecherche = function() {
//Magasin de données pour les MRC
var url_coordonnees = Aide.utiliserProxy(this.options.service+'&request='+this.options.requestParametre);
var store, comboBox;
this.selection; //pour hydro
-
+
var id = this.obtenirId();
var texteForm=this.options.texteForm;
var fieldLabel=this.options.fieldLabel;
-
+
if (this.options.type==='hydro'){
store = new Ext.data.JsonStore({
root:'data',
@@ -128,28 +130,28 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
forceSelection:true,
selectOnFocus:true,
anchor:'95%',
- listeners: {
+ listeners: {
select:function(combo, record, index) {
that.selection = record.data;
this.setValue(record.get('ogc_fid'));
- },
+ },
beforeQuery:function(combo){
if(combo.query.indexOf(',') > 0){
combo.query = combo.query.substring(0,combo.query.indexOf(','));
}
}
}
-
+
});
-
+
} else {
store = new Ext.data.JsonStore({
- url:url_coordonnees, //+$.camelCase('GetListe-'+this.options.type),
+ url:url_coordonnees, //+$.camelCase('GetListe-'+this.options.type),
root:'data',
fields:['code', 'nom'],
autoLoad:true
});
-
+
comboBox = new Ext.form.ComboBox({
id:'combo_'+id,
name:'combo',
@@ -171,10 +173,10 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
}
}
}
- });
+ });
}
store.on('exception', this.gestionErreurStore, this);
-
+
var button_ok = new Ext.Button({
id:'button_ok'+id,
type:'button',
@@ -185,7 +187,7 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
this.submitForm(comboBox);
}
});
-
+
var panneau = new Ext.form.FormPanel({
id:'form_recherche_'+id,
padding:'5 5 5 5',
@@ -195,13 +197,13 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
labelAlign:'top',
items:[comboBox],
buttons:[button_ok],
- listeners: {
+ listeners: {
afterrender: function(field) {
comboBox.focus(false, 250);
}
}
});
-
+
this.window_recherche = new Ext.Window({
title:'Zoom sur '+ texteForm,
width:300,
@@ -213,13 +215,13 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
items:[panneau]
});
};
-
+
OutilZoomPreselection.prototype.goHydro = function (xmin, ymin, xmax, ymax, x, y, no_reg_admin){
var limites = new Limites(xmax, ymin, xmin, ymax, 'EPSG:32198'); //todo: le résultat en x est inversé...
var limitesProj = limites.projeter('EPSG:3857');
- this.carte.zoomer(limitesProj);
+ this.carte.zoomer(limitesProj);
}
-
+
OutilZoomPreselection.prototype.afficherFormRecherche = function() {
//Vérifier que la fenêtre n'est pas déjà créé
if(!this.window_recherche){
@@ -227,11 +229,11 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
}
this.window_recherche.show();
};
-
+
OutilZoomPreselection.prototype.cacherFormRecherche = function() {
this.window_recherche.hide();
};
-
+
OutilZoomPreselection.prototype.gestionErreurStore = function(http_proxy, type, action, options, response){
var reponse = response.responseText;
if(response.status === 404){
@@ -246,7 +248,7 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
OutilZoomPreselection.prototype.coordonneesZoomSuccess= function(data){
if(data["success"]){
var coordonnees = data["data"][0];
-
+
var proprieteOccurence = {};
for(var propriete in coordonnees){
if (coordonnees.hasOwnProperty(propriete)) {
@@ -254,23 +256,23 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
}
}
proprieteOccurence['regle']="true";
- var etiquette = proprieteOccurence.res_nm_reg||proprieteOccurence.mrs_nm_reg||proprieteOccurence.mus_nm_mun;
-
- var style = new Style({
+ var etiquette = proprieteOccurence.res_nm_reg||proprieteOccurence.mrs_nm_reg||proprieteOccurence.mus_nm_mun || proprieteOccurence[this.options.etiquette];
+
+ var style = new Style({
etiquette:etiquette,
- couleur:'#2e8cd6',
+ couleur:'#2e8cd6',
limiteCouleur: '#2e8cd6',
opacite:0.05
});
-
- var styleSelectionne = new Style({
+
+ var styleSelectionne = new Style({
etiquette:etiquette,
- couleur:'#2e8cd6',
+ couleur:'#2e8cd6',
limiteCouleur: '#2e8cd6',
limiteEpaisseur: 2,
opacite:0.3
});
-
+
var regle= new Style({
etiquette:etiquette,
filtres: [{
@@ -280,7 +282,7 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
}
]
});
-
+
var regleSelectionnee= new Style({
etiquette:etiquette,
filtres: [{
@@ -290,14 +292,14 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
}
]
});
-
+
var wkt = new OpenLayers.Format.WKT();
var featureOL = wkt.read(coordonnees.geom);
-
+
var occurence = new Occurence(featureOL.geometry, proprieteOccurence);
-
+
var couche = this.carte.gestionCouches.obtenirCouchesParTitre('Géométrie - Outil Zoom');
-
+
if(couche.length > 0){
couche = couche[0];
couche.enleverTout();
@@ -308,20 +310,20 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
else{
var that = this;
var couche = new Vecteur({active: true, suppressionPermise: true, titre:'Géométrie - Outil Zoom',
- styles:{defaut:regle, select: regleSelectionnee}});
+ styles:{defaut:regle, select: regleSelectionnee}});
this.carte.gestionCouches.ajouterCouche(couche);
that.ajouterOccurence(couche, occurence);
//this.carte.gestionCouches.ajouterCouche(couche, {callback: function(){that.ajouterOccurence(couche, occurence)}});
}
-
-
+
+
}else{
alert(data["errors"]);
}
};
-
+
OutilZoomPreselection.prototype.ajouterOccurence= function(couche, occurence){
couche.ajouterOccurence(occurence);
occurence.afficher();
@@ -331,4 +333,3 @@ define(['outil', 'limites','aide', 'style', 'occurence', 'vecteur'], function(Ou
return OutilZoomPreselection;
});
-
diff --git a/interfaces/navigateur/public/js/app/panneau/panneauInfo.js b/interfaces/navigateur/public/js/app/panneau/panneauInfo.js
index 4333d559..61d23465 100644
--- a/interfaces/navigateur/public/js/app/panneau/panneauInfo.js
+++ b/interfaces/navigateur/public/js/app/panneau/panneauInfo.js
@@ -5,7 +5,7 @@
* @author Marc-André Barbeau, MSP
* @version 1.0
*/
-define(['panneau'], function(Panneau) {
+define(['panneau', 'point', 'aide'], function(Panneau, Point, Aide) {
/**
* Création de l'object Panneau.PanneauInfo.
* Pour la liste complète des paramètres, voir {@link Panneau}
@@ -26,8 +26,14 @@ define(['panneau'], function(Panneau) {
this.options = options || {};
this._timeUpdateCtrl=0;
- var firstExpand=true;
+ this.projectionAffichage = this.options.projection || 'libelle';
+ if (this.options.projection == 'code'){
+ this.projectionAffichage = 'libelle';
+ }
+
+ var firstExpand=true;
+
var epsgArray = new Array();
for(var index in Proj4js.defs){
@@ -37,14 +43,14 @@ define(['panneau'], function(Panneau) {
var title = Proj4js.defs[index].match(/title=(\S*)/);
var libelle = units!==null?index+'('+units[1]+')':index;
- var info = title!==null?title[1]:index;
+ var nom = title!==null?title[1]:index;
- epsgArray.push([index, libelle, info]);
+ epsgArray.push([index, libelle, nom]);
}
}
var projStore = new Ext.data.ArrayStore({id:0,
- fields: ['code', 'libelle', 'info'],
+ fields: ['code', 'libelle', 'nom'],
data: epsgArray
});
@@ -57,6 +63,12 @@ define(['panneau'], function(Panneau) {
items:[{
ctCls: 'x-form-field infoPosition'
}]
+ },{
+ id: 'currentMousePositionElevation',
+ title: 'Élevation',
+ items:[{
+ ctCls: 'x-form-field infoPosition'
+ }]
},{
id: 'currentScaleComponent',
title: 'Échelle',
@@ -68,11 +80,11 @@ define(['panneau'], function(Panneau) {
title: 'Projection',
items:[{
id: 'currentProjectionComboBox',
- tpl: '{libelle}
',
+ tpl: '{' + this.projectionAffichage + '}
',
xtype: 'combo',
store: projStore ,
valueField: 'code',
- displayField: 'libelle',
+ displayField: this.projectionAffichage,
typeAhead: true,
triggerAction: 'all',
selectOnFocus:true,
@@ -88,7 +100,7 @@ define(['panneau'], function(Panneau) {
}
}
}]
- }];
+ }];
this.defautOptions.defaults = {
split: true,
height: 50,
@@ -97,7 +109,7 @@ define(['panneau'], function(Panneau) {
maxSize: 200,
margins: '0 0 0 0'
};
-
+
this.defautOptions.position = 'sud';
this.defautOptions.id = 'info-panneau';
this.defautOptions.titre = 'Informations additionnelles';
@@ -105,6 +117,7 @@ define(['panneau'], function(Panneau) {
this.defautOptions.minDimension = 75;
this.defautOptions.maxDimension = 400;
this.defautOptions.ouvert = false;
+ this.defautOptions.elevation = false;
this.defautOptions.listeners = {
expand: function(panneau) {
if (firstExpand){
@@ -112,14 +125,24 @@ define(['panneau'], function(Panneau) {
panneau.scope.initialiserEchelle();
panneau.scope.initialiserPositionPointeur();
panneau.scope.afficherProjectionAffichage();
- }
+ }
+ panneau.scope.initialiserPositionElevation();
//panneau.scope.activerHorloge();
},
collapse: function(panneau) {
+ panneau.scope.desactiverPositionElevation();
//panneau.scope.desactiverHorloge();
},
afterrender: function(panneau) {
- //panneau.scope.afficherHorloge();
+ if (Aide.toBoolean(panneau.scope.options.ouvert)) {
+ setTimeout(function(){
+ firstExpand=false;
+ panneau.scope.initialiserEchelle();
+ panneau.scope.initialiserPositionPointeur();
+ panneau.scope.afficherProjectionAffichage();
+ panneau.scope.initialiserPositionElevation();
+ }, 1);
+ }
}
};
@@ -128,6 +151,11 @@ define(['panneau'], function(Panneau) {
PanneauInfo.prototype = new Panneau();
PanneauInfo.prototype.constructor = PanneauInfo;
+
+ PanneauInfo.prototype._init = function() {
+ Panneau.prototype._init.call(this);
+ }
+
/**
* Afficher l'heure dans le panneau
* @method
@@ -245,6 +273,66 @@ define(['panneau'], function(Panneau) {
};
+ };
+
+ /**
+ * Activer le declencheur pauseSurvolCarte sur la carte
+ * @method
+ * @private
+ * @name PanneauInfo#initialiserPositionElevation
+ */
+ PanneauInfo.prototype.initialiserPositionElevation = function(){
+ if (this.options.elevation){
+ this.carte.ajouterDeclencheur('pauseSurvolCarte', this.obtenirElevation, {scope: this.carte, id:"afficherElevation"});
+ } else {
+ this._getPanel().get("currentMousePositionElevation").setVisible(false);
+ }
+ };
+
+ /**
+ * Desactiver le declencheur pauseSurvolCarte sur la carte
+ * @method
+ * @private
+ * @name PanneauInfo#desactiverPositionElevation
+ */
+ PanneauInfo.prototype.desactiverPositionElevation = function(){
+ if (this.options.elevation){
+ this.carte.enleverDeclencheur('pauseSurvolCarte', this.obtenirElevation);
+ }
+ };
+
+
+ /**
+ * Appel un servcie API Elevation et retourne l'information
+ * dans le panneauInfo (Élevation)
+ * @method
+ * @private
+ * @name PanneauInfo#obtenirElevation
+ */
+ PanneauInfo.prototype.obtenirElevation = function(e) {
+
+ //Valider que le service est défini dans le fichier de configuration
+ if(Aide.obtenirConfig('PanneauInfo').urlServiceElevation === undefined) {
+ Aide.afficherMessage("Erreur", "Vous devez ajouter un service d'API Élevation de Ressources naturelles Canada pour cet outil dans votre fichier de configuration.");
+ return false;
+ }
+ var geomt = new Point(e.x, e.y);
+ geomt = geomt.projeter('EPSG:4326');
+ $.get(Aide.utiliserProxy(decodeURIComponent(Aide.obtenirConfig('PanneauInfo').urlServiceElevation + '?lat=' + geomt.y + '&lon=' + geomt.x )), null, function (data, textStatus) {
+ if (data.length > 0) {
+ var elev = JSON.parse(data);
+ var panneauInfo;
+ var nav = Aide.obtenirNavigateur();
+ panneauInfo = nav.obtenirPanneauxParType('PanneauInfo')[0];
+
+ if (panneauInfo){
+ $('#currentMousePositionElevation').find('.infoPosition').html('Altitude: ' + elev.altitude + '(m)');
+ }
+ clearTimeout(Aide.obtenirNavigateur().carte._timerEvenementPauseSurvol);
+ } else {
+ clearTimeout(Aide.obtenirNavigateur().carte._timerEvenementPauseSurvol);
+ }
+ }, 'html');
};
return PanneauInfo;
diff --git a/interfaces/navigateur/public/js/app/panneau/panneauTable.js b/interfaces/navigateur/public/js/app/panneau/panneauTable.js
index c6a9bfb9..a1adece8 100644
--- a/interfaces/navigateur/public/js/app/panneau/panneauTable.js
+++ b/interfaces/navigateur/public/js/app/panneau/panneauTable.js
@@ -1,4 +1,4 @@
-define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelection', 'outil', 'outilMenu', 'outilDessin', 'outilEdition', 'outilControleMenu', 'libs/Ext.ux/PagingStore/PagingStore','libs/extension/Extjs/JsonReader'], function(Panneau, Aide, ContexteMenuTable, BarreOutils, OutilTableSelection, Outil, OutilMenu, OutilDessin, OutilEdition, OutilControleMenu) {
+define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelection', 'outil', 'outilMenu', 'outilDessin', 'outilEdition', 'outilControleMenu', 'outilExportCSV', 'libs/Ext.ux/PagingStore/PagingStore','libs/extension/Extjs/JsonReader'], function(Panneau, Aide, ContexteMenuTable, BarreOutils, OutilTableSelection, Outil, OutilMenu, OutilDessin, OutilEdition, OutilControleMenu, OutilExportCSV) {
function PanneauTable(options) {
this.options = options || {};
@@ -43,14 +43,14 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
that.reconfigurerPaginationBarre(store);
},
rowmousedown:function(ceci,rowindex,e){
-
+
Igo.nav.ctrlPressed = e.ctrlKey;
-
+
},
rowmouseup:function(ceci,rowindex,e){
-
+
Igo.nav.ctrlPressed = e.ctrlKey;
-
+
}
}
};
@@ -92,21 +92,12 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
if(this.options.paginer === true || config.store.totalLength > config.store.lastOptions.params.limit){
this.options.paginer = true;
return new Ext.PagingToolbar({
- pageSize: config.store.lastOptions.params.limit,
- store: config.store,
- displayInfo: true,
- displayMsg: 'Affiche les occurences {0} à {1} de {2}',
- emptyMsg: "Aucune occurence"
- });
-
-
- ide.obtenirNavigateur().evenements.ajouterDeclencheur('occurenceSelectionnee', function(e) {
- e.options.scope.desactiverDessin();
- }, {
- scope: this,
- id: 'activerDessin-OutilExecuter'
+ pageSize: config.store.lastOptions.params.limit,
+ store: config.store,
+ displayInfo: true,
+ displayMsg: 'Affiche les occurences {0} à {1} de {2}',
+ emptyMsg: "Aucune occurence"
});
-
}
else{
return null;
@@ -249,6 +240,7 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
header : titre,
width : colTemplate.largeur,
sortable : colTemplate.triable,
+ hideable : colTemplate.masquable,
alignement : colTemplate.alignement,
dataIndex: base + colTemplate.propriete,
renderer : renduDirty,
@@ -344,7 +336,7 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
PanneauTable.prototype.configurer = function(template, donnees){
var that=this;
this.desactiverDeclencheursVecteur(this.donnees);
-
+
this.template = template || this.template || {};
this.donnees = donnees || this.donnees || [];
this.donnees.panneauTable = this;
@@ -504,6 +496,8 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
that.rafraichir();
}
}));
+
+ outils.push(new OutilExportCSV({donnees: this.donnees.listeOccurences, colonnes: this.template.colonnes, titreFichier: this.options.titre}));
}
var menuSelection = new OutilMenu({titre: 'Sélection'});
@@ -594,9 +588,9 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
e.options.scope.selectionnerParOccurences([e.occurence], true);
}
else{
- e.options.scope.selectionnerParOccurences([e.occurence]);
+ e.options.scope.selectionnerParOccurences([e.occurence]);
}*/
-
+
};
PanneauTable.prototype._deselectionEvent = function(e){
@@ -656,14 +650,14 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
PanneauTable.prototype.selectionnerParOccurences = function(occurences, garderSelection, scroll, notifieVue){
var that=this;
garderSelection = typeof garderSelection == "undefined" ? Igo.nav.ctrlPressed : garderSelection;
-
+
$.each(occurences, function(key, value){
if(!that._panel.store){return false;}
var index = that._panel.store.indexOfId(value.id);
if(index === -1){
return true;
}
-
+
that.selectionnerParIndex(index, garderSelection, scroll, notifieVue);
});
@@ -877,9 +871,9 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
PanneauTable.Controles.prototype.activerSelection = function() {
if(!this._._panel){return false;};
-
+
this._._panel.selModel.on('selectionchange', this._selection, this);
-
+
};
PanneauTable.Controles.prototype.desactiverSelection = function() {
@@ -912,7 +906,7 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
};
PanneauTable.Controles.prototype.finSurvol = function(event,html) {
-
+
var index = this._._panel.getView().findRowIndex(html);
if(index){
var occu = this._.obtenirEnregistrementParIndex(index);
@@ -943,7 +937,7 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
}
};
-
+
PanneauTable.Controles.prototype._selection = function(selection) {
var selectionIGO = Array();
@@ -970,7 +964,7 @@ define(['panneau', 'aide', 'contexteMenuTable', 'barreOutils', 'outilTableSelect
}
this._.declencher({ type: "tableEnregistrementSelection", selection: selectionIGO, vecteur: vecteur });
-
+
};
diff --git a/interfaces/navigateur/public/libs/Ext.ux/PagingStore/PagingStore.js b/interfaces/navigateur/public/libs/Ext.ux/PagingStore/PagingStore.js
index 144d2189..bc1c200a 100644
--- a/interfaces/navigateur/public/libs/Ext.ux/PagingStore/PagingStore.js
+++ b/interfaces/navigateur/public/libs/Ext.ux/PagingStore/PagingStore.js
@@ -423,7 +423,11 @@ Ext.ux.data.PagingXmlStore = Ext.extend(Ext.ux.data.PagingStore, {
Ext.reg('pagingxmlstore', Ext.ux.data.PagingXmlStore);
Ext.ux.data.PagingArrayStore = Ext.extend(Ext.ux.data.PagingStore, {
- constructor: Ext.data.ArrayStore.prototype.constructor,
+ constructor: function(config) {
+ Ext.ux.data.PagingArrayStore.superclass.constructor.call(this, Ext.apply(config, {
+ reader: new Ext.data.ArrayReader(config)
+ }));
+ },
loadData: function (data, append) {
if (this.expandData === true) {
var r = [];
diff --git a/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/WMSBrowser-build.js.map b/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/WMSBrowser-build.js.map
index 583e5b6a..b10fe205 100644
--- a/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/WMSBrowser-build.js.map
+++ b/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/WMSBrowser-build.js.map
@@ -1 +1 @@
-{"version":3,"file":"WMSBrowser-build.js","sources":["data/Store.js","data/WMSBrowserWMSCapabilitiesStore.js","plugins/WMSBrowserAlerts.js","widgets/WMSBrowser.js","widgets/WMSBrowserStatusBar.js","widgets/grid/WMSBrowserGridPanel.js","widgets/tree/WMSBrowserRootNode.js","widgets/tree/WMSBrowserTreePanel.js","widgets/tree/patchProcessResponse.js","locale/WMSBrowser-fr.js"],"names":["Ext","namespace","data","Store","prototype","getValueArray","value","aszValues","nValues","this","getCount","i","push","getAt","get","GeoExt","ux","WMSBrowserWMSCapabilitiesStore","extend","WMSCapabilitiesStore","url","layerOptions","wmsbrowser","gridPanel","map","constructor","config","apply","layerStore","arguments","callee","superclass","call","on","onCapabilitiesLoad","onCapabilitiesLoadException","store","records","options","srs","getProjection","mapMaxExtent","getMaxExtent","clone","transform","OpenLayers","Projection","resetLayerPreview","length","record","Util","indexOf","set","extent","layerExtent","Bounds","fromString","Array","fromArray","intersectsBounds","fireEvent","selectFirstRecordOnStoreLoad","getSelectionModel","selectRow","xtype","serverComboBox","getXType","form","ComboBox","aszUrls","index","currentUrl","Record","add","noLayerReturnedText","plugins","WMSBrowserAlerts","util","Observable","autoHidePopup","popupTimeout","init","alertPopupTimeout","alertPopupAutoHide","onGetCapabilitiesFail","onGenericError","showPopup","title","message","extIcon","MessageBox","WARNING","getDialog","manager","zseed","WindowMgr","WindowGroup","show","msg","modal","width","buttons","OK","icon","setTimeout","hide","errorText","urlInvalidText","warningText","WMSBrowser","Panel","CUSTOM_EVENTS","DEFAULT_CAPABILITIES_PARAMS","service","request","version","DEFAULT_LAYER_BROWSER_XTYPE","tree","TreePanel","inputURLText","connectText","pleaseInputURLText","srsCompatibleText","extentCompatibleText","titleText","nameText","queryableText","descriptionText","yesText","noText","addLayerText","addSelectedLayersText","mapPanelPreviewTitleText","layerCantBeAddedText","srsNotSupportedText","srsNotSupportedShortText","extentNotSupportedShortText","pleaseSelectALayerText","pleaseCheckALayerInTreeText","closeWindowText","closeText","inputURLInvalidText","layerNameText","layersSuccessfullyLoadedText","layerAddedText","pleaseInputLayerNameText","serverStore","serverStoreDisplayField","layout","defaultType","defaults","style","capabilitiesParams","mapPanelPreviewOptions","layerNameFieldOptions","useIcons","zoomOnLayerAdded","closeOnLayerAdded","allowInvalidUrl","proxyHost","layerBrowserXtype","layerPreview","mapPanelPreview","infoPanel","centerPanel","layerNameField","statusBar","treePanel","SimpleStore","fields","applyIf","addEvents","initMyItems","initMyToolbar","onAfterRender","columnWidth","name","displayField","typeAhead","mode","forceSelection","triggerAction","allowBlank","validator","urlValidator","invalidText","emptyText","selectOnFocus","northPanel","FormPanel","height","autoHeight","border","region","items","text","scope","handler","b","e","triggerGetCapabilities","MapPanel","collapsible","collapsed","floatable","minSize","split","layers","Layer","hideLayerPreview","showLayerPreview","grid","GridPanel","capStore","createCapStore","createGridPanel","layerBrowser","createTreePanel","WMSBrowserStatusBar","anchor","x","y","createFormPanel","tbar","setWidth","WMSBrowserGridPanel","WMSBrowserTreePanel","descriptionField","TextArea","labelWidth","resetCenterFormPanel","getForm","reset","TextField","actionOptions","addLayer","tooltip","iconCls","action","Action","bbar","Toolbar","getValue","resetAll","isValid","params","getParameterString","urlAppend","Igo","Aide","utiliserProxy","proxy","setUrl","setApi","Api","actions","read","load","loadURL","ownerCt","Window","closeWindow","addCloseButton","getBottomToolbar","VTypes","zoomToRecordLLBBox","zoomToMaxExtent","zoomed","metadata","llbbox","zoomToExtent","setVisibility","removeAll","isLayerNameValid","validLayerName","layerName","resetLayerName","StatusBar","busyText","defaultText","defaultIconCls","onBeforeGetCapabilities","onGetCapabilitiesSuccess","onLayerAdded","showBusy","setStatus","clear","columns","sm","autoExpandColumn","autoWidth","checkboxSelectionModel","CheckboxSelectionModel","singleSelect","renderer","metaData","listeners","beforerowselect","row","keep","rec","isRecordSelectable","rowselect","loadRecord","addLayerToPreview","setLayerNameFromSelectedRecords","rowdeselect","removeLayerFromPreview","header","dataIndex","hidden","boolRenderer","id","sortable","bool","LAYERS","mergeNewParams","layer","format","transparent","splice","getLayerNameFromSelectedRecords","getSelections","len","join","setValue","compatible","reasons","getExtent","toBBOX","getTotalCount","layersParam","newLayerRecord","alert","layerRecord","url_init_msp","nav","barreOutils","obtenirOutilsParType","_MyWMSBrowser","first","WMSBrowserRootNode","AsyncTreeNode","INIT_URL","loader","WMSCapabilitiesLoader","buffer","ratio","singleTile","transitionEffect","layerParams","TRANSPARENT","createNode","attr","checked","leaf","undefined","onWMSCapabilitiesLoad","onWMSCapabilitiesLoadException","setLoaderURL","reload","hasChildNodes","onWMSCapabilitiesStoreLoadException","getLayerNameFromCheckedNodes","cascade","attributes","getUI","isChecked","getNewLayerFromCheckedNodes","newLayer","mspClassMeta","rootVisible","autoScroll","useArrows","animate","root","checkchange","node","isLayerCompatible","setLayerNameFromCheckedNodes","loadLayerMetadata","checkbox","getRootNode","layerAdded","igoCouche","Couches","WMS","layerOL","obtenirNavigateur","carte","gestionCouches","ajouterCouche","bounds","override","processResponse","response","callback","content","BrowserDetect","browser","responseText","xmlDoc","ActiveXObject","async","validateOnParse","resolveExternals","parsed","loadXML","myErr","parseError","reason","responseXML","capabilities","Format","WMSCapabilities","capability","processLayer","getmap","href","loading"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"WMSBrowser-build.js","sources":["data/Store.js","data/WMSBrowserWMSCapabilitiesStore.js","plugins/WMSBrowserAlerts.js","widgets/WMSBrowser.js","widgets/WMSBrowserStatusBar.js","widgets/grid/WMSBrowserGridPanel.js","widgets/tree/WMSBrowserRootNode.js","widgets/tree/WMSBrowserTreePanel.js","widgets/tree/patchProcessResponse.js","locale/WMSBrowser-fr.js"],"names":["Ext","namespace","data","Store","prototype","getValueArray","value","aszValues","nValues","this","getCount","i","push","getAt","get","GeoExt","ux","WMSBrowserWMSCapabilitiesStore","extend","WMSCapabilitiesStore","url","layerOptions","wmsbrowser","gridPanel","map","constructor","config","apply","layerStore","arguments","callee","superclass","call","on","onCapabilitiesLoad","onCapabilitiesLoadException","store","records","options","srs","getProjection","mapMaxExtent","getMaxExtent","clone","transform","OpenLayers","Projection","resetLayerPreview","length","record","Util","indexOf","set","extent","layerExtent","Bounds","fromString","Array","fromArray","intersectsBounds","fireEvent","selectFirstRecordOnStoreLoad","getSelectionModel","selectRow","xtype","serverComboBox","getXType","form","ComboBox","aszUrls","index","currentUrl","Record","add","noLayerReturnedText","plugins","WMSBrowserAlerts","util","Observable","autoHidePopup","popupTimeout","init","alertPopupTimeout","alertPopupAutoHide","onGetCapabilitiesFail","onGenericError","showPopup","title","message","extIcon","MessageBox","WARNING","getDialog","manager","zseed","WindowMgr","WindowGroup","show","msg","modal","width","buttons","OK","icon","setTimeout","hide","errorText","urlInvalidText","warningText","WMSBrowser","Panel","CUSTOM_EVENTS","DEFAULT_CAPABILITIES_PARAMS","service","request","version","DEFAULT_LAYER_BROWSER_XTYPE","tree","TreePanel","inputURLText","connectText","pleaseInputURLText","srsCompatibleText","extentCompatibleText","titleText","nameText","queryableText","descriptionText","yesText","noText","addLayerText","addSelectedLayersText","mapPanelPreviewTitleText","layerCantBeAddedText","srsNotSupportedText","srsNotSupportedShortText","extentNotSupportedShortText","pleaseSelectALayerText","pleaseCheckALayerInTreeText","closeWindowText","closeText","inputURLInvalidText","layerNameText","layersSuccessfullyLoadedText","layerAddedText","pleaseInputLayerNameText","serverStore","serverStoreDisplayField","layout","defaultType","defaults","style","capabilitiesParams","mapPanelPreviewOptions","layerNameFieldOptions","useIcons","zoomOnLayerAdded","closeOnLayerAdded","allowInvalidUrl","proxyHost","layerBrowserXtype","layerPreview","mapPanelPreview","infoPanel","centerPanel","layerNameField","statusBar","treePanel","SimpleStore","fields","applyIf","addEvents","initMyItems","initMyToolbar","onAfterRender","columnWidth","name","displayField","typeAhead","mode","forceSelection","triggerAction","allowBlank","validator","urlValidator","invalidText","emptyText","selectOnFocus","northPanel","FormPanel","height","autoHeight","border","region","items","text","scope","handler","b","e","triggerGetCapabilities","MapPanel","collapsible","collapsed","floatable","minSize","split","layers","Layer","hideLayerPreview","showLayerPreview","grid","GridPanel","capStore","createCapStore","createGridPanel","layerBrowser","createTreePanel","WMSBrowserStatusBar","anchor","x","y","createFormPanel","tbar","setWidth","WMSBrowserGridPanel","WMSBrowserTreePanel","descriptionField","TextArea","labelWidth","resetCenterFormPanel","getForm","reset","TextField","actionOptions","addLayer","tooltip","iconCls","action","Action","bbar","Toolbar","getValue","resetAll","isValid","tempParams","jQuery","search","params","getParameterString","urlAppend","Igo","Aide","utiliserProxy","proxy","setUrl","setApi","Api","actions","read","load","loadURL","ownerCt","Window","closeWindow","addCloseButton","getBottomToolbar","VTypes","zoomToRecordLLBBox","zoomToMaxExtent","zoomed","metadata","llbbox","zoomToExtent","setVisibility","removeAll","isLayerNameValid","validLayerName","layerName","resetLayerName","StatusBar","busyText","defaultText","defaultIconCls","onBeforeGetCapabilities","onGetCapabilitiesSuccess","onLayerAdded","showBusy","setStatus","clear","columns","sm","autoExpandColumn","autoWidth","checkboxSelectionModel","CheckboxSelectionModel","singleSelect","renderer","metaData","listeners","beforerowselect","row","keep","rec","isRecordSelectable","rowselect","loadRecord","addLayerToPreview","setLayerNameFromSelectedRecords","rowdeselect","removeLayerFromPreview","header","dataIndex","hidden","boolRenderer","id","sortable","bool","LAYERS","mergeNewParams","layer","format","transparent","splice","getLayerNameFromSelectedRecords","getSelections","len","join","setValue","compatible","reasons","getExtent","toBBOX","getTotalCount","layersParam","newLayerRecord","alert","layerRecord","WMSBrowserRootNode","AsyncTreeNode","INIT_URL","loader","url_init_msp","nav","barreOutils","obtenirOutilsParType","_MyWMSBrowser","first","WMSCapabilitiesLoader","buffer","ratio","singleTile","transitionEffect","layerParams","TRANSPARENT","createNode","attr","checked","leaf","undefined","onWMSCapabilitiesLoad","onWMSCapabilitiesLoadException","setLoaderURL","reload","hasChildNodes","onWMSCapabilitiesStoreLoadException","getLayerNameFromCheckedNodes","cascade","attributes","getUI","isChecked","getNewLayerFromCheckedNodes","newLayer","mspClassMeta","rootVisible","autoScroll","useArrows","animate","root","checkchange","node","isLayerCompatible","setLayerNameFromCheckedNodes","loadLayerMetadata","checkbox","getRootNode","layerAdded","igoCouche","Couches","WMS","layerOL","obtenirNavigateur","carte","gestionCouches","ajouterCouche","bounds","override","processResponse","response","callback","content","BrowserDetect","browser","responseText","xmlDoc","ActiveXObject","async","validateOnParse","resolveExternals","parsed","loadXML","myErr","parseError","reason","responseXML","capabilities","Format","WMSCapabilities","capability","processLayer","getmap","href","loading"],"mappings":"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"}
\ No newline at end of file
diff --git a/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/widgets/WMSBrowser.js b/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/widgets/WMSBrowser.js
index cc39bef3..c819465e 100644
--- a/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/widgets/WMSBrowser.js
+++ b/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/widgets/WMSBrowser.js
@@ -636,7 +636,11 @@ GeoExt.ux.WMSBrowser = Ext.extend(Ext.Panel, {
this.currentUrl = url;
// add the GetCapabilities parameters to the url
- var params = OpenLayers.Util.getParameterString(this.capabilitiesParams);
+ var tempParams = jQuery.extend({}, this.capabilitiesParams);
+ if(url.search("version=") !== -1){
+ delete tempParams.version;
+ }
+ var params = OpenLayers.Util.getParameterString(tempParams);
url = OpenLayers.Util.urlAppend(url, params);
diff --git a/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/widgets/tree/WMSBrowserRootNode.js b/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/widgets/tree/WMSBrowserRootNode.js
index 5919cca4..85b7e368 100644
--- a/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/widgets/tree/WMSBrowserRootNode.js
+++ b/interfaces/navigateur/public/libs/GeoExt.ux/WMSBrowser/widgets/tree/WMSBrowserRootNode.js
@@ -9,14 +9,6 @@
Ext.namespace("GeoExt.ux.tree");
-
- // Bogue fixe MSP, Nicolas 5 fev 2011
-
- //todo: changer url_init_msp et prendre le premier url dans liste.
- var url_init_msp = Igo.nav.barreOutils.obtenirOutilsParType('OutilAjoutWMS')[0]._MyWMSBrowser.Store.data.first().data.url+ "?service=WMS&request=GetCapabilities&version=1.1.1";
- url_init_msp = Igo.Aide.utiliserProxy(url_init_msp);
- // If IE, régler un bogue
-
/*
* @requires widgets/WMSBrowser.js
* @requires widgets/tree/WMSBrowserTreePanel.js
@@ -53,6 +45,10 @@ GeoExt.ux.tree.WMSBrowserRootNode = Ext.extend(Ext.tree.AsyncTreeNode, {
/** private: method[constructor]
*/
constructor: function(config) {
+
+ var url_init_msp = Igo.nav.barreOutils.obtenirOutilsParType('OutilAjoutWMS')[0]._MyWMSBrowser.Store.data.first().data.url;
+ url_init_msp = Igo.Aide.utiliserProxy(url_init_msp);
+
Ext.apply(this, config);
Ext.apply(this, {loader: new GeoExt.tree.WMSCapabilitiesLoader({
//url: "__foo__",
diff --git a/interfaces/navigateur/public/libs/GeoExt/GeoExt-build-debug.js.map b/interfaces/navigateur/public/libs/GeoExt/GeoExt-build-debug.js.map
index 224ca4bf..f9a3c368 100644
--- a/interfaces/navigateur/public/libs/GeoExt/GeoExt-build-debug.js.map
+++ b/interfaces/navigateur/public/libs/GeoExt/GeoExt-build-debug.js.map
@@ -1 +1 @@
-{"version":3,"file":"GeoExt-build-debug.js","sources":["lib/GeoExt/data/AttributeReader.js","lib/GeoExt/data/AttributeStore.js","lib/GeoExt/data/FeatureRecord.js","lib/GeoExt/data/FeatureReader.js","lib/GeoExt/data/FeatureStore.js","lib/GeoExt/data/LayerRecord.js","lib/GeoExt/data/LayerReader.js","lib/GeoExt/data/LayerStore.js","lib/GeoExt/data/ScaleStore.js","lib/GeoExt/data/StyleReader.js","lib/GeoExt/data/WMSCapabilitiesReader.js","lib/GeoExt/data/WMSCapabilitiesStore.js","lib/GeoExt/data/WFSCapabilitiesReader.js","lib/GeoExt/data/WFSCapabilitiesStore.js","lib/GeoExt/data/WMSDescribeLayerReader.js","lib/GeoExt/data/WMSDescribeLayerStore.js","lib/GeoExt/data/WMCReader.js","lib/GeoExt/widgets/Action.js","lib/GeoExt/data/ProtocolProxy.js","lib/GeoExt/widgets/FeatureRenderer.js","lib/GeoExt/widgets/MapPanel.js","lib/GeoExt/widgets/Popup.js","lib/GeoExt/widgets/form.js","lib/GeoExt/widgets/form/SearchAction.js","lib/GeoExt/widgets/form/BasicForm.js","lib/GeoExt/widgets/form/FormPanel.js","lib/GeoExt/widgets/grid/SymbolizerColumn.js","lib/GeoExt/widgets/tips/SliderTip.js","lib/GeoExt/widgets/tips/LayerOpacitySliderTip.js","lib/GeoExt/widgets/tips/ZoomSliderTip.js","lib/GeoExt/widgets/tree/LayerNode.js","lib/GeoExt/widgets/tree/TreeNodeUIEventMixin.js","lib/GeoExt/plugins/TreeNodeComponent.js","lib/GeoExt/plugins/TreeNodeRadioButton.js","lib/GeoExt/plugins/TreeNodeActions.js","lib/GeoExt/widgets/tree/LayerLoader.js","lib/GeoExt/widgets/tree/LayerContainer.js","lib/GeoExt/widgets/tree/BaseLayerContainer.js","lib/GeoExt/widgets/tree/OverlayLayerContainer.js","lib/GeoExt/widgets/tree/LayerParamNode.js","lib/GeoExt/widgets/tree/LayerParamLoader.js","lib/GeoExt/widgets/tree/WMSCapabilitiesLoader.js","lib/GeoExt/widgets/LayerOpacitySlider.js","lib/GeoExt/widgets/LayerLegend.js","lib/GeoExt/widgets/LegendImage.js","lib/GeoExt/widgets/UrlLegend.js","lib/GeoExt/widgets/WMSLegend.js","lib/GeoExt/widgets/VectorLegend.js","lib/GeoExt/widgets/ArcgisLegend.js","lib/GeoExt/widgets/LegendPanel.js","lib/GeoExt/widgets/ZoomSlider.js","lib/GeoExt/widgets/grid/FeatureSelectionModel.js","lib/GeoExt/data/PrintPage.js","lib/GeoExt/data/PrintProvider.js","lib/GeoExt/plugins/PrintPageField.js","lib/GeoExt/plugins/PrintProviderField.js","lib/GeoExt/plugins/PrintExtent.js","lib/GeoExt/plugins/AttributeForm.js","lib/GeoExt/widgets/PrintMapPanel.js","lib/GeoExt/state/PermalinkProvider.js","lib/GeoExt/Lang.js"],"names":["Ext","namespace","GeoExt","data","AttributeReader","meta","recordType","format","OpenLayers","Format","WFSDescribeFeatureType","superclass","constructor","call","this","fields","feature","prototype","add","Field","extend","DataReader","read","request","responseXML","documentElement","responseText","readRecords","attributes","Array","featureTypes","properties","attr","values","name","ignore","value","field","numFields","length","records","i","len","j","items","convert","ignoreAttribute","undefined","success","totalRecords","matches","indexOf","RegExp","test","AttributeStoreMixin","c","arguments","callee","apply","proxy","HttpProxy","url","disableCaching","method","reader","type","bind","on","update","onUpdate","load","onLoad","onAdd","scope","each","record","push","updateFeature","store","operation","options","index","oldValue","dirty","layer","get","events","triggerEvent","drawFeature","AttributeStore","Store","FeatureRecord","Record","create","getFeature","setFeature","modified","editing","afterEdit","o","f","p","util","MixedCollection","getField","FeatureReader","Function","response","features","lenI","lenJ","v","mapping","e","defaultValue","state","fid","id","State","INSERT","FeatureStoreMixin","featureFilter","config","initDir","FeatureStore","LAYER_TO_STORE","STORE_TO_LAYER","slice","getRange","addFeatures","loadData","featuresadded","onFeaturesAdded","featuresremoved","onFeaturesRemoved","featuremodified","onFeatureModified","clear","onClear","remove","onRemove","unbind","un","getRecordFromFeature","getByFeature","getById","findBy","r","getAt","evt","_adding","toAdd","evaluate","_removing","_updating","beginEdit","key","set","endEdit","addFeaturesToLayer","removeFeatures","getFeatureById","defaultFields","UPDATE","cont","containsKey","destroy","LayerRecord","getLayer","setLayer","clone","applyIf","LayerReader","layers","LayerStoreMixin","map","MapPanel","addEvents","LayerStore","MAP_TO_STORE","STORE_TO_MAP","addLayer","changelayer","onChangeLayer","addlayer","onAddLayer","removelayer","onRemoveLayer","replace","onReplace","fireEvent","recordIndex","rec","property","layerIndex","getLayerIndex","insert","EDIT","unloadDestroy","isArray","removeLayer","addLayers","setLayerIndex","removeMapLayer","title","setName","oldRecord","newRecord","getByLayer","ScaleStore","JsonReader","register","populateFromMap","baseLayer","populateOnAdd","unregister","isBaseLayer","zooms","resolutions","units","res","level","resolution","scale","Util","getScaleFromResolution","StyleReader","onMetaChange","commit","createInterceptor","raw","root","storeToData","Symbolizer","Raster","metaData","colorMap","idProperty","fillColor","color","fillOpacity","opacity","stroke","label","quantity","sort","symbolizer","labelModified","isModified","Number","filter","json","rules","CQL","symbolizers","description","elseFilter","minScaleDenominator","maxScaleDenominator","WMSCapabilitiesReader","WMSCapabilities","attributionCls","serviceExceptionFormat","formats","imageFormat","opaque","imageTransparent","nodeType","error","Error","version","capability","getmap","href","exception","exceptions","params","attribution","attributionMarkup","minScale","maxScale","layerOptions","transparent","layerParams","Layer","WMS","markup","logo","join","WMSCapabilitiesStore","WFSCapabilitiesReader","WFSCapabilities","featureType","protocolOptions","featureTypeList","protocolDefaults","getfeature","post","featureNS","protocol","Protocol","WFS","strategies","Strategy","Fixed","metaLayerOptions","isFunction","Vector","WFSCapabilitiesStore","WMSDescribeLayerReader","WMSDescribeLayer","WMSDescribeLayerStore","WMCReader","WMC","layersContext","layerContext","getLayerFromContext","Action","control","activateOnEnable","deactivateOnDisable","uScope","uHandler","uToggleHandler","uCheckHandler","handler","toggleHandler","checkHandler","pHandler","pToggleHandler","pCheckHandler","ctrl","addControl","pressed","checked","activate","active","onCtrlActivate","deactivate","onCtrlDeactivate","cmp","Control","TYPE_BUTTON","trigger","changeControlState","_activating","initialConfig","_deactivating","enable","safeCallEach","disable","fnName","args","cs","rendered","render","createDelegate","single","setDisabled","ProtocolProxy","DataProxy","abortPrevious","setParamsAsOptions","callback","arg","cb","loadResponse","abortRequest","abort","result","FeatureRenderer","BoxComponent","Feature","style","symbolType","minWidth","minHeight","renderers","rendererOptions","pointFeature","lineFeature","polygonFeature","renderer","initComponent","Geometry","Point","LineString","Polygon","LinearRing","draw","initCustomEvents","clearCustomEvents","el","onClick","removeAllListeners","onRender","ct","position","document","createElement","getId","supported","assignRenderer","getResolution","afterRender","onResize","w","h","setRendererDimensions","gb","geometry","getBounds","gw","getWidth","gh","getHeight","Math","max","width","height","center","getCenterPixel","bhalfw","bhalfh","bounds","Bounds","x","y","setSize","Size","round","setExtent","Renderer","setSymbolizers","setSymbolType","toLowerCase","geomType","Text","CLASS_NAME","split","pop","beforeDestroy","reg","Panel","zoom","extent","prettyStateKeys","stateEvents","Map","allOverlays","LonLat","fromString","fromArray","moveend","onMoveend","onChangelayer","onAddlayer","onRemovelayer","applyState","l","layerId","visibility","setBaseLayer","setVisibility","setOpacity","getState","getCenter","lon","lat","getZoom","getVisibility","updateMapSize","updateSize","renderMap","body","dom","setInitialExtent","setCenter","zoomToExtent","zoomToMaxExtent","ownerCt","afterlayout","afterLayout","getInnerWidth","getBorderWidth","getInnerHeight","onBeforeAdd","item","addToMapPanel","autoDestroy","removeFromMapPanel","guess","ComponentMgr","all","find","Popup","Window","anchored","panIn","unpinnable","location","insideViewport","animCollapse","draggable","shadow","popupCls","ancCls","anchorPosition","getCentroid","getCenterLonLat","Pixel","getLonLatFromViewPortPx","mapExtent","getExtent","containsLonLat","addAnchorEvents","baseCls","elements","initTools","addTool","unanchorPopup","show","_mapMove","panIntoView","maximize","maximized","anc","ancSize","getSize","isNaN","isVisible","setVisible","locationPx","getPixelFromLonLat","mapBox","fly","div","getBox","top","left","elSize","ancPos","addClass","ancRight","getX","removeClass","ancLeft","getLeft","setPosition","removeAnchorEvents","header","dd","DD","tools","unpin","hide","popupPos","getPosition","panelSize","popupSize","newPos","padding","paddingForPopups","right","bottom","dx","dy","pan","onMapMove","hidden","move","resize","collapse","expand","form","toFilter","logicalOp","wildcard","FormPanel","getForm","filters","getValues","prop","s","FILTER_MAP","Filter","Comparison","EQUAL_TO","LIKE","ENDS_WITH","STARTS_WITH","CONTAINS","Logical","NOT","AND","eq","ne","NOT_EQUAL_TO","lt","LESS_THAN","le","LESS_THAN_OR_EQUAL_TO","gt","GREATER_THAN","ge","GREATER_THAN_OR_EQUAL_TO","like","recordToField","xtype","restriction","nillable","labelTpl","tpl","Template","XTemplate","baseOptions","labelStyle","mandatoryFieldLabelStyle","REGEXES","match","maxLength","parseFloat","minLength","fieldLabel","maxValue","minValue","labelProperty","checkboxLabelProperty","text","number","boolean","date","SearchAction","run","clientValidation","isValid","prevResponse","handleResponse","failureType","CLIENT_INVALID","afterAction","BasicForm","autoAbort","doAction","action","search","createForm","listeners","grid","SymbolizerColumn","Column","window","setTimeout","renderTo","css","types","gx_symbolizercolumn","SliderTip","slider","Tip","hover","offsets","dragging","init","registerThumbListeners","thumb","ii","thumbs","tracker","mouseover","onSlide","mouseout","LayerOpacitySliderTip","template","compiledTemplate","getText","ZoomSliderTip","getScale","tree","LayerNodeUI","TreeNodeUI","bulkRender","a","node","disabled","autoDisable","inRange","calculateInRange","checkbox","checkedGroup","radio","DomHelper","insertAfter","className","defaultChecked","enforceOneVisible","getTarget","toggleCheck","isChecked","group","checkedNodes","getOwnerTree","getChecked","checkedCount","n","appendDDGhost","ghostNode","elNode","cloneNode","DomQuery","select","appendChild","LayerNode","AsyncTreeNode","layerStore","leaf","children","loader","iconCls","TreeLoader","LayerParamLoader","defaultUI","fixedText","ui","getUI","alwaysInRange","addVisibilityEventHandlers","addStoreEventHandlers","visibilitychanged","onLayerVisibilityChanged","checkchange","onCheckChange","onMapMoveEnd","_visibilityChanging","onStoreAdd","onStoreRemove","onStoreUpdate","setText","TreePanel","nodeTypes","gx_layer","TreeNodeUIEventMixin","plugins","TreeNodeComponent","Observable","rendernode","onRenderNode","beforedestroy","onBeforeDestroy","component","elt","append","tag","fn","Component","preg","TreeNodeRadioButton","rawclicknode","onRawClickNode","radioGroup","insertBefore","anchor","TreeNodeActions","actionsCls","actionCls","actions","html","concat","qtip","BLANK_IMAGE_URL","insertFirst","updateActions","t","LayerLoader","displayInLayerSwitcher","baseAttrs","uiProviders","removeStoreHandlers","firstChild","removeChild","getLoader","addLayerNode","addStoreHandlers","_reordering","nodeIndex","recordIndexToNodeIndex","removeLayerNode","layerRecord","sibling","child","createNode","onChildMove","findChildBy","reload","oldParent","newParent","LayerContainer","newRecordIndex","childNodes","searchIndex","parentNode","prev","previousSibling","lastChild","next","nextSibling","oldRecordIndex","_storeHandlers","uiProvider","eval","count","getCount","nodeCount","gx_layercontainer","BaseLayerContainer","gx_baselayercontainer","OverlayLayerContainer","gx_overlaylayercontainer","LayerParamNode","TreeNode","param","delimiter","allItems","getItemsFromLayer","paramValue","createParams","mergeNewParams","visible","newItems","curItems","gx_layerparam","HTTPRequest","addParamNode","paramItem","allParamItems","WMSCapabilitiesLoader","requestMethod","getParams","service","processResponse","capabilities","processLayer","createWMSLayer","queryable","metadata","nestedLayers","LayerOpacitySlider","SingleSlider","complementaryLayer","delay","changeVisibilityDelay","aggressive","changeVisibility","inverse","getOpacityValue","_settingOpacity","setValue","parseInt","changeLayerOpacity","buffer","changeLayerVisibility","changeComplementaryLayerVisibility","currentVisibility","panel","getEl","setStyle","zIndex","Z_INDEX_BASE","mousedown","stopMouseEvents","click","stopEvent","LayerLegend","Container","showTitle","legendTitle","labelCls","autoEl","getLayerTitle","cls","getLabel","innerHTML","Label","onDestroy","getTypes","preferredTypes","score","scoredTypes","supports","b","goodTypes","LegendImage","defaultImgSrc","imgCls","class","src","setUrl","onImageLoadError","UrlLegend","WMSLegend","defaultStyleIsFirst","useScaleParameter","baseParams","_noMap","onLayerMoveend","zoomChanged","getLegendUrl","layerName","layerNames","styles","LAYERS","styleNames","STYLES","idx","styleName","legend","SLD","SLD_BODY","getFullRequestString","REQUEST","WIDTH","HEIGHT","EXCEPTIONS","LAYER","STYLE","SRS","FORMAT","TIME","opacityPropertie","opacityUrl","urlAppend","_OLSALT","urlEncode","destroyList","textCmp","itemId","newUrl","isEquivalentUrl","getComponent","doLayout","VectorLegend","untitledPrefix","clickableSymbol","clickableTitle","selectOnClick","enableDD","bodyBorder","selectedRule","currentScaleDenominator","arborescence","zoomend","onMapZoom","symbolTypeFromFeature","setRules","rulesContainer","setCurrentScaleDenominator","styleMap","Style","Rule","createSymbolizer","getRuleEntry","rule","addRuleEntry","noDoLayout","createRuleEntry","removeRuleEntry","ruleEntry","selectRuleEntry","newSelection","unselect","applies","createRuleRenderer","createRuleTitle","layout","border","bodyStyle","cursor","defaults","comp","addDD","mergeOptions","obj1","obj2","obj3","attrname","haveType","Type","outer","jj","defaultsPerSymbolizer","defaultStyle","display","externalGraphic","diviseur","graphicHeight","graphicWidth","graphicXOffset","graphicYOffset","background","getRuleTitle","DragSource","ddGroup","onDragOut","targetId","target","getCmp","DragZone","onDragEnter","sourcePos","targetPos","onDragDrop","moveRule","getDragData","sourceEl","d","repairXY","getXY","ddel","DropTarget","notifyDrop","updateRuleEntry","removeAll","srcRule","splice","ArcgisLegend","substr","lastIndexOf","Igo","Aide","utiliserProxy","that","$","ajax","dataType","key2","imageData","ArcGIS93Rest","gx_arcgislegend","LegendPanel","dynamic","addLegend","onStoreClear","recordIndexToPanelIndex","panelIndex","legendCount","getIdForLayer","removeLegend","removeAllLegends","ZoomSlider","updating","changeHandler","afterrender","changebaselayer","initZoomValues","minZoomLevel","numZoomLevels","maxZoomLevel","getValue","getResolutionForZoom","getUnits","zoomTo","FeatureSelectionModelMixin","autoActivateControl","layerFromStore","selectControl","bound","selectedFeatures","autoPanMapOnSelection","SelectFeature","singleSelect","multiple","multipleKey","createSelectControl","initEvents","getStore","toggle","isMac","obj","controlConfig","getLayers","featureselected","featureSelected","featureunselected","featureUnselected","rowSelected","rowDeselected","_selecting","row","isSelected","selectRow","getView","focusRow","deselectRow","model","recenterToSelectionExtent","removeItem","selectionExtent","getSelectionExtent","selectionExtentZoom","getZoomForExtent","maxExtent","FeatureSelectionModel","RowSelectionModel","PrintPage","printProvider","rotation","customParams","fromWKT","setScale","scales","loadcapabilities","layoutchange","onLayoutChange","getPrintExtent","calculatePageBounds","geom","toGeometry","rotate","oldCenter","setRotation","force","fit","fitTo","closest","POSITIVE_INFINITY","mapWidth","mapHeight","mode","contains","containsBounds","diff","abs","mods","size","unitsRatio","INCHES_PER_UNIT","PrintProvider","encoding","charset","characterSet","timeout","dpis","layouts","dpi","JsonStore","sortInfo","direction","loadStores","autoLoad","loadCapabilities","setLayout","setDpi","print","pages","jsonData","srs","projection","getCode","pagesLayer","encodedLayers","unshift","enc","encodeLayer","encodedPages","page","overview","encodedOverviewLayers","overviewLayers","cloneConfig","encodedLegends","encFn","encoders","legends","getXType","printURL","encodeURIComponent","encode","download","Ajax","createURL","headers","Content-Type","decode","getURL","failure","isOpera","open","encLayer","getAbsoluteUrl","isIE6","isIE7","isIE8","DEFAULT_PARAMS","OSM","TileCache","baseURL","extension","TMS","layername","toArray","tileSize","serverResolutions","WMTS","requestEncoding","tileOrigin","formatSuffix","dimensions","tileFullExtent","matrixSet","zoomOffset","KaMapCache","KaMap","metaTileWidth","metaTileHeight","singleTile","Image","pixelSize","dictKey","dictItem","encFeatures","encStyles","featureFormat","GeoJSON","styleFormat","JSON","nextId","styleDict","renderIntent","write","featureGeoJson","extract","_gx_style","styleProperty","geoJson","Markers","markers","marker","lonlat","icon","offset","vector","output","gx_wmslegend","base","icons","urlDecode","classes","gx_urllegend","PrintPageField","printPage","onCfg","eventName","ComboBox","Checkbox","onFieldChange","change","onPageChange","suspendEvents","displayField","resumeEvents","PrintProviderField","onProviderChange","dpichange","PrintExtent","mapPanel","onMapPanelDestroy","createControl","addPage","fitPage","removePage","selectPage","updateBox","removeControl","TransformFeature","preserveAspectRatio","eventListeners","beforesetfeature","object","setfeature","beforetransform","toShortString","box","boxBounds","pageBounds","tooLarge","tooSmall","transformcomplete","AttributeForm","attributeStore","formPanel","fillForm","onFormDestroy","recordToFieldOptions","PrintMapPanel","sourceMap","previewScales","currentZoom","getProjection","getMaxExtent","maxResolution","getMaxResolution","fitZoom","syncSize","updatePage","limitScales","calculatePreviewScales","adjustSize","printSize","ratio","targetWidth","autoWidth","targetHeight","autoHeight","printBounds","viewSize","scalesByZoom","idealResolution","PermalinkProvider","readURL","Provider","encodeType","k","stateId","getParameters","hasOwnProperty","decodeValue","getLink","unescape","encodeValue","applyDefaults","paramsStr","getParameterString","qMark","substring","Lang","locale","navigator","language","userLanguage","dict","lookup","parent","tags","str","parts","missing"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"GeoExt-build-debug.js","sources":["lib/GeoExt/data/AttributeReader.js","lib/GeoExt/data/AttributeStore.js","lib/GeoExt/data/FeatureRecord.js","lib/GeoExt/data/FeatureReader.js","lib/GeoExt/data/FeatureStore.js","lib/GeoExt/data/LayerRecord.js","lib/GeoExt/data/LayerReader.js","lib/GeoExt/data/LayerStore.js","lib/GeoExt/data/ScaleStore.js","lib/GeoExt/data/StyleReader.js","lib/GeoExt/data/WMSCapabilitiesReader.js","lib/GeoExt/data/WMSCapabilitiesStore.js","lib/GeoExt/data/WFSCapabilitiesReader.js","lib/GeoExt/data/WFSCapabilitiesStore.js","lib/GeoExt/data/WMSDescribeLayerReader.js","lib/GeoExt/data/WMSDescribeLayerStore.js","lib/GeoExt/data/WMCReader.js","lib/GeoExt/widgets/Action.js","lib/GeoExt/data/ProtocolProxy.js","lib/GeoExt/widgets/FeatureRenderer.js","lib/GeoExt/widgets/MapPanel.js","lib/GeoExt/widgets/Popup.js","lib/GeoExt/widgets/form.js","lib/GeoExt/widgets/form/SearchAction.js","lib/GeoExt/widgets/form/BasicForm.js","lib/GeoExt/widgets/form/FormPanel.js","lib/GeoExt/widgets/grid/SymbolizerColumn.js","lib/GeoExt/widgets/tips/SliderTip.js","lib/GeoExt/widgets/tips/LayerOpacitySliderTip.js","lib/GeoExt/widgets/tips/ZoomSliderTip.js","lib/GeoExt/widgets/tree/LayerNode.js","lib/GeoExt/widgets/tree/TreeNodeUIEventMixin.js","lib/GeoExt/plugins/TreeNodeComponent.js","lib/GeoExt/plugins/TreeNodeRadioButton.js","lib/GeoExt/plugins/TreeNodeActions.js","lib/GeoExt/widgets/tree/LayerLoader.js","lib/GeoExt/widgets/tree/LayerContainer.js","lib/GeoExt/widgets/tree/BaseLayerContainer.js","lib/GeoExt/widgets/tree/OverlayLayerContainer.js","lib/GeoExt/widgets/tree/LayerParamNode.js","lib/GeoExt/widgets/tree/LayerParamLoader.js","lib/GeoExt/widgets/tree/WMSCapabilitiesLoader.js","lib/GeoExt/widgets/LayerOpacitySlider.js","lib/GeoExt/widgets/LayerLegend.js","lib/GeoExt/widgets/LegendImage.js","lib/GeoExt/widgets/UrlLegend.js","lib/GeoExt/widgets/WMSLegend.js","lib/GeoExt/widgets/VectorLegend.js","lib/GeoExt/widgets/ArcgisLegend.js","lib/GeoExt/widgets/LegendPanel.js","lib/GeoExt/widgets/ZoomSlider.js","lib/GeoExt/widgets/grid/FeatureSelectionModel.js","lib/GeoExt/data/PrintPage.js","lib/GeoExt/data/PrintProvider.js","lib/GeoExt/plugins/PrintPageField.js","lib/GeoExt/plugins/PrintProviderField.js","lib/GeoExt/plugins/PrintExtent.js","lib/GeoExt/plugins/AttributeForm.js","lib/GeoExt/widgets/PrintMapPanel.js","lib/GeoExt/state/PermalinkProvider.js","lib/GeoExt/Lang.js"],"names":["Ext","namespace","GeoExt","data","AttributeReader","meta","recordType","format","OpenLayers","Format","WFSDescribeFeatureType","superclass","constructor","call","this","fields","feature","prototype","add","Field","extend","DataReader","read","request","responseXML","documentElement","responseText","readRecords","attributes","Array","featureTypes","properties","attr","values","name","ignore","value","field","numFields","length","records","i","len","j","items","convert","ignoreAttribute","undefined","success","totalRecords","matches","indexOf","RegExp","test","AttributeStoreMixin","c","arguments","callee","apply","proxy","HttpProxy","url","disableCaching","method","reader","type","bind","on","update","onUpdate","load","onLoad","onAdd","scope","each","record","push","updateFeature","store","operation","options","index","oldValue","dirty","layer","get","events","triggerEvent","drawFeature","AttributeStore","Store","FeatureRecord","Record","create","getFeature","setFeature","modified","editing","afterEdit","o","f","p","util","MixedCollection","getField","FeatureReader","Function","response","features","lenI","lenJ","v","mapping","e","defaultValue","state","fid","id","State","INSERT","FeatureStoreMixin","featureFilter","config","initDir","FeatureStore","LAYER_TO_STORE","STORE_TO_LAYER","slice","getRange","addFeatures","loadData","featuresadded","onFeaturesAdded","featuresremoved","onFeaturesRemoved","featuremodified","onFeatureModified","clear","onClear","remove","onRemove","unbind","un","getRecordFromFeature","getByFeature","getById","findBy","r","getAt","evt","_adding","toAdd","evaluate","_removing","_updating","beginEdit","key","set","endEdit","addFeaturesToLayer","removeFeatures","getFeatureById","defaultFields","UPDATE","cont","containsKey","destroy","LayerRecord","getLayer","setLayer","clone","applyIf","LayerReader","layers","LayerStoreMixin","map","MapPanel","addEvents","LayerStore","MAP_TO_STORE","STORE_TO_MAP","addLayer","changelayer","onChangeLayer","addlayer","onAddLayer","removelayer","onRemoveLayer","replace","onReplace","fireEvent","recordIndex","rec","property","layerIndex","getLayerIndex","insert","EDIT","unloadDestroy","isArray","removeLayer","addLayers","setLayerIndex","removeMapLayer","title","setName","oldRecord","newRecord","getByLayer","ScaleStore","JsonReader","register","populateFromMap","baseLayer","populateOnAdd","unregister","isBaseLayer","zooms","resolutions","units","res","level","resolution","scale","Util","getScaleFromResolution","StyleReader","onMetaChange","commit","createInterceptor","raw","root","storeToData","Symbolizer","Raster","metaData","colorMap","idProperty","fillColor","color","fillOpacity","opacity","stroke","label","quantity","sort","symbolizer","labelModified","isModified","Number","filter","json","rules","CQL","symbolizers","description","elseFilter","minScaleDenominator","maxScaleDenominator","WMSCapabilitiesReader","WMSCapabilities","attributionCls","serviceExceptionFormat","formats","imageFormat","opaque","imageTransparent","nodeType","error","Error","version","capability","getmap","href","exception","exceptions","params","attribution","attributionMarkup","minScale","maxScale","layerOptions","transparent","layerParams","Layer","WMS","markup","logo","join","WMSCapabilitiesStore","WFSCapabilitiesReader","WFSCapabilities","featureType","protocolOptions","featureTypeList","protocolDefaults","getfeature","post","featureNS","protocol","Protocol","WFS","strategies","Strategy","Fixed","metaLayerOptions","isFunction","Vector","WFSCapabilitiesStore","WMSDescribeLayerReader","WMSDescribeLayer","WMSDescribeLayerStore","WMCReader","WMC","layersContext","layerContext","getLayerFromContext","Action","control","activateOnEnable","deactivateOnDisable","uScope","uHandler","uToggleHandler","uCheckHandler","handler","toggleHandler","checkHandler","pHandler","pToggleHandler","pCheckHandler","ctrl","addControl","pressed","checked","activate","active","onCtrlActivate","deactivate","onCtrlDeactivate","cmp","Control","TYPE_BUTTON","trigger","changeControlState","_activating","initialConfig","_deactivating","enable","safeCallEach","disable","fnName","args","cs","rendered","render","createDelegate","single","setDisabled","ProtocolProxy","DataProxy","abortPrevious","setParamsAsOptions","callback","arg","cb","loadResponse","abortRequest","abort","result","FeatureRenderer","BoxComponent","Feature","style","symbolType","minWidth","minHeight","renderers","rendererOptions","pointFeature","lineFeature","polygonFeature","renderer","initComponent","Geometry","Point","LineString","Polygon","LinearRing","draw","initCustomEvents","clearCustomEvents","el","onClick","removeAllListeners","onRender","ct","position","document","createElement","getId","supported","assignRenderer","getResolution","afterRender","onResize","w","h","setRendererDimensions","gb","geometry","getBounds","gw","getWidth","gh","getHeight","Math","max","width","height","center","getCenterPixel","bhalfw","bhalfh","bounds","Bounds","x","y","setSize","Size","round","setExtent","Renderer","setSymbolizers","setSymbolType","toLowerCase","geomType","Text","CLASS_NAME","split","pop","beforeDestroy","reg","Panel","zoom","extent","prettyStateKeys","stateEvents","Map","allOverlays","LonLat","fromString","fromArray","moveend","onMoveend","onChangelayer","onAddlayer","onRemovelayer","applyState","l","layerId","visibility","setBaseLayer","setVisibility","setOpacity","getState","getCenter","lon","lat","getZoom","getVisibility","updateMapSize","updateSize","renderMap","body","dom","setInitialExtent","setCenter","zoomToExtent","zoomToMaxExtent","ownerCt","afterlayout","afterLayout","getInnerWidth","getBorderWidth","getInnerHeight","onBeforeAdd","item","addToMapPanel","autoDestroy","removeFromMapPanel","guess","ComponentMgr","all","find","Popup","Window","anchored","panIn","unpinnable","location","insideViewport","animCollapse","draggable","shadow","popupCls","ancCls","anchorPosition","getCentroid","getCenterLonLat","Pixel","getLonLatFromViewPortPx","mapExtent","getExtent","containsLonLat","addAnchorEvents","baseCls","elements","initTools","addTool","unanchorPopup","show","_mapMove","panIntoView","maximize","maximized","anc","ancSize","getSize","isNaN","isVisible","setVisible","locationPx","getPixelFromLonLat","mapBox","fly","div","getBox","top","left","elSize","ancPos","addClass","ancRight","getX","removeClass","ancLeft","getLeft","setPosition","removeAnchorEvents","header","dd","DD","tools","unpin","hide","popupPos","getPosition","panelSize","popupSize","newPos","padding","paddingForPopups","right","bottom","dx","dy","pan","onMapMove","hidden","move","resize","collapse","expand","form","toFilter","logicalOp","wildcard","FormPanel","getForm","filters","getValues","prop","s","FILTER_MAP","Filter","Comparison","EQUAL_TO","LIKE","ENDS_WITH","STARTS_WITH","CONTAINS","Logical","NOT","AND","eq","ne","NOT_EQUAL_TO","lt","LESS_THAN","le","LESS_THAN_OR_EQUAL_TO","gt","GREATER_THAN","ge","GREATER_THAN_OR_EQUAL_TO","like","recordToField","xtype","restriction","nillable","labelTpl","tpl","Template","XTemplate","baseOptions","labelStyle","mandatoryFieldLabelStyle","REGEXES","match","maxLength","parseFloat","minLength","fieldLabel","maxValue","minValue","labelProperty","checkboxLabelProperty","text","number","boolean","date","SearchAction","run","clientValidation","isValid","prevResponse","handleResponse","failureType","CLIENT_INVALID","afterAction","BasicForm","autoAbort","doAction","action","search","createForm","listeners","grid","SymbolizerColumn","Column","window","setTimeout","renderTo","css","types","gx_symbolizercolumn","SliderTip","slider","Tip","hover","offsets","dragging","init","registerThumbListeners","thumb","ii","thumbs","tracker","mouseover","onSlide","mouseout","LayerOpacitySliderTip","template","compiledTemplate","getText","ZoomSliderTip","getScale","tree","LayerNodeUI","TreeNodeUI","bulkRender","a","node","disabled","autoDisable","inRange","calculateInRange","checkbox","checkedGroup","radio","DomHelper","insertAfter","className","defaultChecked","enforceOneVisible","getTarget","toggleCheck","isChecked","group","checkedNodes","getOwnerTree","getChecked","checkedCount","n","appendDDGhost","ghostNode","elNode","cloneNode","DomQuery","select","appendChild","LayerNode","AsyncTreeNode","layerStore","leaf","children","loader","iconCls","TreeLoader","LayerParamLoader","defaultUI","fixedText","ui","getUI","alwaysInRange","addVisibilityEventHandlers","addStoreEventHandlers","visibilitychanged","onLayerVisibilityChanged","checkchange","onCheckChange","onMapMoveEnd","_visibilityChanging","onStoreAdd","onStoreRemove","onStoreUpdate","setText","TreePanel","nodeTypes","gx_layer","TreeNodeUIEventMixin","plugins","TreeNodeComponent","Observable","rendernode","onRenderNode","beforedestroy","onBeforeDestroy","component","elt","append","tag","fn","Component","preg","TreeNodeRadioButton","rawclicknode","onRawClickNode","radioGroup","insertBefore","anchor","TreeNodeActions","actionsCls","actionCls","actions","html","concat","qtip","BLANK_IMAGE_URL","insertFirst","updateActions","t","LayerLoader","displayInLayerSwitcher","baseAttrs","uiProviders","removeStoreHandlers","firstChild","removeChild","getLoader","addLayerNode","addStoreHandlers","_reordering","nodeIndex","recordIndexToNodeIndex","removeLayerNode","layerRecord","sibling","child","createNode","onChildMove","findChildBy","reload","oldParent","newParent","LayerContainer","newRecordIndex","childNodes","searchIndex","parentNode","prev","previousSibling","lastChild","next","nextSibling","oldRecordIndex","_storeHandlers","uiProvider","eval","count","getCount","nodeCount","gx_layercontainer","BaseLayerContainer","gx_baselayercontainer","OverlayLayerContainer","gx_overlaylayercontainer","LayerParamNode","TreeNode","param","delimiter","allItems","getItemsFromLayer","paramValue","createParams","mergeNewParams","visible","newItems","curItems","gx_layerparam","HTTPRequest","addParamNode","paramItem","allParamItems","WMSCapabilitiesLoader","requestMethod","getParams","service","processResponse","capabilities","processLayer","createWMSLayer","queryable","metadata","nestedLayers","LayerOpacitySlider","SingleSlider","complementaryLayer","delay","changeVisibilityDelay","aggressive","changeVisibility","inverse","getOpacityValue","_settingOpacity","setValue","parseInt","changeLayerOpacity","buffer","changeLayerVisibility","changeComplementaryLayerVisibility","currentVisibility","panel","getEl","setStyle","zIndex","Z_INDEX_BASE","mousedown","stopMouseEvents","click","stopEvent","LayerLegend","Container","showTitle","legendTitle","labelCls","autoEl","getLayerTitle","cls","getLabel","innerHTML","Label","onDestroy","getTypes","preferredTypes","score","scoredTypes","supports","b","goodTypes","LegendImage","defaultImgSrc","imgCls","class","src","setUrl","onImageLoadError","UrlLegend","WMSLegend","defaultStyleIsFirst","useScaleParameter","baseParams","_noMap","onLayerMoveend","zoomChanged","getLegendUrl","layerName","layerNames","styles","LAYERS","styleNames","STYLES","idx","styleName","legend","SLD","SLD_BODY","getFullRequestString","REQUEST","WIDTH","HEIGHT","EXCEPTIONS","LAYER","STYLE","SRS","FORMAT","TIME","opacityPropertie","opacityUrl","urlAppend","_OLSALT","urlEncode","destroyList","textCmp","itemId","newUrl","isEquivalentUrl","getComponent","doLayout","VectorLegend","untitledPrefix","clickableSymbol","clickableTitle","selectOnClick","enableDD","bodyBorder","selectedRule","currentScaleDenominator","arborescence","zoomend","onMapZoom","symbolTypeFromFeature","setRules","rulesContainer","setCurrentScaleDenominator","styleMap","Style","Rule","createSymbolizer","getRuleEntry","rule","addRuleEntry","noDoLayout","createRuleEntry","removeRuleEntry","ruleEntry","selectRuleEntry","newSelection","unselect","applies","createRuleRenderer","createRuleTitle","layout","border","bodyStyle","cursor","defaults","comp","addDD","mergeOptions","obj1","obj2","obj3","attrname","haveType","Type","outer","jj","defaultsPerSymbolizer","defaultStyle","display","externalGraphic","diviseur","graphicHeight","graphicWidth","graphicXOffset","graphicYOffset","background","getRuleTitle","DragSource","ddGroup","onDragOut","targetId","target","getCmp","DragZone","onDragEnter","sourcePos","targetPos","onDragDrop","moveRule","getDragData","sourceEl","d","repairXY","getXY","ddel","DropTarget","notifyDrop","updateRuleEntry","removeAll","srcRule","splice","ArcgisLegend","substr","lastIndexOf","Igo","Aide","utiliserProxy","that","$","ajax","dataType","layersName","layersNameArray","String","key2","imageData","ArcGIS93Rest","gx_arcgislegend","LegendPanel","dynamic","addLegend","onStoreClear","recordIndexToPanelIndex","panelIndex","legendCount","getIdForLayer","removeLegend","removeAllLegends","ZoomSlider","updating","changeHandler","afterrender","changebaselayer","initZoomValues","minZoomLevel","numZoomLevels","maxZoomLevel","getValue","getResolutionForZoom","getUnits","zoomTo","FeatureSelectionModelMixin","autoActivateControl","layerFromStore","selectControl","bound","selectedFeatures","autoPanMapOnSelection","SelectFeature","singleSelect","multiple","multipleKey","createSelectControl","initEvents","getStore","toggle","isMac","obj","controlConfig","getLayers","featureselected","featureSelected","featureunselected","featureUnselected","rowSelected","rowDeselected","_selecting","row","isSelected","selectRow","getView","focusRow","deselectRow","model","recenterToSelectionExtent","removeItem","selectionExtent","getSelectionExtent","selectionExtentZoom","getZoomForExtent","maxExtent","FeatureSelectionModel","RowSelectionModel","PrintPage","printProvider","rotation","customParams","fromWKT","setScale","scales","loadcapabilities","layoutchange","onLayoutChange","getPrintExtent","calculatePageBounds","geom","toGeometry","rotate","oldCenter","setRotation","force","fit","fitTo","closest","POSITIVE_INFINITY","mapWidth","mapHeight","mode","contains","containsBounds","diff","abs","mods","size","unitsRatio","INCHES_PER_UNIT","PrintProvider","encoding","charset","characterSet","timeout","dpis","layouts","dpi","JsonStore","sortInfo","direction","loadStores","autoLoad","loadCapabilities","setLayout","setDpi","print","pages","jsonData","srs","projection","getCode","pagesLayer","encodedLayers","unshift","enc","encodeLayer","encodedPages","page","overview","encodedOverviewLayers","overviewLayers","cloneConfig","encodedLegends","encFn","encoders","legends","getXType","printURL","encodeURIComponent","encode","download","Ajax","createURL","headers","Content-Type","decode","getURL","failure","isOpera","open","encLayer","getAbsoluteUrl","isIE6","isIE7","isIE8","DEFAULT_PARAMS","OSM","TileCache","baseURL","extension","TMS","layername","toArray","tileSize","serverResolutions","WMTS","requestEncoding","tileOrigin","formatSuffix","dimensions","tileFullExtent","matrixSet","zoomOffset","KaMapCache","KaMap","metaTileWidth","metaTileHeight","singleTile","Image","pixelSize","dictKey","dictItem","encFeatures","encStyles","featureFormat","GeoJSON","styleFormat","JSON","nextId","styleDict","renderIntent","write","featureGeoJson","extract","_gx_style","styleProperty","geoJson","Markers","markers","marker","lonlat","icon","offset","vector","output","gx_wmslegend","base","icons","urlDecode","classes","gx_urllegend","PrintPageField","printPage","onCfg","eventName","ComboBox","Checkbox","onFieldChange","change","onPageChange","suspendEvents","displayField","resumeEvents","PrintProviderField","onProviderChange","dpichange","PrintExtent","mapPanel","onMapPanelDestroy","createControl","addPage","fitPage","removePage","selectPage","updateBox","removeControl","TransformFeature","preserveAspectRatio","eventListeners","beforesetfeature","object","setfeature","beforetransform","toShortString","box","boxBounds","pageBounds","tooLarge","tooSmall","transformcomplete","AttributeForm","attributeStore","formPanel","fillForm","onFormDestroy","recordToFieldOptions","PrintMapPanel","sourceMap","previewScales","currentZoom","getProjection","getMaxExtent","maxResolution","getMaxResolution","fitZoom","syncSize","updatePage","limitScales","calculatePreviewScales","adjustSize","printSize","ratio","targetWidth","autoWidth","targetHeight","autoHeight","printBounds","viewSize","scalesByZoom","idealResolution","PermalinkProvider","readURL","Provider","encodeType","k","stateId","getParameters","hasOwnProperty","decodeValue","getLink","unescape","encodeValue","applyDefaults","paramsStr","getParameterString","qMark","substring","Lang","locale","navigator","language","userLanguage","dict","lookup","parent","tags","str","parts","missing"],"mappings":"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"}
\ No newline at end of file
diff --git a/interfaces/navigateur/public/libs/GeoExt/GeoExt-build.js.map b/interfaces/navigateur/public/libs/GeoExt/GeoExt-build.js.map
index 0a9dc3d2..f5922d80 100644
--- a/interfaces/navigateur/public/libs/GeoExt/GeoExt-build.js.map
+++ b/interfaces/navigateur/public/libs/GeoExt/GeoExt-build.js.map
@@ -1 +1 @@
-{"version":3,"file":"GeoExt-build.js","sources":["lib/GeoExt/data/AttributeReader.js","lib/GeoExt/data/AttributeStore.js","lib/GeoExt/data/FeatureRecord.js","lib/GeoExt/data/FeatureReader.js","lib/GeoExt/data/FeatureStore.js","lib/GeoExt/data/LayerRecord.js","lib/GeoExt/data/LayerReader.js","lib/GeoExt/data/LayerStore.js","lib/GeoExt/data/ScaleStore.js","lib/GeoExt/data/StyleReader.js","lib/GeoExt/data/WMSCapabilitiesReader.js","lib/GeoExt/data/WMSCapabilitiesStore.js","lib/GeoExt/data/WFSCapabilitiesReader.js","lib/GeoExt/data/WFSCapabilitiesStore.js","lib/GeoExt/data/WMSDescribeLayerReader.js","lib/GeoExt/data/WMSDescribeLayerStore.js","lib/GeoExt/data/WMCReader.js","lib/GeoExt/widgets/Action.js","lib/GeoExt/data/ProtocolProxy.js","lib/GeoExt/widgets/FeatureRenderer.js","lib/GeoExt/widgets/MapPanel.js","lib/GeoExt/widgets/Popup.js","lib/GeoExt/widgets/form.js","lib/GeoExt/widgets/form/SearchAction.js","lib/GeoExt/widgets/form/BasicForm.js","lib/GeoExt/widgets/form/FormPanel.js","lib/GeoExt/widgets/grid/SymbolizerColumn.js","lib/GeoExt/widgets/tips/SliderTip.js","lib/GeoExt/widgets/tips/LayerOpacitySliderTip.js","lib/GeoExt/widgets/tips/ZoomSliderTip.js","lib/GeoExt/widgets/tree/LayerNode.js","lib/GeoExt/widgets/tree/TreeNodeUIEventMixin.js","lib/GeoExt/plugins/TreeNodeComponent.js","lib/GeoExt/plugins/TreeNodeRadioButton.js","lib/GeoExt/plugins/TreeNodeActions.js","lib/GeoExt/widgets/tree/LayerLoader.js","lib/GeoExt/widgets/tree/LayerContainer.js","lib/GeoExt/widgets/tree/BaseLayerContainer.js","lib/GeoExt/widgets/tree/OverlayLayerContainer.js","lib/GeoExt/widgets/tree/LayerParamNode.js","lib/GeoExt/widgets/tree/LayerParamLoader.js","lib/GeoExt/widgets/tree/WMSCapabilitiesLoader.js","lib/GeoExt/widgets/LayerOpacitySlider.js","lib/GeoExt/widgets/LayerLegend.js","lib/GeoExt/widgets/LegendImage.js","lib/GeoExt/widgets/UrlLegend.js","lib/GeoExt/widgets/WMSLegend.js","lib/GeoExt/widgets/VectorLegend.js","lib/GeoExt/widgets/ArcgisLegend.js","lib/GeoExt/widgets/LegendPanel.js","lib/GeoExt/widgets/ZoomSlider.js","lib/GeoExt/widgets/grid/FeatureSelectionModel.js","lib/GeoExt/data/PrintPage.js","lib/GeoExt/data/PrintProvider.js","lib/GeoExt/plugins/PrintPageField.js","lib/GeoExt/plugins/PrintProviderField.js","lib/GeoExt/plugins/PrintExtent.js","lib/GeoExt/plugins/AttributeForm.js","lib/GeoExt/widgets/PrintMapPanel.js","lib/GeoExt/state/PermalinkProvider.js","lib/GeoExt/Lang.js"],"names":["Ext","namespace","GeoExt","data","AttributeReader","meta","recordType","format","OpenLayers","Format","WFSDescribeFeatureType","superclass","constructor","call","this","fields","feature","prototype","add","Field","extend","DataReader","read","request","responseXML","documentElement","responseText","readRecords","attributes","Array","featureTypes","properties","attr","values","name","ignore","value","field","numFields","length","records","i","len","j","items","convert","ignoreAttribute","undefined","success","totalRecords","matches","indexOf","RegExp","test","AttributeStoreMixin","c","arguments","callee","apply","proxy","HttpProxy","url","disableCaching","method","reader","type","bind","on","update","onUpdate","load","onLoad","onAdd","scope","each","record","push","updateFeature","store","operation","options","index","oldValue","dirty","layer","get","events","triggerEvent","drawFeature","AttributeStore","Store","FeatureRecord","Record","create","getFeature","setFeature","modified","editing","afterEdit","o","f","p","util","MixedCollection","getField","FeatureReader","Function","response","features","lenI","lenJ","v","mapping","e","defaultValue","state","fid","id","State","INSERT","FeatureStoreMixin","featureFilter","config","initDir","FeatureStore","LAYER_TO_STORE","STORE_TO_LAYER","slice","getRange","addFeatures","loadData","featuresadded","onFeaturesAdded","featuresremoved","onFeaturesRemoved","featuremodified","onFeatureModified","clear","onClear","remove","onRemove","unbind","un","getRecordFromFeature","getByFeature","getById","findBy","r","getAt","evt","_adding","toAdd","evaluate","_removing","_updating","beginEdit","key","set","endEdit","addFeaturesToLayer","removeFeatures","getFeatureById","defaultFields","UPDATE","cont","containsKey","destroy","LayerRecord","getLayer","setLayer","clone","applyIf","LayerReader","layers","LayerStoreMixin","map","MapPanel","addEvents","LayerStore","MAP_TO_STORE","STORE_TO_MAP","addLayer","changelayer","onChangeLayer","addlayer","onAddLayer","removelayer","onRemoveLayer","replace","onReplace","fireEvent","recordIndex","rec","property","layerIndex","getLayerIndex","insert","EDIT","unloadDestroy","isArray","removeLayer","addLayers","setLayerIndex","removeMapLayer","title","setName","oldRecord","newRecord","getByLayer","ScaleStore","JsonReader","register","populateFromMap","baseLayer","populateOnAdd","unregister","isBaseLayer","zooms","resolutions","units","res","level","resolution","scale","Util","getScaleFromResolution","StyleReader","onMetaChange","commit","createInterceptor","raw","root","storeToData","Symbolizer","Raster","metaData","colorMap","idProperty","fillColor","color","fillOpacity","opacity","stroke","label","quantity","sort","symbolizer","labelModified","isModified","Number","filter","json","rules","CQL","symbolizers","description","elseFilter","minScaleDenominator","maxScaleDenominator","WMSCapabilitiesReader","WMSCapabilities","attributionCls","serviceExceptionFormat","formats","imageFormat","opaque","imageTransparent","nodeType","error","Error","version","capability","getmap","href","exception","exceptions","params","attribution","attributionMarkup","minScale","maxScale","layerOptions","transparent","layerParams","Layer","WMS","markup","logo","join","WMSCapabilitiesStore","WFSCapabilitiesReader","WFSCapabilities","featureType","protocolOptions","featureTypeList","protocolDefaults","getfeature","post","featureNS","protocol","Protocol","WFS","strategies","Strategy","Fixed","metaLayerOptions","isFunction","Vector","WFSCapabilitiesStore","WMSDescribeLayerReader","WMSDescribeLayer","WMSDescribeLayerStore","WMCReader","WMC","layersContext","layerContext","getLayerFromContext","Action","control","activateOnEnable","deactivateOnDisable","uScope","uHandler","uToggleHandler","uCheckHandler","handler","toggleHandler","checkHandler","pHandler","pToggleHandler","pCheckHandler","ctrl","addControl","pressed","checked","activate","active","onCtrlActivate","deactivate","onCtrlDeactivate","cmp","Control","TYPE_BUTTON","trigger","changeControlState","_activating","initialConfig","_deactivating","enable","safeCallEach","disable","fnName","args","cs","rendered","render","createDelegate","single","setDisabled","ProtocolProxy","DataProxy","abortPrevious","setParamsAsOptions","callback","arg","cb","loadResponse","abortRequest","abort","result","FeatureRenderer","BoxComponent","Feature","style","symbolType","minWidth","minHeight","renderers","rendererOptions","pointFeature","lineFeature","polygonFeature","renderer","initComponent","Geometry","Point","LineString","Polygon","LinearRing","draw","initCustomEvents","clearCustomEvents","el","onClick","removeAllListeners","onRender","ct","position","document","createElement","getId","supported","assignRenderer","getResolution","afterRender","onResize","w","h","setRendererDimensions","gb","geometry","getBounds","gw","getWidth","gh","getHeight","Math","max","width","height","center","getCenterPixel","bhalfw","bhalfh","bounds","Bounds","x","y","setSize","Size","round","setExtent","Renderer","setSymbolizers","setSymbolType","toLowerCase","geomType","Text","CLASS_NAME","split","pop","beforeDestroy","reg","Panel","zoom","extent","prettyStateKeys","stateEvents","Map","allOverlays","LonLat","fromString","fromArray","moveend","onMoveend","onChangelayer","onAddlayer","onRemovelayer","applyState","l","layerId","visibility","setBaseLayer","setVisibility","setOpacity","getState","getCenter","lon","lat","getZoom","getVisibility","updateMapSize","updateSize","renderMap","body","dom","setInitialExtent","setCenter","zoomToExtent","zoomToMaxExtent","ownerCt","afterlayout","afterLayout","getInnerWidth","getBorderWidth","getInnerHeight","onBeforeAdd","item","addToMapPanel","autoDestroy","removeFromMapPanel","guess","ComponentMgr","all","find","Popup","Window","anchored","panIn","unpinnable","location","insideViewport","animCollapse","draggable","shadow","popupCls","ancCls","anchorPosition","getCentroid","getCenterLonLat","Pixel","getLonLatFromViewPortPx","mapExtent","getExtent","containsLonLat","addAnchorEvents","baseCls","elements","initTools","addTool","unanchorPopup","show","_mapMove","panIntoView","maximize","maximized","anc","ancSize","getSize","isNaN","isVisible","setVisible","locationPx","getPixelFromLonLat","mapBox","fly","div","getBox","top","left","elSize","ancPos","addClass","ancRight","getX","removeClass","ancLeft","getLeft","setPosition","removeAnchorEvents","header","dd","DD","tools","unpin","hide","popupPos","getPosition","panelSize","popupSize","newPos","padding","paddingForPopups","right","bottom","dx","dy","pan","onMapMove","hidden","move","resize","collapse","expand","form","toFilter","logicalOp","wildcard","FormPanel","getForm","filters","getValues","prop","s","FILTER_MAP","Filter","Comparison","EQUAL_TO","LIKE","ENDS_WITH","STARTS_WITH","CONTAINS","Logical","NOT","AND","eq","ne","NOT_EQUAL_TO","lt","LESS_THAN","le","LESS_THAN_OR_EQUAL_TO","gt","GREATER_THAN","ge","GREATER_THAN_OR_EQUAL_TO","like","recordToField","xtype","restriction","nillable","labelTpl","tpl","Template","XTemplate","baseOptions","labelStyle","mandatoryFieldLabelStyle","REGEXES","match","maxLength","parseFloat","minLength","fieldLabel","maxValue","minValue","labelProperty","checkboxLabelProperty","text","number","boolean","date","SearchAction","run","clientValidation","isValid","prevResponse","handleResponse","failureType","CLIENT_INVALID","afterAction","BasicForm","autoAbort","doAction","action","search","createForm","listeners","grid","SymbolizerColumn","Column","window","setTimeout","renderTo","css","types","gx_symbolizercolumn","SliderTip","slider","Tip","hover","offsets","dragging","init","registerThumbListeners","thumb","ii","thumbs","tracker","mouseover","onSlide","mouseout","LayerOpacitySliderTip","template","compiledTemplate","getText","ZoomSliderTip","getScale","tree","LayerNodeUI","TreeNodeUI","bulkRender","a","node","disabled","autoDisable","inRange","calculateInRange","checkbox","checkedGroup","radio","DomHelper","insertAfter","className","defaultChecked","enforceOneVisible","getTarget","toggleCheck","isChecked","group","checkedNodes","getOwnerTree","getChecked","checkedCount","n","appendDDGhost","ghostNode","elNode","cloneNode","DomQuery","select","appendChild","LayerNode","AsyncTreeNode","layerStore","leaf","children","loader","iconCls","TreeLoader","LayerParamLoader","defaultUI","fixedText","ui","getUI","alwaysInRange","addVisibilityEventHandlers","addStoreEventHandlers","visibilitychanged","onLayerVisibilityChanged","checkchange","onCheckChange","onMapMoveEnd","_visibilityChanging","onStoreAdd","onStoreRemove","onStoreUpdate","setText","TreePanel","nodeTypes","gx_layer","TreeNodeUIEventMixin","plugins","TreeNodeComponent","Observable","rendernode","onRenderNode","beforedestroy","onBeforeDestroy","component","elt","append","tag","fn","Component","preg","TreeNodeRadioButton","rawclicknode","onRawClickNode","radioGroup","insertBefore","anchor","TreeNodeActions","actionsCls","actionCls","actions","html","concat","qtip","BLANK_IMAGE_URL","insertFirst","updateActions","t","LayerLoader","displayInLayerSwitcher","baseAttrs","uiProviders","removeStoreHandlers","firstChild","removeChild","getLoader","addLayerNode","addStoreHandlers","_reordering","nodeIndex","recordIndexToNodeIndex","removeLayerNode","layerRecord","sibling","child","createNode","onChildMove","findChildBy","reload","oldParent","newParent","LayerContainer","newRecordIndex","childNodes","searchIndex","parentNode","prev","previousSibling","lastChild","next","nextSibling","oldRecordIndex","_storeHandlers","uiProvider","eval","count","getCount","nodeCount","gx_layercontainer","BaseLayerContainer","gx_baselayercontainer","OverlayLayerContainer","gx_overlaylayercontainer","LayerParamNode","TreeNode","param","delimiter","allItems","getItemsFromLayer","paramValue","createParams","mergeNewParams","visible","newItems","curItems","gx_layerparam","HTTPRequest","addParamNode","paramItem","allParamItems","WMSCapabilitiesLoader","requestMethod","getParams","service","processResponse","capabilities","processLayer","createWMSLayer","queryable","metadata","nestedLayers","LayerOpacitySlider","SingleSlider","complementaryLayer","delay","changeVisibilityDelay","aggressive","changeVisibility","inverse","getOpacityValue","_settingOpacity","setValue","parseInt","changeLayerOpacity","buffer","changeLayerVisibility","changeComplementaryLayerVisibility","currentVisibility","panel","getEl","setStyle","zIndex","Z_INDEX_BASE","mousedown","stopMouseEvents","click","stopEvent","LayerLegend","Container","showTitle","legendTitle","labelCls","autoEl","getLayerTitle","cls","getLabel","innerHTML","Label","onDestroy","getTypes","preferredTypes","score","scoredTypes","supports","b","goodTypes","LegendImage","defaultImgSrc","imgCls","class","src","setUrl","onImageLoadError","UrlLegend","WMSLegend","defaultStyleIsFirst","useScaleParameter","baseParams","_noMap","onLayerMoveend","zoomChanged","getLegendUrl","layerName","layerNames","styles","LAYERS","styleNames","STYLES","idx","styleName","legend","SLD","SLD_BODY","getFullRequestString","REQUEST","WIDTH","HEIGHT","EXCEPTIONS","LAYER","STYLE","SRS","FORMAT","TIME","opacityPropertie","opacityUrl","urlAppend","_OLSALT","urlEncode","destroyList","textCmp","itemId","newUrl","isEquivalentUrl","getComponent","doLayout","VectorLegend","untitledPrefix","clickableSymbol","clickableTitle","selectOnClick","enableDD","bodyBorder","selectedRule","currentScaleDenominator","arborescence","zoomend","onMapZoom","symbolTypeFromFeature","setRules","rulesContainer","setCurrentScaleDenominator","styleMap","Style","Rule","createSymbolizer","getRuleEntry","rule","addRuleEntry","noDoLayout","createRuleEntry","removeRuleEntry","ruleEntry","selectRuleEntry","newSelection","unselect","applies","createRuleRenderer","createRuleTitle","layout","border","bodyStyle","cursor","defaults","comp","addDD","mergeOptions","obj1","obj2","obj3","attrname","haveType","Type","outer","jj","defaultsPerSymbolizer","defaultStyle","display","externalGraphic","diviseur","graphicHeight","graphicWidth","graphicXOffset","graphicYOffset","background","getRuleTitle","DragSource","ddGroup","onDragOut","targetId","target","getCmp","DragZone","onDragEnter","sourcePos","targetPos","onDragDrop","moveRule","getDragData","sourceEl","d","repairXY","getXY","ddel","DropTarget","notifyDrop","updateRuleEntry","removeAll","srcRule","splice","ArcgisLegend","substr","lastIndexOf","Igo","Aide","utiliserProxy","that","$","ajax","dataType","key2","imageData","ArcGIS93Rest","gx_arcgislegend","LegendPanel","dynamic","addLegend","onStoreClear","recordIndexToPanelIndex","panelIndex","legendCount","getIdForLayer","removeLegend","removeAllLegends","ZoomSlider","updating","changeHandler","afterrender","changebaselayer","initZoomValues","minZoomLevel","numZoomLevels","maxZoomLevel","getValue","getResolutionForZoom","getUnits","zoomTo","FeatureSelectionModelMixin","autoActivateControl","layerFromStore","selectControl","bound","selectedFeatures","autoPanMapOnSelection","SelectFeature","singleSelect","multiple","multipleKey","createSelectControl","initEvents","getStore","toggle","isMac","obj","controlConfig","getLayers","featureselected","featureSelected","featureunselected","featureUnselected","rowSelected","rowDeselected","_selecting","row","isSelected","selectRow","getView","focusRow","deselectRow","model","recenterToSelectionExtent","removeItem","selectionExtent","getSelectionExtent","selectionExtentZoom","getZoomForExtent","maxExtent","FeatureSelectionModel","RowSelectionModel","PrintPage","printProvider","rotation","customParams","fromWKT","setScale","scales","loadcapabilities","layoutchange","onLayoutChange","getPrintExtent","calculatePageBounds","geom","toGeometry","rotate","oldCenter","setRotation","force","fit","fitTo","closest","POSITIVE_INFINITY","mapWidth","mapHeight","mode","contains","containsBounds","diff","abs","mods","size","unitsRatio","INCHES_PER_UNIT","PrintProvider","encoding","charset","characterSet","timeout","dpis","layouts","dpi","JsonStore","sortInfo","direction","loadStores","autoLoad","loadCapabilities","setLayout","setDpi","print","pages","jsonData","srs","projection","getCode","pagesLayer","encodedLayers","unshift","enc","encodeLayer","encodedPages","page","overview","encodedOverviewLayers","overviewLayers","cloneConfig","encodedLegends","encFn","encoders","legends","getXType","printURL","encodeURIComponent","encode","download","Ajax","createURL","headers","Content-Type","decode","getURL","failure","isOpera","open","encLayer","getAbsoluteUrl","isIE6","isIE7","isIE8","DEFAULT_PARAMS","OSM","TileCache","baseURL","extension","TMS","layername","toArray","tileSize","serverResolutions","WMTS","requestEncoding","tileOrigin","formatSuffix","dimensions","tileFullExtent","matrixSet","zoomOffset","KaMapCache","KaMap","metaTileWidth","metaTileHeight","singleTile","Image","pixelSize","dictKey","dictItem","encFeatures","encStyles","featureFormat","GeoJSON","styleFormat","JSON","nextId","styleDict","renderIntent","write","featureGeoJson","extract","_gx_style","styleProperty","geoJson","Markers","markers","marker","lonlat","icon","offset","vector","output","gx_wmslegend","base","icons","urlDecode","classes","gx_urllegend","PrintPageField","printPage","onCfg","eventName","ComboBox","Checkbox","onFieldChange","change","onPageChange","suspendEvents","displayField","resumeEvents","PrintProviderField","onProviderChange","dpichange","PrintExtent","mapPanel","onMapPanelDestroy","createControl","addPage","fitPage","removePage","selectPage","updateBox","removeControl","TransformFeature","preserveAspectRatio","eventListeners","beforesetfeature","object","setfeature","beforetransform","toShortString","box","boxBounds","pageBounds","tooLarge","tooSmall","transformcomplete","AttributeForm","attributeStore","formPanel","fillForm","onFormDestroy","recordToFieldOptions","PrintMapPanel","sourceMap","previewScales","currentZoom","getProjection","getMaxExtent","maxResolution","getMaxResolution","fitZoom","syncSize","updatePage","limitScales","calculatePreviewScales","adjustSize","printSize","ratio","targetWidth","autoWidth","targetHeight","autoHeight","printBounds","viewSize","scalesByZoom","idealResolution","PermalinkProvider","readURL","Provider","encodeType","k","stateId","getParameters","hasOwnProperty","decodeValue","getLink","unescape","encodeValue","applyDefaults","paramsStr","getParameterString","qMark","substring","Lang","locale","navigator","language","userLanguage","dict","lookup","parent","tags","str","parts","missing"],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"GeoExt-build.js","sources":["lib/GeoExt/data/AttributeReader.js","lib/GeoExt/data/AttributeStore.js","lib/GeoExt/data/FeatureRecord.js","lib/GeoExt/data/FeatureReader.js","lib/GeoExt/data/FeatureStore.js","lib/GeoExt/data/LayerRecord.js","lib/GeoExt/data/LayerReader.js","lib/GeoExt/data/LayerStore.js","lib/GeoExt/data/ScaleStore.js","lib/GeoExt/data/StyleReader.js","lib/GeoExt/data/WMSCapabilitiesReader.js","lib/GeoExt/data/WMSCapabilitiesStore.js","lib/GeoExt/data/WFSCapabilitiesReader.js","lib/GeoExt/data/WFSCapabilitiesStore.js","lib/GeoExt/data/WMSDescribeLayerReader.js","lib/GeoExt/data/WMSDescribeLayerStore.js","lib/GeoExt/data/WMCReader.js","lib/GeoExt/widgets/Action.js","lib/GeoExt/data/ProtocolProxy.js","lib/GeoExt/widgets/FeatureRenderer.js","lib/GeoExt/widgets/MapPanel.js","lib/GeoExt/widgets/Popup.js","lib/GeoExt/widgets/form.js","lib/GeoExt/widgets/form/SearchAction.js","lib/GeoExt/widgets/form/BasicForm.js","lib/GeoExt/widgets/form/FormPanel.js","lib/GeoExt/widgets/grid/SymbolizerColumn.js","lib/GeoExt/widgets/tips/SliderTip.js","lib/GeoExt/widgets/tips/LayerOpacitySliderTip.js","lib/GeoExt/widgets/tips/ZoomSliderTip.js","lib/GeoExt/widgets/tree/LayerNode.js","lib/GeoExt/widgets/tree/TreeNodeUIEventMixin.js","lib/GeoExt/plugins/TreeNodeComponent.js","lib/GeoExt/plugins/TreeNodeRadioButton.js","lib/GeoExt/plugins/TreeNodeActions.js","lib/GeoExt/widgets/tree/LayerLoader.js","lib/GeoExt/widgets/tree/LayerContainer.js","lib/GeoExt/widgets/tree/BaseLayerContainer.js","lib/GeoExt/widgets/tree/OverlayLayerContainer.js","lib/GeoExt/widgets/tree/LayerParamNode.js","lib/GeoExt/widgets/tree/LayerParamLoader.js","lib/GeoExt/widgets/tree/WMSCapabilitiesLoader.js","lib/GeoExt/widgets/LayerOpacitySlider.js","lib/GeoExt/widgets/LayerLegend.js","lib/GeoExt/widgets/LegendImage.js","lib/GeoExt/widgets/UrlLegend.js","lib/GeoExt/widgets/WMSLegend.js","lib/GeoExt/widgets/VectorLegend.js","lib/GeoExt/widgets/ArcgisLegend.js","lib/GeoExt/widgets/LegendPanel.js","lib/GeoExt/widgets/ZoomSlider.js","lib/GeoExt/widgets/grid/FeatureSelectionModel.js","lib/GeoExt/data/PrintPage.js","lib/GeoExt/data/PrintProvider.js","lib/GeoExt/plugins/PrintPageField.js","lib/GeoExt/plugins/PrintProviderField.js","lib/GeoExt/plugins/PrintExtent.js","lib/GeoExt/plugins/AttributeForm.js","lib/GeoExt/widgets/PrintMapPanel.js","lib/GeoExt/state/PermalinkProvider.js","lib/GeoExt/Lang.js"],"names":["Ext","namespace","GeoExt","data","AttributeReader","meta","recordType","format","OpenLayers","Format","WFSDescribeFeatureType","superclass","constructor","call","this","fields","feature","prototype","add","Field","extend","DataReader","read","request","responseXML","documentElement","responseText","readRecords","attributes","Array","featureTypes","properties","attr","values","name","ignore","value","field","numFields","length","records","i","len","j","items","convert","ignoreAttribute","undefined","success","totalRecords","matches","indexOf","RegExp","test","AttributeStoreMixin","c","arguments","callee","apply","proxy","HttpProxy","url","disableCaching","method","reader","type","bind","on","update","onUpdate","load","onLoad","onAdd","scope","each","record","push","updateFeature","store","operation","options","index","oldValue","dirty","layer","get","events","triggerEvent","drawFeature","AttributeStore","Store","FeatureRecord","Record","create","getFeature","setFeature","modified","editing","afterEdit","o","f","p","util","MixedCollection","getField","FeatureReader","Function","response","features","lenI","lenJ","v","mapping","e","defaultValue","state","fid","id","State","INSERT","FeatureStoreMixin","featureFilter","config","initDir","FeatureStore","LAYER_TO_STORE","STORE_TO_LAYER","slice","getRange","addFeatures","loadData","featuresadded","onFeaturesAdded","featuresremoved","onFeaturesRemoved","featuremodified","onFeatureModified","clear","onClear","remove","onRemove","unbind","un","getRecordFromFeature","getByFeature","getById","findBy","r","getAt","evt","_adding","toAdd","evaluate","_removing","_updating","beginEdit","key","set","endEdit","addFeaturesToLayer","removeFeatures","getFeatureById","defaultFields","UPDATE","cont","containsKey","destroy","LayerRecord","getLayer","setLayer","clone","applyIf","LayerReader","layers","LayerStoreMixin","map","MapPanel","addEvents","LayerStore","MAP_TO_STORE","STORE_TO_MAP","addLayer","changelayer","onChangeLayer","addlayer","onAddLayer","removelayer","onRemoveLayer","replace","onReplace","fireEvent","recordIndex","rec","property","layerIndex","getLayerIndex","insert","EDIT","unloadDestroy","isArray","removeLayer","addLayers","setLayerIndex","removeMapLayer","title","setName","oldRecord","newRecord","getByLayer","ScaleStore","JsonReader","register","populateFromMap","baseLayer","populateOnAdd","unregister","isBaseLayer","zooms","resolutions","units","res","level","resolution","scale","Util","getScaleFromResolution","StyleReader","onMetaChange","commit","createInterceptor","raw","root","storeToData","Symbolizer","Raster","metaData","colorMap","idProperty","fillColor","color","fillOpacity","opacity","stroke","label","quantity","sort","symbolizer","labelModified","isModified","Number","filter","json","rules","CQL","symbolizers","description","elseFilter","minScaleDenominator","maxScaleDenominator","WMSCapabilitiesReader","WMSCapabilities","attributionCls","serviceExceptionFormat","formats","imageFormat","opaque","imageTransparent","nodeType","error","Error","version","capability","getmap","href","exception","exceptions","params","attribution","attributionMarkup","minScale","maxScale","layerOptions","transparent","layerParams","Layer","WMS","markup","logo","join","WMSCapabilitiesStore","WFSCapabilitiesReader","WFSCapabilities","featureType","protocolOptions","featureTypeList","protocolDefaults","getfeature","post","featureNS","protocol","Protocol","WFS","strategies","Strategy","Fixed","metaLayerOptions","isFunction","Vector","WFSCapabilitiesStore","WMSDescribeLayerReader","WMSDescribeLayer","WMSDescribeLayerStore","WMCReader","WMC","layersContext","layerContext","getLayerFromContext","Action","control","activateOnEnable","deactivateOnDisable","uScope","uHandler","uToggleHandler","uCheckHandler","handler","toggleHandler","checkHandler","pHandler","pToggleHandler","pCheckHandler","ctrl","addControl","pressed","checked","activate","active","onCtrlActivate","deactivate","onCtrlDeactivate","cmp","Control","TYPE_BUTTON","trigger","changeControlState","_activating","initialConfig","_deactivating","enable","safeCallEach","disable","fnName","args","cs","rendered","render","createDelegate","single","setDisabled","ProtocolProxy","DataProxy","abortPrevious","setParamsAsOptions","callback","arg","cb","loadResponse","abortRequest","abort","result","FeatureRenderer","BoxComponent","Feature","style","symbolType","minWidth","minHeight","renderers","rendererOptions","pointFeature","lineFeature","polygonFeature","renderer","initComponent","Geometry","Point","LineString","Polygon","LinearRing","draw","initCustomEvents","clearCustomEvents","el","onClick","removeAllListeners","onRender","ct","position","document","createElement","getId","supported","assignRenderer","getResolution","afterRender","onResize","w","h","setRendererDimensions","gb","geometry","getBounds","gw","getWidth","gh","getHeight","Math","max","width","height","center","getCenterPixel","bhalfw","bhalfh","bounds","Bounds","x","y","setSize","Size","round","setExtent","Renderer","setSymbolizers","setSymbolType","toLowerCase","geomType","Text","CLASS_NAME","split","pop","beforeDestroy","reg","Panel","zoom","extent","prettyStateKeys","stateEvents","Map","allOverlays","LonLat","fromString","fromArray","moveend","onMoveend","onChangelayer","onAddlayer","onRemovelayer","applyState","l","layerId","visibility","setBaseLayer","setVisibility","setOpacity","getState","getCenter","lon","lat","getZoom","getVisibility","updateMapSize","updateSize","renderMap","body","dom","setInitialExtent","setCenter","zoomToExtent","zoomToMaxExtent","ownerCt","afterlayout","afterLayout","getInnerWidth","getBorderWidth","getInnerHeight","onBeforeAdd","item","addToMapPanel","autoDestroy","removeFromMapPanel","guess","ComponentMgr","all","find","Popup","Window","anchored","panIn","unpinnable","location","insideViewport","animCollapse","draggable","shadow","popupCls","ancCls","anchorPosition","getCentroid","getCenterLonLat","Pixel","getLonLatFromViewPortPx","mapExtent","getExtent","containsLonLat","addAnchorEvents","baseCls","elements","initTools","addTool","unanchorPopup","show","_mapMove","panIntoView","maximize","maximized","anc","ancSize","getSize","isNaN","isVisible","setVisible","locationPx","getPixelFromLonLat","mapBox","fly","div","getBox","top","left","elSize","ancPos","addClass","ancRight","getX","removeClass","ancLeft","getLeft","setPosition","removeAnchorEvents","header","dd","DD","tools","unpin","hide","popupPos","getPosition","panelSize","popupSize","newPos","padding","paddingForPopups","right","bottom","dx","dy","pan","onMapMove","hidden","move","resize","collapse","expand","form","toFilter","logicalOp","wildcard","FormPanel","getForm","filters","getValues","prop","s","FILTER_MAP","Filter","Comparison","EQUAL_TO","LIKE","ENDS_WITH","STARTS_WITH","CONTAINS","Logical","NOT","AND","eq","ne","NOT_EQUAL_TO","lt","LESS_THAN","le","LESS_THAN_OR_EQUAL_TO","gt","GREATER_THAN","ge","GREATER_THAN_OR_EQUAL_TO","like","recordToField","xtype","restriction","nillable","labelTpl","tpl","Template","XTemplate","baseOptions","labelStyle","mandatoryFieldLabelStyle","REGEXES","match","maxLength","parseFloat","minLength","fieldLabel","maxValue","minValue","labelProperty","checkboxLabelProperty","text","number","boolean","date","SearchAction","run","clientValidation","isValid","prevResponse","handleResponse","failureType","CLIENT_INVALID","afterAction","BasicForm","autoAbort","doAction","action","search","createForm","listeners","grid","SymbolizerColumn","Column","window","setTimeout","renderTo","css","types","gx_symbolizercolumn","SliderTip","slider","Tip","hover","offsets","dragging","init","registerThumbListeners","thumb","ii","thumbs","tracker","mouseover","onSlide","mouseout","LayerOpacitySliderTip","template","compiledTemplate","getText","ZoomSliderTip","getScale","tree","LayerNodeUI","TreeNodeUI","bulkRender","a","node","disabled","autoDisable","inRange","calculateInRange","checkbox","checkedGroup","radio","DomHelper","insertAfter","className","defaultChecked","enforceOneVisible","getTarget","toggleCheck","isChecked","group","checkedNodes","getOwnerTree","getChecked","checkedCount","n","appendDDGhost","ghostNode","elNode","cloneNode","DomQuery","select","appendChild","LayerNode","AsyncTreeNode","layerStore","leaf","children","loader","iconCls","TreeLoader","LayerParamLoader","defaultUI","fixedText","ui","getUI","alwaysInRange","addVisibilityEventHandlers","addStoreEventHandlers","visibilitychanged","onLayerVisibilityChanged","checkchange","onCheckChange","onMapMoveEnd","_visibilityChanging","onStoreAdd","onStoreRemove","onStoreUpdate","setText","TreePanel","nodeTypes","gx_layer","TreeNodeUIEventMixin","plugins","TreeNodeComponent","Observable","rendernode","onRenderNode","beforedestroy","onBeforeDestroy","component","elt","append","tag","fn","Component","preg","TreeNodeRadioButton","rawclicknode","onRawClickNode","radioGroup","insertBefore","anchor","TreeNodeActions","actionsCls","actionCls","actions","html","concat","qtip","BLANK_IMAGE_URL","insertFirst","updateActions","t","LayerLoader","displayInLayerSwitcher","baseAttrs","uiProviders","removeStoreHandlers","firstChild","removeChild","getLoader","addLayerNode","addStoreHandlers","_reordering","nodeIndex","recordIndexToNodeIndex","removeLayerNode","layerRecord","sibling","child","createNode","onChildMove","findChildBy","reload","oldParent","newParent","LayerContainer","newRecordIndex","childNodes","searchIndex","parentNode","prev","previousSibling","lastChild","next","nextSibling","oldRecordIndex","_storeHandlers","uiProvider","eval","count","getCount","nodeCount","gx_layercontainer","BaseLayerContainer","gx_baselayercontainer","OverlayLayerContainer","gx_overlaylayercontainer","LayerParamNode","TreeNode","param","delimiter","allItems","getItemsFromLayer","paramValue","createParams","mergeNewParams","visible","newItems","curItems","gx_layerparam","HTTPRequest","addParamNode","paramItem","allParamItems","WMSCapabilitiesLoader","requestMethod","getParams","service","processResponse","capabilities","processLayer","createWMSLayer","queryable","metadata","nestedLayers","LayerOpacitySlider","SingleSlider","complementaryLayer","delay","changeVisibilityDelay","aggressive","changeVisibility","inverse","getOpacityValue","_settingOpacity","setValue","parseInt","changeLayerOpacity","buffer","changeLayerVisibility","changeComplementaryLayerVisibility","currentVisibility","panel","getEl","setStyle","zIndex","Z_INDEX_BASE","mousedown","stopMouseEvents","click","stopEvent","LayerLegend","Container","showTitle","legendTitle","labelCls","autoEl","getLayerTitle","cls","getLabel","innerHTML","Label","onDestroy","getTypes","preferredTypes","score","scoredTypes","supports","b","goodTypes","LegendImage","defaultImgSrc","imgCls","class","src","setUrl","onImageLoadError","UrlLegend","WMSLegend","defaultStyleIsFirst","useScaleParameter","baseParams","_noMap","onLayerMoveend","zoomChanged","getLegendUrl","layerName","layerNames","styles","LAYERS","styleNames","STYLES","idx","styleName","legend","SLD","SLD_BODY","getFullRequestString","REQUEST","WIDTH","HEIGHT","EXCEPTIONS","LAYER","STYLE","SRS","FORMAT","TIME","opacityPropertie","opacityUrl","urlAppend","_OLSALT","urlEncode","destroyList","textCmp","itemId","newUrl","isEquivalentUrl","getComponent","doLayout","VectorLegend","untitledPrefix","clickableSymbol","clickableTitle","selectOnClick","enableDD","bodyBorder","selectedRule","currentScaleDenominator","arborescence","zoomend","onMapZoom","symbolTypeFromFeature","setRules","rulesContainer","setCurrentScaleDenominator","styleMap","Style","Rule","createSymbolizer","getRuleEntry","rule","addRuleEntry","noDoLayout","createRuleEntry","removeRuleEntry","ruleEntry","selectRuleEntry","newSelection","unselect","applies","createRuleRenderer","createRuleTitle","layout","border","bodyStyle","cursor","defaults","comp","addDD","mergeOptions","obj1","obj2","obj3","attrname","haveType","Type","outer","jj","defaultsPerSymbolizer","defaultStyle","display","externalGraphic","diviseur","graphicHeight","graphicWidth","graphicXOffset","graphicYOffset","background","getRuleTitle","DragSource","ddGroup","onDragOut","targetId","target","getCmp","DragZone","onDragEnter","sourcePos","targetPos","onDragDrop","moveRule","getDragData","sourceEl","d","repairXY","getXY","ddel","DropTarget","notifyDrop","updateRuleEntry","removeAll","srcRule","splice","ArcgisLegend","substr","lastIndexOf","Igo","Aide","utiliserProxy","that","$","ajax","dataType","layersName","layersNameArray","String","key2","imageData","ArcGIS93Rest","gx_arcgislegend","LegendPanel","dynamic","addLegend","onStoreClear","recordIndexToPanelIndex","panelIndex","legendCount","getIdForLayer","removeLegend","removeAllLegends","ZoomSlider","updating","changeHandler","afterrender","changebaselayer","initZoomValues","minZoomLevel","numZoomLevels","maxZoomLevel","getValue","getResolutionForZoom","getUnits","zoomTo","FeatureSelectionModelMixin","autoActivateControl","layerFromStore","selectControl","bound","selectedFeatures","autoPanMapOnSelection","SelectFeature","singleSelect","multiple","multipleKey","createSelectControl","initEvents","getStore","toggle","isMac","obj","controlConfig","getLayers","featureselected","featureSelected","featureunselected","featureUnselected","rowSelected","rowDeselected","_selecting","row","isSelected","selectRow","getView","focusRow","deselectRow","model","recenterToSelectionExtent","removeItem","selectionExtent","getSelectionExtent","selectionExtentZoom","getZoomForExtent","maxExtent","FeatureSelectionModel","RowSelectionModel","PrintPage","printProvider","rotation","customParams","fromWKT","setScale","scales","loadcapabilities","layoutchange","onLayoutChange","getPrintExtent","calculatePageBounds","geom","toGeometry","rotate","oldCenter","setRotation","force","fit","fitTo","closest","POSITIVE_INFINITY","mapWidth","mapHeight","mode","contains","containsBounds","diff","abs","mods","size","unitsRatio","INCHES_PER_UNIT","PrintProvider","encoding","charset","characterSet","timeout","dpis","layouts","dpi","JsonStore","sortInfo","direction","loadStores","autoLoad","loadCapabilities","setLayout","setDpi","print","pages","jsonData","srs","projection","getCode","pagesLayer","encodedLayers","unshift","enc","encodeLayer","encodedPages","page","overview","encodedOverviewLayers","overviewLayers","cloneConfig","encodedLegends","encFn","encoders","legends","getXType","printURL","encodeURIComponent","encode","download","Ajax","createURL","headers","Content-Type","decode","getURL","failure","isOpera","open","encLayer","getAbsoluteUrl","isIE6","isIE7","isIE8","DEFAULT_PARAMS","OSM","TileCache","baseURL","extension","TMS","layername","toArray","tileSize","serverResolutions","WMTS","requestEncoding","tileOrigin","formatSuffix","dimensions","tileFullExtent","matrixSet","zoomOffset","KaMapCache","KaMap","metaTileWidth","metaTileHeight","singleTile","Image","pixelSize","dictKey","dictItem","encFeatures","encStyles","featureFormat","GeoJSON","styleFormat","JSON","nextId","styleDict","renderIntent","write","featureGeoJson","extract","_gx_style","styleProperty","geoJson","Markers","markers","marker","lonlat","icon","offset","vector","output","gx_wmslegend","base","icons","urlDecode","classes","gx_urllegend","PrintPageField","printPage","onCfg","eventName","ComboBox","Checkbox","onFieldChange","change","onPageChange","suspendEvents","displayField","resumeEvents","PrintProviderField","onProviderChange","dpichange","PrintExtent","mapPanel","onMapPanelDestroy","createControl","addPage","fitPage","removePage","selectPage","updateBox","removeControl","TransformFeature","preserveAspectRatio","eventListeners","beforesetfeature","object","setfeature","beforetransform","toShortString","box","boxBounds","pageBounds","tooLarge","tooSmall","transformcomplete","AttributeForm","attributeStore","formPanel","fillForm","onFormDestroy","recordToFieldOptions","PrintMapPanel","sourceMap","previewScales","currentZoom","getProjection","getMaxExtent","maxResolution","getMaxResolution","fitZoom","syncSize","updatePage","limitScales","calculatePreviewScales","adjustSize","printSize","ratio","targetWidth","autoWidth","targetHeight","autoHeight","printBounds","viewSize","scalesByZoom","idealResolution","PermalinkProvider","readURL","Provider","encodeType","k","stateId","getParameters","hasOwnProperty","decodeValue","getLink","unescape","encodeValue","applyDefaults","paramsStr","getParameterString","qMark","substring","Lang","locale","navigator","language","userLanguage","dict","lookup","parent","tags","str","parts","missing"],"mappings":";AAiBAA,IAAIC,UAAU,eAsBdC,OAAOC,KAAKC,gBAAkB,SAASC,EAAMC,GACzCD,EAAOA,MACHA,EAAKE,SACLF,EAAKE,OAAS,GAAIC,YAAWC,OAAOC,wBAExCR,OAAOC,KAAKC,gBAAgBO,WAAWC,YAAYC,KAC/CC,KAAMT,EAAMC,GAAcD,EAAKU,QAEhCV,EAAKW,SACJF,KAAKR,WAAWW,UAAUF,OAAOG,IAAI,GAAIlB,KAAIG,KAAKgB,MAAM,WAIhEnB,IAAIoB,OAAOlB,OAAOC,KAAKC,gBAAiBJ,IAAIG,KAAKkB,YAU7CC,KAAM,SAASC,GACX,GAAIpB,GAAOoB,EAAQC,WAInB,OAHIrB,IAASA,EAAKsB,kBACdtB,EAAOoB,EAAQG,cAEZZ,KAAKa,YAAYxB,IAc5BwB,YAAa,SAASxB,GAClB,GAAIyB,EAEAA,GADDzB,YAAgB0B,OACF1B,EAGAW,KAAKT,KAAKE,OAAOe,KAAKnB,GAAM2B,aAAa,GAAGC,UAO7D,KAAI,GADAC,GAAMC,EAAQC,EAAcC,EAAQC,EAAOC,EAJ3CrB,EAAUF,KAAKT,KAAKW,QACpBV,EAAaQ,KAAKR,WAClBS,EAAST,EAAWW,UAAUF,OAC9BuB,EAAYvB,EAAOwB,OAC+BC,KAC9CC,EAAE,EAAGC,EAAId,EAAWW,OAAUG,EAAFD,IAASA,EAAG,CAC5CN,GAAS,EACTH,EAAOJ,EAAWa,GAClBR,IACA,KAAI,GAAIU,GAAE,EAAKL,EAAFK,IAAeA,EAAG,CAI3B,GAHAN,EAAQtB,EAAO6B,MAAMD,GACrBT,EAAOG,EAAMH,KACbE,EAAQC,EAAMQ,QAAQb,EAAKE,IACxBpB,KAAKgC,gBAAgBZ,EAAME,GAAQ,CAClCD,GAAS,CACT,OAEJF,EAAOC,GAAQE,EAEhBpB,IACCoB,EAAQpB,EAAQY,WAAWK,EAAa,MAC3Bc,SAAVX,IACItB,KAAKgC,gBAAgB,QAASV,GAC7BD,GAAS,EAETF,EAAc,MAAIG,IAI1BD,IACAK,EAAQA,EAAQD,QAAU,GAAIjC,GAAW2B,IAIjD,OACIe,SAAS,EACTR,QAASA,EACTS,aAAcT,EAAQD,SAU9BO,gBAAiB,SAASZ,EAAME,GAC5B,GAAID,IAAS,CACb,IAAGrB,KAAKT,KAAK8B,QAAUrB,KAAKT,KAAK8B,OAAOD,GAAO,CAC3C,GAAIgB,GAAUpC,KAAKT,KAAK8B,OAAOD,EACV,iBAAXgB,GACNf,EAAUe,IAAYd,EAChBc,YAAmBrB,OACzBM,EAAUe,EAAQC,QAAQf,GAAS,GAC7Bc,YAAmBE,UACzBjB,EAAUe,EAAQG,KAAKjB,IAG/B,MAAOD,MCnIfnC,IAAIC,UAAU,eAoBdC,OAAOC,KAAKmD,oBAAsB,WAC9B,OAEI1C,YAAa,SAAS2C,GAClBA,EAAIA,MACJC,UAAUC,OAAO9C,WAAWC,YAAYC,KACpCC,KACAd,IAAI0D,MAAMH,GACNI,MAAOJ,EAAEI,QAAWJ,EAAEpD,KAElB4C,OADA,GAAI/C,KAAIG,KAAKyD,WAAWC,IAAKN,EAAEM,IAAKC,gBAAgB,EAAOC,OAAQ,SAGvEC,OAAQ,GAAI9D,QAAOC,KAAKC,gBACpBmD,EAAGA,EAAExC,SAAW,OAAQ,OAAQ,eAC5BmB,KAAM,WAAY+B,KAAM,gBAKrCnD,KAAKE,SACJF,KAAKoD,QAMbA,KAAM,WACFpD,KAAKqD,IACDC,OAAUtD,KAAKuD,SACfC,KAAQxD,KAAKyD,OACbrD,IAAOJ,KAAK0D,MACZC,MAAO3D,MAEX,IAAI0B,KACJ1B,MAAK4D,KAAK,SAASC,GACfnC,EAAQoC,KAAKD,KAEjB7D,KAAK+D,cAAcrC,IAUvB6B,SAAU,SAASS,EAAOH,EAAQI,GAC9BjE,KAAK+D,eAAeF,KAUxBJ,OAAQ,SAASO,EAAOtC,EAASwC,GAIzBA,GAAWA,EAAQ9D,OAAQ,GAC3BJ,KAAK+D,cAAcrC,IAW3BgC,MAAO,SAASM,EAAOtC,EAASyC,GAC5BnE,KAAK+D,cAAcrC,IAQvBqC,cAAe,SAASrC,GACpB,GACIC,GAAGC,EAAKiC,EAAQzC,EAAME,EAAO8C,EAAUC,EADvCnE,EAAUF,KAAKE,QAASoE,EAAQpE,EAAQoE,KAE5C,KAAI3C,EAAE,EAAEC,EAAIF,EAAQD,OAAUG,EAAFD,EAAOA,IAC/BkC,EAASnC,EAAQC,GACjBP,EAAOyC,EAAOU,IAAI,QAClBjD,EAAQuC,EAAOU,IAAI,SACnBH,EAAWlE,EAAQY,WAAWM,GAC3BgD,IAAa9C,IACZ+C,GAAQ,EAGhB,IAAGA,GAASC,GAASA,EAAME,QACfF,EAAME,OAAOC,aAAa,yBACrBvE,QAASA,OAAc,EAAO,CAC3C,IAAIyB,EAAE,EAAEC,EAAIF,EAAQD,OAAUG,EAAFD,EAAOA,IAC/BkC,EAASnC,EAAQC,GACjBP,EAAOyC,EAAOU,IAAI,QAClBjD,EAAQuC,EAAOU,IAAI,SACnBrE,EAAQY,WAAWM,GAAQE,CAE/BgD,GAAME,OAAOC,aACT,mBAAoBvE,QAASA,IACjCoE,EAAMI,YAAYxE,OA0ClCd,OAAOC,KAAKsF,eAAiBzF,IAAIoB,OAC7BpB,IAAIG,KAAKuF,MACTxF,OAAOC,KAAKmD,uBC9KhBtD,IAAIC,UAAU,eAYdC,OAAOC,KAAKwF,cAAgB3F,IAAIG,KAAKyF,OAAOC,SACvC3D,KAAM,YAAaA,KAAM,UAAWA,KAAM,SAQ/ChC,OAAOC,KAAKwF,cAAc1E,UAAU6E,WAAa,WAC7C,MAAOhF,MAAKuE,IAAI,YAQpBnF,OAAOC,KAAKwF,cAAc1E,UAAU8E,WAAa,SAAS/E,GAClDA,IAAYF,KAAKX,KAAKa,UACtBF,KAAKqE,OAAQ,EACRrE,KAAKkF,WACNlF,KAAKkF,aAEqBjD,SAA1BjC,KAAKkF,SAAShF,UACdF,KAAKkF,SAAShF,QAAUF,KAAKX,KAAKa,SAEtCF,KAAKX,KAAKa,QAAUA,EACfF,KAAKmF,SACNnF,KAAKoF,cAcjBhG,OAAOC,KAAKwF,cAAcE,OAAS,SAASM,GACxC,GAAIC,GAAIpG,IAAIoB,OAAOlB,OAAOC,KAAKwF,kBAC3BU,EAAID,EAAEnF,SAUV,IARAoF,EAAEtF,OAAS,GAAIf,KAAIsG,KAAKC,iBAAgB,EAAO,SAASlE,GACpD,MAAOA,GAAMH,OAGjBhC,OAAOC,KAAKwF,cAAc1E,UAAUF,OAAO2D,KAAK,SAAS0B,GACrDC,EAAEtF,OAAOG,IAAIkF,KAGdD,EACC,IAAI,GAAI1D,GAAI,EAAGC,EAAMyD,EAAE5D,OAAYG,EAAJD,EAASA,IACpC4D,EAAEtF,OAAOG,IAAI,GAAIlB,KAAIG,KAAKgB,MAAMgF,EAAE1D,IAQ1C,OAJA2D,GAAEI,SAAW,SAAStE,GAClB,MAAOmE,GAAEtF,OAAOsE,IAAInD,IAGjBkE,GCxEXpG,IAAIC,UAAU,SAAU,eAwBxBC,OAAOC,KAAKsG,cAAgB,SAASpG,EAAMC,GACvCD,EAAOA,MACFC,YAAsBoG,YACvBpG,EAAaJ,OAAOC,KAAKwF,cAAcE,OACnCvF,GAAcD,EAAKU,aAE3Bb,OAAOC,KAAKsG,cAAc9F,WAAWC,YAAYC,KAC7CC,KAAMT,EAAMC,IAGpBN,IAAIoB,OAAOlB,OAAOC,KAAKsG,cAAezG,IAAIG,KAAKkB,YAM3C4B,aAAc,KAWd3B,KAAM,SAASqF,GACX,MAAO7F,MAAKa,YAAYgF,EAASC,WAYrCjF,YAAc,SAASiF,GACnB,GAAIpE,KAEJ,IAAIoE,EAAU,CACV,GACInE,GAAGoE,EAAMlE,EAAGmE,EAAM9F,EAASiB,EAAQI,EAAO0E,EAD1CzG,EAAaQ,KAAKR,WAAYS,EAAST,EAAWW,UAAUF,MAEhE,KAAK0B,EAAI,EAAGoE,EAAOD,EAASrE,OAAYsE,EAAJpE,EAAUA,IAAK,CAG/C,GAFAzB,EAAU4F,EAASnE,GACnBR,KACIjB,EAAQY,WACR,IAAKe,EAAI,EAAGmE,EAAO/F,EAAOwB,OAAYuE,EAAJnE,EAAUA,IAAI,CAE5C,GADAN,EAAQtB,EAAO6B,MAAMD,GACjB,SAASU,KAAKhB,EAAM2E,SACpB,IACID,EAAI,GAAIL,UAAS,MAAO,cAAgBrE,EAAM2E,SAAShG,EAAQY,YACjE,MAAMqF,GACJF,EAAI1E,EAAM6E,iBAIdH,GAAI/F,EAAQY,WAAWS,EAAM2E,SAAW3E,EAAMH,OAASG,EAAM6E,YAE7D7E,GAAMQ,UACNkE,EAAI1E,EAAMQ,QAAQkE,IAEtB9E,EAAOI,EAAMH,MAAQ6E,EAG7B9E,EAAOjB,QAAUA,EACjBiB,EAAOkF,MAAQnG,EAAQmG,MACvBlF,EAAOmF,IAAMpG,EAAQoG,GAGrB,IAAIC,GAAMrG,EAAQmG,QAAU3G,WAAW8G,MAAMC,OAAUxE,OAAY/B,EAAQqG,EAC3E7E,GAAQA,EAAQD,QAAU,GAAIjC,GAAW2B,EAAQoF,IAIzD,OACI7E,QAASA,EACTS,aAAmC,MAArBnC,KAAKmC,aAAuBnC,KAAKmC,aAAeT,EAAQD,WCxGlFvC,IAAIC,UAAU,eA4CdC,OAAOC,KAAKqH,kBAAoB,WAC5B,OAIIpC,MAAO,KAWPpB,OAAQ,KAMRyD,cAAe,KAUf7G,YAAa,SAAS8G,GAClBA,EAASA,MACTA,EAAO1D,OAAS0D,EAAO1D,QACP,GAAI9D,QAAOC,KAAKsG,iBAAkBiB,EAAO3G,OACzD,IAAIqE,GAAQsC,EAAOtC,YACZsC,GAAOtC,MAEVsC,EAAOd,WACPc,EAAOvH,KAAOuH,EAAOd,gBAElBc,GAAOd,QAEd,IAAI5B,IAAW2C,QAASD,EAAOC,eACxBD,GAAOC,QACdnE,UAAUC,OAAO9C,WAAWC,YAAYC,KAAKC,KAAM4G,GAChDtC,GACCtE,KAAKoD,KAAKkB,EAAOJ,IAWzBd,KAAM,SAASkB,EAAOJ,GAClB,IAAGlE,KAAKsE,MAAR,CAIAtE,KAAKsE,MAAQA,EACbJ,EAAUA,KAEV,IAAI2C,GAAU3C,EAAQ2C,OACA5E,SAAnBiC,EAAQ2C,UACPA,EAAUzH,OAAOC,KAAKyH,aAAaC,eACzB3H,OAAOC,KAAKyH,aAAaE,eAIvC,IAAIlB,GAAWxB,EAAMwB,SAASmB,MAAM,EAEpC,IAAGJ,EAAUzH,OAAOC,KAAKyH,aAAaE,eAElC,IAAI,GADAtF,GAAU1B,KAAKkH,WACXvF,EAAED,EAAQD,OAAS,EAAGE,GAAG,EAAGA,IAChC3B,KAAKsE,MAAM6C,aAAazF,EAAQC,GAAGqD,cAIxC6B,GAAUzH,OAAOC,KAAKyH,aAAaC,gBAClC/G,KAAKoH,SAAStB,GAAU,GAG5BxB,EAAME,OAAOnB,IACTgE,cAAiBrH,KAAKsH,gBACtBC,gBAAmBvH,KAAKwH,kBACxBC,gBAAmBzH,KAAK0H,kBACxB/D,MAAO3D,OAEXA,KAAKqD,IACDG,KAAQxD,KAAKyD,OACbkE,MAAS3H,KAAK4H,QACdxH,IAAOJ,KAAK0D,MACZmE,OAAU7H,KAAK8H,SACfxE,OAAUtD,KAAKuD,SACfI,MAAO3D,SAOf+H,OAAQ,WACD/H,KAAKsE,QACJtE,KAAKsE,MAAME,OAAOwD,IACdX,cAAiBrH,KAAKsH,gBACtBC,gBAAmBvH,KAAKwH,kBACxBC,gBAAmBzH,KAAK0H,kBACxB/D,MAAO3D,OAEXA,KAAKgI,GAAG,OAAQhI,KAAKyD,OAAQzD,MAC7BA,KAAKgI,GAAG,QAAShI,KAAK4H,QAAS5H,MAC/BA,KAAKgI,GAAG,MAAOhI,KAAK0D,MAAO1D,MAC3BA,KAAKgI,GAAG,SAAUhI,KAAK8H,SAAU9H,MACjCA,KAAKgI,GAAG,SAAUhI,KAAKuD,SAAUvD,MAEjCA,KAAKsE,MAAQ,OAarB2D,qBAAsB,SAAS/H,GAC3B,MAAOF,MAAKkI,aAAahI,IAAY,MAUzCgI,aAAc,SAAShI,GACnB,GAAI2D,EACJ,IAAG3D,EAAQmG,QAAU3G,WAAW8G,MAAMC,OAClC5C,EAAS7D,KAAKmI,QAAQjI,EAAQqG,QAC3B,CACH,GAAIpC,GAAQnE,KAAKoI,OAAO,SAASC,GAC7B,MAAOA,GAAErD,eAAiB9E,GAE3BiE,GAAQ,KACPN,EAAS7D,KAAKsI,MAAMnE,IAG5B,MAAON,IAMXyD,gBAAiB,SAASiB,GACtB,IAAIvI,KAAKwI,QAAS,CACd,GAAI1C,GAAWyC,EAAIzC,SAAU2C,EAAQ3C,CACrC,IAAG9F,KAAK2G,cAAe,CACnB8B,IAEA,KAAI,GADA9G,GAAGC,EAAK1B,EACJyB,EAAE,EAAGC,EAAIkE,EAASrE,OAAUG,EAAFD,EAAOA,IACrCzB,EAAU4F,EAASnE,GACf3B,KAAK2G,cAAc+B,SAASxI,MAAa,GACzCuI,EAAM3E,KAAK5D,GAOvBF,KAAKwI,SAAU,EACfxI,KAAKoH,SAASqB,GAAO,SACdzI,MAAKwI,UAOpBhB,kBAAmB,SAASe,GACxB,IAAIvI,KAAK2I,UAAW,CAChB,GAA6BzI,GAAS2D,EAAQlC,EAA1CmE,EAAWyC,EAAIzC,QACnB,KAAInE,EAAEmE,EAASrE,OAAS,EAAGE,GAAG,EAAGA,IAC7BzB,EAAU4F,EAASnE,GACnBkC,EAAS7D,KAAKkI,aAAahI,GACb+B,SAAX4B,IACC7D,KAAK2I,WAAY,EACjB3I,KAAK6H,OAAOhE,SACL7D,MAAK2I,aAS5BjB,kBAAmB,SAASa,GACxB,IAAIvI,KAAK4I,UAAW,CAChB,GAAI1I,GAAUqI,EAAIrI,QACd2D,EAAS7D,KAAKkI,aAAahI,EAC/B,IAAc+B,SAAX4B,EAAsB,CACrBA,EAAOgF,WACP,IAAI/H,GAAaZ,EAAQY,UACzB,IAAGA,EAEC,IAAI,GADAb,GAASD,KAAKR,WAAWW,UAAUF,OAC/B0B,EAAE,EAAGC,EAAI3B,EAAOwB,OAAUG,EAAFD,EAAOA,IAAK,CACxC,GAAIJ,GAAQtB,EAAO6B,MAAMH,GACrBmH,EAAMvH,EAAM2E,SAAW3E,EAAMH,IAC9B0H,KAAOhI,IACN+C,EAAOkF,IAAIxH,EAAMH,KAAMG,EAAMQ,QAAQjB,EAAWgI,KAQ5DjF,EAAOkF,IAAI,QAAS7I,EAAQmG,OAC5BxC,EAAOkF,IAAI,MAAO7I,EAAQoG,KAC1BzC,EAAOoB,WAAW/E,GAClBF,KAAK4I,WAAY,EACjB/E,EAAOmF,gBACAhJ,MAAK4I,aASxBK,mBAAoB,SAASvH,GACzB,GAAIC,GAAGC,EAAKkE,CAEZ,KADAA,EAAW,GAAI/E,OAAOa,EAAIF,EAAQD,QAC9BE,EAAE,EAAKC,EAAFD,EAAOA,IACZmE,EAASnE,GAAKD,EAAQC,GAAGqD,YAE1Bc,GAASrE,OAAS,IACjBzB,KAAKwI,SAAU,EACfxI,KAAKsE,MAAM6C,YAAYrB,SAChB9F,MAAKwI,UAWpB/E,OAAQ,SAASO,EAAOtC,EAASwC,GAIzBA,GAAWA,EAAQ9D,OAAQ,IAC3BJ,KAAK2I,WAAY,EACjB3I,KAAKsE,MAAM4E,eAAelJ,KAAKsE,MAAMwB,gBAC9B9F,MAAK2I,UAEZ3I,KAAKiJ,mBAAmBvH,KAShCkG,QAAS,SAAS5D,GACdhE,KAAK2I,WAAY,EACjB3I,KAAKsE,MAAM4E,eAAelJ,KAAKsE,MAAMwB,gBAC9B9F,MAAK2I,WAUhBjF,MAAO,SAASM,EAAOtC,EAASyC,GACxBnE,KAAKwI,SAGLxI,KAAKiJ,mBAAmBvH,IAWhCoG,SAAU,SAAS9D,EAAOH,EAAQM,GAC9B,IAAInE,KAAK2I,UAAW,CAChB,GAAIzI,GAAU2D,EAAOmB,YACwB,OAAzChF,KAAKsE,MAAM6E,eAAejJ,EAAQqG,MAClCvG,KAAK2I,WAAY,EACjB3I,KAAKsE,MAAM4E,gBAAgBrF,EAAOmB,qBAC3BhF,MAAK2I,aAYxBpF,SAAU,SAASS,EAAOH,EAAQI,GAC9B,IAAIjE,KAAK4I,UAAW,CAMhB,GAAIQ,IAAgB,GAAIhK,QAAOC,KAAKwF,eAAgB5E,OAChDC,EAAU2D,EAAOmB,YAIrB,IAHI9E,EAAQmG,QAAU3G,WAAW8G,MAAMC,SACnCvG,EAAQmG,MAAQ3G,WAAW8G,MAAM6C,QAElCxF,EAAO5D,OAAQ,CACd,GAAIqJ,GAAOtJ,KAAKsE,MAAME,OAAOC,aACzB,yBAA0BvE,QAASA,GAEvC,IAAGoJ,KAAS,EAAO,CACf,GAAIxI,GAAaZ,EAAQY,UACzB+C,GAAO5D,OAAO2D,KACV,SAASrC,GACL,GAAIuH,GAAMvH,EAAM2E,SAAW3E,EAAMH,IAC5BgI,GAAcG,YAAYT,KAC3BhI,EAAWgI,GAAOjF,EAAOU,IAAIhD,EAAMH,SAI/CpB,KAAK4I,WAAY,EACjB5I,KAAKsE,MAAME,OAAOC,aACd,mBAAoBvE,QAASA,UAE1BF,MAAK4I,UACiC,MAAzC5I,KAAKsE,MAAM6E,eAAejJ,EAAQqG,KAClCvG,KAAKsE,MAAMI,YAAYxE,OAS3CsJ,QAAS,WACLxJ,KAAK+H,SACL3I,OAAOC,KAAKyH,aAAajH,WAAW2J,QAAQzJ,KAAKC,SAM7DZ,OAAOC,KAAKyH,aAAe5H,IAAIoB,OAC3BpB,IAAIG,KAAKuF,MACT,GAAIxF,QAAOC,KAAKqH,mBAQpBtH,OAAOC,KAAKyH,aAAaC,eAAiB,EAO1C3H,OAAOC,KAAKyH,aAAaE,eAAiB,ECvb1C9H,IAAIC,UAAU,eAUdC,OAAOC,KAAKoK,YAAcvK,IAAIG,KAAKyF,OAAOC,SACrC3D,KAAM,UACNA,KAAM,QAAS+B,KAAM,SAAU+C,QAAS,UAQ7C9G,OAAOC,KAAKoK,YAAYtJ,UAAUuJ,SAAW,WACzC,MAAO1J,MAAKuE,IAAI,UAQpBnF,OAAOC,KAAKoK,YAAYtJ,UAAUwJ,SAAW,SAASrF,GAC9CA,IAAUtE,KAAKX,KAAKiF,QACpBtE,KAAKqE,OAAQ,EACTrE,KAAKkF,WACLlF,KAAKkF,aAEkBjD,SAAxBjC,KAAKkF,SAASZ,QACbtE,KAAKkF,SAASZ,MAAQtE,KAAKX,KAAKiF,OAEpCtE,KAAKX,KAAKiF,MAAQA,EACdtE,KAAKmF,SACLnF,KAAKoF,cAWjBhG,OAAOC,KAAKoK,YAAYtJ,UAAUyJ,MAAQ,SAASrD,GAC/C,GAAIjC,GAAQtE,KAAK0J,YAAc1J,KAAK0J,WAAWE,OAC/C,OAAO,IAAI5J,MAAKF,YACZZ,IAAI2K,SAASvF,MAAOA,GAAQtE,KAAKX,MACjCkH,GAAMjC,EAAMiC,KAapBnH,OAAOC,KAAKoK,YAAY1E,OAAS,SAASM,GACtC,GAAIC,GAAIpG,IAAIoB,OAAOlB,OAAOC,KAAKoK,gBAC3BlE,EAAID,EAAEnF,SAUV,IARAoF,EAAEtF,OAAS,GAAIf,KAAIsG,KAAKC,iBAAgB,EAAO,SAASlE,GACpD,MAAOA,GAAMH,OAGjBhC,OAAOC,KAAKoK,YAAYtJ,UAAUF,OAAO2D,KAAK,SAAS0B,GACnDC,EAAEtF,OAAOG,IAAIkF,KAGdD,EACC,IAAI,GAAI1D,GAAI,EAAGC,EAAMyD,EAAE5D,OAAYG,EAAJD,EAASA,IACpC4D,EAAEtF,OAAOG,IAAI,GAAIlB,KAAIG,KAAKgB,MAAMgF,EAAE1D,IAQ1C,OAJA2D,GAAEI,SAAW,SAAStE,GAClB,MAAOmE,GAAEtF,OAAOsE,IAAInD,IAGjBkE,GCtFXpG,IAAIC,UAAU,SAAU,eAqBxBC,OAAOC,KAAKyK,YAAc,SAASvK,EAAMC,GACrCD,EAAOA,MACFC,YAAsBoG,YACvBpG,EAAaJ,OAAOC,KAAKoK,YAAY1E,OACjCvF,GAAcD,EAAKU,aAE3Bb,OAAOC,KAAKyK,YAAYjK,WAAWC,YAAYC,KAC3CC,KAAMT,EAAMC,IAGpBN,IAAIoB,OAAOlB,OAAOC,KAAKyK,YAAa5K,IAAIG,KAAKkB,YAKzC4B,aAAc,KAWdtB,YAAc,SAASkJ,GACnB,GAAIrI,KACJ,IAAGqI,EAAQ,CACP,GACIpI,GAAGoE,EAAMlE,EAAGmE,EAAM1B,EAAOnD,EAAQI,EAAO0E,EADxCzG,EAAaQ,KAAKR,WAAYS,EAAST,EAAWW,UAAUF,MAEhE,KAAI0B,EAAI,EAAGoE,EAAOgE,EAAOtI,OAAYsE,EAAJpE,EAAUA,IAAK,CAG5C,IAFA2C,EAAQyF,EAAOpI,GACfR,KACIU,EAAI,EAAGmE,EAAO/F,EAAOwB,OAAYuE,EAAJnE,EAAUA,IACvCN,EAAQtB,EAAO6B,MAAMD,GACrBoE,EAAI3B,EAAM/C,EAAM2E,SAAW3E,EAAMH,OAC7BG,EAAM6E,aACVH,EAAI1E,EAAMQ,QAAQkE,GAClB9E,EAAOI,EAAMH,MAAQ6E,CAEzB9E,GAAOmD,MAAQA,EACf5C,EAAQA,EAAQD,QAAU,GAAIjC,GAAW2B,EAAQmD,EAAMiC,KAG/D,OACI7E,QAASA,EACTS,aAAmC,MAArBnC,KAAKmC,aAAuBnC,KAAKmC,aAAeT,EAAQD,WCnElFvC,IAAIC,UAAU,eAyBdC,OAAOC,KAAK2K,gBAAkB,WAC1B,OAWIC,IAAK,KAgCL/G,OAAQ,KAIRpD,YAAa,SAAS8G,GAClBA,EAASA,MACTA,EAAO1D,OAAS0D,EAAO1D,QACP,GAAI9D,QAAOC,KAAKyK,eAAgBlD,EAAO3G,cAChD2G,GAAO3G,MAEd,IAAIgK,GAAMrD,EAAOqD,cAAe7K,QAAO8K,SAC7BtD,EAAOqD,IAAIA,IAAMrD,EAAOqD,UAC3BrD,GAAOqD,IAEXrD,EAAOmD,SACNnD,EAAOvH,KAAOuH,EAAOmD,cAElBnD,GAAOmD,MAEd,IAAI7F,IAAW2C,QAASD,EAAOC,eACxBD,GAAOC,QACdnE,UAAUC,OAAO9C,WAAWC,YAAYC,KAAKC,KAAM4G,GAEnD5G,KAAKmK,UAQD,QAGDF,GACCjK,KAAKoD,KAAK6G,EAAK/F,IAWvBd,KAAM,SAAS6G,EAAK/F,GAChB,IAAGlE,KAAKiK,IAAR,CAIAjK,KAAKiK,IAAMA,EACX/F,EAAUA,KAEV,IAAI2C,GAAU3C,EAAQ2C,OACA5E,SAAnBiC,EAAQ2C,UACPA,EAAUzH,OAAOC,KAAK+K,WAAWC,aACvBjL,OAAOC,KAAK+K,WAAWE,aAIrC,IAAIP,GAASE,EAAIF,OAAO9C,MAAM,EAE3BJ,GAAUzH,OAAOC,KAAK+K,WAAWE,cAChCtK,KAAK4D,KAAK,SAASC,GACf7D,KAAKiK,IAAIM,SAAS1G,EAAO6F,aAC1B1J,MAEJ6G,EAAUzH,OAAOC,KAAK+K,WAAWC,cAChCrK,KAAKoH,SAAS2C,GAAQ,GAG1BE,EAAIzF,OAAOnB,IACPmH,YAAexK,KAAKyK,cACpBC,SAAY1K,KAAK2K,WACjBC,YAAe5K,KAAK6K,cACpBlH,MAAO3D,OAEXA,KAAKqD,IACDG,KAAQxD,KAAKyD,OACbkE,MAAS3H,KAAK4H,QACdxH,IAAOJ,KAAK0D,MACZmE,OAAU7H,KAAK8H,SACfxE,OAAUtD,KAAKuD,SACfI,MAAO3D,OAEXA,KAAKX,KAAKgE,IACNyH,QAAY9K,KAAK+K,UACjBpH,MAAO3D,OAEXA,KAAKgL,UAAU,OAAQhL,KAAMiK,KAMjClC,OAAQ,WACD/H,KAAKiK,MACJjK,KAAKiK,IAAIzF,OAAOwD,IACZwC,YAAexK,KAAKyK,cACpBC,SAAY1K,KAAK2K,WACjBC,YAAe5K,KAAK6K,cACpBlH,MAAO3D,OAEXA,KAAKgI,GAAG,OAAQhI,KAAKyD,OAAQzD,MAC7BA,KAAKgI,GAAG,QAAShI,KAAK4H,QAAS5H,MAC/BA,KAAKgI,GAAG,MAAOhI,KAAK0D,MAAO1D,MAC3BA,KAAKgI,GAAG,SAAUhI,KAAK8H,SAAU9H,MAEjCA,KAAKX,KAAK2I,GAAG,UAAWhI,KAAK+K,UAAW/K,MAExCA,KAAKiK,IAAM,OAUnBQ,cAAe,SAASlC,GACpB,GAAIjE,GAAQiE,EAAIjE,MACZ2G,EAAcjL,KAAKoI,OAAO,SAAS8C,EAAK3E,GACxC,MAAO2E,GAAIxB,aAAepF,GAE9B,IAAG2G,EAAc,GAAI,CACjB,GAAIpH,GAAS7D,KAAKsI,MAAM2C,EACxB,IAAoB,UAAjB1C,EAAI4C,UACH,IAAInL,KAAKwI,UAAYxI,KAAK2I,UAAW,CACjC,GAAIyC,GAAapL,KAAKiK,IAAIoB,cAAc/G,EACrC8G,KAAeH,IACdjL,KAAK2I,WAAY,EACjB3I,KAAK6H,OAAOhE,SACL7D,MAAK2I,UACZ3I,KAAKwI,SAAU,EACfxI,KAAKsL,OAAOF,GAAavH,UAClB7D,MAAKwI,cAGG,SAAjBD,EAAI4C,SACVtH,EAAOkF,IAAI,QAASzE,EAAMlD,MAE1BpB,KAAKgL,UAAU,SAAUhL,KAAM6D,EAAQ3E,IAAIG,KAAKyF,OAAOyG,QAUnEZ,WAAY,SAASpC,GACjB,IAAIvI,KAAKwI,QAAS,CACd,GAAIlE,GAAQiE,EAAIjE,KAChBtE,MAAKwI,SAAU,EACfxI,KAAKoH,UAAU9C,IAAQ,SAChBtE,MAAKwI,UASpBqC,cAAe,SAAStC,GAIpB,GAAGvI,KAAKiK,IAAIuB,eACR,IAAIxL,KAAK2I,UAAW,CAChB,GAAIrE,GAAQiE,EAAIjE,KAChBtE,MAAK2I,WAAY,EACjB3I,KAAK6H,OAAO7H,KAAKmI,QAAQ7D,EAAMiC,WACxBvG,MAAK2I,eAGhB3I,MAAK+H,UAWbtE,OAAQ,SAASO,EAAOtC,EAASwC,GAI7B,GAHKhF,IAAIuM,QAAQ/J,KACbA,GAAWA,IAEXwC,IAAYA,EAAQ9D,IAAK,CACzBJ,KAAK2I,WAAY,CACjB,KAAK,GAAIhH,GAAI3B,KAAKiK,IAAIF,OAAOtI,OAAS,EAAGE,GAAK,EAAGA,IAC7C3B,KAAKiK,IAAIyB,YAAY1L,KAAKiK,IAAIF,OAAOpI,UAElC3B,MAAK2I,SAGZ,IAAI/G,GAAMF,EAAQD,MAClB,IAAIG,EAAM,EAAG,CAET,IAAK,GADDmI,GAAS,GAAIhJ,OAAMa,GACdC,EAAI,EAAOD,EAAJC,EAASA,IACrBkI,EAAOlI,GAAKH,EAAQG,GAAG6H,UAE3B1J,MAAKwI,SAAU,EACfxI,KAAKiK,IAAI0B,UAAU5B,SACZ/J,MAAKwI,WAUxBZ,QAAS,SAAS5D,GACdhE,KAAK2I,WAAY,CACjB,KAAK,GAAIhH,GAAI3B,KAAKiK,IAAIF,OAAOtI,OAAS,EAAGE,GAAK,EAAGA,IAC7C3B,KAAKiK,IAAIyB,YAAY1L,KAAKiK,IAAIF,OAAOpI,UAElC3B,MAAK2I,WAUhBjF,MAAO,SAASM,EAAOtC,EAASyC,GAC5B,IAAInE,KAAKwI,QAAS,CACdxI,KAAKwI,SAAU,CAEf,KAAI,GADAlE,GACI3C,EAAED,EAAQD,OAAO,EAAGE,GAAG,IAAKA,EAChC2C,EAAQ5C,EAAQC,GAAG+H,WACnB1J,KAAKiK,IAAIM,SAASjG,GACfH,IAAUnE,KAAKiK,IAAIF,OAAOtI,OAAO,GAChCzB,KAAKiK,IAAI2B,cAActH,EAAOH,SAG/BnE,MAAKwI,UAWpBV,SAAU,SAAS9D,EAAOH,EAAQM,GAC9B,IAAInE,KAAK2I,UAAW,CAChB,GAAIrE,GAAQT,EAAO6F,UACgB,OAA/B1J,KAAKiK,IAAIP,SAASpF,EAAMiC,MACxBvG,KAAK2I,WAAY,EACjB3I,KAAK6L,eAAehI,SACb7D,MAAK2I,aAYxBpF,SAAU,SAASS,EAAOH,EAAQI,GAC9B,GAAGA,IAAc/E,IAAIG,KAAKyF,OAAOyG,MACzB1H,EAAOqB,UAAYrB,EAAOqB,SAAS4G,MAAO,CAC1C,GAAIxH,GAAQT,EAAO6F,WACfoC,EAAQjI,EAAOU,IAAI,QACpBuH,KAAUxH,EAAMlD,MACfkD,EAAMyH,QAAQD,KAW9BD,eAAgB,SAAShI,GACrB7D,KAAKiK,IAAIyB,YAAY7H,EAAO6F,aAYhCqB,UAAW,SAASjC,EAAKkD,EAAWC,GAChCjM,KAAK6L,eAAeG,IASxBE,WAAY,SAAS5H,GACjB,GAAIH,GAAQnE,KAAKoI,OAAO,SAASC,GAC7B,MAAOA,GAAEqB,aAAepF,GAE5B,OAAGH,GAAQ,GACAnE,KAAKsI,MAAMnE,GADtB,QAOJqF,QAAS,WACLxJ,KAAK+H,SACL3I,OAAOC,KAAK+K,WAAWvK,WAAW2J,QAAQzJ,KAAKC,SAuB3DZ,OAAOC,KAAK+K,WAAalL,IAAIoB,OACzBpB,IAAIG,KAAKuF,MACT,GAAIxF,QAAOC,KAAK2K,iBAQpB5K,OAAOC,KAAK+K,WAAWC,aAAe,EAOtCjL,OAAOC,KAAK+K,WAAWE,aAAe,ECrbtCpL,IAAIC,UAAU,eAedC,OAAOC,KAAK8M,WAAajN,IAAIoB,OAAOpB,IAAIG,KAAKuF,OAMzCqF,IAAK,KAMLnK,YAAa,SAAS8G,GAClB,GAAIqD,GAAOrD,EAAOqD,cAAe7K,QAAO8K,SAAWtD,EAAOqD,IAAIA,IAAMrD,EAAOqD,UACpErD,GAAOqD,IACdrD,EAAS1H,IAAI2K,QAAQjD,GAAS1D,OAAQ,GAAIhE,KAAIG,KAAK+M,eAC/C,QACA,aACA,YAGJhN,OAAOC,KAAK8M,WAAWtM,WAAWC,YAAYC,KAAKC,KAAM4G,GAErDqD,GACAjK,KAAKoD,KAAK6G,IAalB7G,KAAM,SAAS6G,EAAK/F,GAChBlE,KAAKiK,IAAOA,YAAe7K,QAAO8K,SAAWD,EAAIA,IAAMA,EACvDjK,KAAKiK,IAAIzF,OAAO6H,SAAS,kBAAmBrM,KAAMA,KAAKsM,iBACnDtM,KAAKiK,IAAIsC,UACTvM,KAAKsM,kBAELtM,KAAKiK,IAAIzF,OAAO6H,SAAS,WAAYrM,KAAMA,KAAKwM,gBASxDzE,OAAQ,WACA/H,KAAKiK,MACLjK,KAAKiK,IAAIzF,OAAOiI,WAAW,WAAYzM,KAAMA,KAAKwM,eAClDxM,KAAKiK,IAAIzF,OAAOiI,WAAW,kBAAmBzM,KAAMA,KAAKsM,uBAClDtM,MAAKiK,MAWpBuC,cAAe,SAASjE,GAChBA,EAAIjE,MAAMoI,cACV1M,KAAKsM,kBACLtM,KAAKiK,IAAIzF,OAAOiI,WAAW,WAAYzM,KAAMA,KAAKwM,iBAQ1DF,gBAAiB,WAKb,IAAK,GAJDK,MACAC,EAAc5M,KAAKiK,IAAIsC,UAAUK,YACjCC,EAAQ7M,KAAKiK,IAAIsC,UAAUM,MAEtBlL,EAAEiL,EAAYnL,OAAO,EAAGE,GAAK,EAAGA,IAAK,CAC1C,GAAImL,GAAMF,EAAYjL,EACtBgL,GAAM7I,MACFiJ,MAAOpL,EACPqL,WAAYF,EACZG,MAAOvN,WAAWwN,KAAKC,uBAAuBL,EAAKD,KAI3D7M,KAAKoH,SAASuF,IAKlBnD,QAAS,WACLxJ,KAAK+H,SACL3I,OAAOC,KAAK8M,WAAWtM,WAAW2J,QAAQ5G,MAAM5C,KAAM0C,cCvH9DxD,IAAIC,UAAU,eA0CdC,OAAOC,KAAK+N,YAAclO,IAAIoB,OAAOpB,IAAIG,KAAK+M,YAY1CiB,aAAc,WACVjO,OAAOC,KAAK+N,YAAYvN,WAAWwN,aAAazK,MAAM5C,KAAM0C,WAC5D1C,KAAKR,WAAWW,UAAUmN,OAASpO,IAAIqO,kBAAkBvN,KAAKR,WAAWW,UAAUmN,OAAQ,WACvF,GAAIpK,GAASlD,KAAKgE,MAAMd,MACxBA,GAAOsK,IAAItK,EAAO3D,KAAKkO,MAAQvK,EAAO3D,KAAKmO,YAAY1N,KAAKgE,UAMpEnD,YAAa,SAASwE,GAClB,GAAIlC,EAEAA,GADAkC,YAAa3F,YAAWiO,WAAWC,OAC5B,WAEA,QAEX5N,KAAKwN,IAAMnI,EACXnG,IAAI2K,QAAQ7J,KAAKT,KAAMH,OAAOC,KAAK+N,YAAYS,SAAS1K,GACxD,IAAI9D,IAAQwO,SAAU7N,KAAKT,KAE3B,OADAF,GAAK8D,GAAQkC,EAAElC,GACR/D,OAAOC,KAAK+N,YAAYvN,WAAWgB,YAAYd,KAAKC,KAAMX,MAOzED,OAAOC,KAAK+N,YAAYS,UACpBC,UACIL,KAAM,WACNM,WAAY,SACZ9N,SACKmB,KAAM,cAAe8E,QAAS,SAASD,GACpC,OACI+H,UAAW/H,EAAEgI,MACbC,YAAajI,EAAEkI,QACfC,QAAQ,MAGfhN,KAAM,SAAU8E,QAAS,WAAY/C,KAAM,UAC3C/B,KAAM,QAAS8E,QAAS,SAASD,GAE9B,MAAOA,GAAEoI,OAASpI,EAAEqI,YAG5BZ,YAAa,SAAS1J,GAElBA,EAAMuK,KAAK,SAAU,MACrB,IAAIT,KAwBJ,OAvBA9J,GAAMJ,KAAK,SAASsH,GAChB,GAAIsD,GAAatD,EAAI3G,IAAI,eACrB8J,EAAQnD,EAAI3G,IAAI,SAChBkK,EAAgBvD,EAAIwD,WAAW,SAM/BJ,EAAWK,OAAOzD,EAAI3G,IAAI,UAC9B2G,GAAI7L,KAAKuP,OAASN,IAEZpD,EAAI2D,KAAKR,QAAUI,GAAiBvD,EAAIwD,WAAW,WAAeD,IAAkBJ,KAEtFnD,EAAI7L,KAAKgP,MAAQC,GAErBR,EAAShK,KAAK5E,IAAI0D,MAAMsI,EAAI2D,MACxBZ,MAAOO,EAAWR,UAClBK,MAAuB,gBAATA,GAAoBA,EAAQpM,OAC1CkM,QAASK,EAAWL,QACpBG,SAAUA,OAGXR,IAGfgB,OACIrB,KAAM,QACNxN,QACI,cACA,UACCmB,KAAM,QAAS8E,QAAS,SACzB,OAAQ,cAAe,aACvB,sBAAuB,uBAE3BwH,YAAa,SAAS1J,GAClB,GAAI8K,KAiBJ,OAhBA9K,GAAMJ,KAAK,SAASsH,GAChB,GAAI0D,GAAS1D,EAAI3G,IAAI,SACC,iBAAXqK,KACPA,EAASA,EAASlP,WAAWC,OAAOoP,IAAI5O,UAAUK,KAAKoO,GAAU,MAErEE,EAAMhL,KAAK5E,IAAI0D,MAAMsI,EAAI2D,MACrBG,YAAa9D,EAAI3G,IAAI,eACrBqK,OAAQA,EACR9C,MAAOZ,EAAI3G,IAAI,SACfnD,KAAM8J,EAAI3G,IAAI,QACd0K,YAAa/D,EAAI3G,IAAI,eACrB2K,WAAYhE,EAAI3G,IAAI,cACpB4K,oBAAqBjE,EAAI3G,IAAI,uBAC7B6K,oBAAqBlE,EAAI3G,IAAI,4BAG9BuK,KCrJnB5P,IAAIC,UAAU,eAyBdC,OAAOC,KAAKgQ,sBAAwB,SAAS9P,EAAMC,GAC/CD,EAAOA,MACHA,EAAKE,SACLF,EAAKE,OAAS,GAAIC,YAAWC,OAAO2P,iBAEf,kBAAf9P,KACNA,EAAaJ,OAAOC,KAAKoK,YAAY1E,OACjCvF,GAAcD,EAAKU,UACdmB,KAAM,OAAQ+B,KAAM,WACpB/B,KAAM,QAAS+B,KAAM,WACrB/B,KAAM,WAAY+B,KAAM,WACxB/B,KAAM,YAAa+B,KAAM,YACzB/B,KAAM,SAAU+B,KAAM,YACtB/B,KAAM,YAAa+B,KAAM,YACzB/B,KAAM,WAAY+B,KAAM,QACxB/B,KAAM,aAAc+B,KAAM,QAC1B/B,KAAM,cAAe+B,KAAM,QAC3B/B,KAAM,WAAY+B,KAAM,UACxB/B,KAAM,WAAY+B,KAAM,UACxB/B,KAAM,SAAU+B,KAAM,WACtB/B,KAAM,YACNA,KAAM,WACNA,KAAM,QACNA,KAAM,eACNA,KAAM,SACNA,KAAM,WACNA,KAAM,gBACNA,KAAM,aACNA,KAAM,gBACNA,KAAM,kBACNA,KAAM,iBACNA,KAAM,kBAInBhC,OAAOC,KAAKgQ,sBAAsBxP,WAAWC,YAAYC,KACrDC,KAAMT,EAAMC,IAIpBN,IAAIoB,OAAOlB,OAAOC,KAAKgQ,sBAAuBnQ,IAAIG,KAAKkB,YAQnDgP,eAAgB,iBAQhB/O,KAAM,SAASC,GACX,GAAIpB,GAAOoB,EAAQC,WAInB,OAHIrB,IAASA,EAAKsB,kBACdtB,EAAOoB,EAAQG,cAEZZ,KAAKa,YAAYxB,IAO5BmQ,uBAAwB,SAASC,GAC7B,MAAI/P,YAAWwN,KAAK7K,QAAQoN,EACxB,kCAAkC,GAC3B,iCAEP/P,WAAWwN,KAAK7K,QAAQoN,EACxB,8BAA8B,GACvB,6BAEJA,EAAQ,IAQnBC,YAAa,SAASpL,GAClB,GAAImL,GAAUnL,EAAMmL,OACpB,OAAInL,GAAMqL,QACNjQ,WAAWwN,KAAK7K,QAAQoN,EAAS,cAAc,GACxC,aAEP/P,WAAWwN,KAAK7K,QAAQoN,EAAS,aAAa,GACvC,YAEP/P,WAAWwN,KAAK7K,QAAQoN,EAAS,yBAAyB,GACnD,wBAEP/P,WAAWwN,KAAK7K,QAAQoN,EAAS,aAAa,GACvC,YAEJA,EAAQ,IAOnBG,iBAAkB,SAAStL,GACvB,MAAuBrC,SAAhBqC,EAAMqL,SAAwBrL,EAAMqL,QAc/C9O,YAAa,SAASxB,GAIlB,IAHmB,gBAATA,IAAqBA,EAAKwQ,YAChCxQ,EAAOW,KAAKT,KAAKE,OAAOe,KAAKnB,IAE3BA,EAAKyQ,MACP,KAAM,IAAI5Q,KAAIG,KAAKkB,WAAWwP,MAAM,mBAAoB1Q,EAAKyQ,MAEjE,IAAIE,GAAU3Q,EAAK2Q,QACfC,EAAa5Q,EAAK4Q,eAClBlN,EAAMkN,EAAWxP,SAAWwP,EAAWxP,QAAQyP,QAC/CD,EAAWxP,QAAQyP,OAAOC,KAC1BpG,EAASkG,EAAWlG,OACpB0F,EAAUQ,EAAWG,UAAYH,EAAWG,UAAUX,WACtDY,EAAarQ,KAAKwP,uBAAuBC,GACzC/N,IAEJ,IAAGqB,GAAOgH,EAIN,IAAI,GAFAzF,GAAOnD,EAAQ+C,EAASoM,EAAQ/O,EAAO0E,EADvChG,EAASD,KAAKR,WAAWW,UAAUF,OAG/B0B,EAAE,EAAGoE,EAAKgE,EAAOtI,OAAUsE,EAAFpE,EAAQA,IAErC,GADA2C,EAAQyF,EAAOpI,GACZ2C,EAAMlD,KAAM,CACXD,IACA,KAAI,GAAIU,GAAE,EAAGmE,EAAK/F,EAAOwB,OAAUuE,EAAFnE,EAAQA,IACrCN,EAAQtB,EAAO6B,MAAMD,GACrBoE,EAAI3B,EAAM/C,EAAM2E,SAAW3E,EAAMH,OACjCG,EAAM6E,aACNH,EAAI1E,EAAMQ,QAAQkE,GAClB9E,EAAOI,EAAMH,MAAQ6E,CAEzB/B,IACIqM,YAAajM,EAAMiM,YACfvQ,KAAKwQ,kBAAkBlM,EAAMiM,aAC7BtO,OACJwO,SAAUnM,EAAMmM,SAChBC,SAAUpM,EAAMoM,UAEjB1Q,KAAKT,KAAKoR,cACTzR,IAAI0D,MAAMsB,EAASlE,KAAKT,KAAKoR,cAEjCL,GACQvG,OAAQzF,EAAMlD,KACdiP,WAAYA,EACZ5Q,OAAQO,KAAK0P,YAAYpL,GACzBsM,YAAa5Q,KAAK4P,iBAAiBtL,GACnC0L,QAASA,GAEbhQ,KAAKT,KAAKsR,aACV3R,IAAI0D,MAAM0N,EAAQtQ,KAAKT,KAAKsR,aAEhC1P,EAAOmD,MAAQ,GAAI5E,YAAWoR,MAAMC,IAChCzM,EAAMwH,OAASxH,EAAMlD,KAAM2B,EAAKuN,EAAQpM,GAE5CxC,EAAQoC,KAAK,GAAI9D,MAAKR,WAAW2B,EAAQA,EAAOmD,MAAMiC,KAKlE,OACIpE,aAAcT,EAAQD,OACtBS,SAAS,EACTR,QAASA,IAcjB8O,kBAAoB,SAASD,GACzB,GAAIS,KAaJ,IAXIT,EAAYU,MACZD,EAAOlN,KAAK,eAAe9D,KAAKuP,eAAe,gBACvBgB,EAAYU,KAAKd,KAAO,QAGhDI,EAAYzE,OACZkF,EAAOlN,KAAK,gBAAiB9D,KAAKuP,eAAiB,WACrCgB,EAAYzE,MACZ,WAGfyE,EAAYJ,KACX,IAAI,GAAIxO,GAAI,EAAGA,EAAIqP,EAAOvP,OAAQE,IAC9BqP,EAAOrP,GAAK,aACZ3B,KAAKuP,eAAiB,eAEhBgB,EAAYJ,KACZ,IACAa,EAAOrP,GACP,MAId,OAAOqP,GAAOE,KAAK,QC7P3BhS,IAAIC,UAAU,eA4BdC,OAAOC,KAAK8R,qBAAuB,SAAS1O,GACxCA,EAAIA,MACJrD,OAAOC,KAAK8R,qBAAqBtR,WAAWC,YAAYC,KACpDC,KACAd,IAAI0D,MAAMH,GACNI,MAAOJ,EAAEI,QAAWJ,EAAEpD,KAElB4C,OADA,GAAI/C,KAAIG,KAAKyD,WAAWC,IAAKN,EAAEM,IAAKC,gBAAgB,EAAOC,OAAQ,SAGvEC,OAAQ,GAAI9D,QAAOC,KAAKgQ,sBACpB5M,EAAGA,EAAExC,YAKrBf,IAAIoB,OAAOlB,OAAOC,KAAK8R,qBAAsBjS,IAAIG,KAAKuF,OCrCtD1F,IAAIC,UAAU,eAmBdC,OAAOC,KAAK+R,sBAAwB,SAAS7R,EAAMC,GAC/CD,EAAOA,MACHA,EAAKE,SACLF,EAAKE,OAAS,GAAIC,YAAWC,OAAO0R,iBAEb,kBAAf7R,KACRA,EAAaJ,OAAOC,KAAKoK,YAAY1E,OACjCvF,GAAcD,EAAKU,UACdmB,KAAM,OAAQ+B,KAAM,WACpB/B,KAAM,QAAS+B,KAAM,WACrB/B,KAAM,YAAa+B,KAAM,SAAU+C,QAAS,cAC5C9E,KAAM,WAAY+B,KAAM,aAIrC/D,OAAOC,KAAK+R,sBAAsBvR,WAAWC,YAAYC,KACrDC,KAAMT,EAAMC,IAIpBN,IAAIoB,OAAOlB,OAAOC,KAAK+R,sBAAuBlS,IAAIG,KAAKkB,YAQnDC,KAAM,SAASC,GACX,GAAIpB,GAAOoB,EAAQC,WAInB,OAHIrB,IAASA,EAAKsB,kBACdtB,EAAOoB,EAAQG,cAEZZ,KAAKa,YAAYxB,IAc5BwB,YAAa,SAASxB,IACC,gBAATA,IAAqBA,EAAKwQ,YAChCxQ,EAAOW,KAAKT,KAAKE,OAAOe,KAAKnB,GAejC,KAAI,GATAiS,GAAanQ,EAAQI,EAAO0E,EAC5B0K,EAAcY,EAJdvQ,EAAe3B,EAAKmS,gBAAgBxQ,aACpCf,EAASD,KAAKR,WAAWW,UAAUF,OAKnCwR,GACA1O,IAAK1D,EAAK4Q,WAAWxP,QAAQiR,WAAWvB,KAAKwB,MAG7CjQ,KAEIC,EAAE,EAAGoE,EAAK/E,EAAaS,OAAUsE,EAAFpE,EAAQA,IAE3C,GADA2P,EAActQ,EAAaW,GACxB2P,EAAYlQ,KAAM,CACjBD,IAEA,KAAI,GAAIU,GAAE,EAAGmE,EAAK/F,EAAOwB,OAAUuE,EAAFnE,EAAQA,IACrCN,EAAQtB,EAAO6B,MAAMD,GACrBoE,EAAIqL,EAAY/P,EAAM2E,SAAW3E,EAAMH,OACnCG,EAAM6E,aACVH,EAAI1E,EAAMQ,QAAQkE,GAClB9E,EAAOI,EAAMH,MAAQ6E,CAGzBsL,IACID,YAAaA,EAAYlQ,KACzBwQ,UAAWN,EAAYM,WAExB5R,KAAKT,KAAKgS,gBACTrS,IAAI0D,MAAM2O,EAAiBvR,KAAKT,KAAKgS,gBACjCE,GAEJvS,IAAI0D,MAAM2O,KAAqBE,GAGnCd,GACIkB,SAAU,GAAInS,YAAWoS,SAASC,IAAIR,GACtCS,YAAa,GAAItS,YAAWuS,SAASC,OAEzC,IAAIC,GAAmBnS,KAAKT,KAAKoR,YAC7BwB,IACAjT,IAAI0D,MAAM+N,EAAczR,IAAIkT,WAAWD,GACnCA,IAAqBA,GAG7BhR,EAAOmD,MAAQ,GAAI5E,YAAWoR,MAAMuB,OAChCf,EAAYxF,OAASwF,EAAYlQ,KACjCuP,GAGJjP,EAAQoC,KAAK,GAAI9D,MAAKR,WAAW2B,EAAQA,EAAOmD,MAAMiC,KAG9D,OACIpE,aAAcT,EAAQD,OACtBS,SAAS,EACTR,QAASA,MCtIrBxC,IAAIC,UAAU,eA4BdC,OAAOC,KAAKiT,qBAAuB,SAAS7P,GACxCA,EAAIA,MACJrD,OAAOC,KAAKiT,qBAAqBzS,WAAWC,YAAYC,KACpDC,KACAd,IAAI0D,MAAMH,GACNI,MAAOJ,EAAEI,QAAWJ,EAAEpD,KAElB4C,OADA,GAAI/C,KAAIG,KAAKyD,WAAWC,IAAKN,EAAEM,IAAKC,gBAAgB,EAAOC,OAAQ,SAGvEC,OAAQ,GAAI9D,QAAOC,KAAK+R,sBACpB3O,EAAGA,EAAExC,YAKrBf,IAAIoB,OAAOlB,OAAOC,KAAKiT,qBAAsBpT,IAAIG,KAAKuF,OC1CtD1F,IAAIC,UAAU,eAcdC,OAAOC,KAAKkT,uBAAyB,SAAShT,EAAMC,GAChDD,EAAOA,MACHA,EAAKE,SACLF,EAAKE,OAAS,GAAIC,YAAWC,OAAO6S,kBAEb,kBAAfhT,KACRA,EAAaN,IAAIG,KAAKyF,OAAOC,OACzBvF,GAAcD,EAAKU,UACdmB,KAAM,UAAW+B,KAAM,WACvB/B,KAAM,SAAU+B,KAAM,WACtB/B,KAAM,WAAY+B,KAAM,aAIrC/D,OAAOC,KAAKkT,uBAAuB1S,WAAWC,YAAYC,KACtDC,KAAMT,EAAMC,IAIpBN,IAAIoB,OAAOlB,OAAOC,KAAKkT,uBAAwBrT,IAAIG,KAAKkB,YAQpDC,KAAM,SAASC,GACX,GAAIpB,GAAOoB,EAAQC,WAInB,OAHIrB,IAASA,EAAKsB,kBACdtB,EAAOoB,EAAQG,cAEZZ,KAAKa,YAAYxB,IAc5BwB,YAAa,SAASxB,IAEC,gBAATA,IAAqBA,EAAKwQ,YAChCxQ,EAAOW,KAAKT,KAAKE,OAAOe,KAAKnB,GAGjC,KAAI,GADc4P,GAAdvN,KACIC,EAAE,EAAGC,EAAIvC,EAAKoC,OAAUG,EAAFD,EAAOA,IACjCsN,EAAc5P,EAAKsC,GAChBsN,GACCvN,EAAQoC,KAAK,GAAI9D,MAAKR,WAAWyP,GAIzC,QACI9M,aAAcT,EAAQD,OACtBS,SAAS,EACTR,QAASA,MC7ErBxC,IAAIC,UAAU,eA4BdC,OAAOC,KAAKoT,sBAAwB,SAAShQ,GACzCA,EAAIA,MACJrD,OAAOC,KAAKoT,sBAAsB5S,WAAWC,YAAYC,KACrDC,KACAd,IAAI0D,MAAMH,GACNI,MAAOJ,EAAEI,QAAWJ,EAAEpD,KAElB4C,OADA,GAAI/C,KAAIG,KAAKyD,WAAWC,IAAKN,EAAEM,IAAKC,gBAAgB,EAAOC,OAAQ,SAGvEC,OAAQ,GAAI9D,QAAOC,KAAKkT,uBACpB9P,EAAGA,EAAExC,YAKrBf,IAAIoB,OAAOlB,OAAOC,KAAKoT,sBAAuBvT,IAAIG,KAAKuF,OCzCvD1F,IAAIC,UAAU,eAcdC,OAAOC,KAAKqT,UAAY,SAASnT,EAAMC,GACnCD,EAAOA,MACHA,EAAKE,SACLF,EAAKE,OAAS,GAAIC,YAAWC,OAAOgT,KAEb,kBAAfnT,KACRA,EAAaJ,OAAOC,KAAKoK,YAAY1E,OACjCvF,GAAcD,EAAKU,UAEdmB,KAAM,WAAY+B,KAAM,WACxB/B,KAAM,cAAe+B,KAAM,WAC3B/B,KAAM,YAAa+B,KAAM,YACzB/B,KAAM,YACNA,KAAM,aAInBhC,OAAOC,KAAKqT,UAAU7S,WAAWC,YAAYC,KACzCC,KAAMT,EAAMC,IAIpBN,IAAIoB,OAAOlB,OAAOC,KAAKqT,UAAWxT,IAAIG,KAAKkB,YAQvCC,KAAM,SAASC,GACX,GAAIpB,GAAOoB,EAAQC,WAInB,OAHIrB,IAASA,EAAKsB,kBACdtB,EAAOoB,EAAQG,cAEZZ,KAAKa,YAAYxB,IAc5BwB,YAAa,SAASxB,GAClB,GAAII,GAASO,KAAKT,KAAKE,QACJ,gBAATJ,IAAqBA,EAAKwQ,YAChCxQ,EAAOI,EAAOe,KAAKnB,GAEvB,IAAIuT,GAAgBvT,EAAOA,EAAKuT,cAAgB3Q,OAC5CP,IAEJ,IAAGkR,EAAe,CACd,GACIjR,GAAGoE,EAAMlE,EAAGmE,EAAM6M,EAAc1R,EAAQI,EAAO0E,EAD/CzG,EAAaQ,KAAKR,WAAYS,EAAST,EAAWW,UAAUF,MAEhE,KAAK0B,EAAI,EAAGoE,EAAO6M,EAAcnR,OAAYsE,EAAJpE,EAAUA,IAAK,CAGpD,IAFAkR,EAAeD,EAAcjR,GAC7BR,KACIU,EAAI,EAAGmE,EAAO/F,EAAOwB,OAAYuE,EAAJnE,EAAUA,IACvCN,EAAQtB,EAAO6B,MAAMD,GACrBoE,EAAI4M,EAAatR,EAAM2E,SAAW3E,EAAMH,OACpCG,EAAM6E,aACVH,EAAI1E,EAAMQ,QAAQkE,GAClB9E,EAAOI,EAAMH,MAAQ6E,CAEzB9E,GAAOmD,MAAQ7E,EAAOqT,oBAAoBD,GAC1CnR,EAAQoC,KAAK,GAAI9D,MAAKR,WAAW2B,EAAQA,EAAOmD,MAAMiC,MAI9D,OACIpE,aAAcT,EAAQD,OACtBS,SAAS,EACTR,QAASA,MC9FrBxC,IAAIC,UAAU,UAwBdC,OAAO2T,OAAS7T,IAAIoB,OAAOpB,IAAI6T,QAK3BC,QAAS,KAUTC,kBAAkB,EAUlBC,qBAAqB,EAOrBjJ,IAAK,KAMLkJ,OAAQ,KAMRC,SAAU,KAMVC,eAAgB,KAMhBC,cAAe,KAGfxT,YAAa,SAAS8G,GAGlB5G,KAAKmT,OAASvM,EAAOjD,MACrB3D,KAAKoT,SAAWxM,EAAO2M,QACvBvT,KAAKqT,eAAiBzM,EAAO4M,cAC7BxT,KAAKsT,cAAgB1M,EAAO6M,aAE5B7M,EAAOjD,MAAQ3D,KACf4G,EAAO2M,QAAUvT,KAAK0T,SACtB9M,EAAO4M,cAAgBxT,KAAK2T,eAC5B/M,EAAO6M,aAAezT,KAAK4T,aAI3B,IAAIC,GAAO7T,KAAKgT,QAAUpM,EAAOoM,cAC1BpM,GAAOoM,QAEdhT,KAAKiT,mBAAqBrM,EAAOqM,uBAC1BrM,GAAOqM,iBACdjT,KAAKkT,sBAAwBtM,EAAOsM,0BAC7BtM,GAAOsM,oBAIXW,IAEIjN,EAAOqD,MACNrD,EAAOqD,IAAI6J,WAAWD,SACfjN,GAAOqD,MAEdrD,EAAOmN,SAAWnN,EAAOoN,UAAYH,EAAK5J,KAC1C4J,EAAKI,WAELJ,EAAKK,SACLtN,EAAOmN,SAAU,EACjBnN,EAAOoN,SAAU,GAErBH,EAAKrP,OAAOnB,IACR4Q,SAAUjU,KAAKmU,eACfC,WAAYpU,KAAKqU,iBACjB1Q,MAAO3D,QAIf0C,UAAUC,OAAO9C,WAAWC,YAAYC,KAAKC,KAAM4G,IAQvD8M,SAAU,SAASY,GACf,GAAIT,GAAO7T,KAAKgT,OACba,IACAA,EAAK1Q,MAAQzD,WAAW6U,QAAQC,aAC/BX,EAAKY,UAENzU,KAAKoT,UACJpT,KAAKoT,SAASxQ,MAAM5C,KAAKmT,OAAQzQ,YAUzCiR,eAAgB,SAASW,EAAKjO,GAC1BrG,KAAK0U,mBAAmBrO,GACrBrG,KAAKqT,gBACJrT,KAAKqT,eAAezQ,MAAM5C,KAAKmT,OAAQzQ,YAU/CkR,cAAe,SAASU,EAAKjO,GACzBrG,KAAK0U,mBAAmBrO,GACrBrG,KAAKsT,eACJtT,KAAKsT,cAAc1Q,MAAM5C,KAAKmT,OAAQzQ,YAS9CgS,mBAAoB,SAASrO,GACtBA,EACKrG,KAAK2U,cACL3U,KAAK2U,aAAc,EACnB3U,KAAKgT,QAAQiB,WAEbjU,KAAK4U,cAAcb,SAAU,EAC7B/T,KAAK4U,cAAcZ,SAAU,EAC7BhU,KAAK2U,aAAc,GAGnB3U,KAAK6U,gBACL7U,KAAK6U,eAAgB,EACrB7U,KAAKgT,QAAQoB,aAEbpU,KAAK4U,cAAcb,SAAU,EAC7B/T,KAAK4U,cAAcZ,SAAU,EAC7BhU,KAAK6U,eAAgB,IASjCV,eAAgB,WACZ,GAAIN,GAAO7T,KAAKgT,OACba,GAAK1Q,MAAQzD,WAAW6U,QAAQC,YAC/BxU,KAAK8U,UAGL9U,KAAK+U,aAAa,WAAW,IAE7B/U,KAAK+U,aAAa,eAAe,MAQzCV,iBAAkB,WACd,GAAIR,GAAO7T,KAAKgT,OACba,GAAK1Q,MAAQzD,WAAW6U,QAAQC,YAC/BxU,KAAKgV,WAGLhV,KAAK+U,aAAa,WAAW,IAE7B/U,KAAK+U,aAAa,eAAe,MAOzCA,aAAc,SAASE,EAAQC,GAE3B,IAAI,GADAC,GAAKnV,KAAK8B,MACNH,EAAI,EAAGC,EAAMuT,EAAG1T,OAAYG,EAAJD,EAASA,IAClCwT,EAAGxT,GAAGsT,KACLE,EAAGxT,GAAGyT,SACFD,EAAGxT,GAAGsT,GAAQrS,MAAMuS,EAAGxT,GAAIuT,GAC3BC,EAAGxT,GAAG0B,IACFgS,OAAUF,EAAGxT,GAAGsT,GAAQK,eAAeH,EAAGxT,GAAIuT,GAC9CK,QAAQ,MAW5BC,YAAc,SAASvP,GAOnB,OANKA,GAAKjG,KAAKiT,kBAAoBjT,KAAKgT,UAAYhT,KAAKgT,QAAQkB,QAC7DlU,KAAKgT,QAAQiB,WAEbhO,GAAKjG,KAAKkT,qBAAuBlT,KAAKgT,SAAWhT,KAAKgT,QAAQkB,QAC9DlU,KAAKgT,QAAQoB,aAEVhV,OAAO2T,OAAOlT,WAAW2V,YAAY5S,MAAM5C,KAAM0C,cCrQhExD,IAAIC,UAAU,SAAU,eAExBC,OAAOC,KAAKoW,cAAgB,SAAS7O,GACjC1H,IAAI0D,MAAM5C,KAAM4G,GAChBxH,OAAOC,KAAKoW,cAAc5V,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAQjExD,IAAIoB,OAAOlB,OAAOC,KAAKoW,cAAevW,IAAIG,KAAKqW,WAM3C7D,SAAU,KAMV8D,eAAe,EAOfC,oBAAoB,EAMpB/P,SAAU,KAiBVrC,KAAM,SAAS8M,EAAQpN,EAAQ2S,EAAUlS,EAAOmS,GAC5C,GAAI9V,KAAKgL,UAAU,aAAchL,KAAMsQ,MAAY,EAAO,CACtD,GAAIjL,IACAiL,OAAQA,MACR7P,SACIoV,SAAUA,EACVlS,MAAOA,EACPmS,IAAKA,GAET5S,OAAQA,GAER6S,EAAKrW,WAAWkG,SAASxC,KAAKpD,KAAKgW,aAAchW,KAAMqF,EACvDrF,MAAK2V,eACL3V,KAAKiW,cAET,IAAI/R,IACAoM,OAAQA,EACRuF,SAAUE,EACVpS,MAAO3D,KAEXd,KAAI2K,QAAQ3F,EAAS4R,GACjB9V,KAAK4V,sBAAuB,IAC5B1W,IAAI2K,QAAQ3F,EAASA,EAAQoM,cACtBpM,GAAQoM,QAEnBtQ,KAAK6F,SAAW7F,KAAK6R,SAASrR,KAAK0D,OAEpC2R,GAAS9V,KAAK4D,GAAS3D,KAAM,KAAM8V,GAAK,IAO/CG,aAAc,WACNjW,KAAK6F,WACL7F,KAAK6R,SAASqE,MAAMlW,KAAK6F,UACzB7F,KAAK6F,SAAW,OAUxBmQ,aAAc,SAAS3Q,EAAGQ,GACtB,GAAIA,EAAS3D,UAAW,CACpB,GAAIiU,GAAS9Q,EAAEnC,OAAO1C,KAAKqF,EAC3B7F,MAAKgL,UAAU,OAAQhL,KAAMqF,EAAGA,EAAE5E,QAAQqV,KAC1CzQ,EAAE5E,QAAQoV,SAAS9V,KAChBsF,EAAE5E,QAAQkD,MAAOwS,EAAQ9Q,EAAE5E,QAAQqV,KAAK,OAE3C9V,MAAKgL,UAAU,gBAAiBhL,KAAMqF,EAAGQ,GACzCR,EAAE5E,QAAQoV,SAAS9V,KACfsF,EAAE5E,QAAQkD,MAAO,KAAM0B,EAAE5E,QAAQqV,KAAK,MCtGtD5W,IAAIC,UAAU,UAOdC,OAAOgX,gBAAkBlX,IAAIoB,OAAOpB,IAAImX,cAQpCnW,QAAS+B,OAUT+M,aAActP,WAAW4W,QAAQjE,OAAOkE,MAAM,YAQ9CC,WAAY,UAMZxJ,WAAY,EAKZyJ,SAAU,GAKVC,UAAW,GASXC,WAAY,MAAO,MAAO,UAO1BC,gBAAiB,KAMjBC,aAAc5U,OAMd6U,YAAa7U,OAMb8U,eAAgB9U,OAKhB+U,SAAU,KAIVC,cAAe,WACX7X,OAAOgX,gBAAgBvW,WAAWoX,cAAcrU,MAAM5C,KAAM0C,WAC5DxD,IAAI2K,QAAQ7J,MACR6W,aAAc,GAAInX,YAAW4W,QAAQjE,OACjC,GAAI3S,YAAWwX,SAASC,MAAM,EAAG,IAErCL,YAAa,GAAIpX,YAAW4W,QAAQjE,OAChC,GAAI3S,YAAWwX,SAASE,YACpB,GAAI1X,YAAWwX,SAASC,MAAM,GAAI,IAClC,GAAIzX,YAAWwX,SAASC,MAAM,GAAI,GAClC,GAAIzX,YAAWwX,SAASC,MAAM,EAAG,IACjC,GAAIzX,YAAWwX,SAASC,MAAM,EAAG,MAGzCJ,eAAgB,GAAIrX,YAAW4W,QAAQjE,OACnC,GAAI3S,YAAWwX,SAASG,SACpB,GAAI3X,YAAWwX,SAASI,YACpB,GAAI5X,YAAWwX,SAASC,MAAM,GAAI,IAClC,GAAIzX,YAAWwX,SAASC,MAAM,GAAI,IAClC,GAAIzX,YAAWwX,SAASC,MAAM,EAAG,IACjC,GAAIzX,YAAWwX,SAASC,MAAM,EAAG,IACjC,GAAIzX,YAAWwX,SAASC,MAAM,EAAG,GACjC,GAAIzX,YAAWwX,SAASC,MAAM,EAAG,GACjC,GAAIzX,YAAWwX,SAASC,MAAM,GAAI,GAClC,GAAIzX,YAAWwX,SAASC,MAAM,GAAI,UAK9CnX,KAAKE,SACLF,KAAKiF,WAAW,MAAOsS,MAAM,IAEjCvX,KAAKmK,UAQD,UAMRqN,iBAAkB,WACdxX,KAAKyX,oBACLzX,KAAK0X,GAAGrU,GAAG,QAASrD,KAAK2X,QAAS3X,OAKtCyX,kBAAmB,WACXzX,KAAK0X,IAAM1X,KAAK0X,GAAGE,oBACnB5X,KAAK0X,GAAGE,sBAMhBD,QAAS,WACL3X,KAAKgL,UAAU,QAAShL,OAK5B6X,SAAU,SAASC,EAAIC,GACf/X,KAAK0X,KACL1X,KAAK0X,GAAKM,SAASC,cAAc,OACjCjY,KAAK0X,GAAGnR,GAAKvG,KAAKkY,SAElBlY,KAAKgX,UAAahX,KAAKgX,SAASmB,aAChCnY,KAAKoY,iBAGTpY,KAAKgX,SAAS/M,KACVoO,cAAe,WACX,MAAOrY,MAAKgN,YACbsI,eAAetV,OAGtBZ,OAAOgX,gBAAgBvW,WAAWgY,SAASjV,MAAM5C,KAAM0C,WAEvD1C,KAAK0E,eAKT4T,YAAa,WACTlZ,OAAOgX,gBAAgBvW,WAAWyY,YAAY1V,MAAM5C,KAAM0C,WAC1D1C,KAAKwX,oBAKTe,SAAU,SAASC,EAAGC,GAClBzY,KAAK0Y,wBACLtZ,OAAOgX,gBAAgBvW,WAAW0Y,SAAS3V,MAAM5C,KAAM0C,YAK3DgW,sBAAuB,WACnB,GAAIC,GAAK3Y,KAAKE,QAAQ0Y,SAASC,YAC3BC,EAAKH,EAAGI,WACRC,EAAKL,EAAGM,YAORjM,EAAahN,KAAK4U,cAAc5H,UAChCA,KACAA,EAAakM,KAAKC,IAAIL,EAAK9Y,KAAKoZ,OAAS,EAAGJ,EAAKhZ,KAAKqZ,QAAU,IAAM,GAE1ErZ,KAAKgN,WAAaA,CAElB,IAAIoM,GAAQF,KAAKC,IAAInZ,KAAKoZ,OAASpZ,KAAKyW,SAAUqC,EAAK9L,GACnDqM,EAASH,KAAKC,IAAInZ,KAAKqZ,QAAUrZ,KAAK0W,UAAWsC,EAAKhM,GAEtDsM,EAASX,EAAGY,iBACZC,EAASJ,EAAQpM,EAAa,EAC9ByM,EAASJ,EAASrM,EAAa,EAC/B0M,EAAS,GAAIha,YAAWia,OACxBL,EAAOM,EAAIJ,EAAQF,EAAOO,EAAIJ,EAC9BH,EAAOM,EAAIJ,EAAQF,EAAOO,EAAIJ,EAElCzZ,MAAKgX,SAAS8C,QAAQ,GAAIpa,YAAWqa,KAAKb,KAAKc,MAAMZ,GAAQF,KAAKc,MAAMX,KACxErZ,KAAKgX,SAASiD,UAAUP,GAAQ,IAOpCtB,eAAgB,WACZ,IAAI,GAAIzW,GAAE,EAAGC,EAAI5B,KAAK2W,UAAUlV,OAAUG,EAAFD,IAASA,EAAG,CAChD,GAAIuY,GAAWxa,WAAWwa,SAASla,KAAK2W,UAAUhV,GAClD,IAAGuY,GAAYA,EAAS/Z,UAAUgY,YAAa,CAC3CnY,KAAKgX,SAAW,GAAIkD,GAChBla,KAAK0X,GAAI1X,KAAK4W,gBAElB,UAeZuD,eAAgB,SAASnL,EAAa9K,GAClClE,KAAKgP,YAAcA,IACf9K,GAAWA,EAAQqT,OACnBvX,KAAK0E,eAcb0V,cAAe,SAASjX,EAAMe,GAC1BlE,KAAKwW,WAAarT,EAClBnD,KAAKiF,WAAW,KAAMf,IAc1Be,WAAY,SAAS/E,EAASgE,GAC1BlE,KAAKE,QAAUA,GAAWF,KAAKA,KAAKwW,WAAW6D,cAAgB,aAC3DnW,GAAWA,EAAQqT,OACnBvX,KAAK0E,eAObA,YAAa,WACT1E,KAAKgX,SAASrP,QACd3H,KAAK0Y,uBAKL,KAAK,GADDlK,GAAYtO,EAASoa,EAFrB3M,EAAajO,WAAWiO,WACxB4M,EAAO5M,GAAcA,EAAW4M,KAE3B5Y,EAAE,EAAGC,EAAI5B,KAAKgP,YAAYvN,OAAUG,EAAFD,IAASA,EAChD6M,EAAaxO,KAAKgP,YAAYrN,GAC9BzB,EAAUF,KAAKE,QAEVqa,GAAU/L,YAAsB+L,KAC7B5M,GAAea,YAAsBb,IACrCa,EAAaA,EAAW5E,QACnB5J,KAAK4U,cAAc1U,UACpBoa,EAAW9L,EAAWgM,WAAWC,MAAM,KAAKC,MAAML,cAClDna,EAAUF,KAAKsa,EAAW,aAI9B9L,EAAatP,IAAI0D,SAAU4L,GAE/BxO,KAAKgX,SAAStS,YACVxE,EAAQ0J,QACR4E,KAmBhBlL,OAAQ,SAASY,GACbA,EAAUA,MACPA,EAAQhE,QACPF,KAAKiF,WAAWf,EAAQhE,SAAUqX,MAAM,IAClCrT,EAAQsS,YACdxW,KAAKoa,cAAclW,EAAQsS,YAAae,MAAM,IAE/CrT,EAAQ8K,aACPhP,KAAKma,eAAejW,EAAQ8K,aAAcuI,MAAM,IAEpDvX,KAAK0E,eAMTiW,cAAe,WACX3a,KAAKyX,oBACDzX,KAAKgX,UACLhX,KAAKgX,SAASxN,aAO1BtK,IAAI0b,IAAI,cAAexb,OAAOgX,iBChX9BlX,IAAIC,UAAU,UAqCdC,OAAO8K,SAAWhL,IAAIoB,OAAOpB,IAAI2b,OAW7B5Q,IAAK,KAYLF,OAAQ,KAORuP,OAAQ,KAKRwB,KAAM,KAONC,OAAQ,KASRC,iBAAiB,EAKjBC,aAAc,eACA,6BACA,0BACA,wBACA,uBACA,gBACA,oBAOdhE,cAAe,WACNjX,KAAKiK,cAAevK,YAAWwb,MAChClb,KAAKiK,IAAM,GAAIvK,YAAWwb,IACtBhc,IAAI2K,QAAQ7J,KAAKiK,SAAYkR,aAAa,KAGlD,IAAIpR,GAAS/J,KAAK+J,SACdA,GAAUA,YAAkBhJ,UAC5Bf,KAAK+J,OAAS,GAAI3K,QAAOC,KAAK+K,YAC1BL,OAAQA,EACRE,IAAKjK,KAAKiK,IAAIF,OAAOtI,OAAS,EAAIzB,KAAKiK,IAAM;IAI5B,gBAAfjK,MAAKsZ,OACXtZ,KAAKsZ,OAAS5Z,WAAW0b,OAAOC,WAAWrb,KAAKsZ,QAC1CtZ,KAAKsZ,iBAAkBvY,SAC7Bf,KAAKsZ,OAAS,GAAI5Z,YAAW0b,OAAOpb,KAAKsZ,OAAO,GAAItZ,KAAKsZ,OAAO,KAE3C,gBAAftZ,MAAK+a,OACX/a,KAAK+a,OAASrb,WAAWia,OAAO0B,WAAWrb,KAAK+a,QAC1C/a,KAAK+a,iBAAkBha,SAC7Bf,KAAK+a,OAASrb,WAAWia,OAAO2B,UAAUtb,KAAK+a,SAGnD3b,OAAO8K,SAASrK,WAAWoX,cAAclX,KAAKC,MAE9CA,KAAKmK,UAID,eAKA,6BAKA,0BAKA,wBAKA,uBAKA,gBAKA,oBAEJnK,KAAKiK,IAAIzF,OAAOnB,IACZkY,QAAWvb,KAAKwb,UAChBhR,YAAexK,KAAKyb,cACpB/Q,SAAY1K,KAAK0b,WACjB9Q,YAAe5K,KAAK2b,cACpBhY,MAAO3D,QAQfwb,UAAW,WACPxb,KAAKgL,UAAU,iBAQnByQ,cAAe,SAAStV,GACjBA,EAAEgF,WACiB,eAAfhF,EAAEgF,SACDnL,KAAKgL,UAAU,8BACM,UAAf7E,EAAEgF,SACRnL,KAAKgL,UAAU,yBACM,SAAf7E,EAAEgF,SACRnL,KAAKgL,UAAU,wBACM,YAAf7E,EAAEgF,UACRnL,KAAKgL,UAAU,6BAO3B0Q,WAAY,WACR1b,KAAKgL,UAAU,kBAKnB2Q,cAAe,WACX3b,KAAKgL,UAAU,qBAQnB4Q,WAAY,SAASvV,GAKjBrG,KAAKsZ,OAAS,GAAI5Z,YAAW0b,OAAO/U,EAAMuT,EAAGvT,EAAMwT,GACnD7Z,KAAK8a,KAAOzU,EAAMyU,IAGlB,IAAInZ,GAAGka,EAAGvX,EAAOwX,EAASC,EAAY5N,EAClCpE,EAAS/J,KAAKiK,IAAIF,MACtB,KAAIpI,EAAE,EAAGka,EAAE9R,EAAOtI,OAAUoa,EAAFla,EAAKA,IAC3B2C,EAAQyF,EAAOpI,GACfma,EAAU9b,KAAKgb,gBAAkB1W,EAAMlD,KAAOkD,EAAMiC,GACpDwV,EAAa1V,EAAM,cAAgByV,GACjB7Z,SAAf8Z,IAECA,EAAa,UAAYxZ,KAAKwZ,GAC3BzX,EAAMoI,YACFqP,GACC/b,KAAKiK,IAAI+R,aAAa1X,GAG1BA,EAAM2X,cAAcF,IAG5B5N,EAAU9H,EAAM,WAAayV,GACd7Z,SAAZkM,GACC7J,EAAM4X,WAAW/N,IAU7BgO,SAAU,WACN,GAAI9V,EAMJ,IAAIrG,KAAKiK,IAAT,CAKA,GAAIqP,GAAStZ,KAAKiK,IAAImS,WAGtB/V,GAAQiT,GACJM,EAAGN,EAAO+C,IACVxC,EAAGP,EAAOgD,IACVxB,KAAM9a,KAAKiK,IAAIsS,aAInB,IAAI5a,GAAGka,EAAGvX,EAAOwX,EAAS/R,EAAS/J,KAAKiK,IAAIF,MAC5C,KAAIpI,EAAE,EAAGka,EAAE9R,EAAOtI,OAAUoa,EAAFla,EAAKA,IAC3B2C,EAAQyF,EAAOpI,GACfma,EAAU9b,KAAKgb,gBAAkB1W,EAAMlD,KAAOkD,EAAMiC,GACpDF,EAAM,cAAgByV,GAAWxX,EAAMkY,gBACvCnW,EAAM,WAAayV,GAA4B,MAAjBxX,EAAM6J,QAChC,EAAI7J,EAAM6J,OAGlB,OAAO9H,KAMXoW,cAAe,WACRzc,KAAKiK,KACJjK,KAAKiK,IAAIyS,cAQjBC,UAAW,WACP,GAAI1S,GAAMjK,KAAKiK,GACfA,GAAIoL,OAAOrV,KAAK4c,KAAKC,KAErB7c,KAAK+J,OAAO3G,KAAK6G,GAEbA,EAAIF,OAAOtI,OAAS,EACpBzB,KAAK8c,mBAEL9c,KAAK+J,OAAO1G,GAAG,MAAOrD,KAAK8c,iBAAkB9c,MAAOuV,QAAQ,KAOpEuH,iBAAkB,WACd,GAAI7S,GAAMjK,KAAKiK,GACZjK,MAAKsZ,QAAuB,MAAbtZ,KAAK8a,KAEnB7Q,EAAI8S,UAAU/c,KAAKsZ,OAAQtZ,KAAK8a,MAC1B9a,KAAK+a,OACX9Q,EAAI+S,aAAahd,KAAK+a,QAEtB9Q,EAAIgT,mBAOZ3E,YAAa,WACTlZ,OAAO8K,SAASrK,WAAWyY,YAAY1V,MAAM5C,KAAM0C,WAC/C1C,KAAKkd,SAGLld,KAAKkd,QAAQ7Z,GAAG,OAAQrD,KAAKyc,cAAezc,MAC5CA,KAAKkd,QAAQ7Z,IACT8Z,YAAend,KAAKod,YACpBzZ,MAAO3D,QALXA,KAAK2c,aAcbS,YAAa,WACT,GAAIhE,GAAQpZ,KAAKqd,gBACOrd,KAAK4c,KAAKU,eAAe,MAC7CjE,EAASrZ,KAAKud,iBACMvd,KAAK4c,KAAKU,eAAe,KAC7ClE,GAAQ,GAAKC,EAAS,IACtBrZ,KAAKkd,QAAQlV,GAAG,cAAehI,KAAKod,YAAapd,MACjDA,KAAK2c,cAObpE,SAAU,WACNnZ,OAAO8K,SAASrK,WAAW0Y,SAAS3V,MAAM5C,KAAM0C,WAChD1C,KAAKyc,iBAMTe,YAAa,SAASC,GACe,kBAAvBA,GAAKC,eACXD,EAAKC,cAAc1d,MAEvBZ,OAAO8K,SAASrK,WAAW2d,YAAY5a,MAAM5C,KAAM0C,YAMvDmF,OAAQ,SAAS4V,EAAME,GACmB,kBAA5BF,GAAKG,oBACXH,EAAKG,mBAAmB5d,MAE5BZ,OAAO8K,SAASrK,WAAWgI,OAAOjF,MAAM5C,KAAM0C,YAMlDiY,cAAe,WACR3a,KAAKkd,SACJld,KAAKkd,QAAQlV,GAAG,OAAQhI,KAAKyc,cAAezc,MAE7CA,KAAKiK,KAAOjK,KAAKiK,IAAIzF,QACpBxE,KAAKiK,IAAIzF,OAAOwD,IACZuT,QAAWvb,KAAKwb,UAChBhR,YAAexK,KAAKyb,cACpB/Q,SAAY1K,KAAK0b,WACjB9Q,YAAe5K,KAAK2b,cACpBhY,MAAO3D,OAKXA,KAAK4U,cAAc3K,KAClBjK,KAAK4U,cAAc3K,cAAevK,YAAWwb,KAE3Clb,KAAKiK,KAAOjK,KAAKiK,IAAIT,SACpBxJ,KAAKiK,IAAIT,gBAGVxJ,MAAKiK,IACZ7K,OAAO8K,SAASrK,WAAW8a,cAAc/X,MAAM5C,KAAM0C,cAa7DtD,OAAO8K,SAAS2T,MAAQ,WACpB,MAAO3e,KAAI4e,aAAaC,IAAIC,KAAK,SAAS3Y,GACtC,MAAOA,aAAajG,QAAO8K,YAMnChL,IAAI0b,IAAI,cAAexb,OAAO8K,UCzb9BhL,IAAIC,UAAU,UAyBdC,OAAO6e,MAAQ/e,IAAIoB,OAAOpB,IAAIgf,QAM1BC,UAAU,EAQVlU,IAAK,KAMLmU,OAAO,EAMPC,YAAY,EAWZC,SAAU,KAKVC,eAAgB,KAYhBC,cAAc,EAOdC,WAAW,EAOXC,QAAQ,EAMRC,SAAU,WAKVC,OAAQ,KASRC,eAAgB,OAKhB5H,cAAe,WACRjX,KAAKiK,cAAe7K,QAAO8K,WAC1BlK,KAAKiK,IAAMjK,KAAKiK,IAAIA,MAEpBjK,KAAKiK,KAAOjK,KAAKse,mBAAoB5e,YAAW4W,QAAQjE,QACZrS,KAAKse,SAASha,QAC1DtE,KAAKiK,IAAMjK,KAAKse,SAASha,MAAM2F,KAE/BjK,KAAKse,mBAAoB5e,YAAW4W,QAAQjE,SAC5CrS,KAAKse,SAAWte,KAAKse,SAAS1F,UAE9B5Y,KAAKse,mBAAoB5e,YAAWwX,UACI,kBAA7BlX,MAAKse,SAASQ,cACrB9e,KAAKse,SAAWte,KAAKse,SAASQ,eAElC9e,KAAKse,SAAWte,KAAKse,SAASzF,YAAYkG,mBACnC/e,KAAKse,mBAAoB5e,YAAWsf,QAC3Chf,KAAKse,SAAWte,KAAKiK,IAAIgV,wBAAwBjf,KAAKse,UAG1D,IAAIY,GAAalf,KAAKiK,IAAIkV,WACtBD,IAAalf,KAAKse,WAClBte,KAAKue,eAAiBW,EAAUE,eAAepf,KAAKse,WAGrDte,KAAKme,UACJne,KAAKqf,kBAGTrf,KAAKsf,QAAUtf,KAAK2e,SAAW,IAAM3e,KAAKsf,QAE1Ctf,KAAKuf,UAAY,OAEjBngB,OAAO6e,MAAMpe,WAAWoX,cAAclX,KAAKC,OAM/C6X,SAAU,SAASC,EAAIC,GACnB3Y,OAAO6e,MAAMpe,WAAWgY,SAAS9X,KAAKC,KAAM8X,EAAIC,GAChD/X,KAAK4e,OAAS5e,KAAK2e,SAAW,OAE9B3e,KAAKiY,cAAc,MAAOjY,KAAK0X,GAAGmF,MAOtC2C,UAAY,WACLxf,KAAKqe,YACJre,KAAKyf,SACDlZ,GAAI,QACJgN,QAASvT,KAAK0f,cAAcpK,eAAetV,WAInDZ,OAAO6e,MAAMpe,WAAW2f,UAAUzf,KAAKC,OAM3C2f,KAAM,WACFvgB,OAAO6e,MAAMpe,WAAW8f,KAAK/c,MAAM5C,KAAM0C,WACtC1C,KAAKme,WACJne,KAAK+X,WACF/X,KAAKoe,QAAUpe,KAAK4f,UACnB5f,KAAK6f,gBAQjBC,SAAU,YACF9f,KAAK+f,WAAa/f,KAAKggB,KACvBhgB,KAAK0f,gBAETtgB,OAAO6e,MAAMpe,WAAWigB,SAASld,MAAM5C,KAAM0C,YASjDoX,QAAS,SAAStB,EAAGC,GACjB,GAAGzY,KAAKggB,IAAK,CACT,GAAIC,GAAUjgB,KAAKggB,IAAIE,SACR,iBAAL1H,IACNC,EAAID,EAAEa,OAAS4G,EAAQ5G,OACvBb,EAAIA,EAAEY,OACC+G,MAAM1H,KACbA,GAAQwH,EAAQ5G,QAGxBja,OAAO6e,MAAMpe,WAAWia,QAAQ/Z,KAAKC,KAAMwY,EAAGC,IAMlDV,SAAU,WAQN,GAPG/X,KAAK4f,YAAa,IACjB5f,KAAKue,eAAiBve,KAAKiK,IAAIkV,YAAYC,eAAepf,KAAKse,UAC5Dte,KAAKue,iBAAmBve,KAAKogB,aAC5BpgB,KAAKqgB,WAAWrgB,KAAKue,iBAI1Bve,KAAKogB,YAAa,CACjB,GAAIE,GAAatgB,KAAKiK,IAAIsW,mBAAmBvgB,KAAKse,UAC9CkC,EAASthB,IAAIuhB,IAAIzgB,KAAKiK,IAAIyW,KAAKC,QAAO,GACtCC,EAAMN,EAAWzG,EAAI2G,EAAO3G,EAC5BgH,EAAOP,EAAW1G,EAAI4G,EAAO5G,EAC7BkH,EAAS9gB,KAAK0X,GAAGwI,UACjBD,EAAUjgB,KAAKggB,IAAIE,UACnBa,EAAS/gB,KAAK6e,cAElB,IAAIkC,EAAO1e,QAAQ,SAAW,IAAMie,EAAW1G,EAAI4G,EAAOpH,MAAQ,EAAG,CAEjEpZ,KAAKggB,IAAIgB,SAAS,QAClB,IAAIC,GAAWjhB,KAAK0X,GAAGwJ,MAAK,GAAQJ,EAAO1H,MAC5BpZ,KAAKggB,IAAIkB,MAAK,GAAQjB,EAAQ7G,KAC7CyH,IAAQC,EAAO1H,MAAQ6H,EAAWhB,EAAQ7G,MAAQ,MAC/C,CAEHpZ,KAAKggB,IAAImB,YAAY,QACrB,IAAIC,GAAUphB,KAAKggB,IAAIqB,SAAQ,EAC/BR,IAAQO,EAAUnB,EAAQ7G,MAAQ,EAGlC2H,EAAO1e,QAAQ,UAAY,IAAMie,EAAWzG,EAAI2G,EAAOnH,OAAS,GAEhErZ,KAAKggB,IAAImB,YAAY,OACrBP,GAAOE,EAAOzH,OAAS4G,EAAQ5G,SAG/BrZ,KAAKggB,IAAIgB,SAAS,OAClBJ,GAAOX,EAAQ5G,QAGnBrZ,KAAKshB,YAAYT,EAAMD,KAQ/BlB,cAAe,WACX1f,KAAKuhB,qBAGLvhB,KAAKye,WAAY,EACjBze,KAAKwhB,OAAOR,SAAS,sBACrBhhB,KAAKyhB,GAAK,GAAIviB,KAAIgf,OAAOwD,GAAG1hB,MAG5BA,KAAKggB,IAAInY,SACT7H,KAAKggB,IAAM,KAGXhgB,KAAK2hB,MAAMC,MAAMC,QAQrBhC,YAAa,WACT,GAAIW,GAASthB,IAAIuhB,IAAIzgB,KAAKiK,IAAIyW,KAAKC,QAAO,GAGtCmB,EAAY9hB,KAAK+hB,aAAY,EACjCD,GAAS,IAAMtB,EAAO5G,EACtBkI,EAAS,IAAMtB,EAAO3G,CAEtB,IAAImI,IAAaxB,EAAOpH,MAAOoH,EAAOnH,QAElC4I,EAAYjiB,KAAKkgB,UAEjBgC,GAAUJ,EAAS,GAAIA,EAAS,IAGhCK,EAAUniB,KAAKiK,IAAImY,gBAGpBN,GAAS,GAAKK,EAAQtB,KACrBqB,EAAO,GAAKC,EAAQtB,KACdiB,EAAS,GAAKG,EAAU7I,MAAQ4I,EAAU,GAAKG,EAAQE,QAC7DH,EAAO,GAAKF,EAAU,GAAKG,EAAQE,MAAQJ,EAAU7I,OAItD0I,EAAS,GAAKK,EAAQvB,IACrBsB,EAAO,GAAKC,EAAQvB,IACdkB,EAAS,GAAKG,EAAU5I,OAAS2I,EAAU,GAAKG,EAAQG,SAC9DJ,EAAO,GAAKF,EAAU,GAAKG,EAAQG,OAASL,EAAU5I,OAG1D,IAAIkJ,GAAKT,EAAS,GAAKI,EAAO,GAC1BM,EAAKV,EAAS,GAAKI,EAAO,EAE9BliB,MAAKiK,IAAIwY,IAAIF,EAAIC,IAKrBE,UAAW,WACD1iB,KAAK2iB,QAAU3iB,KAAKue,iBACtBve,KAAK4f,UAAW,EAChB5f,KAAK+X,iBACE/X,MAAK4f,WAMpBP,gBAAiB,WACbrf,KAAKiK,IAAIzF,OAAOnB,IACZuf,KAAS5iB,KAAK0iB,UACd/e,MAAQ3D,OAGZA,KAAKqD,IACDwf,OAAU7iB,KAAK+X,SACf+K,SAAY9iB,KAAK+X,SACjBgL,OAAU/iB,KAAK+X,SACfpU,MAAO3D,QAMfuhB,mBAAoB,WAEhBvhB,KAAKiK,IAAIzF,OAAOwD,IACZ4a,KAAS5iB,KAAK0iB,UACd/e,MAAQ3D,OAGZA,KAAKgI,GAAG,SAAUhI,KAAK+X,SAAU/X,MACjCA,KAAKgI,GAAG,WAAYhI,KAAK+X,SAAU/X,MACnCA,KAAKgI,GAAG,SAAUhI,KAAK+X,SAAU/X,OAOrC2a,cAAe,WACR3a,KAAKme,UACJne,KAAKuhB,qBAETniB,OAAO6e,MAAMpe,WAAW8a,cAAc5a,KAAKC,SAKnDd,IAAI0b,IAAI,WAAYxb,OAAO6e,OCvY3B/e,IAAIC,UAAU,eAedC,OAAO4jB,KAAKC,SAAW,SAASD,EAAME,EAAWC,GAC1CH,YAAgB9jB,KAAI8jB,KAAKI,YACxBJ,EAAOA,EAAKK,UAEhB,IAAIC,MAAcniB,EAAS6hB,EAAKO,WAAU,EAC1C,KAAI,GAAIC,KAAQriB,GAAQ,CACpB,GAE0BgC,GAFtBsgB,EAAID,EAAK/I,MAAM,MAEfnZ,EAAQH,EAAOqiB,EASnB,IAPGC,EAAEhiB,OAAS,GACwCQ,UAAlDkB,EAAO/D,OAAO4jB,KAAKC,SAASS,WAAWD,EAAE,KACzCD,EAAOC,EAAE,GAETtgB,EAAOzD,WAAWikB,OAAOC,WAAWC,SAGpC1gB,IAASzD,WAAWikB,OAAOC,WAAWE,KACtC,OAAOX,GACH,IAAK/jB,QAAO4jB,KAAKe,UACbziB,EAAQ,KAAOA,CACf,MACJ,KAAKlC,QAAO4jB,KAAKgB,YACb1iB,GAAS,IACT,MACJ,KAAKlC,QAAO4jB,KAAKiB,SACb3iB,EAAQ,KAAOA,EAAQ,KAQnCgiB,EAAQxf,KACJ,GAAIpE,YAAWikB,OAAOC,YAClBzgB,KAAMA,EACN7B,MAAOA,EACP6J,SAAUqY,KAKtB,MAAyB,IAAlBF,EAAQ7hB,QAAeyhB,GAAaxjB,WAAWikB,OAAOO,QAAQC,IACjEb,EAAQ,GACR,GAAI5jB,YAAWikB,OAAOO,SAClB/gB,KAAM+f,GAAaxjB,WAAWikB,OAAOO,QAAQE,IAC7Cd,QAASA,KAQrBlkB,OAAO4jB,KAAKC,SAASS,YACjBW,GAAM3kB,WAAWikB,OAAOC,WAAWC,SACnCS,GAAM5kB,WAAWikB,OAAOC,WAAWW,aACnCC,GAAM9kB,WAAWikB,OAAOC,WAAWa,UACnCC,GAAMhlB,WAAWikB,OAAOC,WAAWe,sBACnCC,GAAMllB,WAAWikB,OAAOC,WAAWiB,aACnCC,GAAMplB,WAAWikB,OAAOC,WAAWmB,yBACnCC,KAAQtlB,WAAWikB,OAAOC,WAAWE,MAGzC1kB,OAAO4jB,KAAKe,UAAY,EACxB3kB,OAAO4jB,KAAKgB,YAAc,EAC1B5kB,OAAO4jB,KAAKiB,SAAW,EAsDvB7kB,OAAO4jB,KAAKiC,cAAgB,SAASphB,EAAQK,GAEzCA,EAAUA,KAEV,IAAIf,GAAOU,EAAOU,IAAI,OACtB,IAAmB,gBAATpB,IAAqBA,EAAK+hB,MAGhC,MAAO/hB,EAEXA,GAAOA,EAAKsX,MAAM,KAAKC,KAEvB,IAAInZ,GACAH,EAAOyC,EAAOU,IAAI,QAClB4gB,EAActhB,EAAOU,IAAI,mBACzB6gB,EAAWvhB,EAAOU,IAAI,cAAe,EAErC8J,EAAQxK,EAAOU,IAAI,SACnB8gB,EAAWnhB,EAAQmhB,QACvB,IAAIA,EAAU,CACV,GAAIC,GAAOD,YAAoBnmB,KAAIqmB,SAC/BF,EACA,GAAInmB,KAAIsmB,UAAUH,EACtBhX,GAAQiX,EAAI1iB,MAAMiB,EAAOxE,UACT,OAATgP,IAEPA,EAAQjN,EAGZ,IAAIqkB,IACArkB,KAAMA,EACNskB,WAAYN,EAAW,GAC6B,MAApClhB,EAAQyhB,yBACJzhB,EAAQyhB,yBACR,qBAGpBtd,EAAIjJ,OAAO4jB,KAAKiC,cAAcW,OAElC,IAAGziB,EAAK0iB,MAAMxd,EAAQ,MAAI,CACtB,GAAIyd,GAAyC7jB,SAA7BkjB,EAAuB,UACnCY,WAAWZ,EAAuB,WAAKljB,OACvC+jB,EAAyC/jB,SAA7BkjB,EAAuB,UACnCY,WAAWZ,EAAuB,WAAKljB,MAC3CV,GAAQrC,IAAI0D,OACRsiB,MAAO,YACPe,WAAY5X,EACZyX,UAAWA,EACXE,UAAWA,GACZP,OACA,IAAGtiB,EAAK0iB,MAAMxd,EAAU,QAAI,CAC/B,GAAI6d,GAA2CjkB,SAAhCkjB,EAA0B,aACrCY,WAAWZ,EAA0B,cAAKljB,OAC1CkkB,EAA2ClkB,SAAhCkjB,EAA0B,aACrCY,WAAWZ,EAA0B,cAAKljB,MAC9CV,GAAQrC,IAAI0D,OACRsiB,MAAO,cACPe,WAAY5X,EACZ6X,SAAUA,EACVC,SAAUA,GACXV,OACA,IAAGtiB,EAAK0iB,MAAMxd,EAAE,YAAa,CAChC9G,EAAQrC,IAAI0D,OACRsiB,MAAO,YACRO,EACH,IAAIW,GAAgBliB,EAAQmiB,uBAAyB,UACrD9kB,GAAM6kB,GAAiB/X,MACjBlL,GAAK0iB,MAAMxd,EAAQ,QACzB9G,EAAQrC,IAAI0D,OACRsiB,MAAO,YACPe,WAAY5X,EACZ5O,OAAQ,KACTgmB,GAGP,OAAOlkB,IAOXnC,OAAO4jB,KAAKiC,cAAcW,SACtBU,KAAQ,GAAIhkB,QACR,kBAAmB,KAEvBikB,OAAU,GAAIjkB,QACV,yDAA0D,KAE9DkkB,UAAW,GAAIlkB,QACX,cAAe,KAEnBmkB,KAAQ,GAAInkB,QACR,oBAAqB,MC/N7BpD,IAAIC,UAAU,eA0EdC,OAAO4jB,KAAK0D,aAAexnB,IAAIoB,OAAOpB,IAAI8jB,KAAKjQ,QAI3C5P,KAAM,SAMN0C,SAAU,KAGV/F,YAAa,SAASkjB,EAAM9e,GACxB9E,OAAO4jB,KAAK0D,aAAa7mB,WAAWC,YAAYC,KAAKC,KAAMgjB,EAAM9e,IAMrEyiB,IAAK,WACD,GAAIthB,GAAIrF,KAAKkE,QACToB,EAAIlG,OAAO4jB,KAAKC,SAASjjB,KAAKgjB,KAAM3d,EAAE6d,UAAW7d,EAAE8d,SACpD9d,GAAEuhB,oBAAqB,GAAS5mB,KAAKgjB,KAAK6D,WAErCxhB,EAAEsQ,eAAiB3V,KAAKgjB,KAAK8D,cAC7BzhB,EAAEwM,SAASqE,MAAMlW,KAAKgjB,KAAK8D,cAG/B9mB,KAAKgjB,KAAK8D,aAAezhB,EAAEwM,SAASrR,KAChCtB,IAAI2K,SACA+E,OAAQtJ,EACRuQ,SAAU7V,KAAK+mB,eACfpjB,MAAO3D,MACRqF,KAGDA,EAAEuhB,oBAAqB,IAE7B5mB,KAAKgnB,YAAc9nB,IAAI8jB,KAAKjQ,OAAOkU,eACnCjnB,KAAKgjB,KAAKkE,YAAYlnB,MAAM,KAUpC+mB,eAAgB,SAASlhB,GACrB7F,KAAKgjB,KAAK8D,aAAe,KACzB9mB,KAAK6F,SAAWA,EACbA,EAAS3D,UACRlC,KAAKgjB,KAAKkE,YAAYlnB,MAAM,GAE5BA,KAAKgjB,KAAKkE,YAAYlnB,MAAM,EAEhC,IAAIqF,GAAIrF,KAAKkE,OACVmB,GAAEwQ,UACDxQ,EAAEwQ,SAAS9V,KAAKsF,EAAE1B,MAAOkC,MCtIrC3G,IAAIC,UAAU,eAYdC,OAAO4jB,KAAKmE,UAAYjoB,IAAIoB,OAAOpB,IAAI8jB,KAAKmE,WAKxCtV,SAAU,KAOViV,aAAc,KAOdM,WAAW,EAYXC,SAAU,SAASC,EAAQpjB,GAQvB,MAPa,UAAVojB,IACCpjB,EAAUhF,IAAI2K,QAAQ3F,OAClB2N,SAAU7R,KAAK6R,SACf8D,cAAe3V,KAAKonB,YAExBE,EAAS,GAAIloB,QAAO4jB,KAAK0D,aAAa1mB,KAAMkE,IAEzC9E,OAAO4jB,KAAKmE,UAAUtnB,WAAWwnB,SAAStnB,KAC7CC,KAAMsnB,EAAQpjB,IAWtBqjB,OAAQ,SAASrjB,GACb,MAAOlE,MAAKqnB,SAAS,SAAUnjB,MChEvChF,IAAIC,UAAU,eAuDdC,OAAO4jB,KAAKI,UAAYlkB,IAAIoB,OAAOpB,IAAI8jB,KAAKI,WAMxCvR,SAAU,KAKV2V,WAAY,WAER,aADOxnB,MAAK4U,cAAc6S,UACnB,GAAIroB,QAAO4jB,KAAKmE,UAAU,KAAMnnB,KAAK4U,gBAShD2S,OAAQ,SAASrjB,GACblE,KAAKqjB,UAAUkE,OAAOrjB,MAK9BhF,IAAI0b,IAAI,eAAgBxb,OAAO4jB,KAAKI,WCnFpClkB,IAAIC,UAAU,eAOdC,OAAOsoB,KAAKC,iBAAmBzoB,IAAIoB,OAAOpB,IAAIwoB,KAAKE,QAI/C5Q,SAAU,SAAS1V,EAAO/B,GACtB,GAAa,MAAT+B,EAAe,CACf,GAAIiF,GAAKrH,IAAIqH,IAYb,OAXAshB,QAAOC,WAAW,WACd,GAAIhQ,GAAK5Y,IAAIqF,IAAIgC,EAEbuR,IACA,GAAI1Y,QAAOgX,iBACPpH,YAAa1N,YAAiBP,OAAQO,GAASA,GAC/CymB,SAAUjQ,KAGnB,GACHvY,EAAKyoB,IAAM,wBACJ,YAAczhB,EAAK,eAMtCrH,IAAIwoB,KAAKE,OAAOK,MAAMC,oBAAsB9oB,OAAOsoB,KAAKC,iBCpCxDzoB,IAAIC,UAAU,UAmBdC,OAAO+oB,UAAYjpB,IAAIoB,OAAOpB,IAAIkpB,OAAOC,KAOrCC,OAAO,EAMP7R,SAAU,GAOV8R,SAAW,EAAG,KAMdC,UAAU,EAOVC,KAAM,SAASL,GACXhpB,OAAO+oB,UAAUtoB,WAAW4oB,KAAK7lB,MAAM5C,KAAM0C,WACzC1C,KAAKsoB,OACLF,EAAO/kB,GAAG,SAAUrD,KAAK0oB,uBAAwB1oB,MAErDA,KAAKooB,OAASA,GAMlBM,uBAAwB,WAEpB,IAAK,GADDC,GAAOjR,EACF/V,EAAE,EAAGinB,EAAG5oB,KAAKooB,OAAOS,OAAOpnB,OAAUmnB,EAAFjnB,IAAQA,EAChDgnB,EAAQ3oB,KAAKooB,OAAOS,OAAOlnB,GAC3B+V,EAAKiR,EAAMG,QAAQpR,GACnB,SAAUiR,EAAOjR,GACbA,EAAGrU,IACC0lB,UAAW,SAAS5iB,GAChBnG,KAAKgpB,QAAQhpB,KAAKooB,OAAQjiB,EAAGwiB,GAC7B3oB,KAAKwoB,UAAW,GAEpBS,SAAU,WACDjpB,KAAKwoB,UACNxoB,KAAK6hB,KAAKjf,MAAM5C,KAAM0C,YAG9BiB,MAAO3D,QAEZ4C,MAAM5C,MAAO2oB,EAAOjR,KAS/BsR,QAAS,SAASZ,EAAQjiB,EAAGwiB,GAEzB,MADA3oB,MAAKwoB,UAAW,EACTppB,OAAO+oB,UAAUtoB,WAAWmpB,QAAQpmB,MAAM5C,KAAM0C,cCpF/DxD,IAAIC,UAAU,UAsBdC,OAAO8pB,sBAAwBhqB,IAAIoB,OAAOlB,OAAO+oB,WAS7CgB,SAAU,wBAMVC,iBAAkB,KAKlBX,KAAM,SAASL,GACXpoB,KAAKopB,iBAAmB,GAAIlqB,KAAIqmB,SAASvlB,KAAKmpB,UAC9C/pB,OAAO8pB,sBAAsBrpB,WAAW4oB,KAAK1oB,KAAKC,KAAMooB,IAM5DiB,QAAS,SAASV,GACd,GAAItpB,IACA8O,QAASwa,EAAMrnB,MAEnB,OAAOtB,MAAKopB,iBAAiBxmB,MAAMvD,MCtD3CH,IAAIC,UAAU,UAsBdC,OAAOkqB,cAAgBpqB,IAAIoB,OAAOlB,OAAO+oB,WAWrCgB,SAAU,gGAQVC,iBAAkB,KAKlBX,KAAM,SAASL,GACXpoB,KAAKopB,iBAAmB,GAAIlqB,KAAIqmB,SAASvlB,KAAKmpB,UAC9C/pB,OAAOkqB,cAAczpB,WAAW4oB,KAAK1oB,KAAKC,KAAMooB,IAMpDiB,QAAS,SAASV,GACd,GAAItpB,IACAyb,KAAM6N,EAAMrnB,MACZ0L,WAAYhN,KAAKooB,OAAO/P,gBACxBpL,MAAOiM,KAAKc,MAAMha,KAAKooB,OAAOmB,YAElC,OAAOvpB,MAAKopB,iBAAiBxmB,MAAMvD,MCpE3CH,IAAIC,UAAU,eAOdC,OAAOoqB,KAAKC,YAAcvqB,IAAIoB,OAAOpB,IAAIsqB,KAAKE,YAI1C5pB,YAAa,SAAS8G,GAClBxH,OAAOoqB,KAAKC,YAAY5pB,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAM/D2S,OAAQ,SAASsU,GACb,GAAIC,GAAI5pB,KAAK6pB,KAAK/oB,UACAmB,UAAd2nB,EAAE5V,UACF4V,EAAE5V,QAAUhU,KAAK6pB,KAAKvlB,MAAMkY,iBAKpBva,SAAf2nB,EAAEE,UAA0B9pB,KAAK6pB,KAAKE,cACxC/pB,KAAK6pB,KAAKC,SAAW9pB,KAAK6pB,KAAKvlB,MAAM0lB,WAAY,IAAUhqB,KAAK6pB,KAAKvlB,MAAM2lB,oBAEtE7qB,OAAOoqB,KAAKC,YAAY5pB,WAAWwV,OAAOzS,MAAM5C,KAAM0C,UACtD,IAAIqT,GAAK/V,KAAKkqB,QACd,IAAGN,EAAEO,aAAc,CAEf,GAAIC,GAAQlrB,IAAImrB,UAAUC,YAAYvU,GACjC,6BAA8B6T,EAAEO,aACjC,qBAAsBpU,EAAGwU,UACzBxU,EAAG/B,QAAU,sBAAwB,GACrC,cAAc9C,KAAK,IACvBkZ,GAAMI,eAAiBzU,EAAGyU,eAC1BtrB,IAAIqF,IAAIwR,GAAIlO,SACZ7H,KAAKkqB,SAAWE,EAEpBpqB,KAAKyqB,qBAMT9S,QAAS,SAASxR,GACXA,EAAEukB,UAAU,kBAAmB,GAC9B1qB,KAAK2qB,YAAY3qB,KAAK4qB,aAEtBxrB,OAAOoqB,KAAKC,YAAY5pB,WAAW8X,QAAQ/U,MAAM5C,KAAM0C,YAO/DioB,YAAa,SAASrpB,GAClBA,EAAmBW,SAAVX,GAAuBtB,KAAK4qB,YAActpB,EACnDlC,OAAOoqB,KAAKC,YAAY5pB,WAAW8qB,YAAY5qB,KAAKC,KAAMsB,GAE1DtB,KAAKyqB,qBAOTA,kBAAmB,WACf,GAAI3pB,GAAad,KAAK6pB,KAAK/oB,WACvB+pB,EAAQ/pB,EAAWqpB,YAGvB,IAAGU,GAAmB,iBAAVA,EAA0B,CAClC,GAAIvmB,GAAQtE,KAAK6pB,KAAKvlB,MAClBwmB,EAAe9qB,KAAK6pB,KAAKkB,eAAeC,aACxCC,EAAe,CAEnB/rB,KAAI0E,KAAKknB,EAAc,SAASI,GAC5B,GAAIrP,GAAIqP,EAAE5mB,KACN4mB,GAAEvI,QAAUuI,EAAEpqB,WAAWqpB,eAAiBU,IAC1CI,IACGpP,GAAKvX,GAASxD,EAAWkT,SACxB6H,EAAEI,eAAc,MAKR,IAAjBgP,GAA4C,GAAtBnqB,EAAWkT,SAChC1P,EAAM2X,eAAc,KAWhCkP,cAAgB,SAASC,GACrB,GAAIF,GAAIlrB,KAAKqrB,OAAOC,WAAU,GAC1BlB,EAAQlrB,IAAIqsB,SAASC,OAAO,sBAAuBN,EACvDhsB,KAAI0E,KAAKwmB,EAAO,SAAS/hB,GACrBA,EAAEjH,KAAOiH,EAAEjH,KAAO,WAEtBgqB,EAAUK,YAAYP,MAkC9B9rB,OAAOoqB,KAAKkC,UAAYxsB,IAAIoB,OAAOpB,IAAIsqB,KAAKmC,eAcxCrnB,MAAO,KASPylB,YAAa,KAUb6B,WAAY,KAsBZ9rB,YAAa,SAAS8G,GAClBA,EAAOilB,KAAOjlB,EAAOilB,QAAUjlB,EAAOklB,UAAYllB,EAAOmlB,QAErDnlB,EAAOolB,SAAYplB,EAAOklB,WAC1BllB,EAAOolB,QAAU,uBAElBplB,EAAOmlB,QAAYnlB,EAAOmlB,iBAAkB7sB,KAAIsqB,KAAKyC,aACpDrlB,EAAOmlB,OAAS,GAAI3sB,QAAOoqB,KAAK0C,iBAAiBtlB,EAAOmlB,SAG5D/rB,KAAKmsB,UAAYnsB,KAAKmsB,WAAa/sB,OAAOoqB,KAAKC,YAE/CvqB,IAAI0D,MAAM5C,MACNsE,MAAOsC,EAAOtC,MACdsnB,WAAYhlB,EAAOglB,WAC5B7B,YAAanjB,EAAOmjB,cAEXnjB,EAAO0f,OACPtmB,KAAKosB,WAAY,GAErBhtB,OAAOoqB,KAAKkC,UAAU7rB,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAM7D2S,OAAQ,SAASsU,GACb,GAAIrlB,GAAQtE,KAAKsE,gBAAiB5E,YAAWoR,OAAS9Q,KAAKsE,KAC3D,KAAIA,EAAO,CAEHtE,KAAK4rB,YAAiC,QAAnB5rB,KAAK4rB,aACxB5rB,KAAK4rB,WAAaxsB,OAAO8K,SAAS2T,QAAQ9T,OAG9C,IAAIpI,GAAI3B,KAAK4rB,WAAWxjB,OAAO,SAAS/C,GACpC,MAAOA,GAAEd,IAAI,UAAYvE,KAAKsE,OAC/BtE,KACK,KAAL2B,IAGC2C,EAAQtE,KAAK4rB,WAAWtjB,MAAM3G,GAAG+H,YAGzC,IAAK1J,KAAKoV,WAAa9Q,EAAO,CAC1B,GAAI+nB,GAAKrsB,KAAKssB,OAEXhoB,IACCtE,KAAKsE,MAAQA,EAEVA,EAAMoI,cACL1M,KAAKye,WAAY,EACjBvf,IAAI2K,QAAQ7J,KAAKc,YACbqpB,aAAc,kBAIlCnqB,KAAK+pB,cAAgB/pB,KAAK+pB,eAAc,GAAS/pB,KAAKsE,MAAMoI,aAAe1M,KAAKsE,MAAMioB,eAClFvsB,KAAKsmB,OACOtmB,KAAKsmB,KAAOhiB,EAAMlD,MAGtBirB,EAAG1M,OACH3f,KAAKwsB,8BAELH,EAAGxK,OAGJ7hB,KAAK4rB,qBAAsBxsB,QAAOC,KAAK+K,YACtCpK,KAAKysB,sBAAsBnoB,GAGnClF,OAAOoqB,KAAKkC,UAAU7rB,WAAWwV,OAAOzS,MAAM5C,KAAM0C,YAOxD8pB,2BAA4B,WACxBxsB,KAAKsE,MAAME,OAAOnB,IACdqpB,kBAAqB1sB,KAAK2sB,yBAC1BhpB,MAAO3D,OAEXA,KAAKqD,IACDupB,YAAe5sB,KAAK6sB,cACpBlpB,MAAO3D,OAEdA,KAAK+pB,aACP/pB,KAAKsE,MAAM2F,IAAIzF,OAAOnB,IACrBkY,QAAUvb,KAAK8sB,aACfnpB,MAAM3D,QAQN2sB,yBAA0B,WAClB3sB,KAAK+sB,qBACL/sB,KAAKssB,QAAQ3B,YAAY3qB,KAAKsE,MAAMkY,kBAU5CqQ,cAAe,SAAShD,EAAM7V,GAC1B,GAAGA,GAAWhU,KAAKsE,MAAMkY,gBAAiB,CACtCxc,KAAK+sB,qBAAsB,CAC3B,IAAIzoB,GAAQtE,KAAKsE,KACd0P,IAAW1P,EAAMoI,aAAepI,EAAM2F,IACrC3F,EAAM2F,IAAI+R,aAAa1X,GAEvBA,EAAM2X,cAAcjI,SAEjBhU,MAAK+sB,sBAUvBD,aAAc,SAASvkB,GAElBvI,KAAK+pB,aAAe/pB,KAAKsE,QACxBtE,KAAKsE,MAAM0lB,WAAY,EAC1BhqB,KAAKgV,UAGLhV,KAAK8U,WASL2X,sBAAuB,WACnBzsB,KAAK4rB,WAAWvoB,IACZjD,IAAOJ,KAAKgtB,WACZnlB,OAAU7H,KAAKitB,cACf3pB,OAAUtD,KAAKktB,cACfvpB,MAAO3D,QAWfgtB,WAAY,SAAShpB,EAAOtC,EAASyC,GAEjC,IAAI,GADA0X,GACIla,EAAE,EAAGA,EAAED,EAAQD,SAAUE,EAAG,CAEhC,GADAka,EAAIna,EAAQC,GAAG+H,WACZ1J,KAAKsE,OAASuX,EAAG,CAChB7b,KAAKssB,QAAQ3M,MACb,OACG,GAAI3f,KAAKsE,OAASuX,EAAEza,KAAM,CAI7BpB,KAAKqV,QACL,UAYZ4X,cAAe,SAASjpB,EAAOH,EAAQM,GAChCnE,KAAKsE,OAAST,EAAO6F,YACpB1J,KAAKssB,QAAQzK,QAWrBqL,cAAe,SAASlpB,EAAOH,EAAQI,GACnC,GAAIK,GAAQT,EAAO6F,UACf1J,MAAKosB,WAAcpsB,KAAKsE,OAASA,GAAStE,KAAKsmB,OAAShiB,EAAMlD,MAC9DpB,KAAKmtB,QAAQ7oB,EAAMlD,OAM3BoI,QAAS,WACL,GAAIlF,GAAQtE,KAAKsE,KACbA,aAAiB5E,YAAWoR,OAC5BxM,EAAME,OAAOwD,IACT0kB,kBAAqB1sB,KAAK2sB,yBAC1BhpB,MAAO3D,aAGRA,MAAKsE,KACZ,IAAIsnB,GAAa5rB,KAAK4rB,UACnBA,KACCA,EAAW5jB,GAAG,MAAOhI,KAAKgtB,WAAYhtB,MACtC4rB,EAAW5jB,GAAG,SAAUhI,KAAKitB,cAAejtB,MAC5C4rB,EAAW5jB,GAAG,SAAUhI,KAAKktB,cAAeltB,aAEzCA,MAAK4rB,WACZ5rB,KAAKgI,GAAG,cAAehI,KAAK6sB,cAAe7sB,MAE3CZ,OAAOoqB,KAAKkC,UAAU7rB,WAAW2J,QAAQ5G,MAAM5C,KAAM0C,cAO7DxD,IAAIsqB,KAAK4D,UAAUC,UAAUC,SAAWluB,OAAOoqB,KAAKkC,UClbpDxsB,IAAIC,UAAU,eAgCdC,OAAOoqB,KAAK+D,qBAAuB,WAC/B,OAEIztB,YAAa,SAAS+pB,GAElBA,EAAK1f,UASD,aAUA,gBAEJnK,KAAKH,WAAa6C,UAAUC,OAAO9C,WACnCG,KAAKH,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAO5C2S,OAAQ,SAASsU,GACT3pB,KAAKoV,WACLpV,KAAKH,WAAWwV,OAAOzS,MAAM5C,KAAM0C,WACnC1C,KAAKgL,UAAU,aAAchL,KAAK6pB,QAO1ClS,QAAS,SAASxR,GACXnG,KAAKgL,UAAU,eAAgBhL,KAAK6pB,KAAM1jB,MAAO,GAChDnG,KAAKH,WAAW8X,QAAQ/U,MAAM5C,KAAM0C,cC9EpDxD,IAAIC,UAAU,kBA6CdC,OAAOouB,QAAQC,kBAAoBvuB,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAKnD5tB,YAAa,SAAS8G,GAClB1H,IAAI0D,MAAM5C,KAAK4U,cAAe1V,IAAI0D,SAAUgE,IAC5C1H,IAAI0D,MAAM5C,KAAM4G,GAEhBxH,OAAOouB,QAAQC,kBAAkB5tB,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAMxE+lB,KAAM,SAASe,GACXA,EAAKnmB,IACDsqB,WAAc3tB,KAAK4tB,aACnBC,cAAiB7tB,KAAK8tB,gBACtBnqB,MAAO3D,QAOf4tB,aAAc,SAAS/D,GACnB,GAAIzU,GAAWyU,EAAKzU,SAChBlU,EAAO2oB,EAAK/oB,WACZitB,EAAY7sB,EAAK6sB,WAAa/tB,KAAK+tB,SACvC,KAAI3Y,GAAY2Y,EAAW,CACvB,GAAIC,GAAM9uB,IAAImrB,UAAU4D,OAAOpE,EAAKwC,GAAGhB,SAClC6C,IAAO,QAEW,mBAAbH,GACNA,EAAYA,EAAUlE,EAAMmE,GACD,gBAAbD,IACgB,kBAAhBA,GAAUI,KACxBJ,EAAYA,EAAUI,GAAGvrB,MACrBmrB,EAAUpqB,OAAQkmB,EAAMmE,KAGT,gBAAbD,IACmB,gBAAnBA,GAAU7I,QAChB6I,EAAY7uB,IAAI4e,aAAa/Y,OAAOgpB,IAErCA,YAAqB7uB,KAAIkvB,YACxBL,EAAU1Y,OAAO2Y,GACjBnE,EAAKkE,UAAYA,KAO7BD,gBAAiB,SAAStE,GACtBA,EAAKxhB,GAAG,aAAchI,KAAK4tB,aAAc5tB,MACzCwpB,EAAKxhB,GAAG,gBAAiBhI,KAAK8tB,gBAAiB9tB,SAMvDd,IAAImvB,KAAK,uBAAwBjvB,OAAOouB,QAAQC,mBCzGhDvuB,IAAIC,UAAU,kBAmDdC,OAAOouB,QAAQc,oBAAsBpvB,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAKrD5tB,YAAa,SAAS8G,GAClB1H,IAAI0D,MAAM5C,KAAK4U,cAAe1V,IAAI0D,SAAUgE,IAC5C1H,IAAI0D,MAAM5C,KAAM4G,GAEhB5G,KAAKmK,UASD,eAGJ/K,OAAOouB,QAAQc,oBAAoBzuB,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAM1E+lB,KAAM,SAASe,GACXA,EAAKnmB,IACDsqB,WAAc3tB,KAAK4tB,aACnBW,aAAgBvuB,KAAKwuB,eACrBX,cAAiB7tB,KAAK8tB,gBACtBnqB,MAAO3D,QAOf4tB,aAAc,SAAS/D,GACnB,GAAID,GAAIC,EAAK/oB,UACV8oB,GAAE6E,aAAe7E,EAAEQ,QAClBR,EAAEQ,MAAQlrB,IAAImrB,UAAUqE,aAAa7E,EAAKwC,GAAGsC,QACxC,mDACD/E,EAAE6E,WAAY,oBAAoBvd,KAAK,OAQnDsd,eAAgB,SAAS3E,EAAM1jB,GAC3B,GAAIuR,GAAKvR,EAAEukB,UAAU,iBAAkB,EACvC,OAAGhT,IACCA,EAAG8S,eAAiB9S,EAAG1D,QACvBhU,KAAKgL,UAAU,cAAe6e,IACvB,GAHX,QASJiE,gBAAiB,SAAStE,GACtBA,EAAKxhB,GAAG,aAAchI,KAAK4tB,aAAc5tB,MACzCwpB,EAAKxhB,GAAG,eAAgBhI,KAAKwuB,eAAgBxuB,MAC7CwpB,EAAKxhB,GAAG,gBAAiBhI,KAAK8tB,gBAAiB9tB,SAMvDd,IAAImvB,KAAK,yBAA0BjvB,OAAOouB,QAAQc,qBC9HlDpvB,IAAIC,UAAU,kBAwFdC,OAAOouB,QAAQoB,gBAAkB1vB,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAGjDmB,WAAY,wBAIZC,UAAW,uBAKXhvB,YAAa,SAAS8G,GAClB1H,IAAI0D,MAAM5C,KAAK4U,cAAe1V,IAAI0D,SAAUgE,IAC5C1H,IAAI0D,MAAM5C,KAAM4G,GAEhB5G,KAAKmK,UASD,UAGJ/K,OAAOouB,QAAQoB,gBAAgB/uB,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAMtE+lB,KAAM,SAASe,GACXA,EAAKnmB,IACDsqB,WAAc3tB,KAAK4tB,aACnBW,aAAgBvuB,KAAKwuB,eACrBX,cAAiB7tB,KAAK8tB,gBACtBnqB,MAAO3D,QAOf4tB,aAAc,SAAS/D,GACnB,GAAIzU,GAAWyU,EAAKzU,QACpB,KAAIA,EAAU,CACV,GAAIlU,GAAO2oB,EAAK/oB,WACZiuB,EAAU7tB,EAAK6tB,SAAW/uB,KAAK+uB,OACnC,IAAGA,GAAWA,EAAQttB,OAAS,EAAG,CAE9B,IAAI,GADAutB,IAAQ,eAAgBhvB,KAAK6uB,WAAY,MACrCltB,EAAE,EAAEC,EAAImtB,EAAQttB,OAAUG,EAAFD,EAAOA,IAAK,CACxC,GAAIioB,GAAImF,EAAQptB,EAChBqtB,GAAOA,EAAKC,QACR,YAAYpF,EAAKtjB,GAAG,IAAIqjB,EAAEtC,OAC1B,eAAesC,EAAEsF,KACjB,UAAUhwB,IAAIiwB,gBACd,YAAYnvB,KAAK8uB,UAAU,IAAIlF,EAAEtC,OAAO,SAGhD0H,EAAKC,QAAQ,WACb/vB,IAAImrB,UAAU+E,YAAYvF,EAAKwC,GAAGhB,OAAQ2D,EAAK9d,KAAK,KAEpD2Y,EAAKvlB,OAASulB,EAAKvlB,MAAM2F,IACzBjK,KAAKqvB,cAAcxF,GACZA,EAAK+B,YACZ/B,EAAK+B,WAAWvoB,IACZD,KAAQ,WACJpD,KAAKqvB,cAAcxF,IAEvBlmB,MAAO3D,SAUvBqvB,cAAe,SAASxF,GACpB,GAAIkF,GAAUlF,EAAK/oB,WAAWiuB,SAAW/uB,KAAK+uB,WAC9C7vB,KAAI0E,KAAKmrB,EAAS,SAASnF,EAAGzlB,GAC1B,GAAIuT,GAAKxY,IAAIqF,IAAIslB,EAAKtjB,GAAK,IAAMqjB,EAAEtC,OAC/B5P,IAAyB,kBAAZkS,GAAEtmB,QACfsmB,EAAEtmB,OAAOvD,KAAK8pB,EAAMnS,MAShC8W,eAAgB,SAAS3E,EAAM1jB,GAC3B,GAAGA,EAAEukB,UAAU,IAAM1qB,KAAK8uB,UAAW,GAAI,CACrC,GAAIQ,GAAInpB,EAAEukB,UAAU,IAAM1qB,KAAK8uB,UAAW,GACtCxH,EAASgI,EAAE/E,UAAUzf,QAAQ9K,KAAK8uB,UAAY,IAAK,GAEvD,OADA9uB,MAAKgL,UAAU,SAAU6e,EAAMvC,EAAQnhB,IAChC,IAMf2nB,gBAAiB,SAAStE,GACtBA,EAAKxhB,GAAG,aAAchI,KAAK4tB,aAAc5tB,MACzCwpB,EAAKxhB,GAAG,eAAgBhI,KAAKwuB,eAAgBxuB,MAC7CwpB,EAAKxhB,GAAG,gBAAiBhI,KAAK8tB,gBAAiB9tB,SAKvDd,IAAImvB,KAAK,qBAAsBjvB,OAAOouB,QAAQoB,iBCtM9C1vB,IAAIC,UAAU,eAgBdC,OAAOoqB,KAAK+F,YAAc,SAAS3oB,GAC/B1H,IAAI0D,MAAM5C,KAAM4G,GAChB5G,KAAKmK,UAYD,aAWA,QAGJ/K,OAAOoqB,KAAK+F,YAAY1vB,WAAWC,YAAYC,KAAKC,OAGxDd,IAAIoB,OAAOlB,OAAOoqB,KAAK+F,YAAarwB,IAAIsG,KAAKkoB,YAMzC1pB,MAAO,KAcP4K,OAAQ,SAAS/K,GACb,MAAmD,IAA5CA,EAAO6F,WAAW8lB,wBAO7BC,UAAW,KAWXC,YAAa,KAMblsB,KAAM,SAASqmB,EAAMhU,GACjB,GAAG7V,KAAKgL,UAAU,aAAchL,KAAM6pB,GAAO,CAEzC,IADA7pB,KAAK2vB,sBACE9F,EAAK+F,YACR/F,EAAKgG,YAAYhG,EAAK+F,WAGtB5vB,MAAK0vB,cACL1vB,KAAK0vB,YAAc7F,EAAKkB,eAAe+E,YAAYJ,aAGnD1vB,KAAKgE,QACLhE,KAAKgE,MAAQ5E,OAAO8K,SAAS2T,QAAQ9T,QAEzC/J,KAAKgE,MAAMJ,KAAK,SAASC,GACrB7D,KAAK+vB,aAAalG,EAAMhmB,IACzB7D,MACHA,KAAKgwB,iBAAiBnG,GAEA,kBAAZhU,IACNA,IAGJ7V,KAAKgL,UAAU,OAAQhL,KAAM6pB,KAYrCmD,WAAY,SAAShpB,EAAOtC,EAASyC,EAAO0lB,GACxC,IAAI7pB,KAAKiwB,YAEL,IAAI,GADAC,GAAYrG,EAAKsG,uBAAuBhsB,EAAMzC,EAAQD,OAAO,GACzDE,EAAE,EAAGA,EAAED,EAAQD,SAAUE,EAC7B3B,KAAK+vB,aAAalG,EAAMnoB,EAAQC,GAAIuuB,IAahDjD,cAAe,SAASjpB,EAAOH,EAAQM,EAAO0lB,GACtC7pB,KAAKiwB,aACLjwB,KAAKowB,gBAAgBvG,EAAMhmB,IAanCksB,aAAc,SAASlG,EAAMwG,EAAalsB,GAEtC,GAAInE,KAAK4O,OAAOyhB,MAAiB,EAAM,CACnC,GAMIC,GANAC,EAAQvwB,KAAKwwB,YACb3gB,SAAU,WACVvL,MAAO+rB,EAAY3mB,WACnBkiB,WAAY5rB,KAAKgE,OAIlBssB,GACCzG,EAAK6E,aAAa6B,EAAOD,GAEzBzG,EAAK4B,YAAY8E,GAErBA,EAAMltB,GAAG,OAAQrD,KAAKywB,YAAazwB,QAY3CowB,gBAAiB,SAASvG,EAAMwG,GAC5B,GAAIrwB,KAAK4O,OAAOyhB,MAAiB,EAAM,CACnC,GAAIE,GAAQ1G,EAAK6G,YAAY,SAAS7G,GAClC,MAAOA,GAAKvlB,OAAS+rB,EAAY3mB,YAElC6mB,KACCA,EAAMvoB,GAAG,OAAQhI,KAAKywB,YAAazwB,MACnCuwB,EAAM1oB,SACNgiB,EAAK8G,YAgBjBF,YAAa,SAASjH,EAAMK,EAAM+G,EAAWC,EAAW1sB,GACpDnE,KAAKiwB,aAAc,CAEnB,IAAIpsB,GAAS7D,KAAKgE,MAAMkI,WAAW2d,EAAKvlB,MAExC,IAAGusB,YAAqBzxB,QAAOoqB,KAAKsH,gBACR9wB,KAAKgE,QAAU6sB,EAAU9E,OAAO/nB,MAAO,CAC/D6sB,EAAU9E,OAAOkE,aAAc,EAC/BjwB,KAAKgE,MAAM6D,OAAOhE,EAClB,IAAIktB,EACJ,IAAGF,EAAUG,WAAWvvB,OAAS,EAAG,CAEhC,GAAIwvB,GAAyB,IAAV9sB,EAAeA,EAAQ,EAAIA,EAAQ,CACtD4sB,GAAiB/wB,KAAKgE,MAAMoE,OAAO,SAASC,GACxC,MAAOwoB,GAAUG,WAAWC,GAAa3sB,QAAU+D,EAAEqB,aAE/C,IAAVvF,GAAe4sB,QACZ,IAAGH,EAAUM,aAAeL,EAAUK,WAAW,CAEpD,GAAIC,GAAON,CACX,GACIM,GAAOA,EAAKC,sBACPD,KAAUA,YAAgB/xB,QAAOoqB,KAAKsH,gBAAkBK,EAAKE,WACtE,IAAGF,EACCJ,EAAiB/wB,KAAKgE,MAAMoE,OAAO,SAASC,GACxC,MAAO8oB,GAAKE,UAAU/sB,QAAU+D,EAAEqB,iBAEnC,CAEH,GAAI4nB,GAAOT,CACX,GACIS,GAAOA,EAAKC,kBACPD,KAAUA,YAAgBlyB,QAAOoqB,KAAKsH,gBAAkBQ,EAAK1B,YACnE0B,KACCP,EAAiB/wB,KAAKgE,MAAMoE,OAAO,SAASC,GACxC,MAAOipB,GAAK1B,WAAWtrB,QAAU+D,EAAEqB,cAG3CqnB,KAGc9uB,SAAnB8uB,GACC/wB,KAAKgE,MAAMsH,OAAOylB,GAAiBltB,IACnCgkB,OAAOC,WAAW,WACd+I,EAAUF,SACVC,EAAUD,YAGd3wB,KAAKgE,MAAMsH,OAAOkmB,gBAAiB3tB,UAEhCgtB,GAAU9E,OAAOkE,kBAErBjwB,MAAKiwB,aAMhBD,iBAAkB,SAASnG,GACvB,IAAI7pB,KAAKyxB,eAAgB,CACrBzxB,KAAKyxB,gBACDrxB,IAAOJ,KAAKgtB,WAAW1X,eAAetV,MAAO6pB,IAAO,GACpDhiB,OAAU7H,KAAKitB,cAAc3X,eAAetV,MAAO6pB,IAAO,GAE9D,KAAI,GAAIthB,KAAOvI,MAAKyxB,eAChBzxB,KAAKgE,MAAMX,GAAGkF,EAAKvI,KAAKyxB,eAAelpB,GAAMvI,QAOzD2vB,oBAAqB,WACjB,GAAG3vB,KAAKyxB,eAAgB,CACpB,IAAI,GAAIlpB,KAAOvI,MAAKyxB,eAChBzxB,KAAKgE,MAAMgE,GAAGO,EAAKvI,KAAKyxB,eAAelpB,GAAMvI,YAE1CA,MAAKyxB,iBAUpBjB,WAAY,SAAStvB,MASjB,MARGlB,MAAKyvB,WACJvwB,IAAI0D,MAAM1B,KAAMlB,KAAKyvB,WAEI,gBAAnBvuB,MAAKwwB,aACZxwB,KAAKwwB,WAAa1xB,KAAK0vB,YAAYxuB,KAAKwwB,aAAeC,KAAKzwB,KAAKwwB,aAEpExwB,KAAK2O,SAAW3O,KAAK2O,UAAY,WAE1B,GAAI3Q,KAAIsqB,KAAK4D,UAAUC,UAAUnsB,KAAK2O,UAAU3O,OAK3DsI,QAAS,WACLxJ,KAAK2vB,yBC1TbzwB,IAAIC,UAAU,eAyBdC,OAAOoqB,KAAKsH,eAAiB5xB,IAAIoB,OAAOpB,IAAIsqB,KAAKmC,eAmB7CrF,KAAM,SAKNxmB,YAAa,SAAS8G,GAClBA,EAAS1H,IAAI2K,QAAQjD,OACjB0f,KAAMtmB,KAAKsmB,OAEftmB,KAAK+rB,OAASnlB,EAAOmlB,iBAAkB3sB,QAAOoqB,KAAK+F,YAC/C3oB,EAAOmlB,OACP,GAAI3sB,QAAOoqB,KAAK+F,YAAYrwB,IAAI2K,QAAQjD,EAAOmlB,YAC3C/nB,MAAO4C,EAAOglB,cAGtBxsB,OAAOoqB,KAAKsH,eAAejxB,WAAWC,YAAYC,KAAKC,KAAM4G,IAOjEupB,uBAAwB,SAAShsB,GAK7B,IAAI,GAJAH,GAAQhE,KAAK+rB,OAAO/nB,MACpB4tB,EAAQ5tB,EAAM6tB,WACdC,EAAY9xB,KAAKgxB,WAAWvvB,OAC5ByuB,EAAY,GACRvuB,EAAEiwB,EAAM,EAAGjwB,GAAG,KACf3B,KAAK+rB,OAAOnd,OAAO5K,EAAMsE,MAAM3G,OAAQ,MACpCuuB,EACC/rB,IAAUxC,GAAKuuB,EAAY4B,EAAU,MAHrBnwB,GAQ3B,MAAOuuB,IAKX1mB,QAAS,iBACExJ,MAAK4rB,WACZxsB,OAAOoqB,KAAKsH,eAAejxB,WAAW2J,QAAQ5G,MAAM5C,KAAM0C,cAOlExD,IAAIsqB,KAAK4D,UAAUC,UAAU0E,kBAAoB3yB,OAAOoqB,KAAKsH,eC7F7D5xB,IAAIC,UAAU,eA0BdC,OAAOoqB,KAAKwI,mBAAqB9yB,IAAIoB,OAAOlB,OAAOoqB,KAAKsH,gBAKpDxK,KAAM,aAKNxmB,YAAa,SAAS8G,GAClBA,EAAS1H,IAAI2K,QAAQjD,OACjB0f,KAAMtmB,KAAKsmB,KACXyF,YAEJnlB,EAAOmlB,OAAS7sB,IAAI2K,QAAQjD,EAAOmlB,QAC/B0D,UAAWvwB,IAAI2K,QAAQjD,EAAOmlB,OAAO0D,eACjCzD,QAAS,yBACT7B,aAAc,cAElBvb,OAAQ,SAAS/K,GACb,GAAIS,GAAQT,EAAO6F,UACnB,OAAOpF,GAAMkrB,0BAA2B,GACpClrB,EAAMoI,eAAgB,KAIlCtN,OAAOoqB,KAAKwI,mBAAmBnyB,WAAWC,YAAYC,KAAKC,KACvD4G,MAOZ1H,IAAIsqB,KAAK4D,UAAUC,UAAU4E,sBAAwB7yB,OAAOoqB,KAAKwI,mBC7DjE9yB,IAAIC,UAAU,eAsBdC,OAAOoqB,KAAK0I,sBAAwBhzB,IAAIoB,OAAOlB,OAAOoqB,KAAKsH,gBAKvDxK,KAAM,WAKNxmB,YAAa,SAAS8G,GAClBA,EAAS1H,IAAI2K,QAAQjD,OACjB0f,KAAMtmB,KAAKsmB,OAEf1f,EAAOmlB,OAAS7sB,IAAI2K,QAAQjD,EAAOmlB,YAC/Bnd,OAAQ,SAAS/K,GACb,GAAIS,GAAQT,EAAO6F,UACnB,OAAOpF,GAAMkrB,0BAA2B,GACxClrB,EAAMoI,eAAgB,KAI9BtN,OAAOoqB,KAAK0I,sBAAsBryB,WAAWC,YAAYC,KAAKC,KAC1D4G,MAOZ1H,IAAIsqB,KAAK4D,UAAUC,UAAU8E,yBAA2B/yB,OAAOoqB,KAAK0I,sBC7CpEhzB,IAAIC,UAAU,eAYdC,OAAOoqB,KAAK4I,eAAiBlzB,IAAIoB,OAAOpB,IAAIsqB,KAAK6I,UAW7C/tB,MAAO,KAkBPguB,MAAO,KASP7U,KAAM,KAWN8U,UAAW,KAKXC,SAAU,KAKV1yB,YAAa,SAASgB,GAClB,GAAI8F,GAAS9F,KACb8F,GAAOolB,QAAUplB,EAAOolB,SAAW,0BACnCplB,EAAO0f,KAAO1f,EAAO0f,MAAQ1f,EAAO6W,KAEpCzd,KAAKsyB,MAAQ1rB,EAAO0rB,MACpBtyB,KAAKyd,KAAO7W,EAAO6W,KACnBzd,KAAKuyB,UAAY3rB,EAAO2rB,WAAa,IACrCvyB,KAAKwyB,SAAW5rB,EAAO4rB,SAEvBpzB,OAAOoqB,KAAK4I,eAAevyB,WAAWC,YAAY8C,MAAM5C,KAAM0C,WAE9D1C,KAAK0J,WAEF1J,KAAKsE,QAIAtE,KAAKwyB,WACLxyB,KAAKwyB,SAAWxyB,KAAKyyB,qBAOK,MAA3BzyB,KAAKc,WAAWkT,QACfhU,KAAKc,WAAWkT,QACZhU,KAAKsE,MAAMkY,iBACXxc,KAAKyyB,oBAAoBpwB,QAAQrC,KAAKyd,OAAS,EAEnDzd,KAAK6sB,cAAc7sB,KAAMA,KAAKc,WAAWkT,SAG7ChU,KAAKsE,MAAME,OAAOnB,IACdqpB,kBAAqB1sB,KAAK2sB,yBAC1BhpB,MAAO3D,OAGXA,KAAKqD,IACDupB,YAAe5sB,KAAK6sB,cACpBlpB,MAAO3D,SAUnB0J,SAAU,WACN,IAAI1J,KAAKsE,MAAO,CACZ,GAAIA,GAAQtE,KAAKc,WAAWwD,KAC5B,IAAmB,gBAATA,GAAmB,CACzB,GAAIN,GAAQhE,KAAKc,WAAW8qB,YACxBxsB,OAAO8K,SAAS2T,QAAQ9T,OACxBpI,EAAIqC,EAAMoE,OAAO,SAAS/C,GAC1B,MAAOA,GAAEd,IAAI,UAAYD,GAE7BA,GAAa,IAAL3C,EAAUqC,EAAMsE,MAAM3G,GAAG+H,WAAa,KAElD1J,KAAKsE,MAAQA,EAEjB,MAAOtE,MAAKsE,OAMhBmuB,kBAAmB,WACf,GAAIC,GAAa1yB,KAAKsE,MAAMgM,OAAOtQ,KAAKsyB,MACxC,OAAOI,aAAsB3xB,OACzB2xB,EACCA,EAAaA,EAAWjY,MAAMza,KAAKuyB,eAO5CI,aAAc,SAAS7wB,GACnB,GAAIwO,KAIJ,OAHAA,GAAOtQ,KAAKsyB,OAAStyB,KAAKsE,MAAMgM,OAAOtQ,KAAKsyB,gBAAkBvxB,OAC1De,EACAA,EAAMoP,KAAKlR,KAAKuyB,WACbjiB,GAMXqc,yBAA0B,WACiB,IAApC3sB,KAAKyyB,oBAAoBhxB,QACxBzB,KAAKsE,MAAMsuB,eAAe5yB,KAAK2yB,aAAa3yB,KAAKwyB,UAErD,IAAIK,GAAU7yB,KAAKsE,MAAMkY,eACtBqW,IAA2D,KAAhD7yB,KAAKyyB,oBAAoBpwB,QAAQrC,KAAKyd,OAChDzd,KAAKssB,QAAQ3B,aAAY,GAEzBkI,IACA7yB,KAAKsE,MAAMsuB,eAAe5yB,KAAK2yB,kBAC/B3yB,KAAKssB,QAAQ3B,aAAY,KAUjCkC,cAAe,SAAShD,EAAM7V,GAC1B,GAAI1P,GAAQtE,KAAKsE,MAEbwuB,KACAC,EAAW/yB,KAAKyyB,mBAGjBze,MAAY,GAAQ1P,EAAMkY,mBAAoB,GACzBuW,EAAStxB,SAAWzB,KAAKwyB,SAAS/wB,SACtDsxB,MAGJ7zB,IAAI0E,KAAK5D,KAAKwyB,SAAU,SAAS/U,IACzBA,IAASzd,KAAKyd,MAAmC,KAA3BsV,EAAS1wB,QAAQob,IAC1BzJ,KAAY,GAAQyJ,IAASzd,KAAKyd,OAC/CqV,EAAShvB,KAAK2Z,IAEnBzd,KAEH,IAAI6yB,GAAWC,EAASrxB,OAAS,CAGjCoxB,IAAWvuB,EAAMsuB,eAAe5yB,KAAK2yB,aAAaG,IAC/CD,IAAYvuB,EAAMkY,iBACjBlY,EAAM2X,cAAc4W,IAKtBA,GAAYvuB,EAAMsuB,eAAe5yB,KAAK2yB,mBAK5CnpB,QAAS,WACL,GAAIlF,GAAQtE,KAAKsE,KACbA,aAAiB5E,YAAWoR,OAC5BxM,EAAME,OAAOwD,IACT0kB,kBAAqB1sB,KAAK2sB,yBAC1BhpB,MAAO3D,aAGRA,MAAKsE,MAEZtE,KAAKgI,GAAG,cAAehI,KAAK6sB,cAAe7sB,MAE3CZ,OAAOoqB,KAAK4I,eAAevyB,WAAW2J,QAAQ5G,MAAM5C,KAAM0C,cAOlExD,IAAIsqB,KAAK4D,UAAUC,UAAU2F,cAAgB5zB,OAAOoqB,KAAK4I,eC7OzDlzB,IAAIC,UAAU,eASdC,OAAOoqB,KAAK0C,iBAAmB,SAAStlB,GACpC1H,IAAI0D,MAAM5C,KAAM4G,GAChB5G,KAAKmK,UAYD,aAWA,QAGJ/K,OAAOoqB,KAAK0C,iBAAiBrsB,WAAWC,YAAYC,KAAKC,OAG7Dd,IAAIoB,OAAOlB,OAAOoqB,KAAK0C,iBAAkBhtB,IAAIsG,KAAKkoB,YAY9C4E,MAAO,KAWPC,UAAW,IAMX/uB,KAAM,SAASqmB,EAAMhU,GACjB,GAAG7V,KAAKgL,UAAU,aAAchL,KAAM6pB,GAAO,CACzC,KAAOA,EAAK+F,YACR/F,EAAKgG,YAAYhG,EAAK+F,WAG1B,IAAI8C,GACC7I,EAAKvlB,gBAAiB5E,YAAWoR,MAAMmiB,aACxCpJ,EAAKvlB,MAAMgM,OAAOtQ,KAAKsyB,MAC3B,IAAGI,EAAY,CACX,GAAI5wB,GAAS4wB,YAAsB3xB,OAC/B2xB,EAAWzrB,QACXyrB,EAAWjY,MAAMza,KAAKuyB,UAE1BrzB,KAAI0E,KAAK9B,EAAO,SAAS2b,EAAMtZ,EAAOquB,GAClCxyB,KAAKkzB,aAAazV,EAAM+U,EAAU3I,IACnC7pB,MAGe,kBAAZ6V,IACNA,IAGJ7V,KAAKgL,UAAU,OAAQhL,KAAM6pB,KAarCqJ,aAAc,SAASC,EAAWC,EAAevJ,GAC7C,GAAI0G,GAAQvwB,KAAKwwB,YACblsB,MAAOulB,EAAKvlB,MACZguB,MAAOtyB,KAAKsyB,MACZ7U,KAAM0V,EACNX,SAAUY,EACVb,UAAWvyB,KAAKuyB,YAEhBjC,EAAUzG,EAAKpM,KAAK,EACrB6S,GACCzG,EAAK6E,aAAa6B,EAAOD,GAEzBzG,EAAK4B,YAAY8E,IAUzBC,WAAY,SAAStvB,MASjB,MARGlB,MAAKyvB,WACJvwB,IAAI0D,MAAM1B,KAAMlB,KAAKyvB,WAEI,gBAAnBvuB,MAAKwwB,aACZxwB,KAAKwwB,WAAa1xB,KAAK0vB,YAAYxuB,KAAKwwB,aAAeC,KAAKzwB,KAAKwwB,aAEpExwB,KAAK2O,SAAW3O,KAAK2O,UAAY,gBAE1B,GAAI3Q,KAAIsqB,KAAK4D,UAAUC,UAAUnsB,KAAK2O,UAAU3O,SCpI/DhC,IAAIC,UAAU,eAWdC,OAAOoqB,KAAK6J,sBAAwB,SAASzsB,GACzC1H,IAAI0D,MAAM5C,KAAM4G,GAChBxH,OAAOoqB,KAAK6J,sBAAsBxzB,WAAWC,YAAYC,KAAKC,OAGlEd,IAAIoB,OAAOlB,OAAOoqB,KAAK6J,sBAAuBn0B,IAAIsqB,KAAKyC,YAMnDlpB,IAAK,KAOL4N,aAAc,KAOdE,YAAa,KAKbyiB,cAAe,MAKfC,UAAW,SAAS1J,GAChB,OAAQ2J,QAAW,MAAO/yB,QAAW,oBAWzCgzB,gBAAkB,SAAS5tB,EAAUgkB,EAAMhU,EAAUlS,GACjD,GAAI+vB,IAAe,GAAIh0B,YAAWC,OAAO2P,iBAAkB9O,KACvDqF,EAASnF,aAAemF,EAASjF,aACrC8yB,GAAazjB,YAAcjQ,KAAK2zB,aAAaD,EAAazjB,WACtDyjB,EAAazjB,WAAWxP,QAAQyP,OAAOC,KAAM0Z,GAC1B,kBAAZhU,IACPA,EAASjT,MAAMe,GAASkmB,GAAOA,KAcvC+J,eAAgB,SAAStvB,EAAOvB,GAC5B,MAAIuB,GAAMlD,KACC,GAAI1B,YAAWoR,MAAMC,IAAKzM,EAAMwH,MAAO/I,EAC1CrD,WAAWwN,KAAK5M,QAAQmP,QAASnL,EAAMmL,QAAQ,GAC3C1F,OAAQzF,EAAMlD,MAAOpB,KAAK6Q,aAC9BnR,WAAWwN,KAAK5M,QAAQmQ,SAAUnM,EAAMmM,SACpCojB,UAAWvvB,EAAMuvB,UAAWnjB,SAAUpM,EAAMoM,SAC5CojB,SAAUxvB,GACXtE,KAAK2Q,eAEL,MAafgjB,aAAc,SAASrvB,EAAOvB,EAAK8mB,GAC/B3qB,IAAI0E,KAAKU,EAAMyvB,aAAc,SAASrc,GAClC,GAAIwT,GAAIlrB,KAAKwwB,YAAYlK,KAAM5O,EAAG5L,OAAS4L,EAAGtW,KAE1CyO,SAAU,OACVvL,MAAOtE,KAAK4zB,eAAelc,EAAI3U,GAC/B8oB,KAAkC,IAA3BnU,EAAGqc,aAAatyB,QACxBypB,IACCrB,EAAK4B,YAAYP,GAEjBxT,EAAGqc,cACH/zB,KAAK2zB,aAAajc,EAAI3U,EAAKmoB,IAEhClrB,SCtHXd,IAAIC,UAAU,UAgDdC,OAAO40B,mBAAqB90B,IAAIoB,OAAOpB,IAAIkpB,OAAO6L,cAS9C3vB,MAAO,KAWP4vB,mBAAoB,KAOpBC,MAAO,EAQPC,sBAAuB,EAOvBC,YAAY,EAYZC,kBAAkB,EAUlBhzB,MAAO,KAUPizB,SAAS,EAKTz0B,YAAa,SAAS8G,GACdA,EAAOtC,QACPtE,KAAKsE,MAAQtE,KAAK0J,SAAS9C,EAAOtC,OAClCtE,KAAKoD,OACLpD,KAAKk0B,mBAAqBl0B,KAAK0J,SAAS9C,EAAOstB;AAExBjyB,SAAnB2E,EAAO2tB,UACPv0B,KAAKu0B,QAAU3tB,EAAO2tB,SAE1B3tB,EAAOtF,MAA0BW,SAAjB2E,EAAOtF,MACnBsF,EAAOtF,MAAQtB,KAAKw0B,gBAAgBx0B,KAAKsE,aACtCsC,GAAOtC,YACPsC,GAAOstB,oBAElB90B,OAAO40B,mBAAmBn0B,WAAWC,YAAYC,KAAKC,KAAM4G,IAKhExD,KAAM,WACEpD,KAAKsE,OAAStE,KAAKsE,MAAM2F,KACzBjK,KAAKsE,MAAM2F,IAAIzF,OAAOnB,IAClBmH,YAAaxK,KAAKsD,OAClBK,MAAO3D,QAOnB+H,OAAQ,WACA/H,KAAKsE,OAAStE,KAAKsE,MAAM2F,KAAOjK,KAAKsE,MAAM2F,IAAIzF,QAC/CxE,KAAKsE,MAAM2F,IAAIzF,OAAOwD,IAClBwC,YAAaxK,KAAKsD,OAClBK,MAAO3D,QAQnBsD,OAAQ,SAASiF,GACQ,YAAjBA,EAAI4C,UAA0B5C,EAAIjE,OAAStE,KAAKsE,OAC/CtE,KAAKy0B,iBACNz0B,KAAK00B,SAAS10B,KAAKw0B,gBAAgBx0B,KAAKsE,SAShDqF,SAAU,SAASrF,GACftE,KAAK+H,SACL/H,KAAKsE,MAAQtE,KAAK0J,SAASpF,GAC3BtE,KAAK00B,SAAS10B,KAAKw0B,gBAAgBlwB,IACnCtE,KAAKoD,QASToxB,gBAAiB,SAASlwB,GACtB,GAAIhD,EASJ,OAPIA,GADAgD,GAA2B,OAAlBA,EAAM6J,QACPwmB,SAASrwB,EAAM6J,SAAWnO,KAAKkmB,SAAWlmB,KAAKmmB,WAE/CnmB,KAAKkmB,SAEblmB,KAAKu0B,WAAY,IACjBjzB,EAAStB,KAAKkmB,SAAWlmB,KAAKmmB,SAAY7kB,GAEvCA,GAUXoI,SAAU,SAASpF,GACf,MAAIA,aAAiB5E,YAAWoR,MACrBxM,EACAA,YAAiBlF,QAAOC,KAAKoK,YAC7BnF,EAAMoF,WADV,QAQXuN,cAAe,WAEX7X,OAAO40B,mBAAmBn0B,WAAWoX,cAAclX,KAAKC,MAEpDA,KAAKs0B,kBAAoBt0B,KAAKsE,QACP,GAAtBtE,KAAKsE,MAAM6J,SACXnO,KAAKu0B,WAAY,GAASv0B,KAAKsB,OAAStB,KAAKmmB,UAC7CnmB,KAAKu0B,WAAY,GAAQv0B,KAAKsB,OAAStB,KAAKkmB,WAC7ClmB,KAAKsE,MAAM2X,eAAc,GAGzBjc,KAAKk0B,qBACHl0B,KAAKsE,OAA+B,GAAtBtE,KAAKsE,MAAM6J,SACzBnO,KAAKu0B,WAAY,GAASv0B,KAAKsB,OAAStB,KAAKkmB,UAC7ClmB,KAAKu0B,WAAY,GAAQv0B,KAAKsB,OAAStB,KAAKmmB,WAC9CnmB,KAAKk0B,mBAAmBjY,eAAc,GAGtCjc,KAAKq0B,cAAe,EACpBr0B,KAAKqD,GAAG,SAAUrD,KAAK40B,mBAAoB50B,MACvC60B,OAAQ70B,KAAKm0B,QAGjBn0B,KAAKqD,GAAG,iBAAkBrD,KAAK40B,mBAAoB50B,MAGnDA,KAAKs0B,oBAAqB,GAC1Bt0B,KAAKqD,GAAG,SAAUrD,KAAK80B,sBAAuB90B,MAC1C60B,OAAQ70B,KAAKo0B,wBAIjBp0B,KAAKk0B,oBACLl0B,KAAKqD,GAAG,SAAUrD,KAAK+0B,mCAAoC/0B,MACvD60B,OAAQ70B,KAAKo0B,wBAGrBp0B,KAAKqD,GAAG,gBAAiBrD,KAAK+H,OAAQ/H,OAS1C40B,mBAAoB,SAASxM,EAAQ9mB,GAC7BtB,KAAKsE,QACLhD,GAAiBtB,KAAKkmB,SAAWlmB,KAAKmmB,SAClCnmB,KAAKu0B,WAAY,IACjBjzB,EAAQ,EAAIA,GAEhBtB,KAAKy0B,iBAAkB,EACvBz0B,KAAKsE,MAAM4X,WAAW5a,SACftB,MAAKy0B,kBAUpBK,sBAAuB,SAAS1M,EAAQ9mB,GACpC,GAAI0zB,GAAoBh1B,KAAKsE,MAAMkY,eAC9Bxc,MAAKu0B,WAAY,GAASjzB,GAAStB,KAAKmmB,UACxCnmB,KAAKu0B,WAAY,GAAQjzB,GAAStB,KAAKkmB,UACxC8O,KAAsB,EACtBh1B,KAAKsE,MAAM2X,eAAc,IACjBjc,KAAKu0B,WAAY,GAASjzB,EAAQtB,KAAKmmB,UAC9CnmB,KAAKu0B,WAAY,GAAQjzB,EAAQtB,KAAKkmB,UACX,GAArB8O,IACPh1B,KAAKsE,MAAM2X,eAAc,IAUjC8Y,mCAAoC,SAAS3M,EAAQ9mB,GACjD,GAAI0zB,GAAoBh1B,KAAKk0B,mBAAmB1X,eAC3Cxc,MAAKu0B,WAAY,GAASjzB,GAAStB,KAAKkmB,UACxClmB,KAAKu0B,WAAY,GAAQjzB,GAAStB,KAAKmmB,UACxC6O,KAAsB,EACtBh1B,KAAKk0B,mBAAmBjY,eAAc,IAC9Bjc,KAAKu0B,WAAY,GAASjzB,EAAQtB,KAAKkmB,UAC9ClmB,KAAKu0B,WAAY,GAAQjzB,EAAQtB,KAAKmmB,UACX,GAArB6O,IACPh1B,KAAKk0B,mBAAmBjY,eAAc,IAS9CyB,cAAe,SAASuX,GACpBj1B,KAAKqD,IACDgS,OAAQ,WACJ,GAAIqC,GAAK1X,KAAKk1B,OACdxd,GAAGyd,UACCpd,SAAU,WACVqd,OAAQH,EAAMhrB,IAAIorB,aAAa9gB,UAEnCmD,EAAGrU,IACCiyB,UAAWt1B,KAAKu1B,gBAChBC,MAAOx1B,KAAKu1B,mBAGpB5xB,MAAO3D,QASf4d,mBAAoB,SAASqX,GACzB,GAAIvd,GAAK1X,KAAKk1B,OACdxd,GAAG1P,IACCstB,UAAWt1B,KAAKu1B,gBAChBC,MAAOx1B,KAAKu1B,gBACZ5xB,MAAO3D,OAEXA,KAAK+H,UAMTwtB,gBAAiB,SAASpvB,GACtBA,EAAEsvB,eAKVv2B,IAAI0b,IAAI,mBAAoBxb,OAAO40B,oBClXnC90B,IAAIC,UAAU,UAOdC,OAAOs2B,YAAcx2B,IAAIoB,OAAOpB,IAAIy2B,WAKhCtF,YAAa,KAObuF,WAAW,EAOXC,YAAa,KAMbC,SAAU,KAKVlK,WAAY,KAIZ3U,cAAe,WACX7X,OAAOs2B,YAAY71B,WAAWoX,cAAclX,KAAKC,MACjDA,KAAK+1B,UACL/1B,KAAKI,KACD8kB,MAAO,QACP8J,KAAMhvB,KAAKg2B,cAAch2B,KAAKqwB,aAC9B4F,IAAK,iCACAj2B,KAAK81B,SAAW,IAAM91B,KAAK81B,SAAW,MAE3C91B,KAAKqwB,aAAerwB,KAAKqwB,YAAYrsB,QACrChE,KAAK4rB,WAAa5rB,KAAKqwB,YAAYrsB,MACnChE,KAAK4rB,WAAWvoB,GAAG,SAAUrD,KAAKktB,cAAeltB,MACjDA,KAAK4rB,WAAWvoB,GAAG,MAAOrD,KAAKgtB,WAAYhtB,MAC3CA,KAAK4rB,WAAWvoB,GAAG,SAAUrD,KAAKitB,cAAejtB,QASzDk2B,SAAU,WACN,GAAI7nB,GAAQrO,KAAK8B,MAAMyC,IAAI,EAC3B,OAAO8J,GAAM+G,SAAW/G,EAAMqJ,GAAGmF,IAAIsZ,UAAY9nB,EAAM2gB,MAa3D/B,cAAe,SAASjpB,EAAOH,EAAQM,KAcvC6oB,WAAY,SAAShpB,EAAOH,EAAQM,KAepC+oB,cAAe,SAASlpB,EAAOH,EAAQI,GAInC,GAAIJ,IAAW7D,KAAKqwB,aAAerwB,KAAK8B,MAAM+vB,WAAa,EAAG,CAC1D,GAAIvtB,GAAQT,EAAO6F,UACnB1J,MAAKqgB,WAAW/b,EAAMkY,iBAClBlY,EAAM2lB,oBAAsB3lB,EAAMkrB,yBACjC3rB,EAAOU,IAAI,iBAChBvE,KAAKsD,WAObA,OAAQ,WACJ,GAAIwI,GAAQ9L,KAAKg2B,cAAch2B,KAAKqwB,aAChC5S,EAAOzd,KAAK8B,MAAMyC,IAAI,EACtBkZ,aAAgBve,KAAI8jB,KAAKoT,OAASp2B,KAAKk2B,aAAepqB,GAEtD2R,EAAK0P,QAAQrhB,GAAO,IAW5BkqB,cAAe,SAASnyB,GACpB,GAAIiI,GAAQ9L,KAAK61B,aAAe,EAQhC,OAPI71B,MAAK41B,YAAc9pB,GACfjI,IAAWA,EAAOU,IAAI,eACtBuH,EAAQjI,EAAOU,IAAI,UACfV,EAAOU,IAAI,SACXV,EAAO6F,WAAWtI,MAAQ,IAG/B0K,GAKX6O,cAAe,WACP3a,KAAK4rB,aACL5rB,KAAK4rB,WAAW5jB,GAAG,SAAUhI,KAAKktB,cAAeltB,MACjDA,KAAK4rB,WAAW5jB,GAAG,SAAUhI,KAAKitB,cAAejtB,MACjDA,KAAK4rB,WAAW5jB,GAAG,MAAOhI,KAAKgtB,WAAYhtB,OAE/CZ,OAAOs2B,YAAY71B,WAAW8a,cAAc/X,MAAM5C,KAAM0C,YAK5D2zB,UAAW,WACPr2B,KAAKqwB,YAAc,KACnBrwB,KAAK4rB,WAAa,KAClBxsB,OAAOs2B,YAAY71B,WAAWw2B,UAAUzzB,MAAM5C,KAAM0C,cAkB5DtD,OAAOs2B,YAAYY,SAAW,SAASjG,EAAakG,GAChD,GACsBC,GAAOrzB,EADzB8kB,GAASsO,OAAsBtH,SAC/BwH,IACJ,KAAKtzB,IAAQ/D,QAAOs2B,YAAYzN,MAC5BuO,EAAQp3B,OAAOs2B,YAAYzN,MAAM9kB,GAAMuzB,SAASrG,GAC7CmG,EAAQ,EAEoB,IAAvBvO,EAAM5lB,QAAQc,IACdszB,EAAY3yB,MACRX,KAAMA,EACNqzB,MAAOA,IAKfvO,EAAMpgB,OAAO1E,EAGrBszB,GAAYloB,KAAK,SAASqb,EAAG+M,GACzB,MAAO/M,GAAE4M,MAAQG,EAAEH,MAAQ,EAAK5M,EAAE4M,OAASG,EAAEH,MAAQ,EAAI,IAG7D,KAAK,GADD50B,GAAM60B,EAAYh1B,OAAQm1B,EAAY,GAAI71B,OAAMa,GAC3CD,EAAE,EAAKC,EAAFD,IAASA,EACnBi1B,EAAUj1B,GAAK80B,EAAY90B,GAAGwB,IAGlC,OAAO8kB,GAAMgH,OAAO2H,IAWxBx3B,OAAOs2B,YAAYgB,SAAW,SAASrG,KAgBvCjxB,OAAOs2B,YAAYzN,SC9OnB/oB,IAAIC,UAAU,UAQdC,OAAOy3B,YAAc33B,IAAIoB,OAAOpB,IAAImX,cAKhCtT,IAAK,KAML+zB,cAAe,KAKfC,OAAQ,KAKR9f,cAAe,WACX7X,OAAOy3B,YAAYh3B,WAAWoX,cAAclX,KAAKC,MACvB,OAAvBA,KAAK82B,gBACJ92B,KAAK82B,cAAgB53B,IAAIiwB,iBAE7BnvB,KAAK+1B,QACD7H,IAAK,MACL8I,QAAUh3B,KAAK+2B,OAAS/2B,KAAK+2B,OAAS,GACtCE,IAAKj3B,KAAK82B,gBASlBI,OAAQ,SAASn0B,GACb/C,KAAK+C,IAAMA,CACX,IAAI2U,GAAK1X,KAAKk1B,OACVxd,KACAA,EAAG1P,GAAG,QAAShI,KAAKm3B,iBAAkBn3B,MACtC0X,EAAGrU,GAAG,QAASrD,KAAKm3B,iBAAkBn3B,MAAOuV,QAAQ,IACrDmC,EAAGmF,IAAIoa,IAAMl0B,IAQrB8U,SAAU,SAASC,EAAIC,GACnB3Y,OAAOy3B,YAAYh3B,WAAWgY,SAAS9X,KAAKC,KAAM8X,EAAIC,GACnD/X,KAAK+C,KACJ/C,KAAKk3B,OAAOl3B,KAAK+C,MAOzBszB,UAAW,WACP,GAAI3e,GAAK1X,KAAKk1B,OACXxd,IACCA,EAAG1P,GAAG,QAAShI,KAAKm3B,iBAAkBn3B,MAE1CZ,OAAOy3B,YAAYh3B,WAAWw2B,UAAUzzB,MAAM5C,KAAM0C,YAMxDy0B,iBAAkB,WACdn3B,KAAKk1B,QAAQrY,IAAIoa,IAAMj3B,KAAK82B,iBAMpC53B,IAAI0b,IAAI,iBAAkBxb,OAAOy3B,aChFjC33B,IAAIC,UAAU,UAQdC,OAAOg4B,UAAYl4B,IAAIoB,OAAOlB,OAAOs2B,aAKjCze,cAAe,WACX7X,OAAOg4B,UAAUv3B,WAAWoX,cAAclX,KAAKC,MAC/CA,KAAKI,IAAI,GAAIhB,QAAOy3B,aAChB9zB,IAAK/C,KAAKqwB,YAAY9rB,IAAI,iBAOlCjB,OAAQ,WACJlE,OAAOg4B,UAAUv3B,WAAWyD,OAAOV,MAAM5C,KAAM0C,WAC/C1C,KAAK8B,MAAMyC,IAAI,GAAG2yB,OAAOl3B,KAAKqwB,YAAY9rB,IAAI,iBAQtDnF,OAAOg4B,UAAUV,SAAW,SAASrG,GACjC,MAAuC,OAAhCA,EAAY9rB,IAAI,aAAuB,EAAI,IAItDnF,OAAOs2B,YAAYzN,MAAoB,aAAI7oB,OAAOg4B,UAGlDl4B,IAAI0b,IAAI,eAAgBxb,OAAOg4B,WCxC/Bl4B,IAAIC,UAAU,UAUdC,OAAOi4B,UAAYn4B,IAAIoB,OAAOlB,OAAOs2B,aAWjC4B,qBAAqB,EAOrBC,mBAAmB,EAuBnBC,WAAY,KAMZvgB,cAAe,WACX7X,OAAOi4B,UAAUx3B,WAAWoX,cAAclX,KAAKC,KAC/C,IAAIsE,GAAQtE,KAAKqwB,YAAY3mB,UAC7B1J,MAAKy3B,QAAUnzB,EAAM2F,IACrB3F,EAAME,OAAO6H,SAAS,UAAWrM,KAAMA,KAAK03B,gBAC5C13B,KAAKsD,UAMTo0B,eAAgB,SAASvxB,IAChBA,EAAEwxB,eAAgB,GAAQ33B,KAAKu3B,qBAAsB,GACFv3B,KAAKy3B,gBAClDz3B,MAAKy3B,OACZz3B,KAAKsD,WAYbs0B,aAAc,SAASC,EAAWC,GAC9B,GACI/0B,GADAmI,EAAMlL,KAAKqwB,YAEX0H,EAAS7sB,GAAOA,EAAI3G,IAAI,UACxBD,EAAQ4G,EAAIxB,UAChBouB,GAAaA,IAAexzB,EAAMgM,OAAO0nB,QAAQ9mB,KAAK,KAAKuJ,MAAM,IAEjE,IAAIwd,GAAa3zB,EAAMgM,OAAO4nB,SACR5zB,EAAMgM,OAAO4nB,QAAQhnB,KAAK,KAAKuJ,MAAM,KACvD0d,EAAML,EAAWz1B,QAAQw1B,GACzBO,EAAYH,GAAcA,EAAWE,EA6BzC,IA1BGJ,GAAUA,EAAOt2B,OAAS,IACtB22B,EACCl5B,IAAI0E,KAAKm0B,EAAQ,SAAStU,GAEtB,MADA1gB,GAAO0gB,EAAEriB,MAAQg3B,GAAa3U,EAAE4U,QAAW5U,EAAE4U,OAAOloB,MAC5CpN,IAEN/C,KAAKs3B,uBAAwB,GAASW,GACrC3zB,EAAMgM,OAAOgoB,KAAQh0B,EAAMgM,OAAOioB,WACzCx1B,EAAMg1B,EAAO,GAAGM,QAAUN,EAAO,GAAGM,OAAOloB,OAG/CpN,IACAA,EAAMuB,EAAMk0B,sBACRC,QAAS,mBACTC,MAAO,KACPC,OAAQ,KACRC,WAAY,6BACZC,MAAOhB,EACPG,OAAQ,KACRc,MAAsB,KAAdV,EAAoBA,EAAW,KACvCF,OAAQ,KACRa,IAAK,KACLC,OAAQ,KACRC,KAAM,QAGX30B,EAAMJ,QAAQiK,SAAqC,IAA1B7J,EAAMJ,QAAQiK,QAAc,CACpD,GAAI+qB,GAAiB,aAAarB,EAAU,IACxCsB,EAAaD,EAAmB,YAAmC,IAAtB50B,EAAMJ,QAAQiK,OAC/DpL,GAAI7D,IAAIk6B,UAAUr2B,EAAKo2B,GAE3B,GAA6D,IAAzDp2B,EAAIsX,cAAchY,QAAQ,8BACkB,IAAxCU,EAAIsX,cAAchY,QAAQ,aAC1BU,EAAM7D,IAAIk6B,UAAUr2B,EAAK,qBAIzB/C,KAAKu3B,qBAAsB,GAAM,CACjC,GAAItqB,GAAQ3I,EAAM2F,IAAIsf,UACtBxmB,GAAM7D,IAAIk6B,UAAUr2B,EAAK,SAAWkK,GAG5C,GAAIqD,GAASpR,IAAI0D,SAAU5C,KAAKw3B,WAOhC,OANIlzB,GAAMgM,OAAO+oB,UAEb/oB,EAAO+oB,QAAU/0B,EAAMgM,OAAO+oB,SAElCt2B,EAAM7D,IAAIk6B,UAAUr2B,EAAK7D,IAAIo6B,UAAUhpB,KAS3ChN,OAAQ,WACJ,GAAIgB,GAAQtE,KAAKqwB,YAAY3mB,UAI7B,IAAKpF,GAASA,EAAM2F,IAApB,CAGA7K,OAAOi4B,UAAUx3B,WAAWyD,OAAOV,MAAM5C,KAAM0C,UAE/C,IAAIo1B,GAAYD,EAAWl2B,EAAGC,CAE9Bk2B,IAAcxzB,EAAMgM,OAAO0nB,QAAQ9mB,KAAK,KAAKuJ,MAAM,IAEnD,IAAI8e,MACAC,EAAUx5B,KAAK8B,MAAMyC,IAAI,EAa7B,KAZAvE,KAAK8B,MAAM8B,KAAK,SAAS0Q,GAErB,GADA3S,EAAIm2B,EAAWz1B,QAAQiS,EAAImlB,QACpB,EAAJ93B,GAAS2S,GAAOklB,EACfD,EAAYz1B,KAAKwQ,OACd,IAAGA,IAAQklB,EAAQ,CACtB3B,EAAYC,EAAWn2B,EACvB,IAAI+3B,GAAS15B,KAAK43B,aAAaC,EAAWC,EACtCp4B,YAAWwN,KAAKysB,gBAAgBD,EAAQplB,EAAIvR,MAC5CuR,EAAI4iB,OAAOwC,KAGpB15B,MACC2B,EAAI,EAAGC,EAAM23B,EAAY93B,OAAUG,EAAFD,EAAOA,IAAK,CAC7C,GAAI2S,GAAMilB,EAAY53B,EAGtB3B,MAAK6H,OAAOyM,GACZA,EAAI9K,UAGR,IAAI7H,EAAI,EAAGC,EAAMk2B,EAAWr2B,OAAUG,EAAFD,EAAOA,IACvCk2B,EAAYC,EAAWn2B,GACnB3B,KAAK8B,OAAU9B,KAAK45B,aAAa/B,IACjC73B,KAAKI,KACD8kB,MAAO,iBACPniB,IAAK/C,KAAK43B,aAAaC,EAAWC,GAClC2B,OAAQ5B,GAIpB73B,MAAK65B,aAKTlf,cAAe,WACX,GAAI3a,KAAKu3B,qBAAsB,EAAM,CACjC,GAAIjzB,GAAQtE,KAAKqwB,YAAY3mB,UAC7BpF,IAASA,EAAME,QACXF,EAAME,OAAOiI,WAAW,UAAWzM,KAAMA,KAAK03B,gBAEtDt4B,OAAOi4B,UAAUx3B,WAAW8a,cAAc/X,MAAM5C,KAAM0C,cAQ9DtD,OAAOi4B,UAAUX,SAAW,SAASrG,GACjC,MAAOA,GAAY3mB,oBAAsBhK,YAAWoR,MAAMC,IAAM,EAAI,GAIxE3R,OAAOs2B,YAAYzN,MAAoB,aAAI7oB,OAAOi4B,UAGlDn4B,IAAI0b,IAAI,eAAgBxb,OAAOi4B,WChO/Bn4B,IAAIC,UAAU,UAOdC,OAAO06B,aAAe56B,IAAIoB,OAAOlB,OAAOs2B,aAQpCrF,YAAa,KAOb/rB,MAAO,KAQPwK,MAAO,KAaP0H,WAAY,KAQZujB,eAAgB,cAShBC,iBAAiB,EASjBC,gBAAgB,EAShBC,eAAe,EAMfC,UAAU,EAMVC,YAAY,EAMZl6B,QAAS,KAMTm6B,aAAc,KASdC,wBAAyB,KAKzBrjB,cAAe,WAgBX,GAfA7X,OAAO06B,aAAaj6B,WAAWoX,cAAclX,KAAKC,MAC9CA,KAAKqwB,cACLrwB,KAAKsE,MAAQtE,KAAKqwB,YAAY3mB,WAC9B1J,KAAKsE,MAAMi2B,aAAev6B,KACtBA,KAAKsE,MAAM2F,MACXjK,KAAKiK,IAAMjK,KAAKsE,MAAM2F,IACtBjK,KAAKs6B,wBAA0Bt6B,KAAKsE,MAAM2F,IAAIsf,WAC9CvpB,KAAKsE,MAAM2F,IAAIzF,OAAOnB,IAClBm3B,QAAWx6B,KAAKy6B,UAChB92B,MAAO3D,UAMdA,KAAKwW,WACN,GAAIxW,KAAKE,QACLF,KAAKwW,WAAaxW,KAAK06B,sBAAsB16B,KAAKE,aAC/C,IAAIF,KAAKsE,MACZ,GAAItE,KAAKsE,MAAMwB,SAASrE,OAAS,EAAG,CAChC,GAAIvB,GAAUF,KAAKsE,MAAMwB,SAAS,GAAG8D,OACrC1J,GAAQY,cACRd,KAAKE,QAAUA,EACfF,KAAKwW,WAAaxW,KAAK06B,sBAAsB16B,KAAKE,aAElDF,MAAKsE,MAAME,OAAOnB,IACdgE,cAAerH,KAAKsH,gBACpB3D,MAAO3D,MAOnBA,MAAKsE,OAAStE,KAAKE,UAAYF,KAAK8O,OACpC9O,KAAK26B,WAGT36B,KAAK46B,eAAiB,GAAI17B,KAAIy2B,WAC1BI,YAGJ/1B,KAAKI,IAAIJ,KAAK46B,gBAEd56B,KAAKmK,UASD,aAUA,cAWA,YAWA,eAYA,iBAUA,aAGJnK,KAAKsD,UAMTm3B,UAAW,WACPz6B,KAAK66B,2BACD76B,KAAKsE,MAAM2F,IAAIsf,aASvBmR,sBAAuB,SAASx6B,GAC5B,IAAIA,EAAQ0Y,SACR,OAAO,CAEX,IAAIiN,GAAQ3lB,EAAQ0Y,SAAS4B,WAAWqL,MAAM,qBAC9C,OAAQA,IAASA,EAAM,IAAO,SAOlCve,gBAAiB,WACbtH,KAAKsE,MAAME,OAAOwD,IACdX,cAAerH,KAAKsH,gBACpB3D,MAAO3D,MAEX,IAAIE,GAAUF,KAAKsE,MAAMwB,SAAS,GAAG8D,OACrC1J,GAAQY,cACRd,KAAKE,QAAUA,EACfF,KAAKwW,WAAaxW,KAAK06B,sBAAsB16B,KAAKE,SAC7CF,KAAK8O,OACN9O,KAAK26B,WAET36B,KAAKsD,UAQTq3B,SAAU,WACN,GAAI36B,KAAKE,QAAT,CACA,GAAIqW,GAAQvW,KAAKsE,MAAMw2B,UAAY96B,KAAKsE,MAAMw2B,SAAS/C,OAAO,UACzDxhB,KACDA,EAAQ,GAAI7W,YAAWq7B,OAEA,IAAvBxkB,EAAMzH,MAAMrN,OACZzB,KAAK8O,OACD,GAAIpP,YAAWs7B,MACXlvB,MAAOyK,EAAMzK,MACb0C,WAAY+H,EAAM0kB,iBAAiBj7B,KAAKE,YAIhDF,KAAK8O,MAAQyH,EAAMzH,QAU3B+rB,2BAA4B,SAAS5tB,GAC7BA,IAAUjN,KAAKs6B,0BACft6B,KAAKs6B,wBAA0BrtB,EAC/BjN,KAAKsD,WAUb43B,aAAc,SAASC,GACnB,MAAOn7B,MAAK46B,eAAe94B,MAAMyC,IAAIvE,KAAK8O,MAAMzM,QAAQ84B,KAW5DC,aAAc,SAASD,EAAME,GACzBr7B,KAAK46B,eAAex6B,IAAIJ,KAAKs7B,gBAAgBH,IACxCE,GACDr7B,KAAK65B,YAab0B,gBAAiB,SAASJ,EAAME,GAC5B,GAAIG,GAAYx7B,KAAKk7B,aAAaC,EAC9BK,KACAx7B,KAAK46B,eAAe/yB,OAAO2zB,GACtBH,GACDr7B,KAAK65B,aAOjB4B,gBAAiB,SAASN,GACtB,GAAIO,GAAeP,GAAQn7B,KAAKq6B,YAIhC,IAHIr6B,KAAKq6B,cACLr6B,KAAK27B,WAELD,EAAc,CACd,GAAIF,GAAYx7B,KAAKk7B,aAAaC,EAClCK,GAAU5e,KAAKoE,SAAS,wBACxBhhB,KAAKq6B,aAAec,EACpBn7B,KAAKgL,UAAU,eAAgBhL,KAAMm7B,KAM7CQ,SAAU,WACN37B,KAAK46B,eAAe94B,MAAM8B,KAAK,SAAS6Z,EAAM9b,GACtC3B,KAAK8O,MAAMnN,IAAM3B,KAAKq6B,eACtB5c,EAAKb,KAAKuE,YAAY,wBACtBnhB,KAAKq6B,aAAe,KACpBr6B,KAAKgL,UAAU,iBAAkBhL,KAAMA,KAAK8O,MAAMnN,MAEvD3B,OAKPs7B,gBAAiB,SAASH,GACtB,GAAIS,IAAU,CACsB,OAAhC57B,KAAKs6B,0BACDa,EAAKhsB,sBACLysB,EAAUA,GAAY57B,KAAKs6B,yBAA2Ba,EAAKhsB,qBAE3DgsB,EAAK/rB,sBACLwsB,EAAUA,GAAY57B,KAAKs6B,wBAA0Ba,EAAK/rB,qBAIlE,IAAI4H,GAAWhX,KAAK67B,mBAAmBV,GACnCrvB,EAAQ9L,KAAK87B,gBAAgBX,EAKjC,OAJInkB,KACAlL,EAAMkjB,KAAO,KAIb9J,MAAO,QACP6W,OAAQ,SACRC,QAAQ,EACRrZ,QAASiZ,EACTK,UAAWj8B,KAAKk6B,eAAiBgC,OAAQ,WAAaj6B,OACtDk6B,UACIH,QAAQ,GAEZl6B,OACIkV,EACAlL,GAEJ2b,WACIpS,OAAQ,SAAS+mB,GACbp8B,KAAKk6B,eAAiBkC,EAAKlH,QAAQ7xB,IAC/BmyB,MAAO,SAAS4G,GACZp8B,KAAKy7B,gBAAgBN,IAEzBx3B,MAAO3D,OAEU,GAAjBA,KAAKm6B,UACLn6B,KAAKq8B,MAAMD,IAGnBz4B,MAAO3D,QAOnBs8B,aAAc,SAASC,EAAMC,GACzB,GAAIC,KACJ,KAAK,GAAIC,KAAYH,GACjBE,EAAKC,GAAYH,EAAKG,EAE1B,KAAK,GAAIA,KAAYF,GACKv6B,SAAnBu6B,EAAKE,KACJD,EAAKC,GAAYF,EAAKE,GAG9B,OAAOD,IASXZ,mBAAoB,SAASV,GACzB,GACIh4B,GAAMw5B,EADN1U,GAASjoB,KAAKwW,WAAY,QAAS,OAAQ,WAE3CxH,EAAcmsB,EAAKnsB,WACvB,IAAKA,EA2BE,CACH,GAAI4tB,EACJC,GAAO,IAAK,GAAIl7B,GAAE,EAAGinB,EAAGX,EAAMxmB,OAAUmnB,EAAFjnB,IAAQA,EAG1C,GAFAwB,EAAO8kB,EAAMtmB,GACbi7B,EAAOl9B,WAAWiO,WAAWxK,GAEzB,IAAK,GAAItB,GAAE,EAAGi7B,EAAG9tB,EAAYvN,OAAUq7B,EAAFj7B,IAAQA,EACzC,GAAImN,EAAYnN,YAAc+6B,GAAM,CAChCD,GAAW,CACX,MAAME,QApCR,CAGd,IAAK,GADDruB,GAAa2sB,EAAK3sB,WACb7M,EAAE,EAAGC,EAAIqmB,EAAMxmB,OAAUG,EAAFD,IAASA,EAErC,GADAwB,EAAO8kB,EAAMtmB,GACT6M,EAAWrL,GAAO,CAClBqL,EAAaA,EAAWrL,GACxBw5B,GAAW,CACX,OAGR,IAAI38B,KAAKsE,MAAMw2B,SAAS/C,OAApB/3B,WAAmC+8B,sBAAsB,CACzD,GAAIC,GAAeh9B,KAAKsE,MAAMw2B,SAAS/C,OAApB/3B,WAAmCg9B,YACtDxuB,GAAaxO,KAAKs8B,aAAaU,EAAcxuB,GAGjD,GADAQ,GAAeR,GACe,SAA3BQ,EAAY,GAAGiuB,QACd,OAAO,CACJ,IAAIjuB,EAAY,GAAGkuB,gBAAgB,CACtC,GAAIC,GAAWnuB,EAAY,GAAGouB,cAAc,EACxCD,KACAnuB,EAAY,GAAGouB,cAAgBpuB,EAAY,GAAGouB,cAAcD,EAC5DnuB,EAAY,GAAGquB,aAAeruB,EAAY,GAAGquB,aAAaF,EAC1DnuB,EAAY,GAAGsuB,eAAiBr7B,OAChC+M,EAAY,GAAGuuB,eAAiBt7B,SAkB5C,OACIijB,MAAO,cACP1O,WAAYmmB,EAAWx5B,EAAOnD,KAAKwW,WACnCxH,YAAaA,EACbuH,MAAOvW,KAAKg6B,iBAAmBkC,OAAQ,WAAaj6B,OACpDwlB,WACI+N,MAAO,WACCx1B,KAAKg6B,kBACLh6B,KAAKgL,UAAU,cAAehL,KAAMm7B,GACpCn7B,KAAKgL,UAAU,YAAahL,KAAMm7B,KAG1Cx3B,MAAO3D,QAWnB87B,gBAAiB,SAASX,GACtB,OACIlF,IAAK,cACL1f,MAAO,0BACP0lB,UAAW/8B,IAAI2K,SAAS2zB,WAAY,eAChCx9B,KAAKi6B,gBAAkBiC,OAAQ,WAAaj6B,QAChD+sB,KAAMhvB,KAAKy9B,aAAatC,GACxB1T,WACIpS,OAAQ,SAAS+mB,GACbp8B,KAAKi6B,gBAAkBmC,EAAKlH,QAAQ7xB,IAChCmyB,MAAO,WACHx1B,KAAKgL,UAAU,aAAchL,KAAMm7B,GACnCn7B,KAAKgL,UAAU,YAAahL,KAAMm7B,IAEtCx3B,MAAO3D,QAGf2D,MAAO3D,QAUnBq8B,MAAO,SAAStO,GACZ,GAAIjW,GAAKiW,EAAU7Q,QACf+X,EAAQj1B,IACZ,IAAId,KAAIuiB,GAAGic,WAAW3P,EAAUmH,SAC5ByI,QAAS7lB,EAAGvR,GACZq3B,UAAW,SAASz3B,EAAG03B,GACnB,GAAIC,GAAS5+B,IAAI6+B,OAAOF,EAGxB,OAFAC,GAAO3c,YAAY,4BACnB2c,EAAO3c,YAAY,4BACZjiB,IAAIuiB,GAAGuc,SAAS79B,UAAUy9B,UAAUh7B,MAAM5C,KAAM0C,YAE3Du7B,YAAa,SAAS93B,EAAG03B,GACrB,GACI5H,GADA6H,EAAS5+B,IAAI6+B,OAAOF,GAEpBK,EAAYpmB,EAAGhW,MAAMO,QAAQ0rB,GAC7BoQ,EAAYrmB,EAAGhW,MAAMO,QAAQy7B,EAOjC,OANII,GAAYC,EACZlI,EAAM,2BACakI,EAAZD,IACPjI,EAAM,4BAEVA,GAAO6H,EAAO9c,SAASiV,GAChB/2B,IAAIuiB,GAAGuc,SAAS79B,UAAU89B,YAAYr7B,MAAM5C,KAAM0C,YAE7D07B,WAAY,SAASj4B,EAAG03B,GAGpB,MAFA5I,GAAMoJ,SAASvmB,EAAGhW,MAAMO,QAAQ0rB,GAC5BjW,EAAGhW,MAAMO,QAAQnD,IAAI6+B,OAAOF,KACzB3+B,IAAIuiB,GAAGuc,SAAS79B,UAAUi+B,WAAWx7B,MAAM5C,KAAM0C,YAE5D47B,YAAa,SAASn4B,GAClB,GAAIo4B,GAAWp4B,EAAEukB,UAAU,kBAC3B,IAAG6T,EAAU,CACT,GAAIC,GAAID,EAASjT,WAAU,EAE3B,OADAkT,GAAEj4B,GAAKrH,IAAIqH,MAEPg4B,SAAUA,EACVE,SAAUv/B,IAAIuhB,IAAI8d,GAAUG,QAC5BC,KAAMH,OAKtB,GAAIt/B,KAAIuiB,GAAGmd,WAAW7Q,EAAUmH,SAC5ByI,QAAS7lB,EAAGvR,GACZs4B,WAAY,WACR,OAAO,MAQnBv7B,OAAQ,WAEJ,GADAlE,OAAO06B,aAAaj6B,WAAWyD,OAAOV,MAAM5C,KAAM0C,WAC9C1C,KAAKwW,YAAcxW,KAAK8O,MAAO,CAC/B,GAAI9O,KAAK46B,eAAe94B,MAEpB,IAAK,GADDs6B,GACKz6B,EAAE3B,KAAK46B,eAAe94B,MAAML,OAAO,EAAGE,GAAG,IAAKA,EACnDy6B,EAAOp8B,KAAK46B,eAAehB,aAAaj4B,GACxC3B,KAAK46B,eAAe/yB,OAAOu0B,GAAM,EAGzC,KAAK,GAAIz6B,GAAE,EAAGinB,EAAG5oB,KAAK8O,MAAMrN,OAAUmnB,EAAFjnB,IAAQA,EACxC3B,KAAK8O,MAAMnN,GAAG6M,WAAWH,MAAQpM,OACjCjC,KAAKo7B,aAAap7B,KAAK8O,MAAMnN,IAAI,EAErC3B,MAAK65B,WAED75B,KAAKq6B,cACLr6B,KAAKk7B,aAAal7B,KAAKq6B,cAAczd,KAAKoE,SAAS,0BAU/D8d,gBAAiB,SAAS3D,GACtB,GAAIK,GAAYx7B,KAAKk7B,aAAaC,EAClC,IAAIK,EAAW,CACXA,EAAUuD,WACV,IAAI/nB,GAAWhX,KAAK67B,mBAAmBV,GACnCrvB,EAAQ9L,KAAK87B,gBAAgBX,EAC7BnkB,KACAlL,EAAMkjB,KAAO,IAEjBwM,EAAUp7B,IAAI4W,GACdwkB,EAAUp7B,IAAI0L,GACd0vB,EAAU3B,aAMlBwE,SAAU,SAASH,EAAWC,GAC1B,GAAIa,GAAUh/B,KAAK8O,MAAMovB,EACzBl+B,MAAK8O,MAAMmwB,OAAOf,EAAW,GAC7Bl+B,KAAK8O,MAAMmwB,OAAOd,EAAW,EAAGa,GAChCh/B,KAAKsD,SACLtD,KAAKgL,UAAU,YAAahL,KAAMg/B,IAQtCvB,aAAc,SAAStC,GACnB,GAAIrvB,GAAQqvB,EAAKrvB,OAASqvB,EAAK/5B,MAAQ,EAIvC,QAHK0K,GAAS9L,KAAK+5B,iBACfjuB,EAAQ9L,KAAK+5B,gBAAkB/5B,KAAK8O,MAAMzM,QAAQ84B,GAAQ,IAEvDrvB,GAMX6O,cAAe,WACP3a,KAAKsE,QACDtE,KAAKsE,MAAME,QACXxE,KAAKsE,MAAME,OAAOwD,IACdX,cAAerH,KAAKsH,gBACpB3D,MAAO3D,OAGXA,KAAKsE,MAAM2F,KAAOjK,KAAKsE,MAAM2F,IAAIzF,QACjCxE,KAAKsE,MAAM2F,IAAIzF,OAAOwD,IAClBwyB,QAAWx6B,KAAKy6B,UAChB92B,MAAO3D,cAIZA,MAAKsE,YACLtE,MAAKiK,UACLjK,MAAK8O,MACZ1P,OAAO06B,aAAaj6B,WAAW8a,cAAc/X,MAAM5C,KAAM0C,YAY7DuqB,cAAe,SAASjpB,EAAOH,EAAQM,GAC/BN,EAAO6F,aAAe1J,KAAKsE,OACvBtE,KAAKiK,KAAOjK,KAAKiK,IAAIzF,QACrBxE,KAAKiK,IAAIzF,OAAOwD,IACZwyB,QAAWx6B,KAAKy6B,UAChB92B,MAAO3D,QAgBvBgtB,WAAY,SAAShpB,EAAOtC,EAASyC,GACjC,IAAK,GAAIxC,GAAE,EAAGC,EAAIF,EAAQD,OAAUG,EAAFD,EAAOA,IAAK,CAC1C,GAAIkC,GAASnC,EAAQC,EACjBkC,GAAO6F,aAAe1J,KAAKsE,OACvBtE,KAAKsE,MAAM2F,KAAOjK,KAAKsE,MAAM2F,IAAIzF,QACjCxE,KAAKsE,MAAM2F,IAAIzF,OAAOnB,IAClBm3B,QAAWx6B,KAAKy6B,UAChB92B,MAAO3D,WAY/BZ,OAAO06B,aAAapD,SAAW,SAASrG,GACpC,MAAOA,GAAY3mB,oBAAsBhK,YAAWoR,MAAMuB,OAAS,EAAI,GAI3EjT,OAAOs2B,YAAYzN,MAAuB,gBAAI7oB,OAAO06B,aAGrD56B,IAAI0b,IAAI,kBAAmBxb,OAAO06B,cC/vBlC56B,IAAIC,UAAU,UAEdC,OAAO8/B,aAAehgC,IAAIoB,OAAOlB,OAAOs2B,aACpCkC,aAAc,SAAStzB,GACnB,GAAIvB,GAAMuB,EAAMvB,IAAIo8B,OAAO,EAAG76B,EAAMvB,IAAIq8B,YAAY,MAAQ,UAExD9uB,GACAhL,EAAG,QAGP,OAAOpG,KAAIk6B,UAAUiG,IAAIC,KAAKC,cAAcx8B,GAAM7D,IAAIo6B,UAAUhpB,KACjEhN,OAAQ,WACP,GAAIgB,GAAQtE,KAAKqwB,YAAY3mB,UAC7B,IAAIpF,GAASA,EAAM2F,IAAK,CACpB7K,OAAOi4B,UAAUx3B,WAAWyD,OAAOV,MAAM5C,KAAM0C,WAE/C1C,KAAK8B,MAAM8B,KAAK,SAAS0Q,GACrBtU,KAAK6H,OAAOyM,GAAMA,EAAI9K,WACvBxJ,KAEH,IAAIw/B,GAAKx/B,IACTy/B,GAAEC,MACEC,SAAU,OACV58B,IAAK/C,KAAK43B,aAAatzB,GACvBpC,QAAS,SAAS2D,GACd,GAAGA,GAAYA,EAASkE,QAAUlE,EAASkE,OAAOtI,OAAO,CACrD,GAAIm+B,GAAat7B,EAAMJ,QAAQ6F,OAC3B81B,IACDD,IAA6C,IAA/BA,EAAWrY,OAAO,WAC/BsY,EAAkBD,EAAWT,OAAO,GAAG1kB,MAAM,KAGjD,IAAIuU,GAAO,OACXyQ,GAAE77B,KAAKiC,EAASkE,OAAQ,SAASjB,EAAKxE,GAC7Bs7B,GAAuD,KAAzCC,EAAgBx9B,QAAQy9B,OAAOh3B,MAC9CkmB,GAAQ,YAAc1qB,EAAMuzB,UAAY,mBACxC4H,EAAE77B,KAAKU,EAAM+zB,OAAQ,SAAS0H,EAAMxpB,GAChCyY,GAAQ,oCAAuCzY,EAAMypB,UAAY,OACjEhR,GAAQ,SAAWzY,EAAMlI,MAAQ,oBAI7C2gB,GAAQ,SACRwQ,EAAKp/B,KACD4uB,KAAMA,IAGdwQ,EAAK3F,kBAOzBz6B,OAAO8/B,aAAaxI,SAAW,SAASrG,GACpC,MAAOA,GAAY3mB,oBAAsBhK,YAAWoR,MAAMmvB,aAAe,EAAI,GAGjF7gC,OAAOs2B,YAAYzN,MAAMiY,gBAAkB9gC,OAAO8/B,aAClDhgC,IAAI0b,IAAI,kBAAmBxb,OAAO8/B,cCzClChgC,IAAIC,UAAU,UAcdC,OAAO+gC,YAAcjhC,IAAIoB,OAAOpB,IAAI2b,OAQhCulB,SAAS,EAOTxU,WAAY,KAQZ2K,eAAgB,KAchB3nB,OAAQ,SAAS/K,GACb,OAAO,GAMXoT,cAAe,WACX7X,OAAO+gC,YAAYtgC,WAAWoX,cAAclX,KAAKC,OAMrD6X,SAAU,WACNzY,OAAO+gC,YAAYtgC,WAAWgY,SAASjV,MAAM5C,KAAM0C,WAC/C1C,KAAK4rB,aACL5rB,KAAK4rB,WAAaxsB,OAAO8K,SAAS2T,QAAQ9T,QAE9C/J,KAAK4rB,WAAWhoB,KAAK,SAASC,GACtB7D,KAAKqgC,UAAUx8B,IAChB7D,MACHA,KAAKogC,SACLpgC,KAAK4rB,WAAWvoB,IACZjD,IAAOJ,KAAKgtB,WACZnlB,OAAU7H,KAAKitB,cACftlB,MAAS3H,KAAKsgC,aACd38B,MAAO3D,QAanBugC,wBAAyB,SAASp8B,GAM9B,IAAI,GADAN,GAAQS,EAJRN,EAAQhE,KAAK4rB,WACbgG,EAAQ5tB,EAAM6tB,WACd2O,EAAa,GACbC,EAAczgC,KAAK8B,MAAQ9B,KAAK8B,MAAML,OAAS,EAE3CE,EAAEiwB,EAAM,EAAGjwB,GAAG,IAAKA,EAAG,CAC1BkC,EAASG,EAAMsE,MAAM3G,GACrB2C,EAAQT,EAAO6F,UACf,IAAIue,GAAQ7oB,OAAOs2B,YAAYY,SAASzyB,EACxC,IAAGS,EAAMkrB,wBAA0BvH,EAAMxmB,OAAS,GAC7CuC,EAAMsE,MAAM3G,GAAG4C,IAAI,mBAAoB,MAClCi8B,EACCr8B,IAAUxC,GAAK6+B,EAAaC,EAAY,GACvC,MAIhB,MAAOD,IASXE,cAAe,SAASp8B,GACpB,MAAOtE,MAAKuG,GAAK,IAAMjC,EAAMiC,IAYjCymB,WAAY,SAAShpB,EAAOtC,EAASyC,GAEjC,IAAK,GADDq8B,GAAaxgC,KAAKugC,wBAAwBp8B,EAAMzC,EAAQD,OAAO,GAC1DE,EAAE,EAAGC,EAAIF,EAAQD,OAAUG,EAAFD,EAAOA,IACrC3B,KAAKqgC,UAAU3+B,EAAQC,GAAI6+B,EAE/BxgC,MAAK65B,YAYT5M,cAAe,SAASjpB,EAAOH,EAAQM,GACnCnE,KAAK2gC,aAAa98B,IAQtB88B,aAAc,SAAS98B,GACnB,GAAI7D,KAAK8B,MAAO,CACZ,GAAIu2B,GAASr4B,KAAK45B,aAAa55B,KAAK0gC,cAAc78B,EAAO6F,YACrD2uB,KACAr4B,KAAK6H,OAAOwwB,GAAQ,GACpBr4B,KAAK65B,cAUjByG,aAAc,SAASt8B,GACnBhE,KAAK4gC,oBAMTA,iBAAkB,WACd5gC,KAAK++B,WAAU,GACf/+B,KAAK65B,YAUTwG,UAAW,SAASx8B,EAAQM,GACxB,GAAInE,KAAK4O,OAAO/K,MAAY,EAAM,CAC9B,GAAIS,GAAQT,EAAO6F,UACnBvF,GAAQA,GAAS,CACjB,IACI8jB,GAAQ7oB,OAAOs2B,YAAYY,SAASzyB,EACpC7D,KAAKu2B,eACNjyB,GAAMkrB,yBAA2B3rB,EAAOU,IAAI,iBAC3C0jB,EAAMxmB,OAAS,GACfzB,KAAKsL,OAAOnH,GACR+gB,MAAO+C,EAAM,GACb1hB,GAAIvG,KAAK0gC,cAAcp8B,GACvB+rB,YAAaxsB,EACb8e,UAAYre,EAAM2F,KAAO3F,EAAMyX,YAC1BzX,EAAMkY,iBAAmBlY,EAAM2lB,wBASpDoM,UAAW,WACJr2B,KAAK4rB,aACJ5rB,KAAK4rB,WAAW5jB,GAAG,MAAOhI,KAAKgtB,WAAYhtB,MAC3CA,KAAK4rB,WAAW5jB,GAAG,SAAUhI,KAAKitB,cAAejtB,MACjDA,KAAK4rB,WAAW5jB,GAAG,QAAShI,KAAKsgC,aAActgC,OAEnDZ,OAAO+gC,YAAYtgC,WAAWw2B,UAAUzzB,MAAM5C,KAAM0C,cAK5DxD,IAAI0b,IAAI,iBAAkBxb,OAAO+gC,aClOjCjhC,IAAIC,UAAU,UA8CdC,OAAOyhC,WAAa3hC,IAAIoB,OAAOpB,IAAIkpB,OAAO6L,cAMtChqB,IAAK,KAMLqV,QAAS,gBAOT+U,YAAY,EAMZyM,UAAU,EAKV7pB,cAAe,WACX7X,OAAOyhC,WAAWhhC,WAAWoX,cAAclX,KAAKC,MAE7CA,KAAKiK,MACDjK,KAAKiK,cAAe7K,QAAO8K,WAC1BlK,KAAKiK,IAAMjK,KAAKiK,IAAIA,KAExBjK,KAAKoD,KAAKpD,KAAKiK,MAGfjK,KAAKq0B,cAAe,EACpBr0B,KAAKqD,GAAG,SAAUrD,KAAK+gC,cAAe/gC,MAEtCA,KAAKqD,GAAG,iBAAkBrD,KAAK+gC,cAAe/gC,MAElDA,KAAKqD,GAAG,gBAAiBrD,KAAK+H,OAAQ/H,OAM1C6X,SAAU,WACNzY,OAAOyhC,WAAWhhC,WAAWgY,SAASjV,MAAM5C,KAAM0C,WAClD1C,KAAK0X,GAAGsJ,SAAShhB,KAAKsf,UAO1BhH,YAAc,WACVpZ,IAAIkpB,OAAO6L,aAAap0B,WAAWyY,YAAY1V,MAAM5C,KAAM0C,WAC3D1C,KAAKsD,UAQToa,cAAe,SAASuX,GACpBj1B,KAAKqD,IACDgS,OAAQ,WACJ,GAAIqC,GAAK1X,KAAKk1B,OACdxd,GAAGyd,UACCpd,SAAU,WACVqd,OAAQH,EAAMhrB,IAAIorB,aAAa9gB,UAEnCmD,EAAGrU,IACCiyB,UAAWt1B,KAAKu1B,gBAChBC,MAAOx1B,KAAKu1B,mBAGpByL,YAAa,WACThhC,KAAKoD,KAAK6xB,EAAMhrB,MAEpBtG,MAAO3D,QAOfu1B,gBAAiB,SAASpvB,GACtBA,EAAEsvB,aAQN7X,mBAAoB,SAASqX,GACzB,GAAIvd,GAAK1X,KAAKk1B,OACdxd,GAAG1P,GAAG,YAAahI,KAAKu1B,gBAAiBv1B,MACzC0X,EAAG1P,GAAG,QAAShI,KAAKu1B,gBAAiBv1B,MACrCA,KAAK+H,UAMT3E,KAAM,SAAS6G,GACXjK,KAAKiK,IAAMA,EACXjK,KAAKiK,IAAIzF,OAAOnB,IACZm3B,QAASx6B,KAAKsD,OACd29B,gBAAiBjhC,KAAKkhC,eACtBv9B,MAAO3D,OAERA,KAAKiK,IAAIsC,YACRvM,KAAKkhC,iBACLlhC,KAAKsD,WAMbyE,OAAQ,WACD/H,KAAKiK,KAAOjK,KAAKiK,IAAIzF,QACpBxE,KAAKiK,IAAIzF,OAAOwD,IACZwyB,QAASx6B,KAAKsD,OACd29B,gBAAiBjhC,KAAKkhC,eACtBv9B,MAAO3D,QAQnBkhC,eAAgB,WACZ,GAAI58B,GAAQtE,KAAKiK,IAAIsC,SACctK,UAAhCjC,KAAK4U,cAAcuR,WAClBnmB,KAAKmmB,SAAW7hB,EAAM68B,cAAgB,GAEPl/B,SAAhCjC,KAAK4U,cAAcsR,WAClBlmB,KAAKkmB,SAAiC,MAAtB5hB,EAAM68B,aAClB78B,EAAM88B,cAAgB,EAAI98B,EAAM+8B,eAS5C9kB,QAAS,WACL,MAAOvc,MAAKshC,YAQhB/X,SAAU,WACN,MAAO7pB,YAAWwN,KAAKC,uBACnBnN,KAAKiK,IAAIs3B,qBAAqBvhC,KAAKshC,YACnCthC,KAAKiK,IAAIu3B,aASjBnpB,cAAe,WACX,MAAOrY,MAAKiK,IAAIs3B,qBAAqBvhC,KAAKshC,aAM9CP,cAAe,WACR/gC,KAAKiK,MAAQjK,KAAK8gC,UACjB9gC,KAAKiK,IAAIw3B,OAAOzhC,KAAKshC,aAO7Bh+B,OAAQ,WACDtD,KAAKoV,UAAYpV,KAAKiK,MACrBjK,KAAK8gC,UAAW,EAChB9gC,KAAK00B,SAAS10B,KAAKiK,IAAIsS,WACvBvc,KAAK8gC,UAAW,MAO5B5hC,IAAI0b,IAAI,gBAAiBxb,OAAOyhC,YCxPhC3hC,IAAIC,UAAU,eAgCdC,OAAOsoB,KAAKga,2BAA6B,WACrC,OAKIC,qBAAqB,EASrBC,gBAAgB,EAgBhBC,cAAe,KAWfC,OAAO,EAKPjiC,WAAY,KAKZkiC,oBAMAC,uBAAuB,EAGvBliC,YAAa,SAAS8G,GAElB,GADAA,EAASA,MACNA,EAAOi7B,wBAAyBniC,YAAW6U,QAAQ0tB,eAClD,IAAIr7B,EAAOs7B,aAAc,CACrB,GAAIruB,GAAOjN,EAAOi7B,aAClBj7B,GAAOs7B,eAAiBruB,EAAKsuB,UAActuB,EAAKuuB,kBAE9Cx7B,GAAOtC,gBAAiB5E,YAAWoR,MAAMuB,SAC/CrS,KAAK6hC,cAAgB7hC,KAAKqiC,oBACtBz7B,EAAOtC,MAAOsC,EAAOi7B,qBAElBj7B,GAAOtC,YACPsC,GAAOi7B,cAEdj7B,GAAOo7B,wBACPhiC,KAAKgiC,uBAAwB,QACtBp7B,GAAOo7B,uBAElBhiC,KAAKH,WAAa6C,UAAUC,OAAO9C,WACnCG,KAAKH,WAAWC,YAAYC,KAAKC,KAAM4G,IAO3C07B,WAAY,WAER,GADAtiC,KAAKH,WAAWyiC,WAAWviC,KAAKC,MAC7BA,KAAK4hC,eAAgB,CACpB,GAAIt9B,GAAQtE,KAAK0nB,KAAK6a,YAAcviC,KAAK0nB,KAAK6a,WAAWj+B,OACtDA,GACEtE,KAAK6hC,wBAAyBniC,YAAW6U,QAAQ0tB,gBAClDjiC,KAAK6hC,cAAgB7hC,KAAKqiC,oBACtB/9B,EAAOtE,KAAK6hC,gBAIrB7hC,KAAK6hC,eACJ7hC,KAAKoD,KAAKpD,KAAK6hC,gBAUvBQ,oBAAqB,SAAS/9B,EAAOsC,GACjCA,EAASA,KACT,IAAIs7B,GAAuCjgC,SAAxB2E,EAAOs7B,aACPt7B,EAAOs7B,aAAeliC,KAAKkiC,YAC9Ct7B,GAASlH,WAAWwN,KAAK5M,QACrBkiC,QAAQ,EACRJ,YAAaF,EAAe,KACvBhjC,IAAIujC,MAAQ,UAAY,WAC9B77B,EACH,IAAIi7B,GAAgB,GAAIniC,YAAW6U,QAAQ0tB,cACvC39B,EAAOsC,EAGX,OADAtC,GAAM2F,IAAI6J,WAAW+tB,GACdA,GAiBXz+B,KAAM,SAASs/B,EAAKx+B,GAChB,IAAIlE,KAAK8hC,MAAO,CACZ59B,EAAUA,MACVlE,KAAK6hC,cAAgBa,EAClBA,YAAehjC,YAAWoR,MAAMuB,SAC/BrS,KAAK6hC,cAAgB7hC,KAAKqiC,oBACtBK,EAAKx+B,EAAQy+B,gBAGlB3iC,KAAK2hC,qBACJ3hC,KAAK6hC,cAAc5tB,UAGvB,KAAI,GADAlK,GAAS/J,KAAK4iC,YACVjhC,EAAI,EAAGC,EAAMmI,EAAOtI,OAAYG,EAAJD,EAASA,IACzCoI,EAAOpI,GAAG6C,OAAOnB,IACbw/B,gBAAiB7iC,KAAK8iC,gBACtBC,kBAAmB/iC,KAAKgjC,kBACxBr/B,MAAO3D,MAGfA,MAAKqD,GAAG,YAAarD,KAAKijC,YAAajjC,MACvCA,KAAKqD,GAAG,cAAerD,KAAKkjC,cAAeljC,MAC3CA,KAAK8hC,OAAQ,EAEjB,MAAO9hC,MAAK6hC,eAShB95B,OAAQ,WACJ,GAAI85B,GAAgB7hC,KAAK6hC,aACzB,IAAG7hC,KAAK8hC,MAAO,CAEX,IAAI,GADA/3B,GAAS/J,KAAK4iC,YACVjhC,EAAI,EAAGC,EAAMmI,EAAOtI,OAAYG,EAAJD,EAASA,IACzCoI,EAAOpI,GAAG6C,OAAOwD,IACb66B,gBAAiB7iC,KAAK8iC,gBACtBC,kBAAmB/iC,KAAKgjC,kBACxBr/B,MAAO3D,MAGfA,MAAKgI,GAAG,YAAahI,KAAKijC,YAAajjC,MACvCA,KAAKgI,GAAG,cAAehI,KAAKkjC,cAAeljC,MACxCA,KAAK2hC,qBACJE,EAAcztB,aAElBpU,KAAK6hC,cAAgB,KACrB7hC,KAAK8hC,OAAQ,EAEjB,MAAOD,IAOXiB,gBAAiB,SAASv6B,GACtB,IAAIvI,KAAKmjC,WAAY,CACjB,GAAIn/B,GAAQhE,KAAK0nB,KAAK1jB,MAClBo/B,EAAMp/B,EAAMoE,OAAO,SAASvE,EAAQ0C,GACpC,MAAO1C,GAAOmB,cAAgBuD,EAAIrI,SAE5B,KAAPkjC,GAAcpjC,KAAKqjC,WAAWD,KAC7BpjC,KAAKmjC,YAAa,EAClBnjC,KAAKsjC,UAAUF,GAAMpjC,KAAKkiC,cAC1BliC,KAAKmjC,YAAa,EAElBnjC,KAAK0nB,KAAK6b,UAAUC,SAASJ,MASzCJ,kBAAmB,SAASz6B,GACxB,IAAIvI,KAAKmjC,WAAY,CACjB,GAAIn/B,GAAQhE,KAAK0nB,KAAK1jB,MAClBo/B,EAAMp/B,EAAMoE,OAAO,SAASvE,EAAQ0C,GACpC,MAAO1C,GAAOmB,cAAgBuD,EAAIrI,SAE5B,KAAPkjC,GAAapjC,KAAKqjC,WAAWD,KAC5BpjC,KAAKmjC,YAAa,EAClBnjC,KAAKyjC,YAAYL,GACjBpjC,KAAKmjC,YAAa,EAClBnjC,KAAK0nB,KAAK6b,UAAUC,SAASJ,MAUzCH,YAAa,SAASS,EAAON,EAAKv/B,GAC9B,GAAI3D,GAAU2D,EAAOmB,YACrB,KAAIhF,KAAKmjC,YAAcjjC,EAAS,CAE5B,IAAI,GADA6J,GAAS/J,KAAK4iC,YACVjhC,EAAI,EAAGC,EAAMmI,EAAOtI,OAAYG,EAAJD,EAASA,IACzC,GAAkD,IAA/CoI,EAAOpI,GAAGogC,iBAAiB1/B,QAAQnC,GAAgB,CAClDF,KAAKmjC,YAAa,EAClBnjC,KAAK6hC,cAAcrW,OAAOtrB,GAC1BF,KAAKmjC,YAAa,EAClBnjC,KAAK+hC,iBAAiBj+B,KAAK5D,EAC3B,OAGLF,KAAKgiC,uBACJhiC,KAAK2jC,8BAUjBT,cAAe,SAASQ,EAAON,EAAKv/B,GAChC,GAAI3D,GAAU2D,EAAOmB,YACrB,KAAIhF,KAAKmjC,YAAcjjC,EAAS,CAE5B,IAAI,GADA6J,GAAS/J,KAAK4iC,YACVjhC,EAAI,EAAGC,EAAMmI,EAAOtI,OAAYG,EAAJD,EAASA,IACzC,GAAkD,IAA/CoI,EAAOpI,GAAGogC,iBAAiB1/B,QAAQnC,GAAgB,CAClDF,KAAKmjC,YAAa,EAClBnjC,KAAK6hC,cAAclG,SAASz7B,GAC5BF,KAAKmjC,YAAa,EAClBzjC,WAAWwN,KAAK02B,WAAW5jC,KAAK+hC,iBAAkB7hC,EAClD,OAGLF,KAAKgiC,uBAAyBhiC,KAAK+hC,iBAAiBtgC,OAAS,GAC5DzB,KAAK2jC,8BAQjBf,UAAW,WACP,MAAO5iC,MAAK6hC,cAAc93B,SAAW/J,KAAK6hC,cAAcv9B,QAQ5Dq/B,0BAA2B,WACvB,GAAI15B,GAAMjK,KAAK6hC,cAAc53B,IACzB45B,EAAkB7jC,KAAK8jC,qBACvBC,EAAsB95B,EAAI+5B,iBAAiBH,GAAiB,EAC7DE,GAAsB95B,EAAIsS,UACzBtS,EAAI8S,UAAU8mB,EAAgB9kB,mBAG9B9U,EAAI+S,aAAa6mB,IAUzBC,mBAAoB,WAChB,GAAIG,GAAY,KACZn+B,EAAW9F,KAAK+hC,gBACpB,IAAGj8B,GAAaA,EAASrE,OAAS,EAE9B,IAAI,GADAmX,GAAW,KACPjX,EAAE,EAAGC,EAAIkE,EAASrE,OAAUG,EAAFD,EAAOA,IACrCiX,EAAW9S,EAASnE,GAAGiX,SACnBA,IACkB,OAAdqrB,IACAA,EAAY,GAAIvkC,YAAWia,QAE/BsqB,EAAU3jC,OAAOsY,EAASC,aAItC,OAAOorB,MAKnB7kC,OAAOsoB,KAAKwc,sBAAwBhlC,IAAIoB,OACpCpB,IAAIwoB,KAAKyc,kBACT,GAAI/kC,QAAOsoB,KAAKga,4BC7WpBxiC,IAAIC,UAAU,eAUdC,OAAOC,KAAK+kC,UAAYllC,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAUxC2W,cAAe,KAQfnkC,QAAS,KAKToZ,OAAQ,KAKRrM,MAAO,KAKPq3B,SAAU,EAWVC,aAAc,KAKdzkC,YAAa,SAAS8G,GAClB5G,KAAK4U,cAAgBhO,EACrB1H,IAAI0D,MAAM5C,KAAM4G,GAEZ5G,KAAKukC,eACLvkC,KAAKukC,iBAGTvkC,KAAKmK,UAWD,UAGJ/K,OAAOC,KAAK+kC,UAAUvkC,WAAWC,YAAY8C,MAAM5C,KAAM0C,WAEzD1C,KAAKE,QAAU,GAAIR,YAAW4W,QAAQjE,OAClC3S,WAAWwX,SAASstB,QAAQ,yCAE7BxkC,KAAKqkC,cAAc3Q,aAClB1zB,KAAKykC,SAASzkC,KAAKqkC,cAAcK,OAAOp8B,MAAM,IAE9CtI,KAAKqkC,cAAchhC,IACfshC,iBAAoB,WAChB3kC,KAAKykC,SAASzkC,KAAKqkC,cAAcK,OAAOp8B,MAAM,KAElD3E,MAAO3D,KACPuV,QAAQ,IAIhBvV,KAAKqkC,cAAchhC,IACfuhC,aAAgB5kC,KAAK6kC,eACrBlhC,MAAO3D,QAWf8kC,eAAgB,SAAS76B,GAErB,MADAA,GAAMA,YAAe7K,QAAO8K,SAAWD,EAAIA,IAAMA,EAC1CjK,KAAK+kC,oBAAoB/kC,KAAKiN,MAAOhD,EAAIu3B,aAapDiD,SAAU,SAASx3B,EAAOJ,GACtB,GAAI6M,GAAS1Z,KAAK+kC,oBAAoB93B,EAAOJ,GACzCm4B,EAAOtrB,EAAOurB,aACdX,EAAWtkC,KAAKskC,QACL,IAAZA,GACCU,EAAKE,QAAQZ,EAAUU,EAAKlmB,eAEhC9e,KAAK+D,cAAcihC,GAAO/3B,MAAOA,KAQrC8P,UAAW,SAASzD,GAChB,GAAI0rB,GAAOhlC,KAAKE,QAAQ0Y,SACpBusB,EAAYH,EAAKnsB,YAAYkG,kBAC7BwD,EAAKjJ,EAAO+C,IAAM8oB,EAAU9oB,IAC5BmG,EAAKlJ,EAAOgD,IAAM6oB,EAAU7oB,GAChC0oB,GAAKpiB,KAAKL,EAAIC,GACdxiB,KAAK+D,cAAcihC,GAAO1rB,OAAQA,KAUtC8rB,YAAa,SAASd,EAAUe,GAC5B,GAAGA,GAASrlC,KAAKqkC,cAActI,OAAOx3B,IAAI,eAAgB,EAAM,CAC5D,GAAIygC,GAAOhlC,KAAKE,QAAQ0Y,QACxBosB,GAAKE,OAAOllC,KAAKskC,SAAWA,EAAUU,EAAKlmB,eAC3C9e,KAAK+D,cAAcihC,GAAOV,SAAUA,MAsB5CgB,IAAK,SAASC,EAAOrhC,GACjBA,EAAUA,KACV,IAAiB6W,GAAb9Q,EAAMs7B,CAOV,IANGA,YAAiBnmC,QAAO8K,SACvBD,EAAMs7B,EAAMt7B,IACNs7B,YAAiB7lC,YAAW4W,QAAQjE,SAC1CpI,EAAMs7B,EAAMjhC,MAAM2F,IAClB8Q,EAASwqB,EAAM3sB,SAASC,aAExBkC,IACAA,EAAS9Q,EAAIkV,aADjB,CAMAnf,KAAK4I,WAAY,CACjB,IAAI0Q,GAASyB,EAAOgE,iBACpB/e,MAAK+c,UAAUzD,EACf,IAAIzM,GAAQ5C,EAAIu3B,WACZv0B,EAAQjN,KAAKqkC,cAAcK,OAAOp8B,MAAM,GACxCk9B,EAAU72B,OAAO82B,kBACjBC,EAAW3qB,EAAOhC,WAClB4sB,EAAY5qB,EAAO9B,WACvBjZ,MAAKqkC,cAAcK,OAAO9gC,KAAK,SAASsH,GACpC,GAAIwO,GAAS1Z,KAAK+kC,oBAAoB75B,EAAK2B,EAC3C,IAAoB,WAAhB3I,EAAQ0hC,KAQL,CACH,GAAIC,GAA2B,UAAhB3hC,EAAQ0hC,MAClB7qB,EAAO+qB,eAAepsB,GACvBA,EAAOosB,eAAe/qB,EAI1B,QAHI8qB,GAA6B,UAAhB3hC,EAAQ0hC,OAAqBC,KAC1C54B,EAAQ/B,GAEL26B,EAdP,GAAIE,GACA7sB,KAAK8sB,IAAItsB,EAAOX,WAAa2sB,GAC7BxsB,KAAK8sB,IAAItsB,EAAOT,YAAc0sB,EACvBH,GAAPO,IACAP,EAAUO,EACV94B,EAAQ/B,IAWjBlL,MACHA,KAAKykC,SAASx3B,EAAOJ,SACd7M,MAAK4I,UACZ5I,KAAK+D,cAAc/D,KAAKE,QAAQ0Y,UAC5BU,OAAQA,EACRrM,MAAOA,MAcflJ,cAAe,SAAS6U,EAAUqtB,GAC9B,GAAI3gC,GAAItF,KAAKE,QACTgF,EAAWI,EAAEsT,WAAaA,CAI9B,IAHAA,EAASrS,GAAKjB,EAAEsT,SAASrS,GACzBjB,EAAEsT,SAAWA,GAET5Y,KAAK4I,UAAW,CAChB,IAAI,GAAIuC,KAAY86B,GACbA,EAAK96B,KAAcnL,KAAKmL,SAChB86B,GAAK96B,IAEZnL,KAAKmL,GAAY86B,EAAK96B,GACtBjG,GAAW,EAGnBhG,KAAI0D,MAAM5C,KAAMimC,GAEhB3gC,EAAEhB,OAASgB,EAAEhB,MAAMI,YAAYY,GAC/BJ,GAAYlF,KAAKgL,UAAU,SAAUhL,KAAMimC,KAcnDlB,oBAAqB,SAAS93B,EAAOJ,GACjC,GAAI4W,GAAIxW,EAAM1I,IAAI,SACde,EAAItF,KAAKE,QACT8kC,EAAOhlC,KAAKE,QAAQ0Y,SACpBU,EAAS0rB,EAAKnsB,YAAYkG,kBAE1BmnB,EAAOlmC,KAAKqkC,cAActI,OAAOx3B,IAAI,QACrCsI,EAAQA,GACPvH,EAAEhB,OAASgB,EAAEhB,MAAM2F,KAAO3E,EAAEhB,MAAM2F,IAAIu3B,YACvC,KACA2E,EAAazmC,WAAW0mC,gBAAgBv5B,GACxC2L,EAAI0tB,EAAK9sB,MAAQ,GAAK+sB,EAAa1iB,EAAI,EACvChL,EAAIytB,EAAK7sB,OAAS,GAAK8sB,EAAa1iB,EAAI,CAE5C,OAAO,IAAI/jB,YAAWia,OAAOL,EAAO+C,IAAM7D,EAAGc,EAAOgD,IAAM7D,EACtDa,EAAO+C,IAAM7D,EAAGc,EAAOgD,IAAM7D,IAMrCosB,eAAgB,WACT7kC,KAAKqkC,cAActI,OAAOx3B,IAAI,eAAgB,GAC7CvE,KAAKolC,YAAY,GAAG,GAMxBplC,KAAKiN,OAASjN,KAAKykC,SAASzkC,KAAKiN,QAKrCzD,QAAS,WACLxJ,KAAKqkC,cAAcr8B,GAAG,eAAgBhI,KAAK6kC,eAAgB7kC,SCvTnEd,IAAIC,UAAU,eAsCdC,OAAOC,KAAKgnC,cAAgBnnC,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAe5C3qB,IAAK,KAyBL2wB,aAAc,KAedzwB,OAAQ,OAQRqjC,SAAUtuB,SAASuuB,SAAWvuB,SAASwuB,cAAgB,QAOvDC,QAAS,IAOTlC,aAAc,KAgBdG,OAAQ,KAWRgC,KAAM,KAYNC,QAAS,KAMTC,IAAK,KAML7K,OAAQ,KAKRj8B,YAAa,SAAS8G,GAClB5G,KAAK4U,cAAgBhO,EACrB1H,IAAI0D,MAAM5C,KAAM4G,GAEZ5G,KAAKukC,eACLvkC,KAAKukC,iBAGTvkC,KAAKmK,UAWD,mBAWA,eAWA,YAeA,cAWA,QAYA,iBAcA,oBAgBA,cAcA,kBAIJ/K,OAAOC,KAAKgnC,cAAcxmC,WAAWC,YAAY8C,MAAM5C,KAAM0C,WAE7D1C,KAAK0kC,OAAS,GAAIxlC,KAAIG,KAAKwnC,WACvBp5B,KAAM,SACNq5B,UAAWvlC,MAAO,QAASwlC,UAAW,QACtC9mC,QAAS,QAASmB,KAAM,QAAS+B,KAAM,YAG3CnD,KAAK0mC,KAAO,GAAIxnC,KAAIG,KAAKwnC,WACrBp5B,KAAM,OACNxN,QAAS,QAASmB,KAAM,QAAS+B,KAAM,YAG3CnD,KAAK2mC,QAAU,GAAIznC,KAAIG,KAAKwnC,WACxBp5B,KAAM,UACNxN,QACI,QACCmB,KAAM,OAAQ8E,QAAS,QACvB9E,KAAM,WAAY+B,KAAM,cAI9ByD,EAAO8sB,aACN1zB,KAAKgnC,cAEFhnC,KAAK+C,IAAI0X,MAAM,KAAKC,QACnB1a,KAAK+C,KAAO,KAEhB/C,KAAK4U,cAAcqyB,UAAYjnC,KAAKknC,qBAS5CC,UAAW,SAASpL,GAChB/7B,KAAK+7B,OAASA,EACd/7B,KAAKgL,UAAU,eAAgBhL,KAAM+7B,IAQzCqL,OAAQ,SAASR,GACb5mC,KAAK4mC,IAAMA,EACX5mC,KAAKgL,UAAU,YAAahL,KAAM4mC,IAmCtCS,MAAO,SAASp9B,EAAKq9B,EAAOpjC,GAMxB,GALG+F,YAAe7K,QAAO8K,WACrBD,EAAMA,EAAIA,KAEdq9B,EAAQA,YAAiBvmC,OAAQumC,GAASA,GAC1CpjC,EAAUA,MACPlE,KAAKgL,UAAU,cAAehL,KAAMiK,EAAKq9B,EAAOpjC,MAAa,EAAhE,CAIA,GAAIqjC,GAAWroC,IAAI0D,OACfiK,MAAO5C,EAAIu3B,WACXgG,IAAKv9B,EAAIsC,UAAUk7B,WAAWC,UAC9B3L,OAAQ/7B,KAAK+7B,OAAOx3B,IAAI,QACxBqiC,IAAK5mC,KAAK4mC,IAAIriC,IAAI,UACnBvE,KAAKukC,cAEJoD,EAAaL,EAAM,GAAGpnC,QAAQoE,MAC9BsjC,KAGA79B,EAASE,EAAIF,OAAOklB,QACxBllB,GAAOlC,OAAOoC,EAAIsC,WAClBxC,EAAO89B,QAAQ59B,EAAIsC,WAEnBrN,IAAI0E,KAAKmG,EAAQ,SAASzF,GACtB,GAAGA,IAAUqjC,GAAcrjC,EAAMkY,mBAAoB,EAAM,CACvD,GAAIsrB,GAAM9nC,KAAK+nC,YAAYzjC,EAC3BwjC,IAAOF,EAAc9jC,KAAKgkC,KAE/B9nC,MACHunC,EAASx9B,OAAS69B,CAElB,IAAII,KAUJ,IATA9oC,IAAI0E,KAAK0jC,EAAO,SAASW,GACrBD,EAAalkC,KAAK5E,IAAI0D,OAClB0W,QAAS2uB,EAAK3uB,OAAO+C,IAAK4rB,EAAK3uB,OAAOgD,KACtCrP,MAAOg7B,EAAKh7B,MAAM1I,IAAI,SACtB+/B,SAAU2D,EAAK3D,UAChB2D,EAAK1D,gBACTvkC,MACHunC,EAASD,MAAQU,EAEb9jC,EAAQgkC,SAAU,CAClB,GAAIC,KACJjpC,KAAI0E,KAAKM,EAAQgkC,SAASn+B,OAAQ,SAASzF,GACvC,GAAIwjC,GAAM9nC,KAAK+nC,YAAYzjC,EAC3BwjC,IAAOK,EAAsBrkC,KAAKgkC,IACnC9nC,MACHunC,EAASa,eAAiBD,EAG9B,GAAGjkC,EAAQm0B,OAAQ,CACf,GAAIA,GAASn0B,EAAQm0B,OACjBjjB,EAAWijB,EAAOjjB,QACjBA,KACDijB,EAASA,EAAOgQ,aACZtgB,SAAU/P,SAAS4E,KACnB+F,QAAQ,IAGhB,IAAI2lB,KACJjQ,GAAOv2B,OAASu2B,EAAOv2B,MAAM8B,KAAK,SAAS0Q,GACvC,IAAIA,EAAIqO,OAAQ,CACZ,GAAI4lB,GAAQvoC,KAAKwoC,SAASC,QAAQn0B,EAAIo0B,WAGtCJ,GAAiBA,EAAerZ,OAC5BsZ,EAAMxoC,KAAKC,KAAMsU,EAAKizB,EAASD,MAAM,GAAGr6B,UAEjDjN,MACEoV,GACDijB,EAAO7uB,UAEX+9B,EAASkB,QAAUH,EAGvB,GAAmB,QAAhBtoC,KAAKiD,OAAkB,CACtB,GAAIF,GAAM7D,IAAIk6B,UAAUp5B,KAAK0zB,aAAaiV,SACtC,QAAUC,mBAAmB1pC,IAAI2pC,OAAOtB,IAC5CvnC,MAAK8oC,SAAS/lC,OAEd7D,KAAI6pC,KAAKtoC,SACLsC,IAAK/C,KAAK0zB,aAAasV,UACvBvC,QAASzmC,KAAKymC,QACdc,SAAUA,EACV0B,SAAUC,eAAgB,6BAA+BlpC,KAAKsmC,UAC9DpkC,QAAS,SAAS2D,GACd,GAAI9C,GAAM7D,IAAIiqC,OAAOtjC,EAASjF,cAAcwoC;AAC5CppC,KAAK8oC,SAAS/lC,IAElBsmC,QAAS,SAASxjC,GACd7F,KAAKgL,UAAU,iBAAkBhL,KAAM6F,IAE3CyK,OAAQtQ,KAAK4U,cAAc4iB,WAC3B7zB,MAAO3D,SAQnB8oC,SAAU,SAAS/lC,GACX/C,KAAKgL,UAAU,iBAAkBhL,KAAM+C,MAAS,IAC5C7D,IAAIoqC,QAGJzhB,OAAO0hB,KAAKxmC,GAGZ8kB,OAAOvJ,SAASnO,KAAOpN,GAG/B/C,KAAKgL,UAAU,QAAShL,KAAM+C,IAUlCmkC,iBAAkB,WACd,GAAKlnC,KAAK+C,IAAV,CAGA,GAAIA,GAAM/C,KAAK+C,IAAM,WACrB7D,KAAI6pC,KAAKtoC,SACLsC,IAAKA,EACLE,OAAQ,MACRD,gBAAgB,EAChBd,QAAS,SAAS2D,GACd7F,KAAK0zB,aAAex0B,IAAIiqC,OAAOtjC,EAASjF,cACxCZ,KAAKgnC,cAET12B,OAAQtQ,KAAK4U,cAAc4iB,WAC3B7zB,MAAO3D,SAMfgnC,WAAY,WACRhnC,KAAK0kC,OAAOt9B,SAASpH,KAAK0zB,cAC1B1zB,KAAK0mC,KAAKt/B,SAASpH,KAAK0zB,cACxB1zB,KAAK2mC,QAAQv/B,SAASpH,KAAK0zB,cAE3B1zB,KAAKmnC,UAAUnnC,KAAK2mC,QAAQr+B,MAAM,IAClCtI,KAAKonC,OAAOpnC,KAAK0mC,KAAKp+B,MAAM,IAC5BtI,KAAKgL,UAAU,mBAAoBhL,KAAMA,KAAK0zB,eASlDqU,YAAa,SAASzjC,GAClB,GAAIklC,EACJ,KAAI,GAAI/mC,KAAKzC,MAAKwoC,SAASz+B,OACvB,GAAGrK,WAAWoR,MAAMrO,IAAM6B,YAAiB5E,YAAWoR,MAAMrO,GAAI,CAC5D,GAAGzC,KAAKgL,UAAU,oBAAqBhL,KAAMsE,MAAW,EACpD,MAEJklC,GAAWxpC,KAAKwoC,SAASz+B,OAAOtH,GAAG1C,KAAKC,KAAMsE,GAC9CtE,KAAKgL,UAAU,cAAehL,KAAMsE,EAAOklC,EAC3C,OAKR,MAAQA,IAAYA,EAASrmC,KAAQqmC,EAAW,MASpDC,eAAgB,SAAS1mC,GACrB,GAAI6mB,EAWJ,OAVG1qB,KAAIwqC,OAASxqC,IAAIyqC,OAASzqC,IAAI0qC,OAC7BhgB,EAAI5R,SAASC,cAAc,YAAclV,EAAM,OAC/C6mB,EAAErT,MAAM0mB,QAAU,OAClBjlB,SAAS4E,KAAK6O,YAAY7B,GAC1BA,EAAEzZ,KAAOyZ,EAAEzZ,KACX6H,SAAS4E,KAAKiT,YAAYjG,KAE1BA,EAAI5R,SAASC,cAAc,KAC3B2R,EAAEzZ,KAAOpN,GAEN6mB,EAAEzZ,MAMbq4B,UACIz+B,QACI+G,MAAS,SAASxM,GACd,GAAIwjC,KAOJ,OANIxjC,GAAMJ,SAAWI,EAAMJ,QAAQwM,WAC/Bo3B,EAAI34B,oBAAsB7K,EAAMJ,QAAQwM,UAExCpM,EAAMJ,SAAWI,EAAMJ,QAAQuM,WAC/Bq3B,EAAI14B,oBAAsB9K,EAAMJ,QAAQuM,UAErCq3B,GAEX/2B,IAAO,SAASzM,GACZ,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAOkpB,YAAYlzB,KAAKC,KAAMsE,EACtDpF,KAAI0D,MAAMklC,GACN3kC,KAAM,MACN4G,QAASzF,EAAMgM,OAAO0nB,QAAQ9mB,KAAK,KAAKuJ,MAAM,KAC9Chb,OAAQ6E,EAAMgM,OAAO0oB,OACrBjB,QAASzzB,EAAMgM,OAAO4nB,QAAQhnB,KAAK,KAAKuJ,MAAM,MAElD,IAAI6X,EACJ,KAAI,GAAI/sB,KAAKjB,GAAMgM,OACfgiB,EAAQ/sB,EAAE8U,cACN/V,EAAMulC,eAAevX,IAC0B,IAAnD,iCAAiCjwB,QAAQiwB,KACjCwV,EAAIvD,eACJuD,EAAIvD,iBAERuD,EAAIvD,aAAah/B,GAAKjB,EAAMgM,OAAO/K,GAG3C,OAAOuiC,IAEXgC,IAAO,SAASxlC,GACZ,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAOggC,UAAUhqC,KAAKC,KAAMsE,EACpD,OAAOpF,KAAI0D,MAAMklC,GACb3kC,KAAM,MACN6mC,QAASlC,EAAIkC,QAAQ7K,OAAO,EAAG2I,EAAIkC,QAAQ3nC,QAAQ,MACnD4nC,UAAW,SAGnBC,IAAO,SAAS5lC,GACZ,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAOggC,UAAUhqC,KAAKC,KAAMsE,EACpD,OAAOpF,KAAI0D,MAAMklC,GACb3kC,KAAM,MACN1D,OAAQ6E,EAAMnB,QAGtB4mC,UAAa,SAASzlC,GAClB,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAOkpB,YAAYlzB,KAAKC,KAAMsE,EACtD,OAAOpF,KAAI0D,MAAMklC,GACb3kC,KAAM,YACNmB,MAAOA,EAAM6lC,UACblG,UAAW3/B,EAAM2/B,UAAUmG,UAC3BC,UAAW/lC,EAAM+lC,SAAS7xB,EAAGlU,EAAM+lC,SAAS5xB,GAC5CwxB,UAAW3lC,EAAM2lC,UACjBr9B,YAAatI,EAAMgmC,mBAAqBhmC,EAAMsI,eAGtD29B,KAAQ,SAASjmC,GACb,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAOkpB,YAAYlzB,KAAKC,KAAMsE,EACtD,OAAOpF,KAAI0D,MAAMklC,GACb3kC,KAAM,OACNmB,MAAOA,EAAMA,MACb0L,QAAS1L,EAAM0L,QACfw6B,gBAAiBlmC,EAAMkmC,gBACvBC,YAAanmC,EAAMmmC,WAAWpuB,IAAK/X,EAAMmmC,WAAWnuB,KACpD+tB,UAAW/lC,EAAM+lC,SAAS7xB,EAAGlU,EAAM+lC,SAAS5xB,GAC5ClC,MAAOjS,EAAMiS,MACbm0B,aAAcpmC,EAAMomC,aACpBC,WAAYrmC,EAAMqmC,WAClBr6B,OAAQhM,EAAMgM,OACd2zB,UAAoC,MAAxB3/B,EAAMsmC,eAA0BtmC,EAAMsmC,eAAeR,UAAY9lC,EAAM2/B,UAAUmG,UAC7FS,UAAWvmC,EAAMumC,UACjBC,WAAYxmC,EAAMwmC,WAClBl+B,YAAatI,EAAMgmC,mBAAqBhmC,EAAMsI,eAGtDm+B,WAAc,SAASzmC,GACnB,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAOihC,MAAMjrC,KAAKC,KAAMsE,EAChD,OAAOpF,KAAI0D,MAAMklC,GACb3kC,KAAM,aAEN0nB,MAAOvmB,EAAMgM,OAAU,EACvB26B,cAAe3mC,EAAMgM,OAAqB,aAAK,EAC/C46B,eAAgB5mC,EAAMgM,OAAqB,aAAK,KAGxD06B,MAAS,SAAS1mC,GACd,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAOkpB,YAAYlzB,KAAKC,KAAMsE,EACtD,OAAOpF,KAAI0D,MAAMklC,GACb3kC,KAAM,QACN8G,IAAK3F,EAAMgM,OAAY,IACvB25B,UAAW3lC,EAAMgM,OAAU,EAE3Bua,MAAOvmB,EAAMgM,OAAU,GAAK,GAC5B2zB,UAAW3/B,EAAM2/B,UAAUmG,UAC3BC,UAAW/lC,EAAM+lC,SAAS7xB,EAAGlU,EAAM+lC,SAAS5xB,GAC5C7L,YAAatI,EAAMgmC,mBAAqBhmC,EAAMsI,eAGtDqmB,YAAe,SAAS3uB,GACpB,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAO+G,MAAM/Q,KAAKC,KAAMsE,EAChD,OAAOpF,KAAI0D,MAAMklC,GACbkC,QAAShqC,KAAKypC,eAAenlC,EAAMvB,cAAehC,OAC9CuD,EAAMvB,IAAI,GAAKuB,EAAMvB,KACzBoL,QAA2B,MAAjB7J,EAAM6J,QAAmB7J,EAAM6J,QAAU,EACnDg9B,WAAY7mC,EAAM6mC,cAG1BC,MAAS,SAAS9mC,GACd,GAAIwjC,GAAM9nC,KAAKwoC,SAASz+B,OAAO+G,MAAM/Q,KAAKC,KAAMsE,EAChD,OAAOpF,KAAI0D,MAAMklC,GACb3kC,KAAM,QACN6mC,QAAShqC,KAAKypC,eAAenlC,EAAM8kC,OAAO9kC,EAAMyW,SAChD5M,QAA2B,MAAjB7J,EAAM6J,QAAmB7J,EAAM6J,QAAU,EACnD4M,OAAQzW,EAAMyW,OAAOqvB,UACrBiB,WAAY/mC,EAAM4hC,KAAK1tB,EAAGlU,EAAM4hC,KAAKztB,GACrCrX,KAAMkD,EAAMlD,QAGpBiR,OAAU,SAAS/N,GACf,GAAIA,EAAMwB,SAASrE,OAAnB,CAYA,IAAI,GADAvB,GAASqW,EAAO+0B,EAASC,EAAUnT,EAPnCoT,KACAC,KACA3lC,EAAWxB,EAAMwB,SACjB4lC,EAAgB,GAAIhsC,YAAWC,OAAOgsC,QACtCC,EAAc,GAAIlsC,YAAWC,OAAOksC,KACpCC,EAAS,EACTC,KAEIpqC,EAAE,EAAGC,EAAIkE,EAASrE,OAAUG,EAAFD,IAASA,EAAG,CAC1CzB,EAAU4F,EAASnE,GACnB4U,EAAQrW,EAAQqW,OAASjS,EAAMiS,OAC/BjS,EAAMw2B,SAASG,iBAAiB/6B,EAC5BA,EAAQ8rC,cACZV,EAAUM,EAAYK,MAAM11B,GAC5Bg1B,EAAWQ,EAAUT,GAClBC,EAECnT,EAAYmT,GAGZQ,EAAUT,GAAWlT,EAAY0T,IAC9Bv1B,EAAM2mB,gBACLuO,EAAUrT,GAAal5B,IAAI2K,SACvBqzB,gBAAiBl9B,KAAKypC,eAClBlzB,EAAM2mB,kBAAmB3mB,GAEjCk1B,EAAUrT,GAAa7hB,EAG/B,IAAI21B,GAAiBR,EAAcS,QAAQjsC,QAAQH,KAC/C2rC,EAAexrC,EAEnBgsC,GAAejrC,WAAavB,WAAWwN,KAAK5M,QACxC8rC,UAAWhU,GACZ8T,EAAejrC,YAElBuqC,EAAY1nC,KAAKooC,GAErB,GAAIpE,GAAM9nC,KAAKwoC,SAASz+B,OAAO+G,MAAM/Q,KAAKC,KAAMsE,EAChD,OAAOpF,KAAI0D,MAAMklC,GACb3kC,KAAM,SACN40B,OAAQ0T,EACRY,cAAe,YACfC,SACInpC,KAAM,oBACN2C,SAAU0lC,GAEdpqC,KAAMkD,EAAMlD,KACZ+M,QAA2B,MAAjB7J,EAAM6J,QAAmB7J,EAAM6J,QAAU,MAG3Do+B,QAAW,SAASjoC,GAEhB,IAAK,GADDwB,MACKnE,EAAE,EAAGC,EAAI0C,EAAMkoC,QAAQ/qC,OAAUG,EAAFD,EAAOA,IAAK,CAChD,GAAI8qC,GAASnoC,EAAMkoC,QAAQ7qC,GACvBiX,EAAW,GAAIlZ,YAAWwX,SAASC,MAAMs1B,EAAOC,OAAOrwB,IAAKowB,EAAOC,OAAOpwB,KAC1E/F,GAAS2mB,gBAAiBuP,EAAOE,KAAK5pC,IACtCs6B,aAAcoP,EAAOE,KAAKzG,KAAK1tB,EAAG4kB,cAAeqP,EAAOE,KAAKzG,KAAKztB,EAClE6kB,eAAgBmP,EAAOE,KAAKC,OAAOhzB,EAAG2jB,eAAgBkP,EAAOE,KAAKC,OAAO/yB,GACzE3Z,EAAU,GAAIR,YAAW4W,QAAQjE,OAAOuG,KAAcrC,EAC1DzQ,GAAShC,KAAK5D,GAElB,GAAI2sC,GAAS,GAAIntC,YAAWoR,MAAMuB,OAAO/N,EAAMlD,KAC/CyrC,GAAO1lC,YAAYrB,EACnB,IAAIgnC,GAAS9sC,KAAKwoC,SAASz+B,OAAOsI,OAAOtS,KAAKC,KAAM6sC,EAEpD,OADAA,GAAOrjC,UACAsjC,IAGfrE,SACIsE,aAAgB,SAAS1U,EAAQprB,GAG7B,IAAI,GAFA66B,GAAM9nC,KAAKwoC,SAASC,QAAQuE,KAAKjtC,KAAKC,KAAMq4B,GAC5C4U,KACItrC,EAAE,EAAGC,EAAIy2B,EAAOv2B,MAAM+vB,WAAcjwB,EAAFD,IAASA,EAAG,CAClD,GAAIoB,GAAMs1B,EAAOv2B,MAAMyC,IAAI5C,GAAGoB,GAC9B,IAAGs1B,EAAOd,qBAAsB,GAEM,IADnCx0B,EAAIsX,cAAchY,QACd,4BAAmC,CACtC,GAAIoY,GAAQ1X,EAAI0X,MAAM,KAClBnK,EAASpR,IAAIguC,UAAUzyB,EAAM,GACjCnK,GAAc,MAAIrD,EAClBlK,EAAM0X,EAAM,GAAK,IAAMvb,IAAIo6B,UAAUhpB,GAEzC28B,EAAMnpC,KAAK9D,KAAKypC,eAAe1mC,IAMnC,MAJA+kC,GAAI,GAAGqF,QAAQ,IACX/rC,KAAM,GACN6rC,MAAOA,GAEJnF,GAEXsF,aAAgB,SAAS/U,GACrB,GAAIyP,GAAM9nC,KAAKwoC,SAASC,QAAQuE,KAAKjtC,KAAKC,KAAMq4B,EAKhD,OAJAyP,GAAI,GAAGqF,QAAQrpC,MACX1C,KAAM,GACNurC,KAAM3sC,KAAKypC,eAAepR,EAAOv2B,MAAMyC,IAAI,GAAGxB,OAE3C+kC,GAEXkF,KAAQ,SAAS3U,GACb,QACIj3B,KAAMi3B,EAAOnC,WACbiX,kBCxzBpBjuC,IAAIC,UAAU,kBA+DdC,OAAOouB,QAAQ6f,eAAiBnuC,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAUhD4f,UAAW,KAKXxP,OAAQ,KAIRh+B,YAAa,SAAS8G,GAClB5G,KAAK4U,cAAgBhO,EACrB1H,IAAI0D,MAAM5C,KAAM4G,GAEhBxH,OAAOouB,QAAQ6f,eAAextC,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAQrE+lB,KAAM,SAASqV,GACX99B,KAAK89B,OAASA,CACd,IAAIyP,IACA1f,cAAiB7tB,KAAK8tB,gBACtBnqB,MAAO3D,MAEPwtC,EAAY1P,YAAkB5+B,KAAI8jB,KAAKyqB,SACvB,SAAW3P,YAAkB5+B,KAAI8jB,KAAK0qB,SAClC,QAAU,OAClCH,GAAMC,GAAaxtC,KAAK2tC,cACxB7P,EAAOz6B,GAAGkqC,GACVvtC,KAAKstC,UAAUjqC,IACXuqC,OAAU5tC,KAAK6tC,aACflqC,MAAO3D,OAEXA,KAAKstC,UAAUjJ,cAAchhC,IACzBuhC,aAAgB5kC,KAAK6kC,eACrBlhC,MAAO3D,OAEXA,KAAK00B,SAAS10B,KAAKstC,YASvBK,cAAe,SAASpsC,EAAOsC,GAC3B,GAAIwgC,GAAgBrkC,KAAKstC,UAAUjJ,cAC/B/iC,EAAQC,EAAM+/B,UAClBthC,MAAK4I,WAAY,EACdrH,EAAMyC,QAAUqgC,EAAcK,QAAyB,UAAfnjC,EAAMH,KAC7CpB,KAAKstC,UAAU7I,SAAS5gC,GACJ,YAAdtC,EAAMH,MACX+e,MAAM7e,IAAUtB,KAAKstC,UAAUlI,YAAY9jC,GAE5CtB,KAAKstC,UAAU/I,aAAahjC,EAAMH,MAAQE,QAEvCtB,MAAK4I,WAShBilC,aAAc,SAASP,GACfttC,KAAK4I,WACL5I,KAAK00B,SAAS4Y,IAUtBzI,eAAgB,SAASR,EAAetI,GACpC,GAAIzM,GAAItvB,KAAK89B,MACH,aAAVxO,EAAEluB,MAAsBkuB,EAAE9Z,aAAaumB,EAAOx3B,IAAI,cAQtDmwB,SAAU,SAAS4Y,GACf,GAAIhe,GAAItvB,KAAK89B,MACbxO,GAAEwe,gBACCxe,EAAEtrB,QAAUspC,EAAUjJ,cAAcK,QAAqB,UAAXpV,EAAEluB,KAC5CksC,EAAUrgC,OACTqiB,EAAEoF,SAAS4Y,EAAUrgC,MAAM1I,IAAI+qB,EAAEye,eAErB,YAAVze,EAAEluB,MACRkuB,EAAEoF,SAAS4Y,EAAUhJ,UAEzBhV,EAAE0e,gBAKNlgB,gBAAiB,WACb9tB,KAAK89B,OAAO91B,GAAG,gBAAiBhI,KAAK8tB,gBAAiB9tB,MACtDA,KAAK89B,OAAO91B,GAAG,SAAUhI,KAAK2tC,cAAe3tC,MAC7CA,KAAK89B,OAAO91B,GAAG,QAAShI,KAAK2tC,cAAe3tC,MAC5CA,KAAKstC,UAAUtlC,GAAG,SAAUhI,KAAK6tC,aAAc7tC,MAC/CA,KAAKstC,UAAUjJ,cAAcr8B,GAAG,eAAgBhI,KAAK6kC,eACjD7kC,SAMZd,IAAImvB,KAAK,oBAAqBjvB,OAAOouB,QAAQ6f,gBC/L7CnuC,IAAIC,UAAU,kBAkEdC,OAAOouB,QAAQygB,mBAAqB/uC,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAWpDoQ,OAAQ,KAIRh+B,YAAa,SAAS8G,GAClB5G,KAAK4U,cAAgBhO,EACrB1H,IAAI0D,MAAM5C,KAAM4G,GAEhBxH,OAAOouB,QAAQygB,mBAAmBpuC,WAAWC,YAAY8C,MAAM5C,KAAM0C,YAOzE+lB,KAAM,SAASqV,GACX99B,KAAK89B,OAASA,CACd,IAAIyP,IACA5pC,MAAO3D,KACPqV,OAAUrV,KAAK6X,SACfgW,cAAiB7tB,KAAK8tB,gBAE1Byf,GAAMzP,YAAkB5+B,KAAI8jB,KAAKyqB,SAAW,SAAW,SACnDztC,KAAK2tC,cACT7P,EAAOz6B,GAAGkqC,IAQd11B,SAAU,SAAStW,GACf,GAAI8iC,GAAgBrkC,KAAKqkC,eAAiB9iC,EAAM2b,QAAQmnB,aACrD9iC,GAAMyC,QAAUqgC,EAAcsC,SAC7BplC,EAAMmzB,SAAS2P,EAActI,OAAOx3B,IAAIhD,EAAMwsC,eAC9C1J,EAAchhC,IACVuhC,aAAgB5kC,KAAKkuC,iBACrBvqC,MAAO3D,QAELuB,EAAMyC,QAAUqgC,EAAcqC,MACpCnlC,EAAMmzB,SAAS2P,EAAcuC,IAAIriC,IAAIhD,EAAMwsC,eAC3C1J,EAAchhC,IACV8qC,UAAanuC,KAAKkuC,iBAClBvqC,MAAO3D,QAEyBiC,SAA9BV,EAAMqT,cAActT,OAC1BC,EAAMmzB,SAAS2P,EAAcE,aAAahjC,EAAMH,QAUxDusC,cAAe,SAASpsC,EAAOsC,GAC3B,GAAIwgC,GAAgBrkC,KAAKqkC,eAAiB9iC,EAAM2b,QAAQmnB,cACpD/iC,EAAQC,EAAM+/B,UAElB,IADAthC,KAAK4I,WAAY,EACd/E,EACC,OAAOtC,EAAMyC,OACT,IAAKqgC,GAAcsC,QACftC,EAAc8C,UAAUtjC,EACxB,MACJ,KAAKwgC,GAAcqC,KACfrC,EAAc+C,OAAOvjC,OAG7BwgC,GAAcE,aAAahjC,EAAMH,MAAQE,QAEtCtB,MAAK4I,WAShBslC,iBAAkB,SAAS7J,EAAen5B,GAClClL,KAAK4I,WACL5I,KAAK89B,OAAOpJ,SAASxpB,EAAI3G,IAAIvE,KAAK89B,OAAOiQ,gBAMjDjgB,gBAAiB,WACb,GAAIgQ,GAAS99B,KAAK89B,MAClBA,GAAO91B,GAAG,gBAAiBhI,KAAK8tB,gBAAiB9tB,MACjD89B,EAAO91B,GAAG,SAAUhI,KAAK6X,SAAU7X,MACnC89B,EAAO91B,GAAG,SAAUhI,KAAK2tC,cAAe3tC,MACxC89B,EAAO91B,GAAG,QAAShI,KAAK2tC,cAAe3tC,KACvC,IAAIqkC,GAAgBrkC,KAAKqkC,eAAiBvG,EAAO5gB,QAAQmnB,aACzDA,GAAcr8B,GAAG,eAAgBhI,KAAKkuC,iBAAkBluC,MACxDqkC,EAAcr8B,GAAG,YAAahI,KAAKkuC,iBAAkBluC,SAM7Dd,IAAImvB,KAAK,wBAAyBjvB,OAAOouB,QAAQygB,oBCzKjD/uC,IAAIC,UAAU,kBAsCdC,OAAOouB,QAAQ4gB,YAAclvC,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAM7C9Y,cAAe,KAUfyvB,cAAe,KAKfp6B,IAAK,KAUL3F,MAAO,KAMP0O,QAAS,KAaTs0B,MAAO,KAMPW,KAAM,KAKNnoC,YAAa,SAAS8G,GAClBA,EAASA,MAET1H,IAAI0D,MAAM5C,KAAM4G,GAChB5G,KAAK4U,cAAgBhO,EAEjB5G,KAAKqkC,gBACLrkC,KAAKqkC,cAAgBrkC,KAAKsnC,MAAM,GAAGjD,eAGnCrkC,KAAKsnC,QACLtnC,KAAKsnC,UAGTtnC,KAAKmK,UAOD,cAGJ/K,OAAOouB,QAAQ4gB,YAAYvuC,WAAWC,YAAY8C,MAAM5C,KAAM0C,YASlE2kC,MAAO,SAASnjC,GACZlE,KAAKqkC,cAAcgD,MAAMrnC,KAAKiK,IAAKjK,KAAKsnC,MAAOpjC,IAQnDukB,KAAM,SAAS4lB,GACXruC,KAAKiK,IAAMokC,EAASpkC,IACpBokC,EAAShrC,GAAG,UAAWrD,KAAKsuC,kBAAmBtuC,MAE1CA,KAAKsE,QACNtE,KAAKsE,MAAQ,GAAI5E,YAAWoR,MAAMuB,OAAO,MACrCmd,wBAAwB,KAGhCxvB,KAAKuuC,eAEL,KAAI,GAAI5sC,GAAE,EAAGC,EAAI5B,KAAKsnC,MAAM7lC,OAAUG,EAAFD,IAASA,EACzC3B,KAAKwuC,QAAQxuC,KAAKsnC,MAAM3lC,GAE5B3B,MAAK2f,QAWT6uB,QAAS,SAASvG,GACdA,EAAOA,GAAQ,GAAI7oC,QAAOC,KAAK+kC,WAC3BC,cAAerkC,KAAKqkC,gBAEQ,KAA7BrkC,KAAKsnC,MAAMjlC,QAAQ4lC,IAClBjoC,KAAKsnC,MAAMxjC,KAAKmkC,GAEpBjoC,KAAKsE,MAAM6C,aAAa8gC,EAAK/nC,UAC7B+nC,EAAK5kC,GAAG,SAAUrD,KAAK6tC,aAAc7tC,MAErCA,KAAKioC,KAAOA,CACZ,IAAIh+B,GAAMjK,KAAKiK,GASf,OARGA,GAAImS,YACHpc,KAAKyuC,UAELxkC,EAAIzF,OAAO6H,SAAS,UAAWrM,KAAM,WACjCiK,EAAIzF,OAAOiI,WAAW,UAAWzM,KAAM0C,UAAUC,QACjD3C,KAAKyuC,YAGNxG,GASXyG,WAAY,SAASzG,GACjBjoC,KAAKsnC,MAAMz/B,OAAOogC,GACdA,EAAK/nC,QAAQoE,OACbtE,KAAKsE,MAAM4E,gBAAgB++B,EAAK/nC,UAEpC+nC,EAAKjgC,GAAG,SAAUhI,KAAK6tC,aAAc7tC,OASzC2uC,WAAY,SAAS1G,GACjBjoC,KAAKgT,QAAQkB,QAAUlU,KAAKgT,QAAQ/N,WAAWgjC,EAAK/nC,UAUxDyf,KAAM,WACF3f,KAAKiK,IAAIM,SAASvK,KAAKsE,OACvBtE,KAAKiK,IAAI6J,WAAW9T,KAAKgT,SACzBhT,KAAKgT,QAAQiB,WAMTjU,KAAKioC,MAAQjoC,KAAKiK,IAAImS,aACtBpc,KAAK4uC,aAUb/sB,KAAM,WAMF,GAAI5X,GAAMjK,KAAKiK,IAAK3F,EAAQtE,KAAKsE,MAAO0O,EAAUhT,KAAKgT,OAEpDA,IAAWA,EAAQxO,SAClBwO,EAAQoB,aACLnK,GAAOA,EAAIzF,QAAUwO,EAAQ/I,KAC5BA,EAAI4kC,cAAc77B,IAIvB/I,GAAOA,EAAIzF,QAAUF,GAASA,EAAM2F,KACnCA,EAAIyB,YAAYpH,IAMxBgqC,kBAAmB,WAIf,IAAI,GAFArkC,GAAMjK,KAAKiK,IAEPrI,EAAM5B,KAAKsnC,MAAM7lC,OAAS,EAAGE,EAAIC,EAAKD,GAAG,EAAGA,IAChD3B,KAAK0uC,WAAW1uC,KAAKsnC,MAAM3lC,GAG/B3B,MAAK6hB,MAEL,IAAI7O,GAAUhT,KAAKgT,OAChB/I,IAAOA,EAAIzF,QACXwO,GAAWA,EAAQxO,QAClBwO,EAAQxJ,SAGZ,IAAIlF,GAAQtE,KAAKsE,OACbtE,KAAK4U,cAActQ,OACpB2F,GAAOA,EAAIzF,QACXF,GAASA,EAAME,QACdF,EAAMkF,gBAGHxJ,MAAKsE,YACLtE,MAAKgT,cACLhT,MAAKioC,KACZjoC,KAAKiK,IAAM,MAKfskC,cAAe,WACXvuC,KAAKgT,QAAU,GAAItT,YAAW6U,QAAQu6B,iBAAiB9uC,KAAKsE,OACxDyqC,qBAAqB,EACrBC,gBACIC,iBAAoB,SAAS9oC,GACzB,IAAI,GAAIxE,GAAE,EAAGC,EAAI5B,KAAKsnC,MAAM7lC,OAAUG,EAAFD,IAASA,EACzC,GAAG3B,KAAKsnC,MAAM3lC,GAAGzB,UAAYiG,EAAEjG,QAAS,CACpCF,KAAKioC,KAAOjoC,KAAKsnC,MAAM3lC,GACvBwE,EAAE+oC,OAAO5K,UAAYtkC,KAAKsnC,MAAM3lC,GAAG2iC,QACnC,SAIZ6K,WAAc,SAAShpC,GACnB,IAAI,GAAIxE,GAAE,EAAGC,EAAI5B,KAAKsnC,MAAM7lC,OAAUG,EAAFD,IAASA,EACzC,GAAG3B,KAAKsnC,MAAM3lC,GAAGzB,UAAYiG,EAAEjG,QAAS,CACpCF,KAAKgL,UAAU,aAAchL,KAAKsnC,MAAM3lC,GACxC,SAIZytC,gBAAmB,SAASjpC,GACxBnG,KAAK4I,WAAY,CACjB,IAAIq/B,GAAOjoC,KAAKioC,IAChB,IAAG9hC,EAAEm+B,SACEtkC,KAAKqkC,cAActI,OAAOx3B,IAAI,YAC7B0jC,EAAK7C,aAAaj/B,EAAE+oC,OAAO5K,UAE3Bn+B,EAAE+oC,OAAOjqC,WAAWgjC,EAAK/nC,aAE1B,IAAGiG,EAAEmT,OACR2uB,EAAKlrB,UAAUrd,WAAW0b,OAAOC,WAC7BlV,EAAEmT,OAAO+1B,sBAEV,CACHpH,EAAK3C,IAAIn/B,EAAE+oC,OAAOI,KAAM1J,KAAM,WAC9B,IAAIn1B,GAAWzQ,KAAKqkC,cAAcK,OAAOp8B,MAAM,GAC3CoI,EAAW1Q,KAAKqkC,cAAcK,OAAOp8B,MACrCtI,KAAKqkC,cAAcK,OAAO7S,WAAa,GACvC0d,EAAYppC,EAAE+oC,OAAOI,IAAI12B,SAASC,YAClC22B,EAAavH,EAAK/nC,QAAQ0Y,SAASC,YACnC42B,EAAWxH,EAAKh7B,QAAUwD,GAC1B8+B,EAAUzJ,eAAe0J,GACzBE,EAAWzH,EAAKh7B,QAAUyD,GAC1B8+B,EAAW1J,eAAeyJ,IAC3BE,KAAa,GAAQC,KAAa,IACjC1vC,KAAK4uC,YAIb,aADO5uC,MAAK4I,WACL,GAEX+mC,kBAAqB3vC,KAAK4uC,UAC1BjrC,MAAO3D,SAQnByuC,QAAS,WACFzuC,KAAKioC,MACJjoC,KAAKioC,KAAK3C,IAAItlC,KAAKiK,KAAM27B,KAAM,YAQvCgJ,UAAW,WACP,GAAI3G,GAAOjoC,KAAKioC,IAChBjoC,MAAKgT,QAAQkB,QACTlU,KAAKgT,QAAQ/N,WAAWgjC,EAAK/nC,SAAUokC,UAAW2D,EAAK3D,YAM/DuJ,aAAc,SAAS5F,EAAMhC,GACrBjmC,KAAK4I,WACL5I,KAAKgT,QAAQkB,QACTlU,KAAKgT,QAAQ/N,WAAWgjC,EAAK/nC,SAAUokC,UAAW2D,EAAK3D,cAMvEplC,IAAImvB,KAAK,iBAAkBjvB,OAAOouB,QAAQ4gB,aCpY1ClvC,IAAIC,UAAU,kBA4CdC,OAAOouB,QAAQoiB,cAAgB,SAAShpC,GACpC1H,IAAI0D,MAAM5C,KAAM4G,IAGpBxH,OAAOouB,QAAQoiB,cAAczvC,WAYzB0vC,eAAgB,KAKhBC,UAAW,KAWXrnB,KAAM,SAASqnB,GACX9vC,KAAK8vC,UAAYA,EACd9vC,KAAK6vC,yBAA0B3wC,KAAIG,KAAKuF,QACvC5E,KAAK+vC,WACL/vC,KAAKoD,KAAKpD,KAAK6vC,iBAEnBC,EAAUzsC,GAAG,UAAWrD,KAAKgwC,cAAehwC,OAShDoD,KAAM,SAASY,GACXhE,KAAK+H,SACL/D,EAAMX,IACFG,KAAQxD,KAAKyD,OACbE,MAAO3D,OAEXA,KAAK6vC,eAAiB7rC,GAQ1B+D,OAAQ,WACD/H,KAAK6vC,gBACJ7vC,KAAK6vC,eAAe7nC,GAAG,OAAQhI,KAAKyD,OAAQzD,OAQpDyD,OAAQ,WACDzD,KAAK8vC,UAAUhuC,OACd9B,KAAK8vC,UAAU/Q,YAEnB/+B,KAAK+vC,YAQTA,SAAU,WACN/vC,KAAK6vC,eAAejsC,KAAK,SAASC,GAC9B,GAAItC,GAAQnC,OAAO4jB,KAAKiC,cAAcphB,EAAQ3E,IAAI0D,OAC9CyjB,sBAAuB,cACxBrmB,KAAKiwC,0BACL1uC,IACCvB,KAAK8vC,UAAU1vC,IAAImB,IAExBvB,MACHA,KAAK8vC,UAAUjW,YAKnBmW,cAAe,WACXhwC,KAAK+H,WAKb7I,IAAImvB,KAAK,mBAAoBjvB,OAAOouB,QAAQoiB,eClJ5C1wC,IAAIC,UAAU,UAgEdC,OAAO8wC,cAAgBhxC,IAAIoB,OAAOlB,OAAO8K,UAiBrCimC,UAAW,KAoBX9L,cAAe,KAMfiJ,UAAW,KAeX8C,cAAe,KAOf92B,OAAQ,KAMRwB,KAAM,KAONC,OAAQ,KAKRs1B,YAAa,KAMbp5B,cAAe,WACRjX,KAAKmwC,oBAAqB/wC,QAAO8K,WAChClK,KAAKmwC,UAAYnwC,KAAKmwC,UAAUlmC,KAG/BjK,KAAKiK,MACNjK,KAAKiK,QAET/K,IAAI2K,QAAQ7J,KAAKiK,KACbw9B,WAAYznC,KAAKmwC,UAAUG,gBAC3BrM,UAAWjkC,KAAKmwC,UAAUI,eAC1BC,cAAexwC,KAAKmwC,UAAUM,mBAC9B5jC,MAAO7M,KAAKmwC,UAAU3O,aAGrBxhC,KAAKqkC,wBAAyBjlC,QAAOC,KAAKgnC,gBAC3CrmC,KAAKqkC,cAAgB,GAAIjlC,QAAOC,KAAKgnC,cACjCrmC,KAAKqkC,gBAEbrkC,KAAKstC,UAAY,GAAIluC,QAAOC,KAAK+kC,WAC7BC,cAAerkC,KAAKqkC,gBAGxBrkC,KAAKowC,cAAgB,GAAIlxC,KAAIG,KAAKuF,MAClC5E,KAAKowC,cAAchwC,IAAIJ,KAAKqkC,cAAcK,OAAOx9B,YAEjDlH,KAAK+J,SAEL7K,KAAI0E,KAAK5D,KAAKmwC,UAAUpmC,OAAQ,SAASzF,GACrCA,EAAMkY,mBAAoB,GAAQxc,KAAK+J,OAAOjG,KAAKQ,EAAMsF,UAC1D5J,MAEHA,KAAK+a,OAAS/a,KAAKmwC,UAAUhxB,YAE7B/f,OAAO8wC,cAAcrwC,WAAWoX,cAAclX,KAAKC,OAKvDoD,KAAM,WACFpD,KAAKstC,UAAUjqC,GAAG,SAAUrD,KAAK0wC,QAAS1wC,MAC1CA,KAAKqkC,cAAchhC,GAAG,eAAgBrD,KAAK2wC,SAAU3wC,MACrDA,KAAKiK,IAAIzF,OAAO6H,SAAS,UAAWrM,KAAMA,KAAK4wC,YAE/C5wC,KAAKstC,UAAUhI,IAAItlC,KAAKmwC,WAEpBnwC,KAAK4U,cAAci8B,eAAgB,IACnC7wC,KAAKqD,GAAG,SAAUrD,KAAK8wC,uBAAwB9wC,MAC/CA,KAAK8wC,2BAObx4B,YAAa,WACTlZ,OAAO8wC,cAAcrwC,WAAWyY,YAAY1V,MAAM5C,KAAM0C,WACxD1C,KAAK2wC,WACA3wC,KAAKkd,QAGNld,KAAKkd,QAAQ7Z,IACT8Z,aACIgR,GAAInuB,KAAKoD,KACTO,MAAO3D,KACPuV,QAAQ,KANhBvV,KAAKoD,QAoBb2tC,WAAY,SAAS33B,EAAOC,GACxB,GAAI23B,GAAYhxC,KAAKqkC,cAActI,OAAOx3B,IAAI,QAC1C0sC,EAAQD,EAAU53B,MAAQ43B,EAAU33B,OAIpC6D,EAAUld,KAAKkd,QACfg0B,EAAeh0B,GAAWA,EAAQi0B,UAAa,EAC9C/3B,GAASpZ,KAAK4U,cAAcwE,MAC7Bg4B,EAAgBl0B,GAAWA,EAAQm0B,WAAc,EAChDh4B,GAAUrZ,KAAK4U,cAAcyE,MAclC,OAbI63B,IACA73B,EAAS63B,EAAcD,EACnBG,GAAgB/3B,EAAS+3B,GACzB/3B,EAAS+3B,EACTh4B,EAAQC,EAAS43B,GAEjB73B,EAAQ83B,GAELE,IACPh4B,EAAQg4B,EAAeH,EACvB53B,EAAS+3B,IAGLh4B,MAAOA,EAAOC,OAAQA,IAMlCq3B,QAAS,WACL,IAAK1wC,KAAK4I,WAAa5I,KAAKstC,UAAUrgC,MAAO,CACzCjN,KAAK4I,WAAY,CACjB,IAAI0oC,GAActxC,KAAKstC,UAAUxI,eAAe9kC,KAAKiK,IACrDjK,MAAKqwC,YAAcrwC,KAAKiK,IAAI+5B,iBAAiBsN,GAC7CtxC,KAAKiK,IAAI+S,aAAas0B,SACftxC,MAAK4I,YAOpBgoC,WAAY,WACR,IAAK5wC,KAAK4I,UAAW,CACjB,GAAIkS,GAAO9a,KAAKiK,IAAIsS,SACpBvc,MAAK4I,WAAY,EACbkS,IAAS9a,KAAKqwC,YACdrwC,KAAKstC,UAAUvwB,UAAU/c,KAAKiK,IAAImS,aAElCpc,KAAKstC,UAAUhI,IAAItlC,KAAKiK,WAErBjK,MAAK4I,UACZ5I,KAAKqwC,YAAcv1B,IAM3Bg2B,uBAAwB,WACpB9wC,KAAKowC,cAAcrR,YAEnB/+B,KAAKstC,UAAUQ,eACf,IAAI7gC,GAAQjN,KAAKstC,UAAUrgC,MAGvBskC,EAAWvxC,KAAKiK,IAAIiW,UACpBsxB,KACA7kC,IACJ3M,MAAKqkC,cAAcK,OAAO9gC,KAAK,SAASsH,GACpClL,KAAKstC,UAAU7I,SAASv5B,EACxB,IAAI6P,GAAS/a,KAAKstC,UAAUxI,eAAe9kC,KAAKiK,KAC5C6Q,EAAO9a,KAAKiK,IAAI+5B,iBAAiBjpB,GAEjC02B,EAAkBv4B,KAAKC,IACvB4B,EAAOhC,WAAaw4B,EAAS/4B,EAC7BuC,EAAO9B,YAAcs4B,EAAS94B,GAE9BzL,EAAahN,KAAKiK,IAAIs3B,qBAAqBzmB,GAE3CirB,EAAO7sB,KAAK8sB,IAAIyL,EAAkBzkC,MAChC8N,IAAQ02B,KAAiBA,EAAa12B,GAAMirB,KAAOA,KACrDyL,EAAa12B,IACT5P,IAAKA,EACL66B,KAAMA,GAEa,IAAvBp5B,EAAMtK,QAAQyY,IAAenO,EAAM7I,KAAKgX,KAE7C9a,KAGH,KAAK,GAAI2B,GAAE,EAAGinB,EAAGjc,EAAMlL,OAAUmnB,EAAFjnB,IAAQA,EACnC3B,KAAKowC,cAAchwC,IAAIoxC,EAAa7kC,EAAMhL,IAAIuJ,IAMlD,IAHA+B,GAASjN,KAAKstC,UAAU7I,SAASx3B,GACjCjN,KAAKstC,UAAUU,eAEX/gC,GAASjN,KAAKowC,cAAcve,WAAa,EAAG,CAC5C,GAAInhB,GAAW1Q,KAAKowC,cAAc9nC,MAAM,GACpCmI,EAAWzQ,KAAKowC,cAAc9nC,MAAMtI,KAAKowC,cAAcve,WAAW,EAClE5kB,GAAM1I,IAAI,SAAWkM,EAASlM,IAAI,SAClCvE,KAAKstC,UAAU7I,SAASh0B,GACjBxD,EAAM1I,IAAI,SAAWmM,EAASnM,IAAI,UACzCvE,KAAKstC,UAAU7I,SAAS/zB,GAIhC1Q,KAAK0wC,WAUTrJ,MAAO,SAASnjC,GACZlE,KAAKqkC,cAAcgD,MAAMrnC,KAAKiK,KAAMjK,KAAKstC,WAAYppC,IAKzDyW,cAAe,WACX3a,KAAKiK,IAAIzF,OAAOiI,WAAW,UAAWzM,KAAMA,KAAK4wC,YACjD5wC,KAAKstC,UAAUtlC,GAAG,SAAUhI,KAAK0wC,QAAS1wC,MAC1CA,KAAKqkC,cAAcr8B,GAAG,eAAgBhI,KAAK2wC,SAAU3wC,MACrDZ,OAAO8wC,cAAcrwC,WAAW8a,cAAc/X,MAAM5C,KAAM0C,cAKlExD,IAAI0b,IAAI,mBAAoBxb,OAAO8wC,eCzWnChxC,IAAIC,UAAU,gBAyCdC,OAAOiH,MAAMqrC,kBAAoB,SAAS9qC,GACtCxH,OAAOiH,MAAMqrC,kBAAkB7xC,WAAWC,YAAY8C,MAAM5C,KAAM0C,WAElEkE,EAASA,KAET,IAAI7D,GAAM6D,EAAO7D,UACV6D,GAAO7D,IAEd7D,IAAI0D,MAAM5C,KAAM4G,GAEhB5G,KAAKqG,MAAQrG,KAAK2xC,QAAQ5uC,IAG9B7D,IAAIoB,OAAOlB,OAAOiH,MAAMqrC,kBAAmBxyC,IAAImH,MAAMurC,UAUjDC,YAAY,EAQZF,QAAS,SAAS5uC,GACd,GAEI+uC,GAAGr3B,EAAOs3B,EAFV1rC,KACAiK,EAAS5Q,WAAWwN,KAAK8kC,cAAcjvC,EAE3C,KAAI+uC,IAAKxhC,GACFA,EAAO2hC,eAAeH,KACrBr3B,EAAQq3B,EAAEr3B,MAAM,KACbA,EAAMhZ,OAAS,IACdswC,EAAUt3B,EAAM,GAChBpU,EAAM0rC,GAAW1rC,EAAM0rC,OACvB1rC,EAAM0rC,GAASt3B,EAAMxT,MAAM,GAAGiK,KAAK,MAAQlR,KAAK6xC,WAC5C7xC,KAAKkyC,YAAY5hC,EAAOwhC,IAAMxhC,EAAOwhC,IAIrD,OAAOzrC,IASX8rC,QAAS,SAASnF,GACdA,EAAOA,GAAQh1B,SAASsG,SAASnO,IAEjC,IAEI5J,GAAIurC,EAFJxhC,KAEOjK,EAAQrG,KAAKqG,KACxB,KAAIE,IAAMF,GACN,GAAGA,EAAM4rC,eAAe1rC,GACpB,IAAIurC,IAAKzrC,GAAME,GACX+J,EAAO/J,EAAK,IAAMurC,GAAK9xC,KAAK6xC,WACxBO,SAASpyC,KAAKqyC,YAAYhsC,EAAME,GAAIurC,KAAOzrC,EAAME,GAAIurC,EAMrEpyC,YAAWwN,KAAKolC,cACZhiC,EAAQ5Q,WAAWwN,KAAK8kC,cAAchF,GAE1C,IAAIuF,GAAY7yC,WAAWwN,KAAKslC,mBAAmBliC,GAE/CmiC,EAAQzF,EAAK3qC,QAAQ,IAKzB,OAJGowC,GAAQ,IACPzF,EAAOA,EAAK0F,UAAU,EAAGD,IAGtBvzC,IAAIk6B,UAAU4T,EAAMuF,MC9HnCrzC,IAAIC,UAAU,UAQdC,OAAOuzC,KAAO,IAAKzzC,IAAIoB,OAAOpB,IAAIsG,KAAKkoB,YAOnCklB,OAAQC,UAAUC,UAAYD,UAAUE,aAMxCC,KAAM,KAKNlzC,YAAa,WACTE,KAAKmK,UAKD,YAEJnK,KAAKgzC,QACL9zC,IAAIsG,KAAKkoB,WAAW5tB,YAAY8C,MAAM5C,KAAM0C,YAgBhDtC,IAAK,SAASwyC,EAAQK,GAClB,GAAIvQ,GAAM1iC,KAAKgzC,KAAKJ,EACpB,IAAKlQ,EAGD,IAAK,GAAI55B,KAAOmqC,GACZvQ,EAAI55B,GAAO5J,IAAI0D,MAAM8/B,EAAI55B,OAAYmqC,EAAOnqC,QAHhD9I,MAAKgzC,KAAKJ,GAAU1zC,IAAI0D,SAAUqwC,EAMjCL,IAAUA,IAAW5yC,KAAK4yC,OAEkB,IAAtC5yC,KAAK4yC,OAAOvwC,QAAQuwC,EAAS,MAGpC5yC,KAAK+I,IAAI/I,KAAK4yC,QAJd5yC,KAAK+I,IAAI6pC,IAkBjB7pC,IAAK,SAAS6pC,GAKV,IAAK,GADYM,GAFbC,EAAOP,EAASA,EAAOn4B,MAAM,QAC7BlU,EAAK,GACL0sC,KACKtxC,EAAE,EAAGinB,EAAGuqB,EAAK1xC,OAAUmnB,EAAFjnB,IAAQA,EAElC,GADA4E,IAAOA,GAAM,KAAO,IAAM4sC,EAAKxxC,GAC3B4E,IAAMvG,MAAKgzC,KAAM,CACjBE,EAASlzC,KAAKgzC,KAAKzsC,EACnB,KAAK,GAAI6sC,KAAOF,GACRE,IAAOH,GACP/zC,IAAI0D,MAAMqwC,EAAOG,GAAMF,EAAOE,IAE9BH,EAAOG,GAAOl0C,IAAI0D,SAAUswC,EAAOE,IAOnD,IAAK,GAAIA,KAAOH,GAAQ,CAIpB,IAAK,GAHDvQ,GAAM7a,OACNwrB,EAAQD,EAAI34B,MAAM,KAClB64B,GAAU,EACL3xC,EAAE,EAAGinB,EAAGyqB,EAAM5xC,OAAUmnB,EAAFjnB,IAAQA,EAAG,CACtC,GAAIP,GAAOiyC,EAAM1xC,EACjB,MAAIP,IAAQshC,IAEL,CACH4Q,GAAU,CACV,OAHA5Q,EAAMA,EAAIthC,GAMbkyC,GACDp0C,IAAI0D,MAAM8/B,EAAKuQ,EAAOG,IAG9BpzC,KAAK4yC,OAASA,EACd5yC,KAAKgL,UAAU,WAAY4nC"}
\ No newline at end of file
diff --git a/interfaces/navigateur/public/libs/GeoExt/lib/GeoExt/widgets/ArcgisLegend.js b/interfaces/navigateur/public/libs/GeoExt/lib/GeoExt/widgets/ArcgisLegend.js
index 42832a7d..1528fd73 100644
--- a/interfaces/navigateur/public/libs/GeoExt/lib/GeoExt/widgets/ArcgisLegend.js
+++ b/interfaces/navigateur/public/libs/GeoExt/lib/GeoExt/widgets/ArcgisLegend.js
@@ -25,13 +25,21 @@ GeoExt.ArcgisLegend = Ext.extend(GeoExt.LayerLegend, {
url: this.getLegendUrl(layer),
success: function(response){
if(response && response.layers && response.layers.length){
+ var layersName = layer.options.layers;
+ var layersNameArray = [];
+ if(layersName && layersName.search("show:") === 0){
+ layersNameArray = layersName.substr(5).split(",");
+ }
+
var html = "";
$.each(response.layers, function(key, layer){
- html += "
" + layer.layerName + ""
- $.each(layer.legend, function(key2, style){
- html += "
";
- html += "
" + style.label + "";
- });
+ if (!layersName || layersNameArray.indexOf(String(key)) !== -1) {
+ html += "
" + layer.layerName + ""
+ $.each(layer.legend, function(key2, style){
+ html += "
";
+ html += "
" + style.label + "";
+ });
+ }
});
html += "
"
that.add({
diff --git a/interfaces/navigateur/public/libs/extension/OpenLayers/fixOpenLayers.js b/interfaces/navigateur/public/libs/extension/OpenLayers/fixOpenLayers.js
new file mode 100644
index 00000000..00938222
--- /dev/null
+++ b/interfaces/navigateur/public/libs/extension/OpenLayers/fixOpenLayers.js
@@ -0,0 +1,21 @@
+require.config({
+ paths: {
+ "fixOpenLayersRequire": "libs/extension/OpenLayers/DrawFeatureEx"
+ },
+ shim: {
+ 'fixOpenLayersRequire': {
+ deps: [
+ 'libs/extension/OpenLayers/CircleToMeasure',
+ 'libs/extension/OpenLayers/MeasureCircle',
+ 'libs/extension/OpenLayers/resetLayersZIndex',
+ 'libs/extension/OpenLayers/fixShouldDraw'
+ ]
+ }
+ }
+});
+
+define(['fixOpenLayersRequire'], function() {
+});
+
+
+
diff --git a/interfaces/navigateur/public/libs/extension/OpenLayers/fixShouldDraw.js b/interfaces/navigateur/public/libs/extension/OpenLayers/fixShouldDraw.js
new file mode 100644
index 00000000..e4efe872
--- /dev/null
+++ b/interfaces/navigateur/public/libs/extension/OpenLayers/fixShouldDraw.js
@@ -0,0 +1,16 @@
+OpenLayers.Tile.prototype.shouldDraw = function() {
+ if(!this.layer){
+ return false;
+ }
+ var withinMaxExtent = false,
+ maxExtent = this.layer.maxExtent;
+ if (maxExtent) {
+ var map = this.layer.map;
+ var worldBounds = map.baseLayer.wrapDateLine && map.getMaxExtent();
+ if (this.bounds.intersectsBounds(maxExtent, {inclusive: false, worldBounds: worldBounds})) {
+ withinMaxExtent = true;
+ }
+ }
+
+ return withinMaxExtent || this.layer.displayOutsideMaxExtent;
+}
\ No newline at end of file
diff --git a/interfaces/navigateur/public/libs/extension/OpenLayers/resetLayersZIndex.js b/interfaces/navigateur/public/libs/extension/OpenLayers/resetLayersZIndex.js
index 74c57089..6c980446 100644
--- a/interfaces/navigateur/public/libs/extension/OpenLayers/resetLayersZIndex.js
+++ b/interfaces/navigateur/public/libs/extension/OpenLayers/resetLayersZIndex.js
@@ -7,4 +7,15 @@ OpenLayers.Map.prototype.resetLayersZIndex = function() {
this.setLayerZIndex(layer, i);
}
}
+};
+
+OpenLayers.Map.prototype.setLayerZIndex = function (layer, zIdx) {
+ var type = 'Overlay';
+ if(layer.CLASS_NAME === "OpenLayers.Layer.Vector" || layer.CLASS_NAME === "OpenLayers.Layer.Markers"){
+ type = "Vecteur";
+ }
+ layer.setZIndex(
+ this.Z_INDEX_BASE[layer.isBaseLayer ? 'BaseLayer' : type]
+ + zIdx * 5
+ );
};
\ No newline at end of file
diff --git a/interfaces/navigateur/public/libs/extension/ie/ieUpgrade.js b/interfaces/navigateur/public/libs/extension/ie/ieUpgrade.js
index b95d2642..df2b51ec 100644
--- a/interfaces/navigateur/public/libs/extension/ie/ieUpgrade.js
+++ b/interfaces/navigateur/public/libs/extension/ie/ieUpgrade.js
@@ -46,4 +46,28 @@ if(!Math.trunc){
Math.trunc = function(x) {
return x < 0 ? Math.ceil(x) : Math.floor(x);
}
+}
+
+
+if (!Array.prototype.find) {
+ Array.prototype.find = function(predicate) {
+ if (this == null) {
+ throw new TypeError('Array.prototype.find a été appelé sur null ou undefined');
+ }
+ if (typeof predicate !== 'function') {
+ throw new TypeError('predicate doit être une fonction');
+ }
+ var list = Object(this);
+ var length = list.length >>> 0;
+ var thisArg = arguments[1];
+ var value;
+
+ for (var i = 0; i < length; i++) {
+ value = list[i];
+ if (predicate.call(thisArg, value, i, list)) {
+ return value;
+ }
+ }
+ return undefined;
+ };
}
\ No newline at end of file
diff --git a/interfaces/navigateur/public/libs/proj/epsgDef.js b/interfaces/navigateur/public/libs/proj/epsgDef.js
index 0fc95c62..ca8bb5c6 100644
--- a/interfaces/navigateur/public/libs/proj/epsgDef.js
+++ b/interfaces/navigateur/public/libs/proj/epsgDef.js
@@ -8,11 +8,11 @@ Proj4js.defs["EPSG:32184"] = "+title=NAD83/MTM_zone_4 +proj=tmerc +lat_0=0 +lon_
Proj4js.defs["EPSG:32183"] = "+title=NAD83/MTM_zone_3 +proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
Proj4js.defs["EPSG:32182"] = "+title=NAD83/MTM_zone_2 +proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
Proj4js.defs["EPSG:32181"] = "+title=NAD83/MTM_zone_1 +proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
-Proj4js.defs["EPSG:3857"] = "+title=Google_Mercator EPSG:3857 +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";
-Proj4js.defs["EPSG:32198"] = "+title=Lambert_conique_conforme +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs";
-Proj4js.defs["EPSG:26917"] = "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
-Proj4js.defs["EPSG:26918"] = "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
-Proj4js.defs["EPSG:26919"] = "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
-Proj4js.defs["EPSG:26920"] = "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
-Proj4js.defs["EPSG:26921"] = "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
-Proj4js.defs["EPSG:3798"] = "+title=Lambert_conique_conforme_MTQ +proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs";
\ No newline at end of file
+Proj4js.defs["EPSG:3857"] = "+title=WGS84_Mercator(Google) +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs";
+Proj4js.defs["EPSG:32198"] = "+title=NAD83/Lambert_conique_conforme +proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_0=0 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs no_defs";
+Proj4js.defs["EPSG:26917"] = "+title=NAD83/UTM_zone_17N +proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
+Proj4js.defs["EPSG:26918"] = "+title=NAD83/UTM_zone_18N +proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
+Proj4js.defs["EPSG:26919"] = "+title=NAD83/UTM_zone_19N +proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
+Proj4js.defs["EPSG:26920"] = "+title=NAD83/UTM_zone_20N +proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
+Proj4js.defs["EPSG:26921"] = "+title=NAD83/UTM_zone_21N +proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs";
+Proj4js.defs["EPSG:3798"] = "+title=NAD83/MTQ_Lambert +proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0=800000 +y_0=0 +ellps=GRS80 +datum=NAD83 +units=m +no_defs";
\ No newline at end of file
diff --git a/services/igo_commun/app/controllers/AuthentificationController.php b/services/igo_commun/app/controllers/AuthentificationController.php
index fc776be4..66e66e84 100644
--- a/services/igo_commun/app/controllers/AuthentificationController.php
+++ b/services/igo_commun/app/controllers/AuthentificationController.php
@@ -7,7 +7,7 @@ abstract class AuthentificationController extends Controller{
* Fonction retournant le dernier message d'erreur à afficher
* en cas d'erreur lors de l'authentification.
*/
- abstract public function obtenirMessageErreur();
+ abstract public function obtenirMessagesErreur();
/*
* Fonction publique permettant l'authentification à un serveur LDAP.
@@ -48,5 +48,19 @@ abstract public function estAdmin();
* Retourne : bool
*/
abstract public function estPilote();
+
+ /*
+ * Libre au developpeur d'implémenter cette fonction
+ * selon ses critères pour l'utilisateur.
+ * Retourne : String
+ */
+ abstract public function obtenirPrenom();
+
+ /*
+ * Libre au developpeur d'implémenter cette fonction
+ * selon ses critères pour l'utilisateur.
+ * Retourne : String
+ */
+ abstract public function obtenirNom();
}
\ No newline at end of file
diff --git a/services/igo_commun/app/controllers/AuthentificationExterne.php b/services/igo_commun/app/controllers/AuthentificationExterne.php
index b7994b93..bc1e235c 100644
--- a/services/igo_commun/app/controllers/AuthentificationExterne.php
+++ b/services/igo_commun/app/controllers/AuthentificationExterne.php
@@ -9,9 +9,11 @@ class AuthentificationExterne extends AuthentificationController {
protected $estAdmin;
protected $estPilote;
protected $igo_utilisateur;
- protected $messageErreur = "Erreur d'authentification";
+ protected $nom;
+ protected $prenom;
+ protected $messageErreur = ["Erreur d'authentification"];
- public function obtenirMessageErreur() {
+ public function obtenirMessagesErreur() {
return $this->messageErreur;
}
@@ -27,6 +29,8 @@ public function authentification($identifiant, $motDePasse) {
$this->profilActif = "";
$this->motDePasseExpire = false;
$this->motDePasseValide = true;
+ $this->prenom = stristr($_SERVER['PHP_AUTH_USER'], "@", true);
+ $this->nom = '';
return true;
}else{
return false;
@@ -60,4 +64,12 @@ public function deconnexion() {
}
+ public function obtenirNom(){
+ return $this->nom;
+ }
+
+ public function obtenirPrenom(){
+ return $this->nom;
+ }
+
}
\ No newline at end of file
diff --git a/services/igo_commun/app/controllers/AuthentificationLdap.php b/services/igo_commun/app/controllers/AuthentificationLdap.php
index 181e25a9..562848f1 100644
--- a/services/igo_commun/app/controllers/AuthentificationLdap.php
+++ b/services/igo_commun/app/controllers/AuthentificationLdap.php
@@ -9,11 +9,13 @@ class AuthentificationLdap extends AuthentificationController {
protected $estAdmin;
protected $estPilote;
protected $igo_utilisateur;
+ protected $prenom;
+ protected $nom;
- protected $messageErreur = "";
+ protected $messagesErreur = [];
- public function obtenirMessageErreur(){
- return $this->messageErreur;
+ public function obtenirMessagesErreur(){
+ return $this->messagesErreur;
}
/*
@@ -37,8 +39,8 @@ public function estPilote() {
/*
* Fonction publique permettant l'authentification à un serveur LDAP.
* Paramètres : identifiant, mot de passe
- * Définit un message d'erreur dans la variable $this->messageErreur
- * $this->messageErreur est utilisé pour afficher un message expliquant
+ * Définit un message d'erreur dans la variable $this->messagesErreur
+ * $this->messagesErreur est utilisé pour afficher un message expliquant
* pourquoi l'authentification à échouée.
*/
public function authentification($identifiant, $motDePasse){
@@ -47,13 +49,13 @@ public function authentification($identifiant, $motDePasse){
/* On s'authentifie dans le LDAP */
$this->authentifierLDAP($identifiant, $motDePasse);
-
+
if($this->motDePasseExpire){
- $this->messageErreur = "Votre mot de passe est expiré. Veuillez le changer pour avoir accès au système!";
+ $this->messagesErreur[] = "Votre mot de passe est expiré. Veuillez le changer pour avoir accès au système!";
return false;
}
if(!$this->motDePasseValide){
- $this->messageErreur = "L'authentification a échouée.";
+ $this->messagesErreur[] = "L'authentification a échouée.";
}
if($this->motDePasseValide) {
@@ -135,57 +137,42 @@ public function deconnexion(){
}
- /*
- * Fonction identifiant un utilisateur à un LDAP
- * Cette fonction met à jour la variable $this->profil
- * Retourne true en cas de succes, sinon retourne false.
- */
- private function authentifierLDAP($identifiant, $motDePasse){
- $configuration = $this->getDI()->get("config");
+ /**
+ *
+ * @param string $ldapHost
+ * @param string $ldapPort
+ * @param string $identifiant CN
+ * @param string $mdp
+ * @param string $organisation Ex : o=MSP
+ */
+ private function tenterAuthentificationLDAP($ldapHost, $ldapPort, $identifiant, $mdp, $organisation){
- $ldapInterne = $configuration->application->authentification->ldap->interne;
- $ldapExterne = $configuration->application->authentification->ldap->externe;
- $ldapPort = $configuration->application->authentification->ldap->port;
-
- // Determiner si utilisateur interne ou externe
- if(!isset($configuration->application->authentification->ldap->host)){
- if(strlen($identifiant) === 8){
- $ldapHost = $ldapExterne;
- }else{
- $ldapHost = $ldapInterne;
- }
- } else {
- $ldapHost = $configuration->application->authentification->ldap->host;
- }
-
// Se connecter a LDAP
$ldapconn = ldap_connect( $ldapHost, $ldapPort );
if(!$ldapconn) {
- //throw new Exception("Could not connect to LDAP");
return false;
}
// Bind anonyme a LDAP
$bind = ldap_bind($ldapconn);
if (!$bind) {
- //throw new Exception("Could not bind to LDAP");
return false;
}
// Rechercher nom unique de l'utilisateur
- $organisation = $configuration->application->authentification->ldap->organisation;
$filter = "(&(cn={$identifiant})(objectclass=person))";
$searchUser = ldap_search($ldapconn, $organisation, $filter);
- if (!$searchUser) {
- //throw new Exception("Erreur lors de la recherche ldap: LDAP-Error: %s
\n" . ldap_error($ldapconn));
+ if (!$searchUser) {
return false;
}
- $userEntries = ldap_get_entries($ldapconn, $searchUser);
+ $userEntries = ldap_get_entries($ldapconn, $searchUser);
if(count($userEntries) != 2 || $userEntries["count"] != 1){
- //throw new Exception("Could not find user in ldap.");
return false;
}
-
+
+ $this->prenom = isset($userEntries[0]["givenname"][0]) ? $userEntries[0]["givenname"][0] : $identifiant;;
+ $this->nom = isset($userEntries[0]["sn"][0]) ? $userEntries[0]["sn"][0] : "";
+
$this->identifiant = $identifiant;
$this->profils = isset($userEntries[0]["groupmembership"]) ? $userEntries[0]["groupmembership"] : "";
@@ -204,11 +191,63 @@ private function authentifierLDAP($identifiant, $motDePasse){
// Valider le mot de passe
$ldapcon2 = ldap_connect($ldapHost, $ldapPort);
- if(strlen($motDePasse) == 0){
+ if(strlen($mdp) == 0){
$ldapbind2 = false;
}else{
- $ldapbind2 = ldap_bind($ldapcon2, $userEntries[0]["dn"], $motDePasse);
+ $ldapbind2 = @ldap_bind($ldapcon2, $userEntries[0]["dn"], $mdp);
}
$this->motDePasseValide = $ldapbind2;
+
+ if($this->motDePasseValide){
+ $this->messagesErreur = [];
+ }
+ return true;
}
+
+ /*
+ * Fonction identifiant un utilisateur à un LDAP
+ * Cette fonction met à jour la variable $this->profil
+ * Retourne true en cas de succes, sinon retourne false.
+ */
+ private function authentifierLDAP($identifiant, $motDePasse){
+
+ $configuration = $this->getDI()->get("config");
+
+ $ldapHosts = [];
+
+ if(isset($configuration->application->authentification->ldap->interne)){
+ $ldapHosts[] = $configuration->application->authentification->ldap->interne;
+ }
+
+ if(isset($configuration->application->authentification->ldap->externe)){
+ $ldapHosts[] = $ldapExterne = $configuration->application->authentification->ldap->externe;
+ }
+
+ if(isset($configuration->application->authentification->ldap->host)){
+ $ldapHosts[] = $configuration->application->authentification->ldap->host;
+ }
+
+ $ldapPort = $configuration->application->authentification->ldap->port;
+
+ $organisation = $configuration->application->authentification->ldap->organisation;
+
+ $authentificationAReussie = false;
+
+ foreach($ldapHosts as $ldapHost){
+ if($this->tenterAuthentificationLDAP($ldapHost, $ldapPort, $identifiant, $motDePasse, $organisation)){
+ break;
+ }
+
+ }
+
+ }
+
+ public function obtenirNom(){
+ return $this->nom;
+ }
+
+ public function obtenirPrenom(){
+ return $this->prenom;
+ }
+
}
diff --git a/services/igo_commun/app/controllers/AuthentificationLdapBasic.php b/services/igo_commun/app/controllers/AuthentificationLdapBasic.php
new file mode 100644
index 00000000..db578cea
--- /dev/null
+++ b/services/igo_commun/app/controllers/AuthentificationLdapBasic.php
@@ -0,0 +1,38 @@
+messageErreur;
}
@@ -47,4 +49,12 @@ public function deconnexion() {
}
+ public function obtenirNom(){
+ return $this->nom;
+ }
+
+ public function obtenirPrenom(){
+ return $this->prenom;
+ }
+
}
diff --git a/services/igo_commun/app/controllers/ConnexionController.php b/services/igo_commun/app/controllers/ConnexionController.php
index dcab6f55..99d3da8c 100644
--- a/services/igo_commun/app/controllers/ConnexionController.php
+++ b/services/igo_commun/app/controllers/ConnexionController.php
@@ -2,60 +2,71 @@
use Phalcon\Mvc\Controller;
class ConnexionController extends Controller{
-
+
public function indexAction() {
- $authentificationModule = $this->getDI()->get("authentificationModule");
+ $authentificationModule = $this->getDI()->get("authentificationModule");
$configuration = $this->getDI()->get("config");
- if(isset($configuration->application->authentification->authentificationExterne) && $configuration->application->authentification->authentificationExterne){
+ if(isset($configuration->application->authentification->authentificationExterne) &&
+ $configuration->application->authentification->authentificationExterne){
+
$succes = $authentificationModule->authentification(null, null);
+
if (!$succes) {
- $this->session->set("erreur", $authentificationModule->obtenirMessageErreur());
+
+ $this->setErrors();
+
if(isset($configuration->application->authentification->authentificationUri)){
return $this->response->redirect($configuration->application->authentification->authentificationUri, TRUE);
}
} else {
+
if (!$this->session->has("info_utilisateur")) {
$utilisateur = new SessionController();
$this->session->set("info_utilisateur", $utilisateur);
}
+
$this->session->get("info_utilisateur")->identifiant = $authentificationModule->obtenirIdentifiantUtilisateur();
+ $this->session->get("info_utilisateur")->prenom = $authentificationModule->obtenirPrenom();
+ $this->session->get("info_utilisateur")->nom = $authentificationModule->obtenirNom();
$this->session->get("info_utilisateur")->estAuthentifie = $authentificationModule->estAuthentifie();
$this->session->get("info_utilisateur")->estAdmin = $authentificationModule->estAdmin();
- $this->session->get("info_utilisateur")->estPilote = $authentificationModule->estPilote();
+ $this->session->get("info_utilisateur")->estPilote = $authentificationModule->estPilote();
$this->session->get("info_utilisateur")->profils = $authentificationModule->obtenirProfils();
- $this->session->get("info_utilisateur")->estAnonyme = false;
- }
+ $this->session->get("info_utilisateur")->estAnonyme = false;
+ }
}
-
+
//Vérifier si on doit se rappeler où on voulait aller
$request = new Phalcon\Http\Request();
$uri = $request->getURI();
- if(substr($uri, -strlen("/connexion/")) !== "/connexion/"){
+ if(substr($uri, -strlen("/connexion/")) !== "/connexion/"){
//Stocker l'url de redirection dans la session
$this->definirPageRedirection($uri);
}
-
+
//L'utilisateur est déjà authentifié
if($authentificationModule->estAuthentifie()){
+
//Passer à la page de choix du profil
- return $this->roleAction();
+ return $this->dispatcher->forward(array(
+ "action" => "role"
+ ));
}
-
+
//Paramètres pour l'affichage de la page de connexion
$this->view->setVar("titre", "Authentification");
- if($this->session->has("erreur")){
- $this->view->setVar("erreur", $this->session->get("erreur"));
+
+ if($this->session->has("erreurs")){
+ $this->setErrors();
}else{
- $this->view->setVar("erreur", "");
+ $this->deleteErrors();
}
-
+
$this->view->setVar("permettreAccesAnonyme", $configuration->application->authentification->permettreAccesAnonyme);
$this->view->setVar("roleUri", $configuration->application->baseUri. "connexion/role");
- $this->view->setVar("anonymeUri", $configuration->application->baseUri. "connexion/anonyme");
+ $this->view->setVar("anonymeUri", $configuration->application->baseUri. "connexion/anonyme");
$configuration->application->baseUri = $configuration->uri->services . "igo_commun/public/";
-
- $this->session->set("erreur","");
}
public function roleAction() {
@@ -69,11 +80,14 @@ public function roleAction() {
$username = $request->getPost('username', null);
$password = $request->getPost('password', null);
- $succes = $this->getDI()->get("authentificationModule")->authentification($username, $password);
+ $succes = $authentificationModule->authentification($username, $password);
if (!$succes) {
- $this->session->set("erreur", $this->getDI()->get("authentificationModule")->obtenirMessageErreur());
+ $this->setErrors();
return $this->redirigeVersPage();
}
+ else{
+ $this->deleteErrors();
+ }
if (!$this->session->has("info_utilisateur")) {
$utilisateur = new SessionController();
@@ -81,46 +95,31 @@ public function roleAction() {
}
$this->session->get("info_utilisateur")->estAuthentifie = true;
$this->session->get("info_utilisateur")->identifiant = $username;
-
+ $this->session->get("info_utilisateur")->prenom = $authentificationModule->obtenirPrenom();
+ $this->session->get("info_utilisateur")->nom = $authentificationModule->obtenirNom();
$this->session->get("info_utilisateur")->estAdmin = $authentificationModule->estAdmin();
$this->session->get("info_utilisateur")->estPilote = $authentificationModule->estPilote();
+ $this->session->get("info_utilisateur")->profils = $authentificationModule->obtenirProfils();
//L'utilisateur tente d'accéder au pilotage et il n'a pas le droit
if (!$this->session->get("info_utilisateur")->estAdmin &&
!$this->session->get("info_utilisateur")->estPilote &&
- isset($configuration->application->estPilotage) &&
+ isset($configuration->application->estPilotage) &&
$configuration->application->estPilotage === true) {
$this->session->remove("info_utilisateur");
- $this->session->set("erreur", "Droits insuffisants");
+ $this->session->setErrors(["Droits insuffisants"]);
return $this->redirigeVersPage();
}
- $profils = $this->getDI()->get("authentificationModule")->obtenirProfils();
- if (!$configuration->application->authentification->activerSelectionRole && $configuration->application->authentification->permettreAccesAnonyme) {
- $anonymeProfil = IgoProfil::find("nom = '{$configuration->application->authentification->nomProfilAnonyme}'");
- if(isset($anonymeProfil)){
- array_merge($profils, $anonymeProfil->toArray());
- }
- }
-
- $this->session->get("info_utilisateur")->profils = $profils;
-
- if($configuration->application->authentification->activerSelectionRole){
- if(count($profils) === 1){
- $this->session->get("info_utilisateur")->profilActif = $profils[0]['id'];
- return $this->redirigeVersPage();
- }
- if(!count($profils)){
- return $this->anonymeAction(TRUE);
- }
- }
}
+
//L'utilisateur doit sélectionner son rôle
$profilObligatoire = isset($_GET['force-profil']) ? $_GET['force-profil'] : false;
- if(isset($this->session->get("info_utilisateur")->estAuthentifie) && $this->session->get("info_utilisateur")->estAuthentifie &&
+ if(isset($this->session->get("info_utilisateur")->estAuthentifie) &&
+ $this->session->get("info_utilisateur")->estAuthentifie &&
($profilObligatoire || $configuration->application->authentification->activerSelectionRole)){
-
+
$configuration = $this->getDI()->get("config");
$accessTotalUri = "";
if($configuration->application->authentification->activerSelectionRole === false){
@@ -132,9 +131,30 @@ public function roleAction() {
if(!$this->obtenirPageRedirection()){
$this->definirPageRedirection($request->getURI());
}
+
+ if($configuration->application->authentification->activerSelectionRole){
+ $profils = $this->session->get("info_utilisateur")->profils;
+
+ if(!count($profils)){
+ return $this->anonymeAction(TRUE);
+ }
+ else if (
+ ($configuration->application->authentification->profilAnonyme->nom==$profils[0]['nom'])
+ && (count($profils) === 1)
+ ){
+ $this->session->get("info_utilisateur")->profilActif = $profils[0]['id'];
+ return $this->anonymeAction(TRUE);
+ }
+ else if(count($profils) === 1){
+ $this->session->get("info_utilisateur")->profilActif = $profils[0]['id'];
+ return $this->redirigeVersPage();
+ }
+ }
+
} else{
return $this->redirigeVersPage();
}
+
$configuration->application->baseUri = $configuration->uri->services . "igo_commun/public/";
}
@@ -144,7 +164,7 @@ public function accesAction() {
$this->session->get("info_utilisateur")->profilActif = $request->getPost('profil', null);
}
return $this->redirigeVersPage();
- }
+ }
public function accesTotalAction() {
$request = new \Phalcon\Http\Request();
@@ -152,8 +172,8 @@ public function accesTotalAction() {
$this->session->get("info_utilisateur")->profilActif = null;
}
return $this->redirigeVersPage();
- }
-
+ }
+
public function deconnexionAction() {
$xmlConfig = $this->session->get('configXml');
$xmlAuth = (object) array();
@@ -171,11 +191,24 @@ public function deconnexionAction() {
}
}
- $configuration->application->baseUri = $configuration->uri->services . "igo_commun/public/";
+ $configuration->application->baseUri = $configuration->uri->services . "igo_commun/public/";
$pageAccueil = $configuration->application->authentification->deconnectionAccueil;
+
+ if(isset($xmlAuth->deconnectionHttpsAccueil) && $xmlAuth->deconnectionHttpsAccueil !== false && substr($_SERVER["HTTP_REFERER"],0,8) === "https://"){
+ $pageAccueil = $xmlAuth->deconnectionHttpsAccueil;
+ if(isset($xmlAuth->directAccueil) && $xmlAuth->directAccueil === 'true'){
+ $response = new \Phalcon\Http\Response();
+ return $response->redirect($pageAccueil, true);
+ }
+ }
+
if(isset($xmlAuth->deconnectionAccueil) && $xmlAuth->deconnectionAccueil !== false){
$pageAccueil = $xmlAuth->deconnectionAccueil;
+ if(isset($xmlAuth->directAccueil) && $xmlAuth->directAccueil === 'true'){
+ $response = new \Phalcon\Http\Response();
+ return $response->redirect($pageAccueil, true);
+ }
}
$this->session->destroy();
@@ -187,10 +220,12 @@ public function deconnexionAction() {
$this->view->setVar("pageRedirection", $pageRedirection);
$this->view->setVar("seConnecter", $seConnecter);
$this->view->setVar("pageAccueil", $pageAccueil);
- }
-
+ }
+
public function anonymeAction($estAuthentifier = FALSE){
+
$configuration = $this->getDI()->get("config");
+
if($configuration->application->authentification->permettreAccesAnonyme){
if(!$this->session->has("info_utilisateur")) {
$this->session->set("info_utilisateur", new SessionController());
@@ -203,9 +238,9 @@ public function anonymeAction($estAuthentifier = FALSE){
if($configuration->offsetExists("database")) {
$nomProfilAnonyme = $this->session->get('nomProfilAnonyme');
if($nomProfilAnonyme === null){
- $nomProfilAnonyme = $configuration->application->authentification->nomProfilAnonyme;
+ $nomProfilAnonyme = $configuration->application->authentification->profilAnonyme->nom;
}
-
+
if($configuration->application->authentification->activerSelectionRole){
$profilAnonyme = IgoProfil::findFirst("nom = '{$nomProfilAnonyme}'");
if($profilAnonyme){
@@ -216,31 +251,40 @@ public function anonymeAction($estAuthentifier = FALSE){
$this->session->get("info_utilisateur")->profils = IgoProfil::find("nom = '{$nomProfilAnonyme}'")->toArray();
}
}
- return $this->redirigeVersPage();
- } else {
+ return $this->redirigeVersPage();
+ }
+ else if (isset($configuration->application->authentification->profilAnonyme->pageRedirection) && $estAuthentifier){
+ $this->definirPageRedirection($configuration->application->authentification->profilAnonyme->pageRedirection);
+ return $this->redirigeVersPage();
+ }
+ else {
$this->dispatcher->forward(array(
"controller" => "error",
"action" => "error403"
));
}
}
-
- private function redirigeVersPage(){
-
+
+ private function redirigeVersPage(){
+
+ $configuration = $this->getDI()->get("config");
$page = $this->obtenirPageRedirection();
+
if ($page) {
- $this->session->remove("page");
+ if(!$configuration->application->authentification->activerSelectionRole){
+ $this->session->remove("page");
+ }
$response = new \Phalcon\Http\Response();
$response->redirect($page, true);
- return $response;
+ return $response;
}else{
$response = new \Phalcon\Http\Response();
$configuration = $this->getDI()->get("config");
$response->redirect($configuration->application->baseUri, true);
- return $response;
+ return $response;
}
}
-
+
/**
* Page vers laquelle rediriger l'utilisateur une fois qu'il s'est correctement authentifié
* @return string
@@ -253,7 +297,7 @@ private function obtenirPageRedirection(){
return '';
}
}
-
+
private function definirPageRedirection($page = ''){
if($page){
$this->session->set('page', $page);
@@ -261,5 +305,39 @@ private function definirPageRedirection($page = ''){
$this->session->remove('page');
}
}
-
+
+ /**
+ * Défini les erreurs dans la session et la variable "erreurs" pour la vue.
+ *
+ * @param array $erreurs Tableau d'erreurs à ajouter
+ */
+
+ private function setErrors($erreurs = []){
+
+ $sessionErrors = [];
+ if($this->session->has('erreurs')){
+ $sessionErrors = $this->session->get('erreurs');
+ if(is_string($sessionErrors)){
+ $sessionErrors = [$sessionErrors];
+ }
+ }
+
+ $authErrors = $this->getDI()->get("authentificationModule")->obtenirMessagesErreur();
+
+ $errorsMerge = array_unique(array_merge($sessionErrors, $authErrors, $erreurs),SORT_LOCALE_STRING);
+
+ $this->session->set("erreurs", $errorsMerge);
+ $this->view->setVar("erreurs", $errorsMerge);
+
+ }
+
+ /**
+ * Supprime les erreurs dans la session et la variable erreurs pour la vue
+ */
+
+ private function deleteErrors(){
+ $this->session->set("erreurs", []);
+ $this->view->setVar("erreurs", []);
+ }
+
}
diff --git a/services/igo_commun/app/controllers/SessionController.php b/services/igo_commun/app/controllers/SessionController.php
index 3f7284de..1ffc56fc 100644
--- a/services/igo_commun/app/controllers/SessionController.php
+++ b/services/igo_commun/app/controllers/SessionController.php
@@ -2,6 +2,8 @@
class SessionController {
+ const ROLE_ADMIN = 'admin';
+
/*
* type : string
*/
@@ -37,6 +39,16 @@ class SessionController {
*/
public $profilActif;
+ /*
+ * type : string
+ */
+ public $nom;
+
+ /*
+ * type : string
+ */
+ public $prenom;
+
public function __construct() {
$this->identifiant = null;
@@ -46,8 +58,36 @@ public function __construct() {
$this->profils = null;
$this->estAuthentifie = false;
$this->profilActif = null;
+ $this->prenom = null;
+ $this->nom = null;
}
+ /**
+ * Vérifie que les permissions passées en paramètre
+ * sont associées à l'usager.
+ *
+ * @param string Une liste variable d'argument des permissions requises.
+ * @return bool Vrai si l'usager a tous les permissions requises.
+ */
+ public function aPermissions() {
+ $permis = true;
+
+ $permissions = func_get_args();
+ foreach($permissions as $permission) {
+ switch($permission) {
+ case SessionController::ROLE_ADMIN:
+ $permis = $this->usager->estAdmin;
+ break;
+ }
+
+ if(!$permis) {
+ break;
+ }
+ }
+
+ return $permis;
+ }
+
public function aProfil($idProfil){
foreach($this->profils as $profil){
if($profil['id'] == $idProfil){
diff --git a/services/igo_commun/app/views/connexion/index.volt b/services/igo_commun/app/views/connexion/index.volt
index 0fb02fda..2af5f58a 100644
--- a/services/igo_commun/app/views/connexion/index.volt
+++ b/services/igo_commun/app/views/connexion/index.volt
@@ -1,8 +1,10 @@
- {% if erreur !== "" %}
-
{{erreur}}
- {% endif %}
+ {% if erreurs is iterable %}
+ {% for erreur in erreurs %}
+
{{erreur}}
+ {% endfor %}
+ {%endif%}