//funciones para el mapa
var categorias = new Array(50);
var categoriasSingular = new Array(50);
var tipos = null;
var iconos = null;
var iconosArchivos = null;
var recursos = new Array();
var marcadores = new Array();
var recursosXML;
var map = null;
var xmldetalle = null;
var xmlrec = null;
var popupMarcador;
// Limites de la region
var limites;
// Marcador para la geolocalizacion
var marcadorGeolocalizacion = null;
var esSelector;
var gdir;
var ultimaPeticionRecursos; //almacena un numero aleatorio para saber si mi peticion ha sido la ultima
var traducciones = new Array(); //array asociativo con las traducciones
var mostrandoIndicacionesRuta = false; //booleano que informa de si se estan mostrando las indicaciones de ruta
var handleComprobarLimites;
var puntosInteres = new Array(); //puntos de interes para la ruta actual

/*****************************************************************/
/* loadDoc                                                       */
/*****************************************************************/
function loadDoc(usandoSelector) 
{
	esSelector = usandoSelector;
	if (GBrowserIsCompatible())
	{
		/*****************************************************************/
		/*	Controles propios  											*/
		/*****************************************************************/
		function BusquedaDireccion() {}
		BusquedaDireccion.prototype = new GControl(true,true);
		
		BusquedaDireccion.prototype.initialize = function(map) {
		  //controles necesarios
		  var contenedor = document.createElement("div");
		  var listadoPopup = document.createElement("div");
		  var input = document.createElement("input");
		  var boton = document.createElement("input");
		  //CONTENEDOR
		  contenedor.style.font = "small Arial";
		  //contenedor.style.border = "1px solid black";
		  contenedor.style.color = "#0000cc";
		  contenedor.style.padding = "3px";
		  //contenedor.style.backgroundColor = "#ffffff";
		  
		  //LISTADO POPUP
		  listadoPopup.style.font = "9px Arial";
		  listadoPopup.style.color = "#0000cc";
		  listadoPopup.style.backgroundColor = "#ffffff";
		  listadoPopup.style.paddingTop = "15px";
		  listadoPopup.style.paddingLeft = "2px";
		  listadoPopup.style.paddingBottom = "2px";
		  listadoPopup.style.border = "1px solid black";
		  listadoPopup.style.display = "none";
		  listadoPopup.style.position = "absolute";
		  listadoPopup.style.top = "30px";
		  listadoPopup.style.left = "70px";
		  listadoPopup.id = "listadoBusquedaPopup";
		  listadoPopup.style.overflow = "auto";
		  listadoPopup.style.width = "300px";
		  listadoPopup.style.height = "200px";
		  
		  //CAMPOS DE BUSQUEDA
		  input.type = "text";
		  input.size = 20;
		  input.onkeypress = function(event){
			  if(esEnter(event))
			  	irADireccion(input.value,esSelector);
		  }
		  boton.type = "button";
		  boton.value = "Buscar";
		  boton.style.height = "21px";
		  boton.style.border = "solid 1px black";
		  contenedor.appendChild(input);
		  contenedor.appendChild(boton);
		  GEvent.addDomListener(boton, "click", function() {
			irADireccion(input.value,esSelector);
		  });
		
		  map.getContainer().appendChild(contenedor);	
		  map.getContainer().appendChild(listadoPopup);	
		  return contenedor;
		}
		
		//el control aparece en la esquina inferior derecha
		BusquedaDireccion.prototype.getDefaultPosition = function() {
		  return new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(80, 2));
		}

		function LocalidadActual() {}
		LocalidadActual.prototype = new GControl(true,true);

		LocalidadActual.prototype.initialize = function(map) {
		  //controles necesarios
		  var contenedor = document.createElement("div");
		  var texto = document.createTextNode("");
		  contenedor.style.font = "small Arial";
		  contenedor.style.color = "#0000cc";
		  contenedor.style.padding = "3px";
		  contenedor.appendChild(texto);
		  map.getContainer().appendChild(contenedor);
		  return contenedor;
		}

		//el control aparece en la esquina inferior derecha
		LocalidadActual.prototype.getDefaultPosition = function() {
		  return new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(5, 8));
		}
		/****************************************************************************/
		map = new GMap2(document.getElementById("mapa"));
		//Aņade la capacidad de aumentar el zoom con doble click
		if(esSelector)
			map.disableDoubleClickZoom(); 
		else{
			map.enableDoubleClickZoom(); 
			//si no es selector ponemos el control de mapa
			map.addControl(new GOverviewMapControl(new GSize(100,100)));
		}                                      
		map.enableContinuousZoom();
		map.addControl(new GMapTypeControl());
		map.addControl(new BusquedaDireccion());
        map.addControl(new GSmallMapControl());
		GEvent.addListener(map, "moveend", actualizarMapa);
		GEvent.addListener(map, "zoom", actualizarMapa);
		if(esSelector){ //si es selector ponemos el evento para aņadir marcador en la posicion actual
			GEvent.addListener(map, "click", function(marker, point){
												ponerLocalizacion(marker, point, esSelector, false);	  
											});
			//quitamos todos los eventos de doubleclick
			GEvent.clearListeners(map,"doubleclick");			
		}
		GEvent.addListener(map, "click", function(marker, point){
												ocultarPopupBusqueda();	  
											});
				
		//limites de la region
		limites = new GLatLngBounds(new GLatLng(38,-5.5), new GLatLng(41.4,-0.8));
				
	    //popup para mostrar el nombre de los recursos
	    popupMarcador = document.createElement("div");
	    map.getContainer().appendChild(popupMarcador);
	    popupMarcador.style.visibility="hidden";
		popupMarcador.style.backgroundColor="#ffffff";
		popupMarcador.style.color="#0000cc";
		popupMarcador.style.padding="2px";
		popupMarcador.style.border = "1px solid black";		
		
		// Controlamos que no se salga de los limites
		handleComprobarLimites = GEvent.addListener(map, "moveend", checkBounds);
		
		//lo ponemos el ultimo para acceder rapidamente a el
		map.addControl(new LocalidadActual());			
	}
	return true;
}

/*****************************************************************/
/* actualizarMapa                                                */
/*****************************************************************/
function actualizarMapa() 
{	
	cargarTipos();
	cargarRecursos();
}

/*****************************************************************/
/* load                                                         */
/*****************************************************************/
function load(esSelector,posInicial,idTipoRecurso,idRecurso,idArchivo,zoom,tipoMapa,idTiposRecursos,provinciaInicial)
{
	if (loadDoc(esSelector))
	{
		cargarIconos();
		cargarIconosArchivos();
	
		var latlon = new Array(2);
		var zoom;
		var tipo = 0;
		var cargaNormal=true;
		
		if(posInicial.length>0 && !zoom){ //centramos en la posicion pedida (no es vista mapa)
			var pos = posInicial.split(",");
			latlon[0] = pos[1];
			latlon[1] = pos[0];
			zoom = 13;
			/* Centrar mapa */
			var puntoInicial = new GLatLng(latlon[0],latlon[1]);
			if (limites.contains(puntoInicial)){ //comprobamos que el punto es de CLM
				map.setCenter(puntoInicial, parseInt(zoom));
				//ponemos un marcador en el punto si es el mapa normal
				if(!esSelector)
					map.addOverlay(new GMarker(puntoInicial));
				ponerLocalizacion(null,puntoInicial,esSelector,false);
				cargaNormal = false;
			}
		}else if(idTipoRecurso>0 && idRecurso>0){ //mostramos el recurso pedido
			var request = GXmlHttp.create();			
			request.open("GET", "/mapa/recursos.php?t="+idTipoRecurso+"&n="+idRecurso, false);
			request.send(null);
			if(request.readyState==4){
				if(request.responseText.length>0){
					//xmlrec = (new DOMParser()).parseFromString(request.responseText, "text/xml");
                    xmlrec = crearDocumentoXML(request.responseText);
					list = xmlrec.selectNodes('//rec');
					if(list.length==1){
						var posx = list[0].getAttribute("x");
						var posy = list[0].getAttribute("y");
						var id = list[0].getAttribute("id");
						var tiporec = list[0].getAttribute("t");
						var nombre = list[0].getAttribute("nom");
						var punto = new GLatLng(parseFloat(posy),parseFloat(posx));
						var marcador = crearMarcador(punto, iconos[tiporec], id, tiporec, nombre);					
						map.setCenter(punto, 7);
						map.addOverlay(marcador);
						GEvent.trigger(marcador,"click");
						cargaNormal = false; //todo ha ido correctamente
					}
				}
			}				
		}else if(idArchivo>0){ //mostramos el archivo pedido
			var request = GXmlHttp.create();		
			request.open("GET", "/mapa/recursos.php?a="+idArchivo, false);
			request.send(null);
			if(request.readyState==4){
				if(request.responseText.length>0){
					//xmlrec = (new DOMParser()).parseFromString(request.responseText, "text/xml");
                    xmlrec = crearDocumentoXML(request.responseText);
                    list = xmlrec.selectNodes('//arc');
					if(list.length==1){
						var posx = list[0].getAttribute("x");
						var posy = list[0].getAttribute("y");
						var id = list[0].getAttribute("id");
						var tipoarc = list[0].getAttribute("t");
						var nombre = list[0].getAttribute("nom");
						var punto = new GLatLng(parseFloat(posy),parseFloat(posx));
						var marcador = crearMarcadorArchivo(punto, id, tipoarc, nombre);					
						map.setCenter(punto, 7);
						map.addOverlay(marcador);
						GEvent.trigger(marcador,"click");
						cargaNormal = false; //todo ha ido correctamente
					}
				}
			}				
		}else if(zoom>0 && posInicial.length>0){ //vista de mapa
			var pos = posInicial.split(",");
			var tipos = idTiposRecursos.split(",");
			latlon[0] = pos[1];
			latlon[1] = pos[0];
			var puntoInicial = new GLatLng(latlon[0],latlon[1]);
			if (limites.contains(puntoInicial)){ //comprobamos que el punto es de CLM
				map.setCenter(puntoInicial, parseInt(zoom));
				switch(tipoMapa){
					case 2:
						map.setMapType(G_SATELLITE_MAP);
					break;
					case 3:
						map.setMapType(G_HYBRID_MAP);
					break;
					default:
						map.setMapType(G_NORMAL_MAP);
					break;
				}
				cargaNormal = false; //todo ha ido correctamente
			}
		}else if(provinciaInicial>0){ //nos piden centrar en una provincia determinada
			centrarEnProvincia(provinciaInicial);	
			cargaNormal = false;
		}
		
		//NORMALMENTE mostramos el centro de castilla la mancha (o cuando algo falla)
		if(cargaNormal){ 
			centrarEnCLM();
		}
	
		//cargarTipos();
	
		//cargamos la frontera de CLM
		cargarFrontera();

		if (tipo!=0){
			var checktipo = document.getElementById('tipo' + tipo);
			if(checktipo)
				checktipo.checked = true;		
		}
	}
}

//centra el mapa en CLM
function centrarEnCLM(){
	map.setCenter(new GLatLng(39.67406,-3.161336), 7);
}

//centra el mapa en una provincia concreta
function centrarEnProvincia(idProvincia){
	switch(idProvincia){
		case 1: //albacete
			map.setCenter(new GLatLng(38.801189392,-2.1203614), 8);
		break;
		case 2: //ciudad real
			map.setCenter(new GLatLng(39.014915729,-3.83972168), 8);
		break;
		case 3: //cuenca
			map.setCenter(new GLatLng(39.9181628466,-2.27966309), 8);
		break;
		case 4: //guadalajara
			map.setCenter(new GLatLng(40.709792012,-2.65319824), 8);
		break;
		case 5: //toledo
			map.setCenter(new GLatLng(39.78321267821705,-4.27368164), 8);
		break;
		default:
			centrarEnCLM();
		break;
	}	
}

/*****************************************************************/
/* onClickCategoria                                              */
/*****************************************************************/
function onClickCategoria(idtipo)
{
	cargarRecursos();
}

/*****************************************************************/
/* onClickSeleccionarTodos                                       */
/*****************************************************************/
function onClickSeleccionarTodos()
{
	for (var i = 1; i <= 50; i++)
		if(document.getElementById('tipo' + i))
			document.getElementById('tipo' + i).checked = "checked";
	cargarRecursos();
}

/*****************************************************************/
/* cargarIconos                                                  */
/*****************************************************************/
function cargarIconos()
{ 
	iconos = new Array(50);
	var i;
	for (i = 1; i < iconos.length; i++)
	{
		iconos[i] = new GIcon();
		iconos[i].image = "/img/iconos/recurso" + i + "g.gif";
		iconos[i].iconSize = new GSize(24, 27);
		iconos[i].iconAnchor = new GPoint(10,25);
		//iconos[i].iconSize = new GSize(17, 20);
		//iconos[i].iconAnchor = new GPoint(6,18);
		iconos[i].infoWindowAnchor = new GPoint(8,10);
	}
}

/*****************************************************************/
/* cargarIconosArchivos                                          */
/*****************************************************************/
function cargarIconosArchivos()
{ 
	iconosArchivos = new Array(50);
	var i;
	for (i = 1; i < iconosArchivos.length; i++)
	{
		iconosArchivos[i] = new GIcon();
		iconosArchivos[i].image = "/img/iconos/archivo" + i + "g.gif";
		iconosArchivos[i].iconSize = new GSize(24, 27);
		iconosArchivos[i].iconAnchor = new GPoint(10,25);
		//iconos[i].iconSize = new GSize(17, 20);
		//iconos[i].iconAnchor = new GPoint(6,18);
		iconosArchivos[i].infoWindowAnchor = new GPoint(8,10);
	}
}

/*****************************************************************/
/* cargarRecursos                                                */
/*****************************************************************/
function cargarRecursos()
{
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();

	var xizq = southWest.lng();
	var xder = northEast.lng();
	var ysup = northEast.lat();
	var yinf = southWest.lat();
	
	//obtenemos los tipos a mostrar
	var tiposMostrar = new Array();
	for (var i = 1; i <= 50; i++)
		if(document.getElementById('tipo' + i))
			if(document.getElementById('tipo' + i).checked)
				tiposMostrar.push(i);	
	
	//xmlrec = Sarissa.getDomDocument();
	//xmlrec.setProperty("SelectionLanguage","XPath");
	
	//guardamos un valor para identificar esta peticion
	ultimaPeticionRecursos = Math.random();
	var estaPeticion = ultimaPeticionRecursos;
	
	var request = GXmlHttp.create();
	request.open("GET", "/mapa/recursos.php?t="+tiposMostrar.join(",")+"&xrat="+(xder-xizq)+"&yrat="+(ysup-yinf)+"&xizq=" + xizq + "&xder=" + xder + "&ysup=" + ysup + "&yinf=" + yinf + "&z=" + map.getZoom() + "&c=" + map.getCenter().x + "," + map.getCenter().y, true);
	request.onreadystatechange = function() {
		//en cualquier momento de la peticion, si esta no es la ultima abortamos porque hay otra mas reciente
		if(estaPeticion!=ultimaPeticionRecursos){
			request.abort();
			return;
		}else{
			if(request.readyState == 4){
				if(request.responseText.length>0){
					//xmlrec = (new DOMParser()).parseFromString(request.responseText, "text/xml");
                    xmlrec = crearDocumentoXML(request.responseText);
					var list = xmlrec.selectNodes("//loc");
					if(list.length==1){
						map.getContainer().lastChild.firstChild.nodeValue = list[0].getAttribute("n");
					}
					list = xmlrec.selectNodes("//rec");
					cargarListaRecursos(list);
					list = xmlrec.selectNodes("//grup");
					cargarListaAgrupaciones(list);
					//agruparRecursos();
					eliminarRecursosAntiguos();
					var marcadores_nuevos = anadirRecursosNuevos();
					dibujarRecursos(marcadores_nuevos);
				}
			}
		}
	}
	request.send(null);
}

/*****************************************************************/
/* cargarListaRecursos                                           */
/*****************************************************************/
function cargarListaRecursos(list)
{
	recursosXML = new Array();
	for (var i = 0; i < list.length; i++)
	{
		var idtipo = list[i].getAttribute("t");
		var posx = list[i].getAttribute("x");
		var posy = list[i].getAttribute("y");
		var id = list[i].getAttribute("id");
		var nombre = list[i].getAttribute("nom");
		var idtipos = new Array();
		idtipos[0] = idtipo;
		var ntipos = new Array();
		ntipos[0] = 1;
		var recurso = new Array(posx,posy,idtipos,ntipos,id,false,nombre);
		recursosXML.push(recurso);
	}
}

/*****************************************************************/
/* cargarListaAgrupaciones                                       */
/*****************************************************************/
function cargarListaAgrupaciones(list)
{
	for (var i = 0; i < list.length; i++)
	{
		//leemos las parejas de tipos y cantidad de cada tipo
		var idtipos = list[i].getAttribute("t").split(",");
		var ntipos = list[i].getAttribute("tn").split(",");
		//posicion de la agrupacion
		var posx = list[i].getAttribute("x");
		var posy = list[i].getAttribute("y");
		var n = list[i].getAttribute("n");
		var mismaPosicion = (list[i].getAttribute("mp")==1);
		var agrupacion = new Array(posx,posy,idtipos,ntipos,n,true,mismaPosicion);		
		recursosXML.push(agrupacion);
	}
}

/*****************************************************************/
/*  eliminarRecursosAntiguos                                     */
/*****************************************************************/
function eliminarRecursosAntiguos() 
{
	var borrar = new Array();
	var existe;
	for (var i = 0; i < recursos.length; i++)
	{
		existe = false;
		var j = 0;
		while (!existe && j < recursosXML.length)
		{
			if (recursosXML[j].toString() == recursos[i].toString())
			{
				existe = true;
			}
			j++;
		}
		if (!existe)
		{
			borrar.push(i);
		}		
	}
	
	for (var i = borrar.length - 1; i >= 0; i--)
	{
		recursos.splice(borrar[i],1);
		//	alert(marcadores[borrar[i]].getPoint());
		map.removeOverlay(marcadores[borrar[i]]);
 		marcadores.splice(borrar[i],1);
	}
	
}

/*****************************************************************/
/* anadirRecursosNuevos                                          */
/*****************************************************************/
function anadirRecursosNuevos()
{
	var marcadores_nuevos = new Array();
	for (var i = 0; i < recursosXML.length; i++)
	{
		var existe = false;
		var j = 0;

		while (!existe && j < recursos.length)
		{
			if (recursosXML[i].toString() == recursos[j].toString())
			{
				existe = true;
			}
			j++;
		}

		if(!existe)
		{
			var punto = new GLatLng(recursosXML[i][1],recursosXML[i][0]);
			if (!recursosXML[i][5])
				var marcador = crearMarcador(punto, iconos[recursosXML[i][2][0]], recursosXML[i][4], recursosXML[i][2][0], recursosXML[i][6]);
			else {
				var marcador = crearMarcadorAgrupado(punto, recursosXML[i][2], recursosXML[i][3], recursosXML[i][4], recursosXML[i][6]);
			}
			//alert(recursosXML[i]);
			recursos.push(recursosXML[i]);
			marcadores_nuevos.push(marcador);
		}		
	}
	return marcadores_nuevos;
}

/*****************************************************************/
/* dibujarRecursos                                               */
/*****************************************************************/
function dibujarRecursos (marcadores_nuevos)
{
	for (var i = 0; i < marcadores_nuevos.length; i++)
	{
		marcadores.push(marcadores_nuevos[i]);
		map.addOverlay(marcadores_nuevos[i]);
	}	
}

/*****************************************************************/
/* crearMarcador                                                 */
/*****************************************************************/
function crearMarcador(punto, icono, id, tipo, nombre)
{
	var marker = new GMarker(punto, icono);
	marker.tooltip = "<div>"+nombre+"</div>";
	GEvent.addListener(marker, "click", function() {
		var xmldoc = Sarissa.getDomDocument();
		xmldoc.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
		xmldoc.setProperty("SelectionLanguage","XPath");

		var request = GXmlHttp.create();

		request.open("GET", "/mapa/detalle_recurso.php?id=" + id + "&t=" + tipo, true);

		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var html = request.responseText;
				marker.openInfoWindowHtml(html);
			}
		}

		request.send(null);
	});
	
	GEvent.addListener(marker, "mouseover", function() {
		mostrarPopupMarcador(marker);
	});
	
	GEvent.addListener(marker, "mouseout", function() {
		popupMarcador.style.visibility="hidden";
	});
	
	/*GEvent.addListener(marker, "remove", function() {
		map.closeInfoWindow();
	});*/	
	return marker;
}

/*****************************************************************/
/* crearMarcadorArchivo                                          */
/*****************************************************************/
function crearMarcadorArchivo(punto, id, tipo, nombre)
{
	var marker = new GMarker(punto, iconosArchivos[tipo]);
	if(nombre && nombre.length>0) //si tiene nombre ponemos el tooltip
		marker.tooltip = "<div>"+nombre+"</div>";
	GEvent.addListener(marker, "click", function() {
		var xmldoc = Sarissa.getDomDocument();
		xmldoc.setProperty("SelectionNamespaces", "xmlns:xsl='http://www.w3.org/1999/XSL/Transform'");
		xmldoc.setProperty("SelectionLanguage","XPath");

		var request = GXmlHttp.create();

		request.open("GET", "/mapa/detalle_archivo.php?id=" + id, true);

		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var html = request.responseText;
				marker.openInfoWindowHtml(html);
			}
		}

		request.send(null);
	});
	
	//si tenemos tooltip disponible ponemos los eventos, si no, no
	if(marker.tooltip){
		GEvent.addListener(marker, "mouseover", function() {
			mostrarPopupMarcador(marker);
		});
		
		GEvent.addListener(marker, "mouseout", function() {
			popupMarcador.style.visibility="hidden";
		});
	}
	
	/*GEvent.addListener(marker, "remove", function() {
		map.closeInfoWindow();
	});*/	
	return marker;
}


/*****************************************************************/
/* crearMarcadorAgrupado                                         */
/*****************************************************************/
function crearMarcadorAgrupado(punto, tipos, ntipos, cuantos, mismaPosicion)
{
	var marker = new GMarker(punto, crearIconoAgrupado(cuantos));
	if(!mismaPosicion){
		GEvent.addListener(marker, "click", function() {
			//var html = crearDetalleAgrupado(tipos,ntipos);
			//marker.openInfoWindowHtml(html);
			map.zoomIn(marker.getPoint(),true,true); //nos mostramos los restaurantes que hay ni nada
		});
		/*GEvent.addListener(marker, "remove", function() {
			map.closeInfoWindow();
		});	*/
	}else{
		GEvent.addListener(marker, "click", function() {
			var request = GXmlHttp.create();
			//obtenemos los recursos en la posicion
			request.open("GET", "/mapa/detalle_recurso.php?pos="+punto.x+","+punto.y+"&tipos="+tipos.join(","), true);
			request.onreadystatechange = function() {
				if (request.readyState == 4) {
					var infoTabs = new Array();	
					//los datos nos vendran con el formato 
					//[htmlRecurso1]<tab></tab>[tipo1]<tab></tab>[htmlRecurso2]<tab></tab>[tipo2]<tab></tab>
					var datos = request.responseText.split("<tab></tab>");
					for (var i = 0; i < datos.length; i+=2){
						infoTabs.push(new GInfoWindowTab(categoriasSingular[datos[i+1]],datos[i]));
					}
					marker.openInfoWindowTabsHtml(infoTabs);
				}
			}
			request.send(null);			
		});	
	}
	return marker;
} 

/*****************************************************************/
/* crearDetalleAgrupado                                         */
/*****************************************************************/
function crearDetalleAgrupado(tipos,ntipos)
{
	var html = "<h3 style='text-decoration:underline;font-size:1.2em'>Existen en este punto:</h3>";
	
	html += "<ul>";
	for (var i = 0; i < tipos.length; i++)
	{
		if (tipos[i] > 1)
			html += "<li>" + ntipos[i] + " " + categorias[tipos[i]] + "</li>";
		else if(tipos[i] == 1)
			html += "<li>" + ntipos[i] + " " + categoriasSingular[tipos[i]] + "</li>";
	}
	html += "</ul>";
	html += "<p>";
	html += 	"<a href='javascript:map.zoomIn(); map.closeInfoWindow();' style='padding-left:2px'><img border='0' src='/img/acercar.gif'></a>";
	html += 	"<a href='javascript:map.zoomIn(); map.closeInfoWindow();' style='padding-left:20px'><img border='0' src='/img/alejar.gif'></a>";
	html += "</p>";
	return html;
}

/*****************************************************************/
/* crearIconoAgrupado                                         */
/*****************************************************************/
function crearIconoAgrupado(n)
{
	var archivo;
	if (n >= 2 && n <= 14) 
		archivo = "tipo" + n + "a.png";	
	
	else if (n < 20) 
		archivo = "tipo15a.png";
	
	else if (n < 25) 
		archivo = "tipo20a.png";
	
	else if (n < 30) 
		archivo = "tipo25a.png";
	
	else if (n < 40) 
		archivo = "tipo30a.png";
	
	else if (n < 50) 
		archivo = "tipo40a.png";
	
	else if (n < 75) 
		archivo = "tipo50a.png";

	else
		archivo = "tipo75a.png";
	
	var icono = new GIcon();
	icono.image = "/img/iconos/" + archivo;
	icono.iconSize = new GSize(24, 25);
	icono.iconAnchor = new GPoint(14,23);
	icono.infoWindowAnchor = new GPoint(8,10);

	return icono;
}

/*****************************************************************/
/* cargarTipos                                                   */
/*****************************************************************/
function cargarTipos()
{

	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();

	var xizq = southWest.lng();
	var xder = northEast.lng();
	var ysup = northEast.lat();
	var yinf = southWest.lat();

	var request = GXmlHttp.create();
	request.open("GET", "/mapa/tipos.php?xizq=" + xizq + "&xder=" + xder + "&ysup=" + ysup + "&yinf=" + yinf, true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {
			//var parser = new DOMParser();
            //xmltipos = parser.parseFromString(request.responseText, "text/xml");
            xmltipos = crearDocumentoXML(request.responseText);
			var list = xmltipos.selectNodes('//tip');
			for (var i = 0; i < list.length; i++)
			{
				var num = list[i].getAttribute("n");
				var id = list[i].getAttribute("id");
				categorias[id] = list[i].getAttribute("nombre");
				categoriasSingular[id] = list[i].getAttribute("nombreSingular");
				var numRec = document.getElementById('numrec' + id);
				if(numRec)
					numRec.firstChild.nodeValue = "(" + num + ")";
			}
		}
	}
	request.send(null);
}

/*****************************************************************/
/* eliminarTipoDesactivado                                       */
/*****************************************************************/
function eliminarTipoDesactivado(idtipo)
{
	for (i = 0; i < recursos.length; i++)
	{
		if (recursos[i][2][0] == idtipo)
		{
			map.removeOverlay(marcadores[i]);
			marcadores.splice(i,1);
			recursos.splice(i,1);
		}
	}
}

/*****************************************************************/
/* eliminarRecursosFueraDeRango                                  */
/*****************************************************************/
function eliminarRecursos(list)
{
	var esta = false;
	for (var i = 0; i < recursos.length; i++)
	{
		for (var j = 0; j < recursos[i].length; j++)
		{
			esta = false;
			var k = 0;
			while (!esta && k < list.length)
			{
				var idtipo = list[k].getAttribute("t");

				// Calcular cordenadas lat / long 
				var point = new GLatLng(posy, posx);

				if (point.equals(recursos[i][j].getPoint()))
					esta = true;
				k++;
			}
			if (!esta)
			{
				map.removeOverlay(recursos[i][j]);
				recursos[i] = recursos[i].splice(0,j-1, recursos[i].splice(j+1));
			}
		}
	}
}

function checkBounds() {
    //deshabilitamos la comprobacion de fronteras
    return;

	if (limites.contains(map.getCenter())) {
	  return;
	}
	var C = map.getCenter();
	var X = C.lng();
	var Y = C.lat();
	
	var AmaxX = limites.getNorthEast().lng();
	var AmaxY = limites.getNorthEast().lat();
	var AminX = limites.getSouthWest().lng();
	var AminY = limites.getSouthWest().lat();
	
	if (X < AminX) {X = AminX;}
	if (X > AmaxX) {X = AmaxX;}
	if (Y < AminY) {Y = AminY;}
	if (Y > AmaxY) {Y = AmaxY;}
	map.panTo(new GLatLng(Y,X));
}

/* Va a la direccion pedida */
function irADireccion(direccion,esSelector){
	var req = GXmlHttp.create();
	//ocultamos popup de busqueda cuando buscamos
	ocultarPopupBusqueda();
	req.open("GET", "/mapa/recursos.php?q=" + direccion, true);
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			var recursos = new Array();
			var noencontrado = traducciones['IDIOMA_MAPA_SIN_RESULTADOS'];
			//var xmlrec = (new DOMParser()).parseFromString(req.responseText, "text/xml");
            xmlrec = crearDocumentoXML(req.responseText);
			var list = xmlrec.selectNodes('//rec');
			//recorremos la lista de recursos obtenida del XML
			for(var i=0;i<list.length;i++){
				var px = list[i].getAttribute("x");
				var py = list[i].getAttribute("y");
				var t = list[i].getAttribute("t");
				var txt = list[i].getAttribute("txt");
				var punto = new GLatLng(parseFloat(py),parseFloat(px));
				if(px!=0 && py!=0 && limites.contains(punto)){ //si encontramos algun recurso
					recursos.push(new Array(t,txt,px,py));
				}
			}
			
			if(recursos.length>0){ //si hemos encontrado algun recurso mostramos el mensaje
				mostrarPopupBusqueda(recursos);
			}else{//si no hemos encontrado nada en nuestros recursos lo intentamos con Google
				var geocoder = new GClientGeocoder();
				geocoder.setViewport(limites);
				geocoder.getLocations(direccion, function (result) {
					if (result.Status.code == G_GEO_SUCCESS) {
						// Mostramos los resultados obtenidos
						var i=0;
						while(i<result.Placemark.length){
							var p = result.Placemark[i].Point.coordinates;
							//si esta en los limites de CLM
							if(limites.contains(new GLatLng(p[1],p[0])))
								recursos.push(new Array(3,result.Placemark[i].address,p[0],p[1]));
							i++;
						}
						if(recursos.length==0){ //si no hemos encontrado nada en los limites de CLM mostramos el mensaje
							mostrarPopupBusquedaError(noencontrado);	
						}else
							mostrarPopupBusqueda(recursos);
					}else{
						mostrarPopupBusquedaError(noencontrado);										
					}
				  }
				);
			}
		}
	};
	req.send(null);
}

/* Muestra un popup sobre el marcador */
function mostrarPopupMarcador(marcador){
	popupMarcador.innerHTML = marcador.tooltip;
	var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.getBounds().getSouthWest(),map.getZoom());
	var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marcador.getPoint(),map.getZoom());
	var anchor=marcador.getIcon().iconAnchor;
	var width=marcador.getIcon().iconSize.width;
	var pos = new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(offset.x - point.x - anchor.x + width,- offset.y + point.y +anchor.y)); 
	pos.apply(popupMarcador);
	popupMarcador.style.visibility="visible";
}

/* Pone un marcador en la posicion pulsada */
function ponerLocalizacion(marker, point, esSelector, tipo){
	if(esSelector){
		if(!marker){
			if(marcadorGeolocalizacion)	
				map.removeOverlay(marcadorGeolocalizacion);
			marcadorGeolocalizacion = new GMarker(point);
			map.addOverlay(marcadorGeolocalizacion);
			map.panTo(point);
		}
	}else{
		//si no es selector mostramos el punto y ya esta
		map.panTo(point);
	}
}

//muestra una notificacion de error
function mostrarPopupBusquedaError(mensaje){
	alert(mensaje);
}

//muestra una tabla de resultados a partir del array recursos
function mostrarPopupBusqueda(recursos){
	if(recursos.length==1){ //si hay 1 recurso lo localizo directamente en el mapa
		var punto = new GLatLng(recursos[0][3],recursos[0][2]);
		ponerLocalizacion(null,punto,esSelector,recursos[0][0]);
		//ponemos una ventana informativa con el texto del recurso
		var html;
		html  = "<table>";
		html += 	"<tr>";
		html += 		"<td>" + obtenerHtmlIconoTipo(recursos[0][0]) + "</td>";
		html += 		"<td>" + recursos[0][1].replace(/, Spain/,"") + "</td>";
		html +=		"</tr>";
		html += "</table>";
		map.openInfoWindowHtml(punto,html);
	}else{ //si hay varios mostramos la lista de sugerencias
		var html;
		html  = "<table class='lista_general' style='width: 280px'>";
		for(var i=0;i<recursos.length;i++){
			html += "<tr class='fila"+(i%2)+"'>";
			html += 	"<td>" + obtenerHtmlIconoTipo(recursos[i][0]) + "</td>";
			html +=		"<td>";
			html +=			"<a href='javascript:ocultarPopupBusqueda(); ponerLocalizacion(null,new GLatLng(" +recursos[i][3]+","+recursos[i][2]+"),"+esSelector+","+recursos[i][0]+"); mostrarPopupBusqueda(new Array(new Array("+recursos[i][0]+",\""+recursos[i][1]+"\","+recursos[i][2]+","+recursos[i][3]+")));'>";
			html +=				recursos[i][1].replace(/, Spain/,"");
			html +=			"</a>";
			html +=		"</td>";
			html += "</tr>";	
		}
		html += "</table>";

		var popupBusqueda = document.getElementById("listadoBusquedaPopup");
		var divCerrar = "<div style='position: absolute; cursor: pointer;right: 2px; top: 2px'><a onclick='ocultarPopupBusqueda()'>x</a></div>";
		popupBusqueda.innerHTML = divCerrar+html;
		popupBusqueda.style.display = "block";
	}	
}

function obtenerHtmlIconoTipo(tipo){
	var imgtipo = "<img title='"+categoriasSingular[tipo]+"' src='/img/iconos/recurso"+tipo+"p.gif' style='display: block; position:relative' />";
	return imgtipo;
}

//oculta el popup busqueda 
function ocultarPopupBusqueda(){
	var popupBusqueda = document.getElementById("listadoBusquedaPopup");
	popupBusqueda.style.display = "none";
	popupBusqueda.innerHTML = "";
}

//redirige a una pagina de listado sobre un area
function redirigirBusquedaEnArea(idTipoRecurso){
	var bounds = map.getBounds();
	var southWest = bounds.getSouthWest();
	var northEast = bounds.getNorthEast();

	var xizq = southWest.lng();
	var xder = northEast.lng();
	var ysup = northEast.lat();
	var yinf = southWest.lat();
	window.location = "/busqueda/index.php?t="+idTipoRecurso+"&area="+xizq+","+xder+","+yinf+","+ysup+"&z="+map.getZoom();
}

//ejecuta sobre el mapa el como llegar desde un punto a otro
function ejecutarComoLlegar(origen, destino, idioma, div_indicaciones, descripcionDestino){
	function comoLlegarError(){
		if(origen.indexOf("Spain")==-1){ //si no encontramos resultados probamos a hacerlo con Spain detras
			origen = origen+", Spain";
			gdir.load("from: "+origen+" to: "+destino,{ "locale": idioma });		
		}else{
			//quitamos la imagen de "cargando"
			var resumen = document.getElementById('div_resumen');
			if(resumen) 
				resumen.innerHTML = "";
			alert(traducciones['IDIOMA_MAPA_COMO_LLEGAR_ERROR']);	
		}
	}
	
	//ponemos una imagen de "cargando"
	var resumen = document.getElementById('div_resumen');
	if(resumen) 
		resumen.innerHTML = "<img src='/img/cargando.gif'>";
	var indicaciones = document.getElementById(div_indicaciones);
	//borramos posibles resultados anteriores
	if(gdir)
		gdir.clear();
	
	var descripcionOrigen = origen;
	//primero buscamos en nuestros recursos la localizacion del origen
	var req = GXmlHttp.create();
	req.open("GET", "/mapa/recursos.php?exacto=1&q=" + origen, false);
	req.send(null);
	if (req.readyState == 4) {
		//var xmlrec = (new DOMParser()).parseFromString(req.responseText, "text/xml");
        var xmlrec = crearDocumentoXML(req.responseText);
		var list = xmlrec.selectNodes('//rec');
		if(list.length>0){ //si encontramos algo lo ponemos como origen
			origen = list[0].getAttribute("y")+","+list[0].getAttribute("x");
		}
	}
	
	gdir = new GDirections(map);
	GEvent.addListener(gdir, "load", function(){ comoLlegarRecibido(descripcionOrigen,descripcionDestino); });
	GEvent.addListener(gdir, "error", comoLlegarError);
	gdir.load("from: "+origen+" to: "+destino,{ "locale": idioma, "getSteps": true});
	//dejamos de limitar a la frontera con CLM
	GEvent.removeListener(handleComprobarLimites);
	//quitamos otros puntos de interes que hubiera
	quitarPuntosInteres();	
}

//procesamiento al recibir el como llegar
function comoLlegarRecibido(origen,destino){
	//procesamiento al recibir el como llegar	
	var resumen = document.getElementById('div_resumen');
	var indicaciones = document.getElementById("indicaciones_ruta");
	//rellenamos los datos del resumen de ruta
	if(resumen){
		if(mostrandoIndicacionesRuta)
			mostrarIndicacionesRuta();
		
		var html;
		html  = '<h3>'+traducciones['IDIOMA_MAPA_RESUMEN']+'</h3>';
		html += traducciones['IDIOMA_MAPA_DISTANCIA'] + ": <strong>" + gdir.getDistance().html.toString() + "</strong><br />";
		html += traducciones['IDIOMA_MAPA_DURACION'] + ": <strong>" + gdir.getDuration().html.toString() + "</strong><br />";
		html += '<a id="enlace_ver_indicaciones_ruta" href="javascript:void(0)" onclick="mostrarIndicacionesRuta()">';
		html += 	traducciones['IDIOMA_MAPA_VER_INDICACIONES'];
		html += '</a><br />';
		html += '<a href="javascript:void(0)" onclick="mostrarPuntosInteresRuta()">';
		html += 	traducciones['IDIOMA_MAPA_VER_PUNTOS_INTERES'];
		html += '</a><br />';
		html += '<a href="javascript:void(0)" onclick="limpiarResultadosRuta()">';
		html += 	traducciones['IDIOMA_MAPA_LIMPIAR_RESULTADOS'];
		html += '</a>';
		resumen.innerHTML = html;
	}
	
	//rellenamos las indicaciones
	if(indicaciones){
		html  = "<table class='indicaciones'>";
		html += 	"<tr class='extremoRuta'><td colspan='3'>"+traducciones['IDIOMA_MAPA_SALIDA']+": "+origen.toUpperCase()+"</td></tr>";
		var n=1;
		for(var i=0;i<gdir.getNumRoutes();i++){
			var ruta = gdir.getRoute(i);
			for(var j=0;j<ruta.getNumSteps();j++){
				html += '<tr onclick="map.showMapBlowup(gdir.getRoute('+i+').getStep('+j+').getLatLng())" class="fila'+(n%2)+'">';
				html += 	"<td class='num'>";
				html += 		"<a href='javascript:void(0)'>"+n+"</a>";
				html += 	"</td>";
				html += 	"<td>";
				html += 		ruta.getStep(j).getDescriptionHtml();
				html += 	"</td>";
				html += 	"<td>";
				html += 		ruta.getStep(j).getDistance().html;
				html += 	"</td>";
				html += "</tr>";	
				n++;
			}
		} 
		html +=		"<tr class='extremoRuta'><td colspan='3'>"+traducciones['IDIOMA_MAPA_LLEGADA']+": "+destino.toUpperCase()+"</td></tr>";
		html +=	"</table>";
		indicaciones.innerHTML = html;
	}
	map.zoomOut();
}

//muestra el div con las indicaciones de la ruta
function mostrarIndicacionesRuta(){
	var indicaciones = document.getElementById("indicaciones_ruta");
	var enlace = document.getElementById("enlace_ver_indicaciones_ruta");
	if(indicaciones){
		if(mostrandoIndicacionesRuta){
			indicaciones.style.display = "none";
			enlace.innerHTML = traducciones['IDIOMA_MAPA_VER_INDICACIONES'];
		}else{
			indicaciones.style.display = "block";
			enlace.innerHTML = traducciones['IDIOMA_MAPA_OCULTAR_INDICACIONES'];
		}
		mostrandoIndicacionesRuta = !mostrandoIndicacionesRuta;
	}
}

//muestra los puntos de interes turistico en la ruta actual
function mostrarPuntosInteresRuta(){
	//recorremos la ruta desde el final (CLM) hasta salir de CLM
	var ruta = gdir.getPolyline();
	var i = ruta.getVertexCount()-1;
	var puntos = new Array();
	while(i>=0 && limites.contains(ruta.getVertex(i))){
		puntos.push(new Array(ruta.getVertex(i).lng(),ruta.getVertex(i).lat()));
		i-=50;
	}
	//obtenemos los puntos de interes a partir de los puntos de la ruta
	obtenerPuntosInteres(puntos);
}

//obtiene y representa los puntos de interes cercanos a los pasados
function obtenerPuntosInteres(puntosRuta){
	var req = GXmlHttp.create();
	//hacemos llamada por POST porque pueden ser muchos puntos
	req.open("POST", "/mapa/recursos.php", true);
	var params = "ruta=";
	for(var i=0;i<puntosRuta.length;i++){
		if(i>0)
			params += ",";
		params += puntosRuta[i][0]+"_"+puntosRuta[i][1];
	}	
	
	quitarPuntosInteres();
	req.onreadystatechange=function(){
		if(req.readyState==4){
			//var xmlrec = (new DOMParser()).parseFromString(req.responseText, "text/xml");
            var xmlrec = crearDocumentoXML(req.responseText);
			var list = xmlrec.selectNodes('//rec');
			for(var i=0;i<list.length;i++){
				var posx = list[i].getAttribute("x");
				var posy = list[i].getAttribute("y");
				var id = list[i].getAttribute("id");
				var nombre = list[i].getAttribute("nom");
				var tipo = list[i].getAttribute("t");
				var poi = crearMarcador(new GLatLng(posy,posx), iconos[tipo], id, tipo, nombre);
				puntosInteres.push(poi);
				map.addOverlay(poi);
			}
		}
	}
	req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	req.send(params);
}

//quita los puntos de interes actualmente en el mapa
function quitarPuntosInteres(){
	for(var i=0;i<puntosInteres.length;i++)
		map.removeOverlay(puntosInteres[i]);
	puntosInteres = new Array();
}

//limpia los resultados de una busqueda en "como llegar"
function limpiarResultadosRuta(){
	var indicaciones = document.getElementById("indicaciones_ruta");
	var resumen = document.getElementById('div_resumen');
	var inputorigen = document.getElementById('txt_origen');
	if(indicaciones && resumen){
		gdir.clear();
		indicaciones.style.display = "none";
		inputorigen.value = "";
		mostrandoIndicacionesRuta=false;
		resumen.innerHTML = "";
	}
	map.closeInfoWindow();
	//volvemos al centro de CLM
	centrarEnCLM();
	//quitamos los puntos de interes de la ruta
	quitarPuntosInteres();
	// Controlamos de nuevo que no se salga de los limites
	handleComprobarLimites = GEvent.addListener(map, "moveend", checkBounds);
}

//lleva al usuario a la pagina que genera esta (mediante el uso de vistas)
function enlazarPagina(){
	var centro = map.getCenter().x+","+map.getCenter().y;
	var zoom = map.getZoom();
	var tipo = (map.getCurrentMapType()==G_NORMAL_MAP?1:(map.getCurrentMapType()==G_SATELLITE_MAP?2:(map.getCurrentMapType()==G_HYBRID_MAP)?3:1));
	var tipos = obtenerTiposSeleccionados().join(',');
	window.location = "/mapa/index.php?p="+centro+"&z="+zoom+"&tm="+tipo+"&ts="+tipos;
}

//carga la frontera de CLM en el mapa
function cargarFrontera(){	
	var encodedPolyline = new GPolyline.fromEncoded({
	  color: "#b32264",
	  weight: 5,
	  opacity: 0.8,
	  points: "mnlgF|tpNvEoFlD}KfCmFrCoEtC{E|A}D[yCfCsG`DsHZkDqA_F?mFbAkDxBmD`DwCnAiCh@gBMiDXoF|DiCxB{DjB}Cf@{EZaG?aGJaGu@qFZwCt@mDMkEcAyCYwAnAcALgCY}E?_TjBmF?uGf@_GnDiDjBoEfHsHlRqV`O_UdNqT`GkShEqNlJ{L[gXbAsAg@{CyMuPoDoEu@_GbAqGhE}E~_@gf@`AuIaA_GkB}Ci@wCpAmDf@mE|AkEfCqGbIgPjBeIbAeIZyJt@}LhEwRbIiRjEcO?gYnAyBfCOjBcAzDmDpAoFfCuBhEyBrFoEdCcBnDs@fCu@rCqA`DmDpAkEbAqFt@}EbAaF`AaH?aOKeHf@qHf@mLyJaaAgC{E?mEZoEb\\_z@|Lkb@|Do[LqH|AiJfCiJpFoUxBmM~AeP[g`@`DqF|DiDbAsGcA}DgCgD{DmDcLmL}DgCu@uPh@kDu@kDJyC?iKu@gP_GtGcIdIqLhDmO?cLgC}LqFkMmFsNkDwPqFaOkEwP{JmOgJmRgJ{ReI{GgBeVvAwHeA}WmTcFwIqAmMi[{g@aDiD{G{DmGoEoAuI}DaUoDgKkBgQkBiKgKcO_GgQ{R{ZcQgQuH_N{JaGsKcHwHaVsK}KsY_UaDqHmDo[yEeJyJ?kJoMyJ{DqQqN_ReImRkJsSkTqIoFsNiByROqT`GeCs@kB}Dea@m\\kJgBcL?mGwBmO_U{DiDeFkD}I}DuKyJyJyKeFeIyG}L_BqFmG}DuH_@mmAio@iEq@gHp@iHhDgHO_}@qd@kRiCsFwCiEyBkR}DaT}MsF}KaDya@eKsOyBiJqFuHwM{j@i@_TmDcPkm@wv@cIsNwEsWcFob@qIyZwEcm@_G}KLqs@aD_VgHiX_JcXaAmEXgJkJydAoDaHcFuHqQ{S}IwP__@ef@s^iY}Ym\\_GqGsf@cl@{DcAmg@}Eqi@{Rie@_\\oYoNsc@a]aLePqFmFyZkw@}IcWcAsG|AaHdFeI~FoMlG{RrCoTlDiRpAiKqAsOu@qNh@cOhE{LhEaNhEkDfHeBtHwBt@qGf@eIxBaFll@kj@vEaNrCgRvMsgBkBsNaDmMmD_UkEqV_GwPkG{LyBwPMyQu@gYiB_\\gCuXqFmT_GoSoDkTeCiRkBaVwU}hCmDeJyBkDkBsNeCcWyBePwz@qxAqIaViJoUsKaUsNiSiRqVkj@sk@qFmMyGiRqIcWuH_\\sCcWrCuPh@{SXm[}AoSeF_NeKgJqNuIgPgIuPwJiM_GmT{Cu@yQYyKoDgdAu@gJg@gJsCiJiEuIeCgJaDwWuM~ZeN|LmLbPyJhJiJbBgH_@kBcAoDoMYcGzDuI`LqUjBqG`AaGkBiDcFcAsCyCYsFX}EzDuB~NgAXgJaAgJJ{KpAwJXaGcFgCmLs@gPdBuPtAoI?}IdAoI?oDwAZ}D[_GkB_FpAmEbFuHdC}FpAeHrCgJpFcHfHsHhEqFL{Du@_FgCiDmDgCmGu@kGt@cI`@eCeAMwBt@eBMyBwBmF}AcHcAwIYyIt@iDrCuAvB?rCoFhE{KpFkLrC{JhEwBnDsAtEN`DvB`DNdCsAnAwBKyBqAa@eC?wBq@gCmDaA}EnAgB|AgCjB_FnAgCbAyCbAgC|ASjBuBhBsGjBiDu@mDkB}DYkEt@gC|AgBjB}EjBiBvBPfCxBdC`@fHfC|As@MuBu@iBLuBt@oEf@qHaAmEyJgA_Ga@yG?cFcA_Ga@qFt@}De@jBgCt@{Ct@yDbAyCMoFjBwBu@{Cg@{CyB{DeC}D{LsA[iDLaG|AoE`DmFpFoElG}DdCPvB|DxB?jBmDLuJr@wW~AwJvBkCdC{D|D}DjGcAlGeBvEoFnIyQlDeBdFQtEtAvEnEbF`GzGtB`IeBdFqGdCsGdCQ`DzDvEbHt@nL[jLkBfJZzDrCzCbF`@rFQhEwC|FiBhE?|D`@lDr@`DhCjBfCvB?pAgCt@eIt@iDJ}D?aGbAcArSaGhENdCcAfCPpFQzDq@rCaGzDoE~F}EfC_F`AcH?qHt@qFpA_FnAoFvEgC~FmD~FgCxGa@vEgCzD{CnD}DtE?tCjDrCP~CeB|DeBpFyaEqFiKt@aGzDyJ|AyKt@}Df@}E}AeIu@{CoAs@?cHqAaGuEor@qIcPoAeIg@uIXwIt@iK?qMnA}L~A}D|Aa|@jGScfAmyCuMq]oL{RaIyQcI_NyJcO}NsI}q@iYaLsNsHuQmG{RqFiR{G}SmL_UcNaVJiJ?_G}F{CiHiDwB_FyBiRsPef@eFiSgPu^sPa^eFeHiEiKy\\c{@oDmEwtA}LmOwCkO{DoQmDaTeAkWb@mYvBkZlDq[xDs}@pF}^bA}`AbAu]bAo^eB{T?oNbHoIp@{cAvBwqAlDuUhDgM~EgHNkq@`NceAfYgiAha@uHfAwJhDc[~LyGa@gcBka@_uAe_@slAs}Bah@czAi`B_F{h@kCmdB_Uw}AmTyrAl[cvAaxA}SaViByCyeAmx@}AqGmlA}lB{DqUmD}M{IwPwJmTcKgYsH{Y{D_UmDuXiJgg@hJeInFaG|IuHpKsGvT{SpK_GxGuGdH}E|FoFrHmFxGcG|FaGxG_FlQ{LfEuH|AyCm[gtAaDu@{DwBoFkDqKiSwJkSsg@sz@eCsHaAwJkGoTk^udA_Qwn@_L{Ra[}a@{D}E_I_FmLgJyLuIaNiJiOuIaNgJgM_NsM}SaNoUgMsUwBkEqCmDyBiDoAiK?oFYcGoAoGoDcHgEaG}AaG}AsGoKql@yB}Ku@{KKmM?iRiOa`BkB{K_I_c@ePyw@_Q_d@r_@uoBtWikBjByILoNlIcm@|FyQfWwsA`[yKdUwBfWyBhWs@`XgBf_@yChJa@vTuXbj@k_AhJkKdH_NpKuOvJuQ|KgQnNyQ~KeQxLePxLwPpFyQb]sm@|S}Zpe@wo@zIePxL}Zz^s{@tEeJvBc]jBoVkBktAt@qHwBkJwEmFYsG|AgJhO_iA?wIKiJqAoVLgWMe`@Ys^kBc]qCeXqFePiJmLiWu`@{gAsnBoFgC?yIu}AqqAyLyJ_IkKgZ`\\ui@lk@cKnEwONyGq@{DlE_IpGuEOyGtBwT~L}SvQeUdXsHrHsM~EsP|DeMfCeyBnaAY|DaDzCeRdBsHN_lAhYaAwByGkfAwGkb@aIq\\eHgRgEsO{DuPwBaGa[dPoXpG_VnF{XeBe_@yIsd@|Dm[se@qZqFaSsHuE?cF~E_[`]_[tAyV~EyVwBql@|FwGzCiJxBuEfC}KtAmo@g_@a]fJwTqAyVeA}U?eCp@_`@iZei@cOiGhKmDzJcFbPoFbOiGrOsHdQwGdPcg@t^_IfBmDtBmD~EkDhDe_@|KyNdQiJzJkDLsMiDyVlLwB`@aFiCuEcAkG`@yIjDyGtAyINuJbAkL`@cURjBjLdHnz@r@|RiL|j@mNj[_D`Nr@pNYtPiB~LsCfKwBzKt@jJ~CbH`FzEzDfJfEbGrHtBzFjChEpG`FrGtErIlDnLvB`PnFnb@lDdPpCpOfEjLdClKuEjLoAjLgEjK_DxKsCnLiBrP?zRvBjLrCvP~CvPbCvRt@|RZfRhBhRhBvP|A|S|AtXnAt_@~Cf`@lDjYdCxZ~CxPr@rP?vWiBhp@Yl[[lc@tEbl@L`V?nN_DfI{DzEiB`GwBnE}PbHqF~EoUzKkBtB?|Dg@rG{AxDcPxC_SM}KjE_DxBuEL_DvAkGhDeHlDqHyCu@vQwB`GqCpGcFhDqCvA_DnGgE`Fu@lEsC~FoFnFiLrGeM~M{SbOuOpOqM`NuOxJmNdIur@ho@s\\jq@uh@~LgY`VuJzEuJfIuTdP_DhCaFbIeu@ps@yItHgEtI_DhJoKxY_DzDsCbO{FdI{DbI{AxIeMlMyb@v|@gEjScFzK{FjSoPdP{SjLwQwJiV{CqRiCm]eBgEr@{PoEaZjCoUxDuJkEkD_Fi`@sm@wLwAqM?eMbA_NvAkNfCmIcAkIiDwLu@kN?mD`@wLlDcf@mvAuV}Lij@mLiGwB}FwAa_AaV{FRuJ{CsJwAg~@k[{z@siAec@ol@kGcO}w@em@qR}L{KcAmdAkLe^mEkNyJaFoEsJkEqHuIcWyQiBsGmIkEcHqGsTQsO{C{PkEoRkC{PuByNN}R?uQbAo\\?o\\a@kNsAsJhCy_Au@c^?yNmF}~@gBaw@a]wn@yX{\\qHm\\sGeY`GqHvBuGhKaF|Kg@fJ|A`H[`GyDnEiBzEZ`Gg@rGg@vIzAdILtIeCfJe@nLmDdIs@bH|CjEbAvIr@zKf@~Eu@|EY`GKrH?pFkBQmAwAcAiDiBOiBtBwBlDkDp@sEdBaF~E}HvBeHxBs@xJsElE[|Et@bHpC`GvBxCnA|DbHrArEfCpCnErEdBnF`@xDdBbCnE|ArH?`GkB|EmApF?`G}AdIcCdI{FfCqMrGXtBbA|DzA|Df@~EkDtPu@dIwBbHK`G`AxCr@`GK|FeCjC{FbAeJdAsEfCiBzC}AdJXxI~CLjIeBnFPpC|DzAhDdCdAkIpGwGrAuG~EaFnEwBfJLjLgEhKkDdIJpFdCxC?hCMhDaAbHf@~E}ApF{A|EiBxD}AxBqCxBsE`@cCxCeC`@aArAK|DlFzKvBhD`FfArENxDr@vBvJXtHLfJwB`GyDdBqCeBu@yBcC|DqC|DqCjE}A~EKtH[bHlP|LbHbOoHxSaFnEqCeBoAoEqCyDsJgAcC?oAxBg@tHeCfQkDlTaFfC}C~FqCvHyD`G}AtJf@tOnAxBhBe@xDd@`FvCpCtHnAzCoAdCqCnMeClDiBbH{ArIXbH~CtAJjDY~EK|EzA~EbCbApC?|AeBjDc@`Ft@xD`@fEyBdERnAjEt@nFcA`GcCfCkDnEyDhDmDtAsEt@sErA_D|EcCtGMzE|ApF`AvIL`Ng@`OqHxK{FdI{KnEeJrAoFPuB~Fu@bHaF~LwSvPeJtBqCzDKvHJjMdC~EiBlEeCzD?`G|AnLpChKjDvJzAxJs@dIeCvBmFt@sE}DoFcHcHyC}C`AgEdAoH`@oF`@cMr@mFpGwBrNYpO`AdPhBtIhG|DfErHlAjJg@rI{AjJu@jLqCxK}CxJwGxCgGs@iBcHMwKnAmKhBwJ?eHkDgJ{FyDaF{CoFyB_FRaFfCwBbHcCbHf@|D`A|EjDdBjDjDlDzDvI|Kt@nGg@rGwBzCyDrAmFOgEyBmFMkIlFuGdI}AxJX~LKvJeCjKcCfJvBtIbCdHpHp@hNuHlP{ExUiBhXa@vItHzFlMf@lKaAdI_DzEsEnEyDdB_PcOiNoGsJ?cHbAuG`@mD`GqCfJhBvIjI`@rJgJbHa@nAvCaA`GwBpFcC~Ed@rIfEvIzWdP~ObHrJuAtGjDnAnFXjLKnL}A|EhBbHZdI?bHmDfC}CyCwBeIkDuIyDeI{FcG{FuByIjEeEvAoFhDqCrGyDa@{FqFuGyJeJcAcCdBcAvI_Fbf@J|KdCzCr@jEcChD[~EiBbH{AtHyDbH_DfCkDwBcHiCcHoGyDsGZgJtBmMbH{JlKmFhBaMcCuI{Fs@sEjCcCjLqCfJmDr@}CtBoAwYyDmD}Hd@}HjEkI}D{KgC}H`@oHlEyDzKJdXbAdIrEbHlK?fLbH~OvIlK|DhB~EiBpHMnL{AfJqCjEqCbHgElDwI?eO_FmFaGgEsV}CqOwBiIeEfAmDfCkD`HeJjDeE?wBhB}AxDmAnEaAtIcA|EdCrGzF`G|HpG~J|ElKtHpC|KvBzLYvImDfCmFvBaFxByD`@_Fp@wGd@gL_FgLoEyDsAsV~EsJu@s@kE`AsG?eIcCcHkD_F{FR_DxDeEjCqCxDXtHnAxJ|C~L~CdIxDrIlFbH|MlDtG`G`AbHs@lFeC|EqC`Gg@dIs@`GyDbAkDtAw_@_U}H}EqC{LcCgIwBkDyDN}CvB[xIbA`OlAlMZrNqCrAmD`@sEhBmFdBsEpGeEvIcAhD|ApF|C|DfEa@|HiBbHeBdEtAXfCaAxBg@hDaA|Ds@~EoA~EiBzDwBxD}CtAg@zCwBzCkDa@kDgA_DwCqCqFuBsHwB{K_D}DeEt@iBlF?dIwB~M{AlLeEjC{FbA{F{CsE_FyDoGyDcHaA}DsE?XNkFhCkBpGoApGaCrGiQfCwI?sEmE?oFnAsHbCyJ}CyJyDyJ_DqGcHcAcHhDoJgCsJgBcM`@wNdA{M?gLyJcMmEmFoFXwIY{KoAqGmFeAmFjDiBzKcCzKvDxJ}CpGiGb@uI`@oFmEyDuHYyJaCwJeC`@yDfC_DtHs@|LiBjD_D?kFiCgGlEkGjDcHeBpFsGfGqG|C}L`H}L?uHaHiCoFmEuDgC{DdBsE`@_DmEmFiDwDbAiGlE{RzKmFpG}CdPiGbAuI`@kGmEaHhCgBkDkB_NyD{KsEcAgGdBiGnFsExJ}CxJmFa@?mEmFiCiGkDkKfB}HiCmF`@_DnFcHdAgG`@oAqGiB_MmFmEmFhCaHlEmF|LmKlEwIa@iGoFcCuHoAsHmFcAmFpG}CzKbC`OvDbOt@`OuI`NeH|LcCrHwIa@aCsHqAc{@yDoUiPqGwNgBoOfByIrH{HbAm^o|Br@io@ae@{fAqSaO}HkDmKgBcHsHmF}LiBoF}{F}dBmqDefCqXe_@ua@_k@mP}LuiCyxEfZqbA~Lst@vIgn@pp@}dBlKg~@zCyJyMivCw\\{x@ahCkkBou@|[gh@b^cfBoFyDlE}CrHye@bOyMwIiBsHuIc@yRiR{MuIuNoFo`BekAqZoXuFaDmh@sx@qC}DuPw_@uAiCka@cS}VuPwk@aZgTsKgIiKwX{YaM~E_VxCeDi@eDwBcCeBgWiV_RzAmc@oFkTyCoU`@eF?aOgBuGuAyEuB}D{CgMcHyFmEiEkAqIyF_M{GcK_G{AYmFyC}CYyF}AqQj@mG}@sG?sElAqFr@aHh@aHr@_HNmE}A}B_FoC{EcBjMaRGoGs@oDq@w_@XwIY_MWwDLyGGiIOyFWeeAcCkZmEiD{@oC}AkYwQaAIYj@XvAz@dB~@dBNxBg@|BcBnBoBpBiBzAkAHwA[{A{@{AuAFeBp@gBaAcAsAPcBp@mA`Cu@zGk@fC{@t@iBf@kEfBuAFqDsAaC`@{AjAg@vBu@hCe@`D{@nEkAnCqApBuA|BsAfBiBdBiB~AuA`Dy@zCgAh@iB{@}Ba@uCOiCk@aByBgAqCwBWm@lAx@tEl@fCy@lAoAbAaBXgC?wDuAgEmBgAsC{AoCqCFaCNqDOeDgBuCO{@p@m@nBDvBQ|A{@?}b@aOsD{DsBsAaBqBcAgBaA{DaCeT_@kI}@iIaBkHcCoJ{B}HiHw\\aJw\\uIsd@{K}MwAyg@gWkuA_c@ap@}LuOco@pFwZdBeLvBsa@~Pyi@`i@gWv[}FnJue@rZkE~ECvXcA|HfBpKvCrOvDjKxFfClFdEvChNxArHxTbm@t@zGyCbSKjHaAnF{@rDfAdEnBtLpDtPnBnPl@hO?pRd@d[`@zOtBrGvA~FpEnTP`KJvLQtMP`VpK`]`Hv\\}BzV_Gl_@cD|PcDrV}Lz]sEbPr@pIhBzEcBbDe@`Du@dDyAtBoAh@iBO_BuAUy@qEtFoCxYoBrKsGlSmAjHy@xVoI`iAaFv}@wDze@gBzYuA~MyTxs@Ydf@pDnJz@lEPjKFdPxFtTnCxNzBdErFvn@}CtLqEnJcCpJ{BdMuAtL{BjHoBdA}BpCoCp@kTpJkOxJgFz@uKh@sMcAmOh@w\\pFeTdIqOdIkLlIeM`Kc\\jSmf@vToi@vQqMtHkL~IsSlTmLtH_WlMaJpFgJ~BmFlA}B~BkG~BqMbDmJ|E}HzGgTrO_E}Lkd@sw@mIzG_IfJcRng@sRxg@wPj^aCfJ}BzKsBrHUhCy@dEyFtW_FnQmBlE_OrS_GbHqG`GiAtA}LrH{XbScFjDqLnB_Fk@yOqGkGqCkUePaIsH{EqGuo@_X{C{@cCi@yF}A_K}AeUk@wh@eBqb@}DwNa@qVi@ga@mAkp@}Aa\\mAfI~[tKbb@v\\fpAtMji@fGz]sO|b@sQfd@gI~PaH|EcUxo@mAlSi\\dg@{CdE_@tE?vEd@~FhAhGnO|t@tGvMhFzGjFtIjG`G|]r^RfMmI~T{A|AbDzKeOnQoLjS{BbDoIhG}b@rp@kVzZcK|SgJzVqD~IiKpKmQbHo]l[ww@jw@_IjLqF|DaJjP{I|SgJfUwE~E}DlPa@tPyAjKmGxNcPrOgOtP{`A|_AsGbLqEjHoEvMyElLmAvBae@tb@uCrDuSrZwa@lu@uKdIom@nUgNbHsIlHgFdQyQxk@mInX_Zt_@}PfQ}L~EuAzDf@nBfCxCpC`G~@f\\bEfJrIhK|p@~[bp@tWxHQdPOdWNbGr@vVjSiDhYLtIkMxJ_ZfJgq@`]s`@lEaUuAiKeB}WqU_QwByOwIuFwJw_@_Fx\\knAkQoj@g@iK}Ua@mLlTuTdf@i_@r^c{@bt@wOtm@gIha@cPvIcCbWaCvQmH?qKPsN~TiFfJcLdIiMlLmg@f`@cLdIcGbH}GnFyHrHqLvIwOtH}EvB{JvBoLbHaYjb@kMxJiFlToAxQf@fJyAjS}AxJuDs@uBPaCp@kFq@oCQ`Aha@eIdf@oAvQYjKiFyJ_FmEqGuA_JvBwMPmJoFeReAgMcHcNmMcLqNaCwIfTs^fB}DzAmEJkDqBiKiDwBw_@wIkc@eXw^eP{Sg`@_HcAgKmEs|@kp@o}@se@k\\e_@wQgYcRa]uRc^yWy~@aJu^gBgJyLcWaQyeAwFo\\kJ{RuMcHke@|LsKdAcPgBs_@tA}x@hCod@xColAl[_t@wBsvAih@eR{Dej@{R{o@rOkQ`@oPo\\_Uq]se@cWePcOoEkSnYoU|TkKtMyJfBqqA`LwdAbCqs@pVa]rIa]fX}q@fVio@dKg`@jHsOmWal@qPwXLeg@gmAwpBqX}i@qC{Kip@wg@}GuPyHfJqIrHoEnMwJjDuVjSkHs@wHjDqf@~q@iFyJgOqG}EsG}IgCcGyByFq@qTaN_LyCoYOsc@wIgV_FgSkLiMoFyJ_MsMsO_UuPkJ}EaAuAym@{CssAjDeKcAiS}L}E}DqTvP}T`Haf@d_@uZr]eDfCyHzKuSeB_`@dIo]d_@ug@bAk`AjDiQfJm`Auf@wz@i|A{[tAgOnFoTlEqa@kDg^_NoEvBmf@yJauAhKmTfBicAnU{IxQaLjLyLnMoIrHgOzC}GzDoEfJoEnMgBvIg@fJzCpULrO}EvQgQtPaEjDiFnF_YvXmR~Tku@|i@iDbPifAflAiM`VexApaAwFyC}aB~\\{C}LkLaOkl@ce@cg@wXkf@}L}Zs@_TdAyYzDaa@lLwHnFaKvXaPbH}g@xcB{a@za@qObWez@~`AwAtPcv@dPmEr@gMzZgF~MuFxg@ye@vXm]`jAgd@vn@_]bm@mRxY{GfQ{EhJuj@zi@}i@du@wLbHwJzKiHhRaGrVcKd_@_LbPgFvBuHfBwH?cIpGoI|L}IvPgFvQ{CzDeDyCcEiCcIdA{CgBc@{DcAwBaG|EuF?sBhCiHnMcI|EgJpFwJtIqKlLiLbPwHhRoCjKgFfQyCjScG|SaGlMuFnMaCnMkPrOe^r^qb@fXaEpNaE`OsDpN}G`OoIvPcIfJnE`OM~LeB~M{ErO{EdPeD|LwJjZcExRsBtWgBtWKhRe`@zrBgDfC{IrVmR`@oo@l[eFzKqm@lq@wN~EoM~r@f@hKdBtHlEdIrBdIL~Ms@ppAc^lgA}w@bm@yR`@oGfBeFzDeu@~c@o`@bH{EnFmEbHeDjKwBbHaEfJwCzK?`GdBvJrFpNlCnTtHzi@`CrGbErHdDlLtF~MrUfg@d`@`eC}CrdCtBd_@dFv`@~IjZpMnT`OzS`CxC~u@OfiANnEjCv_@ji@rh@n]xCPhl@cOpQfIpd@lEzkAmx@p\\ql@pMs@~l@zp@}@jp@_Nlj@a\\~[eZqFwa@z`@aCjL_TryA}\\d|@{GbHu[fo@ob@tWg`@`e@uHxIcMzEoG~EmAvIpE~TjsA|j@hl@`sClGzK|m@`l@rUeBkR|nAaA`OuNlx@uBnUuBjYaEl\\mCr^YvI}Klj@mKjSu@vPt@`HjEtHxJtIzMpNnqApwA`~@rcAe@~Ed@bH`EhJpEbX`CfPjAzb@g@tPmCbOiF|KiJ`GmEzEgBvBc@fJvCpMnIbPzTf`@fDtPnEtP`AzRjCpUpMjS~Qr^kt@`\\uDxDsDxJaAhKmo@zfAiBlE}IhRaE~EqOvIgJ|EkJlE{I`Gli@fzAnIdv@lCxJnIxJpMzJdQxSjN`VzTbe@jLvXtFtWdBdXs@vPc@jEtLfXt@zCwBjEaExC_E|DcCrHaEfJaEzKiHtHmG`GeKxCoI}DmEcAuDlEq@xJV`N`AfQVjL_CfC}MfA}GvCiFzDfBvI`CdId@rHsD`G{E`G{AfPbA`PVjSs@fQKzQu@bQe@tHaZq@mTtB{TfBgHr@}KxC}K`GeMhKeShK{VbH}b@hBu[vRwLhJ{AfB?`HXfJLrO`CvXJrOYrOyAdPg@rOeDjKmEhKgOpGkg@tHcG`@uHlE}MxJ_TjSwx@cHsh@f`@mVho@i_@bf@rb@zYhTuArQtXjT~}AzCt_@|GfW``@dh@gFhh@{VdWaObW}AdIiLtPcSbOuFa@{CuAgDkDaEgBgDkD{C}LsDeIoE{KyCmEgDwBcIaGeQaPwc@qM{KeBiLyBcIa@mE|D{ErHuFdIaGpNmEvPuFtPoGlSaG`WaE~Te@zK|Mhp@rFhRhF~TjAbHaMbHoGfB}M`@eOOqQ_F`GqwAsD}[ia@mj@sn@uXqS{CcMcHyXgBkg@`GgFlEkAxIjAfRvJzi@dFzo@hJxp@yVfg@zu@p]}MzKoMbOkNzKcOlEiPgBkPcAyE?qMtPcMxQiLvQ}KzKsD~Me@fQdBx`@`EzZhH|ZdBfJkAnMaCtIyC~EmAjDoI|q@gBvXgFjZ_GvXqKnUyIrOcGrOgDrOmGzK{E`GaC`GsHxCwHjD}DhCkLdBiHtAmEbA{Ib@_ZnFgx@jDnIzSnSjp@zA~MaA`NIrOoArOq@tPg@pNgBvIbApN?rm@aClj@nOpNrD`NfHxJpMhK`MhK`Gb@bIlErBnFlG~FvJ~EfJcA``@aGcMtPyCjKg@lM_AdP_AzZmC|ZaCt_@c@nc@iB`{@qBrVaAlEy\\zp@gBpGmE~LuLp]cGl[yEt_@mEbWsDrVkL`]sDnU_Gn\\yRsHue@eI}MeAcUpFeStIgFnFuFnMsHpNoKzD}KeBoKyCaKkDkGkD_ZaGeK_G}ON{IvB_CjDuHdPsHtPuDxJ?`Oe@bOgDnMsH`OiH|L~@nTKxRs@xJyCpNmCnUgBxQl^`VbK`Or@dPf@t_@rLza@r[bt@?lLgBfQZhKdHzDhLcAvRiKfHuAnd@`O~Y|SjTzZnCvIb@hK?`N_A|EiHho@bEfJb@hKY~L~QlvAVdI`CtI|EjKpDzZZpNbBrOtDdPrBhRs@vJJtH_EdIgFtHgDnN{GhRl\\v|@fHdIrDdQlCdW|K~r@lI~c@zClSmAtP`ChRnGfCrHdA~BvBs_@hmAuJfg@_ApGMfQgD|LsHbHaEpGmAhJr@~MbG|E~FlEtFpFdBvJaCxJgJdI}KtHaMxJuHtIsB`N_AhRuDbm@yCfQsB|EYxC`A~EpBpGtDdI~@rG_Xly@mAhJrBlTYrVe@lM{Enc@o@|Lu@lToI|SgJ~MeFxQu@rOM~M_CnMaErOoMv_@`Al[uDlMqBl[g@zRs@rOfDnMfFhKzGlLrHjLzGbHzAlLMbPL|Sp@pUtFnU`IzKhL|LtNnMpS~MzIrGzEp@zIyCfFoFnIa@lGr@nGlElIpGbKpGzKrGbKtInKvI|GtAnI~FlMbH~YhYuNbH}IdBwRO_AzD{GvBgF`@gFxBkC~Fi@dIKvImCzKgDlEaE~EmEpGmE~EgD|EgBvIL|LfDbHxEjD`ElEtF|EnGlE`I|DrHnF`CxCnCvIjCbHrF~FzGr@nIbAtHr@`GvBfBrGVtIh@hJvAfJ?pN_AlM{ExJmGfJaCrGYdI_ApGsBvIMbHbAjLpB~LM|LyAfJmAlLfBdIxCjLtDrOzI~EfHtAfD|E`EdIrBlL?vXmCfJwCvI}CxJs@rOKbP_AxQgBfQgDlMmClLyCpNYlT~BnTfBfJsDfYxAbOfFtWYzKXdQxAhRr@|SwAnT}CnNsFfI_GrHwDfJq@|LYdIYzCgBlEaGxCkVbHwNNmIxB{GzDrFzDhJ?bM{DpMiChRqGjNeIjAyJd@mLlCiKfH{KbMsHxAmEhJ}DtHs@|MxBnG?lKwItHgBzIb@zElEtFlErDpGtFrHlG`GvH|DrHNtH{DhJsGtH_GfHiCfFgBzCa@tFtAxG~EjHbAxIObKyBtJ{DfFr@fDfCrB`GfDtHfDzK`AbPaApNgFfJ{IfI_G|LoAhKrBdIrD|Dr@hKKpNmApNqDd_@?r^|@bOlEbPvLdInKlEnKPtHzDjH~LdHtItJ`GhJzDbMtHpMpGnMbHbMvInC|LrDlLlGfJhJ?bIgBrDOt@rHb@zK`AtPfDpNzCvPvAzKr@zShBdWxEbWzE`OmApNgBfQLrOnGlEnMvBbMnFhLvI|KtHtFrHxAtPxCrGhH~FlCbHXvI?fJyCjDoClEkCnF{AdIgBvIWrHVfXlA|LLrO~@hRnAhR[dPn^Nbd@lE`i@lErD{Z|u@al@eBe_@gBqd@?al@lEcPr@ePhBgQlMoFbGqGdQ_FlCcHtH_FdUkLbIyChJgBfBwB`CbAdBwB|AyC|Ba@`CiC`CyCxCQxAmEhHyCfDeBbGhDjAdA`AwBaA{Ct@wBp@a@`CdAfDNrDs@nCcArBcA`Ca@`CkDjC{KzCeAbE?~DdAnCjDVvBxAbAlCQ`CdAxAgBlA{DrBs@`CtA`E?xAqGrBkD`CvBzCNxCoFLuIaAwIfBoFt@oFg@yJuB}LqDwI|@qG|C?~BiCjAqGlAuHtDgJlE_N?cHbGmExAkKMiD|CgBdBgJ`CyCLyJrDgBzIcAzCoFxCaGzAeIfB_FY{DdBkD`Cs@s@}EXaGuHyJd@mEr@mE?mEfBkD`Aa@aAwBsBuAWkD}AkD{E}EUoFHkDmAaGYoFfBkDyAkD~@gCzAiCd@mEJoFxAiCvBnFdDpFnGyBnC?jCr@fDcA|Cs@jCuAJkDtFPzChC`CiCxCbAtD?XkD`GlEnEfBxChCLuArAuAfBmA~BFhGa@hBlExCfBlCzD~BrG`C|E|COlEp@fHtA`Ca@zCvBlCjDfBzDhDhCpD`@nChCnI`@`E?pKyCnKpNhBhDxVjDrBgJ`A{K~@sVfFqGru@sVvpAmoAlPoc@vJoFtQuWlE}ElCs@fDyJhHuI|Is@v]ePtD~MlVvXlp@zjBhBgBjCOhJmEpE?rDeAlCxCvDxBlEdBrDfBbEkDbGwB~DiCbGzDjHpFlk@|T`CzCnCnF~BlEzCjDzANxAfBvDdBrBr@`ChCxCbA`E`@tOvIje@fJxN`VjFr@bG?xGNvHtAjJr@hJeBlL?nItAnGlEpG`@xE~F~GtHh[hh@bIpGfD`@zEa@bGa@`E`@rKrGfFfCfDOrGhDdD{KtDwBr@iK`CoFtFsG|GsAtFvBfDtIs@jK|AdIVnFuB`GyA|EoC~E}@|EaC`GcCbHbCbHfHjD|GNzReQ`EiChBzD~@`GuBnFtBzCxCeAtDeBtDaGc@qG_FkDsBsGf@sHjAuHzCOhFbAtDwBfBqGxAuH|AkDiB{DcG{DXiCrBiCvDObMqNpEmLdBkDlCb@XhDr@zCtBfCrDvBbErGxAxCnCyCrDkDvFiC`EcAhFgBjLyCrMeBtH`@tBbAWlE}AnF{CdP_AbHxAjDf@nFzCvBnCzDzEpFrBxC?rHlAbHtDfQ`EdIzCbHtDfJfB|LtFdIfOp\\nGfCjJOnGaGnGuHpIoUnCuAzCbAfSrVjHdI`CxJ`EdItDuArB_FlCgChFiChFs@zAuIxAuHzCwBtB`G`GnM|ErO|In\\lCvBvBwBb@iCrKsHnEsGbGtAhFhCbIa@xNp@`EfBbGuA`PnFtOvXfFxCbGgCxH?hJ`GnEhK`EtAhM~TnKjDlAhD~VOhH}DdMpF|Ep@|GzKfBlEaAzCs@dBYvB{EhCg@jDmA~FhB`GhDdIfHjDdIcApI{CvHb@rAz@nEvFxAvBcHx\\jLbL_B{KaCsKrBgQzDwFsAmIrAgBk@wFMqCs@uAOwBpCwEr@iGzBcHvCeQv@qJbC{KdCkH_@aG]sHb@_JrA}HZuHiDyNX}E_@cHl@sKfEqYtPog@fAuE~MyF|a@qh@tC}EnF_B~YcSfMdEr@|AlBeIhByCdBeEf@}AxAbApVWnCVjFcA~CPtCYlPlEz@YlCr@jG?lDa@|D`@~MnF|EQpEj@jIvBb@`@gA~B|AlLPz@tDr@xAtA`CYfBbAfCj@bCYxBN`CkApDeAzEkDlB_C^eBs@kDgBwBy@eEgGgF}BwBwHoQ|I{KxJ{GfDuI|EsGnEeIrGjDbM`@fMfJpIxBdIpGtFtPbLxQpB?tQrO`CeA|AxJzE`GdIjLvJbH~@dI|]rGd@jD}@fJjA`GtMNjHxCzGP`C`Ov\\}ErDfJaCnFYfQbRvBzA_UZqN~Dq]r@wBX}E~KmLdGmL|IgJtBeIbEa@hFQ`CjDdKsHyAqNWaNbV{D_AmLg@wJu@{KdGmb@vHiRi`@iCoYwJfBeInEqUrG?vJ_FrBsA`CrAxWsOnAmMg@_MY}EtDcAr@iJjDaOcYNaCcAoRr@ckAuW}GqGmEad@hUeI`AcHvHkLpGkK|GiDrBaNzCuP|CaOvJiRtO{KvBtAjNkDnEp@hDmE?{DhB?~MlLpIwIpIaG|EgJxHuAtFnFvFcAnGuHfGsHtHkDvF`@jJPtZ|EvDOlEgB|Gu_@KaG`CsO|EyJ|Co\\tFuWdXbH~Iyo@sMoFgMlEs@cOxAiDnC`@s@}ScGsOmAwIwDkLoG{CqG}LsOsHwOqNaR}Dl[eQhSrOtBdIvFtIj`@fQt\\dAxJdBxJqG`Yzi@r@jKJpNK~ThF_M~GO`A_FtMqd@vL}E`AkDhDQ`PmTvF}EjHuA`EdXdGeBlCzDKhChDhD`Ca@rBwBhB|D`C`@rKlTbEwIvDb@~DlEzLqNpGxJlLwIlL_\\jFiD|GsG~EqGrQwX~I}L|CoFvDaGjAyCzYyQ_AyRd@qFzAeBrBoF|CcHvHyJr@cAgB_FLoFbEqGzEeInCyJJ{KkAwIaCkD~KsOhDlE`EeBpE|EbRjKdIqUxHvBvSjZjSsVvFjKjFoFxJmL`NhKtBsA`CbA|EnMlL`VtMtIpRzKvFhJta@al@cWkZvDgJxAkKhDcH}E{K`AsOt@eI}CiK}CsGwHeQeG_UsDyQiBiKqGqGyAuHMiK?uHoCoFuD?nAkD`EsHlCmElJwBdGmExJkDjHuHlAuInAuAVoF~GeP?iCiDcHfBeInE?pEyC_HuP}PdIoNzD{Ca@uBuAbAkDlCcA`CoF|C_FpEkDnIwB`LyC`LaGbG{DdE`@`PsVhD{KvFwJhDaN`CqNbE_UzJwQjJiRtM{K|RiC~Rq@rTlE~R`OnE|Df@s@bRxJfKcOlFhCrDuHt_@_Gu@gBbNcHpf@qGmAvXbGwIxDuAxCgJvc@nMf@iChF?YdIrGmErI`GjAyC~Gp@|G{D`HwBjJhC`NQlJQlHvBjHPtDxCvDoFXyChFzDdGtAlHr@bIuArI{DzAtAlAyQvDgg@MmEdGk[JiRbCiYdEmL~KmMwDcO}EaGs@mEYiKLmToAeILoMgB{Rr@}L?wBvFsHtVnFtK}DfTOxLs@pPePvXwBrT_UzJcH|C|DnG{K|`@uf@vFgQs@}S`WvXjQ|D~PbAxS`@hMlEhDhC|EtIzAfQf@rOnC?hDr@hDwB|EbAtBP`AyJhFQbLmEfBa@zCtAvD?d@eBLgBlA?fBiCtBcAbAs@pK`l@nAl[jHzCfIxCxH|EtDtA|EkD`HqGzJyClNiCfKqNtGcPvXeAhDkDp@aHnCgBhD?r@zDt@`GlAdImAhCMnFdEOlCs@hDjDtB`@XrHfB`@KyCzA~Eu@xCtBtA~CzDhDzC|@hDbC~EtB`GzAtAzCwBbEiJxH}L`Ss@zCfBxFdB|EtAnCxJtVvn@`Ja@lJjZng@rm@vF|DtBpGvBzKpGdInAxCtFO`JjD`C?nH~FzNq@rI{CdNeIxHvBrIzC`U`@jOs@pNnF~`@vIxJtAhK?fKvBtKhKvh@yRpENpE|DdGzDrG~Eb`@dn@jObAlSq@~g@vBlCka@rGcP|CoM~@oF|A_FvD_G|G}DbEyCvMa@|L{CtBwJdCkKb@aGa\\yCwDa@}EgJeGwBcG}Dsi@qVmc@qUaJcHcCmEaAuI_AkKgIaViTvBuBaVkHkb@e[y`@qL{K_HcO_HoN_O_UyHsO{JgXeIuWqGgQ_D{Dt@eP~Ia@zJcHxF}LbEkLfK_MpNcP~PkKzQyCjQ`@pL~ElSxJn\\yYfb@_k@jHeAlAb@zHuHhKmEdKkDnHnFjJxJhIfJzCdAzLgJlH_FdGwIlHoFpCiK`CaG`LkDzH`@rIwBxHuA`JtAhKhCzJ`G~GfJhDbAvDgCbEgBxFwBrIkDdE}EnC?rGpGbGhCjF`HpEbHrE|DbEbH`CiC|CoFnCuAhDtA~GtArGfCdG|DlFtAdI{KlH?xHwBfEeAjHwJbNeAzQoFjo@gY|L?xQ`@jMoMfIsOpEoMlF}E`J_FzJvBlCtHhB|LoChRgBhR{HfQuBdI}Cp@kFyCyFzDiDhJgBlE~@bHvBrHtDbHvDvBdGxCxFjDxFtHjFfJ|EjDxFfC~GwBpEgJhBeInCa@`HpGbGbHrG?dGr@hIr@rBQaAeInAyC~EQnEiCtBtAjB{DcAs@}C`@uByCcE}LpEQlA_GzAuALfC?vBXfB`AwB`C}DaAaH_AkDzC}DdEuA~EcH~EkE[yJZiJoAgCfByCpLbAhBs@MmElAmEbE{D?sGt@uAtDPbA`GMvBdE?pGkDbCkDg@{DlAa@zAzDnCbAtBwBvD}EfEgB~@eB[yQhByJfIb@nArHxAxChBPbC?MqGtIkKJs@nAzC|AgBrBoFMoFhBuA~@bAtBcAdC`@~@{DuBeIs@cHg@kDfBgBbC?vBsAlAnF?vBzCwBjFuAfGeAbEaHvDiCzAgBvDvBs@`GZlEbGcA`JgBrGoF~EmElFPjOfJnHrH`LrGtIfJpG|Lhb@ny@|Zf`@`AzDpn@jw@dElE`AdItB`^~Elb@xHtW~CtP`ClE`CrOLlL|CzDxDbH`CpGt@df@[fg@cCl[sG~MhDjLLjKwDtPqEfQ{CrOiDxJxAhK|EjDhBdIWbH~@fJ_AbOmD|EaJPwKr@}Gp@oHsAyF}DuBwBmOtHwFbAaJ`@_Ds@gPvBgBbHaHpUaJa@{AyBqUeIaAtAbCjDZ|LMdPiBtPg@rG}CdIdEtI`HlEvF`@pCtAMwJt@kKfB}EhDfCxFtHvDhKaCdIqCbHbCfB`JdB~E|D~@fJ{A|EdNwBlOdAxO~MxM|SnLtPjTjZjMhZvDtHbEwItBeI_AqGd@kDnAcAnA?f@zDjAdInAbHtB~Eq@zDmDa@iDNaAhCcC`@oCPbA|EzCvIdErO~Ph~@~EnUrEzKjH`]~Elj@g@~L_HdBiIfBmHdBaAvB`HfBaAdI|CrHzAPYbHqCzDyCvI?fJdIrHxO|DnOcAfBdBeL|SuKtIiKcA}C`GfBfJlF~E`HeAxFdAu@rHoAvI?hK_HfBr@pGvDQjFa@|C`@fEsA`EiC~ENdGbHYrOyAxQeEtP{CjD_DgB_FfBcCbHeBlEdBlE|CdBaAbHaEjDdBtH?`ObCxQcEfReEbO{o@ha@uRvIcLbAgItHwBbHoLtPuRfQuIhR{ApGaHbOyHpG{A|LgGlLgBzKr@nUtBtWXpGYfXr@xJ~LxCfBtPxFfQzApNzA~FJrG|ArOiB`VM~j@lDpV`LxBxf@xCjVoFhIsOdg@sGf\\pNiIza@_AjSxAnFhDa@vDjDlDzRtDlMjFnFfIzC|JNfGoFlCgJhI`@pJjDlJnFfBhKf@pNbCpNe@xJwBzKkDzKuDzKaHtHqEmEoEgBmDjDaCxCxAvBLlEgBnFu@`GcE`GgIpGwBfJXtHLvIeEfJoCtA`AtIpCtAhFdA~EgB~ClE~GnFtKfBlFpG[lLkAbHg@hKJdPaA~FdCxJzCpNlAvIqEvIoJbAiKr@qLN}CeBqLwBoCwBqEfCiBnFnA`GiBpG{AlLXdPpCa@pE}DjFcAvDzDtBhRpEpUbJ~TfIvQt@dIeCzK{Jr@gIeAwDcALfJzCvPLrOqC`ONbHzCpGzJb@`HtAf@`HaAdIsGfBsIhCqJN_FhCKxJ~@~F?rG|C|ElF~ElA~M{AxQiFtIuG|DoAjDnAhDtIcArGwBnCxCq@tHsCpGgBpGzFb@hKmE~@bHu@hKgB~E~GrHhKr@fLa@peAt_@pL}E|SeAfGrOlAhRjD`VM`}B~N|wCdJrAnEho@iBn\\lF|SnQnFfn@pN|EjL`A|ZxFdXpEhYhP|[dU|i@uBfYoAvIrUrt@`CrOnQiDjDmEl]{CrWkLvD`@~XcO|NeBbA`VhDbOjF|EKtAoAj_Af@du@yAjLjH`d@xFxCfInc@~Elc@h`@nc@ph@zfAzHxJ[zK}CrHmAxQaHpGcNbWmKvIjRn\\rWd|@rj@bwBtBlEbH|DbNp@xMvBnO|DfIdB~_@`d@zJzDlH`O`HvI`]zfArGtPzApNzH`Nzt@zp@~L|L`H~ErNnU|CxJ|QhRr\\bm@xDO~E}D`CxCe@n\\aA|SXxC}QnTkRlc@oJ~LqLdIwKzK{JlT}HzZgGp]iBnc@g@fg@hB`]aC|Tu@jKsGhR_AvBoFbAuB?aA`GmA`GlAxC?nF_AhCuG_FaAgCoApGkFnFyMsOcCtAiKQgGpNX~TyAvIcHvB_Fa@_FuAiDmE?kKhKwBfG{D|C{K|AcHwDyC{FgBsEa@iDvBoCPqXlToEvBgGeBiB_FcCsHg@gIcLiRaOsH{AgJgGgQ{CiKcAcHmCiJJuIkD{Kg@oMgBuP_Mwn@MmL|Ha@lHs@zHcAfGcAbL?lMtApG{CbCcHLmMcC}LgIkDuNuAaQdBqSkDwK{DkMsHqJaG{AiC~EsVoA}L}G}EmKmEyF_FaJ_N{H{KiBsO?mL|CqNtIqGvKPtNp@dGgC?wIcCiK_F_MnCkLpJ}ZiB}L}J}EaHs@cEPsExCoCrHgGjDuDOu@_M}CiRqEuPyFaOiBcOg@_N`AwIaAsHyHyJyHaG_R{Ds@wBjTm[xToThD|D~CxRtDdWbCnUfIlLfGNpJ{DrIcHrE{KXmLyAuPuEuPaCcOaHeQ{HqFwKwBeNr@yF|D}CdB}JlEa{@`e@gItHq@qGlCaGvDcHtGqGvFiJpEuIbCeIlTqFlFiR~BsWZiY{CsViG{SsGqUiKaO_MoFaHc@}CpFnAvJtBnMpEhR|CrVgBfQgGjLuWpNwMzDuIjKcJxC_HiCyDaH{AgIt@mMpEqNnJoFjM`@tIs@dE_FuB}L{OnF{H{DsNdIiFs@uEr@wFwIaA{KqCuIt@eIe@cHwBaGoC{DeEeAgWtAkKOoSaGaOwI}CcPwFsOoHgIcL{DiMkD_FaGiDiKoFyJyJyCmKwIyH{KmXyh@cAs@s@gJM{KyA_Nr@yJJyJf@wIpEyCbJgBlHPfBr@|CgBnC{DyOgg@oJwQiKoFwMeIaOaNwDwBoAiKyOe_@oJePkMa{@kMs@uPqGwDa@gBmLtBmLs@gJlAeIbAs@u@kDcCiDkFkDkFxCoHlL_HfJcJbAyFgCgDqFcAsHcCqN}E}LeEcH?ePzAuI{AuHcCiKuDsGkDeBwDvBuBvIWzKqA`H_HpFmHQiDaGqSqs@qE{DeEyCsGrA_H~EeEbH}EpGg@xJyFxYiFfJgGr@_Fs@_FiD{CwI_FuHoCwJlAqNr@uP}Esl@aa@oMwRkLkFmEwDkDoCyC{CiCwDhCqCxC?xJ~EtIzHvInE`Os@`NwDjDqEhDsGPoJkD}GkDoH?aJuA}JmEwHoFqJuAoCmEq@wBu@mE[qG{CxC_Mlb@oCxR_HvPqC~FcEtAeGbOkDpN}EzSMdPuBlLhDNe@nMkDdPcE~FuBhJkM~MwDlEaCtf@`C~EyA~MgPxC}CrOMlEsItH_HdIgP|EsGpFuKbA}Ja@uT|E`CrG~ErO~G`VbE`OvBa@fGdIzLtP|EvBjDr@nAnMVvQmAlL?dI{AxJoCpGqEzKeEnMiDdPaCfJoAzDwDnF{EvIsCdI{CjKkDbA{CxCcEdIwD`GqCdIiDnF}CfB`AvBeBnFOvI|Ld_@`QrWrP~TpEnFbUrVvIvX`E`@zAnF{CnTwDfYqC|DuB~M}EbOoE|L}A`OwDpNsBfQkBhKyHr@}CtAiD~EcCdIqEbHkH~F{HhCyJhCeL`@cLQkMPeGpG_J~E}HpGsI|DwDtIkF~EwD~FeR`]gGpGeEvIkHlEsGdIiFzKgE|LwFlLoAhK`j@bOdGjDe@lEg@bHiB`H{AbHgBlEf@xJbE|LjFtHtGbHxH~MxFpNvFbOrItPY~TgDdQ}AjDkHhJyFjLwKnc@eG|Lc\\uH}UiDyFpGgK~MuYza@qElLiFhKmF|L}Nvu@MjDjOzDwF`VM~MpE~b@?hK`A`GcErWeEpNf@dIiBpFpCjLd@vILbW{A|LoCpNcCjD_AbHiDbHcS~M_OjKsI`OuIvIqG|LgBpNlAtI`CtHbC|LyFvIpExCfG`GrIvBxHdBvFhCfGpG~GvIvFlE|LxCpEa@LtHg@nFaC|E{C`@iDr@mFr@_FwBsGs@_HbAsBbHwBzCdChDeCzCuBjDqEdB}EcAeP}DiRoFgKwBgRs@eGa@mH~y@vBhYjHcAcGzZbIxRuB~EtBzKtBjZzFvX~@zZuBvQ}GvIwKfJcLdPuI~MuBr]kQrW}e@hh@ko@fg@qG`NkFs@wDr@kObA}EtAwFNyFa@_HeB{H_FeGiCaCrGKhJd@`Pf@|S{Ahh@g@~[aJbm@iD`OaJfQ{Wf`@kOrOiIfQ}CtH}GdIg@~MgBpNqElLg@dI~PrOlHfCpGO`J?jFvBnHdIjJvIhKdQtMxJzHdPzS`e@tK~EpExJ`CNmAzKcCzCLdIcG~Mp@jLf@bO?nMJ`N_HhK}CxKs@dHYtH_CdJmD~EiDjDq@fBxAjEXfJf@xJpGfJxFvIlA~Ef@pGs@hKcCbNgBzEoChCkDbAyCdA_DnFsYqNuKsHaJgC{EuGiIOyHcAsIQyFQuBnFoC|CkAzEd@`GJ`GoCzDkA~Du@zDcCjEoCbHaCnFcEzDiB`GtBlEnChCf@lEq@fIkBnGqE|DuFxJyMhDqE|C_J^_H~FsG|DkFfBuDjEeEq@{EfCaQgCqEzCc@lFgEfJiF|DyFlE{ExJcArOiD|KkFxKcElMg@nLxFhK|EpOvFtHvIlD|GxDzCzKnCvIrIlE`JNtGdAnGQnJr@`LcAzJiC`HuA~Ir@bEdB|ChCdEQnEcAvF{DmAhJ`CjTs@bH{AhCe@jDMfI{AtJoCxBqEvBiDvAkAlEf@lFvAxCmAlElAxCbCcA`AzCXvC`C|CLxDg@`@lAlD\\zDwDdBeCjDoCuA}@rGiIu@wDb@cEhDoCjJlHjEhFrHLzKf@dPaAzJ`AhLoApN?vIvDfJ`HzJ|GbBfIvAfI^zHfBpRzJtGxKdKlMhKhJdIjDtIQfKPhKdB`Jt@vKzE~IbNfKhKtY~FbNjDbEfIlHdJrI|Sr@tIpEnLvDnNvDvQvFhJlQhKdP|KxFnGnEdPyAvBaAlE{AxJ}Gxh@eC|DaCs@iDfBoCr@mFlFwFhCcCQeGiD}EwJeGwAeGPmCxCcAlDMfDe@lEcCxJ~p@h~@?tAyAlEsEbAuDzCyFnFqG~FaHa@oC|DqE|EqErGeGfJcE|L{CxJ~@pFgB|EuBlEaAnFYpGjFdInCvBzCtHjDrOiK?aE`@sEs@iMa@yJQiYuIaJa@oLmE_HzDkFvIkHtAuBxBkMhDaSrHob@lZgGxKcLs@sIhCwMzCg]kCkMuAcEeB{ExCyDPgBeBoCc@cEvBsGfBgK?{JdAcLyBiOsAyFkCci@?yHs@cChJuMjZaLtHLjLoJ|SX|[yF`GkHzSlF?lCwBbE?bEr@vDfJpC|D`EcAbEhDfGnFhDOdBsGhB`@|E`GrI`GrInF~GpGfEsH`CeJzC_EbG~DlMvCvQvAxHLxHqGvF|DnCjLt@tH~@lEYbVpEdJhDfJpCvIhKpGlC`FdGpHxZhQhKxRlAhKjHnMnUjZvInEtFtInUzi@xFtA~Gq@pGp@mApGaCfBoAfJf@lDg@hDmAnFr@dHbE`AvD`@fGb@`JrAjHM~Eu@zE`@xFiCrIcBxOeAxHuA~Y|KjFhL|HzRrBlMdGjKzCrVzAdQlAlSIlSV~UhBzZxApU?lMjFfQbA|KVvJbLhKjMx_@lLvh@rCdIV`GtBxCKjKVpFpC^~@vBNdHH~M|CdIzA|ElAtHpEfJvDpNjFdI~GpGbL_@fKp@|L?nLeBvKlF`JxJXdI?xJnCxJjF~MvDxQfBzRq@zSu@zZqEtWoCbWiBzKuBtHuB`OmArV_FfX}EvXiBfRaC~TiBrFwFyBcC{DqGu@sGgCuBwBgIdIsIdH}C|FyC`NlC|Er@zKzAnM~@hJdEtH|UrWxDlMcAzRnLbOhDzSjFlL|HvQzEzKtKtPtItWwDn\\wDha@?za@tIn[lJtPzAlSZl[qCb_@qEhZiMlL{QzJmJrIoE~L[rO{AjS_HpNdIp]vDrHeG`N_HtIoCjK_ON{NeBcQ`@iTdH_ZlFaJjD_SwBcSuIsKc@uGlL}GtHeEnNeIvBsIoFwIiKoUeP_Zf`@qCfJuBvIoCvIoEnMcEpG_XpGyH_@yAiJcAyJoCeJmCcOiI}DkJtAuGvBsINqWhCgKxC{JlD{Jp@uBnEf@vJlAxRjFxv@~Gr@fKeAxHrVlFxh@zCfQlFdPbGdA}U~z@cG`NnWh`@xZlUhTrVrNte@jAdQeGf`@qIb^wIpUyH|[wVd^oEtX_Htf@iKlc@jF`N~PlEhKlEnJ`@vQzKpSlDnW~NzQ`]`UaNpWiSr[qFtIhBxHcOrNwIhKeBdKrf@dGf`@dGb^pNcAvMaNjOdAnJfQbLlEfBlTdG`OjFbOzHpGbGzK|HzKxCf`@nAzYpEzKjFrVhKbO`LxKgBzKaC|LpEhQnNtXnJpVrRzKbUhC|LvI?nTt@b_@~P~[dg@`iA|^~k@nSre@|Lrd@pJxKdKgBhTiD|l@a^bUfClXxKzZhClX`OhKjDpEpGjFd_@dG~j@vDdm@}Czi@vDvXdLlEdPoF~GuHt@dPjFsHzQwIlAf`@bCvXpE`]tDd^pJ|\\`LxYs@la@vDnVhKf`@~GpTbCrWdGnU_HtVaH|MwhAyh@{h@mEwmAha@sNfQwMlEeg@eAoScBkF^XlThBzYY~[dGz[lJxXvIlTlJhQ?bQYvX?hRpEhR{ClSu@re@rIlTbLlSdLhDxHpGfG|K`L|L|LkDnJeA`CvI?~MnAfQlJvIrWiC`QdBjO`NdCxJ}HxJsItHiBxKWfP~G|MjXtH~^lTpS~[vMrVnSjShB|L~LbOzQb_@lJvXxH|[|L~MbQjDxHfBnAjSt@rV}HhRkAbOhFpVzHlTt@fQhKfPjOdQ[fR_HbOeGvWcCdQ|ChRvMdPxMfRjFxYfB~[{HtWcPzKoOlEuMdQwRjDqSa@_ZkDoO?cLb^eGf_@|Cpe@u@ha@nApd@cCtf@}C~j@|Clq@wMfo@Xnc@|Cre@Xrt@s@tt@fK~\\hB~j@Wps@qJ~j@gb@j_AoE~MrDvX`Qb^fGnTlAzZfPpd@hY|j@~Y`Np\\`@x_@mEbc@a@vd@pGbc@lEz_@hRpe@hCv[kDd^cO`d@aOtd@_Nrn@iCveC}LbZdBt\\`Njf@hDrWhCjKqGxd@dBntAho@h^lEvd@hRnf@bPhl@rGfp@tW~_Avg@lp@dPzQhDnXa@~ZhCjb@nFvxAbOjF~M~LzK|QjDtIdBeGglA{VopAqXss@gGg`@mAuf@?yh@cC_k@kFen@oAgn@qEyh@`Ha]|Ca]pSkS|VyJpNeBrEqUhKoUpJsVdGyYbQuIdZsGlO_NbCqUrEiRfP?tNdArN|LxMvXvWdPl]jSz[zZxM|[bV|Z~UzKxaApGfc@`@ve@?ve@vI|ZpGz[eBhPwIjKsHzVnFlYjDdZpGxRlEjPoFbZqU|ViRX{Z}Cia@r@se@lKal@bLqs@jPkp@jFen@qEss@a[yY_RoUu\\kDgU}LwRia@_Ra]mTa]eZoVgZ_[sNwXwIgQeZqVeLgQ{CuW`CwX?}x@mFyZoAa\\~CwX_Da^eGyKxR?~UjE~VqF`_@cAj^iCjKwJpS_MbVb@fh@wIfUkDdL`@hPvX?l`AdLjD`[cP`[{YzV}[lKug@j{AspAfZkSb[uH~LnFzC?pTd_@fUtHzVxYfLiCvNxJjTlDxRdBrStIhZeBlYlDjYtIhPePnOgQbM_N|QhDnTfB~QnTrSzZrE~MpJfCnOhBtN^|HwIpJdAnO~MdQrUbHvYfZ`OnO|LzRlDhUdQ~VrV~GlTpOzK~d@xYlKhQvI|MlKlEnJhR|HjSpJhCvIsH`MuHpJwJpJaNlK_NjKkShLoTb[se@vRmT`RyYpE}LvNcP`MgPjKgQ`MmU|HgPdVsHnOiRbHiR|HmTpOaNnTyKtf@}i@nTcOhZiRhZoU|HaNdQyJ|MkSxlAqnBdQ_\\xNiR|VyKpYePrS}ZlP_]tIqVYgn@{He_@?a]tNuXr]{YzRkTzRa\\tXyJ`_BytAlKeBxa@qd@rb@mb@nbBonB|H{Z~LcN|Ma^n`AmnAh_@or@t_AytAoAse@gLoc@|Ce_@nc@cAvIyJsE}[xD}ZpO{[lU}ZfLwXiBwX`RwIlKoGjBkRfG}ZvI{Zt@yYmKsV~CoUhGuWvIuWgVsHwNwIq@eQwE{JgQmEgG}LnA{K~CyJeHkTWkSfB}L{Rob@mPmTsJqUmKmEmAaOoFkSkK}ZoF{i@{Mmc@{Due@t@kb@_Dse@yD{i@bCi`@mAg`@sOqUwIuWwk@g`@oYkS}H_Nu@gQsJmTmFePsEePwNkS?oUwNsVmFsVcMyYwNgQcHwXyDeQgGmSmKiRuSsWsJsVeVyYaWc^mF{KrJ_Ods@sFhZyYrJqVdVmSzW}LjPkSh_@pGrOgCnYxJd[bPpTvXrJzKrJlEvIvIvIlElKpGzWtHz\\iC|HcBvIfRbMbP?tHxDfCbRlEjPb@tEeBze@|j@v]`OfQjDjUvIvXjDtXtI|WhCdQiDf[qFn^iCrO`@?hRZxXr@`^oA`\\hLnVt@h`@u@~MfGvX~CxYs@rVvD`NnA|[bHtf@bMqF`MwJbRyJfQcOvuD}gAjFePj_Dip@zRtHbMe^hQ}\\fLem@ZwJrJiBxNa@fbAwIvq@kTld@qFdCqG~QpGzDbA|HwJ~Hse@rTi`@bH{ZrOeQlZaNbWgQlK{ZnKqUhGqVnF{YxNsHlPb@zIqFlKyKlFyXxIwXpPgR`WkCbHxIcCnd@_Ifn@oKrf@iGb^nAjSaRzh@i[h~@mi@hmAoKxYmFlTiL~y@a\\~eBr^`nE}\\~eBwE`NiB`]qT|gAvIbA~MlExNfBbMpGfQvXh[hRrJvIhGzZnKhRnKzK~y@yJ~HlEjGbOqApVeCnEjGbPbC|LjG|LpO~Mbf@zh@nd@|LhQgQ`RhBnUpH|M|LnPoFnPiCbRfBbRrHjLnTrJbPnKjRrOtIpK~MvSnFh[xJh[a@bRkDfrAa{@h`@wYtTue@hLwv@dHg_@~HwXhQmTnPc_@hQlFdWpG|\\dPtc@`@xDnEfCtXwEbOwIjSvItWdM`OnPfBhQ`OnFrU~MjSpFdQkGzZnA`]nFjb@uEvg@go@hjBwm@ppAoPnaAsOfo@oP~[bCd|@_Ihp@?tf@jLlEhVcA~WwIn{Aor@d_AyYdz@oFje@{Kni@oc@~a@aAdMsG~W?`]lE~\\{K|~Ag}@dk@_k@aXip@wIwIoAsV|HiRdCoVnK_[tO}L`XsHhLsV~Ckb@~HqUiGmT~CsWYa\\r@kSpFyYeCia@hBsWzDwWtTa@`IgCfBmb@Y}ZdM{KzNdAdMbPpUbOh`@|Kvc@|Lf\\dB~MvIpUdA~RfCpPeAtJhCrUaNxNnFnPrGrPnErOjEjQlEnA|LmFhRsA~MoAfQiGpU{DhRoAxw@eCnb@jBxw@u@`^cHnc@|Cf`@~CpTdCb_@lL~MjV`OhVtWle@xYpPtHtJhR`SlTbl@ha@bq@`N|l@xYbg@nU`SbOjVa@f\\tI|b@bNrd@nGfWmEb]nFfWtHf\\b@|]vJthAha@l}AxY|]nb@b]vYvOpGfR~Ml[hQvTd`@hWhn@?vYqKfQXzZdCdn@zIho@eCf`@t@jSrZrs@`Nc|@pFsV{Dg_@|]kc@fMiQzD{KhB_\\xOiR`X{Z|S_NlVeAvOeBhReBhLpG`DbP~CcP`Dqd@jL}i@fl@wkDpPwoCuEgiBaNuW{Dse@u@{x@~Cyu@dC}\\kL}Y~CoVpFyXjL_\\pF}LfM?pPrGpKsGrPdA`SsG|SbAnVuIj\\iC|]`@vJfA~]{Jl[wJnVnGhW~L~]iCtZoGtZyIl[}LvJmTaD}ZbNkp@pFyZjLwWxO{Z`Sa]dX}\\nLsd@Via@eCgQ~Ca^Ye^sEc^cDia@tZ{w@nVg`@zIwXdCa^jGia@?e^nQkSlL_NhBwXtEgQvJiR`ImT`Ic^fHse@nAkp@oAen@vJsVpKjDrP?fMcOvJaPbNxK`NbPrPiDhMqUzIqd@fHos@tEaz@eC_z@hRmb@bh@uf@vZst@r@kT~NiQhRiR`SuWnAuf@pA}[tP{J`IlDlLpGtOyJfSeAxTeBvTePtZ{ZtP{ZzT}ZjLsf@jWkRjG}M_D}LiReAoQgBqFuHt@}j@`IuWhR}LZoTiMwJpAkRpKoFdS`@vJ}LdCmT|NbAlLfBjG}LkBgR_DsU}NkT}I}LjByX|NuIxTsGjWiDrKmE`Iob@pFmE`D{KfMuIjGwIiBeQX}L{DkSjBcO~CoEpFmFzJaNnKqGxd@sGvEiRxOkDzIeBpFkSjRmEhBoTt@}[lLoFxO}LtP{KhMqUbSia@rPmT|IgBvE}MxOeAdN}LhRqFnVaOhRa^pVcNrF_@jBiQ{DiRr@aOs@{Z]}ZfXmTzDwJzDuIpAe^qAiRhM}ZvZkS~IqGjLuH|I_NpFwIcSen@qAgQpAkSXmTxOoThMqe@|Nyh@h]chBzT}h@zDmUtEwW`D_NjBoTbIuIrKc@vJuIeCuHqF{Kt@eQdHgB?qGuEwI`DwI|NmF|IgC?a\\eCsVlL?xEjD`I_NtE{ZrKiRu@uXkBsF~NmEzJa@u@{KiC{K`OgCvJmEnAyKqF}K_DyJqF{K{JgQ?{K{D`@eCpGwEgCoAsG`IsHhMkD|DmF_D}KyE`@cIcAgMlE{OhCiGc@yEtH{DmEwE?eXlEgSbAsKxJ}IgBgMjCaD|M}IcAsKlEqFlEgX}LgMaAkb@fCsP{JgHeBcN}[mLkSaD{h@gMkSfH}[~CyXfH}L?kb@jGa]u@od@YqUkBeP|IiRvEyYvJa]Xia@~Ne`@bDoc@pFi`@zIia@|Ise@~Ce_@vEmb@ZuXpFyXdCyJuP{ZgM{i@`IyYnAg_@s@oFl\\mThBwX_DgQ?qVu@iQpFwJqAcOcNdAeCqU`DsVtEkSfCkShBoFuE{KjBePvJmTlGiR}DePYkTmGyX?cOuEeQnAiR?ePdCsWpA{YzD}L[}LYc^~I_N?mSV}LWgQjGaOt@eP[iS|IyXt@iRlLkp@bNia@pAmc@mGuWuEmEr@uHs@iR~CkSkBaObIcO?kSt@gQzDaO\\qUp@e_@vEa]{Dmc@kBka@nAa^qFa]?a]`DcPqFuW?mTY_\\dC{ZaDsVwJkSu@{ZgHqUtEa]kGqVaI_Nr@mSeCyYcIyYqFyJbD_]mBse@~IoTfM}Lib@{w@iM}LwEgQoQ_Ns@_NcIgQof@ia@ec@fCwJdAyJwImLjD{n@wImWse@?c^}IoFqFuWcNe_@Y_NdCqU{Yk}AjBcjAr@qVfCse@v_A}_DwUyJqk@_k@zy@w_CtUknAvJe|@fc@mqFbN_\\pK{Zf]kkBjBst@wZm`AjBqUqFoUgMsGmLe_@aOyYsu@tHyiAsG_OcA}NnFglByY~Ca]s@{ZmGoUiBuHzIc|@~Nqd@hBc^t@e_@`Ya]te@eQre@c@p[hRhMa@fSkDdM_NdNeB|IgQfMuHpFnFvEiRjBwg@hBg`@oAa]oAyYbYscAoG{w@vJoTnGyYvJ{ZpK_NaIal@?uW}De_@mAa]uKcPsEmSiHoUqAuWoQoUhMqUeCoUiMuH}NeBiRmSaImE_o@en@kBgQfCoUwEiRuEeP}IuIaIgBqF}L{DiRcN{KsFgQ}IiRgHyJuEiRwJ_N}IdBcIpU}NnFaIcAaI`@mLkDwU?wJ}LeM?mLkDaOhCoQ}L_DsGiRhCwJhCmGgBt@wg@}I}i@Yg`@wEoc@ZqG[gQoAkSsP{uA{DoT|Nyh@jBc^wEsVfH_]nQgQ~Sg`@v_@{fAlLgBxOaO~I_MbHeQnGwIqFkSmBoFzD{KmAqd@zIc^fC_wAlQqbAfHe|@Xk_AZopAt@}Z~CyYdCgCqF{Ks@uWXqUd}@okCfMmlBeCio@t@g`@mLsHebAwaBwUse@mLal@iR}Ls_BohD_D{KtE}LhR}LzTi`@f]yYvOyJxOqGjByJnViR`aGioFxO{KxTcAoAyJcN`@sP`@wJsHmLePmLwIiHjDsK_N_OgBsPwJ}NvJsPjDoLgCwEhDmL?qKjDoLlEmLyJsPeBaIoFgXwaBwOmTmQcPeNgQeSgBmQqG{DiRnAuW~CsVeHiRqF}[iMg`@eCg`@rKuWtEe_@dCmb@pAmc@{Da]tEse@nQuWxOgCnLa]vTa]hRgQhMgo@eHnFmLzKkMcAjBuHlL_NYyJcIa@wJvIoK`@sFa@{DiRaDc^aIaNiMa@qKfB}DwXpFwXuEqG}IvJgMa@jB{ZhBsVuEgQ_OpU{DnF_D{ZwJsGXcPzDaNvJ{KjB}LwJfBsKpGkLsHgHmEdC_MtEiDrKmExOdBdHkDY}LwEwIqFlE{IhCwJpGwJcAsKeBeCaNhBsH`DyJvEwIjByJwEhC{DnF_DgCgC{KsKaN{N{KeC}LvJkDhGyJ{IoFwEfBqFrH{IfBpAkDhBsHhB_MiGoF_J`@_Na@_JoFaDwIxE}LdMkDt@qGqFcAgHdBoFeBgCoFfCqFlGcArEmEW_N{DwImGmEcIhCyIrH_J`@?qViGwI{D_NoGjDyIrHcDoFxEcOxIsHfHdB~IwJ]yJwJeAoKhCiHjDiGgBp@sHoA{KgH`@{DkDeCoF\\qGu@{K}YrHwJhRoKmEyEsHeC}L{DcOqFlE{DtHkBwIzD}L`DmEXsGjMwX|CgRxEePpF_\\jQip@|Na]lWePdM}LlWk}Alf@ekAfHyJlAsVrFwXhW{aCw_@g{A{DqUwJkb@aNse@eC{Ku@sVVkSsEaOoGqUkGa]v@}L_JwY\\aOVma@mAga@w@ob@fMg`@zD_Nhg@ia@|Ncm@r[ka@p`@yYjWd_@rUnF|N`N`YbAre@qGrz@kp@nv@iDtj@rWzYoFp[~j@h]kDla@lEzy@oT~SeQ?mc@p`@_j@~NgCzOod@{Omq@zDawAbDcPyEuWxEuHVmFjMeP~C_N?e^oAkTxDgo@lBsFmBoFlByYjG_N[ePpAiRfMmEvUtHdSlD`^tJl|@zYrKxKxOiDlLsGtPnFxOcAvEgCrKuHpKyJdNjDrKwIvJoUxJ{Kd}Ba@h]dBbThCfM~M~Sa@dYpFn\\mDj\\gC`T}LhMeAzDwXfHoUbIkp@nG_OuFgPZ}LxEwIbCwIbDuIVoTmAqVdCwIjGyJpAwJvJoEbi@?fSqHhRwH|Ta@~NmEhMrGzOgBqAzK_DxIpFjEjGkEhMhDjM|KhMpHbN?|DqGrKnFlGtHxE`@mByJxJuH`IjCbIiBnGmEzIvHnLwHdIkEfHvJ~CvIhMvIrV`OfHlEbIfBvE~M|IzKxJ?dNcAbIkEbN^jMoTzDiR~IoF|IfBrQ`@xTlEjMdBxJgCpLbA`NmEfShCpQhRhMvX?|K`OjEdNjSbIrVkBfQbI`@tKiCpVpGrKnE~IfQbIvJ~N`@zJhC~C`O~I|L?bNtKfCpFpGXpF|DxKxEa@`IvJpFfBrFmEvEpG|IvIvKxIfMpHnLjDnGxJ|IxJpF`OfCdPZrGXzLpAtHzDbAtFbAtEpFjBtIfSqGjBpG`DxJpFhCtKa@bI?lGfCrFlElGnF|IxJvPrGzD`NrAzLhM`@pFvIhHlT`DfQrKfPbTvJjMnFzD`NbInUpApGu@rHtK`@nAeB|DnFlGnEbIbA~IoEpF{K",
		levels: "PCCB?BED?CECFCBBEBBEC?GAB@CCADC@DDABDCBHBCBD@E?DHDCF?DHDAGDBBFBC@BCEBAECCEHCCADCEB@D@BDCH@@AE@C@FDDAHDFCDBABEDECDLCDABGCBCACI@FDHC?CB@E@DBFDDFIDEECAFACCBEDGDCE@EECFDDIEEDDAECGCEGCDFCCHEACDBEACDGDGDCDFED?DEJEECDEDDGCHCDDEEFDBBEDDJBCCEE?BHBEGDDHBEBLDEBCEBFDADF@HD@FACFEGCIBB@ECFCADBEADAEAKBEAAGEACFADEAHCDFDAFDHDBBEDH@@B@FBBDIECCFDCICF@DBFDCEBFDGCCDBHDEABCDCIBDDFBDBDAADHDBFCADGCBDBDBKDCEAACGAECCEBHDBBDCG?C@@?DCCBFBCEBBGCDCBDIBCAADG@BBBCCGC@ADCG@C@EEHCECFEDCEG@EDAJDAECDGCEADGDCDHAFCDECHBDCDFADBDICBD@CGDCCBCFCBGDCCB?G?BDDACFDDEAKEFCC@AG@CDCCEDBGABDCDFHAMCCAGCEHCA@EAF@F@FCDCFACC@CKDBADHDC@DFBBECFDEAIDCCEDCCAEKCIEJBFAHJCBEHDFBEBCMCBBIBACCDCBABBAC@E?JGC@FACFCBDCHC@FBB@CBDFAB@BAICACEBE?B@FC@DF@BEKEBDDEDJE@CCAAIDCDBBBDBB@DDEBFCBBK@ECFDDFAF@CCB@EBJDBDDEG@DP@FECEBECGDEBHC@EEDFBEJCDFCCABIE?GDFHFDJEAGDDEFCBDIGFADCGEICAAC@@GDCDAEEAICEBFBECBEBBCLCCGDCFCEBBHDCCEDBEABGC?DACBICDCAECH@@BEAC@BDBEBBCGBDC?ED@KCCBFCCCFBCGDEBDC@@EGDAEAEBCCGCCCD@DADFGFCCA@EDBIB@CDDBDEDECCGDME?DCDFCHEAHCE@CFCDBEBIHECB@DDCEH@DFHFAAGBCDCDDCJDBC?FACDBCDEBFEH?EGFBMBECCECFC@DCECCCFDA@EBC@HCBDFADADC@FDHCEBBFCDDCBFCDHBCCBF@GABBEBCECBCGDACFCHFCCFBCGDCAGDE?FDD@BCG?CAECCCCHDAEBBEG@FDFCE@@FCAGDHDGCCEBGCB@EDDBDICFCDE?GBCCAFDDB@DHCDCD@DDGBDJAAEBBEBGCBDBG@FDBFCCFDCHADEBDFCACDICFBDF@D?@EIDCFDDDGBBDAHDEGDAEDG@BDID@GAEBCAECHCECCFCEJBE@EAHECECGDICFBCGDGCAFCIEFDGDDAEDGCEEHCDCDCAKEECAECGBBDGDCEID@FDCFDCADCIBDCGCFDFDIDFBECGEGDFCEDJECGEEACGDCCIBCFDHEBAGCDECCIACAGCECCFBGEB?I?AFA?FDGCCECGDBIDEBF@CEDFCI?DAEAH@FACFCICABGBB@FCBGCFB?DHCBAAAE@DCCMBDECADHDEC@EHDEBCBEHBDABFCHECAFABHDEADACHCDFBEDIEAEEH@EFDCHCECCFCEAIFAECDHCAECECJCBFDFBHEFCCEGCEBHDE@FDDEEAGAEGAEEDGDBEIDFBDGACFKDDHDFDDHFGIDCFDAGGI?EFKEBFFDIGLIEGGCEJDEEDCECCG@DAGCC@FBIDGC?DGE@EADGBDBBCCB@DBCBJCBDBC?BFDAFFCACC?BAD@@GBE@BIBC?CEBF@DBFADBDCFCDACF@DCCGC?A@BD?@C?CACHBAADBDFC@EACGCAEAE?BDFCEBACKEBBAHBCAE@ABBCEFEICHBNDFDBECJCE@GEBE?DGDCC@FAACEBB@EB@E@BBFCICABEBFCFC@CEBDBEFDBBGCCCABFHEBE@EBCEGBCDBCLBCBCFBDCEDGCACEDEBDCFBD?CCBECBIDJBE@CFAABB?CBGCAAEB@JECFCDBFC?@HC@CD?@@AL?AADIBEDEEFAEBHACGCBEAGECEKCADCCFC@GDEBCCGC@DFDCDGBBF@DBAEBECGDCDGA@GDDDJBBEECHCG@CCHGCKDDGECIEDEFHHDGKBFCGCFEAH@FAFBBACCBBF@CCFDIDCDBGCAC@GEDANCFDCEDFDCHECAECHCEDGFCEEFIC?GCADE@EKFCFE@CFFICCHDHCFDKGDCGEDHEDACCJCFGEDFEKBDFDEDFJDDEACDGDD?GBE@ECBHEGEBMDDFBCHEGFBFJGIECFEDEG@JGD?FDCHBCFDCEHAA@CEFEEFJEHDEGEHCFDKEEFFDDFHAG@EGGFDCDBGEDDGCAEHBDDFBDCHAEDEBFDGBD?CEBPC@DCD@DGAEG?@EADHECF?ABCF@CEIDFEGDEIFCDCFBGIFCEBFHBE?BBDLCDAFBBBCFHFCGEB@KBHDFDIGEHFHFKEHGFHBFHDFE@ECEKFGHDFJCCEACCBFEECJCBCAICDD@ECGCEC?EHDAFBDCFCJDGCECAGDA@BJFCGCCFCBGDEAFBLCAEAADAGEBEGDAAGDDBHACFAEFBDBB@ID@@GDCCFEFIBFAACDBFBEBIDBFBCGHFEJFFHCGEIFEDCKEGBBCEC@BE@CGD@CJC@DFB@DBHEBBAHCEBJGEGIDDGEEKDEDCGHJCCGECBGBACIDFECAEHCBECDBGBDCDBCI@BDA@FCDJCDGBCB@CECDIEDF@EDDCDGAIDF@ACBDADBKDA?FBBADDAJDCHCFCBEHBDBCDFDIBBAEBFDALCECB@HDGBFDFCCIEFCFHEDIBEBGDCDCEBECCDCGBEBDBHDDGCABEDGCCJEADEDCDHE@BEHEBACEGADBBFACCFCFDECCAGCDFBDEBGEDBAJCDACGDACFDIBDAGEDECG@B@C?DDBEJCEEECCHDADF@AAADIDFBACBBFCADF?@EDI@CCFEBCECAFCBECAH@?FCFBDJE@@EBCBEA@GDBEECEBCBEIDACE@ADHCEDCNDFBBDGBCFDDDIDCEEDGACBCEDGBAD?BGCCFDCECKABDGECEDGCDFC@ECIFCDDFBFBBBACGBDGCBIA@DBADBECF@DHDCDAGDDCCHAEBAE@CFCBC@CLDAIFHADFDBIDDDEBEBCDEACC@DDFAEAEDDBFBEB@BFCGDCECDCCFBCECECECJDCDBFCDDGDE?CADEECEDCDFCF@DBDDCHCEF@BDBFBCBCEBCBFDDACACJBFCBD@EDFDEDCEFBBFCAEBGCCCAGC@CFCBDCCFADFBFJCBEGGFEDDCDDGDLEEICCDCFCA@FCBHADFB?BEBC@CFBDDFGB@CBECEDCG@DDHC?CEADDHDDDCFDIDDBF@BBB@FDJEBGBEFE@HEDDEBGCDFABFCDGDDEAHDADBCAG@DBAEBDIDEBAECGCAAEDAEA@DDCIDFBDDHDAECHDCDCF?DHBCADHCCCGBECDDDIDFDEFCDEDGEFCHBF@BDE@DGDFCECG@FFMBEDEDC@BBFDBBCCBF?DBBEDBECIBGEBECGCFCB@KCBDCBDDBCBBGDCBFCC@FCDCBCBIACDBGCBD@DHCECBGDIDCFDEDDFDADEFFCCGDCFFGEDFKBDBBGCCDFAEEGBFHA@FDHEH@GDADEGD@EECJCCFHEJFD@EFBAFDHDDFDFCGCDFDEF?DGACECHCCDDCGJGEGEDDFCCHDDDEKGECEGCEHFCAJEEBFDDECIFFECCECFDDHFDFFFIEBCEAC@BFHCFB@C?FCE?CFDCFJEDCGFGGFFAHEDEBFADKHGCCFE@FC@DCAEEC@EDIB@ECCDGCCDECEFDHFCFBEHCACF?DADGCCEB@EAKECGEADDGFEEEDEHGDDGEDEFEGDEBFD?ECDFCFDBECDJ@CDDCFDGCCFBDCCDAIFEDBGEECEHCFELFDBECGEBHBDDAFFCAECFADCC@HDG@BBIBEBFCFFDECI@@DCFBECFDDEDEBADBACHCBGEB?HBFFECEBDBIDCDFECFAECGCDCCEGDHAAEHCCLECAAGDAECG?CI?FEBCDCHD@DFGCGCE@CCIABCEHDFBE@DLDFAHDGCEDAGC@CHACCEBGDDAIBEDCGB@?DDGCDACBGBCFBCBCIED?EEDEFAGDCECJECGBECFDFD@FBID@ADBDBGECDGAFC@BJDFCDEFCECGECF@AFAEAFCCBFBDDHCFDCDCFEBEFCEEDCFACGCCGECEAGEBEDEDFDCCFDB@GCCFBFCAECBJECF@E@DGCCHD?ECCBOBCFCCECEBCHCFEEDFAACGDDECCJEB@FDAFCECDGAGDCHDDBE@DJECCGBEEGCFAFCCFDGDFGB@EAHBECDBI?ACDGBDDAGBBDACCEHF@?DGEECFDCDHEDDHEEEHDFDGACEEG@CDBFDJBDFDDE@GCEDECCFBHDDDGCDECBDFCDJBACCFFCCBFBDCEJCGEFIGDGDDECHCEFDEGBEJCECG@DFCFAGCDBECED@ECHEBDECDDHBBCCF@BHEAFECCFDIDBDGCCEGCEADHFDBGCCECGECEHE?DCGCCEBEGEDCLECEGCBGDGDCEHCEFDIDCFEFFEEJBFHDBFCFBFDIDEDDDDIEDFACDFHECFEDHCDFDDHECJDECDAFEHCEBDDGBBFCDDFDEGBCMDECCEHCFCDEAFAEBF@DDCHCFDFFDGEDGDBKDFCFAHDBFCDCEI@CEEECAFBDDDBDIFAB@ECDGDEIDDEFC@HDEGCCE@ICEGEADGDBFBEHDBFDEDHCDBECCCGCEDIDHD?BGFDIDEGCBJDFDHABBDIEACCDBFFHCFD@KEDHEACCEHECEFEJCFDGECFEIDEECHECDCEBHDCFDGCFEAFCCEDCIBFBBHBAGCECECHDFADBGDCEGDCGEDDCECJEFAFDHDADBECE@CHDFCCFDHCEAICEAFCDFCIDCCFBEHEDA@AIBEFCDFEAIDBDCECDFBDBEMDEADDE?FCEEDFCD@GDDIFCEBGDECDJAB?FD?DBFCHCCE?BDB@FADAECDACDCEDIDFBDAEDDI@DCCAECCAJCEBCDFAEBBFCBCHCCACBECEBBJFCG@D@BDGDBCD?CFIDBBEDHCGAGDBAFIEFEDCCFCDDFCECHCCCF@FCCEIBBFGBE@CEACEDFBJE@@ECDGBEEADH@BAEAIFFFFEECCFDICDAFEFDEHDBCBFBDBIDB?DAFCHCDDADJCDDHDEADGBDDFAEDDIDDDFAC@FCEACEBBGC@E@CFDBJDC@DGCCDFBB?ICCEAECACB@CCFBDECHCECDEBCCFDDEHCE?DEDBBLECFDBE@EHCBCECAFDBEBDIDECBCCFB@DGCDEDDBCECCBHCEEECEDGCFACCDCJCFABCEFBCGDBDBFDCFAICCECCBGDBCHFBDAKDDBDCFCEDFECIACFCHDDA?EFAB@E@HDADBFBDCJBCB@EDCHDECCBEDFEAHACEDDCEBDCFBCECICEFEEFDMDDBFBEE?FDDFC@CHCCGCDFEIEBBEEBAGDBDFCDEDECGCCHCCECACIB@BDBCFCDBFJADCEGADBD@CEDBGEFBCCDBECE@EACHCDCGCBDEHEAEBCLD@FBCBBDD?D@HFCDDCGBECIDB@FCFEFEE@?CDHAEFDEGECJCCEGBEFCGCDJCCFCCGDDHCDEHCCIEAB@DFHEACBEHBDBEADEK@AGCGDCEEHCHEDGDIDCCFFADLFCDEDDFICEEFEDJCAHEEGEHEAFDBFBECFCFAEGCGEDHBGCDEDIF?GHDDECIEBFEEIFDGFDLDBBFCEFDBDDFJGFHEEGCCICDJEBCGA@EEDFIEDECGCGDCEGDFIEBFCHEDGBDFEDECGE@HBFDGCDFCKEDCGEBEGEIDEGECCHDIDDE@EFGCDCEFDHECIEDEFDPFDDFBFEHEDBGAHEEBFEJFECEFDGBFEBBGDF?LFDEGCECDCJDGEDGDBDGDEGCLCGDFAEFDEIEBFAGEBGCC?HE@LDDFBDGEJCFEGBCFCE@EDIEDEDEFELDFDCFCFEADIFFJEDGGFEKCEEEGEEBEHEDGB@GCICDHCCFEGCEGDEFCEFBF@EEBHFBCMAD?CDDCDBEBAFEF?GDDEADDDGBCCGCFICGDEFHCEFEEFCDIEDFEDHEFHFHEGDDFGBLCDFEFCDIDFDFEHCEEDGDCEFDBHEDFE?EDIDFAEGECAEEEDDEEABGCDDCCJFGEEDENEEGEAECDAGFCGDEGCEDGEHCCDDGAEDJABDFFCECDEDDLCCDFFGFIDECHCCFEEFAJEEEGEDGCEBGDEGECGFLEFDBEG@DCGCDHHCDDLCCDGECFECHEHEDECGDCIFFFDFCEHEBAEDGBKDGCIEBDFDIBDFLDFBGDFEFDHEFDIFEFDEHEEMEFDEGEGGEFDHEFKDEHDDGDFHEFFDCDEDGFDGCFLEDF?EEGCDDFG@D@AJEDADBFCEDEGCCIDDECFDJEFADHEBDFFCEGCEHDFCCJDGEFCEEDGKCFGBFDIAEHC@GEOCDCFHFEFEBFGBDKFDFEEDEFDCFAGDFGCDKEFBGBCEEHDDDECHEDFCEG?FECCDGEDJFDGCHCFIEDGEHEFEFBCGAIFBFEAEHECFEEIFBEHFEGFEIEGEFBFHAFAFHDCCHFDDDGCDEIBBFEFF@EFHCGCBFBEEEGEDDFFDJDECAHEAGDFGA@E@HFDBHE@FEE?BCGDEGBFEFDHEAGDGDFGEFDGDFCGCFMBCAEFDFDHDDFICDCDEEDECFEDEFECGFDICFCEEKCEEEF?DGDCFEECEBDBDEAIEHECGGEDBEGFEGCBCEEFCGDDDDECHBDEAFEABEECFDDDHFDECDDGEBDD@DFCEEFDEEADKDDEFFDEDFCHEFDIDEEEDFHBFEEIEFEDGDFKCBGIEHEGDFBFEKFEFEDIE@EGIDF@KEEBGIFGEGDEFEFJDAF@FFGDCEHDDCKEBEEGFHDFCDHDEAGDFCEEDCDDJEEHCDDFEDEFDFCEJEEDDBCFCLFEEHDFFEFCCIAFEFEFDF?CEDFECHGJDHEFEFFCKDEFDCFECFEKF?FCCFFEDHEEEDDAGEIEHCCFDJECFCDEGEFBEEIEFEDFKBFHDEHEECHCEGDGEGFEI@EGAHEGEDDHDF?HDFDEFHFCCFAHEACCHCGDCDGFDGFDDGACGECEHFEEGDEDGDDFDHFDDGEDGBFHEEEFIECEGCEDFDCGFHDEAFCFKCDCECBDFFCGFDGCDJCBCBGCFADDEFADANAFFFEJFEEHFHFFGHEGEKGEFHFDEGDDDGCEDDDEDCJFCFCEHDFEFACFGDDHDGEEDFBJDGDDDFDFCAECFCDIEE@EDLEGCEGEFCFEFDDHEFECFFAHCFB?DEDIBDDGDEHCCBFDDEJEEFEFEHDEFECFCHDEEDECGEDFFCBECEBGCD@CHAEDFF@FDAFCDBDHCEFDCDFAFAEDHDECDGDP",
		zoomFactor: 2, 
		numLevels: 18
	});
	map.addOverlay(encodedPolyline);
}

//obtiene un array con los tipos seleccionados (usado en el selector de vista de mapa)
function obtenerTiposSeleccionados(){
	var tiposSel = new Array();
	for(var i=0;i<50;i++){
		var checkTipo = document.getElementById('tipo' + i);
		if(checkTipo && checkTipo.checked){
			tiposSel.push(i);
		}
	}
	return tiposSel;
}

function crearDocumentoXML(contenidoXML){
    var documento;
    if(_SARISSA_IS_IE){
        documento = new ActiveXObject("Microsoft.XmlDom");
        documento.async = false;
        documento.loadXML(contenidoXML);
    }else{
        documento = (new DOMParser()).parseFromString(contenidoXML, "text/xml");
    }
    return documento;
}
